@plurid/plurid-react 0.0.0-33 → 0.0.0-35

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 (150) hide show
  1. package/README.md +42 -90
  2. package/distribution/index.d.mts +1440 -0
  3. package/distribution/index.d.ts +1345 -107
  4. package/distribution/index.js +10262 -5662
  5. package/distribution/index.js.map +1 -1
  6. package/distribution/index.mjs +11160 -0
  7. package/distribution/index.mjs.map +1 -0
  8. package/package.json +113 -121
  9. package/distribution/components/links/Link/components/Preview/index.d.ts +0 -28
  10. package/distribution/components/links/Link/components/Preview/styled.d.ts +0 -7
  11. package/distribution/components/links/Link/index.d.ts +0 -42
  12. package/distribution/components/links/Link/styled.d.ts +0 -7
  13. package/distribution/components/links/RouterLink/index.d.ts +0 -20
  14. package/distribution/components/links/RouterLink/styled.d.ts +0 -6
  15. package/distribution/components/planes/ExternalPlane/index.d.ts +0 -20
  16. package/distribution/components/planes/ExternalPlane/styled.d.ts +0 -5
  17. package/distribution/components/planes/IframePlane/index.d.ts +0 -20
  18. package/distribution/components/planes/IframePlane/styled.d.ts +0 -5
  19. package/distribution/components/structural/Plane/components/PlaneBridge/index.d.ts +0 -22
  20. package/distribution/components/structural/Plane/components/PlaneBridge/styled.d.ts +0 -9
  21. package/distribution/components/structural/Plane/components/PlaneContent/index.d.ts +0 -6
  22. package/distribution/components/structural/Plane/components/PlaneContent/styled.d.ts +0 -1
  23. package/distribution/components/structural/Plane/components/PlaneControls/components/ControlIsolate/index.d.ts +0 -9
  24. package/distribution/components/structural/Plane/components/PlaneControls/components/ControlRefresh/index.d.ts +0 -9
  25. package/distribution/components/structural/Plane/components/PlaneControls/components/SearchItem/index.d.ts +0 -25
  26. package/distribution/components/structural/Plane/components/PlaneControls/components/SearchItem/styled.d.ts +0 -1
  27. package/distribution/components/structural/Plane/components/PlaneControls/components/SearchList/index.d.ts +0 -23
  28. package/distribution/components/structural/Plane/components/PlaneControls/components/SearchList/styled.d.ts +0 -2
  29. package/distribution/components/structural/Plane/components/PlaneControls/index.d.ts +0 -40
  30. package/distribution/components/structural/Plane/components/PlaneControls/styled.d.ts +0 -11
  31. package/distribution/components/structural/Plane/components/PlaneDebugger/index.d.ts +0 -17
  32. package/distribution/components/structural/Plane/components/PlaneDebugger/styled.d.ts +0 -1
  33. package/distribution/components/structural/Plane/index.d.ts +0 -36
  34. package/distribution/components/structural/Plane/styled.d.ts +0 -11
  35. package/distribution/components/structural/Root/index.d.ts +0 -20
  36. package/distribution/components/structural/Root/styled.d.ts +0 -1
  37. package/distribution/components/structural/Roots/index.d.ts +0 -23
  38. package/distribution/components/structural/Roots/styled.d.ts +0 -3
  39. package/distribution/components/structural/Space/components/SpaceDebugger/index.d.ts +0 -17
  40. package/distribution/components/structural/Space/components/SpaceDebugger/styled.d.ts +0 -1
  41. package/distribution/components/structural/Space/index.d.ts +0 -19
  42. package/distribution/components/structural/Space/styled.d.ts +0 -8
  43. package/distribution/components/utilities/ApplicationConfigurator/index.d.ts +0 -25
  44. package/distribution/components/utilities/ApplicationConfigurator/styled.d.ts +0 -1
  45. package/distribution/components/utilities/ErrorBoundary/index.d.ts +0 -18
  46. package/distribution/components/utilities/NotFound/index.d.ts +0 -17
  47. package/distribution/components/utilities/NotFound/styled.d.ts +0 -1
  48. package/distribution/components/utilities/Origin/index.d.ts +0 -19
  49. package/distribution/components/utilities/Origin/styled.d.ts +0 -7
  50. package/distribution/components/utilities/PlaneConfigurator/index.d.ts +0 -20
  51. package/distribution/components/utilities/PlaneConfigurator/styled.d.ts +0 -1
  52. package/distribution/components/utilities/Portal/index.d.ts +0 -15
  53. package/distribution/components/utilities/Toolbar/Button/index.d.ts +0 -15
  54. package/distribution/components/utilities/Toolbar/Button/styled.d.ts +0 -13
  55. package/distribution/components/utilities/Toolbar/General/components/Drawer/index.d.ts +0 -26
  56. package/distribution/components/utilities/Toolbar/General/components/Drawer/styled.d.ts +0 -3
  57. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Global/index.d.ts +0 -26
  58. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Shortcuts/index.d.ts +0 -18
  59. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Space/index.d.ts +0 -25
  60. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Technical/index.d.ts +0 -22
  61. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Toolbar/index.d.ts +0 -27
  62. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Transform/index.d.ts +0 -24
  63. package/distribution/components/utilities/Toolbar/General/components/MenuMore/components/Viewcube/index.d.ts +0 -25
  64. package/distribution/components/utilities/Toolbar/General/components/MenuMore/data.d.ts +0 -9
  65. package/distribution/components/utilities/Toolbar/General/components/MenuMore/index.d.ts +0 -26
  66. package/distribution/components/utilities/Toolbar/General/components/MenuMore/styled.d.ts +0 -3
  67. package/distribution/components/utilities/Toolbar/General/components/MenuUniverses/index.d.ts +0 -20
  68. package/distribution/components/utilities/Toolbar/General/components/MenuUniverses/styled.d.ts +0 -4
  69. package/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/index.d.ts +0 -32
  70. package/distribution/components/utilities/Toolbar/General/components/ToolbarRotate/styled.d.ts +0 -1
  71. package/distribution/components/utilities/Toolbar/General/components/ToolbarScale/index.d.ts +0 -30
  72. package/distribution/components/utilities/Toolbar/General/components/ToolbarScale/styled.d.ts +0 -1
  73. package/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/index.d.ts +0 -34
  74. package/distribution/components/utilities/Toolbar/General/components/ToolbarTranslate/styled.d.ts +0 -1
  75. package/distribution/components/utilities/Toolbar/General/components/TransformArrow/data.d.ts +0 -7
  76. package/distribution/components/utilities/Toolbar/General/components/TransformArrow/index.d.ts +0 -24
  77. package/distribution/components/utilities/Toolbar/General/components/TransformArrow/styled.d.ts +0 -6
  78. package/distribution/components/utilities/Toolbar/General/data.d.ts +0 -6
  79. package/distribution/components/utilities/Toolbar/General/index.d.ts +0 -25
  80. package/distribution/components/utilities/Toolbar/General/styled.d.ts +0 -29
  81. package/distribution/components/utilities/UniverseExplorer/index.d.ts +0 -20
  82. package/distribution/components/utilities/UniverseExplorer/styled.d.ts +0 -2
  83. package/distribution/components/utilities/Viewcube/components/ViewcubeFace/data.d.ts +0 -391
  84. package/distribution/components/utilities/Viewcube/components/ViewcubeFace/index.d.ts +0 -38
  85. package/distribution/components/utilities/Viewcube/components/ViewcubeFace/styled.d.ts +0 -16
  86. package/distribution/components/utilities/Viewcube/components/ViewcubeModel/index.d.ts +0 -22
  87. package/distribution/components/utilities/Viewcube/components/ViewcubeModel/styled.d.ts +0 -3
  88. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/data.d.ts +0 -5
  89. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/index.d.ts +0 -11
  90. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/TransformArea/styled.d.ts +0 -17
  91. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/index.d.ts +0 -17
  92. package/distribution/components/utilities/Viewcube/components/ViewcubeTransformAreas/styled.d.ts +0 -13
  93. package/distribution/components/utilities/Viewcube/index.d.ts +0 -27
  94. package/distribution/components/utilities/Viewcube/styled.d.ts +0 -19
  95. package/distribution/components/virtuals/List/components/ListItem/index.d.ts +0 -9
  96. package/distribution/components/virtuals/List/index.d.ts +0 -21
  97. package/distribution/components/virtuals/List/styled.d.ts +0 -1
  98. package/distribution/containers/Application/View/Container/index.d.ts +0 -5
  99. package/distribution/containers/Application/View/index.d.ts +0 -72
  100. package/distribution/containers/Application/View/styled.d.ts +0 -8
  101. package/distribution/containers/Application/index.d.ts +0 -20
  102. package/distribution/containers/Provider/context.d.ts +0 -4
  103. package/distribution/containers/Provider/index.d.ts +0 -12
  104. package/distribution/containers/RouterBrowser/FadeIn/index.d.ts +0 -6
  105. package/distribution/containers/RouterBrowser/FadeIn/styled.d.ts +0 -3
  106. package/distribution/containers/RouterBrowser/index.d.ts +0 -7
  107. package/distribution/containers/RouterBrowser/styled.d.ts +0 -1
  108. package/distribution/containers/RouterStatic/index.d.ts +0 -19
  109. package/distribution/data/constants/index.d.ts +0 -3
  110. package/distribution/data/interfaces/index.d.ts +0 -20
  111. package/distribution/data/interfaces/utility.d.ts +0 -3
  112. package/distribution/index.es.js +0 -6523
  113. package/distribution/index.es.js.map +0 -1
  114. package/distribution/index.min.js +0 -6308
  115. package/distribution/index.min.js.map +0 -1
  116. package/distribution/services/context/index.d.ts +0 -5
  117. package/distribution/services/engine/index.d.ts +0 -22
  118. package/distribution/services/hooks/event/index.d.ts +0 -4
  119. package/distribution/services/hooks/index.d.ts +0 -2
  120. package/distribution/services/hooks/router/index.d.ts +0 -1
  121. package/distribution/services/logic/animation/index.d.ts +0 -16
  122. package/distribution/services/logic/computing/index.d.ts +0 -17
  123. package/distribution/services/logic/router/index.d.ts +0 -40
  124. package/distribution/services/logic/router/styled.d.ts +0 -5
  125. package/distribution/services/logic/server/index.d.ts +0 -3
  126. package/distribution/services/logic/shortcuts/index.d.ts +0 -114
  127. package/distribution/services/logic/shortcuts/logic.d.ts +0 -6
  128. package/distribution/services/logic/state/index.d.ts +0 -3
  129. package/distribution/services/logic/transform/index.d.ts +0 -3
  130. package/distribution/services/state/actions/index.d.ts +0 -258
  131. package/distribution/services/state/context/index.d.ts +0 -3
  132. package/distribution/services/state/hooks/index.d.ts +0 -4
  133. package/distribution/services/state/modules/configuration/index.d.ts +0 -78
  134. package/distribution/services/state/modules/general/index.d.ts +0 -10
  135. package/distribution/services/state/modules/index.d.ts +0 -16
  136. package/distribution/services/state/modules/shortcuts/index.d.ts +0 -16
  137. package/distribution/services/state/modules/space/index.d.ts +0 -151
  138. package/distribution/services/state/modules/space/selectors.d.ts +0 -23
  139. package/distribution/services/state/modules/space/types.d.ts +0 -41
  140. package/distribution/services/state/modules/themes/index.d.ts +0 -22
  141. package/distribution/services/state/modules/ui/index.d.ts +0 -16
  142. package/distribution/services/state/selectors/index.d.ts +0 -62
  143. package/distribution/services/state/store/development/index.d.ts +0 -5
  144. package/distribution/services/state/store/index.d.ts +0 -23
  145. package/distribution/services/state/store/production/index.d.ts +0 -5
  146. package/distribution/services/state/store/reducer/index.d.ts +0 -10
  147. package/distribution/services/styled/index.d.ts +0 -2
  148. package/distribution/services/utilities/environment/index.d.ts +0 -7
  149. package/distribution/services/utilities/imports/index.d.ts +0 -49
  150. package/distribution/services/utilities/react/index.d.ts +0 -3
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.min.js","sources":["index.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar pluridData = require(\"@plurid/plurid-data\");\n\nvar pluridEngine = require(\"@plurid/plurid-engine\");\n\nvar PluridPubSub = require(\"@plurid/plurid-pubsub\");\n\nvar React = require(\"react\");\n\nvar reactRedux = require(\"react-redux\");\n\nvar toolkit = require(\"@reduxjs/toolkit\");\n\nvar pluridFunctions = require(\"@plurid/plurid-functions\");\n\nvar themes$2 = require(\"@plurid/plurid-themes\");\n\nvar styled = require(\"styled-components\");\n\nvar pluridFunctionsReact = require(\"@plurid/plurid-functions-react\");\n\nvar pluridIconsReact = require(\"@plurid/plurid-icons-react\");\n\nvar pluridUiComponentsReact = require(\"@plurid/plurid-ui-components-react\");\n\nvar reactDom = require(\"react-dom\");\n\nvar fetch = require(\"cross-fetch\");\n\nvar elementqlClientReact = require(\"@plurid/elementql-client-react\");\n\nfunction _interopDefault(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n}\n\nvar PluridPubSub__default = _interopDefault(PluridPubSub);\n\nvar React__default = _interopDefault(React);\n\nvar themes__default = _interopDefault(themes$2);\n\nvar styled__default = _interopDefault(styled);\n\nvar fetch__default = _interopDefault(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) => Object.assign({}, action.payload),\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 actions: actions$6,\n configuration: configuration,\n getConfiguration: getConfiguration,\n reducer: reducer$6,\n selectors: selectors$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 actions: actions$5,\n general: general,\n getGeneral: getGeneral,\n reducer: reducer$5,\n selectors: selectors$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 actions: actions$4,\n getGlobal: getGlobal,\n reducer: reducer$4,\n selectors: selectors$4,\n shortcuts: shortcuts\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 getActivePlaneID: getActivePlaneID,\n getActiveUniverseID: getActiveUniverseID,\n getAnimatedTransform: getAnimatedTransform,\n getCulledView: getCulledView,\n getIsolatePlane: getIsolatePlane,\n getLastClosedPlane: getLastClosedPlane,\n getLoading: getLoading,\n getResolvedLayout: getResolvedLayout,\n getRotationX: getRotationX,\n getRotationY: getRotationY,\n getScale: getScale,\n getSpace: getSpace,\n getTransform: getTransform,\n getTransformMatrix: getTransformMatrix,\n getTransformTime: getTransformTime,\n getTranslationX: getTranslationX,\n getTranslationY: getTranslationY,\n getTranslationZ: getTranslationZ,\n getTree: getTree,\n getView: getView,\n getViewSize: getViewSize\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 actions: actions$3,\n name: name,\n reducer: reducer$3,\n selectors: selectors$3,\n space: space\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 actions: actions$2,\n getGeneralTheme: getGeneralTheme,\n getInteractionTheme: getInteractionTheme,\n reducer: reducer$2,\n selectors: selectors$2,\n themes: themes\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 actions: actions$1,\n getToolbarScrollPosition: getToolbarScrollPosition,\n reducer: reducer$1,\n selectors: selectors$1,\n ui: ui\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 import(\"hammerjs\");\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, true);\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, undefined, true);\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, undefined, true);\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, JSON.stringify(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), JSON.stringify(stateConfiguration) ]);\n React.useEffect((() => {\n for (const pubsub of pluridPubSub) {\n handlePubSubPublish(pubsub);\n }\n }), [ pluridPubSub.length, JSON.stringify(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","_interopDefault","e","__esModule","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","state","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","initialState$4","actions$5","getGeneral","selectors$5","reducer$5","general$1","initialState$3","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","innerWidth","window","innerHeight","transformOriginX","transformOriginY","transformOriginZ","rotationMatrix","translationMatrix","scalationMatrix","transformMatrix","transform","focusPluridPlaneAnchor","planeID","selector","FOCUS_ANCHOR_SUFFIX","focusAnchor","document","querySelector","focus","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","selectors$3","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","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","toolbarScrollPosition","ui","setUIToolbarScrollPosition","actions$1","getToolbarScrollPosition","selectors$1","reducer$1","ui$1","modules","combineReducers","store$1","preloadedState","configureStore","devTools","store","StateContext","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","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","registrar","registrarPlanes","getAll","spaceTree","Tree","computedTree","compute","data","computePlaneLocation","location","translateX","translateY","translateZ","inverseTransformMatrix","matrix3dTransformMatrix","rotate","translate","getMatrix3d","zSign1","zSign2","xOffset","parentPlaneID","newMatrix","factoryUseAnimatedTransform","timeout","dispatch","dispatchSetAnimatedTransform","clearTimeout","setTimeout","PLURID_DEFAULT_ANIMATED_TRANSFORM_TIMEOUT","useAnimatedTransform","navigateToPluridPlane","event","deisolate","ctrlKey","metaKey","dispatchSetTransform","dispatchSetSpaceField","getActivePlane","treePlane","getTreePlaneByID","focusActivePlane","activePlane","focusParentActivePlane","parentPlane","findRootIndex","currentRootIndex","index","entries","children","rootIndex","navigateToRoot","treeIndex","root","length","focusPreviousRoot","focusNextRoot","focusRootIndex","focusRootID","id","find","refreshActivePlane","pubsub","publish","topic","PLURID_PUBSUB_TOPIC","REFRESH_PLANE","isolateActivePlane","ISOLATE_PLANE","openClosedPlane","OPEN_CLOSED_PLANE","closeActivePlane","CLOSE_PLANE","handleGlobalShortcuts","locks","defaultPrevented","inputOnPath","dom","verifyPathInputElement","getEventPath","noModifiers","shiftKey","altKey","handleEvent","preventDefault","code","ROTATION","TRANSLATION","SCALE","key","startsWith","parseInt","replace","handleGlobalWheel","modes","rotation","translation","deltas","deltaX","deltaY","absoluteThreshold","direction","getWheelDirection","directions","left","right","up","down","loadHammer","hammer","import","GlobalStyle","createGlobalStyle","preventOverscroll","fontFamilySansSerif","StyledView","div","props","fullHeight","foregroundGradient","backgroundColorTertiary","backgroundColorPrimary","backgroundGradient","ErrorBoundary","Component","constructor","super","this","hasError","static","error","componentDidCatch","errorInfo","render","renderError","createElement","StyledPluridPlane","mouseOver","planeOpacity","backgroundColorPrimaryAlpha","decomposedColor","decomposeColor","color","hue","saturation","lightness","boxShadowUmbra","colorPrimary","planeControls","StyledFocusAnchor","a","StyledPluridPlaneBridge","backgroundColorDark","PluridPlaneBridge","properties","stateGeneralTheme","stateConfiguration","PLURID_ENTITY_PLANE_BRIDGE","mapStateToProperties$i","mapDispatchToProperties$i","ConnectedPluridPlaneBridge","connect","context","ControlRefresh","refreshing","refreshPlane","PluridIconReset","atClick","title","style","pointerEvents","ControlIsolate","isolated","fill","PluridIconRectangle","StyledPluridPlaneControls","boxShadowUmbraInset","styleCommonControls","css","StyledPluridPlaneControlsLeft","StyledPluridPlaneControlsCenter","StyledPluridPlaneControlsRight","PluridPlaneControls","parentTreePlane","closePlane","stateIsolatePlane","pathbar","routeDivisions","protocol","host","gateway","encodeURIComponent","path","setPath","useState","PLURID_ENTITY_PLANE_CONTROLS","PluridIconArrowLeft","PluridIconFrame","Fragment","PluridIconDelete","mapStateToProps$f","stateInteractionTheme","mapDispatchToProps$f","ConnectedPluridPlaneControls","StyledPluridPlaneContent","PluridPlaneContent","planeContentElement","useRef","ref","PLURID_ENTITY_PLANE_CONTENT","PluridPlane","useContext","planeRenderError","defaultPubSub","stateTree","stateViewSize","stateActivePlaneID","dispatchUpdateSpaceTreePlane","planeWidth","showPlaneControls","numbers","checkIntegerNonUnit","planeRef","remountKey","setRemountKey","setRefreshing","setMouseOver","REFRESH_TIMEOUT","setActivePlane","debouncedSetActivePlane","useDebouncedCallback","computeIsolatePlaneOpacity","computeIsolatePointerEvents","useEffect","refreshPlaneIndex","subscribe","callback","unsubscribe","focusAnchorID","renderWidth","isolatePlaneOpacity","isolatePointerEvents","cleanTemplate","planeContentProperties","onMouseEnter","onMouseLeave","onMouseOver","onMouseMove","PLURID_ENTITY_PLANE","tabIndex","mapStateToProps$e","mapDispatchToProps$e","ConnectedPluridPlane","isReactRenderable","component","url","StyledPluridRoot","PluridRoot","planesRegistrar","planeContext","PlaneContext","planeContextValue","customPlane","matchedRoute","CustomPluridPlane","computeChildrenPlanes","planesRegistry","forEach","child","sourceID","get","renderPlane","Plane","pluridProperty","absolute","fragments","parameters","query","match","pubSub","renderablePlane","renderableCustomPlane","keyBase","planeProperties","Provider","childrenPlanes","useMemo","JSON","stringify","pluridPlaneID","pluridPlane","PLURID_ENTITY_ROOT","mapStateToProperties$h","mapDispatchToProperties$h","ConnectedPluridRoot","StyledPluridRoots","PluridRoots","spaceTransformMatrix","spaceAnimatedTransform","spaceTransformTime","stateResolvedLayout","transition","PLURID_ENTITY_ROOTS","map","mapStateToProperties$g","mapDispatchToProperties$g","ConnectedPluridRoots","StyledPluridSpace","fadeInTime","PluridSpace","isMounted","setIsMounted","PLURID_ENTITY_SPACE","mapStateToProperties$f","mapDispatchToProperties$f","ConnectedPluridSpace","resolveSize","SIZES","SMALL","NORMAL","LARGE","StyledOrigin","backgroundColorTertiaryAlpha","Origin","showTransformOrigin","transformOriginSize","PLURID_ENTITY_TRANSFORM_ORIGIN","mapStateToProperties$e","mapDispatchToProperties$e","ConnectedOrigin","fadeIn","keyframes","fadeInAnimation","MENUS","VIEW_SIZE_WIDTH_LIMIT","StyledToolbar","mouseIn","showMenu","NONE","StyledToolbarButtons","backgroundColorSecondary","showIcons","showTransformButtons","documentsBased","StyledToolbarButton","button","active","StyledIcon","StyledPluridMenuUniverses","afterline","StyledPluridMenuUniversesScroll","li","boxShadowUmbraColor","PluridMenuUniverses","interactionTheme","dispatchSetActiveUniverse","mapStateToProps$d","mapDispatchToProps$d","documentID","ConnectedPluridMenuUniverses","StyledPluridDrawer","toggled","StyledPluridDrawerHeading","StyledPluridDrawerItems","typography","Heading","PluridHeading","universal","PluridDrawer","heading","items","toggle","onClick","mapStateToProps$c","mapDispatchToProps$c","ConnectedPluridDrawer","StyledPluridMoreMenu","StyledPluridMoreMenuItem","last","StyledPluridMoreMenuScroll","inputs","Dropdown","PluridDropdown$1","PluridMenuMoreGlobal","stateLanguage","dispatchSetGeneralTheme","dispatchSetInteractionTheme","dispatchSetConfigurationThemeGeneralAction","dispatchSetConfigurationThemeInteractionAction","dispatchSetConfigurationLanguage","selectedTheme","generalThemeName","setGeneralThemeName","interactionThemeName","setInteractionThemeName","setLanguage","selectedLanguage","internatiolate","internationalization","fields","toolbarDrawerGlobalGeneralTheme","selectables","keys","selected","atSelect","selection","filterable","heightItems","fontSize","toolbarDrawerGlobalInteractionTheme","toolbarDrawerGlobalLanguage","languages","mapStateToProps$b","mapDispatchToProps$b","ConnectedPluridMenuMoreGlobal","Switch","PluridSwitch$3","PluridMenuMoreTransform","dispatchToggleConfigurationSpaceTransformMultimode","dispatchSetConfigurationSpaceTransformTouch","dispatchSetConfigurationSpaceTransformLocks","toolbarDrawerTransformMultiModeTransform","checked","atChange","exclusive","level","toolbarDrawerTransformAllowRotationX","toolbarDrawerTransformAllowRotationY","toolbarDrawerTransformAllowTranslationX","toolbarDrawerTransformAllowTranslationY","toolbarDrawerTransformAllowTranslationZ","toolbarDrawerTransformAllowScale","toolbarDrawerTransformTouchTransform","TRANSFORM_TOUCHES","PAN","SWIPE","mapStateToProps$a","mapDispatchToProps$a","multimode","touch","lock","ConnectedPluridMenuMoreTransform","PluridDropdown","PluridSwitch$2","Slider","PluridSlider$1","PluridMenuMoreSpace","dispatchSetConfigurationPlaneOpacity","dispatchToggleConfigurationSpaceTransparentUI","dispatchToggleConfigurationSpaceShowTransformOrigin","dispatchSetConfigurationSpaceTransformOriginSize","dispatchSetConfigurationSpaceLayoutType","layoutType","layoutNames","toolbarDrawerSpaceTransparentUserInterface","toolbarDrawerSpaceShowTransformOrigin","toolbarDrawerSpaceTransformOriginSize","toLowerCase","toUpperCase","toolbarDrawerSpacePlaneOpacity","max","min","defaultValue","thumbSize","toolbarDrawerSpaceLayoutType","values","mapStateToProps$9","mapDispatchToProps$9","ConnectedPluridMenuMoreSpace","PluridSwitch$1","PluridMenuMoreToolbar","dispatchToggleConfigurationToolbarConceal","dispatchToggleConfigurationToolbarTransformIcons","dispatchToggleConfigurationToolbarTransformButtons","dispatchToggleConfigurationToolbarOpaque","viewSizeSmall","setViewSizeSmall","toolbarDrawerToolbarAlwaysOpaque","toolbarDrawerToolbarShowTransformIcons","toolbarDrawerToolbarShowTransformArrows","toolbarDrawerToolbarConcealToolbar","mapStateToProps$8","mapDispatchToProps$8","ConnectedPluridMenuMoreToolbar","PluridSwitch","PluridMenuMoreViewcube","dispatchToggleConfigurationViewcubeHide","dispatchToggleConfigurationViewcubeButtons","dispatchToggleConfigurationViewcubeOpaque","dispatchToggleConfigurationViewcubeConceal","toolbarDrawerViewcubeShowViewcube","toolbarDrawerViewcubeShowTransformButtons","toolbarDrawerViewcubeAlwaysOpaque","toolbarDrawerViewcubeConcealViewcube","mapStateToProps$7","mapDispatchToProps$7","ConnectedPluridMenuMoreViewcube","PluridSlider","PluridMenuMoreTechnical","dispatchSetConfigurationSpaceCullingDistance","localCullingDistance","setLocalCullingDistance","dispatchCullingDistanceUpdateFunction","dispatchCullingDistanceUpdate","handleCullingDistance","toolbarDrawerTechnicalCullingDistance","mapStateToProps$6","mapDispatchToProps$6","ConnectedPluridMenuMoreTechnical","PluridMenuMoreShortcuts","defaultShortcuts","shortcut","shortcutData","shortcutsNames","internationalizedKey","modifier","modifierString","Array","isArray","reduce","total","element","internationalizedName","keyAsAny","keyName","mapStateToProps$5","mapDispatchToProps$5","ConnectedPluridMenuMoreShortcuts","moreMenusRecord","GLOBAL","toolbarDrawerGlobalTitle","drawer","TOOLBAR_DRAWERS","TRANSFORM","toolbarDrawerTransformTitle","SPACE","toolbarDrawerSpaceTitle","TOOLBAR","toolbarDrawerToolbarTitle","VIEWCUBE","toolbarDrawerViewcubeTitle","TECHNICAL","toolbarDrawerTechnicalTitle","SHORTCUTS","toolbarDrawerShortcutsTitle","moreMenus","resolveMenus","drawers","resolvedMenus","menu","PluridMoreMenu","stateToolbarMenuScrollPosition","dispatchToggleConfigurationToolbarToggleDrawer","dispatchSetUIToolbarScrollPosition","menus","moreMenuScrollElement","handleWheel","_event","current","scrollPosition","scrollTop","addEventListener","removeEventListener","moreMenu","mapStateToProperties$d","mapDispatchToProperties$d","ConnectedPluridMoreMenu","StyledPluridToolbarRotate","StyledPluridTransformArrow","pressed","arrowSigns","events","PluridTransformArrow","arrowSign","pressingInterval","arrowElement","setPressed","handleTouch","eventData","srcEvent","clearInterval","setInterval","handleMouseLeave","loadTouch","HammerImport","Hammer","on","off","mapStateToProps$4","mapDispatchToProps$4","ConnectedPluridTransformArrow","PluridToolbarRotate","toggleTransform","PluridIconRotate","toolbarTransformRotate","mapStateToProps$3","mapDispatchToProps$3","ConnectedPluridToolbarRotate","StyledPluridToolbarScale","PluridToolbarScale","PluridIconScale","toolbarTransformScale","mapStateToProps$2","mapDispatchToProps$2","ConnectedPluridToolbarScale","StyledPluridToolbarTranslate","PluridToolbarTranslate","PluridIconTranslate","toolbarTransformTranslate","mapStateToProperties$c","mapDispatchToProperties$c","ConnectedPluridToolbarTranslate","PluridToolbar","dispatchToggleConfigurationSpaceFirstPerson","dispatchSetConfigurationSpaceTransformMode","showToolbar","menuTimeout","setMouseIn","setShowMenu","setShowIcons","setShowTransformButtons","TYPE","handleShowMenu","PLURID_ENTITY_TOOLBAR","PluridIconFirstPerson","MORE","PluridIconMore","UNIVERSES","mapStateToProperties$b","mapDispatchToProperties$b","mode","ConnectedPluridToolbar","StyledPluridViewcube","StyledPluridViewcubeArrow","StyledPluridViewcubeArrowIcon","StyledFitView","StyledPluridViewcubeFace","colorTertiary","face","boxShadowPenumbraColor","StyledPluridViewcubeFaceZone","hovered","colorSecondary","faceTypes","topLeft","topCenter","topRight","middleLeft","middleCenter","middleRight","bottomLeft","bottomCenter","bottomRight","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","PluridViewcubeFace","faceText","hoveredZone","setHoveredZone","activeZone","setActiveZone","generalTheme","dispatchRotateX","dispatchRotateY","opaqueFace","handleClick","faceType","zoneCode","mapStateToProperties$a","mapDispatchToProperties$a","angleX","angleY","animated","ConnectedPluridViewcubeFace","StyledPluridViewcubeModel","StyledPluridViewcubeModelContainer","StyledPluridViewcubeModelCube","PluridViewcubeModel","spaceRotationX","spaceRotationY","stateAnimatedTransform","stateTransformTime","computeTransform","offsets","transformOrigins","suppressHydrationWarning","viewcubeFront","viewcubeBack","viewcubeLeft","viewcubeRight","viewcubeTop","viewcubeBase","mapStateToProperties$9","mapDispatchToProperties$9","ConnectedPluridViewcubeModel","PluridViewcube","dispatchRotateXWith","dispatchRotateYWith","dispatchSpaceResetTransform","showViewcube","animatedRotate","animatedReset","PLURID_ENTITY_VIEWCUBE","gridArea","PluridIconGlobal","mapStateToProperties$8","mapDispatchToProperties$8","ConnectedPluridViewcube","PluridViewContainer","_properties","PluridView","planeNotFound","hostname","stateTransform","stateSpaceView","dispatchSetConfiguration","dispatchSetSpaceLocation","dispatchSetTransformTime","dispatchSetTree","dispatchTranslateXWith","dispatchTranslateYWith","dispatchTranslateZWith","dispatchScaleUpWith","dispatchScaleDownWith","dispatchSpaceSetViewSize","dispatchSpaceSetView","viewElement","scrollTimeout","pluridPubSub","setPluridPubSub","setPreventOverscroll","handlePreventOverscroll","PLURID_DEFAULT_PREVENT_OVERSCROLL_TIMEOUT","resolveLayout","treeUpdate","shortcutsCallback","useCallback","wheelCallback","transformModes","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","forceShow","togglePlaneFromTree","PREVIOUS_ROOT","NEXT_ROOT","NAVIGATE_TO_ROOT","indexes","subscription","handlePubSubPublish","internalTransform","registerPubSub","pluridPubSubs","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","gamepad","navigator","getGamepads","handleGamepadDisconnect","unsubscribers","unsubscriber","pluridContext","PLURID_ENTITY_VIEW","mapStateToProperties$7","stateSpaceLoading","mapDispatchToProperties$7","dispatchSetConfigurationMicro","dispatchSetSpaceLoading","ConnectedPluridView","PluridApplication","storeID","prepare","computeStore","subscribeStore","componentDidUpdate","updatedStore","componentWillUnmount","storeUnubscriber","precomputedState","useLocalStorage","currentState","getState","localState","local","load","contextState","localStorage","stateData","setItem","contextType","StyledSpaces","alignment","snapType","collectApplicationsFromPath","isoMatch","globals","spaces","kind","routeData","resolver","plurids","planeData","PLURID_ROUTE_DEFAULT_PATH_VALUE","PLURID_ROUTE_DEFAULT_PATH","utilities","cleanPathElement","PLURID_ROUTE_DEFAULT_SPACE_VALUE","PLURID_ROUTE_DEFAULT_SPACE","universes","universe","clusters","cluster","PLURID_ROUTE_DEFAULT_UNIVERSE_VALUE","PLURID_ROUTE_DEFAULT_UNIVERSE","PLURID_ROUTE_DEFAULT_CLUSTER_VALUE","PLURID_ROUTE_DEFAULT_CLUSTER","pluridApplication","pluridPlanes","gatherPluridPlanes","routes","planeRoute","link","renderMultispace","_a","_b","_c","_d","_e","_f","pluridRouteProperty","exterior","slotted","multispaceAlignment","multispace","multispaceSnapType","PluridExterior","PluridSpaces","spacesArray","pathName","spaceName","universeName","clusterName","planeName","pathDivisions","fullPath","join","PLURID_ROUTE_SEPARATOR","pluridPlanesRegistrar","App","uuid","generate","MultispaceHeader","MultispaceFooter","header","footer","PLURID_ENTITY_MULTISPACE","PluridRoute","computePluridRoute","isoMatcher","directPlane","DirectPlane","renderDirectPlane","notFoundRoute","notFoundRender","PluridRouteExterior","displayName","computeInitialMatchedPath","staticContext","pathname","search","getDirectPlaneMatch","matchedPath","matchRoute","matchPlane","matchPath","planePath","routePlane","flat","renderFlat","pluridRoute","Flat","PluridScrollTop","StyledFadeIn","FadeIn","fadedIn","setFadedIn","PluridRouterBrowser","shell","scrollToTop","fadeInProperty","cleanNavigationView","cleanNavigation","notFoundPath","notFoundPathProperty","topContainer","pluridIsoMatcher","routePlanes","mounted","useMounted","setMatchedPath","setMatchedRoute","setPluridRoute","behavior","scrollIntoView","handleLocation","detail","PLURID_ROUTER_LOCATION_CHANGED","history","pushState","storage","saveState","PLURID_ROUTER_STORAGE","locationStoredEvent","CustomEvent","PLURID_ROUTER_LOCATION_STORED","dispatchEvent","PluridRouterExterior","PluridRouterShell","PluridRouterStatic","protocolProperty","hostnameProperty","gatewayQuery","gatewayQueryProperty","gatewayEndpoint","gatewayEndpointProperty","routerProperties","PluridProvider","metastate","DEFAULT_ROUTER_LINK_AS_ANCHOR","defaultLinkCoordinates","PluridPortal","elementID","rootID","target","usePortal","createPortal","StyledPluridPlanePreview","PluridPlanePreview","previewComponent","previewOffsetX","previewOffsetY","resolvedLinkCoordinates","mapStateToProperties$6","mapDispatchToProperties$6","ConnectedPluridPlanePreview","StyledPluridLink","devisible","suffix","PluridLink","devisibleProperty","suffixProperty","className","preview","previewFadeIn","previewFadeOut","stateLastClosedPlane","dispatchUpdateSpaceLinkCoordinates","dispatchRemovePlane","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","pluridEntity","dataset","planeControlsHeight","updateLinkCoordinates","newLinkCoordinates","updatePlaneLocation","debouncedUpdateLinkCoordinates","assignTreePlaneToLink","updateTreeWithLink","updatedTreePlane","updateTreeWithNewPlane","handlePlaneNavigation","togglePlane","updatedPlane","toggleLinkFromTree","handleShowPluridPlane","defocusLink","blur","getElementById","handleKeyUp","newParentPlaneID","openClosedPlaneIndex","closePlaneIndex","onKeyUp","PLURID_ENTITY_LINK","mapStateToProperties$5","mapDispatchToProperties$5","ConnectedPluridLink","commonStyle","StyledPluridRouterLinkAnchor","StyledPluridRouterLinkDiv","PluridRouterLink","asAnchor","asAnchorProperty","themeProperty","exit","open","pluridRouterNavigate","renderProperties","href","StyledPluridApplicationConfigurator","PluridApplicationConfigurator","configuratorElement","PLURID_ENTITY_APPLICATION_CONFIGURATOR","mapStateToProps$1","mapDispatchToProps$1","ConnectedPluridApplicationConfigurator","StyledPluridPlaneConfigurator","PluridPlaneConfigurator","planePlaneID","PLURID_ENTITY_PLANE_CONFIGURATOR","mapStateToProperties$4","mapDispatchToProperties$4","ConnectedPluridPlaneConfigurator","StyledExternalPlane","getPttpUrl","re","domain","getPttpPath","pttpPath","elementRequest","response","method","headers","Accept","body","credentials","json","elementQLClient","ElementQLClient","status","Elements","Element","ExternalPlane","setComponent","mapStateToProperties$3","mapDispatchToProperties$3","ConnectedExternalPlane","StyledIframePlane","IframePlane","src","mapStateToProperties$2","mapDispatchToProperties$2","ConnectedIframePlane","VirtualListItem","setHeight","markers","Spinner","PluridSpinner","PluridVirtualList","generalHeight","_generalHeight","listElement","rows","heights","start","setStart","end","setEnd","floor","elementHeight","setElementHeight","resizing","setResizing","renderRows","i","item","random","arithmetic","sum","mapStateToProps","mapDispatchToProps","ConnectedPluridVirtualList","StyledPluridPlaneDebugger","PluridPlaneDebugger","mapStateToProperties$1","mapDispatchToProperties$1","ConnectedPluridPlaneDebugger","StyledPluridSpaceDebugger","PluridSpaceDebugger","mapStateToProperties","mapDispatchToProperties","ConnectedPluridSpaceDebugger","serverComputeMetastate","paths","pluridApplications","states","application","usePluridRouter","routerValue","setRouterValue","fetchState","loadState","PluridIsoMatcher","RouteParser","PluridRouteParser","internals","Plurid","Application","RouterStatic","RouterBrowser","Link","RouterLink","ApplicationConfigurator","PlaneConfigurator","VirtualList","SPACE_LAYOUT","PubSub","PUBSUB_TOPIC","routerNavigate","enumerable","PluridExternalPlane","PluridIframePlane","pluridStateModules"],"mappings":"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"}