@plurid/plurid-react 0.0.0-3 → 0.0.0-32

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.
Files changed (155) hide show
  1. package/README.md +32 -20
  2. package/distribution/components/links/Link/components/Preview/index.d.ts +6 -3
  3. package/distribution/components/links/Link/components/Preview/styled.d.ts +1 -1
  4. package/distribution/components/links/Link/index.d.ts +14 -8
  5. package/distribution/components/links/RouterLink/index.d.ts +4 -0
  6. package/distribution/components/links/RouterLink/styled.d.ts +6 -2
  7. package/distribution/components/planes/ExternalPlane/index.d.ts +3 -2
  8. package/distribution/components/planes/IframePlane/index.d.ts +3 -2
  9. package/distribution/components/structural/Plane/components/PlaneBridge/index.d.ts +2 -1
  10. package/distribution/components/structural/Plane/components/PlaneBridge/styled.d.ts +2 -0
  11. package/distribution/components/structural/Plane/components/PlaneContent/index.d.ts +1 -1
  12. package/distribution/components/structural/Plane/components/PlaneControls/components/ControlIsolate/index.d.ts +9 -0
  13. package/distribution/components/structural/Plane/components/PlaneControls/components/ControlRefresh/index.d.ts +9 -0
  14. package/distribution/components/structural/Plane/components/PlaneControls/components/SearchItem/index.d.ts +1 -1
  15. package/distribution/components/structural/Plane/components/PlaneControls/components/SearchList/index.d.ts +1 -1
  16. package/distribution/components/structural/Plane/components/PlaneControls/index.d.ts +15 -5
  17. package/distribution/components/structural/Plane/components/PlaneControls/styled.d.ts +1 -0
  18. package/distribution/components/structural/Plane/components/PlaneDebugger/index.d.ts +1 -1
  19. package/distribution/components/structural/Plane/index.d.ts +10 -6
  20. package/distribution/components/structural/Plane/styled.d.ts +1 -0
  21. package/distribution/components/structural/Root/index.d.ts +2 -1
  22. package/distribution/components/structural/Roots/index.d.ts +5 -11
  23. package/distribution/components/structural/Roots/styled.d.ts +0 -7
  24. package/distribution/components/structural/Space/components/SpaceDebugger/index.d.ts +1 -1
  25. package/distribution/components/structural/Space/index.d.ts +2 -1
  26. package/distribution/components/utilities/ApplicationConfigurator/index.d.ts +4 -3
  27. package/distribution/components/utilities/ErrorBoundary/index.d.ts +3 -2
  28. package/distribution/components/utilities/NotFound/index.d.ts +1 -1
  29. package/distribution/components/utilities/Origin/index.d.ts +15 -0
  30. package/distribution/components/utilities/Origin/styled.d.ts +7 -0
  31. package/distribution/components/utilities/PlaneConfigurator/index.d.ts +1 -1
  32. package/distribution/components/utilities/Portal/index.d.ts +2 -0
  33. package/distribution/components/utilities/Toolbar/General/components/Drawer/index.d.ts +1 -1
  34. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Global/index.d.ts +8 -7
  35. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Shortcuts/index.d.ts +1 -1
  36. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Space/index.d.ts +8 -7
  37. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Technical/index.d.ts +4 -3
  38. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Toolbar/index.d.ts +8 -7
  39. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Transform/index.d.ts +6 -5
  40. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Viewcube/index.d.ts +7 -6
  41. package/distribution/components/utilities/Toolbar/General/components/MenuMore/data.d.ts +2 -0
  42. package/distribution/components/utilities/Toolbar/General/components/MenuMore/index.d.ts +11 -8
  43. package/distribution/components/utilities/Toolbar/General/components/MenuUniverses/index.d.ts +4 -3
  44. package/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/index.d.ts +7 -6
  45. package/distribution/components/utilities/Toolbar/General/components/ToolbarScale/index.d.ts +5 -4
  46. package/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/index.d.ts +9 -6
  47. package/distribution/components/utilities/Toolbar/General/components/TransformArrow/data.d.ts +7 -0
  48. package/distribution/components/utilities/Toolbar/General/components/TransformArrow/index.d.ts +4 -2
  49. package/distribution/components/utilities/Toolbar/General/components/TransformArrow/styled.d.ts +6 -1
  50. package/distribution/components/utilities/Toolbar/General/index.d.ts +6 -6
  51. package/distribution/components/utilities/Toolbar/General/styled.d.ts +1 -1
  52. package/distribution/components/utilities/UniverseExplorer/index.d.ts +2 -2
  53. package/distribution/components/utilities/Viewcube/components/ViewcubeFace/data.d.ts +391 -0
  54. package/distribution/components/utilities/Viewcube/components/ViewcubeFace/index.d.ts +6 -5
  55. package/distribution/components/utilities/Viewcube/components/ViewcubeModel/index.d.ts +1 -1
  56. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/data.d.ts +5 -0
  57. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/index.d.ts +11 -0
  58. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/styled.d.ts +17 -0
  59. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/index.d.ts +13 -0
  60. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/styled.d.ts +13 -0
  61. package/distribution/components/utilities/Viewcube/index.d.ts +8 -7
  62. package/distribution/components/virtuals/List/index.d.ts +2 -2
  63. package/distribution/containers/Application/View/Container/index.d.ts +5 -0
  64. package/distribution/containers/Application/View/index.d.ts +39 -33
  65. package/distribution/containers/Application/View/styled.d.ts +6 -1
  66. package/distribution/containers/Application/index.d.ts +3 -1
  67. package/distribution/containers/RouterBrowser/FadeIn/index.d.ts +6 -0
  68. package/distribution/containers/RouterBrowser/FadeIn/styled.d.ts +3 -0
  69. package/distribution/containers/RouterBrowser/index.d.ts +5 -2
  70. package/distribution/containers/RouterBrowser/styled.d.ts +1 -0
  71. package/distribution/containers/RouterStatic/index.d.ts +5 -3
  72. package/distribution/data/constants/index.d.ts +1 -1
  73. package/distribution/data/interfaces/index.d.ts +8 -4
  74. package/distribution/data/interfaces/utility.d.ts +3 -0
  75. package/distribution/index.d.ts +74 -36
  76. package/distribution/index.es.js +6525 -0
  77. package/distribution/index.es.js.map +1 -0
  78. package/distribution/index.js +2377 -2566
  79. package/distribution/index.js.map +1 -1
  80. package/distribution/index.min.js +145 -113
  81. package/distribution/index.min.js.map +1 -0
  82. package/distribution/services/context/index.d.ts +2 -2
  83. package/distribution/services/engine/index.d.ts +22 -0
  84. package/distribution/services/hooks/index.d.ts +2 -2
  85. package/distribution/services/logic/animation/index.d.ts +16 -0
  86. package/distribution/services/logic/computing/index.d.ts +15 -8
  87. package/distribution/services/logic/router/index.d.ts +14 -25
  88. package/distribution/services/logic/server/index.d.ts +2 -3
  89. package/distribution/services/logic/shortcuts/index.d.ts +14 -9
  90. package/distribution/services/logic/shortcuts/logic.d.ts +6 -0
  91. package/distribution/services/logic/state/index.d.ts +3 -0
  92. package/distribution/services/logic/transform/index.d.ts +3 -0
  93. package/distribution/services/state/actions/index.d.ts +249 -6
  94. package/distribution/services/state/hooks/index.d.ts +4 -0
  95. package/distribution/services/state/modules/configuration/index.d.ts +66 -7
  96. package/distribution/services/state/modules/general/index.d.ts +10 -7
  97. package/distribution/services/state/modules/index.d.ts +7 -6
  98. package/distribution/services/state/modules/shortcuts/index.d.ts +16 -7
  99. package/distribution/services/state/modules/space/index.d.ts +151 -7
  100. package/distribution/services/state/modules/space/selectors.d.ts +23 -0
  101. package/distribution/services/state/modules/space/types.d.ts +41 -0
  102. package/distribution/services/state/modules/themes/index.d.ts +22 -7
  103. package/distribution/services/state/modules/ui/index.d.ts +16 -7
  104. package/distribution/services/state/selectors/index.d.ts +47 -174
  105. package/distribution/services/state/store/development/index.d.ts +3 -3
  106. package/distribution/services/state/store/index.d.ts +22 -18
  107. package/distribution/services/state/store/production/index.d.ts +3 -3
  108. package/distribution/services/state/store/reducer/index.d.ts +10 -0
  109. package/distribution/services/styled/index.d.ts +1 -1
  110. package/distribution/services/utilities/react/index.d.ts +3 -0
  111. package/package.json +54 -55
  112. package/distribution/containers/Application/View/ErrorView/index.d.ts +0 -6
  113. package/distribution/containers/Application/View/ErrorView/styled.d.ts +0 -1
  114. package/distribution/containers/Application/View/PlanesView/index.d.ts +0 -12
  115. package/distribution/containers/Application/View/index-old.d.ts +0 -1
  116. package/distribution/containers/Application/View/logic.d.ts +0 -3
  117. package/distribution/services/state/global/index.d.ts +0 -6
  118. package/distribution/services/state/modules/configuration/actions/index.d.ts +0 -28
  119. package/distribution/services/state/modules/configuration/initial/index.d.ts +0 -3
  120. package/distribution/services/state/modules/configuration/reducer/index.d.ts +0 -3
  121. package/distribution/services/state/modules/configuration/resolvers/index.d.ts +0 -27
  122. package/distribution/services/state/modules/configuration/selectors/index.d.ts +0 -11
  123. package/distribution/services/state/modules/configuration/types/index.d.ts +0 -136
  124. package/distribution/services/state/modules/general/actions/index.d.ts +0 -2
  125. package/distribution/services/state/modules/general/initial/index.d.ts +0 -3
  126. package/distribution/services/state/modules/general/reducer/index.d.ts +0 -3
  127. package/distribution/services/state/modules/general/resolvers/index.d.ts +0 -1
  128. package/distribution/services/state/modules/general/selectors/index.d.ts +0 -2
  129. package/distribution/services/state/modules/general/types/index.d.ts +0 -3
  130. package/distribution/services/state/modules/shortcuts/actions/index.d.ts +0 -3
  131. package/distribution/services/state/modules/shortcuts/initial/index.d.ts +0 -3
  132. package/distribution/services/state/modules/shortcuts/reducer/index.d.ts +0 -3
  133. package/distribution/services/state/modules/shortcuts/resolvers/index.d.ts +0 -3
  134. package/distribution/services/state/modules/shortcuts/selectors/index.d.ts +0 -11
  135. package/distribution/services/state/modules/shortcuts/types/index.d.ts +0 -13
  136. package/distribution/services/state/modules/space/actions/index.d.ts +0 -46
  137. package/distribution/services/state/modules/space/initial/index.d.ts +0 -3
  138. package/distribution/services/state/modules/space/reducer/index.d.ts +0 -3
  139. package/distribution/services/state/modules/space/resolvers/index.d.ts +0 -45
  140. package/distribution/services/state/modules/space/selectors/index.d.ts +0 -139
  141. package/distribution/services/state/modules/space/types/index.d.ts +0 -242
  142. package/distribution/services/state/modules/themes/actions/index.d.ts +0 -4
  143. package/distribution/services/state/modules/themes/initial/index.d.ts +0 -3
  144. package/distribution/services/state/modules/themes/reducer/index.d.ts +0 -3
  145. package/distribution/services/state/modules/themes/resolvers/index.d.ts +0 -3
  146. package/distribution/services/state/modules/themes/selectors/index.d.ts +0 -19
  147. package/distribution/services/state/modules/themes/types/index.d.ts +0 -17
  148. package/distribution/services/state/modules/ui/actions/index.d.ts +0 -2
  149. package/distribution/services/state/modules/ui/initial/index.d.ts +0 -3
  150. package/distribution/services/state/modules/ui/reducer/index.d.ts +0 -3
  151. package/distribution/services/state/modules/ui/resolvers/index.d.ts +0 -2
  152. package/distribution/services/state/modules/ui/selectors/index.d.ts +0 -11
  153. package/distribution/services/state/modules/ui/types/index.d.ts +0 -10
  154. package/distribution/services/state/store/reducers/index.d.ts +0 -9
  155. package/distribution/services/state/types/space.d.ts +0 -3
