@plurid/plurid-react 0.0.0-34 → 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 -5659
  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 -17
  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 -6520
  113. package/distribution/index.es.js.map +0 -1
  114. package/distribution/index.min.js +0 -6306
  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 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) {\n super(properties);\n this.storeID = properties.id || \"default\";\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\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\nconst PluridContext = React__default.default.createContext(undefined);\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","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","createContext","__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","undefined","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","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","PluridContext","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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"}