@@ -0,0 +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 toolkit = require(\"@reduxjs/toolkit\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$2 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === \"object\" && \"default\" in e ? e : {\n default: e\n };\n}\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach((function(k) {\n if (k !== \"default\") {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function() {\n return e[k];\n }\n });\n }\n }));\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar PluridPubSub__default = _interopDefaultLegacy(PluridPubSub);\n\nvar React__default = _interopDefaultLegacy(React);\n\nvar themes__default = _interopDefaultLegacy(themes$2);\n\nvar styled__default = _interopDefaultLegacy(styled);\n\nvar fetch__default = _interopDefaultLegacy(fetch);\n\nconst PluridContext = React__default[\"default\"].createContext(undefined);\n\nconst initialState$5 = Object.assign({}, pluridData.defaultConfiguration);\n\nconst configuration = toolkit.createSlice({\n name: \"configuration\",\n initialState: initialState$5,\n reducers: {\n setConfiguration: (state, action) => {\n state = Object.assign(Object.assign({}, state), action.payload);\n },\n setConfigurationMicro: state => {\n state.elements.toolbar.show = false;\n state.elements.plane.controls.show = false;\n state.elements.viewcube.show = false;\n },\n setConfigurationPlaneControls: (state, action) => {\n state.elements.plane.controls.show = action.payload;\n },\n setConfigurationPlaneOpacity: (state, action) => {\n state.elements.plane.opacity = action.payload;\n },\n setConfigurationThemeGeneral: (state, action) => {\n const updatedTheme = {\n general: action.payload,\n interaction: typeof state.global.theme === \"object\" ? state.global.theme.interaction : \"plurid\"\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationThemeInteraction: (state, action) => {\n const updatedTheme = {\n general: typeof state.global.theme === \"object\" ? state.global.theme.general : \"plurid\",\n interaction: action.payload\n };\n state.global.theme = updatedTheme;\n },\n setConfigurationLanguage: (state, action) => {\n state.global.language = action.payload;\n },\n toggleConfigurationViewcubeHide: (state, action) => {\n state.elements.viewcube.show = action.payload;\n },\n toggleConfigurationViewcubeButtons: (state, action) => {\n state.elements.viewcube.buttons = action.payload;\n },\n toggleConfigurationViewcubeOpaque: (state, action) => {\n state.elements.viewcube.opaque = action.payload;\n },\n toggleConfigurationViewcubeConceal: state => {\n const {conceal: conceal} = state.elements.viewcube;\n state.elements.viewcube.conceal = !conceal;\n },\n toggleConfigurationToolbarConceal: state => {\n const {conceal: conceal} = state.elements.toolbar;\n state.elements.toolbar.conceal = !conceal;\n },\n toggleConfigurationToolbarTransformIcons: state => {\n const {transformIcons: transformIcons} = state.elements.toolbar;\n state.elements.toolbar.transformIcons = !transformIcons;\n },\n toggleConfigurationToolbarTransformButtons: state => {\n const {transformButtons: transformButtons} = state.elements.toolbar;\n state.elements.toolbar.transformButtons = !transformButtons;\n },\n toggleConfigurationShowTransformOrigin: state => {\n const {show: show} = state.space.transformOrigin;\n state.space.transformOrigin.show = !show;\n },\n toggleConfigurationToolbarOpaque: state => {\n const {opaque: opaque} = state.elements.toolbar;\n state.elements.toolbar.opaque = !opaque;\n },\n toggleConfigurationSpaceTransparentUI: state => {\n state.global.transparentUI = !state.global.transparentUI;\n },\n setConfigurationSpaceTransformOriginSize: (state, action) => {\n state.space.transformOrigin.size = action.payload;\n },\n setConfigurationSpaceTransformMode: (state, action) => {\n if (state.space.transformMode !== action.payload) {\n state.space.transformMode = action.payload;\n } else {\n state.space.transformMode = pluridData.TRANSFORM_MODES.ALL;\n }\n },\n toggleConfigurationSpaceTransformMultimode: (state, action) => {\n state.space.transformMultimode = action.payload;\n },\n setConfigurationSpaceTransformTouch: (state, action) => {\n state.space.transformTouch = action.payload;\n },\n toggleConfigurationSpaceFirstPerson: state => {\n const {firstPerson: firstPerson} = state.space;\n state.space.firstPerson = !firstPerson;\n },\n toggleConfigurationToolbarToggleDrawer: (state, action) => {\n const {toggledDrawers: toggledDrawers} = state.elements.toolbar;\n if (toggledDrawers.includes(action.payload)) {\n const updatedDrawers = toggledDrawers.filter((el => el !== action.payload));\n state.elements.toolbar.toggledDrawers = [ ...updatedDrawers ];\n } else {\n state.elements.toolbar.toggledDrawers = [ ...toggledDrawers, action.payload ];\n }\n },\n setConfigurationSpaceTransformLocks: (state, action) => {\n const {transformLocks: transformLocks} = state.space;\n const updatedTransformLocks = Object.assign({}, transformLocks);\n updatedTransformLocks[action.payload] = !transformLocks[action.payload];\n state.space.transformLocks = Object.assign({}, updatedTransformLocks);\n },\n setConfigurationSpaceLayout: (state, action) => {\n const layout = {\n type: pluridData.LAYOUT_TYPES[action.payload]\n };\n state.space.layout = Object.assign({}, layout);\n },\n setConfigurationSpaceCullingDistance: (state, action) => {\n state.space.cullingDistance = action.payload;\n }\n }\n});\n\nconst actions$6 = configuration.actions;\n\nconst getConfiguration = state => state.configuration;\n\nconst selectors$6 = {\n getConfiguration: getConfiguration\n};\n\nconst reducer$6 = configuration.reducer;\n\nvar configuration$1 = Object.freeze({\n __proto__: null,\n configuration: configuration,\n actions: actions$6,\n getConfiguration: getConfiguration,\n selectors: selectors$6,\n reducer: reducer$6\n});\n\nconst initialState$4 = {};\n\nconst general = toolkit.createSlice({\n name: \"general\",\n initialState: initialState$4,\n reducers: {}\n});\n\nconst actions$5 = general.actions;\n\nconst getGeneral = state => state.general;\n\nconst selectors$5 = {\n getGeneral: getGeneral\n};\n\nconst reducer$5 = general.reducer;\n\nvar general$1 = Object.freeze({\n __proto__: null,\n general: general,\n actions: actions$5,\n getGeneral: getGeneral,\n selectors: selectors$5,\n reducer: reducer$5\n});\n\nconst initialState$3 = {\n global: true\n};\n\nconst shortcuts = toolkit.createSlice({\n name: \"shortcuts\",\n initialState: initialState$3,\n reducers: {\n setGlobalShortcuts: (state, action) => {\n state.global = action.payload;\n }\n }\n});\n\nconst actions$4 = shortcuts.actions;\n\nconst getGlobal = state => state.shortcuts.global;\n\nconst selectors$4 = {\n getGlobal: getGlobal\n};\n\nconst reducer$4 = shortcuts.reducer;\n\nvar shortcuts$1 = Object.freeze({\n __proto__: null,\n shortcuts: shortcuts,\n actions: actions$4,\n getGlobal: getGlobal,\n selectors: selectors$4,\n reducer: reducer$4\n});\n\nconst {registerPlanes: registerPlanes, getRegisteredPlanes: getRegisteredPlanes, getPlanesRegistrar: getPlanesRegistrar, getPluridPlaneIDByData: getPluridPlaneIDByData$1, getRegisteredPlane: getRegisteredPlane, resolvePluridRoutePlaneData: resolvePluridRoutePlaneData, resolvePluridPlaneData: resolvePluridPlaneData, Registrar: PluridPlanesRegistrar} = pluridEngine.planes;\n\nconst {IsoMatcher: PluridIsoMatcher$1, resolveRoute: resolveRoute, computePlaneAddress: computePlaneAddress} = pluridEngine.routing;\n\nconst {quaternion: quaternion$1, matrix: matrix$1} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$2} = quaternion$1;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix$1, rotateMatrix: rotateMatrix$2, multiplyArrayOfMatrices: multiplyArrayOfMatrices$2, scaleMatrix: scaleMatrix$2, translateMatrix: translateMatrix$2} = matrix$1;\n\nconst computeMatrix = spaceState => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = spaceState;\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translationX * -1 + innerWidth;\n const transformOriginY = translationY * -1 + innerHeight;\n const transformOriginZ = translationZ * -1;\n const rotationMatrix = rotateMatrix$2(degToRad$2(-rotationX), degToRad$2(-rotationY));\n const translationMatrix = translateMatrix$2(translationX, translationY, translationZ);\n const scalationMatrix = scaleMatrix$2(scale);\n const transformMatrix = multiplyArrayOfMatrices$2([ translationMatrix, translateMatrix$2(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrix$2(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix$1(transformMatrix);\n return transform;\n};\n\nconst focusPluridPlaneAnchor = planeID => {\n const selector = `[id='${planeID + pluridData.FOCUS_ANCHOR_SUFFIX}']`;\n const focusAnchor = document.querySelector(selector);\n if (focusAnchor) {\n focusAnchor.focus();\n }\n};\n\nconst getSpace = state => state.space;\n\nconst getLoading = state => state.space.loading;\n\nconst getResolvedLayout = state => state.space.resolvedLayout;\n\nconst getTransformMatrix = state => state.space.transform;\n\nconst getAnimatedTransform = state => state.space.animatedTransform;\n\nconst getTransformTime = state => state.space.transformTime;\n\nconst getRotationX = state => state.space.rotationX;\n\nconst getRotationY = state => state.space.rotationY;\n\nconst getTranslationX = state => state.space.translationX;\n\nconst getTranslationY = state => state.space.translationY;\n\nconst getTranslationZ = state => state.space.translationZ;\n\nconst getScale = state => state.space.scale;\n\nconst getTree = state => state.space.tree;\n\nconst getTransform = state => ({\n rotationX: state.space.rotationX,\n rotationY: state.space.rotationY,\n translationX: state.space.translationX,\n translationY: state.space.translationY,\n translationZ: state.space.translationZ,\n scale: state.space.scale\n});\n\nconst getActiveUniverseID = state => state.space.activeUniverseID;\n\nconst getView = state => state.space.view;\n\nconst getViewSize = state => state.space.viewSize;\n\nconst getCulledView = state => state.space.culledView;\n\nconst getActivePlaneID = state => state.space.activePlaneID;\n\nconst getIsolatePlane = state => state.space.isolatePlane;\n\nconst getLastClosedPlane = state => state.space.lastClosedPlane;\n\nvar selectors$3 = Object.freeze({\n __proto__: null,\n getSpace: getSpace,\n getLoading: getLoading,\n getResolvedLayout: getResolvedLayout,\n getTransformMatrix: getTransformMatrix,\n getAnimatedTransform: getAnimatedTransform,\n getTransformTime: getTransformTime,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getScale: getScale,\n getTree: getTree,\n getTransform: getTransform,\n getActiveUniverseID: getActiveUniverseID,\n getView: getView,\n getViewSize: getViewSize,\n getCulledView: getCulledView,\n getActivePlaneID: getActivePlaneID,\n getIsolatePlane: getIsolatePlane,\n getLastClosedPlane: getLastClosedPlane\n});\n\nconst {toRadians: toRadians} = pluridFunctions.mathematics.geometry;\n\nconst initialState$2 = {\n loading: true,\n resolvedLayout: false,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n animatedTransform: false,\n transformTime: 450,\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: [],\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight\n },\n spaceSize: {\n width: typeof window === \"undefined\" ? 1440 : window.innerWidth,\n height: typeof window === \"undefined\" ? 821 : window.innerHeight,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: [],\n culledView: [],\n activePlaneID: \"\",\n isolatePlane: \"\",\n lastClosedPlane: \"\"\n};\n\nconst name = \"space\";\n\nconst space = toolkit.createSlice({\n name: name,\n initialState: initialState$2,\n reducers: {\n setSpaceField: (state, action) => {\n const {field: field, value: value} = action.payload;\n state[field] = value;\n },\n setSpaceLoading: (state, action) => {\n state.loading = action.payload;\n },\n changeTransform: (state, action) => {},\n setTransform: (state, action) => {\n const {translationX: translationX, translationY: translationY, translationZ: translationZ, rotationX: rotationX, rotationY: rotationY, scale: scale} = action.payload;\n const resolvedTranslationX = translationX !== null && translationX !== void 0 ? translationX : state.translationX;\n const resolvedTranslationY = translationY !== null && translationY !== void 0 ? translationY : state.translationY;\n const resolvedTranslationZ = translationZ !== null && translationZ !== void 0 ? translationZ : state.translationZ;\n const resolvedRotationX = rotationX !== null && rotationX !== void 0 ? rotationX : state.rotationX;\n const resolvedRotationY = rotationY !== null && rotationY !== void 0 ? rotationY : state.rotationY;\n const resolvedScale = scale !== null && scale !== void 0 ? scale : state.scale;\n state.translationX = resolvedTranslationX;\n state.translationY = resolvedTranslationY;\n state.translationZ = resolvedTranslationZ;\n state.rotationX = resolvedRotationX;\n state.rotationY = resolvedRotationY;\n state.scale = resolvedScale;\n },\n setAnimatedTransform: (state, action) => {\n state.animatedTransform = action.payload;\n },\n setTransformTime: (state, action) => {\n state.transformTime = action.payload;\n },\n setSpaceLocation: (state, action) => {\n const newState = Object.assign(Object.assign({}, state), action.payload);\n const transform = computeMatrix(newState);\n return Object.assign(Object.assign({}, newState), {\n transform: transform\n });\n },\n viewCameraMoveForward: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveBackward: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 6 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 6 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveLeft: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveRight: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n viewCameraMoveUp: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraMoveDown: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP * 3;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnLeft: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n viewCameraTurnRight: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateUp: state => {\n state.rotationX = (state.rotationX + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateDown: state => {\n state.rotationX = (state.rotationX - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateX: (state, action) => {\n state.rotationX = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateXWith: (state, action) => {\n state.rotationX = state.rotationX + action.payload;\n state.transform = computeMatrix(state);\n },\n rotateLeft: state => {\n state.rotationY = (state.rotationY + pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateRight: state => {\n state.rotationY = (state.rotationY - pluridData.ROTATION_STEP) % 360;\n state.transform = computeMatrix(state);\n },\n rotateY: (state, action) => {\n state.rotationY = action.payload;\n state.transform = computeMatrix(state);\n },\n rotateYWith: (state, action) => {\n state.rotationY = state.rotationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateUp: state => {\n state.translationY = state.translationY - pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateDown: state => {\n state.translationY = state.translationY + pluridData.TRANSLATION_STEP;\n state.transform = computeMatrix(state);\n },\n translateLeft: state => {\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateRight: state => {\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateIn: state => {\n state.translationZ = state.translationZ - pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX - pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateOut: state => {\n state.translationZ = state.translationZ + pluridData.TRANSLATION_STEP * 3 * Math.cos(toRadians(-state.rotationY));\n state.translationX = state.translationX + pluridData.TRANSLATION_STEP * 3 * Math.sin(toRadians(-state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateXWith: (state, action) => {\n state.translationX = state.translationX + action.payload * Math.cos(toRadians(state.rotationY));\n state.translationZ = state.translationZ + action.payload * Math.sin(toRadians(state.rotationY));\n state.transform = computeMatrix(state);\n },\n translateYWith: (state, action) => {\n state.translationY = state.translationY + action.payload;\n state.transform = computeMatrix(state);\n },\n translateZWith: (state, action) => {\n state.translationZ = state.translationZ + action.payload;\n state.transform = computeMatrix(state);\n },\n scaleUp: state => {\n const computedScale = state.scale + pluridData.SCALE_STEP;\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDown: state => {\n const computedScale = state.scale - pluridData.SCALE_STEP;\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleUpWith: (state, action) => {\n const computedScale = state.scale + Math.abs(action.payload);\n const scale = computedScale < pluridData.SCALE_UPPER_LIMIT ? computedScale : pluridData.SCALE_UPPER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n scaleDownWith: (state, action) => {\n const computedScale = state.scale - Math.abs(action.payload);\n const scale = computedScale > pluridData.SCALE_LOWER_LIMIT ? computedScale : pluridData.SCALE_LOWER_LIMIT;\n state.scale = scale;\n state.transform = computeMatrix(state);\n },\n setTree: (state, action) => {\n state.tree = [ ...action.payload ];\n },\n setActiveUniverse: (state, action) => {\n state.activeUniverseID = action.payload;\n },\n spaceResetTransform: state => {\n state.scale = 1;\n state.rotationX = 0;\n state.rotationY = 0;\n state.translationX = 0;\n state.translationY = 0;\n state.translationZ = 0;\n state.transform = computeMatrix(state);\n },\n setViewSize: (state, action) => {\n state.viewSize = action.payload;\n },\n setSpaceSize: (state, action) => {\n state.spaceSize = action.payload;\n },\n updateSpaceTreePlane: (state, action) => {\n const updatedTree = pluridEngine.general.tree.updateTreePlane(state.tree, action.payload);\n state.tree = updatedTree;\n },\n updateSpaceLinkCoordinates: (state, action) => {\n const {planeID: planeID, linkCoordinates: linkCoordinates} = action.payload;\n const updatedTree = pluridEngine.general.tree.updateTreeByPlaneIDWithLinkCoordinates(state.tree, planeID, linkCoordinates);\n state.tree = updatedTree;\n },\n spaceSetView: (state, action) => {\n state.view = action.payload;\n },\n spaceSetCulledView: (state, action) => {\n state.culledView = action.payload;\n },\n removePlane: (state, action) => {\n const updatedTree = pluridEngine.space.tree.logic.removePlaneFromTree(pluridFunctions.objects.clone(state.tree), action.payload);\n state.tree = updatedTree;\n }\n }\n});\n\nconst actions$3 = space.actions;\n\nconst reducer$3 = space.reducer;\n\nvar space$1 = Object.freeze({\n __proto__: null,\n name: name,\n space: space,\n actions: actions$3,\n selectors: selectors$3,\n reducer: reducer$3\n});\n\nconst initialState$1 = {\n general: themes$2.plurid,\n interaction: themes$2.plurid\n};\n\nconst themes = toolkit.createSlice({\n name: \"themes\",\n initialState: initialState$1,\n reducers: {\n setGeneralTheme: (state, action) => {\n state.general = action.payload;\n },\n setInteractionTheme: (state, action) => {\n state.interaction = action.payload;\n }\n }\n});\n\nconst actions$2 = themes.actions;\n\nconst getGeneralTheme = state => state.themes.general;\n\nconst getInteractionTheme = state => state.themes.general;\n\nconst selectors$2 = {\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme\n};\n\nconst reducer$2 = themes.reducer;\n\nvar themes$1 = Object.freeze({\n __proto__: null,\n themes: themes,\n actions: actions$2,\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme,\n selectors: selectors$2,\n reducer: reducer$2\n});\n\nconst initialState = {\n toolbarScrollPosition: 0\n};\n\nconst ui = toolkit.createSlice({\n name: \"ui\",\n initialState: initialState,\n reducers: {\n setUIToolbarScrollPosition: (state, action) => {\n state.toolbarScrollPosition = action.payload;\n }\n }\n});\n\nconst actions$1 = ui.actions;\n\nconst getToolbarScrollPosition = state => state.ui.toolbarScrollPosition;\n\nconst selectors$1 = {\n getToolbarScrollPosition: getToolbarScrollPosition\n};\n\nconst reducer$1 = ui.reducer;\n\nvar ui$1 = Object.freeze({\n __proto__: null,\n ui: ui,\n actions: actions$1,\n getToolbarScrollPosition: getToolbarScrollPosition,\n selectors: selectors$1,\n reducer: reducer$1\n});\n\nvar modules = {\n configuration: configuration$1,\n general: general$1,\n shortcuts: shortcuts$1,\n space: space$1,\n themes: themes$1,\n ui: ui$1\n};\n\nconst reducer = toolkit.combineReducers({\n configuration: modules.configuration.reducer,\n general: modules.general.reducer,\n shortcuts: modules.shortcuts.reducer,\n space: modules.space.reducer,\n themes: modules.themes.reducer,\n ui: modules.ui.reducer\n});\n\nconst store$1 = preloadedState => toolkit.configureStore({\n preloadedState: preloadedState,\n reducer: reducer,\n devTools: false\n});\n\nconst store = store$1;\n\nconst StateContext = React__default[\"default\"].createContext({});\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P((function(resolve) {\n resolve(value);\n }));\n }\n return new (P || (P = Promise))((function(resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n }));\n}\n\nconst Context = React__default[\"default\"].createContext(null);\n\nvar actions = {\n configuration: modules.configuration.actions,\n general: modules.general.actions,\n shortcuts: modules.shortcuts.actions,\n space: modules.space.actions,\n themes: modules.themes.actions,\n ui: modules.ui.actions\n};\n\nconst {quaternion: quaternion, transform: transform, matrix: matrix} = pluridEngine.interaction;\n\nconst {degToRad: degToRad$1, radToDeg: radToDeg} = quaternion;\n\nconst {multiplyMatricesArray: multiplyMatricesArray, translateMatrix: translateMatrix$1, rotateYMatrix: rotateYMatrix, matrixToCSSMatrix: matrixToCSSMatrix, arrayToMatrix: arrayToMatrix, inverseMatrix: inverseMatrix} = transform.general;\n\nconst {getTransformRotate: getTransformRotate, getTransformTranslate: getTransformTranslate, getTransformScale: getTransformScale} = transform.matrix3d;\n\nconst {rotateMatrix: rotateMatrix$1, translateMatrix: translateMatrixArray, scaleMatrix: scaleMatrix$1, multiplyArrayOfMatrices: multiplyArrayOfMatrices$1} = matrix;\n\nconst computeApplication = (planes, configuration, view, origin = \"origin\") => {\n const appConfiguration = pluridEngine.general.configuration.merge(configuration);\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 registrar = new PluridPlanesRegistrar(planes, origin);\n const registrarPlanes = registrar.getAll();\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: registrarPlanes,\n configuration: appConfiguration,\n view: absoluteView\n }, origin);\n const computedTree = spaceTree.compute();\n const data = {\n computedTree: computedTree,\n appConfiguration: appConfiguration\n };\n return data;\n};\n\nconst computePlaneLocation = plane => {\n const {location: location} = plane;\n const {translateX: translateX, translateY: translateY, translateZ: translateZ, rotateY: rotateY} = location;\n const getTransform = () => {\n const innerWidth = typeof window === \"undefined\" ? 720 : window.innerWidth / 2;\n const innerHeight = typeof window === \"undefined\" ? 400 : window.innerHeight / 2;\n const transformOriginX = translateX * -1 + innerWidth;\n const transformOriginY = translateY * -1 + innerHeight;\n const transformOriginZ = translateZ * -1;\n const rotationMatrix = rotateMatrix$1(0, degToRad$1(rotateY));\n const translationMatrix = translateMatrixArray(translateX, translateY, translateZ);\n const scalationMatrix = scaleMatrix$1(1);\n const transformMatrix = multiplyArrayOfMatrices$1([ translationMatrix, translateMatrixArray(transformOriginX, transformOriginY, transformOriginZ), rotationMatrix, translateMatrixArray(-transformOriginX, -transformOriginY, -transformOriginZ), scalationMatrix ]);\n const inverseTransformMatrix = inverseMatrix(arrayToMatrix(transformMatrix));\n const matrix3dTransformMatrix = matrixToCSSMatrix(inverseTransformMatrix);\n const rotate = getTransformRotate(matrix3dTransformMatrix);\n const translate = getTransformTranslate(matrix3dTransformMatrix);\n const scale = getTransformScale(matrix3dTransformMatrix);\n const transform = {\n translationX: translate.translateX,\n translationY: translate.translateY,\n translationZ: translate.translateZ,\n rotationX: radToDeg(rotate.rotateX),\n rotationY: radToDeg(rotate.rotateY),\n scale: scale.scale\n };\n return transform;\n };\n const transform = getTransform();\n const getMatrix3d = () => {\n const zSign1 = rotateY < 100 ? 1 : -1;\n const zSign2 = rotateY < 100 ? -1 : 1;\n const xOffset = rotateY < 100 ? plane.parentPlaneID ? 200 : 0 : 0;\n const newMatrix = multiplyMatricesArray([ translateMatrix$1(-translateX, -translateY, zSign1 * translateZ), rotateYMatrix(degToRad$1(rotateY)), translateMatrix$1(translateX, translateY, zSign2 * translateZ), translateMatrix$1(-(translateX + xOffset), -translateY, zSign1 * translateZ) ]);\n const matrix3d = matrixToCSSMatrix(newMatrix);\n return matrix3d;\n };\n const matrix3d = getMatrix3d();\n return {\n transform: transform,\n matrix3d: matrix3d\n };\n};\n\nconst factoryUseAnimatedTransform = () => {\n let timeout;\n return dispatch => {\n const dispatchSetAnimatedTransform = payload => dispatch(actions.space.setAnimatedTransform(payload));\n dispatchSetAnimatedTransform(true);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n };\n};\n\nconst useAnimatedTransform = factoryUseAnimatedTransform();\n\nconst navigateToPluridPlane = (dispatch, plane, event, deisolate = true) => {\n if (event && (event.ctrlKey || event.metaKey)) {\n return;\n }\n if (!plane) {\n return;\n }\n const dispatchSetTransform = payload => dispatch(actions.space.setTransform(payload));\n const dispatchSetSpaceField = payload => dispatch(actions.space.setSpaceField(payload));\n const {matrix3d: matrix3d, transform: transform} = computePlaneLocation(plane);\n useAnimatedTransform(dispatch);\n dispatchSetSpaceField({\n field: \"transform\",\n value: matrix3d\n });\n dispatchSetTransform(Object.assign({}, transform));\n if (deisolate) {\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n }\n setTimeout((() => {\n focusPluridPlaneAnchor(plane.planeID);\n dispatchSetSpaceField({\n field: \"activePlaneID\",\n value: plane.planeID\n });\n }), pluridData.PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT);\n};\n\nconst getActivePlane = state => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n if (!activePlaneID) {\n return;\n }\n const treePlane = pluridEngine.space.tree.logic.getTreePlaneByID(tree, activePlaneID);\n return treePlane;\n};\n\nconst focusActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane) {\n return;\n }\n const event = undefined;\n const deisolate = false;\n navigateToPluridPlane(dispatch, activePlane, event, deisolate);\n};\n\nconst focusParentActivePlane = (dispatch, state) => {\n const activePlane = getActivePlane(state);\n if (!activePlane || !activePlane.parentPlaneID) {\n return;\n }\n const parentPlane = pluridEngine.space.tree.logic.getTreePlaneByID(state.space.tree, activePlane.parentPlaneID);\n if (!parentPlane) {\n return;\n }\n navigateToPluridPlane(dispatch, parentPlane);\n};\n\nconst findRootIndex = (tree, activePlaneID, currentRootIndex) => {\n for (const [index, plane] of tree.entries()) {\n if (plane.planeID === activePlaneID) {\n return currentRootIndex !== null && currentRootIndex !== void 0 ? currentRootIndex : index;\n }\n if (plane.children) {\n const rootIndex = findRootIndex(plane.children, activePlaneID, index);\n if (typeof rootIndex === \"number\") {\n return rootIndex;\n }\n }\n }\n return;\n};\n\nconst navigateToRoot = (dispatch, state, type) => {\n const {activePlaneID: activePlaneID, tree: tree} = state.space;\n const rootIndex = findRootIndex(tree, activePlaneID);\n if (typeof rootIndex !== \"number\") {\n return;\n }\n const treeIndex = type === \"previous\" ? rootIndex - 1 || 0 : rootIndex + 1;\n let root = tree[treeIndex];\n if (!root) {\n if (type === \"previous\") {\n root = tree[tree.length - 1];\n } else {\n root = tree[0];\n }\n if (!root) {\n return;\n }\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusPreviousRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"previous\");\n};\n\nconst focusNextRoot = (dispatch, state) => {\n navigateToRoot(dispatch, state, \"next\");\n};\n\nconst focusRootIndex = (dispatch, state, index) => {\n const {tree: tree} = state.space;\n const root = tree[index];\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst focusRootID = (dispatch, state, id) => {\n const {tree: tree} = state.space;\n const root = tree.find((plane => plane.planeID === id));\n if (!root) {\n return;\n }\n navigateToPluridPlane(dispatch, root, undefined, true);\n};\n\nconst refreshActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst isolateActivePlane = (state, pubsub) => {\n const {activePlaneID: id, isolatePlane: isolatePlane} = state.space;\n if (isolatePlane) {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: \"\"\n }\n });\n return;\n }\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst openClosedPlane = pubsub => {\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE\n });\n};\n\nconst closeActivePlane = (state, pubsub) => {\n const {activePlaneID: id} = state.space;\n if (!id) {\n return;\n }\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: id\n }\n });\n};\n\nconst handleGlobalShortcuts = (dispatch, state, pubsub, event, firstPerson, locks) => {\n if (event.defaultPrevented) {\n return;\n }\n const inputOnPath = pluridFunctions.dom.verifyPathInputElement(pluridFunctions.dom.getEventPath(event));\n if (inputOnPath) {\n return;\n }\n const noModifiers = !event.shiftKey && !event.altKey && !event.ctrlKey && !event.metaKey;\n const handleEvent = () => {\n event.preventDefault();\n };\n if (event.code === \"KeyF\" && noModifiers) {\n handleEvent();\n return dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson());\n }\n if (firstPerson) {\n if (event.code === \"KeyW\" && noModifiers && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveForward());\n }\n if (event.code === \"KeyS\" && noModifiers && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveBackward());\n }\n if (event.code === \"KeyA\" && noModifiers && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveLeft());\n }\n if (event.code === \"KeyA\" && event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnLeft());\n }\n if (event.code === \"KeyD\" && noModifiers && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveRight());\n }\n if (event.code === \"KeyD\" && event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnRight());\n }\n if (event.code === \"KeyQ\" && noModifiers && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnUp());\n }\n if (event.code === \"KeyZ\" && noModifiers && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.viewCameraTurnDown());\n }\n if (event.code === \"KeyE\" && noModifiers && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveUp());\n }\n if (event.code === \"KeyC\" && noModifiers && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.viewCameraMoveDown());\n }\n }\n if (event.code === \"KeyR\" && noModifiers) {\n handleEvent();\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ROTATION));\n }\n if (event.code === \"KeyT\" && noModifiers) {\n handleEvent();\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.TRANSLATION));\n }\n if (event.code === \"KeyS\" && noModifiers && !firstPerson) {\n handleEvent();\n return dispatch(actions.configuration.setConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.SCALE));\n }\n if (event.key === \"ArrowRight\") {\n if (event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.rotateLeft());\n }\n if (event.altKey && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.translateRight());\n }\n }\n if (event.key === \"ArrowLeft\") {\n if (event.shiftKey && locks.rotationY) {\n handleEvent();\n return dispatch(actions.space.rotateRight());\n }\n if (event.altKey && locks.translationX) {\n handleEvent();\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.key === \"ArrowUp\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.translateIn());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.rotateUp());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.translateUp());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n handleEvent();\n return dispatch(actions.space.scaleUp());\n }\n }\n if (event.key === \"ArrowDown\") {\n if (event.shiftKey && event.altKey && locks.translationZ) {\n handleEvent();\n return dispatch(actions.space.translateOut());\n }\n if (event.shiftKey && !event.altKey && locks.rotationX) {\n handleEvent();\n return dispatch(actions.space.rotateDown());\n }\n if (event.altKey && !event.shiftKey && locks.translationY) {\n handleEvent();\n return dispatch(actions.space.translateDown());\n }\n if (event.metaKey || event.ctrlKey && locks.scale) {\n handleEvent();\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.altKey && event.code === \"KeyF\") {\n handleEvent();\n focusActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyB\") {\n handleEvent();\n focusParentActivePlane(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyR\") {\n handleEvent();\n refreshActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyE\") {\n handleEvent();\n isolateActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.shiftKey && event.code === \"KeyT\") {\n handleEvent();\n openClosedPlane(pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyW\") {\n handleEvent();\n closeActivePlane(state, pubsub);\n return;\n }\n if (event.altKey && event.code === \"KeyA\") {\n handleEvent();\n focusPreviousRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"KeyD\") {\n handleEvent();\n focusNextRoot(dispatch, state);\n return;\n }\n if (event.altKey && event.code === \"Tab\") {\n handleEvent();\n if (event.shiftKey) {\n focusPreviousRoot(dispatch, state);\n } else {\n focusNextRoot(dispatch, state);\n }\n return;\n }\n if (event.altKey && event.code.startsWith(\"Digit\")) {\n handleEvent();\n const index = parseInt(event.code.replace(\"Digit\", \"\")) - 1;\n focusRootIndex(dispatch, state, index);\n return;\n }\n return;\n};\n\nconst handleGlobalWheel = (dispatch, event, modes, locks) => {\n if (event.shiftKey || event.metaKey || event.altKey || event.ctrlKey || modes.rotation || modes.translation || modes.scale) {\n event.preventDefault();\n }\n const deltas = {\n deltaX: event.deltaX,\n deltaY: event.deltaY\n };\n const absoluteThreshold = 100;\n const direction = pluridEngine.interaction.direction.getWheelDirection(deltas, absoluteThreshold);\n if (modes.rotation) {\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n }\n if (event.shiftKey && !event.altKey) {\n if (direction === pluridData.directions.up && locks.rotationX) {\n return dispatch(actions.space.rotateUp());\n }\n if (direction === pluridData.directions.down && locks.rotationX) {\n return dispatch(actions.space.rotateDown());\n }\n if (direction === pluridData.directions.left && locks.rotationY) {\n return dispatch(actions.space.rotateLeft());\n }\n if (direction === pluridData.directions.right && locks.rotationY) {\n return dispatch(actions.space.rotateRight());\n }\n }\n if (modes.translation) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (event.altKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (event.altKey && event.shiftKey) {\n if (direction === pluridData.directions.up && locks.translationZ) {\n return dispatch(actions.space.translateIn());\n }\n if (direction === pluridData.directions.down && locks.translationZ) {\n return dispatch(actions.space.translateOut());\n }\n }\n if (event.altKey && !event.shiftKey) {\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.up) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down) {\n return dispatch(actions.space.translateUp());\n }\n return;\n }\n if (direction === pluridData.directions.up && locks.translationY) {\n return dispatch(actions.space.translateDown());\n }\n if (direction === pluridData.directions.down && locks.translationY) {\n return dispatch(actions.space.translateUp());\n }\n if (direction === pluridData.directions.left && locks.translationX) {\n return dispatch(actions.space.translateRight());\n }\n if (direction === pluridData.directions.right && locks.translationX) {\n return dispatch(actions.space.translateLeft());\n }\n }\n if (modes.scale) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n if (event.metaKey || event.ctrlKey) {\n if (direction === pluridData.directions.down && locks.scale) {\n return dispatch(actions.space.scaleUp());\n }\n if (direction === pluridData.directions.up && locks.scale) {\n return dispatch(actions.space.scaleDown());\n }\n }\n return;\n};\n\nconst loadHammer = () => __awaiter(void 0, void 0, void 0, (function*() {\n const hammer = yield Promise.resolve().then((function() {\n return _interopNamespace(require(\"hammerjs\"));\n }));\n return hammer;\n}));\n\nvar selectors = {\n configuration: modules.configuration.selectors,\n general: modules.general.selectors,\n shortcuts: modules.shortcuts.selectors,\n space: modules.space.selectors,\n themes: modules.themes.selectors,\n ui: modules.ui.selectors\n};\n\nconst GlobalStyle = styled.createGlobalStyle`\n *,\n *:after,\n *:before {\n box-sizing: border-box;\n font-kerning: auto;\n text-rendering: optimizeLegibility;\n }\n\n html, body {\n margin: 0;\n height: 100%;\n width: 100%;\n overscroll-behavior-x: ${({preventOverscroll: preventOverscroll}) => {\n if (preventOverscroll) {\n return \"none\";\n }\n return \"auto\";\n}};\n }\n\n html {\n overflow: hidden;\n background: black;\n color: white;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif}\n }\n`;\n\nconst StyledView = styled__default[\"default\"].div`\n height: 100%;\n min-height: ${props => {\n if (props.fullHeight) {\n return \"100vh\";\n }\n return \"100%\";\n}};\n min-height: ${props => {\n if (props.fullHeight) {\n return \"-webkit-fill-available\";\n }\n return \"100%\";\n}};\n\n width: 100%;\n position: relative;\n scroll-snap-align: start;\n outline: none;\n overflow: hidden;\n\n cursor: ${props => {\n if (props.transformMode === pluridData.TRANSFORM_MODES.TRANSLATION || props.transformMode === pluridData.TRANSFORM_MODES.ROTATION) {\n return \"all-scroll\";\n }\n if (props.transformMode === pluridData.TRANSFORM_MODES.SCALE) {\n return \"ns-resize\";\n }\n return \"initial\";\n}};\n user-select: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n touch-action: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none !important\";\n }\n return \"initial !important\";\n}};\n -webkit-user-drag: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"none\";\n }\n return \"initial !important\";\n}};\n -webkit-tap-highlight-color: ${props => {\n if (props.transformMode !== \"ALL\") {\n return \"rgba(0, 0, 0, 0)\";\n }\n return \"initial !important\";\n}};\n`;\n\nstyled__default[\"default\"].div`\n outline: none;\n background: ${props => {\n if (props.opaque) {\n const foregroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorTertiary : props.theme.backgroundColorPrimary;\n const backgroundGradient = props.theme.type === \"dark\" ? props.theme.backgroundColorPrimary : props.theme.backgroundColorTertiary;\n return `radial-gradient(\\n ellipse at center,\\n ${foregroundGradient} 0%,\\n ${backgroundGradient} 100%)\\n `;\n }\n return \"transparent\";\n}};\n`;\n\nclass ErrorBoundary extends React__default[\"default\"].Component {\n constructor(props) {\n super(props);\n this.state = {\n hasError: false\n };\n }\n static getDerivedStateFromError(error) {\n return {\n hasError: true\n };\n }\n componentDidCatch(error, errorInfo) {}\n render() {\n if (this.state.hasError) {\n if (this.props.renderError) {\n return this.props.renderError;\n }\n return React__default[\"default\"].createElement(\"h1\", null, \"Something went wrong.\");\n }\n return this.props.children;\n }\n}\n\nconst StyledPluridPlane = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme, planeOpacity: planeOpacity}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity !== 1) {\n const decomposedColor = themes$2.decomposeColor(theme.backgroundColorPrimary);\n if (decomposedColor) {\n const color = `hsla(${decomposedColor.hue}, ${decomposedColor.saturation}%, ${decomposedColor.lightness}%, ${planeOpacity})`;\n return color;\n }\n return \"transparent\";\n }\n return theme.backgroundColorPrimary;\n}};\n box-shadow: ${({planeOpacity: planeOpacity, theme: theme}) => {\n if (planeOpacity === 0) {\n return \"none\";\n }\n return theme.boxShadowUmbra;\n}};\n color: ${({theme: theme}) => theme.colorPrimary};\n opacity: ${({show: show}) => {\n if (!show) {\n return \"0\";\n }\n return \"1\";\n}};\n user-select: ${({show: show}) => {\n if (!show) {\n return \"none\";\n }\n return \"auto\";\n}};\n\n position: absolute;\n height: auto;\n width: 100%;\n font-size: 0.9rem;\n font-family: ${({theme: theme}) => theme.fontFamilySansSerif};\n transition: background-color 300ms linear;\n\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: ${({planeControls: planeControls}) => {\n if (planeControls) {\n return \"56px auto\";\n }\n return \"auto\";\n}};\n\n transform-origin: 0 0 0;\n`;\n\nconst StyledFocusAnchor = styled__default[\"default\"].a`\n position: absolute;\n top: 0;\n left: 0;\n height: 0;\n width: 0;\n pointer-events: none;\n user-select: none;\n`;\n\nconst StyledPluridPlaneBridge = styled__default[\"default\"].div`\n background-color: ${({theme: theme, planeControls: planeControls, planeOpacity: planeOpacity, transparentUI: transparentUI, mouseOver: mouseOver}) => {\n if (transparentUI && !mouseOver) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (planeOpacity === 0) {\n return \"transparent\";\n }\n if (!planeControls) {\n return theme.backgroundColorPrimary;\n }\n return theme.backgroundColorDark;\n}};\n\n position: absolute;\n top: 0;\n left: -100px;\n height: 30px;\n width: 100px;\n opacity: 0.5;\n\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst PluridPlaneBridge = properties => {\n const {mouseOver: mouseOver, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration} = properties;\n const {controls: controls, opacity: opacity} = stateConfiguration.elements.plane;\n const {transparentUI: transparentUI} = stateConfiguration.global;\n return React__default[\"default\"].createElement(StyledPluridPlaneBridge, {\n theme: stateGeneralTheme,\n planeControls: controls.show,\n planeOpacity: opacity,\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_BRIDGE\n });\n};\n\nconst mapStateToProperties$i = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$i = dispatch => ({});\n\nconst ConnectedPluridPlaneBridge = reactRedux.connect(mapStateToProperties$i, mapDispatchToProperties$i, null, {\n context: StateContext\n})(PluridPlaneBridge);\n\nconst ControlRefresh = properties => {\n const {theme: theme, refreshing: refreshing, refreshPlane: refreshPlane} = properties;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconReset, {\n atClick: () => {\n refreshPlane();\n },\n theme: theme,\n title: \"refresh\",\n style: {\n opacity: refreshing ? \"0\" : \"1\",\n pointerEvents: refreshing ? \"none\" : undefined\n }\n });\n};\n\nconst ControlIsolate = properties => {\n const {theme: theme, isolated: isolated, isolatePlane: isolatePlane} = properties;\n const title = isolated ? \"isolated\" : \"isolate\";\n const fill = isolated ? true : false;\n return React__default[\"default\"].createElement(pluridIconsReact.PluridIconRectangle, {\n atClick: () => {\n isolatePlane();\n },\n theme: theme,\n title: title,\n fill: fill\n });\n};\n\nconst StyledPluridPlaneControls = styled__default[\"default\"].div`\n background-color: ${({transparentUI: transparentUI, mouseOver: mouseOver, theme: theme}) => {\n if (transparentUI && !mouseOver) {\n return \"transparent\";\n }\n return theme.backgroundColorDark;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbraInset};\n\n width: 100%;\n display: grid;\n align-items: center;\n justify-content: center;\n grid-template-rows: 1fr;\n grid-template-columns: 1fr 2fr 1fr;\n transition: background-color 300ms linear;\n\n @media (max-width: 800px) {\n grid-template-columns: 1fr 3fr 1fr;\n }\n`;\n\nconst styleCommonControls = styled.css`\n margin: 0 1rem;\n display: flex;\n align-items: center;\n gap: 1rem;\n`;\n\nconst StyledPluridPlaneControlsLeft = styled__default[\"default\"].div`\n ${styleCommonControls}\n`;\n\nconst StyledPluridPlaneControlsCenter = styled__default[\"default\"].div`\n width: 100%;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n word-break: break-all;\n`;\n\nconst StyledPluridPlaneControlsRight = styled__default[\"default\"].div`\n ${styleCommonControls}\n justify-content: right;\n`;\n\nconst PluridPlaneControls = properties => {\n const {plane: plane, treePlane: treePlane, parentTreePlane: parentTreePlane, mouseOver: mouseOver, refreshing: refreshing, refreshPlane: refreshPlane, isolatePlane: isolatePlane, closePlane: closePlane, configuration: configuration, stateGeneralTheme: stateGeneralTheme, stateIsolatePlane: stateIsolatePlane, dispatch: dispatch} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const {title: title, pathbar: pathbar} = elements.plane.controls;\n const {planeID: planeID, route: route, routeDivisions: routeDivisions} = treePlane;\n const {protocol: protocol, host: host} = routeDivisions;\n const gateway = \"gateway\";\n `${protocol}://${host.value}/${gateway}?plurid=` + encodeURIComponent(route);\n const isolated = stateIsolatePlane === planeID;\n const [path, setPath] = React.useState(treePlane.route);\n React.useState(false);\n React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridPlaneControls, {\n theme: stateGeneralTheme,\n mouseOver: mouseOver,\n transparentUI: transparentUI,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTROLS\n }, React__default[\"default\"].createElement(StyledPluridPlaneControlsLeft, null, parentTreePlane && React__default[\"default\"].createElement(pluridIconsReact.PluridIconArrowLeft, {\n atClick: event => {\n navigateToPluridPlane(dispatch, parentTreePlane, event);\n },\n theme: stateGeneralTheme,\n title: \"back\"\n }), React__default[\"default\"].createElement(pluridIconsReact.PluridIconFrame, {\n atClick: event => {\n const deisolate = false;\n navigateToPluridPlane(dispatch, treePlane, event, deisolate);\n },\n theme: stateGeneralTheme,\n title: \"focus\"\n }), React__default[\"default\"].createElement(ControlRefresh, {\n theme: stateGeneralTheme,\n refreshing: refreshing,\n refreshPlane: refreshPlane\n }), React__default[\"default\"].createElement(ControlIsolate, {\n theme: stateGeneralTheme,\n isolated: isolated,\n isolatePlane: isolatePlane\n })), React__default[\"default\"].createElement(StyledPluridPlaneControlsCenter, null, title && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, path)), React__default[\"default\"].createElement(StyledPluridPlaneControlsRight, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconDelete, {\n atClick: () => {\n closePlane();\n },\n theme: stateGeneralTheme,\n title: \"close\"\n })));\n};\n\nconst mapStateToProps$f = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state)\n});\n\nconst mapDispatchToProps$f = dispatch => ({\n dispatch: dispatch\n});\n\nconst ConnectedPluridPlaneControls = reactRedux.connect(mapStateToProps$f, mapDispatchToProps$f, null, {\n context: StateContext\n})(PluridPlaneControls);\n\nconst StyledPluridPlaneContent = styled__default[\"default\"].div`\n position: relative;\n`;\n\nconst PluridPlaneContent = properties => {\n const {children: children} = properties;\n const planeContentElement = React.useRef(null);\n return React__default[\"default\"].createElement(StyledPluridPlaneContent, {\n ref: planeContentElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONTENT\n }, children);\n};\n\nconst PluridPlane = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planeRenderError: planeRenderError, defaultPubSub: defaultPubSub} = context;\n const {planeID: planeID, plane: plane, treePlane: treePlane, children: children, stateTree: stateTree, stateViewSize: stateViewSize, stateActivePlaneID: stateActivePlaneID, stateIsolatePlane: stateIsolatePlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceTreePlane: dispatchUpdateSpaceTreePlane} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {controls: controls, width: planeWidth, opacity: planeOpacity} = elements.plane;\n const showPlaneControls = controls.show;\n pluridFunctions.mathematics.numbers.checkIntegerNonUnit(planeWidth) ? planeWidth : planeWidth * stateViewSize.width;\n const parentTreePlane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, treePlane.parentPlaneID);\n const planeRef = React.useRef(null);\n const [remountKey, setRemountKey] = React.useState(0);\n const [refreshing, setRefreshing] = React.useState(false);\n const [mouseOver, setMouseOver] = React.useState(false);\n const refreshPlane = () => {\n const REFRESH_TIMEOUT = 250;\n setRefreshing(true);\n setTimeout((() => {\n setRemountKey((value => ++value));\n setRefreshing(false);\n }), REFRESH_TIMEOUT);\n };\n const isolatePlane = () => {\n const id = stateIsolatePlane !== planeID ? planeID : \"\";\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n data: {\n id: id\n }\n });\n };\n const closePlane = () => {\n defaultPubSub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n data: {\n id: planeID\n }\n });\n };\n const setActivePlane = () => {\n const payload = {\n field: \"activePlaneID\",\n value: mouseOver ? planeID : \"\"\n };\n dispatchSetSpaceField(payload);\n };\n const debouncedSetActivePlane = pluridFunctionsReact.useDebouncedCallback((() => {\n if (stateActivePlaneID === planeID) {\n return;\n }\n const payload = {\n field: \"activePlaneID\",\n value: planeID\n };\n dispatchSetSpaceField(payload);\n }), 500);\n const computeIsolatePlaneOpacity = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return \"1\";\n }\n return \"0\";\n };\n const computeIsolatePointerEvents = () => {\n if (!treePlane.show || !stateIsolatePlane) {\n return;\n }\n if (stateIsolatePlane === planeID) {\n return;\n }\n return \"none\";\n };\n React.useEffect((() => {\n setActivePlane();\n }), [ planeID, mouseOver ]);\n React.useEffect((() => {\n const refreshPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.REFRESH_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === planeID) {\n refreshPlane();\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(refreshPlaneIndex);\n };\n }), [ remountKey, planeID ]);\n const key = planeID + \"-\" + remountKey;\n const focusAnchorID = planeID + pluridData.FOCUS_ANCHOR_SUFFIX;\n const renderWidth = \"100%\";\n const isolatePlaneOpacity = computeIsolatePlaneOpacity();\n const isolatePointerEvents = computeIsolatePointerEvents();\n const transform = pluridEngine.cleanTemplate(`\\n translateX(${treePlane.location.translateX}px)\\n translateY(${treePlane.location.translateY}px)\\n translateZ(${treePlane.location.translateZ}px)\\n rotateX(${treePlane.location.rotateX}deg)\\n rotateY(${treePlane.location.rotateY}deg)\\n `);\n const planeContentProperties = {};\n return React__default[\"default\"].createElement(StyledPluridPlane, {\n key: key,\n ref: planeRef,\n theme: stateGeneralTheme,\n planeControls: showPlaneControls,\n planeOpacity: planeOpacity,\n show: treePlane.show,\n id: planeID,\n style: {\n width: renderWidth,\n transform: transform,\n opacity: isolatePlaneOpacity,\n pointerEvents: isolatePointerEvents\n },\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseOver: () => debouncedSetActivePlane(),\n onMouseMove: () => debouncedSetActivePlane(),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n \"data-plurid-plane\": planeID,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE\n }, React__default[\"default\"].createElement(StyledFocusAnchor, {\n tabIndex: 0,\n id: focusAnchorID\n }), treePlane.show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, treePlane.parentPlaneID && React__default[\"default\"].createElement(ConnectedPluridPlaneBridge, {\n mouseOver: mouseOver\n }), showPlaneControls && React__default[\"default\"].createElement(ConnectedPluridPlaneControls, {\n plane: plane,\n treePlane: treePlane,\n parentTreePlane: parentTreePlane,\n mouseOver: mouseOver,\n refreshing: refreshing,\n refreshPlane: refreshPlane,\n isolatePlane: isolatePlane,\n closePlane: closePlane\n }), planeRenderError ? React__default[\"default\"].createElement(ErrorBoundary, {\n renderError: typeof planeRenderError !== \"boolean\" ? planeRenderError : undefined\n }, React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)) : React__default[\"default\"].createElement(PluridPlaneContent, Object.assign({}, planeContentProperties), children)));\n};\n\nconst mapStateToProps$e = state => ({\n stateTree: selectors.space.getTree(state),\n stateViewSize: selectors.space.getViewSize(state),\n stateActivePlaneID: selectors.space.getActivePlaneID(state),\n stateIsolatePlane: selectors.space.getIsolatePlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$e = dispatch => ({\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceTreePlane: payload => dispatch(actions.space.updateSpaceTreePlane(payload))\n});\n\nconst ConnectedPluridPlane = reactRedux.connect(mapStateToProps$e, mapDispatchToProps$e, null, {\n context: StateContext\n})(PluridPlane);\n\nconst isReactRenderable = component => {\n if (!component) {\n return false;\n }\n if (typeof component === \"string\" || component.url) {\n return false;\n }\n return true;\n};\n\nconst StyledPluridRoot = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n`;\n\nconst PluridRoot = properties => {\n const {plane: plane, stateTree: stateTree} = properties;\n const {location: location} = plane;\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar, planeContext: PlaneContext, planeContextValue: planeContextValue, customPlane: customPlane, matchedRoute: matchedRoute, defaultPubSub: defaultPubSub} = context;\n const CustomPluridPlane = customPlane;\n const computeChildrenPlanes = plane => {\n if (!plane.children || plane.children.length === 0) {\n return [];\n }\n const children = [];\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n plane.children.forEach((child => {\n if (!planesRegistry) {\n return;\n }\n const planeID = child.sourceID;\n const activePlane = planesRegistry.get(planeID);\n if (activePlane) {\n const renderPlane = () => {\n const Plane = activePlane.component;\n const pluridProperty = {\n plane: {\n value: activePlane.route.absolute,\n planeID: child.planeID,\n parentPlaneID: child.parentPlaneID,\n fragments: activePlane.route.fragments,\n parameters: activePlane.route.parameters,\n query: activePlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const properties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + child.planeID\n };\n const renderablePlane = isReactRenderable(Plane);\n const renderableCustomPlane = isReactRenderable(CustomPluridPlane);\n const keyBase = \"plurid-plane-child-\";\n const planeProperties = {\n key: keyBase + child.planeID,\n plane: activePlane,\n treePlane: child,\n planeID: child.planeID,\n location: child.location\n };\n if (CustomPluridPlane && renderableCustomPlane) {\n return React__default[\"default\"].createElement(CustomPluridPlane, Object.assign({}, planeProperties));\n }\n if (renderablePlane) {\n return React__default[\"default\"].createElement(ConnectedPluridPlane, Object.assign({}, planeProperties), !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, properties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, properties))));\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n };\n const plane = renderPlane();\n children.push(plane);\n }\n if (child.children) {\n const childrenPlanes = computeChildrenPlanes(child);\n if (childrenPlanes) {\n children.push(...childrenPlanes);\n }\n }\n }));\n return children;\n };\n const childrenPlanes = React.useMemo((() => computeChildrenPlanes(plane)), [ JSON.stringify(plane), JSON.stringify(stateTree) ]);\n const pluridPlaneID = plane.sourceID;\n if (!pluridPlaneID) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const pluridPlane = getRegisteredPlane(pluridPlaneID, planesRegistrar);\n if (!pluridPlane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Plane = pluridPlane.component;\n const pluridProperty = {\n plane: {\n value: pluridPlane.route.absolute,\n planeID: plane.planeID,\n parentPlaneID: plane.parentPlaneID,\n fragments: pluridPlane.route.fragments,\n parameters: pluridPlane.route.parameters,\n query: pluridPlane.route.query\n },\n route: {\n value: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.value) || \"\",\n parameters: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.parameters) || {},\n query: (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.match.query) || {}\n },\n pubSub: defaultPubSub\n };\n const planeProperties = {\n plurid: Object.assign({}, pluridProperty),\n key: \"plurid-plane-\" + plane.planeID\n };\n if (CustomPluridPlane) {\n if (typeof CustomPluridPlane !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(CustomPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }), childrenPlanes);\n }\n return React__default[\"default\"].createElement(StyledPluridRoot, {\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_ROOT\n }, React__default[\"default\"].createElement(ConnectedPluridPlane, {\n plane: pluridPlane,\n treePlane: plane,\n planeID: plane.planeID,\n location: location\n }, !PlaneContext ? React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)) : React__default[\"default\"].createElement(PlaneContext.Provider, {\n value: planeContextValue\n }, React__default[\"default\"].createElement(Plane, Object.assign({}, planeProperties)))), childrenPlanes);\n};\n\nconst mapStateToProperties$h = state => ({\n stateTree: selectors.space.getTree(state)\n});\n\nconst mapDispatchToProperties$h = dispatch => ({});\n\nconst ConnectedPluridRoot = reactRedux.connect(mapStateToProperties$h, mapDispatchToProperties$h, null, {\n context: StateContext\n})(PluridRoot);\n\nconst StyledPluridRoots = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n transform-origin: 0 0 0;\n`;\n\nconst PluridRoots = properties => {\n const {spaceTransformMatrix: spaceTransformMatrix, spaceAnimatedTransform: spaceAnimatedTransform, spaceTransformTime: spaceTransformTime, stateTree: stateTree, stateResolvedLayout: stateResolvedLayout} = properties;\n const width = \"100%\";\n const height = stateResolvedLayout ? window.innerHeight + \"px\" : 0;\n const transition = spaceAnimatedTransform ? `transform ${spaceTransformTime}ms ease-in-out` : \"initial\";\n return React__default[\"default\"].createElement(StyledPluridRoots, {\n style: {\n width: width,\n height: height,\n transition: transition,\n transform: spaceTransformMatrix\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 stateResolvedLayout: selectors.space.getResolvedLayout(state)\n});\n\nconst mapDispatchToProperties$g = dispatch => ({});\n\nconst ConnectedPluridRoots = reactRedux.connect(mapStateToProperties$g, mapDispatchToProperties$g, null, {\n context: StateContext\n})(PluridRoots);\n\nconst StyledPluridSpace = styled__default[\"default\"].div`\n position: relative;\n height: 100%;\n overflow: hidden;\n perspective: 2000px;\n outline: none;\n transition: opacity ${({fadeInTime: fadeInTime}) => fadeInTime}ms linear;\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\nconst PluridSpace = properties => {\n const {stateConfiguration: stateConfiguration, stateGeneralTheme: stateGeneralTheme, stateResolvedLayout: stateResolvedLayout} = 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 style: {\n opacity: stateResolvedLayout ? 1 : 0\n }\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 stateResolvedLayout: selectors.space.getResolvedLayout(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\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\nvar MENUS;\n\n(function(MENUS) {\n MENUS[\"NONE\"] = \"NONE\";\n MENUS[\"UNIVERSES\"] = \"UNIVERSES\";\n MENUS[\"MORE\"] = \"MORE\";\n})(MENUS || (MENUS = {}));\n\nconst VIEW_SIZE_WIDTH_LIMIT = 800;\n\nconst StyledToolbar = styled__default[\"default\"].div`\n bottom: ${({conceal: conceal, mouseIn: mouseIn}) => {\n if (!conceal) {\n return \"-5px\";\n }\n if (mouseIn) {\n return \"-5px\";\n }\n return \"-55px\";\n}};\n pointer-events: ${({showMenu: showMenu}) => {\n if (showMenu !== MENUS.NONE) {\n return \"all\";\n }\n return \"none\";\n}};\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n display: grid;\n position: absolute;\n left: 0;\n right: 0;\n height: 75px;\n z-index: 9999;\n transition: bottom 300ms ease-in-out;\n`;\n\nconst StyledToolbarButtons = styled__default[\"default\"].div`\n color: ${({theme: theme}) => theme.colorPrimary};\n background-color: ${({theme: theme, transparentUI: transparentUI}) => {\n if (transparentUI) {\n return theme.backgroundColorPrimaryAlpha;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n grid-template-columns: ${({showIcons: showIcons, showTransformButtons: showTransformButtons, documentsBased: documentsBased}) => {\n if (showIcons && !showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (!showTransformButtons) {\n if (documentsBased) {\n return \"repeat(6, minmax(min-content, 40px))\";\n } else {\n return \"repeat(5, minmax(min-content, 40px))\";\n }\n }\n if (documentsBased) {\n return \"40px 200px 200px 200px 40px 40px\";\n }\n return \"40px 200px 200px 200px 40px\";\n}};\n opacity: ${({opaque: opaque, mouseIn: mouseIn}) => {\n if (!opaque && !mouseIn) {\n return \"0.4\";\n }\n return \"1\";\n}};\n\n z-index: 9999;\n user-select: none;\n /* height: 75px; */\n display: grid;\n pointer-events: all;\n display: grid;\n align-items: center;\n justify-content: center;\n justify-items: center;\n border-radius: 22.5px;\n margin: 0 auto;\n margin-top: 10px;\n margin-bottom: 20px;\n padding: 0 22.5px;\n font-size: 12px;\n height: 45px;\n transition: opacity 300ms ease-in-out;\n\n :after {\n content: '';\n position: absolute;\n top: 55px;\n height: 20px;\n left: 0;\n right: 20%;\n }\n\n @media (max-width: 900px) {\n :after {\n right: 0;\n }\n }\n`;\n\nconst StyledToolbarButton = styled__default[\"default\"].div`\n padding: ${({button: button, showIcons: showIcons, showTransformButtons: showTransformButtons}) => {\n if (button) {\n return \"0\";\n }\n if (showIcons && !showTransformButtons) {\n return \"0\";\n }\n return \"0 7px\";\n}};\n background-color: ${({active: active, theme: theme}) => {\n if (active) {\n return theme.backgroundColorTertiary;\n }\n return \"transparent\";\n}};\n min-width: ${({button: button}) => {\n if (button) {\n return \"40px\";\n }\n return \"70px\";\n}};\n\n height: 45px;\n display: grid;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n\n @media (hover: hover) {\n :hover {\n background: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n }\n`;\n\nconst StyledIcon = styled__default[\"default\"].div`\n width: 40px;\n display: grid;\n place-content: center;\n\n /* svg {\n height: 15px;\n width: 15px;\n fill: white;\n } */\n`;\n\nconst StyledPluridMenuUniverses = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n max-height: 250px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => props.theme.backgroundColorSecondary};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n\n ul {\n padding: 0;\n list-style: none;\n }\n`;\n\nstyled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n\n margin-bottom: ${props => {\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: white;\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMenuUniversesScroll = styled__default[\"default\"].div`\n max-height: 210px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nstyled__default[\"default\"].li`\n margin: 10px 0;\n padding: 10px 20px;\n border-radius: 100px;\n\n cursor: ${props => {\n if (props.active) {\n return \"initial\";\n }\n return \"pointer\";\n}};\n background-color: ${props => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return \"\";\n}};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return \"\";\n}};\n\n :hover {\n background-color: ${props => props.theme.backgroundColorTertiary};\n box-shadow: ${props => {\n if (props.active) {\n return \"inset 0px -1px 6px 0px \" + props.theme.boxShadowUmbraColor;\n }\n return props.theme.boxShadowUmbra;\n}};\n }\n`;\n\nconst PluridMenuUniverses = properties => {\n const {interactionTheme: interactionTheme, activeUniverseID: activeUniverseID, dispatchSetActiveUniverse: dispatchSetActiveUniverse} = properties;\n return React__default[\"default\"].createElement(StyledPluridMenuUniverses, {\n theme: interactionTheme\n }, React__default[\"default\"].createElement(StyledPluridMenuUniversesScroll, null));\n};\n\nconst mapStateToProps$d = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n activeUniverseID: selectors.space.getActiveUniverseID(state)\n});\n\nconst mapDispatchToProps$d = dispatch => ({\n dispatchSetActiveUniverse: documentID => dispatch(actions.space.setActiveUniverse(documentID))\n});\n\nconst ConnectedPluridMenuUniverses = reactRedux.connect(mapStateToProps$d, mapDispatchToProps$d, null, {\n context: StateContext\n})(PluridMenuUniverses);\n\nconst StyledPluridDrawer = styled__default[\"default\"].div`\n h5 {\n font-size: 1rem;\n margin: 0;\n }\n\n margin-bottom: 2rem;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n\n padding-bottom: ${props => {\n if (props.transparentUI && props.toggled) {\n return \"0.5rem\";\n }\n return \"0\";\n}};\n background-color: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.backgroundColorSecondary;\n }\n return \"transparent\";\n}};\n box-shadow: ${props => {\n if (props.transparentUI && props.mouseOver) {\n return props.theme.boxShadowUmbra;\n }\n return \"none\";\n}};\n color: ${props => props.theme.colorPrimary};\n`;\n\nconst StyledPluridDrawerHeading = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n padding: 0.5rem;\n margin-bottom: 0.5rem;\n border-bottom: 1px solid transparent;\n text-align: left;\n\n :hover {\n border-bottom: 1px solid ${props => props.theme.colorPrimary};\n }\n`;\n\nconst StyledPluridDrawerItems = styled__default[\"default\"].div`\n`;\n\nconst {typography: {Heading: PluridHeading}} = pluridUiComponentsReact.universal;\n\nconst PluridDrawer = properties => {\n const {heading: heading, items: items, toggled: toggled, toggle: toggle, interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {transparentUI: transparentUI} = global;\n const [mouseOver, setMouseOver] = React.useState(false);\n return React__default[\"default\"].createElement(StyledPluridDrawer, {\n theme: interactionTheme,\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n transparentUI: transparentUI,\n mouseOver: mouseOver,\n toggled: toggled\n }, React__default[\"default\"].createElement(StyledPluridDrawerHeading, {\n theme: interactionTheme,\n onClick: () => toggle()\n }, React__default[\"default\"].createElement(PluridHeading, {\n theme: interactionTheme,\n type: \"h5\"\n }, heading)), toggled && React__default[\"default\"].createElement(StyledPluridDrawerItems, null, items));\n};\n\nconst mapStateToProps$c = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$c = dispatch => ({});\n\nconst ConnectedPluridDrawer = reactRedux.connect(mapStateToProps$c, mapDispatchToProps$c, null, {\n context: StateContext\n})(PluridDrawer);\n\nconst StyledPluridMoreMenu = styled__default[\"default\"].div`\n position: absolute;\n bottom: 75px;\n height: 280px;\n width: 380px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 22.5px;\n padding: 22px;\n font-size: 0.8rem;\n overflow: hidden;\n\n background-color: ${props => {\n if (props.transparentUI) {\n return props.theme.backgroundColorPrimaryAlpha;\n }\n return props.theme.backgroundColorSecondary;\n}};\n box-shadow: ${props => props.theme.boxShadowUmbra};\n`;\n\nconst StyledPluridMoreMenuItem = styled__default[\"default\"].div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n min-height: 30px;\n padding: 0 0.5rem;\n\n margin-bottom: ${props => {\n if (props.last) {\n return \"0\";\n }\n if (props.afterline) {\n return \"30px\";\n }\n return \"10px\";\n}};\n\n ${props => {\n if (props.afterline) {\n return `\\n ::after {\\n position: absolute;\\n content: '';\\n left: 0;\\n right: 0;\\n bottom: -15px;\\n height: 1px;\\n background-color: ${props.theme ? props.theme.colorPrimary : \"white\"};\\n }\\n `;\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridMoreMenuScroll = styled__default[\"default\"].div`\n height: 240px;\n overflow: scroll;\n padding: 0 5px;\n\n /* Hide Scrollbar */\n scrollbar-width: none; /* Firefox 64 */\n -ms-overflow-style: none; /* Internet Explorer 11 */\n ::-webkit-scrollbar { /** WebKit */\n display: none;\n }\n\n h5::first-child {\n margin-top: 0;\n }\n`;\n\nconst {inputs: {Dropdown: PluridDropdown$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreGlobal = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetConfigurationThemeGeneralAction: dispatchSetConfigurationThemeGeneralAction, dispatchSetConfigurationThemeInteractionAction: dispatchSetConfigurationThemeInteractionAction, dispatchSetConfigurationLanguage: dispatchSetConfigurationLanguage} = properties;\n const selectedTheme = configuration.global.theme;\n const [generalThemeName, setGeneralThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.general : selectedTheme);\n const [interactionThemeName, setInteractionThemeName] = React.useState(typeof selectedTheme === \"object\" ? selectedTheme.interaction : selectedTheme);\n const setGeneralTheme = selectedTheme => {\n dispatchSetGeneralTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeGeneralAction(selectedTheme);\n };\n const setInteractionTheme = selectedTheme => {\n dispatchSetInteractionTheme(themes__default[\"default\"][selectedTheme]);\n dispatchSetConfigurationThemeInteractionAction(selectedTheme);\n };\n const setLanguage = selectedLanguage => {\n dispatchSetConfigurationLanguage(selectedLanguage);\n };\n React.useEffect((() => {\n if (typeof selectedTheme === \"object\") {\n setGeneralThemeName(selectedTheme.general);\n setInteractionThemeName(selectedTheme.interaction);\n } else {\n setGeneralThemeName(selectedTheme);\n setInteractionThemeName(selectedTheme);\n }\n }), [ selectedTheme ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalGeneralTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof generalThemeName === \"string\" ? generalThemeName : \"\",\n atSelect: selection => setGeneralTheme(selection),\n theme: interactionTheme,\n filterable: true,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalInteractionTheme), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: Object.keys(themes__default[\"default\"]),\n selected: typeof interactionThemeName === \"string\" ? interactionThemeName : \"\",\n atSelect: selection => setInteractionTheme(selection),\n theme: interactionTheme,\n heightItems: 3,\n filterable: true,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerGlobalLanguage), React__default[\"default\"].createElement(PluridDropdown$1, {\n selectables: pluridData.internationalization.languages,\n selected: stateLanguage,\n atSelect: selection => setLanguage(selection),\n theme: interactionTheme,\n heightItems: 3,\n width: 90,\n style: {\n fontSize: \"0.8rem\"\n }\n })));\n};\n\nconst mapStateToProps$b = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$b = dispatch => ({\n dispatchSetConfigurationThemeGeneralAction: theme => dispatch(actions.configuration.setConfigurationThemeGeneral(theme)),\n dispatchSetConfigurationThemeInteractionAction: theme => dispatch(actions.configuration.setConfigurationThemeInteraction(theme)),\n dispatchSetConfigurationLanguage: language => dispatch(actions.configuration.setConfigurationLanguage(language)),\n dispatchSetGeneralTheme: theme => dispatch(actions.themes.setGeneralTheme(theme)),\n dispatchSetInteractionTheme: theme => dispatch(actions.themes.setInteractionTheme(theme))\n});\n\nconst ConnectedPluridMenuMoreGlobal = reactRedux.connect(mapStateToProps$b, mapDispatchToProps$b, null, {\n context: StateContext\n})(PluridMenuMoreGlobal);\n\nconst {inputs: {Switch: PluridSwitch$3}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTransform = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationSpaceTransformMultimode: dispatchToggleConfigurationSpaceTransformMultimode, dispatchSetConfigurationSpaceTransformTouch: dispatchSetConfigurationSpaceTransformTouch, dispatchSetConfigurationSpaceTransformLocks: dispatchSetConfigurationSpaceTransformLocks} = properties;\n const {transformMultimode: transformMultimode, transformLocks: transformLocks, transformTouch: transformTouch} = configuration.space;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformMultiModeTransform)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformMultimode,\n atChange: () => dispatchToggleConfigurationSpaceTransformMultimode(!transformMultimode),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowRotationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.rotationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"rotationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationX)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationX,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationX\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationY)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationY,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationY\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowTranslationZ)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.translationZ,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"translationZ\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformAllowScale)), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformLocks.scale,\n atChange: () => dispatchSetConfigurationSpaceTransformLocks(\"scale\"),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTransformTouchTransform), \": \", transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? \"pan\" : \"swipe\"), React__default[\"default\"].createElement(PluridSwitch$3, {\n theme: interactionTheme,\n checked: transformTouch === pluridData.TRANSFORM_TOUCHES.PAN,\n atChange: () => transformTouch === pluridData.TRANSFORM_TOUCHES.PAN ? dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.SWIPE) : dispatchSetConfigurationSpaceTransformTouch(pluridData.TRANSFORM_TOUCHES.PAN),\n level: 2\n })));\n};\n\nconst mapStateToProps$a = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$a = dispatch => ({\n dispatchToggleConfigurationSpaceTransformMultimode: multimode => dispatch(actions.configuration.toggleConfigurationSpaceTransformMultimode(multimode)),\n dispatchSetConfigurationSpaceTransformTouch: touch => dispatch(actions.configuration.setConfigurationSpaceTransformTouch(touch)),\n dispatchSetConfigurationSpaceTransformLocks: lock => dispatch(actions.configuration.setConfigurationSpaceTransformLocks(lock))\n});\n\nconst ConnectedPluridMenuMoreTransform = reactRedux.connect(mapStateToProps$a, mapDispatchToProps$a, null, {\n context: StateContext\n})(PluridMenuMoreTransform);\n\nconst {inputs: {Dropdown: PluridDropdown, Switch: PluridSwitch$2, Slider: PluridSlider$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreSpace = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration, dispatchSetConfigurationPlaneOpacity: dispatchSetConfigurationPlaneOpacity, dispatchToggleConfigurationSpaceTransparentUI: dispatchToggleConfigurationSpaceTransparentUI, dispatchToggleConfigurationSpaceShowTransformOrigin: dispatchToggleConfigurationSpaceShowTransformOrigin, dispatchSetConfigurationSpaceTransformOriginSize: dispatchSetConfigurationSpaceTransformOriginSize, dispatchSetConfigurationSpaceLayoutType: dispatchSetConfigurationSpaceLayoutType} = properties;\n const {global: global, space: space, elements: elements} = configuration;\n const {transparentUI: transparentUI, language: language} = global;\n const {layout: layout, transformOrigin: transformOrigin} = space;\n const layoutType = pluridData.layoutNames[layout.type];\n const {show: showTransformOrigin, size: transformOriginSize} = transformOrigin;\n const planeOpacity = elements.plane.opacity;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransparentUserInterface), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: transparentUI,\n atChange: () => dispatchToggleConfigurationSpaceTransparentUI(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceShowTransformOrigin), React__default[\"default\"].createElement(PluridSwitch$2, {\n checked: showTransformOrigin,\n atChange: () => dispatchToggleConfigurationSpaceShowTransformOrigin(),\n exclusive: true,\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceTransformOriginSize), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ \"small\", \"normal\", \"large\" ],\n selected: transformOriginSize.toLowerCase(),\n atSelect: selection => {\n const selected = selection.toUpperCase();\n if (selected === pluridData.SIZES.SMALL || selected === pluridData.SIZES.NORMAL || selected === pluridData.SIZES.LARGE) {\n dispatchSetConfigurationSpaceTransformOriginSize(selected);\n }\n },\n heightItems: 3,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpacePlaneOpacity), React__default[\"default\"].createElement(PluridSlider$1, {\n value: planeOpacity,\n max: 1,\n min: 0,\n step: .1,\n defaultValue: 100,\n atChange: value => dispatchSetConfigurationPlaneOpacity(value),\n thumbSize: \"large\",\n level: 2,\n theme: interactionTheme\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, pluridEngine.internatiolate(language, pluridData.internationalization.fields.toolbarDrawerSpaceLayoutType), React__default[\"default\"].createElement(PluridDropdown, {\n selectables: [ ...Object.values(pluridData.layoutNames) ],\n selected: layoutType,\n atSelect: selection => {\n const selected = selection.toUpperCase().replace(/\\s/g, \"_\");\n dispatchSetConfigurationSpaceLayoutType(selected);\n },\n heightItems: 3,\n theme: interactionTheme,\n width: 100\n })));\n};\n\nconst mapStateToProps$9 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$9 = dispatch => ({\n dispatchSetConfigurationPlaneOpacity: value => dispatch(actions.configuration.setConfigurationPlaneOpacity(value)),\n dispatchToggleConfigurationSpaceTransparentUI: () => dispatch(actions.configuration.toggleConfigurationSpaceTransparentUI()),\n dispatchToggleConfigurationSpaceShowTransformOrigin: () => dispatch(actions.configuration.toggleConfigurationShowTransformOrigin()),\n dispatchSetConfigurationSpaceTransformOriginSize: size => dispatch(actions.configuration.setConfigurationSpaceTransformOriginSize(size)),\n dispatchSetConfigurationSpaceLayoutType: layoutType => dispatch(actions.configuration.setConfigurationSpaceLayout(layoutType))\n});\n\nconst ConnectedPluridMenuMoreSpace = reactRedux.connect(mapStateToProps$9, mapDispatchToProps$9, null, {\n context: StateContext\n})(PluridMenuMoreSpace);\n\nconst {inputs: {Switch: PluridSwitch$1}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreToolbar = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationToolbarConceal: dispatchToggleConfigurationToolbarConceal, dispatchToggleConfigurationToolbarTransformIcons: dispatchToggleConfigurationToolbarTransformIcons, dispatchToggleConfigurationToolbarTransformButtons: dispatchToggleConfigurationToolbarTransformButtons, dispatchToggleConfigurationToolbarOpaque: dispatchToggleConfigurationToolbarOpaque} = properties;\n const {toolbar: toolbar} = configuration.elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const [viewSizeSmall, setViewSizeSmall] = React.useState(false);\n React.useEffect((() => {\n if (viewSize.width < 800) {\n setViewSizeSmall(true);\n } else {\n setViewSizeSmall(false);\n }\n }), [ viewSize.width ]);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationToolbarOpaque(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformIcons)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformIcons,\n atChange: () => dispatchToggleConfigurationToolbarTransformIcons(),\n exclusive: true,\n level: 2\n })), !viewSizeSmall && React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarShowTransformArrows)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: transformButtons,\n atChange: () => dispatchToggleConfigurationToolbarTransformButtons(),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerToolbarConcealToolbar)), React__default[\"default\"].createElement(PluridSwitch$1, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationToolbarConceal(),\n exclusive: true,\n level: 2\n })));\n};\n\nconst mapStateToProps$8 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps$8 = dispatch => ({\n dispatchToggleConfigurationToolbarConceal: () => dispatch(actions.configuration.toggleConfigurationToolbarConceal()),\n dispatchToggleConfigurationToolbarTransformIcons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformIcons()),\n dispatchToggleConfigurationToolbarTransformButtons: () => dispatch(actions.configuration.toggleConfigurationToolbarTransformButtons()),\n dispatchToggleConfigurationToolbarOpaque: () => dispatch(actions.configuration.toggleConfigurationToolbarOpaque())\n});\n\nconst ConnectedPluridMenuMoreToolbar = reactRedux.connect(mapStateToProps$8, mapDispatchToProps$8, null, {\n context: StateContext\n})(PluridMenuMoreToolbar);\n\nconst {inputs: {Switch: PluridSwitch}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreViewcube = properties => {\n const {stateLanguage: stateLanguage, interactionTheme: interactionTheme, configuration: configuration, dispatchToggleConfigurationViewcubeHide: dispatchToggleConfigurationViewcubeHide, dispatchToggleConfigurationViewcubeButtons: dispatchToggleConfigurationViewcubeButtons, dispatchToggleConfigurationViewcubeOpaque: dispatchToggleConfigurationViewcubeOpaque, dispatchToggleConfigurationViewcubeConceal: dispatchToggleConfigurationViewcubeConceal} = properties;\n const {viewcube: viewcube} = configuration.elements;\n const {show: show, buttons: buttons, opaque: opaque, conceal: conceal} = viewcube;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: !show ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: show,\n atChange: () => dispatchToggleConfigurationViewcubeHide(!show),\n exclusive: true,\n level: 2\n })), show && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeShowTransformButtons)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: buttons,\n atChange: () => dispatchToggleConfigurationViewcubeButtons(!buttons),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeAlwaysOpaque)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: opaque,\n atChange: () => dispatchToggleConfigurationViewcubeOpaque(!opaque),\n exclusive: true,\n level: 2\n })), React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n last: true\n }, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerViewcubeConcealViewcube)), React__default[\"default\"].createElement(PluridSwitch, {\n theme: interactionTheme,\n checked: conceal,\n atChange: () => dispatchToggleConfigurationViewcubeConceal(),\n exclusive: true,\n level: 2\n }))));\n};\n\nconst mapStateToProps$7 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$7 = dispatch => ({\n dispatchToggleConfigurationViewcubeHide: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeHide(toggle)),\n dispatchToggleConfigurationViewcubeButtons: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeButtons(toggle)),\n dispatchToggleConfigurationViewcubeOpaque: toggle => dispatch(actions.configuration.toggleConfigurationViewcubeOpaque(toggle)),\n dispatchToggleConfigurationViewcubeConceal: () => dispatch(actions.configuration.toggleConfigurationViewcubeConceal())\n});\n\nconst ConnectedPluridMenuMoreViewcube = reactRedux.connect(mapStateToProps$7, mapDispatchToProps$7, null, {\n context: StateContext\n})(PluridMenuMoreViewcube);\n\nconst {inputs: {Slider: PluridSlider}} = pluridUiComponentsReact.universal;\n\nconst PluridMenuMoreTechnical = properties => {\n const {stateLanguage: stateLanguage, stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, dispatchSetConfigurationSpaceCullingDistance: dispatchSetConfigurationSpaceCullingDistance} = properties;\n const {cullingDistance: cullingDistance} = stateConfiguration.space;\n const [localCullingDistance, setLocalCullingDistance] = React.useState(cullingDistance);\n const dispatchCullingDistanceUpdateFunction = value => {\n dispatchSetConfigurationSpaceCullingDistance(value);\n };\n const dispatchCullingDistanceUpdate = pluridFunctionsReact.useDebouncedCallback(dispatchCullingDistanceUpdateFunction, 300);\n const handleCullingDistance = value => {\n setLocalCullingDistance(value);\n dispatchCullingDistanceUpdate(value);\n };\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridMoreMenuItem, null, React__default[\"default\"].createElement(\"div\", null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarDrawerTechnicalCullingDistance)), React__default[\"default\"].createElement(PluridSlider, {\n theme: stateInteractionTheme,\n value: localCullingDistance,\n atChange: handleCullingDistance,\n min: 1e3,\n max: 5e3,\n defaultValue: 1500\n })));\n};\n\nconst mapStateToProps$6 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$6 = dispatch => ({\n dispatchSetConfigurationSpaceCullingDistance: value => dispatch(actions.configuration.setConfigurationSpaceCullingDistance(value))\n});\n\nconst ConnectedPluridMenuMoreTechnical = reactRedux.connect(mapStateToProps$6, mapDispatchToProps$6, null, {\n context: StateContext\n})(PluridMenuMoreTechnical);\n\nconst PluridMenuMoreShortcuts = properties => {\n const {interactionTheme: interactionTheme, configuration: configuration} = properties;\n const {global: global} = configuration;\n const {language: language} = global;\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridData.defaultShortcuts.map(((shortcut, index) => {\n const {type: type} = shortcut;\n const shortcutData = pluridData.shortcutsNames[type];\n const {name: name, internationalizedKey: internationalizedKey, key: key, modifier: modifier} = shortcutData;\n const modifierString = Array.isArray(modifier) ? modifier.reduce(((total, element) => total + \" + \" + element)) + \" +\" : typeof modifier === \"string\" ? modifier + \" +\" : \"\";\n const internationalizedName = pluridEngine.internatiolate(language, name);\n const keyAsAny = key;\n const keyName = internationalizedKey ? pluridEngine.internatiolate(language, keyAsAny) : key;\n const afterline = type === \"TURN_DOWN\" || type === \"TOGGLE_ROTATE\" || type === \"TOGGLE_TRANSLATE\" || type === \"TOGGLE_SCALE\";\n return React__default[\"default\"].createElement(StyledPluridMoreMenuItem, {\n key: name,\n theme: interactionTheme,\n afterline: afterline,\n last: index === pluridData.defaultShortcuts.length - 1 ? true : false\n }, React__default[\"default\"].createElement(\"div\", null, internationalizedName), React__default[\"default\"].createElement(\"div\", null, modifierString, \" \", keyName));\n })));\n};\n\nconst mapStateToProps$5 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$5 = dispatch => ({});\n\nconst ConnectedPluridMenuMoreShortcuts = reactRedux.connect(mapStateToProps$5, mapDispatchToProps$5, null, {\n context: StateContext\n})(PluridMenuMoreShortcuts);\n\nconst moreMenusRecord = {\n GLOBAL: {\n name: pluridData.internationalization.fields.toolbarDrawerGlobalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.GLOBAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreGlobal, null)\n },\n TRANSFORM: {\n name: pluridData.internationalization.fields.toolbarDrawerTransformTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TRANSFORM,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTransform, null)\n },\n SPACE: {\n name: pluridData.internationalization.fields.toolbarDrawerSpaceTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SPACE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreSpace, null)\n },\n TOOLBAR: {\n name: pluridData.internationalization.fields.toolbarDrawerToolbarTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TOOLBAR,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreToolbar, null)\n },\n VIEWCUBE: {\n name: pluridData.internationalization.fields.toolbarDrawerViewcubeTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.VIEWCUBE,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreViewcube, null)\n },\n TECHNICAL: {\n name: pluridData.internationalization.fields.toolbarDrawerTechnicalTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.TECHNICAL,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreTechnical, null)\n },\n SHORTCUTS: {\n name: pluridData.internationalization.fields.toolbarDrawerShortcutsTitle,\n drawer: pluridData.TOOLBAR_DRAWERS.SHORTCUTS,\n component: React__default[\"default\"].createElement(ConnectedPluridMenuMoreShortcuts, null)\n }\n};\n\nconst moreMenus = Object.values(moreMenusRecord);\n\nconst resolveMenus = drawers => {\n if (drawers.length === 0 || drawers.includes(\"ALL\")) {\n return moreMenus;\n }\n const resolvedMenus = [];\n for (const drawer of drawers) {\n const menu = moreMenusRecord[drawer];\n resolvedMenus.push(menu);\n }\n return resolvedMenus;\n};\n\nconst PluridMoreMenu = properties => {\n const {stateLanguage: stateLanguage, stateInteractionTheme: stateInteractionTheme, stateConfiguration: stateConfiguration, stateToolbarMenuScrollPosition: stateToolbarMenuScrollPosition, dispatchToggleConfigurationToolbarToggleDrawer: dispatchToggleConfigurationToolbarToggleDrawer, dispatchSetUIToolbarScrollPosition: dispatchSetUIToolbarScrollPosition} = properties;\n const {global: global, elements: elements} = stateConfiguration;\n const {transparentUI: transparentUI} = global;\n const {toolbar: toolbar} = elements;\n const {drawers: drawers, toggledDrawers: toggledDrawers} = toolbar;\n const menus = resolveMenus(drawers);\n const moreMenuScrollElement = React.useRef(null);\n const handleWheel = pluridFunctionsReact.useDebouncedCallback((_event => {\n if (moreMenuScrollElement.current) {\n const scrollPosition = moreMenuScrollElement.current.scrollTop;\n dispatchSetUIToolbarScrollPosition(scrollPosition);\n }\n }), 100);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.addEventListener(\"wheel\", handleWheel);\n }\n return () => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.removeEventListener(\"wheel\", handleWheel);\n }\n };\n }), [ moreMenuScrollElement.current ]);\n React.useEffect((() => {\n if (moreMenuScrollElement.current) {\n moreMenuScrollElement.current.scrollTop = stateToolbarMenuScrollPosition;\n }\n }), [ stateToolbarMenuScrollPosition, moreMenuScrollElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridMoreMenu, {\n theme: stateInteractionTheme,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledPluridMoreMenuScroll, {\n ref: moreMenuScrollElement\n }, menus.map((moreMenu => {\n const {name: name, drawer: drawer, component: component} = moreMenu;\n const internationalizedName = pluridEngine.internatiolate(stateLanguage, name);\n return React__default[\"default\"].createElement(ConnectedPluridDrawer, {\n key: name,\n heading: internationalizedName,\n items: React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, component),\n toggled: toggledDrawers.includes(\"ALL\") || toggledDrawers.includes(drawer),\n toggle: () => dispatchToggleConfigurationToolbarToggleDrawer(drawer)\n });\n }))));\n};\n\nconst mapStateToProperties$d = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateToolbarMenuScrollPosition: selectors.ui.getToolbarScrollPosition(state)\n});\n\nconst mapDispatchToProperties$d = dispatch => ({\n dispatchToggleConfigurationToolbarToggleDrawer: drawer => dispatch(actions.configuration.toggleConfigurationToolbarToggleDrawer(drawer)),\n dispatchSetUIToolbarScrollPosition: value => dispatch(actions.ui.setUIToolbarScrollPosition(value))\n});\n\nconst ConnectedPluridMoreMenu = reactRedux.connect(mapStateToProperties$d, mapDispatchToProperties$d, null, {\n context: StateContext\n})(PluridMoreMenu);\n\nconst StyledPluridToolbarRotate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst StyledPluridTransformArrow = styled__default[\"default\"].div`\n user-select: none;\n cursor: pointer;\n border-radius: 50px;\n width: 25px;\n height: 25px;\n display: grid;\n place-content: center;\n padding: 2px;\n\n background-color: ${({pressed: pressed, theme: theme}) => {\n if (pressed) {\n return theme.backgroundColorTertiary;\n }\n return \"initial\";\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst arrowSigns = {\n left: \"◀\",\n right: \"▶\",\n up: \"▲\",\n down: \"▼\"\n};\n\nconst events = \"tap press pressup\";\n\nconst PluridTransformArrow = properties => {\n const {direction: direction, transform: transform, interactionTheme: interactionTheme} = properties;\n const arrowSign = arrowSigns[direction] || \"\";\n const pressingInterval = React.useRef(null);\n const arrowElement = React.useRef(null);\n const [pressed, setPressed] = React.useState(false);\n const handleTouch = event => {\n const eventData = {\n altKey: event.srcEvent.altKey\n };\n switch (event.type) {\n case \"tap\":\n transform(eventData);\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n break;\n\n case \"press\":\n setPressed(true);\n pressingInterval.current = setInterval((() => {\n transform(eventData);\n }), 30);\n break;\n\n case \"pressup\":\n setPressed(false);\n if (pressingInterval.current) {\n clearInterval(pressingInterval.current);\n }\n break;\n }\n };\n const handleMouseLeave = () => {\n if (pressingInterval.current) {\n setPressed(false);\n clearInterval(pressingInterval.current);\n }\n };\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const loadTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n touch = new Hammer(arrowElement.current);\n touch.on(events, handleTouch);\n }));\n loadTouch();\n return () => {\n if (touch) {\n touch.off(events, handleTouch);\n }\n };\n }), [ arrowElement.current ]);\n return React__default[\"default\"].createElement(StyledPluridTransformArrow, {\n ref: arrowElement,\n theme: interactionTheme,\n pressed: pressed,\n onMouseLeave: () => handleMouseLeave()\n }, arrowSign);\n};\n\nconst mapStateToProps$4 = state => ({\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$4 = dispatch => ({});\n\nconst ConnectedPluridTransformArrow = reactRedux.connect(mapStateToProps$4, mapDispatchToProps$4, null, {\n context: StateContext\n})(PluridTransformArrow);\n\nconst PluridToolbarRotate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, rotateUp: rotateUp, rotateDown: rotateDown, rotateLeft: rotateLeft, rotateRight: rotateRight} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarRotate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => rotateRight()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => rotateUp()\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.ROTATION),\n active: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconRotate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformRotate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => rotateDown()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => rotateLeft()\n })));\n};\n\nconst mapStateToProps$3 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$3 = dispatch => ({\n rotateUp: () => dispatch(actions.space.rotateUp()),\n rotateDown: () => dispatch(actions.space.rotateDown()),\n rotateLeft: () => dispatch(actions.space.rotateLeft()),\n rotateRight: () => dispatch(actions.space.rotateRight())\n});\n\nconst ConnectedPluridToolbarRotate = reactRedux.connect(mapStateToProps$3, mapDispatchToProps$3, null, {\n context: StateContext\n})(PluridToolbarRotate);\n\nconst StyledPluridToolbarScale = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 60px 30px\";\n}};\n`;\n\nconst PluridToolbarScale = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, scaleUp: scaleUp, scaleDown: scaleDown} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarScale, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: () => scaleUp()\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.SCALE),\n active: transformMode === pluridData.TRANSFORM_MODES.SCALE,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconScale, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformScale))), showTransformButtons && React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: () => scaleDown()\n }));\n};\n\nconst mapStateToProps$2 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProps$2 = dispatch => ({\n scaleUp: () => dispatch(actions.space.scaleUp()),\n scaleDown: () => dispatch(actions.space.scaleDown())\n});\n\nconst ConnectedPluridToolbarScale = reactRedux.connect(mapStateToProps$2, mapDispatchToProps$2, null, {\n context: StateContext\n})(PluridToolbarScale);\n\nconst StyledPluridToolbarTranslate = styled__default[\"default\"].div`\n display: grid;\n align-items: center;\n justify-items: center;\n grid-template-columns: ${props => {\n if (!props.showTransformButtons) {\n return \"1fr\";\n }\n return \"30px 30px 60px 30px 30px\";\n}};\n`;\n\nconst PluridToolbarTranslate = properties => {\n const {showTransformButtons: showTransformButtons, showIcons: showIcons, transformMode: transformMode, toggleTransform: toggleTransform, stateLanguage: stateLanguage, interactionTheme: interactionTheme, translateUp: translateUp, translateDown: translateDown, translateLeft: translateLeft, translateRight: translateRight, translateIn: translateIn, translateOut: translateOut} = properties;\n return React__default[\"default\"].createElement(StyledPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons\n }, showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"left\",\n transform: () => translateLeft()\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"up\",\n transform: event => {\n if (event.altKey) {\n translateOut();\n } else {\n translateUp();\n }\n }\n })), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: interactionTheme,\n onClick: () => toggleTransform(pluridData.TRANSFORM_MODES.TRANSLATION),\n active: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n button: showIcons\n }, showIcons ? React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconTranslate, null)) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.toolbarTransformTranslate))), showTransformButtons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"down\",\n transform: event => {\n if (event.altKey) {\n translateIn();\n } else {\n translateDown();\n }\n }\n }), React__default[\"default\"].createElement(ConnectedPluridTransformArrow, {\n direction: \"right\",\n transform: () => translateRight()\n })));\n};\n\nconst mapStateToProperties$c = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n interactionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$c = dispatch => ({\n translateUp: () => dispatch(actions.space.translateUp()),\n translateDown: () => dispatch(actions.space.translateDown()),\n translateLeft: () => dispatch(actions.space.translateLeft()),\n translateRight: () => dispatch(actions.space.translateRight()),\n translateIn: () => dispatch(actions.space.translateIn()),\n translateOut: () => dispatch(actions.space.translateOut())\n});\n\nconst ConnectedPluridToolbarTranslate = reactRedux.connect(mapStateToProperties$c, mapDispatchToProperties$c, null, {\n context: StateContext\n})(PluridToolbarTranslate);\n\nconst PluridToolbar = properties => {\n const {theme: theme, configuration: configuration, viewSize: viewSize, dispatchToggleConfigurationSpaceFirstPerson: dispatchToggleConfigurationSpaceFirstPerson, dispatchSetConfigurationSpaceTransformMode: dispatchSetConfigurationSpaceTransformMode} = properties;\n const {global: global, elements: elements, space: space} = configuration;\n const {transparentUI: transparentUI} = global;\n const {firstPerson: firstPerson, transformMode: transformMode, fadeInTime: fadeInTime} = space;\n const {toolbar: toolbar} = elements;\n const {conceal: conceal, opaque: opaque, transformIcons: transformIcons, transformButtons: transformButtons} = toolbar;\n const showToolbar = toolbar.show;\n const menuTimeout = React.useRef(null);\n const [mouseIn, setMouseIn] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(MENUS.NONE);\n const [showIcons, setShowIcons] = React.useState(transformIcons);\n const [showTransformButtons, setShowTransformButtons] = React.useState(transformButtons);\n const [isMounted, setIsMounted] = React.useState(false);\n const toggleTransform = TYPE => {\n if (showMenu !== MENUS.NONE) {\n setShowMenu(MENUS.NONE);\n }\n dispatchSetConfigurationSpaceTransformMode(TYPE);\n };\n const handleShowMenu = menu => {\n if (showMenu === menu) {\n setShowMenu(MENUS.NONE);\n } else {\n dispatchSetConfigurationSpaceTransformMode(pluridData.TRANSFORM_MODES.ALL);\n setShowMenu(menu);\n }\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n React.useEffect((() => {\n if (viewSize.width < VIEW_SIZE_WIDTH_LIMIT) {\n if (transformButtons) {\n setShowTransformButtons(false);\n }\n }\n if (viewSize.width > VIEW_SIZE_WIDTH_LIMIT) {\n setShowTransformButtons(transformButtons);\n }\n }), [ viewSize.width ]);\n React.useEffect((() => {\n setShowIcons(transformIcons);\n setShowTransformButtons(transformButtons);\n }), [ transformIcons, transformButtons ]);\n React.useEffect((() => {\n if (mouseIn && menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n if (!mouseIn) {\n menuTimeout.current = setTimeout((() => {\n setShowMenu(MENUS.NONE);\n }), 400);\n }\n return () => {\n if (menuTimeout.current) {\n clearTimeout(menuTimeout.current);\n }\n };\n }), [ mouseIn ]);\n if (!showToolbar) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledToolbar, {\n onMouseEnter: () => setMouseIn(true),\n onMouseLeave: () => setMouseIn(false),\n mouseIn: mouseIn,\n conceal: conceal,\n showMenu: showMenu,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_TOOLBAR\n }, React__default[\"default\"].createElement(StyledToolbarButtons, {\n theme: theme,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons,\n documentsBased: false,\n mouseIn: mouseIn,\n opaque: opaque,\n transparentUI: transparentUI\n }, React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => dispatchToggleConfigurationSpaceFirstPerson(undefined),\n active: firstPerson,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconFirstPerson, null))), React__default[\"default\"].createElement(ConnectedPluridToolbarRotate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarScale, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(ConnectedPluridToolbarTranslate, {\n showTransformButtons: showTransformButtons,\n showIcons: showIcons,\n transformMode: transformMode,\n toggleTransform: toggleTransform\n }), React__default[\"default\"].createElement(StyledToolbarButton, {\n theme: theme,\n onClick: () => handleShowMenu(MENUS.MORE),\n active: showMenu === MENUS.MORE,\n button: true,\n showIcons: showIcons,\n showTransformButtons: showTransformButtons\n }, React__default[\"default\"].createElement(StyledIcon, null, React__default[\"default\"].createElement(pluridIconsReact.PluridIconMore, null)))), showMenu === MENUS.UNIVERSES && React__default[\"default\"].createElement(ConnectedPluridMenuUniverses, null), showMenu === MENUS.MORE && React__default[\"default\"].createElement(ConnectedPluridMoreMenu, null));\n};\n\nconst mapStateToProperties$b = state => ({\n configuration: selectors.configuration.getConfiguration(state),\n theme: selectors.themes.getInteractionTheme(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$b = dispatch => ({\n dispatchToggleConfigurationSpaceFirstPerson: () => dispatch(actions.configuration.toggleConfigurationSpaceFirstPerson()),\n dispatchSetConfigurationSpaceTransformMode: mode => dispatch(actions.configuration.setConfigurationSpaceTransformMode(mode))\n});\n\nconst ConnectedPluridToolbar = reactRedux.connect(mapStateToProperties$b, mapDispatchToProperties$b, null, {\n context: StateContext\n})(PluridToolbar);\n\nconst StyledPluridViewcube = styled__default[\"default\"].div`\n position: absolute;\n @media (max-width: 800px) {\n top: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n }\n bottom: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-90px\";\n }\n return \"0\";\n}};\n right: ${({conceal: conceal, mouseOver: mouseOver}) => {\n if (conceal && !mouseOver) {\n return \"-100px\";\n }\n return \"0\";\n}};\n position: absolute;\n user-select: none;\n transition: all 300ms ease-in-out;\n z-index: 9998;\n height: 175px;\n display: grid;\n grid-template-areas: \"PVScale PVScale PVScale PVScale\"\n \"PVEmptyOne PVRotateUp PVEmptyTwo PVTranslateY\"\n \"PVRotateLeft PVModel PVRotateRight PVTranslateY\"\n \"PVEmptyThree PVRotateDown PVFitview PVTranslateY\"\n \"PVTranslateX PVTranslateX PVTranslateX PVTranslateX\";\n grid-template-rows: 20px 15px 105px 15px 20px;\n grid-template-columns: 15px 100px 15px 20px;\n\n opacity: ${({fadeInTime: fadeInTime}) => {\n if (fadeInTime) {\n return \"0\";\n }\n return \"1\";\n}};\n animation: ${({fadeInTime: fadeInTime, isMounted: isMounted}) => {\n if (isMounted && fadeInTime) {\n return fadeInAnimation(fadeInTime);\n }\n return \"\";\n}};\n\n :hover {\n opacity: 1;\n }\n`;\n\nconst StyledPluridViewcubeArrow = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n\n /* TODO\n * Themed color\n */\n color: white;\n`;\n\nconst StyledPluridViewcubeArrowIcon = styled__default[\"default\"].div`\n user-select: none;\n font-size: 0.6rem;\n width: 1.2rem;\n height: 1.2rem;\n border-radius: 0.6rem;\n display: grid;\n place-content: center;\n cursor: pointer;\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst StyledFitView = styled__default[\"default\"].div`\n grid-area: PVFitview;\n display: grid;\n place-content: center;\n cursor: pointer;\n user-select: none;\n\n svg {\n height: 0.8rem;\n width: 0.8rem;\n fill: white;\n }\n`;\n\nconst StyledPluridViewcubeFace = styled__default[\"default\"].div`\n font-size: 0.6rem;\n position: absolute;\n height: 50px;\n width: 50px;\n pointer-events: none;\n display: grid;\n transform-style: preserve-3d;\n grid-template-areas: \"PVFTopLeft PVFTopCenter PVFTopRight\"\n \"PVFMiddleLeft PVFMiddleCenter PVFMiddleRight\"\n \"PVFBottomLeft PVFBottomCenter PVFBottomRight\";\n grid-template-rows: 10px 30px 10px;\n grid-template-columns: 10px 30px 10px;\n box-sizing: content-box;\n transition: all 300ms linear;\n\n border: 1px solid ${({mouseOver: mouseOver, theme: theme}) => {\n if (mouseOver) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n box-shadow: ${({face: face, theme: theme}) => {\n if (face === \"base\") {\n return \"0px 0px 12px 2px \" + theme.boxShadowPenumbraColor;\n }\n return \"\";\n}};\n opacity: ${({opaque: opaque, mouseOver: mouseOver}) => {\n if (!opaque) {\n if (mouseOver) {\n return \"0.8\";\n }\n if (!mouseOver) {\n return \"0.4\";\n }\n }\n return \"1\";\n}};\n transform: ${({face: face}) => {\n switch (face) {\n case \"front\":\n return \"translateZ(25px) rotateY(0deg)\";\n\n case \"back\":\n return \"translateZ(-25px) rotateY(-180deg)\";\n\n case \"left\":\n return \"translateX(-25px) rotateY(-90deg)\";\n\n case \"right\":\n return \"translateX(25px) rotateY(90deg)\";\n\n case \"top\":\n return \"translateY(-25px) rotateX(90deg)\";\n\n case \"base\":\n return \"translateY(25px) rotateX(-90deg)\";\n }\n return \"\";\n}};\n`;\n\nconst StyledPluridViewcubeFaceZone = styled__default[\"default\"].div`\n display: grid;\n place-content: center;\n cursor: pointer;\n pointer-events: all;\n\n grid-area: ${({type: type}) => `PVF${type}`};\n color: ${({theme: theme, hovered: hovered}) => {\n if (hovered) {\n return theme.colorPrimary;\n }\n return theme.colorSecondary;\n}};\n background-color: ${({theme: theme, transparentUI: transparentUI, hovered: hovered, active: active}) => {\n if (transparentUI && !hovered) {\n return theme.backgroundColorPrimaryAlpha;\n }\n if (active) {\n return theme.backgroundColorTertiary;\n }\n if (hovered) {\n return theme.backgroundColorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n border: 1px solid ${({theme: theme, transparentUI: transparentUI, hovered: hovered}) => {\n if (transparentUI && !hovered) {\n return \"transparent\";\n }\n if (hovered) {\n return theme.colorTertiary;\n }\n return theme.backgroundColorSecondary;\n}};\n\n :hover {\n background-color: ${({theme: theme}) => theme.backgroundColorTertiary};\n }\n`;\n\nconst faceTypes = {\n topLeft: \"TopLeft\",\n topCenter: \"TopCenter\",\n topRight: \"TopRight\",\n middleLeft: \"MiddleLeft\",\n middleCenter: \"MiddleCenter\",\n middleRight: \"MiddleRight\",\n bottomLeft: \"BottomLeft\",\n bottomCenter: \"BottomCenter\",\n bottomRight: \"BottomRight\"\n};\n\nconst zoneCodes = {\n frontTopLeft: \"A1\",\n frontTopCenter: \"A2\",\n frontTopRight: \"A3\",\n frontMiddleLeft: \"B1\",\n frontMiddleCenter: \"B2\",\n frontMiddleRight: \"B3\",\n frontBottomLeft: \"C1\",\n frontBottomCenter: \"C2\",\n frontBottomRight: \"C3\",\n rightTopLeft: \"A3\",\n rightTopCenter: \"A4\",\n rightTopRight: \"A5\",\n rightMiddleLeft: \"B3\",\n rightMiddleCenter: \"B4\",\n rightMiddleRight: \"B5\",\n rightBottomLeft: \"C3\",\n rightBottomCenter: \"C4\",\n rightBottomRight: \"C5\",\n backTopLeft: \"A5\",\n backTopCenter: \"A6\",\n backTopRight: \"A7\",\n backMiddleLeft: \"B5\",\n backMiddleCenter: \"B6\",\n backMiddleRight: \"B7\",\n backBottomLeft: \"C5\",\n backBottomCenter: \"C6\",\n backBottomRight: \"C7\",\n leftTopLeft: \"A7\",\n leftTopCenter: \"A8\",\n leftTopRight: \"A1\",\n leftMiddleLeft: \"B7\",\n leftMiddleCenter: \"B8\",\n leftMiddleRight: \"B1\",\n leftBottomLeft: \"C7\",\n leftBottomCenter: \"C8\",\n leftBottomRight: \"C1\",\n topTopLeft: \"A7\",\n topTopCenter: \"A6\",\n topTopRight: \"A5\",\n topMiddleLeft: \"A8\",\n topMiddleCenter: \"D1\",\n topMiddleRight: \"A4\",\n topBottomLeft: \"A1\",\n topBottomCenter: \"A2\",\n topBottomRight: \"A3\",\n baseTopLeft: \"C1\",\n baseTopCenter: \"C2\",\n baseTopRight: \"C3\",\n baseMiddleLeft: \"C8\",\n baseMiddleCenter: \"E1\",\n baseMiddleRight: \"C4\",\n baseBottomLeft: \"C7\",\n baseBottomCenter: \"C6\",\n baseBottomRight: \"C5\"\n};\n\nconst faceTransform = {\n A1: {\n rotateX: -45,\n rotateY: 45\n },\n A2: {\n rotateX: -45,\n rotateY: 0\n },\n A3: {\n rotateX: -45,\n rotateY: -45\n },\n B1: {\n rotateX: 0,\n rotateY: 45\n },\n B2: {\n rotateX: 0,\n rotateY: 0\n },\n B3: {\n rotateX: 0,\n rotateY: -45\n },\n C1: {\n rotateX: 45,\n rotateY: 45\n },\n C2: {\n rotateX: 45,\n rotateY: 0\n },\n C3: {\n rotateX: 45,\n rotateY: -45\n },\n A4: {\n rotateX: -45,\n rotateY: 270.1\n },\n A5: {\n rotateX: -45,\n rotateY: 225\n },\n B4: {\n rotateX: 0,\n rotateY: 270.1\n },\n B5: {\n rotateX: 0,\n rotateY: 225\n },\n C4: {\n rotateX: 45,\n rotateY: 270.1\n },\n C5: {\n rotateX: 45,\n rotateY: 225\n },\n A6: {\n rotateX: -45,\n rotateY: 180\n },\n A7: {\n rotateX: -45,\n rotateY: 135\n },\n B6: {\n rotateX: 0,\n rotateY: 180.1\n },\n B7: {\n rotateX: 0,\n rotateY: 135\n },\n C6: {\n rotateX: 45,\n rotateY: 180.1\n },\n C7: {\n rotateX: 45,\n rotateY: 135\n },\n A8: {\n rotateX: -45,\n rotateY: 90.1\n },\n B8: {\n rotateX: 0,\n rotateY: 90.1\n },\n C8: {\n rotateX: 45,\n rotateY: 90.1\n },\n D1: {\n rotateX: -90.1,\n rotateY: 0\n },\n E1: {\n rotateX: 90.1,\n rotateY: 0\n }\n};\n\nconst PluridViewcubeFace = properties => {\n const {face: face, faceText: faceText, mouseOver: mouseOver, hoveredZone: hoveredZone, setHoveredZone: setHoveredZone, activeZone: activeZone, setActiveZone: setActiveZone, generalTheme: generalTheme, interactionTheme: interactionTheme, configuration: configuration, dispatchRotateX: dispatchRotateX, dispatchRotateY: dispatchRotateY, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform} = properties;\n const {global: global, elements: elements} = configuration;\n const {transparentUI: transparentUI} = global;\n const opaqueFace = elements.viewcube.opaque;\n const handleClick = type => {\n const faceType = `${face}${type}`;\n const zoneCode = zoneCodes[faceType];\n const transform = faceTransform[zoneCode];\n setActiveZone(zoneCode);\n dispatchSetAnimatedTransform(true);\n dispatchRotateX(transform.rotateX);\n dispatchRotateY(transform.rotateY);\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), 450);\n };\n return React__default[\"default\"].createElement(StyledPluridViewcubeFace, {\n theme: generalTheme,\n face: face,\n opaque: opaqueFace,\n mouseOver: mouseOver\n }, React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topLeft}`],\n onClick: () => handleClick(faceTypes.topLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topCenter}`],\n onClick: () => handleClick(faceTypes.topCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.topRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.topRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.topRight}`],\n onClick: () => handleClick(faceTypes.topRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.topRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleLeft}`],\n onClick: () => handleClick(faceTypes.middleLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleCenter}`],\n onClick: () => handleClick(faceTypes.middleCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleCenter}`]),\n transparentUI: transparentUI\n }, faceText), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.middleRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.middleRight}`],\n onClick: () => handleClick(faceTypes.middleRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.middleRight}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomLeft,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomLeft}`],\n onClick: () => handleClick(faceTypes.bottomLeft),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomLeft}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomCenter,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomCenter}`],\n onClick: () => handleClick(faceTypes.bottomCenter),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomCenter}`]),\n transparentUI: transparentUI\n }), React__default[\"default\"].createElement(StyledPluridViewcubeFaceZone, {\n theme: interactionTheme,\n type: faceTypes.bottomRight,\n active: activeZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n hovered: hoveredZone === zoneCodes[`${face}${faceTypes.bottomRight}`],\n onClick: () => handleClick(faceTypes.bottomRight),\n onMouseEnter: () => setHoveredZone(zoneCodes[`${face}${faceTypes.bottomRight}`]),\n transparentUI: transparentUI\n }));\n};\n\nconst mapStateToProperties$a = state => ({\n generalTheme: selectors.themes.getGeneralTheme(state),\n interactionTheme: selectors.themes.getInteractionTheme(state),\n configuration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProperties$a = dispatch => ({\n dispatchRotateX: angleX => dispatch(actions.space.rotateX(angleX)),\n dispatchRotateY: angleY => dispatch(actions.space.rotateY(angleY)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated))\n});\n\nconst ConnectedPluridViewcubeFace = reactRedux.connect(mapStateToProperties$a, mapDispatchToProperties$a, null, {\n context: StateContext\n})(PluridViewcubeFace);\n\nconst StyledPluridViewcubeModel = styled__default[\"default\"].div`\n grid-area: PVModel;\n margin-left: -7px;\n margin-top: 5px;\n`;\n\nconst StyledPluridViewcubeModelContainer = styled__default[\"default\"].div`\n perspective: 2000px;\n perspective-origin: 50% 50%;\n`;\n\nconst StyledPluridViewcubeModelCube = styled__default[\"default\"].div`\n transform-style: preserve-3d;\n width: 50px;\n height: 50px;\n`;\n\nconst {matrixArrayToCSSMatrix: matrixArrayToCSSMatrix, rotateMatrix: rotateMatrix, multiplyArrayOfMatrices: multiplyArrayOfMatrices, scaleMatrix: scaleMatrix, translateMatrix: translateMatrix} = pluridEngine.interaction.matrix;\n\nconst {degToRad: degToRad} = pluridEngine.interaction.quaternion;\n\nconst PluridViewcubeModel = properties => {\n const {mouseOver: mouseOver, stateLanguage: stateLanguage, spaceRotationX: spaceRotationX, spaceRotationY: spaceRotationY, stateAnimatedTransform: stateAnimatedTransform, stateTransformTime: stateTransformTime} = properties;\n const [hoveredZone, setHoveredZone] = React.useState(\"\");\n const [activeZone, setActiveZone] = React.useState(\"\");\n const handleMouseLeave = () => {\n setHoveredZone(\"\");\n };\n const computeTransform = () => {\n const offsets = {\n x: 32,\n y: 23,\n z: 0\n };\n const transformOrigins = {\n x: 0,\n y: 0,\n z: 0\n };\n const scale = 1;\n const rotationMatrix = rotateMatrix(degToRad(-spaceRotationX), degToRad(-spaceRotationY));\n const translationMatrix = translateMatrix(offsets.x, offsets.y, offsets.z);\n const scalationMatrix = scaleMatrix(scale);\n const transformMatrix = multiplyArrayOfMatrices([ translationMatrix, multiplyArrayOfMatrices([ translateMatrix(transformOrigins.x, transformOrigins.y, transformOrigins.z), rotationMatrix, translateMatrix(-transformOrigins.x, -transformOrigins.y, -transformOrigins.z) ]), scalationMatrix ]);\n const transform = matrixArrayToCSSMatrix(transformMatrix);\n return transform;\n };\n React.useEffect((() => {\n if (!hoveredZone) {\n setActiveZone(\"\");\n }\n }), [ spaceRotationX, spaceRotationY ]);\n const transform = computeTransform();\n return React__default[\"default\"].createElement(StyledPluridViewcubeModel, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelContainer, null, React__default[\"default\"].createElement(StyledPluridViewcubeModelCube, {\n suppressHydrationWarning: true,\n style: {\n transform: transform,\n transition: mouseOver || stateAnimatedTransform ? `transform ${stateTransformTime}ms ease-in-out` : \"\"\n },\n onMouseLeave: () => handleMouseLeave()\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"front\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeFront),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"back\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBack),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"left\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeLeft),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"right\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeRight),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"top\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeTop),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }), React__default[\"default\"].createElement(ConnectedPluridViewcubeFace, {\n face: \"base\",\n faceText: pluridEngine.internatiolate(stateLanguage, pluridData.internationalization.fields.viewcubeBase),\n mouseOver: mouseOver,\n hoveredZone: hoveredZone,\n setHoveredZone: setHoveredZone,\n activeZone: activeZone,\n setActiveZone: setActiveZone\n }))));\n};\n\nconst mapStateToProperties$9 = state => ({\n stateLanguage: selectors.configuration.getConfiguration(state).global.language,\n spaceRotationX: selectors.space.getRotationX(state),\n spaceRotationY: selectors.space.getRotationY(state),\n stateAnimatedTransform: selectors.space.getAnimatedTransform(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$9 = dispatch => ({});\n\nconst ConnectedPluridViewcubeModel = reactRedux.connect(mapStateToProperties$9, mapDispatchToProperties$9, null, {\n context: StateContext\n})(PluridViewcubeModel);\n\nconst PluridViewcube = properties => {\n const {stateConfiguration: stateConfiguration, stateInteractionTheme: stateInteractionTheme, stateTransformTime: stateTransformTime, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateYWith: dispatchRotateYWith, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSpaceResetTransform: dispatchSpaceResetTransform} = properties;\n const {elements: elements, space: space} = stateConfiguration;\n const {viewcube: viewcube} = elements;\n const {buttons: buttons, conceal: conceal} = viewcube;\n const {fadeInTime: fadeInTime} = space;\n const showViewcube = viewcube.show;\n const [mouseOver, setMouseOver] = React.useState(false);\n const [isMounted, setIsMounted] = React.useState(false);\n const animatedRotate = (type, value) => {\n dispatchSetAnimatedTransform(true);\n switch (type) {\n case \"rotateX\":\n dispatchRotateXWith(value);\n break;\n\n case \"rotateY\":\n dispatchRotateYWith(value);\n break;\n }\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n const animatedReset = event => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n dispatchSetAnimatedTransform(true);\n dispatchSpaceResetTransform();\n setTimeout((() => {\n dispatchSetAnimatedTransform(false);\n }), stateTransformTime);\n };\n React.useEffect((() => {\n setIsMounted(true);\n }), []);\n if (!showViewcube) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridViewcube, {\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onMouseMove: () => !mouseOver ? setMouseOver(true) : null,\n conceal: conceal,\n mouseOver: mouseOver,\n isMounted: isMounted,\n fadeInTime: fadeInTime,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEWCUBE\n }, React__default[\"default\"].createElement(ConnectedPluridViewcubeModel, {\n mouseOver: mouseOver\n }), mouseOver && buttons && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n style: {\n gridArea: \"PVRotateUp\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", -90.1)\n }, \"▲\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateDown\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateX\", 90.1)\n }, \"▼\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateLeft\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", 90.1)\n }, \"◀\")), React__default[\"default\"].createElement(StyledPluridViewcubeArrow, {\n theme: stateInteractionTheme,\n style: {\n gridArea: \"PVRotateRight\"\n }\n }, React__default[\"default\"].createElement(StyledPluridViewcubeArrowIcon, {\n theme: stateInteractionTheme,\n onClick: () => animatedRotate(\"rotateY\", -90.1)\n }, \"▶\")), React__default[\"default\"].createElement(StyledFitView, {\n onClick: animatedReset\n }, React__default[\"default\"].createElement(pluridIconsReact.PluridIconGlobal, null))));\n};\n\nconst mapStateToProperties$8 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state),\n stateTransformTime: selectors.space.getTransformTime(state)\n});\n\nconst mapDispatchToProperties$8 = dispatch => ({\n dispatchRotateXWith: value => dispatch(actions.space.rotateXWith(value)),\n dispatchRotateYWith: value => dispatch(actions.space.rotateYWith(value)),\n dispatchSetAnimatedTransform: animated => dispatch(actions.space.setAnimatedTransform(animated)),\n dispatchSpaceResetTransform: () => dispatch(actions.space.spaceResetTransform())\n});\n\nconst ConnectedPluridViewcube = reactRedux.connect(mapStateToProperties$8, mapDispatchToProperties$8, null, {\n context: StateContext\n})(PluridViewcube);\n\nconst PluridViewContainer = _properties => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(ConnectedPluridSpace, null), React__default[\"default\"].createElement(ConnectedOrigin, null), React__default[\"default\"].createElement(ConnectedPluridToolbar, null), React__default[\"default\"].createElement(ConnectedPluridViewcube, null));\n\nconst PluridView = properties => {\n const {planesRegistrar: planesRegistrar, customPlane: customPlane, planeContext: planeContext, planeContextValue: planeContextValue, pubsub: pubsub, planeNotFound: planeNotFound, planeRenderError: planeRenderError, matchedRoute: matchedRoute, hostname: hostname, state: state, stateConfiguration: stateConfiguration, stateResolvedLayout: stateResolvedLayout, stateTransform: stateTransform, stateSpaceView: stateSpaceView, stateTree: stateTree, stateGeneralTheme: stateGeneralTheme, dispatch: dispatch, dispatchSetConfiguration: dispatchSetConfiguration, dispatchSetGeneralTheme: dispatchSetGeneralTheme, dispatchSetInteractionTheme: dispatchSetInteractionTheme, dispatchSetSpaceField: dispatchSetSpaceField, dispatchSetSpaceLocation: dispatchSetSpaceLocation, dispatchSetAnimatedTransform: dispatchSetAnimatedTransform, dispatchSetTransformTime: dispatchSetTransformTime, dispatchSetTree: dispatchSetTree, dispatchRotateXWith: dispatchRotateXWith, dispatchRotateX: dispatchRotateX, dispatchRotateYWith: dispatchRotateYWith, dispatchRotateY: dispatchRotateY, dispatchTranslateXWith: dispatchTranslateXWith, dispatchTranslateYWith: dispatchTranslateYWith, dispatchTranslateZWith: dispatchTranslateZWith, dispatchScaleUpWith: dispatchScaleUpWith, dispatchScaleDownWith: dispatchScaleDownWith, dispatchSpaceSetViewSize: dispatchSpaceSetViewSize, dispatchSpaceSetView: dispatchSpaceSetView} = properties;\n const viewElement = React.useRef(null);\n const scrollTimeout = React.useRef();\n const [pluridPubSub, setPluridPubSub] = React.useState(pubsub ? [ pubsub ] : [ new PluridPubSub__default[\"default\"] ]);\n const [preventOverscroll, setPreventOverscroll] = React.useState(false);\n const handlePreventOverscroll = event => {\n if (event.shiftKey || event.altKey || event.metaKey || event.ctrlKey) {\n setPreventOverscroll(true);\n }\n clearTimeout(scrollTimeout.current);\n scrollTimeout.current = setTimeout((() => {\n setPreventOverscroll(false);\n }), pluridData.PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT);\n };\n const resolveLayout = () => {\n const layout = true;\n treeUpdate(stateSpaceView, stateConfiguration, layout);\n };\n const shortcutsCallback = React.useCallback((event => {\n const {transformLocks: transformLocks} = stateConfiguration.space;\n handleGlobalShortcuts(dispatch, state, pluridPubSub[0], event, stateConfiguration.space.firstPerson, transformLocks);\n }), [ JSON.stringify(state), stateConfiguration.space.firstPerson, stateConfiguration.space.transformLocks, dispatch ]);\n const wheelCallback = React.useCallback((event => {\n handlePreventOverscroll(event);\n const {transformMode: transformMode, transformLocks: transformLocks} = stateConfiguration.space;\n const transformModes = {\n rotation: transformMode === pluridData.TRANSFORM_MODES.ROTATION,\n translation: transformMode === pluridData.TRANSFORM_MODES.TRANSLATION,\n scale: transformMode === pluridData.TRANSFORM_MODES.SCALE\n };\n handleGlobalWheel(dispatch, event, transformModes, transformLocks);\n }), [ dispatch, stateConfiguration.space.transformMode, stateConfiguration.space.transformLocks ]);\n const treeUpdate = (view, configuration = stateConfiguration, layout) => {\n const planes = getRegisteredPlanes(planesRegistrar);\n const spaceTree = new pluridEngine.space.tree.Tree({\n planes: planes,\n configuration: configuration,\n view: view,\n layout: layout\n }, hostname);\n const computedTree = spaceTree.compute();\n for (const statePlane of stateTree) {\n for (const [index, computedPlane] of computedTree.entries()) {\n if (statePlane.route === computedPlane.route && pluridFunctions.objects.equals(statePlane.location, computedPlane.location)) {\n computedPlane.planeID = statePlane.planeID;\n if (statePlane.children) {\n computedTree[index].children = statePlane.children;\n }\n }\n }\n }\n dispatchSetTree(computedTree);\n };\n const treeUpdateCallback = React.useCallback((() => {\n treeUpdate(stateSpaceView, stateConfiguration);\n }), [ hostname, stateSpaceView, stateConfiguration, JSON.stringify(stateTree) ]);\n const handlePubSubSubscribe = pubsub => {\n const subscriptions = [ {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n callback: data => {\n if (data.internal) {\n return;\n }\n const computedConfiguration = pluridEngine.general.configuration.merge(data, stateConfiguration);\n if (typeof computedConfiguration.global.theme === \"object\") {\n if (typeof computedConfiguration.global.theme.general === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme.general]);\n } else {\n dispatchSetGeneralTheme(computedConfiguration.global.theme.general);\n }\n if (typeof computedConfiguration.global.theme.interaction === \"string\") {\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme.interaction]);\n } else {\n dispatchSetInteractionTheme(computedConfiguration.global.theme.interaction);\n }\n } else if (typeof computedConfiguration.global.theme === \"string\") {\n dispatchSetGeneralTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n dispatchSetInteractionTheme(themes__default[\"default\"][computedConfiguration.global.theme]);\n }\n dispatchSetConfiguration(computedConfiguration);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n callback: data => {\n const {value: value, internal: internal} = data;\n if (internal) {\n return;\n }\n dispatchSetSpaceLocation(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ANIMATED_TRANSFORM,\n callback: data => {\n const {value: value} = data;\n dispatchSetAnimatedTransform(value.active);\n if (value.time) {\n dispatchSetTransformTime(value.time);\n } else {\n dispatchSetTransformTime(450);\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_X_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateX(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchRotateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_ROTATE_Y_TO,\n callback: data => {\n const {value: value} = data;\n dispatchRotateY(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateXWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_X_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateYWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Y_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_WITH,\n callback: data => {\n const {value: value} = data;\n dispatchTranslateZWith(value);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSLATE_Z_TO,\n callback: data => {}\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_ADD_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = [ ...stateSpaceView, plane ];\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_SET_PLANES,\n callback: data => {\n const {view: view} = data;\n dispatchSpaceSetView([ ...view ]);\n treeUpdate(view);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.VIEW_REMOVE_PLANE,\n callback: data => {\n const {plane: plane} = data;\n const updatedView = stateSpaceView.filter((view => {\n if (typeof view === \"string\") {\n return view === plane;\n }\n return true;\n }));\n dispatchSpaceSetView(updatedView);\n treeUpdate(updatedView);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_PLANE,\n callback: data => {\n const {id: id} = data;\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, id);\n navigateToPluridPlane(dispatch, plane);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.ISOLATE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (typeof id !== \"string\") {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: id\n });\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n const treePlane = stateTree.find((plane => plane.planeID === state.space.lastClosedPlane));\n if (treePlane) {\n const forceShow = true;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n const treePlane = stateTree.find((plane => plane.planeID === id));\n if (treePlane) {\n const forceShow = false;\n const {updatedTree: updatedTree} = pluridEngine.space.tree.logic.togglePlaneFromTree(stateTree, treePlane.planeID, forceShow);\n dispatchSetTree(updatedTree);\n setTimeout((() => {\n dispatchSetTree(updatedTree);\n }), 50);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.PREVIOUS_ROOT,\n callback: () => {\n focusPreviousRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NEXT_ROOT,\n callback: () => {\n focusNextRoot(dispatch, state);\n }\n }, {\n topic: pluridData.PLURID_PUBSUB_TOPIC.NAVIGATE_TO_ROOT,\n callback: data => {\n const index = data.index;\n if (typeof index !== \"undefined\") {\n focusRootIndex(dispatch, state, index);\n return;\n }\n const id = data.id;\n focusRootID(dispatch, state, id);\n }\n } ];\n const indexes = [];\n for (const subscription of subscriptions) {\n const index = pubsub.subscribe(subscription);\n indexes.push(index);\n }\n return () => {\n for (const index of indexes) {\n pubsub.unsubscribe(index);\n }\n };\n };\n const handlePubSubPublish = pubsub => {\n const internalTransform = {\n value: Object.assign({}, stateTransform),\n internal: true\n };\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.SPACE_TRANSFORM,\n data: internalTransform\n });\n pubsub.publish({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CONFIGURATION,\n data: Object.assign(Object.assign({}, stateConfiguration), {\n internal: true\n })\n });\n };\n const registerPubSub = pubsub => {\n const pluridPubSubs = [ ...pluridPubSub, pubsub ];\n setPluridPubSub(pluridPubSubs);\n };\n const handleSwipe = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n useAnimatedTransform(dispatch);\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * distance);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(velocity * 60);\n }\n if (translationMode) {\n dispatchTranslateXWith(distance);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * distance);\n } else {\n dispatchTranslateYWith(-1 * distance);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(velocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(velocity * 60);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(distance);\n } else {\n dispatchTranslateYWith(distance);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(velocity);\n }\n break;\n }\n };\n const handlePan = event => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode === pluridData.TRANSFORM_MODES.ALL) {\n return;\n }\n const {velocity: velocity, distance: distance, direction: direction} = event;\n const {altKey: altKey} = event.srcEvent;\n const rotationMode = transformMode === pluridData.TRANSFORM_MODES.ROTATION;\n const translationMode = transformMode === pluridData.TRANSFORM_MODES.TRANSLATION;\n const scalationMode = transformMode === pluridData.TRANSFORM_MODES.SCALE;\n const rotationVelocity = velocity * 20;\n const translationVelocity = distance / 5;\n const scaleVelocity = velocity / 4;\n switch (direction) {\n case 2:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(-1 * translationVelocity);\n }\n break;\n\n case 4:\n if (rotationMode) {\n dispatchRotateYWith(rotationVelocity);\n }\n if (translationMode) {\n dispatchTranslateXWith(translationVelocity);\n }\n break;\n\n case 8:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(-1 * translationVelocity);\n } else {\n dispatchTranslateYWith(-1 * translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleUpWith(scaleVelocity);\n }\n break;\n\n case 16:\n if (rotationMode) {\n dispatchRotateXWith(rotationVelocity);\n }\n if (translationMode) {\n if (altKey) {\n dispatchTranslateZWith(translationVelocity);\n } else {\n dispatchTranslateYWith(translationVelocity);\n }\n }\n if (scalationMode) {\n dispatchScaleDownWith(scaleVelocity);\n }\n break;\n }\n };\n const handlePinch = (event, type) => {\n const {transformMode: transformMode} = stateConfiguration.space;\n if (transformMode !== \"TRANSLATION\") {\n return;\n }\n const direction = type === \"in\" ? 1 : -1;\n const velocity = direction * 20;\n dispatchTranslateZWith(velocity);\n };\n const handlePinchin = event => {\n handlePinch(event, \"in\");\n };\n const handlePinchout = event => {\n handlePinch(event, \"out\");\n };\n React.useEffect((() => {\n if (viewElement.current) {\n viewElement.current.addEventListener(\"keydown\", shortcutsCallback, {\n passive: false\n });\n viewElement.current.addEventListener(\"wheel\", wheelCallback, {\n passive: false\n });\n }\n return () => {\n if (viewElement.current) {\n viewElement.current.removeEventListener(\"keydown\", shortcutsCallback);\n viewElement.current.removeEventListener(\"wheel\", wheelCallback);\n }\n };\n }), [ JSON.stringify(state), viewElement.current, stateConfiguration.space.transformMode, stateConfiguration.space.firstPerson ]);\n React.useEffect((() => {\n const handleResize = pluridFunctions.meta.debounce((() => {\n if (viewElement && viewElement.current) {\n const width = viewElement.current.offsetWidth;\n const height = viewElement.current.offsetHeight;\n dispatchSpaceSetViewSize({\n width: width,\n height: height\n });\n }\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }), []);\n React.useEffect((() => {\n window.addEventListener(\"resize\", treeUpdateCallback);\n return () => {\n window.removeEventListener(\"resize\", treeUpdateCallback);\n };\n }), [ stateSpaceView, stateConfiguration, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n if (typeof window === \"undefined\") {\n return;\n }\n let touch;\n const handleTouch = () => __awaiter(void 0, void 0, void 0, (function*() {\n const HammerImport = yield loadHammer();\n const Hammer = HammerImport.default;\n const {transformTouch: transformTouch} = stateConfiguration.space;\n delete Hammer.defaults.cssProps.userSelect;\n delete Hammer.defaults.cssProps.userDrag;\n delete Hammer.defaults.cssProps.tapHighlightColor;\n delete Hammer.defaults.cssProps.touchSelect;\n if (!viewElement.current) {\n return;\n }\n touch = new Hammer(viewElement.current);\n touch.get(\"pan\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"swipe\").set({\n direction: Hammer.DIRECTION_ALL\n });\n touch.get(\"pinch\").set({\n enable: true\n });\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.on(\"pan\", handlePan);\n } else {\n touch.on(\"swipe\", handleSwipe);\n }\n touch.on(\"pinchin\", handlePinchin);\n touch.on(\"pinchout\", handlePinchout);\n }));\n handleTouch();\n return () => {\n if (!touch) {\n return;\n }\n const {transformTouch: transformTouch} = stateConfiguration.space;\n if (transformTouch === pluridData.TRANSFORM_TOUCHES.PAN) {\n touch.off(\"pan\", handlePan);\n } else {\n touch.off(\"swipe\", handleSwipe);\n }\n touch.off(\"pinchin\", handlePinchin);\n touch.off(\"pinchout\", handlePinchout);\n };\n }), [ viewElement.current, stateConfiguration.space.transformTouch, stateConfiguration.space.transformMode ]);\n React.useEffect((() => {\n const handleGamepadConnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n const handleGamepadDisconnect = event => {\n const gamepad = navigator.getGamepads()[event.gamepad.index];\n if (!gamepad) {\n return;\n }\n };\n window.addEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.addEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n return () => {\n window.removeEventListener(\"gamepadconnected\", handleGamepadConnect);\n window.removeEventListener(\"gamepaddisconnected\", handleGamepadDisconnect);\n };\n }), []);\n React.useEffect((() => {\n const unsubscribers = [];\n for (const pubsub of pluridPubSub) {\n const unsubscriber = handlePubSubSubscribe(pubsub);\n unsubscribers.push(unsubscriber);\n }\n return () => {\n for (const unsubscriber of unsubscribers) {\n unsubscriber();\n }\n };\n }), [ state.space.lastClosedPlane, pluridPubSub.length, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, stateConfiguration, stateTransform ]);\n React.useEffect((() => {\n treeUpdateCallback();\n }), []);\n React.useEffect((() => {\n if (!stateResolvedLayout) {\n resolveLayout();\n dispatchSetSpaceField({\n field: \"resolvedLayout\",\n value: true\n });\n }\n }), [ stateResolvedLayout ]);\n const pluridContext = {\n planesRegistrar: planesRegistrar,\n planeContext: planeContext,\n planeContextValue: planeContextValue,\n customPlane: customPlane,\n planeNotFound: planeNotFound,\n planeRenderError: planeRenderError,\n matchedRoute: matchedRoute,\n hostname: hostname,\n defaultPubSub: pluridPubSub[0],\n registerPubSub: registerPubSub\n };\n return React__default[\"default\"].createElement(StyledView, {\n ref: viewElement,\n tabIndex: 0,\n transformMode: stateConfiguration.space.transformMode,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_VIEW\n }, React__default[\"default\"].createElement(GlobalStyle, {\n theme: stateGeneralTheme,\n preventOverscroll: preventOverscroll\n }), React__default[\"default\"].createElement(Context.Provider, {\n value: pluridContext\n }, stateSpaceView.length !== 0 ? React__default[\"default\"].createElement(PluridViewContainer, null) : React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null)));\n};\n\nconst mapStateToProperties$7 = state => ({\n state: state,\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateTransform: selectors.space.getTransform(state),\n stateResolvedLayout: selectors.space.getResolvedLayout(state),\n stateTree: selectors.space.getTree(state),\n stateSpaceLoading: selectors.space.getLoading(state),\n stateSpaceView: selectors.space.getView(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state)\n});\n\nconst mapDispatchToProperties$7 = dispatch => ({\n dispatch: dispatch,\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload)),\n dispatchSetConfigurationMicro: () => dispatch(actions.configuration.setConfigurationMicro()),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchSpaceSetViewSize: payload => dispatch(actions.space.setViewSize(payload)),\n dispatchSetSpaceLoading: payload => dispatch(actions.space.setSpaceLoading(payload)),\n dispatchSetAnimatedTransform: payload => dispatch(actions.space.setAnimatedTransform(payload)),\n dispatchSetTransformTime: payload => dispatch(actions.space.setTransformTime(payload)),\n dispatchSetSpaceLocation: payload => dispatch(actions.space.setSpaceLocation(payload)),\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetGeneralTheme: payload => dispatch(actions.themes.setGeneralTheme(payload)),\n dispatchSetInteractionTheme: payload => dispatch(actions.themes.setInteractionTheme(payload)),\n dispatchRotateX: payload => dispatch(actions.space.rotateX(payload)),\n dispatchRotateXWith: payload => dispatch(actions.space.rotateXWith(payload)),\n dispatchRotateY: payload => dispatch(actions.space.rotateY(payload)),\n dispatchRotateYWith: payload => dispatch(actions.space.rotateYWith(payload)),\n dispatchTranslateXWith: payload => dispatch(actions.space.translateXWith(payload)),\n dispatchTranslateYWith: payload => dispatch(actions.space.translateYWith(payload)),\n dispatchTranslateZWith: payload => dispatch(actions.space.translateZWith(payload)),\n dispatchScaleUpWith: payload => dispatch(actions.space.scaleUpWith(payload)),\n dispatchScaleDownWith: payload => dispatch(actions.space.scaleDownWith(payload)),\n dispatchSpaceSetView: payload => dispatch(actions.space.spaceSetView(payload))\n});\n\nconst ConnectedPluridView = reactRedux.connect(mapStateToProperties$7, mapDispatchToProperties$7, null, {\n context: StateContext\n})(PluridView);\n\nclass PluridApplication extends React.Component {\n constructor(properties, context) {\n super(properties);\n this.storeID = properties.id || \"default\";\n this.context = context;\n this.prepare();\n this.store = store(this.computeStore());\n this.subscribeStore();\n }\n componentDidUpdate() {\n const updatedStore = this.computeStore();\n this.store.dispatch({\n type: \"SET_STATE\",\n payload: updatedStore\n });\n }\n componentWillUnmount() {\n if (this.storeUnubscriber) {\n this.storeUnubscriber();\n }\n }\n render() {\n return React__default[\"default\"].createElement(reactRedux.Provider, {\n store: this.store,\n context: StateContext\n }, React__default[\"default\"].createElement(ConnectedPluridView, Object.assign({}, this.props, {\n planesRegistrar: this.planesRegistrar\n })));\n }\n prepare() {\n this.planesRegistrar = typeof window === \"undefined\" && !this.props.planesRegistrar ? new PluridPlanesRegistrar(this.props.planes, this.props.hostname) : this.props.planesRegistrar;\n }\n computeStore() {\n const {view: view, planes: planes, configuration: configuration, precomputedState: precomputedState, useLocalStorage: useLocalStorage, hostname: hostname, space: space} = this.props;\n registerPlanes(planes, this.planesRegistrar, hostname);\n const currentState = this.store ? this.store.getState() : undefined;\n const localState = pluridEngine.state.local.load(this.storeID, useLocalStorage);\n const contextState = undefined;\n const store = pluridEngine.state.compute(view, configuration, this.planesRegistrar, currentState, localState, precomputedState, contextState, hostname);\n return store;\n }\n subscribeStore() {\n if (!this.store) {\n return;\n }\n if (typeof localStorage === \"undefined\") {\n return;\n }\n if (!this.props.useLocalStorage) {\n return;\n }\n this.storeUnubscriber = this.store.subscribe((() => {\n const state = this.store.getState();\n const stateData = JSON.stringify(state);\n localStorage.setItem(\"pluridState-\" + this.storeID, stateData);\n }));\n }\n}\n\nPluridApplication.contextType = PluridContext;\n\nconst StyledSpaces = styled__default[\"default\"].div`\n scroll-snap-type: ${properties => {\n const {alignment: alignment, snapType: snapType} = properties;\n if (snapType === \"none\") {\n return \"none\";\n }\n return alignment + \" \" + snapType;\n}};\n\n flex-direction: ${properties => {\n const {alignment: alignment} = properties;\n if (alignment === \"x\") {\n return \"row\";\n }\n return \"column\";\n}};\n\n outline: none;\n overflow: auto;\n /* display: flex; */\n height: 100vh;\n height: -webkit-fill-available;\n width: 100vw;\n`;\n\nconst collectApplicationsFromPath = (isoMatch, protocol, host, globals) => __awaiter(void 0, void 0, void 0, (function*() {\n const path = {\n planes: [],\n spaces: [],\n view: [],\n value: \"\"\n };\n let defaultConfiguration;\n if (isoMatch.kind === \"Route\") {\n let routeData = isoMatch.data;\n defaultConfiguration = routeData.defaultConfiguration;\n if (isoMatch.data.resolver) {\n routeData = yield isoMatch.data.resolver(globals);\n }\n path.planes = routeData.planes || [];\n path.spaces = routeData.spaces || [];\n path.view = routeData.view || [];\n path.value = isoMatch.data.value || \"\";\n }\n const {planes: planes, spaces: spaces, view: view} = path;\n const plurids = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.clusters) {\n for (const cluster of universe.clusters) {\n for (const plane of cluster.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n cluster.value === pluridData.PLURID_ROUTE_DEFAULT_CLUSTER_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_CLUSTER : pluridEngine.utilities.cleanPathElement(cluster.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n }\n }\n }\n }\n const pluridApplication = {\n planes: planes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {value: value, component: component} = planeData;\n path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n pluridEngine.utilities.cleanPathElement(planeData.value);\n const pluridPlane = {\n component: component,\n route: value\n };\n pluridPlanes.push(pluridPlane);\n }\n const pluridApplication = {\n planes: pluridPlanes,\n view: view,\n configuration: defaultConfiguration\n };\n plurids.push(pluridApplication);\n }\n return plurids;\n}));\n\nconst gatherPluridPlanes = (routes, planes) => {\n const pluridPlanes = [];\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planeRoute = planeData.link ? planeData.link : planeData.value.startsWith(\"/\") ? planeData.value : route.value + \"/\" + planeData.value;\n const pluridPlane = {\n route: planeRoute,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n if (route.spaces) ;\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const pluridPlane = {\n route: planeData.value,\n component: planeData.component\n };\n pluridPlanes.push(pluridPlane);\n }\n }\n return pluridPlanes;\n};\n\nconst renderMultispace = (matchedRoute, hostname = \"origin\") => {\n var _a, _b, _c, _d, _e, _f;\n if (matchedRoute.kind !== \"Route\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const protocol = \"http\";\n const host = hostname;\n const {match: match, data: path} = matchedRoute;\n const {parameters: parameters, query: query} = match;\n const pluridRouteProperty = {\n value: match.value,\n parameters: parameters,\n query: query\n };\n const {exterior: exterior, planes: planes, spaces: spaces, slotted: slotted} = matchedRoute.data;\n const multispaceAlignment = ((_a = path.multispace) === null || _a === void 0 ? void 0 : _a.alignment) || \"y\";\n const multispaceSnapType = ((_b = path.multispace) === null || _b === void 0 ? void 0 : _b.snapType) || \"mandatory\";\n let PluridExterior = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n if (isReactRenderable(exterior)) {\n PluridExterior = exterior;\n }\n let PluridSpaces = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n const spacesArray = [];\n if (spaces) {\n for (const space of spaces) {\n const planes = [];\n const view = [];\n if (space.planes) {\n for (const plane of space.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n if (space.universes) {\n for (const universe of space.universes) {\n if (universe.planes) {\n for (const plane of universe.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = space.value === pluridData.PLURID_ROUTE_DEFAULT_SPACE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_SPACE : pluridEngine.utilities.cleanPathElement(space.value);\n const universeName = universe.value === pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE : pluridEngine.utilities.cleanPathElement(universe.value);\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n planes.push(pluridPlane);\n view.push(fullPath);\n }\n }\n }\n }\n const pluridPlanesRegistrar = new PluridPlanesRegistrar([], \"localhost:63000\");\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: planes,\n view: view,\n configuration: space.configuration,\n planesRegistrar: pluridPlanesRegistrar,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n }\n if (planes) {\n const pluridPlanes = [];\n const view = [];\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const {component: component} = planeData;\n const pathName = path.value === pluridData.PLURID_ROUTE_DEFAULT_PATH_VALUE ? pluridData.PLURID_ROUTE_DEFAULT_PATH : pluridEngine.utilities.cleanPathElement(path.value);\n const spaceName = pluridData.PLURID_ROUTE_DEFAULT_SPACE;\n const universeName = pluridData.PLURID_ROUTE_DEFAULT_UNIVERSE;\n const clusterName = pluridData.PLURID_ROUTE_DEFAULT_CLUSTER;\n const planeName = pluridEngine.utilities.cleanPathElement(planeData.value);\n const pathDivisions = [ protocol, host, pathName, spaceName, universeName, clusterName, planeName ];\n const fullPath = pathDivisions.join(pluridData.PLURID_ROUTE_SEPARATOR);\n const pluridPlane = {\n component: component,\n route: fullPath\n };\n pluridPlanes.push(pluridPlane);\n if (!path.view) {\n view.push(fullPath);\n } else {\n if (path.view.includes(planeData.value)) {\n view.push(fullPath);\n }\n }\n }\n const App = React__default[\"default\"].createElement(PluridApplication, {\n key: pluridFunctions.uuid.generate(),\n id: path.value,\n planes: pluridPlanes,\n view: view,\n configuration: path.defaultConfiguration,\n hostname: hostname\n });\n spacesArray.push(App);\n }\n let MultispaceHeader;\n let MultispaceFooter;\n if (isReactRenderable((_c = path.multispace) === null || _c === void 0 ? void 0 : _c.header)) {\n MultispaceHeader = (_d = path.multispace) === null || _d === void 0 ? void 0 : _d.header;\n }\n if (isReactRenderable((_e = path.multispace) === null || _e === void 0 ? void 0 : _e.footer)) {\n MultispaceFooter = (_f = path.multispace) === null || _f === void 0 ? void 0 : _f.footer;\n }\n PluridSpaces = () => React__default[\"default\"].createElement(StyledSpaces, {\n alignment: multispaceAlignment,\n snapType: multispaceSnapType,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_MULTISPACE\n }, MultispaceHeader && React__default[\"default\"].createElement(MultispaceHeader, {\n plurid: pluridRouteProperty\n }), spacesArray, MultispaceFooter && React__default[\"default\"].createElement(MultispaceFooter, {\n plurid: pluridRouteProperty\n }));\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, exterior && React__default[\"default\"].createElement(PluridExterior, {\n spaces: slotted ? spacesArray : undefined,\n plurid: pluridRouteProperty\n }), (spaces || planes) && !slotted && React__default[\"default\"].createElement(PluridSpaces, null));\n return PluridRoute;\n };\n};\n\nconst computePluridRoute = (matchedRoute, planesRegistrar, isoMatcher, directPlane, hostname = \"origin\") => {\n if (directPlane || (matchedRoute === null || matchedRoute === void 0 ? void 0 : matchedRoute.kind) === \"RoutePlane\") {\n const match = directPlane || matchedRoute;\n if (!match) {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = renderDirectPlane(match, planesRegistrar, hostname);\n return DirectPlane;\n }\n if (!matchedRoute) {\n const notFoundRoute = isoMatcher.match(\"/not-found\", \"route\");\n if (notFoundRoute && notFoundRoute.kind === \"Route\") {\n const notFoundRender = computePluridRoute(notFoundRoute, planesRegistrar, isoMatcher, undefined, hostname);\n return notFoundRender;\n }\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {exterior: exterior, view: view, planes: planes, spaces: spaces, defaultConfiguration: defaultConfiguration, slotted: slotted, resolver: resolver} = matchedRoute.data;\n if (resolver) {\n resolver(undefined);\n }\n const pluridRouteProperty = {\n value: matchedRoute.match.value,\n parameters: matchedRoute.match.parameters,\n query: matchedRoute.match.query\n };\n let PluridRouteExterior;\n if (isReactRenderable(exterior)) {\n PluridRouteExterior = exterior;\n if (PluridRouteExterior) {\n PluridRouteExterior.displayName = \"PluridRouteExterior\";\n }\n }\n if (exterior && PluridRouteExterior && !view && !planes && !spaces) {\n return () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty\n }));\n return PluridRoute;\n };\n }\n if (view) {\n return () => {\n const pubsub = new PluridPubSub__default[\"default\"];\n const space = matchedRoute.data.value;\n const pluridApplication = React__default[\"default\"].createElement(PluridApplication, {\n view: view,\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n pubsub: pubsub,\n matchedRoute: matchedRoute,\n hostname: hostname,\n space: space\n });\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, PluridRouteExterior && React__default[\"default\"].createElement(PluridRouteExterior, {\n plurid: pluridRouteProperty,\n pubsub: pubsub,\n spaces: slotted ? [ pluridApplication ] : undefined\n }), !slotted && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, pluridApplication));\n return PluridRoute;\n };\n }\n return renderMultispace(matchedRoute);\n};\n\nconst computeInitialMatchedPath = staticContext => {\n if (staticContext) {\n return staticContext.path;\n }\n if (typeof window !== \"undefined\") {\n return window.location.pathname + window.location.search;\n }\n return \"/\";\n};\n\nconst getDirectPlaneMatch = (matchedPath, routes, planes) => {\n let matchRoute;\n let matchPlane;\n let matchPath;\n for (const route of routes) {\n if (route.planes) {\n for (const plane of route.planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n const planePath = route.value === \"/\" ? planeData.value : route.value + planeData.value;\n matchPath = planePath;\n if (matchedPath === planePath) {\n matchPlane = plane;\n break;\n }\n }\n }\n if (matchPlane) {\n matchRoute = route;\n break;\n }\n }\n if (planes) {\n for (const plane of planes) {\n const planeData = resolvePluridRoutePlaneData(plane);\n if (matchedPath === planeData.value) {\n matchPlane = plane;\n break;\n }\n }\n }\n return {\n matchRoute: matchRoute,\n matchPlane: matchPlane,\n matchPath: matchPath\n };\n};\n\nconst renderDirectPlane = (routePlane, planesRegistrar, hostname = \"origin\") => {\n if (routePlane.match.query.flat) {\n const flat = routePlane.match.query.flat.toLowerCase();\n const renderFlat = flat === \"true\" || flat === \"1\";\n if (renderFlat) {\n const pluridRoute = planesRegistrar.get(routePlane.match.value);\n if (pluridRoute) {\n const Flat = pluridRoute.component;\n if (typeof Flat !== \"function\") {\n return () => () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(Flat, null));\n return PluridRoute;\n };\n return DirectPlane;\n }\n }\n }\n const {defaultConfiguration: defaultConfiguration} = routePlane === null || routePlane === void 0 ? void 0 : routePlane.data;\n const DirectPlane = () => {\n const PluridRoute = () => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridApplication, {\n view: [ routePlane.match.value ],\n planesRegistrar: planesRegistrar,\n configuration: defaultConfiguration,\n hostname: hostname\n }));\n return PluridRoute;\n };\n return DirectPlane;\n};\n\nconst PluridScrollTop = styled__default[\"default\"].div`\n height: 0;\n width: 0;\n`;\n\nconst StyledFadeIn = styled__default[\"default\"].div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: black;\n pointer-events: none;\n z-index: 999999;\n`;\n\nconst FadeIn = properties => {\n const {time: time} = properties;\n const [fadedIn, setFadedIn] = React.useState(false);\n React.useEffect((() => {\n if (time > 0) {\n setTimeout((() => {\n setFadedIn(true);\n }), time);\n }\n }), []);\n if (fadedIn || time === 0) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledFadeIn, null);\n};\n\nconst PluridRouterBrowser = properties => {\n const {routes: routes, planes: planes, exterior: exterior, shell: shell, hostname: hostname, scrollToTop: scrollToTop, fadeIn: fadeInProperty, static: staticContext, view: cleanNavigationView, cleanNavigation: cleanNavigation, notFoundPath: notFoundPathProperty} = properties;\n const notFoundPath = notFoundPathProperty || \"/not-found\";\n const fadeIn = fadeInProperty !== null && fadeInProperty !== void 0 ? fadeInProperty : 10;\n const pluridPlanes = gatherPluridPlanes(routes, planes);\n const topContainer = React.useRef(null);\n const pluridPlanesRegistrar = React.useRef(new PluridPlanesRegistrar(pluridPlanes, hostname));\n const pluridIsoMatcher = React.useRef(new PluridIsoMatcher$1({\n routes: routes,\n routePlanes: planes\n }, hostname));\n const mounted = pluridFunctionsReact.useMounted();\n const [matchedPath, setMatchedPath] = React.useState(computeInitialMatchedPath(staticContext));\n const [matchedRoute, setMatchedRoute] = React.useState(pluridIsoMatcher.current.match(matchedPath, \"route\"));\n const [PluridRoute, setPluridRoute] = React.useState(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, staticContext && staticContext.directPlane ? pluridIsoMatcher.current.match(staticContext.directPlane, \"route\") : undefined, hostname));\n const scrollTop = () => {\n if (!topContainer.current || scrollToTop === false) {\n return;\n }\n const behavior = typeof scrollToTop === \"undefined\" || scrollToTop === true || scrollToTop === \"smooth\" ? \"smooth\" : \"auto\";\n topContainer.current.scrollIntoView({\n behavior: behavior\n });\n };\n const handleLocation = event => {\n let matchedPath;\n if (event && event.detail && event.detail.path && !matchedPath) {\n matchedPath = event.detail.path;\n }\n if (cleanNavigation && cleanNavigationView && !matchedPath) {\n matchedPath = cleanNavigationView;\n }\n const pathname = window.location.pathname;\n if (!matchedPath) {\n matchedPath = pathname + window.location.search;\n }\n setMatchedPath(matchedPath);\n scrollTop();\n };\n React.useEffect((() => {\n window.addEventListener(\"popstate\", handleLocation);\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n return () => {\n window.removeEventListener(\"popstate\", handleLocation);\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_CHANGED, handleLocation);\n };\n }), []);\n React.useEffect((() => {\n if (!mounted) {\n return;\n }\n if (!cleanNavigation) {\n if (location.pathname !== matchedPath) {\n history.pushState(null, \"\", matchedPath);\n }\n }\n let matchedRoute = pluridIsoMatcher.current.match(matchedPath, \"route\");\n if (matchedRoute && matchedRoute.kind === \"RoutePlane\") {\n const DirectPlane = renderDirectPlane(matchedRoute, pluridPlanesRegistrar.current, hostname);\n setMatchedRoute(matchedRoute);\n setPluridRoute(DirectPlane);\n return;\n }\n if (!matchedRoute) {\n matchedRoute = pluridIsoMatcher.current.match(notFoundPath, \"route\");\n }\n setMatchedRoute(matchedRoute);\n setPluridRoute(computePluridRoute(matchedRoute, pluridPlanesRegistrar.current, pluridIsoMatcher.current, undefined, hostname));\n }), [ mounted, matchedPath ]);\n React.useEffect((() => {\n if (!matchedRoute) {\n return;\n }\n if (matchedRoute.kind !== \"Route\") {\n return;\n }\n const path = matchedRoute.match.value;\n pluridFunctions.storage.saveState(path, pluridData.PLURID_ROUTER_STORAGE);\n const locationStoredEvent = new CustomEvent(pluridData.PLURID_ROUTER_LOCATION_STORED, {\n detail: {\n path: path\n }\n });\n window.dispatchEvent(locationStoredEvent);\n }), [ cleanNavigation, matchedRoute ]);\n let PluridRouterExterior;\n if (isReactRenderable(exterior)) {\n PluridRouterExterior = exterior;\n if (PluridRouterExterior) {\n PluridRouterExterior.displayName = \"PluridRouterExterior\";\n }\n }\n let PluridRouterShell = ({children: children}) => React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (isReactRenderable(shell)) {\n PluridRouterShell = shell;\n if (PluridRouterShell) {\n PluridRouterShell.displayName = \"PluridRouterShell\";\n }\n }\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(FadeIn, {\n time: fadeIn\n }), React__default[\"default\"].createElement(PluridScrollTop, {\n ref: topContainer\n }), PluridRouterExterior && React__default[\"default\"].createElement(PluridRouterExterior, {\n matchedRoute: matchedRoute\n }), React__default[\"default\"].createElement(PluridRouterShell, {\n matchedRoute: matchedRoute\n }, React__default[\"default\"].createElement(PluridRoute, null)));\n};\n\nconst PluridRouterStatic = properties => {\n const {path: path, directPlane: directPlane, routes: routes, planes: planes, exterior: exterior, shell: shell, protocol: protocolProperty, hostname: hostnameProperty, gateway: gateway, gatewayQuery: gatewayQueryProperty, gatewayEndpoint: gatewayEndpointProperty, routerProperties: routerProperties} = properties;\n const protocol = protocolProperty || \"http\";\n const hostname = hostnameProperty || \"origin\";\n return React__default[\"default\"].createElement(PluridRouterBrowser, Object.assign({\n routes: routes,\n planes: planes,\n exterior: exterior,\n shell: shell,\n static: {\n path: path,\n directPlane: directPlane\n },\n protocol: protocol,\n hostname: hostname\n }, routerProperties));\n};\n\nclass PluridProvider extends React.Component {\n constructor(properties) {\n super(properties);\n this.properties = properties;\n }\n render() {\n const {metastate: metastate, children: children} = this.properties;\n return React__default[\"default\"].createElement(PluridContext.Provider, {\n value: metastate\n }, children);\n }\n}\n\nPluridProvider.displayName = \"PluridProvider\";\n\nconst DEFAULT_ROUTER_LINK_AS_ANCHOR = true;\n\nconst defaultLinkCoordinates = {\n x: 0,\n y: 0\n};\n\nconst PluridPortal = properties => {\n const {elementID: elementID, rootID: rootID, children: children} = properties;\n const target = pluridFunctionsReact.usePortal(elementID, rootID);\n return reactDom.createPortal(children, target);\n};\n\nconst StyledPluridPlanePreview = styled__default[\"default\"].div`\n position: absolute;\n min-width: 600px;\n min-height: 300px;\n z-index: 99999;\n\n top: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.y;\n return location + \"px\";\n}};\n left: ${({linkCoordinates: linkCoordinates}) => {\n const location = linkCoordinates.x + 5;\n return location + \"px\";\n}};\n background-color: ${({theme: theme}) => theme.backgroundColorSecondary};\n box-shadow: ${({theme: theme}) => theme.boxShadowUmbra};\n`;\n\nconst PluridPlanePreview = properties => {\n const {planeRoute: planeRoute, linkCoordinates: linkCoordinates, previewComponent: previewComponent, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateGeneralTheme: stateGeneralTheme} = properties;\n const resolvedLinkCoordinates = {\n x: linkCoordinates.x + (previewOffsetX !== null && previewOffsetX !== void 0 ? previewOffsetX : 0),\n y: linkCoordinates.y + (previewOffsetY !== null && previewOffsetY !== void 0 ? previewOffsetY : 0)\n };\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {planesRegistrar: planesRegistrar} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const plane = planesRegistry.get(planeRoute);\n if (!plane) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const Component = previewComponent !== null && previewComponent !== void 0 ? previewComponent : plane.component;\n if (typeof Component !== \"function\") {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n return React__default[\"default\"].createElement(StyledPluridPlanePreview, {\n theme: stateGeneralTheme,\n linkCoordinates: resolvedLinkCoordinates\n }, React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$6 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$6 = dispatch => ({});\n\nconst ConnectedPluridPlanePreview = reactRedux.connect(mapStateToProperties$6, mapDispatchToProperties$6, null, {\n context: StateContext\n})(PluridPlanePreview);\n\nconst StyledPluridLink = styled__default[\"default\"].a`\n /**\n * Forces element to go to the second row if inlined.\n */\n display: inline-block;\n\n cursor: pointer;\n color: ${({theme: theme}) => theme.colorTertiary};\n\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n\n ::after {\n content: \"${({devisible: devisible, suffix: suffix}) => {\n if (!devisible) {\n if (suffix) {\n return suffix;\n }\n return \"'\";\n }\n return \"\";\n}}\";\n }\n`;\n\nconst PluridLink = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {hostname: hostname, planesRegistrar: planesRegistrar, defaultPubSub: defaultPubSub} = context;\n const planesRegistry = getPlanesRegistrar(planesRegistrar);\n if (!planesRegistry) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, properties.children);\n }\n const {children: children, route: planeRoute, devisible: devisibleProperty, suffix: suffixProperty, atClick: atClick, style: style, className: className, preview: preview, previewComponent: previewComponent, previewFadeIn: previewFadeIn, previewFadeOut: previewFadeOut, previewOffsetX: previewOffsetX, previewOffsetY: previewOffsetY, stateTree: stateTree, stateLastClosedPlane: stateLastClosedPlane, stateGeneralTheme: stateGeneralTheme, stateConfiguration: stateConfiguration, stateViewSize: stateViewSize, dispatch: dispatch, dispatchSetTree: dispatchSetTree, dispatchSetSpaceField: dispatchSetSpaceField, dispatchUpdateSpaceLinkCoordinates: dispatchUpdateSpaceLinkCoordinates, dispatchRemovePlane: dispatchRemovePlane} = properties;\n const planeControls = stateConfiguration.elements.plane.controls.show;\n const previewAppearTime = previewFadeIn || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN;\n const previewDisappearTime = previewFadeOut || pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT;\n const planeRouteResolved = computePlaneAddress(planeRoute);\n const absolutePlaneRoute = resolveRoute(planeRouteResolved, stateConfiguration.network.protocol, hostname || stateConfiguration.network.host);\n const suffix = suffixProperty !== null && suffixProperty !== void 0 ? suffixProperty : pluridData.PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX;\n const devisible = devisibleProperty !== null && devisibleProperty !== void 0 ? devisibleProperty : false;\n const linkElement = React.useRef(null);\n const hoverInTimeout = React.useRef(null);\n const hoverOutTimeout = React.useRef(null);\n const [mouseOver, setMouseOver] = React.useState(false);\n const [showPreview, setShowPreview] = React.useState(false);\n const [showLink, setShowLink] = React.useState(false);\n const [pluridPlaneID, setPluridPlaneID] = React.useState(\"\");\n const [parentPlaneID, setParentPlaneID] = React.useState(getPluridPlaneIDByData$1(linkElement.current));\n const [linkCoordinates, setLinkCoordinates] = React.useState(defaultLinkCoordinates);\n const getPluridLinkCoordinates = () => {\n const link = linkElement.current;\n if (!link) {\n return Object.assign({}, defaultLinkCoordinates);\n }\n let partialTop = 0;\n let partialLeft = 0;\n let staticSet = false;\n let element = link;\n let searching = true;\n let top = 0;\n let left = 0;\n while (searching) {\n if (window.getComputedStyle(element).position === \"static\" && !staticSet) {\n partialTop += element.offsetTop;\n partialLeft += element.offsetLeft;\n staticSet = true;\n }\n if (window.getComputedStyle(element).position === \"relative\") {\n top += partialTop;\n left += partialLeft;\n partialTop = 0;\n partialLeft = 0;\n staticSet = false;\n }\n if (element.scrollLeft) {\n left += -element.scrollLeft;\n }\n if (element.scrollTop) {\n top += -element.scrollTop;\n }\n if (element.parentElement) {\n const pluridEntity = element.parentElement.dataset.pluridEntity;\n if (pluridEntity === \"PluridPlane\") {\n searching = false;\n }\n element = element.parentElement;\n } else {\n searching = false;\n }\n }\n const planeControlsHeight = planeControls ? 56 : 0;\n const x = left + link.offsetWidth;\n const y = top + planeControlsHeight;\n return {\n x: x,\n y: y\n };\n };\n const updateLinkCoordinates = () => {\n const newLinkCoordinates = getPluridLinkCoordinates();\n const payload = {\n planeID: pluridPlaneID,\n linkCoordinates: newLinkCoordinates\n };\n dispatchUpdateSpaceLinkCoordinates(payload);\n const updatedTree = pluridEngine.space.tree.logic.updatePlaneLocation(pluridFunctions.objects.clone(stateTree), parentPlaneID, pluridPlaneID, pluridFunctions.objects.clone(newLinkCoordinates));\n dispatchSetTree(updatedTree);\n };\n const debouncedUpdateLinkCoordinates = pluridFunctionsReact.useDebouncedCallback((() => {\n updateLinkCoordinates();\n }), pluridData.PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME);\n const assignTreePlaneToLink = (parentPlane, linkCoordinates) => {\n if (!parentPlane || !parentPlane.children) {\n return;\n }\n for (const plane of parentPlane.children) {\n if (!plane.linkCoordinates) {\n continue;\n }\n if (plane.linkCoordinates.x === linkCoordinates.x || plane.linkCoordinates.y === linkCoordinates.y) {\n if (pluridPlaneID === plane.planeID) {\n continue;\n }\n setShowLink(true);\n setPluridPlaneID(plane.planeID);\n }\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, pluridFunctions.objects.clone(stateTree), planesRegistry.getAll(), stateConfiguration, hostname);\n if (pluridPlaneID) {\n handlePlaneNavigation(event, updatedTreePlane);\n dispatchSetTree(updatedTree);\n setShowLink(true);\n setPluridPlaneID(pluridPlaneID);\n }\n };\n const togglePlane = forceShow => {\n const {updatedTree: updatedTree, updatedPlane: updatedPlane} = pluridEngine.space.tree.logic.togglePlaneFromTree(pluridFunctions.objects.clone(stateTree), pluridPlaneID, forceShow);\n dispatchSetTree(updatedTree);\n setShowLink((show => !show));\n setShowPreview(false);\n return {\n updatedPlane: updatedPlane\n };\n };\n const toggleLinkFromTree = event => {\n const {updatedPlane: updatedPlane} = togglePlane();\n handlePlaneNavigation(event, updatedPlane);\n };\n const handlePlaneNavigation = (event, updatedPlane) => {\n if (!updatedPlane) {\n return;\n }\n if (showLink) {\n return;\n }\n dispatchSetSpaceField({\n field: \"isolatePlane\",\n value: \"\"\n });\n navigateToPluridPlane(dispatch, updatedPlane, event);\n };\n const handleShowPluridPlane = event => {\n if (event.altKey) {\n if (showLink && pluridPlaneID) {\n const plane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, pluridPlaneID);\n navigateToPluridPlane(dispatch, plane, event);\n return;\n }\n }\n if (!showLink && !pluridPlaneID) {\n updateTreeWithLink(event);\n } else {\n toggleLinkFromTree(event);\n }\n };\n const defocusLink = () => {\n if (linkElement.current) {\n linkElement.current.blur();\n }\n };\n const removePlane = () => {\n const pluridPlane = document.getElementById(pluridPlaneID);\n if (!pluridPlane) {\n return;\n }\n dispatchRemovePlane(pluridPlaneID);\n setShowLink(false);\n setShowPreview(false);\n };\n const handleClick = React.useCallback((event => {\n event.preventDefault();\n if (atClick !== undefined) {\n atClick(event);\n }\n handleShowPluridPlane(event);\n defocusLink();\n }), [ parentPlaneID, JSON.stringify(stateTree), linkElement.current ]);\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n defocusLink();\n return;\n }\n return;\n };\n React.useEffect((() => {\n const newParentPlaneID = getPluridPlaneIDByData$1(linkElement.current);\n setParentPlaneID(newParentPlaneID);\n const linkCoordinates = getPluridLinkCoordinates();\n setLinkCoordinates(linkCoordinates);\n const parentPlane = pluridEngine.space.tree.logic.getTreePlaneByID(stateTree, newParentPlaneID);\n assignTreePlaneToLink(parentPlane, linkCoordinates);\n }), []);\n React.useEffect((() => {\n if (showLink) {\n debouncedUpdateLinkCoordinates();\n }\n }), [ showLink, JSON.stringify(stateViewSize), JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n if (!preview) {\n return;\n }\n if (mouseOver && hoverOutTimeout.current) {\n hoverInTimeout.current = setTimeout((() => {\n setShowPreview(true);\n }), previewAppearTime);\n clearTimeout(hoverOutTimeout.current);\n }\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout((() => {\n setShowPreview(false);\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n }), previewDisappearTime);\n }\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n if (hoverInTimeout.current) {\n clearTimeout(hoverInTimeout.current);\n }\n };\n }), [ preview, mouseOver ]);\n React.useEffect((() => {\n const openClosedPlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.OPEN_CLOSED_PLANE,\n callback: () => {\n if (stateLastClosedPlane === pluridPlaneID) {\n togglePlane();\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: \"\"\n });\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(openClosedPlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => {\n const closePlaneIndex = defaultPubSub.subscribe({\n topic: pluridData.PLURID_PUBSUB_TOPIC.CLOSE_PLANE,\n callback: data => {\n const {id: id} = data;\n if (id === pluridPlaneID) {\n if (showLink) {\n const show = false;\n togglePlane(show);\n dispatchSetSpaceField({\n field: \"lastClosedPlane\",\n value: id\n });\n }\n }\n }\n });\n return () => {\n defaultPubSub.unsubscribe(closePlaneIndex);\n };\n }), [ showLink, pluridPlaneID, JSON.stringify(stateTree) ]);\n React.useEffect((() => () => {\n setTimeout((() => {\n if (pluridPlaneID && showLink && linkElement.current === null) {\n removePlane();\n }\n }), 10);\n }), [ showLink, showPreview, pluridPlaneID, parentPlaneID, JSON.stringify(stateTree) ]);\n return React__default[\"default\"].createElement(StyledPluridLink, {\n ref: linkElement,\n onClick: event => handleClick(event),\n onMouseEnter: () => setMouseOver(true),\n onMouseLeave: () => setMouseOver(false),\n onKeyUp: event => handleKeyUp(event),\n theme: stateGeneralTheme,\n suffix: suffix,\n devisible: devisible,\n style: Object.assign({}, style),\n className: className,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_LINK,\n tabIndex: 0\n }, children, showPreview && !showLink && React__default[\"default\"].createElement(PluridPortal, {\n elementID: `preview-${parentPlaneID}`,\n rootID: parentPlaneID\n }, React__default[\"default\"].createElement(ConnectedPluridPlanePreview, {\n planeRoute: planeRouteResolved,\n linkCoordinates: linkCoordinates,\n previewComponent: previewComponent,\n previewOffsetX: previewOffsetX,\n previewOffsetY: previewOffsetY\n })));\n};\n\nconst mapStateToProperties$5 = state => ({\n stateTree: selectors.space.getTree(state),\n stateLastClosedPlane: selectors.space.getLastClosedPlane(state),\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateConfiguration: selectors.configuration.getConfiguration(state),\n stateViewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProperties$5 = dispatch => ({\n dispatch: dispatch,\n dispatchSetTree: payload => dispatch(actions.space.setTree(payload)),\n dispatchSetSpaceField: payload => dispatch(actions.space.setSpaceField(payload)),\n dispatchUpdateSpaceLinkCoordinates: payload => dispatch(actions.space.updateSpaceLinkCoordinates(payload)),\n dispatchRemovePlane: payload => dispatch(actions.space.removePlane(payload))\n});\n\nconst ConnectedPluridLink = reactRedux.connect(mapStateToProperties$5, mapDispatchToProperties$5, null, {\n context: StateContext\n})(PluridLink);\n\nconst commonStyle = styled.css`\n color: ${({theme: theme}) => theme.colorTertiary};\n\n @media (hover:hover) {\n :hover {\n color: ${({theme: theme}) => theme.colorPrimary};\n }\n }\n`;\n\nconst StyledPluridRouterLinkAnchor = styled__default[\"default\"].a`\n ${commonStyle}\n`;\n\nconst StyledPluridRouterLinkDiv = styled__default[\"default\"].div`\n cursor: pointer;\n\n ${commonStyle}\n`;\n\nconst PluridRouterLink = properties => {\n const {route: route, children: children, asAnchor: asAnchorProperty, target: target, theme: themeProperty, style: style, className: className, atClick: atClick} = properties;\n const asAnchor = asAnchorProperty !== null && asAnchorProperty !== void 0 ? asAnchorProperty : DEFAULT_ROUTER_LINK_AS_ANCHOR;\n const theme = themeProperty || themes$2.plurid;\n const handleClick = event => {\n if (atClick) {\n const exit = atClick(event);\n if (exit) {\n return;\n }\n }\n event.preventDefault();\n if (target === \"_blank\") {\n window.open(route);\n return;\n }\n pluridEngine.pluridRouterNavigate(route);\n };\n const handleKeyUp = event => {\n if (event.code === \"Enter\") {\n handleClick(event);\n return;\n }\n return;\n };\n const renderProperties = {\n tabIndex: 0,\n theme: theme,\n style: style,\n className: className,\n onClick: handleClick,\n onKeyUp: handleKeyUp\n };\n if (!asAnchor) {\n return React__default[\"default\"].createElement(StyledPluridRouterLinkDiv, Object.assign({}, renderProperties), children);\n }\n return React__default[\"default\"].createElement(StyledPluridRouterLinkAnchor, Object.assign({\n href: route\n }, renderProperties), children);\n};\n\nconst StyledPluridApplicationConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst PluridApplicationConfigurator = properties => {\n const context = React.useContext(Context);\n if (!context) {\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n }\n const {registerPubSub: registerPubSub} = context;\n const {configuration: configuration, pubsub: pubsub, stateConfiguration: stateConfiguration, dispatchSetConfiguration: dispatchSetConfiguration} = properties;\n const configuratorElement = React.useRef(null);\n React.useEffect((() => {\n const computedConfiguration = pluridEngine.general.configuration.merge(configuration, stateConfiguration);\n dispatchSetConfiguration(computedConfiguration);\n }), [ configuration ]);\n React.useEffect((() => {\n if (pubsub) {\n registerPubSub(pubsub);\n }\n }), [ pubsub ]);\n return React__default[\"default\"].createElement(StyledPluridApplicationConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_APPLICATION_CONFIGURATOR\n });\n};\n\nconst mapStateToProps$1 = state => ({\n stateConfiguration: selectors.configuration.getConfiguration(state)\n});\n\nconst mapDispatchToProps$1 = dispatch => ({\n dispatchSetConfiguration: payload => dispatch(actions.configuration.setConfiguration(payload))\n});\n\nconst ConnectedPluridApplicationConfigurator = reactRedux.connect(mapStateToProps$1, mapDispatchToProps$1, null, {\n context: StateContext\n})(PluridApplicationConfigurator);\n\nconst StyledPluridPlaneConfigurator = styled__default[\"default\"].div`\n position: absolute;\n height: 0;\n width: 0;\n user-select: none;\n pointer-events: none;\n`;\n\nconst {getPluridPlaneIDByData: getPluridPlaneIDByData} = pluridEngine.planes;\n\nconst PluridPlaneConfigurator = properties => {\n const configuratorElement = React.useRef(null);\n const [planePlaneID, setParentPlaneID] = React.useState(\"\");\n React.useEffect((() => {\n const parentPlaneID = getPluridPlaneIDByData(configuratorElement.current);\n setParentPlaneID(parentPlaneID);\n }), []);\n return React__default[\"default\"].createElement(StyledPluridPlaneConfigurator, {\n ref: configuratorElement,\n \"data-plurid-entity\": pluridData.PLURID_ENTITY_PLANE_CONFIGURATOR\n });\n};\n\nconst mapStateToProperties$4 = state => ({});\n\nconst mapDispatchToProperties$4 = dispatch => ({});\n\nconst ConnectedPluridPlaneConfigurator = reactRedux.connect(mapStateToProperties$4, mapDispatchToProperties$4, null, {\n context: StateContext\n})(PluridPlaneConfigurator);\n\nconst StyledExternalPlane = styled__default[\"default\"].div`\n`;\n\nconst getPttpUrl = path => {\n const re = /^pttp:\\/\\/(\\w+(\\.|:)\\w+)\\/?/;\n const match = path.match(re);\n if (!match) {\n return {\n domain: \"\",\n url: \"\"\n };\n }\n const domain = match[1];\n const protocol = \"http\";\n const url = `${protocol}://${domain}/pttp`;\n return {\n domain: domain,\n url: url\n };\n};\n\nconst getPttpPath = (domain, path) => {\n if (!domain) {\n return;\n }\n const pttpPath = path.replace(`pttp://${domain}`, \"\");\n return pttpPath;\n};\n\nconst elementRequest = (url, path) => __awaiter(void 0, void 0, void 0, (function*() {\n try {\n const response = yield fetch__default[\"default\"](url, {\n method: \"post\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n path: path\n }),\n credentials: \"include\"\n });\n const data = yield response.json();\n if (!data.element) {\n return;\n }\n const {element: element} = data;\n const elementQLClient = new elementqlClientReact.ElementQLClient({\n url: element.url\n });\n const {status: status, Elements: Elements} = yield elementQLClient.get(element.json, \"json\");\n if (!status) {\n return;\n }\n const Element = Elements[element.name];\n return () => Element;\n } catch (error) {\n return;\n }\n}));\n\nconst ExternalPlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n const mounted = React.useRef(false);\n const [Component, setComponent] = React.useState();\n React.useEffect((() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }));\n React.useEffect((() => {\n let loading = false;\n const load = () => __awaiter(void 0, void 0, void 0, (function*() {\n if (loading) {\n return;\n }\n loading = true;\n try {\n const {domain: domain, url: url} = getPttpUrl(route);\n const pttpPath = getPttpPath(domain, route);\n if (!url || !pttpPath) {\n return;\n }\n const Component = yield elementRequest(url, pttpPath);\n if (!mounted.current) {\n return;\n }\n if (Component) {\n setComponent(Component);\n }\n } catch (error) {\n return;\n }\n }));\n load();\n }), []);\n return React__default[\"default\"].createElement(StyledExternalPlane, null, Component && React__default[\"default\"].createElement(Component, null));\n};\n\nconst mapStateToProperties$3 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$3 = dispatch => ({});\n\nconst ConnectedExternalPlane = reactRedux.connect(mapStateToProperties$3, mapDispatchToProperties$3, null, {\n context: StateContext\n})(ExternalPlane);\n\nconst StyledIframePlane = styled__default[\"default\"].div`\n`;\n\nconst IframePlane = properties => {\n const {plurid: plurid} = properties;\n const route = plurid.value;\n return React__default[\"default\"].createElement(StyledIframePlane, null, React__default[\"default\"].createElement(\"iframe\", {\n src: route\n }));\n};\n\nconst mapStateToProperties$2 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$2 = dispatch => ({});\n\nconst ConnectedIframePlane = reactRedux.connect(mapStateToProperties$2, mapDispatchToProperties$2, null, {\n context: StateContext\n})(IframePlane);\n\nconst VirtualListItem = properties => {\n const {top: top, index: index, element: element, setHeight: setHeight} = properties;\n const el = React.useRef(null);\n React.useEffect((() => {\n if (el.current) {\n setHeight(el.current.offsetHeight, index);\n }\n }), [ el.current ]);\n return React__default[\"default\"].createElement(\"div\", {\n ref: el,\n style: {\n position: \"absolute\",\n top: top + \"px\"\n }\n }, element);\n};\n\nconst {markers: {Spinner: PluridSpinner}} = pluridUiComponentsReact.universal;\n\nconst PluridVirtualList = properties => {\n const {items: items, generalHeight: generalHeight, translationY: translationY, viewSize: viewSize} = properties;\n const _generalHeight = generalHeight || 100;\n const listElement = React.useRef(null);\n const rows = React.useRef([]);\n const heights = React.useRef(Array(items.length).fill(_generalHeight));\n const [start, setStart] = React.useState(0);\n const [end, setEnd] = React.useState(Math.floor(1e3 / _generalHeight));\n const [elementHeight, setElementHeight] = React.useState(_generalHeight * (end - start));\n const [resizing, setResizing] = React.useState(false);\n const setHeight = (value, index) => {\n heights.current[index] = value;\n };\n const renderRows = () => {\n rows.current = [];\n for (let i = start; i <= end; i++) {\n const item = items[i];\n rows.current.push(React__default[\"default\"].createElement(VirtualListItem, {\n key: i + Math.random(),\n index: i,\n top: pluridFunctions.mathematics.arithmetic.sum(heights.current, i),\n element: item,\n setHeight: setHeight\n }));\n }\n return rows.current;\n };\n React.useEffect((() => {\n if (heights.current) {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n }\n }), [ start, end, heights.current ]);\n React.useEffect((() => {\n let sum = 0;\n for (const [index, value] of heights.current.entries()) {\n sum += value;\n if (translationY < 0) {\n if (sum < Math.abs(translationY)) {\n setStart(index);\n }\n if (sum > Math.abs(translationY) + viewSize.height && sum < Math.abs(translationY) + viewSize.height + 400) {\n setEnd(index);\n }\n } else {\n setStart(0);\n setEnd(10);\n }\n }\n }), [ viewSize.height, translationY ]);\n React.useEffect((() => {\n setResizing(true);\n setTimeout((() => {\n const elementHeight = pluridFunctions.mathematics.arithmetic.sum(heights.current, heights.current.length);\n setElementHeight(elementHeight);\n setResizing(false);\n }), 400);\n }), [ viewSize ]);\n return React__default[\"default\"].createElement(\"div\", {\n style: {\n height: elementHeight\n },\n ref: listElement\n }, resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, React__default[\"default\"].createElement(PluridSpinner, null)), !resizing && React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, renderRows()));\n};\n\nconst mapStateToProps = state => ({\n translationY: selectors.space.getTranslationY(state),\n viewSize: selectors.space.getViewSize(state)\n});\n\nconst mapDispatchToProps = dispatch => ({});\n\nconst ConnectedPluridVirtualList = reactRedux.connect(mapStateToProps, mapDispatchToProps, null, {\n context: StateContext\n})(PluridVirtualList);\n\nconst StyledPluridPlaneDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridPlaneDebugger = properties => React__default[\"default\"].createElement(StyledPluridPlaneDebugger, null, \"PluridPlaneDebugger\");\n\nconst mapStateToProperties$1 = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties$1 = dispatch => ({});\n\nconst ConnectedPluridPlaneDebugger = reactRedux.connect(mapStateToProperties$1, mapDispatchToProperties$1, null, {\n context: StateContext\n})(PluridPlaneDebugger);\n\nconst StyledPluridSpaceDebugger = styled__default[\"default\"].div`\n`;\n\nconst PluridSpaceDebugger = properties => React__default[\"default\"].createElement(StyledPluridSpaceDebugger, null, \"PluridSpaceDebugger\");\n\nconst mapStateToProperties = state => ({\n stateGeneralTheme: selectors.themes.getGeneralTheme(state),\n stateInteractionTheme: selectors.themes.getInteractionTheme(state)\n});\n\nconst mapDispatchToProperties = dispatch => ({});\n\nconst ConnectedPluridSpaceDebugger = reactRedux.connect(mapStateToProperties, mapDispatchToProperties, null, {\n context: StateContext\n})(PluridSpaceDebugger);\n\nconst serverComputeMetastate = (isoMatch, paths, globals, hostname = \"origin\") => __awaiter(void 0, void 0, void 0, (function*() {\n const protocol = \"http\";\n const pluridApplications = yield collectApplicationsFromPath(isoMatch, protocol, hostname, globals);\n const states = {};\n for (const application of pluridApplications) {\n const {planes: planes, view: view, configuration: configuration} = application;\n const {computedTree: computedTree, appConfiguration: appConfiguration} = computeApplication(planes, isoMatch.data.defaultConfiguration, view, hostname);\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 resolvedLayout: false,\n animatedTransform: false,\n transform: \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\",\n scale: 1,\n rotationX: 0,\n rotationY: 0,\n translationX: 0,\n translationY: 0,\n translationZ: 0,\n tree: computedTree,\n activeUniverseID: \"\",\n camera: {\n x: 0,\n y: 0,\n z: 0\n },\n viewSize: {\n width: 1440,\n height: 821\n },\n spaceSize: {\n width: 1440,\n height: 821,\n depth: 0,\n topCorner: {\n x: 0,\n y: 0,\n z: 0\n }\n },\n view: view,\n culledView: []\n }\n };\n const id = isoMatch.data.value;\n states[id] = state;\n }\n return {\n states: states\n };\n}));\n\nconst usePluridRouter = () => {\n const [routerValue, setRouterValue] = React.useState(\"\");\n React.useEffect((() => {\n const fetchState = () => {\n const state = pluridFunctions.storage.loadState(pluridData.PLURID_ROUTER_STORAGE);\n if (state) {\n setRouterValue(state);\n }\n };\n fetchState();\n window.addEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n return () => {\n window.removeEventListener(pluridData.PLURID_ROUTER_LOCATION_STORED, fetchState);\n };\n }), []);\n return routerValue;\n};\n\nconst {IsoMatcher: PluridIsoMatcher, RouteParser: PluridRouteParser} = pluridEngine.routing;\n\nconst internals = {\n PluridPlaneBridge: ConnectedPluridPlaneBridge,\n PluridPlaneContent: PluridPlaneContent,\n PluridPlaneControls: ConnectedPluridPlaneControls,\n PluridPlaneDebugger: ConnectedPluridPlaneDebugger,\n PluridSpaceDebugger: ConnectedPluridSpaceDebugger\n};\n\nconst Plurid = {\n Application: PluridApplication,\n RouterStatic: PluridRouterStatic,\n RouterBrowser: PluridRouterBrowser,\n Provider: PluridProvider,\n Link: ConnectedPluridLink,\n RouterLink: PluridRouterLink,\n ApplicationConfigurator: ConnectedPluridApplicationConfigurator,\n PlaneConfigurator: ConnectedPluridPlaneConfigurator,\n ExternalPlane: ConnectedExternalPlane,\n IframePlane: ConnectedIframePlane,\n VirtualList: ConnectedPluridVirtualList,\n SPACE_LAYOUT: pluridData.LAYOUT_TYPES,\n SIZES: pluridData.SIZES,\n TRANSFORM_MODES: pluridData.TRANSFORM_MODES,\n TRANSFORM_TOUCHES: pluridData.TRANSFORM_TOUCHES,\n PubSub: PluridPubSub__default[\"default\"],\n PUBSUB_TOPIC: pluridData.PLURID_PUBSUB_TOPIC,\n serverComputeMetastate: serverComputeMetastate,\n IsoMatcher: PluridIsoMatcher,\n routerNavigate: pluridEngine.pluridRouterNavigate,\n internals: internals\n};\n\nObject.defineProperty(exports, \"PLURID_PUBSUB_TOPIC\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_PUBSUB_TOPIC;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_CHANGED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_CHANGED;\n }\n});\n\nObject.defineProperty(exports, \"PLURID_ROUTER_LOCATION_STORED\", {\n enumerable: true,\n get: function() {\n return pluridData.PLURID_ROUTER_LOCATION_STORED;\n }\n});\n\nObject.defineProperty(exports, \"SIZES\", {\n enumerable: true,\n get: function() {\n return pluridData.SIZES;\n }\n});\n\nObject.defineProperty(exports, \"SPACE_LAYOUT\", {\n enumerable: true,\n get: function() {\n return pluridData.LAYOUT_TYPES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_MODES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_MODES;\n }\n});\n\nObject.defineProperty(exports, \"TRANSFORM_TOUCHES\", {\n enumerable: true,\n get: function() {\n return pluridData.TRANSFORM_TOUCHES;\n }\n});\n\nObject.defineProperty(exports, \"pluridRouterNavigate\", {\n enumerable: true,\n get: function() {\n return pluridEngine.pluridRouterNavigate;\n }\n});\n\nObject.defineProperty(exports, \"PluridPubSub\", {\n enumerable: true,\n get: function() {\n return PluridPubSub__default[\"default\"];\n }\n});\n\nexports.PluridApplication = PluridApplication;\n\nexports.PluridApplicationConfigurator = ConnectedPluridApplicationConfigurator;\n\nexports.PluridExternalPlane = ConnectedExternalPlane;\n\nexports.PluridIframePlane = ConnectedIframePlane;\n\nexports.PluridIsoMatcher = PluridIsoMatcher;\n\nexports.PluridLink = ConnectedPluridLink;\n\nexports.PluridPlaneConfigurator = ConnectedPluridPlaneConfigurator;\n\nexports.PluridProvider = PluridProvider;\n\nexports.PluridRouteParser = PluridRouteParser;\n\nexports.PluridRouterBrowser = PluridRouterBrowser;\n\nexports.PluridRouterLink = PluridRouterLink;\n\nexports.PluridRouterStatic = PluridRouterStatic;\n\nexports.PluridVirtualList = ConnectedPluridVirtualList;\n\nexports[\"default\"] = Plurid;\n\nexports.getDirectPlaneMatch = getDirectPlaneMatch;\n\nexports.internals = internals;\n\nexports.pluridStateModules = modules;\n\nexports.serverComputeMetastate = serverComputeMetastate;\n\nexports.usePluridRouter = usePluridRouter;\n//# sourceMappingURL=index.js.map\n"],"names":["Object","defineProperty","exports","value","pluridData","require$$0","pluridEngine","require$$1","PluridPubSub","require$$2","React","require$$3","reactRedux","require$$4","toolkit","require$$5","pluridFunctions","require$$6","themes$2","require$$7","styled","require$$8","pluridFunctionsReact","require$$9","pluridIconsReact","require$$10","pluridUiComponentsReact","require$$11","reactDom","require$$12","fetch","require$$13","elementqlClientReact","require$$14","_interopDefaultLegacy","e","default","PluridPubSub__default","React__default","themes__default","styled__default","fetch__default","PluridContext","createContext","undefined","initialState$5","assign","defaultConfiguration","configuration","createSlice","name","initialState","reducers","setConfiguration","state","action","payload","setConfigurationMicro","elements","toolbar","show","plane","controls","viewcube","setConfigurationPlaneControls","setConfigurationPlaneOpacity","opacity","setConfigurationThemeGeneral","updatedTheme","general","interaction","global","theme","setConfigurationThemeInteraction","setConfigurationLanguage","language","toggleConfigurationViewcubeHide","toggleConfigurationViewcubeButtons","buttons","toggleConfigurationViewcubeOpaque","opaque","toggleConfigurationViewcubeConceal","conceal","toggleConfigurationToolbarConceal","toggleConfigurationToolbarTransformIcons","transformIcons","toggleConfigurationToolbarTransformButtons","transformButtons","toggleConfigurationShowTransformOrigin","space","transformOrigin","toggleConfigurationToolbarOpaque","toggleConfigurationSpaceTransparentUI","transparentUI","setConfigurationSpaceTransformOriginSize","size","setConfigurationSpaceTransformMode","transformMode","TRANSFORM_MODES","ALL","toggleConfigurationSpaceTransformMultimode","transformMultimode","setConfigurationSpaceTransformTouch","transformTouch","toggleConfigurationSpaceFirstPerson","firstPerson","toggleConfigurationToolbarToggleDrawer","toggledDrawers","includes","updatedDrawers","filter","el","setConfigurationSpaceTransformLocks","transformLocks","updatedTransformLocks","setConfigurationSpaceLayout","layout","type","LAYOUT_TYPES","setConfigurationSpaceCullingDistance","cullingDistance","actions$6","actions","getConfiguration","selectors$6","reducer$6","reducer","configuration$1","freeze","__proto__","selectors","actions$5","getGeneral","selectors$5","reducer$5","general$1","shortcuts","setGlobalShortcuts","actions$4","getGlobal","selectors$4","reducer$4","shortcuts$1","registerPlanes","getRegisteredPlanes","getPlanesRegistrar","getPluridPlaneIDByData","getPluridPlaneIDByData$1","getRegisteredPlane","resolvePluridRoutePlaneData","resolvePluridPlaneData","Registrar","PluridPlanesRegistrar","planes","IsoMatcher","PluridIsoMatcher$1","resolveRoute","computePlaneAddress","routing","quaternion","quaternion$1","matrix","matrix$1","degToRad","degToRad$2","matrixArrayToCSSMatrix","matrixArrayToCSSMatrix$1","rotateMatrix","rotateMatrix$2","multiplyArrayOfMatrices","multiplyArrayOfMatrices$2","scaleMatrix","scaleMatrix$2","translateMatrix","translateMatrix$2","computeMatrix","spaceState","translationX","translationY","translationZ","rotationX","rotationY","scale","transformOriginX","window","innerWidth","transformOriginY","innerHeight","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","transform","selectors$3","getSpace","getLoading","loading","getResolvedLayout","resolvedLayout","getTransformMatrix","getAnimatedTransform","animatedTransform","getTransformTime","transformTime","getRotationX","getRotationY","getTranslationX","getTranslationY","getTranslationZ","getScale","getTree","tree","getTransform","getActiveUniverseID","activeUniverseID","getView","view","getViewSize","viewSize","getCulledView","culledView","getActivePlaneID","activePlaneID","getIsolatePlane","isolatePlane","getLastClosedPlane","lastClosedPlane","toRadians","mathematics","geometry","initialState$2","camera","x","y","z","width","height","spaceSize","depth","topCorner","setSpaceField","field","setSpaceLoading","changeTransform","setTransform","resolvedTranslationX","resolvedTranslationY","resolvedTranslationZ","resolvedRotationX","resolvedRotationY","resolvedScale","setAnimatedTransform","setTransformTime","setSpaceLocation","newState","viewCameraMoveForward","TRANSLATION_STEP","Math","cos","sin","viewCameraMoveBackward","viewCameraMoveLeft","viewCameraMoveRight","viewCameraMoveUp","viewCameraMoveDown","viewCameraTurnUp","ROTATION_STEP","viewCameraTurnDown","viewCameraTurnLeft","viewCameraTurnRight","rotateUp","rotateDown","rotateX","rotateXWith","rotateLeft","rotateRight","rotateY","rotateYWith","translateUp","translateDown","translateLeft","translateRight","translateIn","translateOut","translateXWith","translateYWith","translateZWith","scaleUp","computedScale","SCALE_STEP","SCALE_UPPER_LIMIT","scaleDown","SCALE_LOWER_LIMIT","scaleUpWith","abs","scaleDownWith","setTree","setActiveUniverse","spaceResetTransform","setViewSize","setSpaceSize","updateSpaceTreePlane","updatedTree","updateTreePlane","updateSpaceLinkCoordinates","planeID","linkCoordinates","updateTreeByPlaneIDWithLinkCoordinates","spaceSetView","spaceSetCulledView","removePlane","logic","removePlaneFromTree","objects","clone","actions$3","reducer$3","space$1","initialState$1","plurid","themes","setGeneralTheme","setInteractionTheme","actions$2","getGeneralTheme","getInteractionTheme","selectors$2","reducer$2","themes$1","ui","toolbarScrollPosition","setUIToolbarScrollPosition","actions$1","getToolbarScrollPosition","selectors$1","reducer$1","modules","combineReducers","store","preloadedState","configureStore","devTools","StateContext","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Context","degToRad$1","radToDeg","multiplyMatricesArray","translateMatrix$1","rotateYMatrix","matrixToCSSMatrix","arrayToMatrix","inverseMatrix","getTransformRotate","getTransformTranslate","getTransformScale","matrix3d","rotateMatrix$1","translateMatrixArray","scaleMatrix$1","multiplyArrayOfMatrices$1","computeApplication","origin","appConfiguration","merge","currentView","absoluteView","viewItem","viewPath","push","route","registrarPlanes","getAll","computedTree","Tree","compute","data","useAnimatedTransform","timeout","dispatch","dispatchSetAnimatedTransform","clearTimeout","setTimeout","PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT","factoryUseAnimatedTransform","navigateToPluridPlane","event","deisolate","ctrlKey","metaKey","dispatchSetSpaceField","location","translateX","translateY","translateZ","inverseTransformMatrix","matrix3dTransformMatrix","rotate","translate","zSign1","zSign2","xOffset","parentPlaneID","newMatrix","getMatrix3d","computePlaneLocation","selector","FOCUS_ANCHOR_SUFFIX","focusAnchor","document","querySelector","focus","focusPluridPlaneAnchor","getActivePlane","getTreePlaneByID","treePlane","findRootIndex","currentRootIndex","index","entries","children","rootIndex","navigateToRoot","root","length","focusPreviousRoot","focusNextRoot","focusRootIndex","handleGlobalShortcuts","pubsub","locks","defaultPrevented","dom","verifyPathInputElement","getEventPath","noModifiers","shiftKey","altKey","handleEvent","preventDefault","code","ROTATION","TRANSLATION","SCALE","key","activePlane","focusActivePlane","parentPlane","focusParentActivePlane","id","publish","topic","PLURID_PUBSUB_TOPIC","REFRESH_PLANE","refreshActivePlane","ISOLATE_PLANE","isolateActivePlane","OPEN_CLOSED_PLANE","openClosedPlane","CLOSE_PLANE","closeActivePlane","startsWith","parseInt","replace","loadHammer","__esModule","n","create","keys","forEach","k","d","getOwnPropertyDescriptor","get","enumerable","_interopNamespace","require$$15","GlobalStyle","createGlobalStyle","preventOverscroll","fontFamilySansSerif","StyledView","div","props","fullHeight","backgroundColorTertiary","backgroundColorPrimary","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","createElement","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","hue","saturation","lightness","boxShadowUmbra","colorPrimary","planeControls","StyledFocusAnchor","a","StyledPluridPlaneBridge","backgroundColorDark","ConnectedPluridPlaneBridge","connect","stateGeneralTheme","stateConfiguration","context","properties","PLURID_ENTITY_PLANE_BRIDGE","ControlRefresh","refreshing","refreshPlane","PluridIconReset","atClick","title","style","pointerEvents","ControlIsolate","isolated","fill","PluridIconRectangle","StyledPluridPlaneControls","boxShadowUmbraInset","styleCommonControls","css","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","ConnectedPluridPlaneControls","stateInteractionTheme","stateIsolatePlane","parentTreePlane","closePlane","pathbar","routeDivisions","protocol","host","encodeURIComponent","path","setPath","useState","PLURID_ENTITY_PLANE_CONTROLS","PluridIconArrowLeft","PluridIconFrame","Fragment","PluridIconDelete","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","ref","PLURID_ENTITY_PLANE_CONTENT","ConnectedPluridPlane","stateTree","stateViewSize","stateActivePlaneID","dispatchUpdateSpaceTreePlane","useContext","planeRenderError","defaultPubSub","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","planeRef","remountKey","setRemountKey","setRefreshing","setMouseOver","REFRESH_TIMEOUT","debouncedSetActivePlane","useDebouncedCallback","useEffect","refreshPlaneIndex","subscribe","callback","unsubscribe","focusAnchorID","isolatePlaneOpacity","computeIsolatePlaneOpacity","isolatePointerEvents","computeIsolatePointerEvents","cleanTemplate","planeContentProperties","onMouseEnter","onMouseLeave","onMouseOver","onMouseMove","PLURID_ENTITY_PLANE","tabIndex","isReactRenderable","component","url","StyledPluridRoot","ConnectedPluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","computeChildrenPlanes","planesRegistry","child","sourceID","renderPlane","Plane","pluridProperty","absolute","fragments","parameters","query","match","pubSub","renderablePlane","renderableCustomPlane","planeProperties","Provider","childrenPlanes","useMemo","JSON","stringify","pluridPlaneID","pluridPlane","PLURID_ENTITY_ROOT","StyledPluridRoots","ConnectedPluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","stateResolvedLayout","transition","PLURID_ENTITY_ROOTS","map","StyledPluridSpace","fadeInTime","ConnectedPluridSpace","isMounted","setIsMounted","PLURID_ENTITY_SPACE","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","ConnectedOrigin","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","fadeIn","keyframes","fadeInAnimation","MENUS","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","ConnectedPluridMenuUniverses","interactionTheme","dispatchSetActiveUniverse","documentID","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","universal","ConnectedPluridDrawer","heading","items","toggle","onClick","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","inputs","Dropdown","PluridDropdown$1","ConnectedPluridMenuMoreGlobal","stateLanguage","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","Switch","PluridSwitch$3","ConnectedPluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","multimode","dispatchSetConfigurationSpaceTransformTouch","touch","dispatchSetConfigurationSpaceTransformLocks","lock","toolbarDrawerTransformMultiModeTransform","checked","atChange","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","ConnectedPluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","PluridSwitch$1","ConnectedPluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","PluridSwitch","ConnectedPluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","PluridSlider","ConnectedPluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdate","toolbarDrawerTechnicalCullingDistance","ConnectedPluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","drawer","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","ConnectedPluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","drawers","menus","resolvedMenus","menu","resolveMenus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","left","right","up","down","events","ConnectedPluridTransformArrow","direction","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","eventData","srcEvent","clearInterval","setInterval","Hammer","on","off","ConnectedPluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","StyledPluridToolbarScale","ConnectedPluridToolbarScale","PluridIconScale","toolbarTransformScale","StyledPluridToolbarTranslate","ConnectedPluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","ConnectedPluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","mode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","handleShowMenu","MORE","PluridIconMore","UNIVERSES","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","zoneCodes","frontTopLeft","frontTopCenter","frontTopRight","frontMiddleLeft","frontMiddleCenter","frontMiddleRight","frontBottomLeft","frontBottomCenter","frontBottomRight","rightTopLeft","rightTopCenter","rightTopRight","rightMiddleLeft","rightMiddleCenter","rightMiddleRight","rightBottomLeft","rightBottomCenter","rightBottomRight","backTopLeft","backTopCenter","backTopRight","backMiddleLeft","backMiddleCenter","backMiddleRight","backBottomLeft","backBottomCenter","backBottomRight","leftTopLeft","leftTopCenter","leftTopRight","leftMiddleLeft","leftMiddleCenter","leftMiddleRight","leftBottomLeft","leftBottomCenter","leftBottomRight","topTopLeft","topTopCenter","topTopRight","topMiddleLeft","topMiddleCenter","topMiddleRight","topBottomLeft","topBottomCenter","topBottomRight","baseTopLeft","baseTopCenter","baseTopRight","baseMiddleLeft","baseMiddleCenter","baseMiddleRight","baseBottomLeft","baseBottomCenter","baseBottomRight","faceTransform","A1","A2","A3","B1","B2","B3","C1","C2","C3","A4","A5","B4","B5","C4","C5","A6","A7","B6","B7","C6","C7","A8","B8","C8","D1","E1","ConnectedPluridViewcubeFace","generalTheme","dispatchRotateX","angleX","dispatchRotateY","angleY","animated","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","opaqueFace","handleClick","zoneCode","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","ConnectedPluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","offsets","transformOrigins","computeTransform","suppressHydrationWarning","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","ConnectedPluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","PLURID_ENTITY_VIEWCUBE","gridArea","PluridIconGlobal","PluridViewContainer","_properties","ConnectedPluridView","stateTransform","stateSpaceLoading","stateSpaceView","dispatchSetConfiguration","dispatchSetConfigurationMicro","dispatchSpaceSetViewSize","dispatchSetSpaceLoading","dispatchSetTransformTime","dispatchSetSpaceLocation","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchTranslateZWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetView","planeNotFound","hostname","viewElement","scrollTimeout","pluridPubSub","setPluridPubSub","setPreventOverscroll","shortcutsCallback","useCallback","wheelCallback","PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT","handlePreventOverscroll","transformModes","rotation","translation","modes","deltas","deltaX","deltaY","getWheelDirection","directions","handleGlobalWheel","treeUpdate","statePlane","computedPlane","equals","treeUpdateCallback","handlePubSubSubscribe","subscriptions","CONFIGURATION","internal","computedConfiguration","SPACE_TRANSFORM","SPACE_ANIMATED_TRANSFORM","time","SPACE_ROTATE_X_WITH","SPACE_ROTATE_X_TO","SPACE_ROTATE_Y_WITH","SPACE_ROTATE_Y_TO","SPACE_TRANSLATE_X_WITH","SPACE_TRANSLATE_X_TO","SPACE_TRANSLATE_Y_WITH","SPACE_TRANSLATE_Y_TO","SPACE_TRANSLATE_Z_WITH","SPACE_TRANSLATE_Z_TO","VIEW_ADD_PLANE","updatedView","VIEW_SET_PLANES","VIEW_REMOVE_PLANE","NAVIGATE_TO_PLANE","find","forceShow","togglePlaneFromTree","PREVIOUS_ROOT","NEXT_ROOT","NAVIGATE_TO_ROOT","focusRootID","indexes","subscription","handlePubSubPublish","internalTransform","handleSwipe","velocity","distance","rotationMode","translationMode","scalationMode","handlePan","rotationVelocity","translationVelocity","scaleVelocity","handlePinch","handlePinchin","handlePinchout","passive","handleResize","meta","debounce","offsetWidth","offsetHeight","PLURID_DEFAULT_RESIZE_DEBOUNCE_TIME","defaults","cssProps","userSelect","userDrag","tapHighlightColor","touchSelect","set","DIRECTION_ALL","enable","handleGamepadConnect","navigator","getGamepads","gamepad","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","registerPubSub","pluridPubSubs","PLURID_ENTITY_VIEW","PluridApplication","storeID","prepare","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","computePluridRoute","isoMatcher","directPlane","kind","renderDirectPlane","notFoundRoute","exterior","spaces","slotted","resolver","pluridRouteProperty","PluridRouteExterior","displayName","pluridApplication","PluridRoute","_a","_b","_c","_d","_e","_f","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","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","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","pluridPlanesRegistrar","App","uuid","generate","pluridPlanes","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","renderMultispace","routePlane","flat","pluridRoute","Flat","DirectPlane","PluridScrollTop","StyledFadeIn","FadeIn","fadedIn","setFadedIn","PluridRouterBrowser","routes","shell","scrollToTop","fadeInProperty","staticContext","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","link","gatherPluridPlanes","topContainer","pluridIsoMatcher","routePlanes","mounted","useMounted","matchedPath","setMatchedPath","pathname","search","computeInitialMatchedPath","setMatchedRoute","setPluridRoute","handleLocation","detail","behavior","scrollIntoView","PluridRouterExterior","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterShell","PluridRouterStatic","protocolProperty","hostnameProperty","gateway","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","routerProperties","PluridProvider","metastate","defaultLinkCoordinates","PluridPortal","elementID","rootID","target","usePortal","createPortal","StyledPluridPlanePreview","ConnectedPluridPlanePreview","planeRoute","previewComponent","previewOffsetX","previewOffsetY","resolvedLinkCoordinates","StyledPluridLink","devisible","suffix","ConnectedPluridLink","stateLastClosedPlane","dispatchUpdateSpaceLinkCoordinates","dispatchRemovePlane","devisibleProperty","suffixProperty","className","preview","previewFadeIn","previewFadeOut","previewAppearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_IN","previewDisappearTime","PLURID_DEFAULT_CONFIGURATION_LINK_PREVIEW_FADE_OUT","planeRouteResolved","absolutePlaneRoute","network","PLURID_DEFAULT_CONFIGURATION_LINK_SUFFIX","linkElement","hoverInTimeout","hoverOutTimeout","showPreview","setShowPreview","showLink","setShowLink","setPluridPlaneID","setParentPlaneID","setLinkCoordinates","getPluridLinkCoordinates","partialTop","partialLeft","staticSet","searching","top","getComputedStyle","position","offsetTop","offsetLeft","scrollLeft","parentElement","dataset","pluridEntity","planeControlsHeight","debouncedUpdateLinkCoordinates","newLinkCoordinates","updatePlaneLocation","updateLinkCoordinates","togglePlane","updatedPlane","handlePlaneNavigation","handleShowPluridPlane","toggleLinkFromTree","updatedTreePlane","updateTreeWithNewPlane","updateTreeWithLink","defocusLink","blur","newParentPlaneID","assignTreePlaneToLink","openClosedPlaneIndex","closePlaneIndex","getElementById","onKeyUp","handleKeyUp","PLURID_ENTITY_LINK","commonStyle","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","themeProperty","pluridRouterNavigate","open","renderProperties","href","StyledPluridApplicationConfigurator","ConnectedPluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","StyledPluridPlaneConfigurator","ConnectedPluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","StyledExternalPlane","ConnectedExternalPlane","setComponent","domain","getPttpUrl","pttpPath","getPttpPath","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","elementRequest","StyledIframePlane","ConnectedIframePlane","src","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","ConnectedPluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","arithmetic","sum","i","item","random","renderRows","StyledPluridPlaneDebugger","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","ConnectedPluridSpaceDebugger","serverComputeMetastate","isoMatch","paths","globals","pluridApplications","routeData","plurids","clusters","cluster","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","collectApplicationsFromPath","states","application","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","PluridPlaneBridge","PluridPlaneControls","PluridPlaneDebugger","PluridSpaceDebugger","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","ExternalPlane","IframePlane","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","PluridApplicationConfigurator","PluridExternalPlane","PluridIframePlane","PluridLink","PluridPlaneConfigurator","PluridVirtualList","getDirectPlaneMatch","matchRoute","matchPlane","matchPath","planePath","pluridStateModules","usePluridRouter","routerValue","setRouterValue","fetchState","loadState"],"mappings":"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"}