@plurid/plurid-ui-components-react 0.0.0-26 → 0.0.0-28

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 (123) hide show
  1. package/distribution/components/pluridal/containers/DashboardsRenderer/components/RenderArea/index.d.ts +15 -15
  2. package/distribution/components/pluridal/containers/DashboardsRenderer/components/RenderArea/styled.d.ts +5 -5
  3. package/distribution/components/pluridal/containers/DashboardsRenderer/components/Sidebar/components/Selector/index.d.ts +13 -13
  4. package/distribution/components/pluridal/containers/DashboardsRenderer/components/Sidebar/components/Selector/styled.d.ts +11 -11
  5. package/distribution/components/pluridal/containers/DashboardsRenderer/components/Sidebar/index.d.ts +21 -21
  6. package/distribution/components/pluridal/containers/DashboardsRenderer/components/Sidebar/styled.d.ts +20 -20
  7. package/distribution/components/pluridal/containers/DashboardsRenderer/data.d.ts +18 -18
  8. package/distribution/components/pluridal/containers/DashboardsRenderer/index.d.ts +24 -24
  9. package/distribution/components/pluridal/containers/DashboardsRenderer/styled.d.ts +8 -8
  10. package/distribution/components/pluridal/containers/EntityView/index.d.ts +28 -28
  11. package/distribution/components/pluridal/containers/EntityView/logic.d.ts +4 -4
  12. package/distribution/components/pluridal/containers/EntityView/styled.d.ts +25 -25
  13. package/distribution/components/pluridal/containers/index.d.ts +6 -6
  14. package/distribution/components/pluridal/head/Head/index.d.ts +48 -48
  15. package/distribution/components/pluridal/head/index.d.ts +16 -16
  16. package/distribution/components/pluridal/index.d.ts +55 -55
  17. package/distribution/components/pluridal/notifications/Notification/index.d.ts +14 -14
  18. package/distribution/components/pluridal/notifications/Notification/styled.d.ts +10 -10
  19. package/distribution/components/pluridal/notifications/Notifications/index.d.ts +35 -35
  20. package/distribution/components/pluridal/notifications/Notifications/styled.d.ts +1 -1
  21. package/distribution/components/pluridal/notifications/index.d.ts +19 -19
  22. package/distribution/components/pluridal/sitting/SittingTray/components/Sittings/index.d.ts +16 -16
  23. package/distribution/components/pluridal/sitting/SittingTray/components/Sittings/styled.d.ts +1 -1
  24. package/distribution/components/pluridal/sitting/SittingTray/components/StateImage/index.d.ts +16 -16
  25. package/distribution/components/pluridal/sitting/SittingTray/components/StateImage/styled.d.ts +5 -5
  26. package/distribution/components/pluridal/sitting/SittingTray/components/StateLine/index.d.ts +9 -9
  27. package/distribution/components/pluridal/sitting/SittingTray/components/StateLine/styled.d.ts +7 -7
  28. package/distribution/components/pluridal/sitting/SittingTray/components/StateLink/index.d.ts +10 -10
  29. package/distribution/components/pluridal/sitting/SittingTray/components/StateLink/styled.d.ts +4 -4
  30. package/distribution/components/pluridal/sitting/SittingTray/components/StateShareImage/index.d.ts +5 -5
  31. package/distribution/components/pluridal/sitting/SittingTray/components/StateShareImage/styled.d.ts +4 -4
  32. package/distribution/components/pluridal/sitting/SittingTray/index.d.ts +16 -16
  33. package/distribution/components/pluridal/sitting/SittingTray/styled.d.ts +8 -8
  34. package/distribution/components/pluridal/sitting/index.d.ts +7 -7
  35. package/distribution/components/pluridal/toolbars/HorizontalToolbarButton/index.d.ts +14 -14
  36. package/distribution/components/pluridal/toolbars/HorizontalToolbarButton/styled.d.ts +11 -11
  37. package/distribution/components/pluridal/toolbars/ToolbarControls/index.d.ts +13 -13
  38. package/distribution/components/pluridal/toolbars/ToolbarControls/styled.d.ts +12 -12
  39. package/distribution/components/pluridal/toolbars/ToolbarGeneral/index.d.ts +26 -26
  40. package/distribution/components/pluridal/toolbars/ToolbarGeneral/styled.d.ts +2 -2
  41. package/distribution/components/pluridal/toolbars/ToolbarSpecific/index.d.ts +24 -24
  42. package/distribution/components/pluridal/toolbars/ToolbarSpecific/styled.d.ts +10 -10
  43. package/distribution/components/pluridal/toolbars/VerticalToolbarButton/index.d.ts +16 -16
  44. package/distribution/components/pluridal/toolbars/VerticalToolbarButton/styled.d.ts +13 -13
  45. package/distribution/components/pluridal/toolbars/index.d.ts +13 -13
  46. package/distribution/components/universal/buttons/LinkButton/index.d.ts +16 -16
  47. package/distribution/components/universal/buttons/LinkButton/styled.d.ts +10 -10
  48. package/distribution/components/universal/buttons/PureButton/index.d.ts +16 -16
  49. package/distribution/components/universal/buttons/PureButton/styled.d.ts +15 -15
  50. package/distribution/components/universal/buttons/RefreshButton/index.d.ts +12 -12
  51. package/distribution/components/universal/buttons/RefreshButton/styled.d.ts +6 -6
  52. package/distribution/components/universal/buttons/index.d.ts +7 -7
  53. package/distribution/components/universal/form/FormLeftRight/index.d.ts +15 -15
  54. package/distribution/components/universal/form/FormLeftRight/styled.d.ts +5 -5
  55. package/distribution/components/universal/form/FormObliterate/index.d.ts +18 -18
  56. package/distribution/components/universal/form/FormObliterate/styled.d.ts +8 -8
  57. package/distribution/components/universal/form/Formbutton/index.d.ts +28 -28
  58. package/distribution/components/universal/form/Formbutton/styled.d.ts +15 -15
  59. package/distribution/components/universal/form/Formitem/index.d.ts +16 -16
  60. package/distribution/components/universal/form/Formitem/styled.d.ts +6 -6
  61. package/distribution/components/universal/form/Formline/index.d.ts +21 -21
  62. package/distribution/components/universal/form/Formline/styled.d.ts +12 -12
  63. package/distribution/components/universal/form/index.d.ts +9 -9
  64. package/distribution/components/universal/general/GlobalStyles/index.d.ts +6 -6
  65. package/distribution/components/universal/general/index.d.ts +4 -4
  66. package/distribution/components/universal/index.d.ts +49 -49
  67. package/distribution/components/universal/inputs/Dropdown/index.d.ts +47 -47
  68. package/distribution/components/universal/inputs/Dropdown/styled.d.ts +8 -8
  69. package/distribution/components/universal/inputs/EntityPill/index.d.ts +11 -11
  70. package/distribution/components/universal/inputs/EntityPill/styled.d.ts +5 -5
  71. package/distribution/components/universal/inputs/EntityPillGroup/index.d.ts +13 -13
  72. package/distribution/components/universal/inputs/EntityPillGroup/styled.d.ts +5 -5
  73. package/distribution/components/universal/inputs/InputBox/index.d.ts +13 -13
  74. package/distribution/components/universal/inputs/InputBox/styled.d.ts +9 -9
  75. package/distribution/components/universal/inputs/InputDescriptor/index.d.ts +11 -11
  76. package/distribution/components/universal/inputs/InputDescriptor/styled.d.ts +5 -5
  77. package/distribution/components/universal/inputs/InputLine/index.d.ts +17 -17
  78. package/distribution/components/universal/inputs/InputLine/styled.d.ts +5 -5
  79. package/distribution/components/universal/inputs/InputSwitch/index.d.ts +15 -15
  80. package/distribution/components/universal/inputs/InputSwitch/styled.d.ts +4 -4
  81. package/distribution/components/universal/inputs/Itemsline/index.d.ts +18 -18
  82. package/distribution/components/universal/inputs/Itemsline/styled.d.ts +7 -7
  83. package/distribution/components/universal/inputs/Select/index.d.ts +23 -23
  84. package/distribution/components/universal/inputs/Select/styled.d.ts +1 -1
  85. package/distribution/components/universal/inputs/Slider/index.d.ts +19 -19
  86. package/distribution/components/universal/inputs/Slider/styled.d.ts +4 -4
  87. package/distribution/components/universal/inputs/Switch/index.d.ts +14 -14
  88. package/distribution/components/universal/inputs/Switch/styled.d.ts +3 -3
  89. package/distribution/components/universal/inputs/Textline/index.d.ts +62 -62
  90. package/distribution/components/universal/inputs/Textline/styled.d.ts +3 -3
  91. package/distribution/components/universal/inputs/index.d.ts +16 -16
  92. package/distribution/components/universal/markers/HR/index.d.ts +9 -9
  93. package/distribution/components/universal/markers/HR/styled.d.ts +5 -5
  94. package/distribution/components/universal/markers/ProgressCircle/index.d.ts +14 -14
  95. package/distribution/components/universal/markers/ProgressCircle/styled.d.ts +5 -5
  96. package/distribution/components/universal/markers/Spinner/index.d.ts +11 -11
  97. package/distribution/components/universal/markers/Spinner/styled.d.ts +8 -8
  98. package/distribution/components/universal/markers/Tooltip/index.d.ts +16 -16
  99. package/distribution/components/universal/markers/Tooltip/styled.d.ts +15 -12
  100. package/distribution/components/universal/markers/index.d.ts +8 -8
  101. package/distribution/components/universal/typography/Heading/index.d.ts +10 -10
  102. package/distribution/components/universal/typography/Heading/styled.d.ts +6 -6
  103. package/distribution/components/universal/typography/Paragraph/index.d.ts +11 -11
  104. package/distribution/components/universal/typography/Paragraph/styled.d.ts +8 -8
  105. package/distribution/components/universal/typography/index.d.ts +6 -6
  106. package/distribution/components/universal/varia/CopyableLine/index.d.ts +19 -19
  107. package/distribution/components/universal/varia/CopyableLine/styled.d.ts +2 -2
  108. package/distribution/components/universal/varia/NewPageLink/index.d.ts +14 -14
  109. package/distribution/components/universal/varia/NewPageLink/styled.d.ts +3 -3
  110. package/distribution/components/universal/varia/ScrollableLine/index.d.ts +14 -14
  111. package/distribution/components/universal/varia/ScrollableLine/styled.d.ts +3 -3
  112. package/distribution/components/universal/varia/TextItem/index.d.ts +9 -9
  113. package/distribution/components/universal/varia/TextItem/styled.d.ts +1 -1
  114. package/distribution/components/universal/varia/index.d.ts +8 -8
  115. package/distribution/data/enumerations/index.d.ts +13 -13
  116. package/distribution/data/interfaces/index.d.ts +29 -29
  117. package/distribution/index.d.ts +113 -113
  118. package/distribution/index.es.js +201 -113
  119. package/distribution/index.es.js.map +1 -1
  120. package/distribution/index.js +201 -113
  121. package/distribution/index.js.map +1 -1
  122. package/distribution/utilities/input/index.d.ts +4 -4
  123. package/package.json +22 -21
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../source/components/universal/markers/Spinner/styled.tsx","../source/components/universal/markers/Spinner/index.tsx","../source/components/universal/buttons/PureButton/styled.tsx","../source/components/universal/buttons/PureButton/index.tsx","../source/components/universal/buttons/LinkButton/styled.tsx","../source/components/universal/buttons/LinkButton/index.tsx","../source/components/universal/buttons/RefreshButton/styled.ts","../source/components/universal/buttons/RefreshButton/index.tsx","../source/components/universal/buttons/index.ts","../source/components/universal/form/Formbutton/styled.tsx","../source/components/universal/form/Formbutton/index.tsx","../source/components/universal/form/Formitem/styled.tsx","../source/components/universal/form/Formitem/index.tsx","../source/components/universal/form/FormLeftRight/styled.tsx","../source/components/universal/form/FormLeftRight/index.tsx","../source/components/universal/form/Formline/styled.tsx","../source/components/universal/form/Formline/index.tsx","../source/components/universal/form/FormObliterate/styled.tsx","../source/components/universal/form/FormObliterate/index.tsx","../source/components/universal/form/index.ts","../source/components/universal/general/GlobalStyles/index.ts","../source/components/universal/general/index.ts","../source/utilities/input/index.ts","../source/components/universal/inputs/Textline/styled.tsx","../source/components/universal/inputs/Textline/index.tsx","../source/components/universal/inputs/Dropdown/styled.ts","../source/components/universal/inputs/Dropdown/index.tsx","../source/components/universal/inputs/EntityPill/styled.ts","../source/components/universal/inputs/EntityPill/index.tsx","../source/components/universal/inputs/EntityPillGroup/styled.ts","../source/components/universal/inputs/EntityPillGroup/index.tsx","../source/components/universal/inputs/InputDescriptor/styled.ts","../source/components/universal/inputs/InputDescriptor/index.tsx","../source/components/universal/inputs/InputBox/styled.ts","../source/components/universal/inputs/InputBox/index.tsx","../source/components/universal/inputs/InputLine/styled.ts","../source/components/universal/inputs/InputLine/index.tsx","../source/components/universal/inputs/Switch/styled.tsx","../source/components/universal/inputs/Switch/index.tsx","../source/components/universal/inputs/InputSwitch/styled.ts","../source/components/universal/inputs/InputSwitch/index.tsx","../source/components/universal/inputs/Itemsline/styled.tsx","../source/components/universal/inputs/Itemsline/index.tsx","../source/components/universal/inputs/Select/styled.tsx","../source/components/universal/inputs/Select/index.tsx","../source/components/universal/inputs/Slider/styled.tsx","../source/components/universal/inputs/Slider/index.tsx","../source/components/universal/inputs/index.ts","../source/components/universal/markers/HR/styled.tsx","../source/components/universal/markers/HR/index.tsx","../source/components/universal/markers/ProgressCircle/styled.ts","../source/components/universal/markers/ProgressCircle/index.tsx","../source/components/universal/markers/Tooltip/styled.tsx","../source/components/universal/markers/Tooltip/index.tsx","../source/components/universal/markers/index.ts","../source/components/universal/typography/Heading/styled.tsx","../source/components/universal/typography/Heading/index.tsx","../source/components/universal/typography/Paragraph/styled.tsx","../source/components/universal/typography/Paragraph/index.tsx","../source/components/universal/typography/index.ts","../source/components/universal/varia/CopyableLine/styled.ts","../source/components/universal/varia/CopyableLine/index.tsx","../source/components/universal/varia/NewPageLink/styled.ts","../source/components/universal/varia/NewPageLink/index.tsx","../source/components/universal/varia/ScrollableLine/styled.tsx","../source/components/universal/varia/ScrollableLine/index.tsx","../source/components/universal/varia/TextItem/styled.ts","../source/components/universal/varia/TextItem/index.tsx","../source/components/universal/varia/index.ts","../source/components/universal/index.ts","../source/components/pluridal/containers/DashboardsRenderer/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/components/Selector/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/components/Selector/index.tsx","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/index.tsx","../source/components/pluridal/containers/DashboardsRenderer/components/RenderArea/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/RenderArea/index.tsx","../source/components/pluridal/containers/DashboardsRenderer/index.tsx","../source/components/pluridal/containers/EntityView/styled.ts","../source/components/pluridal/containers/EntityView/logic.tsx","../source/components/pluridal/containers/EntityView/index.tsx","../source/components/pluridal/containers/index.ts","../source/components/pluridal/head/Head/index.tsx","../source/components/pluridal/head/index.ts","../source/components/pluridal/notifications/Notification/styled.tsx","../source/components/pluridal/notifications/Notification/index.tsx","../source/components/pluridal/notifications/Notifications/styled.tsx","../source/components/pluridal/notifications/Notifications/index.tsx","../source/components/pluridal/notifications/index.ts","../source/components/pluridal/sitting/SittingTray/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateLink/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateLink/index.tsx","../source/components/pluridal/sitting/SittingTray/components/StateLine/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateLine/index.tsx","../source/components/pluridal/sitting/SittingTray/components/StateImage/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateImage/index.tsx","../source/components/pluridal/sitting/SittingTray/components/Sittings/styled.ts","../source/components/pluridal/sitting/SittingTray/components/Sittings/index.tsx","../source/components/pluridal/sitting/SittingTray/index.tsx","../source/components/pluridal/sitting/index.ts","../source/components/pluridal/toolbars/HorizontalToolbarButton/styled.ts","../source/components/pluridal/toolbars/HorizontalToolbarButton/index.tsx","../source/data/enumerations/index.ts","../source/components/pluridal/toolbars/ToolbarControls/styled.tsx","../source/components/pluridal/toolbars/ToolbarControls/index.tsx","../source/components/pluridal/toolbars/VerticalToolbarButton/styled.ts","../source/components/pluridal/toolbars/VerticalToolbarButton/index.tsx","../source/components/pluridal/toolbars/ToolbarSpecific/styled.ts","../source/components/pluridal/toolbars/ToolbarSpecific/index.tsx","../source/components/pluridal/toolbars/ToolbarGeneral/index.tsx","../source/components/pluridal/toolbars/index.ts","../source/components/pluridal/index.ts","../source/index.ts"],"sourcesContent":["// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSpinner = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n`;\n\n\nexport interface IStyledLoader {\n theme: Theme,\n size: Sizes,\n}\n\nexport const StyledLoader = styled.div<IStyledLoader>`\n display: inline-block;\n position: relative;\n\n width: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n height: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n\n div {\n width: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n height: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n margin: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '0.1rem';\n case 'normal':\n return '0.2rem';\n case 'large':\n return '0.3rem';\n default:\n return '0.2rem';\n }\n }};\n border: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '0.1rem solid ' + props.theme.colorPrimary;\n case 'normal':\n return '0.2rem solid ' + props.theme.colorPrimary;\n case 'large':\n return '0.3rem solid ' + props.theme.colorPrimary;\n default:\n return '0.2rem solid ' + props.theme.colorPrimary;\n }\n }};\n border-color: ${(props: IStyledLoader) => {\n return props.theme.colorPrimary;\n }} transparent transparent transparent;\n\n box-sizing: border-box;\n display: block;\n position: absolute;\n border-radius: 50%;\n animation: spinner-rotate 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n }\n\n div:nth-child(1) {\n animation-delay: -0.45s;\n }\n\n div:nth-child(2) {\n animation-delay: -0.3s;\n }\n\n div:nth-child(3) {\n animation-delay: -0.15s;\n }\n\n @keyframes spinner-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n StyledSpinner,\n StyledLoader\n } from './styled';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface SpinnerProperties {\n // #region optional\n // #region values\n theme?: Theme;\n size?: Sizes;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n}\n\nconst Spinner: React.FC<SpinnerProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region optional\n // #region values\n theme,\n size,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n } = properties;\n\n const themeValue = theme || pluridTheme;\n const sizeValue = size || 'normal';\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSpinner\n style={{\n ...style,\n }}\n className={className}\n >\n <StyledLoader\n theme={themeValue}\n size={sizeValue}\n >\n <div />\n <div />\n <div />\n <div />\n </StyledLoader>\n </StyledSpinner>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Spinner;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledPureButton {\n theme: Theme;\n size: Sizes;\n level: number;\n isDisabled?: boolean;\n}\n\nexport const StyledPureButton: any = styled.button<IStyledPureButton>`\n color: ${\n ({\n theme,\n }: IStyledPureButton) => theme.colorPrimary\n };\n background-color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return theme.backgroundColorPrimaryAlpha;\n }\n\n switch (level) {\n case 0:\n return theme.backgroundColorPrimary;\n case 1:\n return theme.backgroundColorSecondary;\n case 2:\n return theme.backgroundColorTertiary;\n case 3:\n return theme.backgroundColorQuaternary;\n default:\n return theme.backgroundColorPrimary;\n }\n }\n };\n box-shadow: 0px 8px 8px 0px ${\n ({\n theme,\n }: IStyledPureButton) => theme.boxShadowUmbraColor\n };\n\n box-sizing: border-box;\n display: block;\n width: 100%;\n min-width: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '8rem';\n case 'normal':\n return '10rem';\n case 'large':\n return '12rem';\n default:\n return '10rem';\n }\n }\n };\n border-radius: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.2rem';\n case 'large':\n return '1.4rem';\n default:\n return '1.2rem';\n }\n }\n };\n padding: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '0 1.2rem';\n case 'normal':\n return '0 1.4rem';\n case 'large':\n return '0 1.6rem';\n default:\n return '0 1.4rem';\n }\n }\n };\n\n font-family: ${\n ({\n theme,\n }: IStyledPureButton) => theme.fontFamilySansSerif\n };\n font-size: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '0.8rem';\n case 'normal':\n return '0.9rem';\n case 'large':\n return '1rem';\n default:\n return '0.9rem';\n }\n }\n };\n height: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '2rem';\n case 'normal':\n return '2.4rem';\n case 'large':\n return '2.8rem';\n default:\n return '2.4rem';\n }\n }\n };\n cursor: ${\n ({\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return 'default';\n }\n\n return 'pointer';\n }\n };\n\n\n border: none;\n outline: none;\n user-select: none;\n display: grid;\n place-content: center;\n line-height: 1.2;\n font-weight: bold;\n transition: box-shadow 200ms linear, background-color 200ms linear;\n position: relative;\n min-height: 40px;\n min-width: 160px;\n\n @media (hover: hover) {\n :hover {\n background-color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return theme.backgroundColorPrimaryAlpha;\n }\n\n switch (level) {\n case 0:\n return theme.backgroundColorSecondary;\n case 1:\n return theme.backgroundColorTertiary;\n case 2:\n return theme.backgroundColorQuaternary;\n case 3:\n return theme.backgroundColorPrimary;\n default:\n return theme.backgroundColorSecondary;\n }\n }\n };\n }\n }\n\n :active {\n box-shadow: ${\n ({\n theme,\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return '0px 8px 8px 0px ' + theme.boxShadowUmbraColor;\n }\n\n return '0px 3px 3px 0px ' + theme.boxShadowUmbraColor;\n }\n };\n }\n`;\n\n\nexport interface IStyledPureButtonDiv {\n theme: Theme;\n level: number;\n isDisabled?: boolean;\n}\n\nexport const StyledPureButtonDiv = styled(StyledPureButton).attrs<IStyledPureButtonDiv>({\n as: 'div',\n})`\n background-color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledPureButtonDiv) => {\n if (isDisabled) {\n return '';\n }\n\n switch (level) {\n case 0:\n return theme.backgroundColorSecondary;\n case 1:\n return theme.backgroundColorTertiary;\n case 2:\n return theme.backgroundColorQuaternary;\n case 3:\n return theme.backgroundColorPrimary;\n default:\n return theme.backgroundColorSecondary;\n }\n }\n };\n box-shadow: 0px 3px 3px 0px ${\n ({\n theme,\n }: IStyledPureButtonDiv) => theme.boxShadowUmbraColor\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n\n import PluridSpinner from '~components/universal/markers/Spinner';\n // #endregion external\n\n\n // #region internal\n import {\n StyledPureButton,\n StyledPureButtonDiv,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface PureButtonProperties {\n // #region required\n // #region values\n text: string;\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n level?: number;\n size?: Sizes;\n disabled?: boolean;\n loading?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst PureButton: React.FC<PureButtonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n level: levelProperty,\n size: sizeProperty,\n disabled,\n loading,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const level = levelProperty ?? 0;\n const size = sizeProperty || 'normal';\n // #endregion properties\n\n\n // #region render\n if (loading) {\n return (\n <StyledPureButtonDiv\n style={{\n ...style,\n }}\n className={className}\n\n theme={theme}\n level={level}\n size={size}\n isDisabled={disabled}\n >\n <PluridSpinner\n theme={theme}\n size=\"small\"\n />\n </StyledPureButtonDiv>\n );\n }\n\n return (\n <StyledPureButton\n onClick={(\n event: React.MouseEvent,\n ) => disabled\n ? null\n : atClick(event)\n }\n\n style={{\n ...style,\n }}\n className={className}\n\n theme={theme}\n level={level}\n size={size}\n isDisabled={disabled}\n >\n {text}\n </StyledPureButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default PureButton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledLinkButton {\n theme: Theme;\n level: number;\n isDisabled?: boolean;\n inline?: boolean;\n isActive?: boolean;\n}\n\nexport const StyledLinkButton: any = styled.button<IStyledLinkButton>`\n font-family: ${\n ({\n theme,\n }: IStyledLinkButton) => theme.fontFamilySansSerif\n };\n\n color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledLinkButton) => {\n if (isDisabled) {\n return theme.backgroundColorPrimaryAlpha;\n }\n\n switch (level) {\n case 0:\n return theme.colorPrimary;\n case 1:\n return theme.colorSecondary;\n case 2:\n return theme.colorTertiary;\n default:\n return theme.colorPrimary;\n }\n }\n };\n margin: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return '0';\n }\n\n return '0 1rem';\n }\n };\n padding: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return '0';\n }\n\n return 'initial';\n }\n };\n font-size: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return 'inherit';\n }\n\n return '0.9rem';\n }\n };\n display: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return 'inline';\n }\n\n return 'grid';\n }\n };\n cursor: ${\n ({\n isDisabled,\n }: IStyledLinkButton) => {\n if (isDisabled) {\n return 'inherit';\n }\n\n return 'pointer';\n }\n };\n border: none;\n border-bottom: 1px solid ${\n ({\n isActive,\n theme,\n }: IStyledLinkButton) => {\n if (isActive) {\n return theme.colorPrimary;\n }\n\n return 'transparent';\n }\n };\n\n font-weight: bold;\n background: transparent;\n place-content: center;\n user-select: none;\n outline: none;\n`;\n\n\nexport const StyledLinkButtonLoading = styled.div`\n position: relative;\n min-height: 1rem;\n height: 100%;\n width: 100%;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n plurid as pluridTheme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridSpinner from '~components/universal/markers/Spinner';\n // #endregion external\n\n\n // #region internal\n import {\n StyledLinkButton,\n StyledLinkButtonLoading,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst DEFAULT_LEVEL = 0;\n\nexport interface LinkButtonProperties {\n // #region required\n // #region values\n text: string;\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n level?: number;\n inline?: boolean;\n disabled?: boolean;\n loading?: boolean;\n active?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst LinkButton: React.FC<LinkButtonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n level: levelProperty,\n inline,\n disabled,\n loading,\n active,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const level = levelProperty ?? DEFAULT_LEVEL;\n // #endregion properties\n\n\n // #region render\n if (loading) {\n return (\n <StyledLinkButtonLoading>\n <PluridSpinner\n size=\"small\"\n theme={theme}\n />\n </StyledLinkButtonLoading>\n );\n }\n\n return (\n <StyledLinkButton\n onClick={(\n event: React.MouseEvent,\n ) => disabled\n ? null\n : atClick(event)\n }\n style={{\n ...style,\n }}\n className={className}\n\n theme={theme}\n level={level}\n inline={inline}\n isDisabled={disabled}\n isActive={active}\n >\n {text}\n </StyledLinkButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default LinkButton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledRefreshButton {\n theme: Theme;\n}\n\nconst StyledRefreshButton = styled.div<IStyledRefreshButton>`\n`;\n// #endregion module\n\n\n\n// #region exports\nexport {\n StyledRefreshButton,\n};\n// #endregion exports\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconReset,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledRefreshButton,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface RefreshButtonProperties {\n // #region required\n // #region values\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n text?: string;\n disabled?: boolean;\n hideAtClick?: boolean;\n hideTime?: number;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst RefreshButton: React.FC<RefreshButtonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n text: textProperty,\n disabled,\n hideAtClick: hideAtClickProperty,\n hideTime: hideTimeProperty,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const text = textProperty || '';\n const hideAtClick = hideAtClickProperty ?? true;\n const hideTime = hideTimeProperty || 1300;\n // #endregion properties\n\n\n // #region references\n const isMounted = useRef(true);\n // #endregion references\n\n\n // #region state\n const [\n showIconReset,\n setShowIconReset,\n ] = useState(true);\n // #endregion state\n\n\n // #region handlers\n const atClickHandler = (\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (disabled) {\n return;\n }\n\n if (hideAtClick) {\n setShowIconReset(false);\n }\n\n atClick(event);\n\n if (hideAtClick) {\n setTimeout(() => {\n if (!isMounted.current) {\n return;\n }\n\n setShowIconReset(true);\n }, hideTime);\n }\n }\n // #endregion handlers\n\n\n // #region effects\n useEffect(() => {\n return () => {\n isMounted.current = false;\n }\n }, []);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledRefreshButton\n theme={theme}\n >\n {showIconReset && (\n <PluridIconReset\n // #region required\n // #region values\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme={theme}\n title={text}\n inactive={disabled}\n opacity={disabled ? 0.5 : 1}\n // #endregion values\n\n // #region methods\n atClick={atClickHandler}\n // #endregion methods\n // #endregion optional\n />\n )}\n </StyledRefreshButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default RefreshButton;\n// #endregion exports\n","// #region imports\n // #region internal\n import PureButton from './PureButton';\n import LinkButton from './LinkButton';\n import RefreshButton from './RefreshButton';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst buttons = {\n PureButton,\n LinkButton,\n RefreshButton,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default buttons;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledFormbutton {\n theme: Theme,\n level: number;\n inactive: boolean;\n devisible: boolean;\n hoverEffect: boolean;\n}\n\nexport const StyledFormbutton = styled.div<IStyledFormbutton>`\n display: grid;\n grid-template-columns: 20px 1fr;\n grid-gap: 0.5rem;\n align-items: center;\n min-height: 2rem;\n user-select: none;\n text-decoration: none;\n padding: 0.3rem 0.7rem;\n\n margin: ${(props: IStyledFormbutton) => {\n if (props.devisible) {\n return '0';\n }\n return 'initial';\n }};\n cursor: ${(props: IStyledFormbutton) => {\n if (props.inactive) {\n return 'default';\n }\n return 'pointer';\n }};\n color: ${(props: IStyledFormbutton) => {\n return props.theme.colorPrimary;\n }};\n\n :hover {\n background-color: ${(props: IStyledFormbutton) => {\n if (!props.hoverEffect) {\n return 'initial';\n }\n\n if (props.inactive || props.devisible) {\n return 'initial';\n }\n\n return props.theme.backgroundColorSecondary;\n }};\n }\n`;\n\n\nexport interface IStyledFormbuttonIcon {\n theme: Theme,\n position: 'left' | 'center' | 'right';\n}\n\nexport const StyledFormbuttonIcon = styled.div<IStyledFormbuttonIcon>`\n justify-self: ${(props: IStyledFormbuttonIcon) => {\n return props.position;\n }};\n display: grid;\n place-content: center;\n`;\n\n\nexport const StyledFormbuttonText = styled.div`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconProperties,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormbutton,\n StyledFormbuttonIcon,\n StyledFormbuttonText,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormbuttonProperties {\n text: string;\n Icon: React.FC<PluridIconProperties>;\n atClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n\n link?: string;\n target?: string;\n theme?: Theme;\n devisible?: boolean;\n level?: number;\n iconPosition?: 'left' | 'center' | 'right';\n /**\n * Renders the button as is (without hover, cursor effects, and on click listen).\n */\n inactive?: boolean;\n hoverEffect?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n}\n\n/**\n * Renders an icon and a descriptive text, button-like.\n *\n * @param properties\n */\nconst Formbutton: React.FC<FormbuttonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** required */\n text,\n Icon,\n atClick,\n\n /** optional */\n link,\n target,\n theme,\n devisible,\n level,\n iconPosition,\n inactive,\n hoverEffect: hoverEffectProperty,\n style,\n className,\n } = properties;\n\n const _theme = theme || pluridTheme\n const _level = level ?? 0;\n const _devisible = devisible ?? false;\n const _iconPosition = iconPosition || 'left';\n const _inactive = inactive ?? false\n const hoverEffect = hoverEffectProperty ?? true;\n // #endregion properties\n\n\n // #region render\n const render = () => (\n <>\n <StyledFormbuttonIcon\n position={_iconPosition}\n >\n <Icon\n theme={_theme}\n />\n </StyledFormbuttonIcon>\n\n <StyledFormbuttonText>\n {text}\n </StyledFormbuttonText>\n </>\n );\n\n const renderProperties = {\n style: {...style},\n className: className,\n theme: _theme,\n level: _level,\n inactive: _inactive,\n devisible: _devisible,\n hoverEffect,\n };\n\n\n if (link) {\n return (\n <StyledFormbutton\n onClick={(event: any) => !_inactive ? atClick(event) : null }\n as={'a'}\n href={link}\n target={target}\n {...renderProperties}\n >\n {render()}\n </StyledFormbutton>\n );\n }\n\n return (\n <StyledFormbutton\n onClick={(event) => !_inactive ? atClick(event as any) : null }\n {...renderProperties}\n >\n {render()}\n </StyledFormbutton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Formbutton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\nexport interface IStyledFormitem {\n theme: Theme,\n level: number;\n}\n\nexport const StyledFormitem = styled.div<IStyledFormitem>`\n display: grid;\n align-items: center;\n min-height: 2rem;\n padding: 0.3rem 0.7rem;\n user-select: none;\n`;\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormitem,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormitemProperties {\n theme?: Theme;\n level?: number;\n\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Renders a form item.\n *\n * @param properties\n */\nconst Formitem: React.FC<FormitemProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** optional */\n theme,\n level,\n style,\n className,\n\n /** default */\n children,\n } = properties;\n\n const _theme = theme || pluridTheme;\n const _level = level ?? 0;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledFormitem\n style={{\n ...style,\n }}\n className={className}\n theme={_theme}\n level={_level}\n >\n {children}\n </StyledFormitem>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Formitem;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\nexport interface IStyledFormLeftRight {\n theme: Theme,\n}\n\nexport const StyledFormLeftRight = styled.div<IStyledFormLeftRight>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormLeftRight,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormLeftRightProperties {\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Form left and right items\n *\n * @param properties\n */\nconst FormLeftRight: React.FC<FormLeftRightProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** optional */\n theme,\n style,\n className,\n\n /** default */\n children,\n } = properties;\n\n const _theme = theme || pluridTheme;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledFormLeftRight\n style={{\n ...style,\n }}\n className={className}\n theme={_theme}\n >\n {children}\n </StyledFormLeftRight>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default FormLeftRight;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledFormline {\n theme: Theme,\n level: number;\n responsive: boolean;\n}\n\nexport const StyledFormline = styled.div<IStyledFormline>`\n display: grid;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n min-height: 2rem;\n padding: 0.3rem 0.7rem;\n\n color: ${(props: IStyledFormline) => {\n return props.theme.colorPrimary;\n }};\n\n @media (max-width: 800px) {\n grid-template-columns: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return '1fr';\n }\n return '1fr 1fr';\n }};\n min-height: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return '2.4rem';\n }\n return '2rem';\n }};\n justify-items: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return 'center';\n }\n return 'auto';\n }};\n justify-content: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return 'center';\n }\n return 'auto';\n }};\n }\n`;\n\n\nexport const StyledFormlineText = styled.div`\n user-select: none;\n`;\n\n\n\nexport interface IStyledFormlineElement {\n responsive: boolean;\n}\n\nexport const StyledFormlineElement = styled.div<IStyledFormlineElement>`\n justify-self: right;\n\n @media (max-width: 800px) {\n justify-self: ${(props: IStyledFormlineElement) => {\n if (props.responsive) {\n return 'center';\n }\n return 'right';\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormline,\n StyledFormlineText,\n StyledFormlineElement,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormlineProperties {\n text: string;\n\n Element?: React.FC;\n theme?: Theme;\n level?: number;\n responsive?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Renders a descriptive text and a form element side by side.\n *\n * The form element can be passed as `Element` prop or as child.\n *\n * @param properties\n */\nconst Formline: React.FC<FormlineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** required */\n text,\n\n /** optional */\n Element,\n theme,\n level,\n responsive,\n\n style,\n className,\n\n /** default */\n children,\n } = properties;\n\n const _theme = theme || pluridTheme;\n\n const _level = level === undefined\n ? 0\n : level;\n\n const _responsive = responsive === undefined\n ? false\n : responsive;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledFormline\n style={{\n ...style,\n }}\n className={className}\n theme={_theme}\n level={_level}\n responsive={_responsive}\n >\n <StyledFormlineText>\n {text}\n </StyledFormlineText>\n\n <StyledFormlineElement\n responsive={_responsive}\n >\n {Element\n ? (\n <Element />\n ) : (\n <>\n {children}\n </>\n )}\n </StyledFormlineElement>\n </StyledFormline>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Formline;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledFormObliterate {\n theme: Theme,\n level: number;\n devisible: boolean;\n}\n\nexport const StyledFormObliterate = styled.div<IStyledFormObliterate>`\n color: ${(properties: IStyledFormObliterate) => {\n return properties.theme.colorPrimary;\n }};\n font-family: ${(properties: IStyledFormObliterate) => {\n return properties.theme.fontFamilySansSerif;\n }};\n font-size: 0.8rem;\n user-select: none;\n`;\n\n\nexport const StyledObliterateContainer = styled.div`\n text-align: center;\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 30px 45px 60px;\n align-items: center;\n max-width: 200px;\n margin: 1rem auto;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconObliterate,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import Formbutton from '../Formbutton';\n\n import LinkButton from '../../buttons/LinkButton';\n import PureButton from '../../buttons/PureButton';\n // #endregion external\n\n\n // #region internal\n import {\n StyledFormObliterate,\n StyledObliterateContainer,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormObliterateProperties {\n atObliterate: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n\n item?: string;\n\n theme?: Theme;\n devisible?: boolean;\n level?: number;\n\n style?: React.CSSProperties;\n className?: string;\n}\n\n/**\n * Renders an icon and a descriptive text, button-like.\n *\n * @param properties\n */\nconst FormObliterate: React.FC<FormObliterateProperties> = (\n properties,\n) => {\n // #region properties\n /** properties */\n const {\n /** required */\n atObliterate,\n\n /** optional */\n item,\n\n theme,\n devisible,\n level,\n\n style,\n className,\n } = properties;\n\n const _theme = theme || pluridTheme;\n const _level = level ?? 0;\n const _devisible = devisible ?? false;\n // #endregion properties\n\n\n // #region state\n const [showObliterate, setShowObliterate] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const handleObliterate = (\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n setShowObliterate(false);\n atObliterate(event);\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledFormObliterate\n theme={_theme}\n level={_level}\n devisible={_devisible}\n style={{\n ...style,\n }}\n className={className}\n >\n {!showObliterate && (\n <Formbutton\n theme={_theme}\n text={item ? `obliterate ${item}` : 'obliterate'}\n Icon={PluridIconObliterate}\n atClick={() => setShowObliterate(true)}\n devisible={true}\n />\n )}\n\n {showObliterate && (\n <StyledObliterateContainer>\n <div>\n remove forever?\n </div>\n\n <LinkButton\n theme={_theme}\n text=\"cancel\"\n atClick={() => setShowObliterate(false)}\n />\n\n <PureButton\n theme={_theme}\n text=\"Obliterate\"\n atClick={(event) => handleObliterate(event as any)}\n />\n </StyledObliterateContainer>\n )}\n </StyledFormObliterate>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default FormObliterate;\n// #endregion exports\n","// #region imports\n // #region internal\n import Formbutton from './Formbutton';\n import Formitem from './Formitem';\n import FormLeftRight from './FormLeftRight';\n import Formline from './Formline';\n import FormObliterate from './FormObliterate';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst form = {\n Formbutton,\n Formitem,\n FormLeftRight,\n Formline,\n FormObliterate,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default form;\n// #endregion exports\n","// #region imports\n // #region libraries\n import {\n createGlobalStyle,\n } from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IGlobalStyles {\n theme: Theme;\n}\n\nconst GlobalStyles = createGlobalStyle<IGlobalStyles>`\n *, *::after, *::before {\n box-sizing: border-box;\n }\n\n html {\n height: 100%;\n min-height: 100vh;\n }\n\n body {\n font-family: ${\n ({\n theme,\n }: IGlobalStyles) => theme.fontFamilySansSerif\n };\n\n height: 100%;\n margin: 0;\n padding: 0;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n color: ${\n ({\n theme,\n }: IGlobalStyles) => {\n if (theme.type === 'dark') {\n return theme.backgroundColorBright;\n }\n\n return theme.colorPrimary;\n }\n };\n background: ${\n ({\n theme,\n }: IGlobalStyles) => {\n if (theme.type === 'dark') {\n return theme.backgroundColorDark;\n }\n\n return theme.backgroundColorPrimary;\n }\n };\n }\n`;\n// #endregion module\n\n\n\n// #region exports\nexport default GlobalStyles;\n// #endregion exports\n","// #region imports\n // #region internal\n import GlobalStyles from './GlobalStyles';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst general = {\n GlobalStyles,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default general;\n// #endregion exports\n","// #region module\n/**\n * https://github.com/facebook/react/issues/10135#issuecomment-314441175\n */\nexport const setNativeValue = (\n element: any,\n value: any,\n) => {\n const valueSetter = (Object as any).getOwnPropertyDescriptor(element, 'value').set;\n const prototype = Object.getPrototypeOf(element);\n const prototypeValueSetter = (Object as any).getOwnPropertyDescriptor(prototype, 'value').set;\n\n if (valueSetter && valueSetter !== prototypeValueSetter) {\n prototypeValueSetter.call(element, value);\n } else {\n valueSetter.call(element, value);\n }\n}\n// #endregion module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledTextline: any = styled.div`\n position: relative;\n display: inline-block;\n width: 100%;\n\n input {\n box-sizing: border-box;\n border: none;\n outline: none;\n font-size: 0.8rem;\n\n padding: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n return '0.6rem 1rem';\n }};\n padding-top: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n return '0.7rem';\n }};\n min-height: ${(props: any) => {\n if (props.devisible) {\n return 'initial';\n }\n return '36px';\n }};\n background-color: ${(props: any) => {\n if (props.devisible) {\n return 'transparent';\n }\n\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n }};\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n box-shadow: inset 0px 4px 4px ${(props: any) => {\n if (props.devisible) {\n return 'transparent';\n }\n\n return props.theme.boxShadowUmbraColor;\n }};\n border-radius: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (props.round) {\n return '1000px';\n }\n return '0px';\n }};\n width: ${(props: any) => {\n if (!props.width) {\n return '100%';\n }\n\n if (typeof props.width === 'number') {\n return props.width + 'px';\n }\n\n return props.width;\n }};\n text-align: ${(props: any) => {\n if (props.center) {\n return 'center';\n }\n\n return 'left';\n }};\n\n ::placeholder {\n color: ${(props: any) => {\n return props.theme.colorSecondary;\n }};\n }\n }\n`;\n\n\nexport const StyledEnterIcon: any = styled.div`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n height: 20px;\n width: 20px;\n border-radius: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.9rem;\n user-select: none;\n cursor: pointer;\n border: 1px solid transparent;\n\n right: ${(props: any) => {\n if (props.left) {\n return 'auto';\n }\n return '0.6rem';\n }};\n left: ${(props: any) => {\n if (props.left) {\n return '0.6rem';\n }\n return 'auto';\n }};\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n\n :hover {\n border: 1px solid ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n }\n`;\n\n\nexport const StyledErrorLine: any = styled.div`\n position: absolute;\n background-color: #FF0000;\n bottom: -2px;\n\n height: ${(props: any) => {\n if (props.devisible) {\n return '2px';\n }\n\n return '4px';\n }};\n left: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (!props.round) {\n return '0';\n }\n\n return '14px';\n }};\n right: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (!props.round) {\n return '0';\n }\n\n return '14px';\n }};\n border-radius: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (props.round) {\n return '10px';\n }\n return '0px';\n }};\n box-shadow: 0px 1px 3px 0px ${(props: any) => {\n if (props.devisible) {\n return 'initial';\n }\n\n return props.theme.boxShadowUmbraColor;\n }};\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n forwardRef,\n } from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n mergeReferences,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region external\n import {\n setNativeValue,\n } from '~utilities/input';\n // #endregion external\n\n\n // #region internal\n import {\n StyledTextline,\n StyledEnterIcon,\n StyledErrorLine,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface TextlineProperties {\n text: string;\n atChange: (event: React.ChangeEvent<HTMLInputElement>, value: string) => void;\n atKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n atFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n atBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n\n type?: 'text' | 'password' | 'number';\n placeholder?: string;\n autoCapitalize?: string;\n autoComplete?: string;\n autoCorrect?: string;\n spellCheck?: boolean;\n style?: React.CSSProperties;\n className?: string;\n\n theme?: Theme;\n level?: number;\n devisible?: boolean;\n center?: boolean;\n round?: boolean;\n width?: string | number;\n error?: boolean;\n\n enterIconLeft?: boolean;\n enterEmpty?: boolean;\n enterAtClick?: () => void;\n escapeClear?: boolean;\n\n ariaLabel?: string;\n}\n\nexport type TextlineType = TextlineProperties & React.RefAttributes<any>;\n\n/**\n * @param text `string`\n * @param atChange `(event: React.ChangeEvent<HTMLInputElement>, value: string) => void`\n * @param atKeyDown `(event: React.KeyboardEvent<HTMLInputElement>) => void`\n * @param atFocus `(event: React.FocusEvent<HTMLInputElement>) => void`\n * @param atBlur `(event: React.FocusEvent<HTMLInputElement>) => void`\n *\n * @param type optional - `'text' | 'password' | 'number'`\n * @param placeholder optional - `string`\n * @param autoCapitalize optional - `string`\n * @param autoComplete optional - `string`\n * @param autoCorrect optional - `string`\n * @param spellCheck optional - `boolean`\n * @param style optional - `React.CSSProperties`\n *\n * @param theme optional - `Theme`\n * @param level optional - `number`\n * @param devisible optional - `boolean`\n * @param center optional - `boolean`\n * @param round optional - `boolean`\n * @param width optional - `string | number`\n * @param error optional - `boolean`\n *\n * @param enterIconLeft optional - `boolean`\n * @param enterEmpty optional - `boolean`\n * @param enterAtClick optional - `() => void`\n * @param escapeClear optional - `boolean`\n *\n * @param ariaLabel optiona - `boolean`\n */\nconst Textline: React.ForwardRefExoticComponent<TextlineType> = forwardRef<HTMLInputElement, TextlineProperties>((\n properties,\n reference,\n) => {\n // #region properties\n const {\n text,\n atChange,\n atKeyDown,\n atFocus,\n atBlur,\n\n type,\n placeholder,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n spellCheck,\n style,\n className,\n\n theme,\n level,\n devisible,\n center,\n round,\n width,\n error,\n\n enterIconLeft,\n enterEmpty,\n enterAtClick,\n escapeClear,\n\n ariaLabel,\n } = properties;\n\n const _type = type || 'text';\n const _theme = theme || plurid;\n const _level = level ?? 0;\n const _round = round ?? true;\n // #endregion properties\n\n\n // #region references\n const inputElement = useRef<HTMLInputElement | null>();\n // #endregion references\n\n\n // #region handlers\n const handleKeyDown = (\n event: React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if (!inputElement.current) {\n return;\n }\n\n if (atKeyDown) {\n atKeyDown(event);\n }\n\n if (\n enterAtClick\n && event.key === 'Enter'\n ) {\n enterAtClick();\n }\n\n if (\n escapeClear\n && event.key === 'Escape'\n && inputElement.current\n ) {\n setNativeValue(inputElement.current, '');\n const _event = new Event('input', {\n bubbles: true,\n });\n inputElement.current.dispatchEvent(_event);\n }\n }\n // #endregion handlers\n\n\n // #region render\n const showEnterIcon = enterAtClick && (text.length > 0 || enterEmpty);\n\n return (\n <StyledTextline\n theme={_theme}\n level={_level}\n devisible={devisible}\n center={center}\n round={_round}\n width={width}\n className={className}\n >\n <input\n type={_type}\n\n value={text}\n onChange={(event) => {\n atChange(event, event.target.value);\n }}\n onKeyDown={handleKeyDown}\n onFocus={atFocus}\n onBlur={atBlur}\n\n placeholder={placeholder}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n spellCheck={spellCheck}\n\n aria-label={ariaLabel}\n\n style={{\n ...style,\n paddingRight: showEnterIcon ? '35px' : undefined,\n }}\n\n ref={mergeReferences(\n inputElement,\n reference,\n )}\n />\n\n {error && (\n <StyledErrorLine\n theme={_theme}\n devisible={devisible}\n round={_round}\n />\n )}\n\n {\n showEnterIcon\n && (\n <StyledEnterIcon\n theme={_theme}\n onClick={() => enterAtClick()}\n left={enterIconLeft}\n >\n ➔\n </StyledEnterIcon>\n )\n }\n </StyledTextline>\n );\n // #endregion render\n});\n// #endregion module\n\n\n\n// #region exports\nexport default Textline;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledDropdown: any = styled.div`\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n text-align: ${(props: any) => {\n if (props.left) {\n return 'left';\n }\n return 'right';\n }};\n font-size: 1rem;\n\n position: relative;\n`;\n\n\nexport const StyledDropdownSelected: any = styled.div`\n cursor: pointer;\n user-select: none;\n color: ${(props: any) => {\n if (props.selectedColor) {\n return props.selectedColor;\n }\n\n return props.theme.colorPrimary;\n }};\n`;\n\n\nexport const StyledDropdownList: any = styled.div`\n font-size: 0.85rem;\n\n background: ${(props: any) => {\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n }};\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n position: absolute;\n left: ${(props: any) => {\n if (props.left) {\n return '0px';\n }\n return 'auto';\n }};\n right: ${(props: any) => {\n if (props.left) {\n return 'auto';\n }\n return '0px';\n }};\n top: ${(props: any) => {\n if (props.listTop) {\n return props.listTop;\n }\n\n return '25px';\n }};\n height: ${(props: any) => {\n if (props.heightItems) {\n const value = props.heightItems * 2 + 'rem';\n if (props.heightBeyond) {\n return `calc(${value} + 1rem)`;\n }\n return value;\n }\n return 'initial';\n }};\n overflow: ${(props: any) => {\n if (props.heightItems) {\n return 'scroll';\n }\n return 'initial';\n }};\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 width: ${(props: any) => {\n if (props.width) {\n if (typeof props.width === 'number') {\n return props.width + 'px';\n }\n if (typeof props.width === 'string') {\n return props.width;\n }\n }\n return 'initial';\n }};\n\n border-radius: 10px;\n min-width: 60px;\n\n z-index: 9998;\n box-shadow: 0px 3px 5px 1px hsla(327, 94%, 10%, 0.7);\n\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n ul li {\n box-sizing: border-box;\n padding: 0.3rem 0.6rem;\n user-select: none;\n cursor: pointer;\n min-height: 2rem;\n display: grid;\n align-items: center;\n word-break: break-all;\n justify-content: ${(props: any) => {\n if (props.left) {\n return 'left';\n }\n return 'right';\n }};\n }\n\n ul li:hover {\n background: ${(props: any) => {\n if (props.level === 2) {\n return props.theme.backgroundColorSecondary;\n }\n return props.theme.backgroundColorTertiary;\n }};\n }\n\n ul li:first-child {\n border-top-right-radius: 10px;\n border-top-left-radius: 10px;\n }\n\n ul li:last-child {\n border-bottom-right-radius: 10px;\n border-bottom-left-radius: 10px;\n }\n`;\n\n\nexport const StyledFilterable: any = styled.div`\n position: relative;\n\n input {\n text-align: ${(props: any) => {\n if (props.left) {\n return 'left !important';\n }\n return 'right !important';\n }};\n }\n`;\n\n\n\nexport interface IStyledFilterUpdate {\n left?: boolean;\n}\n\nexport const StyledFilterUpdate: any = styled.div<IStyledFilterUpdate>`\n position: absolute;\n z-index: 9999;\n top: 0;\n left: ${(props: any) => {\n if (props.left) {\n return 'auto';\n }\n return '0';\n }};\n right: ${(props: any) => {\n if (props.left) {\n return '0';\n }\n return 'auto';\n }};\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconReset,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n PluridUIDropdownSelectable,\n } from '~data/interfaces';\n\n import Textline from '../Textline';\n // #endregion external\n\n\n // #region internal\n import {\n StyledDropdown,\n StyledDropdownSelected,\n StyledDropdownList,\n StyledFilterable,\n StyledFilterUpdate,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface DropdownProperties {\n // #region required\n // #region values\n selectables: (PluridUIDropdownSelectable | string)[];\n selected: PluridUIDropdownSelectable | string;\n // #endregion values\n\n // #region methods\n atSelect: (\n selection: PluridUIDropdownSelectable | string,\n kind?: string,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n left?: boolean;\n kind?: string;\n listTop?: string;\n dropdownToggled?: boolean;\n dropdownSign?: string | boolean;\n\n /**\n * Hide dropdown after click selection.\n *\n * Default `true`.\n */\n hideAtSelect?: boolean;\n /**\n * Run the `atSelect` function when hovering over a dropdown item.\n *\n * Default `true`.\n */\n selectAtHover?: boolean;\n selectedColor?: string;\n\n /**\n * Inserts an input field to filter the selectables.\n */\n filterable?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n\n theme?: Theme;\n generalTheme?: Theme;\n interactionTheme?: Theme;\n level?: number;\n devisible?: boolean;\n round?: boolean;\n width?: string | number;\n\n /**\n * The number of items determining the height;\n */\n heightItems?: number;\n // #endregion values\n\n // #region methods\n setDropdownToggled?: any;\n filterUpdate?: () => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst Dropdown: React.FC<DropdownProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n selected,\n selectables,\n // #endregion values\n\n // #region methods\n atSelect,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n left,\n kind,\n listTop,\n dropdownToggled,\n dropdownSign,\n hideAtSelect,\n selectAtHover,\n selectedColor,\n filterable,\n\n style,\n className,\n\n theme: themeProperty,\n generalTheme: generalThemeProperty,\n interactionTheme: interactionThemeProperty,\n level,\n\n heightItems,\n width,\n // #endregion values\n\n // #region methods\n setDropdownToggled,\n filterUpdate,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const _generalTheme = generalThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : generalThemeProperty;\n\n const _interactionTheme = interactionThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : interactionThemeProperty;\n\n const _level = level ?? 0;\n const _hideAtSelect = hideAtSelect ?? true;\n const _selectAtHover = selectAtHover ?? false;\n\n const _dropdownSign = typeof dropdownSign === 'string'\n ? dropdownSign\n : !dropdownSign\n ? ''\n : '▼';\n // #endregion properties\n\n\n // #region references\n const isMounted = useRef(true);\n const filterInput = useRef<HTMLInputElement | null>(null);\n // #endregion references\n\n\n // #region state\n const [\n generalTheme,\n setGeneralTheme,\n ] = useState(_generalTheme);\n const [\n interactionTheme,\n setInteractionTheme,\n ] = useState(_interactionTheme);\n\n const [\n showList,\n setShowList,\n ] = useState(false);\n const [\n selectedBackgroundColor,\n setSelectedBackgroundColor,\n ] = useState(interactionTheme.backgroundColorTertiary);\n const [\n filterValue,\n setFilterValue,\n ] = useState('');\n const [\n filteredSelectables,\n setFilteredSelectables,\n ] = useState([\n ...selectables,\n ]);\n\n const [\n showFilterUpdate,\n setShowFilterUpdate,\n ] = useState(!!filterUpdate);\n\n const [\n arrowIndex,\n setArrowIndex,\n ] = useState(-1);\n // #endregion state\n\n\n // #region handlers\n const select = (\n selected: string | PluridUIDropdownSelectable,\n ) => {\n kind\n ? atSelect(selected, kind)\n : atSelect(selected);\n }\n\n const handleSelect = (\n selected: string | PluridUIDropdownSelectable,\n ) => {\n select(selected);\n\n if (_hideAtSelect) {\n setShowList(false);\n }\n }\n\n const handleHover = (\n selected: string | PluridUIDropdownSelectable,\n ) => {\n if (_selectAtHover) {\n select(selected);\n }\n }\n\n const handleFiltering = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const {\n value,\n } = event.target;\n\n const filterValue = value.toLowerCase();\n\n const filteredSelectables = selectables.filter(selectable => {\n if (typeof selectable === 'string') {\n const filterSelectable = selectable.toLowerCase();\n\n if (selectable.toLowerCase().startsWith(filterValue)) {\n return true;\n }\n\n const split = filterSelectable.split(' ');\n\n for (const element of split) {\n if (element.startsWith(filterValue)) {\n return true;\n }\n }\n\n return false;\n }\n\n\n const filterSelectable = selectable.value.toLowerCase();\n\n if (filterSelectable.startsWith(filterValue)) {\n return true;\n }\n\n const split = filterSelectable.split(' ');\n\n for (const element of split) {\n if (element.startsWith(filterValue)) {\n return true;\n }\n }\n\n return false;\n });\n\n setFilterValue(value);\n setFilteredSelectables(filteredSelectables);\n\n itemsReferences.current = filteredSelectables.reduce((accumulator, _, index) => {\n (accumulator as any)[index] = React.createRef();\n return accumulator;\n }, {});\n }\n\n const focusFilterInput = () => {\n setTimeout(() => {\n if (filterInput.current) {\n filterInput.current.focus();\n }\n }, 100);\n }\n // #endregion handlersn\n\n\n // #region references\n const itemsReferences = useRef<Record<number, any>>(\n filteredSelectables.reduce((accumulator, _, index) => {\n (accumulator as Record<number, any>)[index] = React.createRef();\n return accumulator;\n }, {}),\n );\n // #endregion references\n\n\n // #region effects\n /** Handle Dropdown */\n useEffect(() => {\n if (!dropdownToggled) {\n setShowList(false);\n }\n }, [\n dropdownToggled,\n ]);\n\n /** Handle Level */\n useEffect(() => {\n if (_level === 2) {\n setSelectedBackgroundColor(interactionTheme.backgroundColorSecondary);\n } else {\n setSelectedBackgroundColor(interactionTheme.backgroundColorTertiary);\n }\n }, [\n _level,\n interactionTheme,\n ]);\n\n /** Handle Themes */\n useEffect(() => {\n const generalTheme = generalThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : generalThemeProperty;\n\n const interactionTheme = interactionThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : interactionThemeProperty;\n\n setGeneralTheme(generalTheme);\n setInteractionTheme(interactionTheme);\n }, [\n themeProperty,\n generalThemeProperty,\n interactionThemeProperty,\n ]);\n\n /**\n * Handle Arrows.\n */\n useEffect(() => {\n const scrollTo = (\n index: number,\n ) => {\n if (itemsReferences.current[index].current) {\n itemsReferences.current[index].current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n }\n\n const handleArrows = (\n event: KeyboardEvent,\n ) => {\n if (event.key === 'ArrowUp') {\n const newIndex = arrowIndex - 1;\n\n if (newIndex >= 0) {\n setArrowIndex(newIndex);\n scrollTo(newIndex);\n }\n }\n\n if (event.key === 'ArrowDown') {\n const newIndex = arrowIndex + 1;\n\n if (newIndex < filteredSelectables.length) {\n setArrowIndex(newIndex);\n scrollTo(newIndex);\n }\n }\n\n if (event.key === 'Enter') {\n const selected = filteredSelectables[arrowIndex];\n\n if (selected) {\n atSelect(selected);\n setArrowIndex(-1);\n\n if (_hideAtSelect) {\n setShowList(false);\n }\n }\n }\n }\n\n const handleScroll = () => {\n setArrowIndex(-1);\n }\n\n if (showList) {\n window.addEventListener('keydown', handleArrows);\n window.addEventListener('wheel', handleScroll);\n } else {\n setArrowIndex(-1);\n }\n\n return () => {\n if (showList) {\n window.removeEventListener('keydown', handleArrows);\n window.removeEventListener('wheel', handleScroll);\n }\n }\n }, [\n arrowIndex,\n showList,\n ]);\n\n /**\n * Is mounted.\n */\n useEffect(() => {\n return () => {\n isMounted.current = false;\n }\n }, []);\n\n /**\n * Selectables update.\n */\n useEffect(() => {\n setFilteredSelectables(\n [\n ...selectables,\n ],\n );\n }, [\n selectables.length,\n ]);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledDropdown\n theme={interactionTheme}\n left={left}\n style={{...style}}\n className={className}\n >\n <StyledDropdownSelected\n onClick={() => {\n setShowList(!showList);\n\n if (setDropdownToggled) {\n setDropdownToggled(kind);\n }\n\n if (!showList && filterable) {\n focusFilterInput();\n }\n }}\n theme={generalTheme}\n selectedColor={selectedColor}\n >\n {typeof selected === 'string'\n ? selected\n : selected.value\n }\n {_dropdownSign && (\n <>\n &nbsp;{_dropdownSign}\n </>\n )}\n </StyledDropdownSelected>\n\n {showList && (\n <StyledDropdownList\n theme={interactionTheme}\n left={left}\n listTop={listTop}\n level={_level}\n heightItems={heightItems && filterable && filteredSelectables.length < heightItems\n ? filteredSelectables.length + 1\n : heightItems\n }\n heightBeyond={filteredSelectables.length > (heightItems || 0)}\n width={width}\n >\n <ul>\n {filterable && (\n <li\n style={{\n backgroundColor: interactionTheme.backgroundColorTertiary,\n boxShadow: interactionTheme.boxShadowPenumbraInset,\n }}\n >\n <StyledFilterable\n left={left}\n >\n {filterUpdate\n && showFilterUpdate\n && (\n <StyledFilterUpdate\n left={left}\n >\n <PluridIconReset\n theme={interactionTheme}\n atClick={() => {\n setShowFilterUpdate(false);\n filterUpdate();\n\n setTimeout(() => {\n if (!isMounted.current) {\n return;\n }\n\n setShowFilterUpdate(true);\n }, 5300);\n }}\n />\n </StyledFilterUpdate>\n )}\n\n <Textline\n ref={filterInput}\n theme={interactionTheme}\n text={filterValue}\n atChange={handleFiltering}\n devisible={true}\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n style={{\n padding: !!filterUpdate\n ? left\n ? '0 1.3rem 0 0'\n : '0 0 0 1.3rem'\n : '0'\n }}\n />\n </StyledFilterable>\n </li>\n )}\n\n {filteredSelectables.map((selectable, index) => {\n let selectableID = typeof selectable === 'string'\n ? selectable\n : selectable.id;\n let selectableValue = typeof selectable === 'string'\n ? selectable\n : selectable.value;\n\n let isSelected = false;\n if (typeof selected === 'string') {\n if (selected === selectableID) {\n isSelected = true;\n }\n } else {\n if (selected.id === selectableID) {\n isSelected = true;\n }\n }\n\n if (arrowIndex === index) {\n isSelected = true;\n }\n\n return (\n <li\n ref={itemsReferences.current[index]}\n key={selectableID}\n onClick={() => handleSelect(selectable)}\n onMouseEnter={() => handleHover(selectable)}\n style={{\n backgroundColor: isSelected\n ? selectedBackgroundColor\n : '',\n }}\n >\n {selectableValue}\n </li>\n );\n })}\n </ul>\n </StyledDropdownList>\n )}\n </StyledDropdown>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Dropdown;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledEntityPill {\n theme: Theme;\n}\n\nexport const StyledEntityPill = styled.div<IStyledEntityPill>`\n background-color: ${\n ({\n theme,\n }: IStyledEntityPill) => theme.backgroundColorTertiary\n };\n box-shadow: ${\n ({\n theme,\n }: IStyledEntityPill) => theme.boxShadowUmbra\n };\n\n padding: 0.5rem 1rem;\n margin: 0.5rem;\n border-radius: 20px;\n\n display: flex;\n align-items: center;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n plurid as pluridTheme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconDelete,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledEntityPill,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface EntityPillProperties {\n // #region required\n // #region values\n id: string;\n // #endregion values\n\n // #region methods\n remove: (\n id: string,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n text?: string;\n theme?: Theme;\n style?: React.CSSProperties;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst EntityPill: React.FC<EntityPillProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n id,\n // #endregion values\n\n // #region methods\n remove,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n text,\n theme,\n style,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const textValue = text || id;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledEntityPill\n theme={theme || pluridTheme}\n style={{\n ...style,\n }}\n >\n <div\n style={{\n marginRight: '0.5rem',\n }}\n >\n {textValue}\n </div>\n\n <PluridIconDelete\n theme={theme}\n atClick={() => remove(id)}\n />\n </StyledEntityPill>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default EntityPill;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledEntityPillGroup {\n theme: Theme;\n}\n\nexport const StyledEntityPillGroup = styled.div<IStyledEntityPillGroup>`\n display: flex;\n flex-flow: wrap;\n margin: 0 auto;\n justify-content: center;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n plurid as pluridTheme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n PluridUIEntityPillData,\n } from '~data/interfaces';\n\n import EntityPill from '~components/universal/inputs/EntityPill';\n // #endregion external\n\n\n // #region internal\n import {\n StyledEntityPillGroup,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface EntityPillGroupProperties {\n // #region required\n // #region values\n entities: (string | PluridUIEntityPillData)[];\n // #endregion values\n\n // #region methods\n remove: (\n id: string,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n keyFix?: string;\n theme?: Theme;\n style?: React.CSSProperties;\n pillStyle?: React.CSSProperties;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst EntityPillGroup: React.FC<EntityPillGroupProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n entities,\n // #endregion values\n\n // #region methods\n remove,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n keyFix,\n theme,\n style,\n pillStyle,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledEntityPillGroup\n theme={theme}\n style={{\n ...style,\n }}\n >\n {entities.map(entity => {\n const stringEntity = typeof entity === 'string';\n const id = stringEntity ? entity : entity.id;\n const text = stringEntity ? undefined : entity.text;\n\n return (\n <EntityPill\n key={`entity-pill-${id}${keyFix || ''}`}\n\n id={id}\n text={text}\n\n remove={remove}\n\n theme={theme || pluridTheme}\n style={pillStyle}\n />\n );\n })}\n </StyledEntityPillGroup>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default EntityPillGroup;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputDescriptor {\n theme: Theme;\n}\n\nexport const StyledInputDescriptor = styled.div<IStyledInputDescriptor>`\n text-align: left;\n font-size: 0.9rem;\n line-height: 1;\n min-height: 1.1rem;\n margin-top: 1.3rem;\n margin-bottom: 0.4rem;\n margin-left: 0.9rem;\n\n font-family: ${\n ({\n theme,\n }: IStyledInputDescriptor) => theme.fontFamilySansSerif\n };\n color: ${\n ({\n theme,\n }: IStyledInputDescriptor) => theme.colorPrimary\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledInputDescriptor,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputDescriptorProperties {\n // #region required\n // #region values\n name: string;\n show: boolean;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst InputDescriptor: React.FC<InputDescriptorProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n show,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputDescriptor\n theme={theme}\n className={className}\n style={{\n ...style,\n }}\n >\n {show && (\n <>\n {name}\n </>\n )}\n </StyledInputDescriptor>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputDescriptor;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputBox {\n theme: Theme;\n}\n\nexport const StyledInputBox = styled.div`\n textarea {\n box-sizing: border-box;\n width: 100%;\n min-height: 5rem;\n resize: vertical;\n outline: none;\n border: none;\n padding: 0.9rem;\n font-size: 0.8rem;\n border-radius: 0.9rem;\n line-height: 1.5;\n\n font-family: ${\n ({\n theme,\n }: IStyledInputBox) => theme.fontFamilySansSerif\n };\n color: ${\n ({\n theme,\n }: IStyledInputBox) => theme.colorPrimary\n };\n background-color: ${\n ({\n theme,\n }: IStyledInputBox) => theme.backgroundColorTertiary\n };\n box-shadow: inset 0px 4px 4px ${\n ({\n theme,\n }: IStyledInputBox) => theme.boxShadowUmbraColor\n };\n\n\n ::placeholder {\n color: ${\n ({\n theme,\n }: IStyledInputBox) => theme.colorSecondary\n };\n }\n }\n`;\n\n\nexport interface IStyledTextBox {\n theme: Theme;\n}\n\nexport const StyledTextBox = styled.div<IStyledTextBox>`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridInputDescriptor from '../InputDescriptor';\n // #endregion external\n\n\n // #region internal\n import {\n StyledInputBox,\n StyledTextBox,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputBoxProperties {\n // #region required\n // #region values\n name: string;\n text: string;\n // #endregion values\n\n // #region methods\n atChange: (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n atKeyDown?: (\n event: React.KeyboardEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst InputBox: React.FC<InputBoxProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n name,\n // #endregion values\n\n // #region methods\n atChange,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n atKeyDown,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputBox\n theme={theme}\n className={className}\n style={{\n ...style,\n }}\n >\n <PluridInputDescriptor\n name={name}\n show={text !== ''}\n theme={theme}\n />\n\n <StyledTextBox\n theme={theme}\n >\n <textarea\n value={text}\n placeholder={name}\n onChange={(event) => atChange(event as any)}\n onKeyDown={(event) => atKeyDown ? atKeyDown(event as any) : null}\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n />\n </StyledTextBox>\n </StyledInputBox>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputBox;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputLine {\n theme: Theme;\n}\n\nexport const StyledInputLine = styled.div<IStyledInputLine>`\n width: 350px;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridInputDescriptor from '../InputDescriptor';\n\n import PluridTextline, {\n TextlineProperties,\n } from '../Textline';\n // #endregion external\n\n\n // #region internal\n import {\n StyledInputLine,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputLineProperties {\n // #region required\n // #region values\n name: string;\n text: string;\n // #endregion values\n\n // #region methods\n atChange: (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n type?: 'text' | 'password';\n error?: boolean;\n textline?: Partial<TextlineProperties>;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n atKeyDown?: (\n event: React.KeyboardEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst InputLine: React.FC<InputLineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n text,\n // #endregion values\n\n // #region methods\n atChange,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n type,\n error,\n textline,\n style,\n className,\n // #endregion values\n\n // #region methods\n atKeyDown,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputLine\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n <PluridInputDescriptor\n name={name}\n show={text !== ''}\n theme={theme}\n />\n\n <PluridTextline\n text={text}\n type={type}\n placeholder={name}\n\n theme={theme}\n level={2}\n error={error}\n\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n\n atChange={atChange}\n atKeyDown={atKeyDown}\n\n {...textline}\n />\n </StyledInputLine>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSwitch: any = styled.label`\n position: relative;\n display: inline-block;\n width: 60px;\n height: 34px;\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n`;\n\n\nconst levelBackgroundColor = (\n props: any,\n) => {\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n}\n\nconst backgroundColor = (\n props: any,\n) => {\n if (props.accent) {\n return props.accent;\n }\n\n if (props.exclusive && !props.checked) {\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimaryAlpha;\n case 1:\n return props.theme.backgroundColorSecondaryAlpha;\n case 2:\n return props.theme.backgroundColorTertiaryAlpha;\n case 3:\n return props.theme.backgroundColorQuaternaryAlpha;\n default:\n return props.theme.backgroundColorPrimaryAlpha;\n }\n }\n\n return levelBackgroundColor(props);\n}\n\n\nexport const StyledSwitchSlider: any = styled.span`\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: .4s ease-in-out;\n box-shadow: inset 0 2px 3px black;\n\n background-color: ${(props: any) => {\n return backgroundColor(props);\n }};\n border-radius: ${(props: any) => {\n if (props.round) {\n return '34px';\n }\n return '0';\n }};\n\n :before {\n position: absolute;\n content: \"\";\n height: 26px;\n width: 26px;\n left: 4px;\n bottom: 4px;\n transition: .4s;\n\n background-color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n border-radius: ${(props: any) => {\n if (props.round) {\n return '50%';\n }\n return '0';\n }};\n transform: ${(props: any) => {\n if (props.checked) {\n return 'translateX(26px)';\n }\n return 'translateX(0px)';\n }};\n }\n`;\n\n\nexport const StyledSwitchIcon: any = styled.div`\n height: 100%;\n position: absolute;\n top: 0;\n display: flex;\n align-items: center;\n transition: .4s;\n\n svg {\n fill: ${(props: any) => {\n return levelBackgroundColor(props);\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledSwitch,\n StyledSwitchSlider,\n StyledSwitchIcon,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface SwitchProperties {\n checked: boolean;\n\n theme?: Theme;\n level?: number;\n round?: boolean;\n exclusive?: boolean;\n accent?: string;\n Icon?: React.FC<any>;\n\n atChange: () => void;\n}\n\nconst Switch: React.FC<SwitchProperties> = (\n properties,\n) => {\n // #region properties\n const {\n checked,\n\n theme,\n level,\n round,\n exclusive,\n accent,\n Icon,\n\n atChange,\n } = properties;\n\n const _theme = theme || pluridTheme;\n\n const _level = level === undefined\n ? 0\n : level;\n\n const _round = round === undefined\n ? true\n : round;\n\n const commonProperties = {\n theme: _theme,\n level: _level,\n exclusive,\n checked,\n accent,\n };\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSwitch\n theme={_theme}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={() => atChange()}\n />\n\n <StyledSwitchSlider\n round={_round}\n {...commonProperties}\n />\n\n {Icon && (\n <StyledSwitchIcon\n {...commonProperties}\n style={{\n left: checked ? '35px' : '9px',\n }}\n >\n <Icon />\n </StyledSwitchIcon>\n )}\n </StyledSwitch>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Switch;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputSwitch {\n compact?: boolean;\n}\n\nexport const StyledInputSwitch = styled.div<IStyledInputSwitch>`\n font-size: 0.9rem;\n\n margin-top: ${\n ({\n compact,\n }: IStyledInputSwitch) => {\n if (compact) {\n return '1rem';\n }\n\n return '2.2rem';\n }\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridSwitch, {\n SwitchProperties,\n } from '../Switch';\n import PluridFormLeftRight from '../../form/FormLeftRight';\n // #endregion external\n\n\n // #region internal\n import {\n StyledInputSwitch,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputSwitchProperties {\n // #region required\n // #region values\n name: string;\n checked: boolean;\n // #endregion values\n\n // #region methods\n atChange: () => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n compact?: boolean;\n switch?: SwitchProperties;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst InputSwitch: React.FC<InputSwitchProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n checked,\n // #endregion values\n\n // #region methods\n atChange,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n compact,\n switch: switchProperties,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputSwitch\n compact={compact}\n style={{\n ...style,\n }}\n className={className}\n >\n <PluridFormLeftRight>\n <div\n style={{\n marginLeft: '0.9rem',\n }}\n >\n {name}\n </div>\n\n <PluridSwitch\n checked={checked}\n level={2}\n exclusive={true}\n theme={theme}\n atChange={() => atChange()}\n {...switchProperties}\n />\n </PluridFormLeftRight>\n </StyledInputSwitch>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputSwitch;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledItemsline {\n theme: Theme,\n level: number;\n left: boolean;\n}\n\nexport const StyledItemsline = styled.div<IStyledItemsline>`\n padding: 0 0.7rem;\n font-size: 0.9rem;\n\n ul {\n list-style: none;\n padding: 0;\n margin-top: 0.4rem;\n margin-bottom: 0.8rem;\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n flex-direction: ${(props: IStyledItemsline) => {\n if (props.left) {\n return 'row';\n }\n return 'row-reverse';\n }};\n }\n\n li {\n margin: 0 0.3rem;\n cursor: pointer;\n user-select: none;\n line-height: 1.2rem;\n\n :hover {\n text-decoration: line-through;\n }\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import themes, {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledItemsline,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ItemslineProperties {\n items: string[];\n removeItem: (item: string) => void;\n\n theme?: Theme;\n level?: number;\n left?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n}\n\n/**\n * Renders an icon and a descriptive text.\n *\n * @param properties\n */\nconst Itemsline: React.FC<ItemslineProperties> = (properties) => {\n const {\n /** required */\n items,\n removeItem,\n\n /** optional */\n theme,\n level,\n left,\n\n style,\n className,\n } = properties;\n\n const _theme = theme === undefined\n ? themes.plurid\n : theme;\n\n const _level = level === undefined\n ? 0\n : level;\n\n const _left = left === undefined\n ? false\n : left;\n\n return (\n <StyledItemsline\n style={{...style}}\n className={className}\n theme={_theme}\n level={_level}\n left={_left}\n >\n {items.length > 0 && (\n <ul>\n {items.map(item => {\n return (\n <li\n key={item + Math.random()}\n onClick={() => removeItem(item)}\n >\n {item}\n </li>\n );\n })}\n </ul>\n )}\n </StyledItemsline>\n );\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Itemsline;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSelect: any = styled.div`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledSelect,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface PluridSelectProperties {\n selectables: string[];\n atChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n\n theme?: Theme;\n level?: number;\n devisible?: boolean;\n round?: boolean;\n width?: string | number;\n}\n\n/**\n * @param selectables `string[]`\n * @param atChange `(event: React.ChangeEvent<HTMLInputElement>) => void`\n *\n * @param theme optional - `Theme`\n * @param level optional - `number`\n * @param devisible optional - `boolean`\n * @param round optional - `boolean`\n * @param width optional - `string | number`\n */\nconst PluridSelect: React.FC<PluridSelectProperties> = (\n properties,\n) => {\n // #region properties\n const {\n selectables,\n atChange,\n\n theme,\n level,\n devisible,\n round,\n width,\n } = properties;\n\n const _theme = theme || pluridTheme;\n const _level = level ?? 0;\n const _round = round ?? true;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSelect\n theme={_theme}\n level={_level}\n devisible={devisible}\n round={_round}\n width={width}\n >\n <select>\n {selectables.map(selectable => {\n return (\n <option\n key={selectable}\n value={selectable}\n >\n {selectable}\n </option>\n );\n })}\n </select>\n </StyledSelect>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default PluridSelect;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSlider: any = styled.div`\n display: grid;\n align-items: center;\n font-family: ${(props: any) => props.theme.fontFamilySansSerif };\n grid-template-columns: 1fr;\n grid-template-rows: auto;\n\n width: ${(props: any) => {\n if (props.width) {\n if (typeof props.width === 'string') {\n return props.width;\n }\n return props.width + 'px';\n }\n return '100px';\n }};\n`;\n\n\nexport const StyledNamedValue: any = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 0.8rem;\n line-height: 16px;\n user-select: none;\n`;\n\n\nexport const StyledSliderValue = styled.div`\n user-select: none;\n font-size: 0.8rem;\n min-width: 1.6rem;\n text-align: right;\n`;\n\n\nexport const StyledSliderInputContainer: any = styled.div`\n width: ${(props: any) => {\n if (props.width) {\n if (typeof props.width === 'string') {\n return props.width;\n }\n return props.width + 'px';\n }\n return '100px';\n }};\n\n /*\n article: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/\n tool: http://danielstern.ca/range.css/\n */\n input[type=range] {\n -webkit-appearance: none;\n width: 100%;\n margin: 2px 0;\n padding: 10px 0;\n background: transparent;\n cursor: pointer;\n }\n\n input[type=range]:focus {\n outline: none;\n }\n\n input[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 2px;\n cursor: pointer;\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-webkit-slider-thumb {\n border: 2px solid ${(props: any) => props.theme.colorPrimary };\n height: ${(props: any) => {\n switch (props.thumbSize) {\n case 'small':\n return '14px';\n case 'normal':\n return '20px';\n case 'large':\n return '26px';\n default:\n return '26px';\n }\n }};\n width: ${(props: any) => {\n switch (props.thumbSize) {\n case 'small':\n return '14px';\n case 'normal':\n return '20px';\n case 'large':\n return '26px';\n default:\n return '26px';\n }\n }};\n background: ${(props: any) => {\n if (props.hovered) {\n return props.theme.colorPrimary;\n }\n\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n }};\n margin-top: ${(props: any) => {\n switch (props.thumbSize) {\n case 'small':\n return '-6px';\n case 'normal':\n return '-9px';\n case 'large':\n return '-12px';\n default:\n return '-12px';\n }\n }};\n border-radius: 50px;\n cursor: pointer;\n -webkit-appearance: none;\n }\n\n input[type=range]:focus::-webkit-slider-runnable-track {\n background: ${(props: any) => props.theme.colorPrimary };\n }\n\n input[type=range]::-moz-range-track {\n width: 100%;\n height: 2px;\n cursor: pointer;\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-moz-range-thumb {\n border: 2px solid ${(props: any) => props.theme.colorPrimary };\n height: 15px;\n width: 15px;\n border-radius: 50px;\n background: ${(props: any) => {\n if (props.hovered) {\n return props.theme.colorPrimary;\n }\n\n // return '#384158';\n return props.theme.backgroundColorTertiary;\n }};\n cursor: pointer;\n }\n\n input[type=range]::-ms-track {\n width: 100%;\n height: 2px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n }\n\n input[type=range]::-ms-fill-lower {\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-ms-fill-upper {\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-ms-thumb {\n border: 2px solid ${(props: any) => props.theme.colorPrimary };\n height: 15px;\n width: 15px;\n border-radius: 50px;\n background: ${(props: any) => {\n if (props.hovered) {\n return props.theme.colorPrimary;\n }\n\n // return '#384158';\n return props.theme.backgroundColorTertiary;\n }};\n cursor: pointer;\n height: 2px;\n }\n\n input[type=range]:focus::-ms-fill-lower {\n background: ${(props: any) => props.theme.colorPrimary };\n }\n\n input[type=range]:focus::-ms-fill-upper {\n background: ${(props: any) => props.theme.colorPrimary };\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledSlider,\n StyledNamedValue,\n StyledSliderInputContainer,\n StyledSliderValue,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst DEFAULT_VALUE = 0;\nconst DEFAULT_MIN = 0;\nconst DEFAULT_MAX = 100;\nconst DEFAULT_STEP = 1;\nconst DEFAULT_LEVEL = 0;\nconst DEFAULT_THUMB_SIZE = 'large';\n\nexport interface SliderProperties {\n value: number;\n atChange: (value: number) => void;\n\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n name?: string;\n theme?: Theme;\n level?: number;\n thumbSize?: 'small' | 'normal' | 'large';\n width?: number | string;\n valueSign?: string;\n namedValueAbove?: boolean;\n}\n\nconst Slider: React.FC<SliderProperties> = (\n properties,\n) => {\n // #region properties\n const {\n value,\n atChange,\n\n defaultValue,\n min,\n max,\n step,\n name,\n theme,\n level,\n thumbSize,\n width,\n valueSign,\n namedValueAbove,\n } = properties;\n\n const [mouseOver, setMouseOver] = useState(false);\n\n const _theme = theme || pluridTheme;\n\n const _level = level === undefined\n ? DEFAULT_LEVEL\n : level;\n\n const _thumbSize = thumbSize === undefined\n ? DEFAULT_THUMB_SIZE\n : thumbSize;\n\n const _step = step === undefined\n ? DEFAULT_STEP\n : step;\n // #endregion properties\n\n\n // #region handlers\n const handleDoubleClick = () => {\n atChange(defaultValue || DEFAULT_VALUE);\n }\n\n const handleSliderInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n atChange(parseFloat(event.target.value));\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledSlider\n theme={_theme}\n width={width}\n >\n {namedValueAbove && (\n <StyledNamedValue>\n <div>\n {name}\n </div>\n\n <StyledSliderValue\n theme={_theme}\n >\n {value}{valueSign}\n </StyledSliderValue>\n </StyledNamedValue>\n )}\n\n <StyledSliderInputContainer\n theme={_theme}\n hovered={mouseOver}\n thumbSize={_thumbSize}\n level={_level}\n width={width}\n >\n <input\n type=\"range\"\n min={min || DEFAULT_MIN}\n max={max || DEFAULT_MAX}\n name={name || ''}\n value={value}\n step={_step}\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n onMouseMove={() => mouseOver ? setMouseOver(true) : null}\n onChange={handleSliderInput}\n onDoubleClick={handleDoubleClick}\n />\n </StyledSliderInputContainer>\n </StyledSlider>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Slider;\n// #endregion exports\n","// #region imports\n // #region internal\n import Dropdown from './Dropdown';\n import EntityPill from './EntityPill';\n import EntityPillGroup from './EntityPillGroup';\n import InputBox from './InputBox';\n import InputDescriptor from './InputDescriptor';\n import InputLine from './InputLine';\n import InputSwitch from './InputSwitch';\n import Itemsline from './Itemsline';\n import Select from './Select';\n import Slider from './Slider';\n import Switch from './Switch';\n import Textline from './Textline';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst inputs = {\n Dropdown,\n EntityPill,\n EntityPillGroup,\n InputBox,\n InputDescriptor,\n InputLine,\n InputSwitch,\n Itemsline,\n Select,\n Slider,\n Switch,\n Textline,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default inputs;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledHR {\n theme: Theme;\n}\n\nexport const StyledHR = styled.hr<IStyledHR>`\n outline: 0;\n border: 0;\n margin: 0.8rem auto;\n height: 1px;\n\n background-color: ${\n ({\n theme,\n }: IStyledHR) => theme.colorPrimary\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledHR,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface HRProperties {\n // #region optional\n // #region values\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n // #endregion optional\n}\n\nconst HR: React.FC<HRProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region optional\n // #region values\n theme,\n style,\n className,\n // #endregion values\n // #endregion optional\n } = properties;\n\n const themeValue = theme || pluridTheme;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledHR\n theme={themeValue}\n style={{\n ...style,\n }}\n className={className}\n />\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default HR;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledProgressCircle {\n size: Sizes;\n}\n\nexport const StyledProgressCircle = styled.div<IStyledProgressCircle>`\n height: 0;\n width: 0;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n margin: 10px;\n\n svg {\n transform: translateX(-50%) translateY(-50%);\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n mathematics,\n } from '@plurid/plurid-functions';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n\n\n // #region internal\n import {\n StyledProgressCircle,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ProgressCircleProperties {\n // #region required\n // #region values\n progress: number;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n size?: Sizes;\n radius?: number;\n stroke?: number;\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst ProgressCircle: React.FC<ProgressCircleProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n progress,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n size,\n radius,\n stroke,\n theme,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const progressValue = mathematics.numbers.normalizeBetween(\n progress, 0, 100,\n );\n const radiusValue = radius || 20;\n const diameter = radiusValue * 2;\n const strokeValue = stroke || 3;\n\n const normalizedRadius = radiusValue - strokeValue * 2;\n const circumference = normalizedRadius * 2 * Math.PI;\n const strokeDashoffset = circumference - progressValue / 100 * circumference;\n\n const themeValue = theme || pluridTheme;\n const sizeValue = size || 'normal';\n // #endregion properties\n\n\n // #region render\n return (\n <StyledProgressCircle\n size={sizeValue}\n style={{\n ...style,\n }}\n className={className}\n >\n <svg\n height={diameter}\n width={diameter}\n >\n <circle\n stroke={themeValue.backgroundColorPrimaryAlpha}\n fill=\"transparent\"\n strokeWidth={strokeValue}\n r={normalizedRadius}\n cx={radiusValue}\n cy={radiusValue}\n />\n <circle\n stroke={themeValue.colorPrimary}\n fill=\"transparent\"\n strokeWidth={strokeValue}\n strokeDasharray={circumference + ' ' + circumference}\n style={{strokeDashoffset}}\n r={normalizedRadius}\n cx={radiusValue}\n cy={radiusValue}\n />\n </svg>\n </StyledProgressCircle>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default ProgressCircle;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledTooltip {\n theme: Theme;\n}\n\nexport const StyledTooltip = styled.span<IStyledTooltip>`\n position: relative;\n`;\n\n\nexport const StyledTooltipString = styled.span`\n`;\n\n\nexport const StyledTooltipIcon = styled.span`\n user-select: none;\n cursor: pointer;\n\n display: inline-grid;\n margin: 0 5px;\n place-content: center;\n height: 20px;\n width: 20px;\n border-radius: 20px;\n font-size: 12px;\n line-height: 1.4;\n text-align: left;\n\n font-family: ${(props: IStyledTooltip) => {\n return props.theme.fontFamilySansSerif;\n }};\n color: ${(props: IStyledTooltip) => {\n return props.theme.colorPrimary;\n }};\n background-color: ${(props: IStyledTooltip) => {\n return props.theme.backgroundColorSecondary;\n }};\n`;\n\n\nexport interface IStyledTooltipText {\n theme: Theme;\n indicator: boolean;\n}\n\nexport const StyledTooltipText = styled.div<IStyledTooltipText>`\n position: absolute;\n top: 30px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 2px;\n z-index: 999;\n padding: 20px;\n min-width: 150px;\n font-size: 12px;\n line-height: 1.3;\n text-align: left;\n\n color: ${(props: IStyledTooltip) => {\n return props.theme.colorPrimary;\n }};\n background-color: ${(props: IStyledTooltip) => {\n return props.theme.backgroundColorSecondary;\n }};\n box-shadow: ${(props: IStyledTooltip) => {\n return props.theme.boxShadowUmbra;\n }};\n\n :before {\n content: '';\n position: absolute;\n top: -10px;\n left: 50%;\n transform: translateX(-50%);\n border-left: ${(props: IStyledTooltipText) => {\n if (props.indicator) {\n return '10px';\n }\n return '0';\n }} solid transparent;\n border-right: ${(props: IStyledTooltipText) => {\n if (props.indicator) {\n return '10px';\n }\n return '0';\n }} solid transparent;\n border-bottom: ${(props: IStyledTooltipText) => {\n if (props.indicator) {\n return '10px';\n }\n return '0';\n }} solid ${(props: IStyledTooltip) => {\n return props.theme.backgroundColorSecondary;\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n useMounted,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledTooltip,\n StyledTooltipString,\n StyledTooltipIcon,\n StyledTooltipText,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface TooltipProperties {\n tool: string | React.FC<any>;\n tip: string | React.FC<any>;\n\n indicator?: boolean;\n /**\n * Render the `tool` as a circle.\n */\n icon?: boolean;\n\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** required */\n tool: Tool,\n tip: Tip,\n\n /** optional */\n indicator: indicatorProperty,\n icon: iconProperty,\n\n theme: themeProperty,\n style,\n className,\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const indicator = indicatorProperty ?? true;\n const icon = iconProperty ?? true;\n // #endregion properties\n\n\n // #region references\n const mounted = useMounted();\n const hoverOutTimeout = useRef<NodeJS.Timeout | null>(null);\n // #endregion references\n\n\n // #region state\n const [mouseOver, setMouseOver] = useState(false);\n const [showTooltipText, setShowTooltipText] = useState(false);\n // #endregion state\n\n\n // #region effects\n useEffect(() => {\n if (!mounted) {\n return;\n }\n\n if (mouseOver) {\n setShowTooltipText(true);\n }\n\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout(\n () => {\n if (!mounted) {\n return;\n }\n\n setShowTooltipText(false);\n },\n 500,\n );\n }\n\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n }\n }, [\n mouseOver,\n ]);\n // #endregion effects\n\n\n // #region render\n const renderTool = (\n <>\n {typeof Tool === 'string' ? (\n <>{Tool}</>\n ) : (\n <Tool />\n )}\n </>\n );\n\n return (\n <StyledTooltip\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n onMouseMove={() => !showTooltipText ? setMouseOver(true) : null}\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n {icon && (\n <StyledTooltipIcon\n theme={theme}\n >\n {renderTool}\n </StyledTooltipIcon>\n )}\n\n {!icon && (\n <StyledTooltipString>\n {renderTool}\n </StyledTooltipString>\n )}\n\n {showTooltipText && (\n <StyledTooltipText\n theme={theme}\n indicator={indicator}\n >\n {typeof Tip === 'string'\n ? (\n <>{Tip}</>\n ) : (\n <Tip />\n )}\n </StyledTooltipText>\n )}\n </StyledTooltip>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Tooltip;\n// #endregion exports\n","// #region imports\n // #region internal\n import HR from './HR';\n import ProgressCircle from './ProgressCircle';\n import Spinner from './Spinner';\n import Tooltip from './Tooltip';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst markers = {\n HR,\n ProgressCircle,\n Spinner,\n Tooltip,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default markers;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledHeading1: any = styled.h1`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 2.2rem;\n margin: 1.4rem 0;\n`;\n\n\nexport const StyledHeading2: any = styled.h2`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 2rem;\n margin: 1.2rem 0;\n`;\n\n\nexport const StyledHeading3: any = styled.h3`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.8rem;\n margin: 1rem 0;\n`;\n\n\nexport const StyledHeading4: any = styled.h4`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.6rem;\n margin: 1rem 0;\n`;\n\n\nexport const StyledHeading5: any = styled.h5`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.4rem;\n margin: 1rem 0;\n`;\n\n\nexport const StyledHeading6: any = styled.h5`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.2rem;\n margin: 1rem 0;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledHeading1,\n StyledHeading2,\n StyledHeading3,\n StyledHeading4,\n StyledHeading5,\n StyledHeading6,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface HeadingProperties {\n // #region optional\n // #region values\n theme?: Theme;\n type?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst Heading: React.FC<React.PropsWithChildren<HeadingProperties>> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n children,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n type: typeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const type = typeProperty || 'h1';\n // #endregion properties\n\n\n // #region render\n const renderProperties = {\n theme,\n style,\n className,\n };\n\n switch (type) {\n case 'h1':\n return (\n <StyledHeading1\n {...renderProperties}\n >\n {children}\n </StyledHeading1>\n );\n case 'h2':\n return (\n <StyledHeading2\n {...renderProperties}\n >\n {children}\n </StyledHeading2>\n );\n case 'h3':\n return (\n <StyledHeading3\n {...renderProperties}\n >\n {children}\n </StyledHeading3>\n );\n case 'h4':\n return (\n <StyledHeading4\n {...renderProperties}\n >\n {children}\n </StyledHeading4>\n );\n case 'h5':\n return (\n <StyledHeading5\n {...renderProperties}\n >\n {children}\n </StyledHeading5>\n );\n case 'h6':\n return (\n <StyledHeading6\n {...renderProperties}\n >\n {children}\n </StyledHeading6>\n );\n default:\n return (\n <StyledHeading1\n {...renderProperties}\n >\n {children}\n </StyledHeading1>\n );\n }\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Heading;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledParagraph {\n theme: Theme;\n size: Sizes;\n fontFamily: 'sans-serif' | 'serif';\n}\n\nexport const StyledParagraph: any = styled.p<IStyledParagraph>`\n color: ${props => props.theme.colorPrimary};\n font-family: ${(props: IStyledParagraph) => {\n switch (props.fontFamily) {\n case 'sans-serif':\n return props.theme.fontFamilySansSerif;\n case 'serif':\n return props.theme.fontFamilySerif;\n default:\n return props.fontFamily;\n }\n }};\n font-size: ${(props: IStyledParagraph) => {\n switch (props.size) {\n case 'small':\n return '0.8rem';\n case 'normal':\n return '1rem';\n case 'large':\n return '1.2rem';\n default:\n return '1rem';\n }\n }};\n\n margin: 1.2rem 0;\n line-height: 1.4;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledParagraph,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ParagraphProperties {\n // #region optional\n // #region values\n theme?: Theme;\n size?: 'small' | 'normal' | 'large';\n fontFamily?: 'sans-serif' | 'serif';\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst Paragraph: React.FC<React.PropsWithChildren<ParagraphProperties>> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n children,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n size: sizeProperty,\n fontFamily: fontFamilyProperty,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const size = sizeProperty || 'normal';\n const fontFamily = fontFamilyProperty || 'sans-serif';\n // #endregion properties\n\n\n // #region render\n return (\n <StyledParagraph\n theme={theme}\n size={size}\n fontFamily={fontFamily}\n style={{\n ...style,\n }}\n className={className}\n >\n {children}\n </StyledParagraph>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Paragraph;\n// #endregion exports\n","// #region imports\n // #region internal\n import Heading from './Heading';\n import Paragraph from './Paragraph';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst typography = {\n Heading,\n Paragraph,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default typography;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledCopyableLine = styled.div`\n display: grid;\n align-items: center;\n grid-template-columns: 16px 1fr;\n grid-gap: 0.7rem;\n`;\n\n\nexport const StyledData = styled.div`\n user-select: all;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n clipboard,\n } from '@plurid/plurid-functions';\n\n import {\n useFalseAfterTimedTrue,\n } from '@plurid/plurid-functions-react';\n\n import {\n PluridIconCopy,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledCopyableLine,\n StyledData,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface CopyableLineProperties {\n // #region required\n // #region values\n /**\n * Data to be copied.\n */\n data: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n /**\n * Data to be shown.\n */\n theme?: Theme;\n viewData?: string;\n copyMessage?: string;\n copyMessageTime?: number;\n\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst CopyableLine: React.FC<CopyableLineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n data,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme,\n viewData,\n copyMessage,\n copyMessageTime,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const viewDataText = viewData || data;\n const copyMessageText = copyMessage ?? 'copied';\n const copyMessageTimeValue = copyMessageTime || 2_000;\n // #endregion properties\n\n\n // #region state\n const [\n showCopyMessage,\n setShowCopyMessage,\n ] = useFalseAfterTimedTrue(copyMessageTimeValue);\n // #endregion state\n\n\n // #region render\n return (\n <StyledCopyableLine\n style={{\n ...style,\n }}\n className={className}\n >\n <PluridIconCopy\n atClick={() => {\n clipboard.copy(data);\n\n setShowCopyMessage(true);\n }}\n theme={theme}\n />\n\n <StyledData>\n {showCopyMessage ? (\n <>\n {copyMessageText}\n </>\n ) : (\n <>\n {viewDataText}\n </>\n )}\n </StyledData>\n </StyledCopyableLine>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default CopyableLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledNewPageLink {\n}\n\nexport const StyledNewPageLink = styled.a<IStyledNewPageLink>`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledNewPageLink,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface NewPageLinkProperties {\n // #region required\n // #region values\n link: string;\n text: string | JSX.Element;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\n/**\n * Opens the `link` in new page/tab.\n *\n * @param properties\n */\nconst NewPageLink: React.FC<NewPageLinkProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n link,\n text,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledNewPageLink\n href={link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n\n style={{\n ...style,\n }}\n className={className}\n >\n {text}\n </StyledNewPageLink>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default NewPageLink;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledScrollableLine {\n}\n\nexport const StyledScrollableLine = styled.div<IStyledScrollableLine>`\n text-align: left;\n overflow: scroll;\n outline: none;\n white-space: nowrap;\n\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n scrollbar-width: none; /* Firefox */\n ::-webkit-scrollbar {\n display: none; /* Safari and Chrome */\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n // #endregion libraries\n\n // #region internal\n import {\n StyledScrollableLine,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ScrollableLineProperties {\n // #region required\n // #region values\n text: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\n/**\n * Renders a horizontal scrollable line of text\n * based on the width of the container.\n *\n * @param properties\n */\nconst ScrollableLine: React.FC<ScrollableLineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledScrollableLine\n style={{\n ...style,\n }}\n className={className}\n >\n {text}\n </StyledScrollableLine>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default ScrollableLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledTextItem = styled.div`\n display: flex;\n align-items: center;\n margin-right: 2rem;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n PluridIconInfo,\n PluridIconProperties,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledTextItem,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface TextItemProperties {\n // #region required\n // #region values\n name: string;\n render: JSX.Element;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n icon?: React.FC<PluridIconProperties>;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst TextItem: React.FC<TextItemProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n render,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n icon: IconProperty,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const Icon = IconProperty || PluridIconInfo;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledTextItem>\n <Icon\n title={name}\n inactive={true}\n style={{\n marginRight: '0.5rem',\n }}\n />\n\n {render}\n </StyledTextItem>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default TextItem;\n// #endregion exports\n","// #region imports\n // #region internal\n import CopyableLine from './CopyableLine';\n import NewPageLink from './NewPageLink';\n import ScrollableLine from './ScrollableLine';\n import TextItem from './TextItem';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst varia = {\n CopyableLine,\n NewPageLink,\n ScrollableLine,\n TextItem,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default varia;\n// #endregion exports\n","// #region imports\n // #region internal\n import buttons from './buttons';\n import form from './form';\n import general from './general';\n import inputs from './inputs';\n import markers from './markers';\n import typography from './typography';\n import varia from './varia';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst universal = {\n buttons,\n form,\n general,\n inputs,\n markers,\n typography,\n varia,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default universal;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledDashboardsRenderer {\n theme: Theme;\n compactSelectors: boolean;\n fullRenderArea: boolean;\n}\n\nexport const StyledDashboardsRenderer = styled.div<IStyledDashboardsRenderer>`\n display: grid;\n grid-template-columns: ${\n ({\n fullRenderArea,\n compactSelectors,\n }: IStyledDashboardsRenderer) => {\n if (fullRenderArea) {\n return '1fr';\n }\n\n return compactSelectors\n ? '60px auto'\n : '1fr 4fr'\n }\n };\n min-height: 700px;\n`;\n\n\nexport const StyledNoDashboardRender = styled.div`\n display: grid;\n place-content: center;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledSidebar {\n theme: Theme;\n}\n\nexport const StyledSidebar = styled.div<IStyledSidebar>`\n`;\n\n\n\nexport interface IStyledSelectors {\n theme: Theme;\n compactSelectors: boolean;\n helpItemsCount: number;\n}\n\nexport const StyledSelectors = styled.div<IStyledSelectors>`\n height: 100%;\n display: grid;\n justify-content: space-between;\n grid-template-columns: 1fr;\n grid-template-rows: ${\n ({\n helpItemsCount,\n }: IStyledSelectors) => `120px auto ${45 * helpItemsCount}px`\n };\n\n background-color: ${\n ({\n theme,\n }: IStyledSelectors) => theme.backgroundColorTertiary\n };\n box-shadow: inset -3px 0px 3px 0px ${\n ({\n theme,\n }: IStyledSelectors) => theme.boxShadowUmbraColor\n };\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n li {\n cursor: pointer;\n padding: 0.7rem 1.4rem;\n user-select: none;\n }\n`;\n\n\nexport interface IStyledBranding {\n compactSelectors: boolean;\n}\n\nexport const StyledBranding = styled.div<IStyledBranding>`\n display: grid;\n place-content: center;\n grid-gap: 0.5rem;\n height: 100%;\n font-size: 0.9rem;\n text-align: center;\n user-select: none;\n\n img {\n cursor: pointer;\n }\n`;\n\nexport const StyledHelp = styled.div`\n li {\n font-size: 0.9rem;\n }\n`;\n\n\nexport interface IStyledHelpItem {\n compactSelectors: boolean;\n}\n\nexport const StyledHelpItem = styled.li<IStyledHelpItem>`\n display: grid;\n align-items: center;\n grid-gap: 0.5rem;\n grid-template-columns: ${\n ({\n compactSelectors,\n }: IStyledHelpItem) => compactSelectors\n ? '16px'\n : '16px auto 16px'\n };\n min-height: 45px;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledSelector {\n theme: Theme;\n selected: boolean;\n compactSelectors: boolean;\n}\n\nexport const StyledSelector = styled.li<IStyledSelector>`\n background-color: ${\n ({\n theme,\n selected,\n }: IStyledSelector) => selected\n ? theme.backgroundColorPrimary\n : 'initial'\n };\n\n :hover {\n background-color: ${\n ({\n theme,\n }: IStyledSelector) => theme.backgroundColorPrimary\n };\n }\n\n display: grid;\n grid-template-columns: ${\n ({\n compactSelectors,\n }: IStyledSelector) => compactSelectors\n ? '16px'\n : '16px auto'\n };\n grid-gap: 0.7rem;\n min-height: 45px;\n align-items: center;\n position: relative;\n`;\n\n\nexport interface IStyledSelectorRelativeLabel {\n theme: Theme;\n}\n\nexport const StyledSelectorRelativeLabel = styled.div<IStyledSelectorRelativeLabel>`\n position: absolute;\n left: 50px;\n z-index: 9999;\n min-height: 45px;\n display: grid;\n align-items: center;\n padding-right: 0.5rem;\n background-color: ${\n ({\n theme,\n }: IStyledSelectorRelativeLabel) => theme.backgroundColorPrimaryAlpha\n };\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n useEffect,\n } from 'react';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconSpace,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n Dashboard,\n } from '../../../../data';\n // #endregion external\n\n\n // #region internal\n import {\n StyledSelector,\n StyledSelectorRelativeLabel,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface SelectorProperties {\n // #region required\n // #region values\n data: Dashboard;\n compactSelectors: boolean;\n theme: Theme;\n selectedDashboard: string;\n // #endregion values\n\n // #region methods\n setSelectedDashboard: React.Dispatch<string>;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst Selector: React.FC<SelectorProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n data,\n selectedDashboard,\n compactSelectors,\n theme,\n // #endregion values\n\n // #region methods\n setSelectedDashboard,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const {\n id,\n icon,\n label,\n } = data;\n\n // FORCE uppercase for React.\n const Icon: any = icon;\n\n const selected = id === selectedDashboard;\n // #endregion properties\n\n\n // #region state\n const [\n mouseOver,\n setMouseOver,\n ] = useState(false);\n // #endregion state\n\n\n // #region effects\n useEffect(() => {\n let mounted = true;\n\n if (mouseOver) {\n setTimeout(() => {\n if (!mounted) {\n return;\n }\n\n setMouseOver(false);\n }, 2_000);\n }\n\n return () => {\n mounted = false;\n }\n }, [\n mouseOver,\n ]);\n // #endregion effects\n\n\n // #region render\n const selectorIcon = !icon\n ? (<PluridIconSpace theme={theme} />)\n : typeof icon === 'function'\n ? (<Icon theme={theme} />)\n : (<>{icon}</>);\n\n return (\n <StyledSelector\n key={(rendererID || '') + id}\n\n onClick={() => setSelectedDashboard(id)}\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n\n theme={theme}\n selected={selected}\n compactSelectors={compactSelectors}\n >\n {selectorIcon}\n\n {!compactSelectors\n && (\n <div>\n {label}\n </div>\n )}\n\n {compactSelectors\n && mouseOver\n && (\n <StyledSelectorRelativeLabel\n theme={theme}\n >\n {label}\n </StyledSelectorRelativeLabel>\n )}\n </StyledSelector>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Selector;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconArrowRight,\n PluridIconDocuments,\n PluridIconExternalLink,\n PluridIconExit,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n Dashboard,\n } from '../../data';\n // #endregion external\n\n\n // #region internal\n import {\n StyledSidebar,\n StyledSelectors,\n StyledBranding,\n StyledHelp,\n StyledHelpItem,\n } from './styled';\n\n import Selector from './components/Selector';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface SidebarProperties {\n // #region required\n // #region values\n dashboards: Dashboard[];\n theme: Theme;\n\n compactSelectors: boolean;\n setCompactSelectors: React.Dispatch<boolean>;\n selectedDashboard: string;\n setSelectedDashboard: React.Dispatch<string>;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID?: string;\n identonym?: string;\n usageType?: string;\n brandingName?: string;\n brandingNameStyle?: React.CSSProperties;\n brandingLogo?: string;\n // #endregion values\n\n // #region methods\n openManual?: () => void;\n logout?: () => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst Sidebar: React.FC<SidebarProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n dashboards,\n theme,\n\n compactSelectors,\n setCompactSelectors,\n selectedDashboard,\n setSelectedDashboard,\n\n identonym,\n usageType,\n // #endregion values\n\n // #region methods\n openManual,\n logout,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID,\n brandingName,\n brandingNameStyle,\n brandingLogo,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const openManualCount = openManual ? 1 : 0;\n const usageTypeCount = (usageType === 'PRIVATE_USAGE' && logout) ? 1 : 0;\n const helpItemsCount = openManualCount + usageTypeCount;\n // #endregion properties\n\n\n // #region state\n const [\n mouseOverSelectors,\n setMouseOverSelectors,\n ] = useState(false);\n // #endregion state\n\n\n // #region render\n const branding = (\n <StyledBranding\n compactSelectors={compactSelectors}\n >\n {!compactSelectors && (\n <>\n <div>\n {brandingLogo && (\n <img\n src={brandingLogo}\n alt=\"icon\"\n height={40}\n onClick={() => {\n setCompactSelectors(true);\n setMouseOverSelectors(false);\n }}\n />\n )}\n </div>\n\n {brandingName && (\n <div\n style={brandingNameStyle}\n >\n {brandingName}\n </div>\n )}\n </>\n )}\n\n {compactSelectors\n && mouseOverSelectors\n && (\n <>\n <PluridIconArrowRight\n atClick={() => setCompactSelectors(false)}\n />\n\n <div>\n {/* Empty space for alignment purposes. */}\n &#12644;\n </div>\n </>\n )}\n </StyledBranding>\n );\n\n const selectors = (\n <ul>\n {dashboards.map(dashboard => (\n <Selector\n key={dashboard.id}\n data={dashboard}\n compactSelectors={compactSelectors}\n theme={theme}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n rendererID={rendererID}\n />\n ))}\n </ul>\n );\n\n const help = (\n <StyledHelp>\n {mouseOverSelectors && (\n <ul>\n {openManual\n && (\n <StyledHelpItem\n onClick={() => openManual()}\n compactSelectors={compactSelectors}\n >\n <PluridIconDocuments />\n\n {!compactSelectors && (\n <>\n <div>\n manual\n </div>\n\n <PluridIconExternalLink />\n </>\n )}\n </StyledHelpItem>\n )}\n\n {usageType === 'PRIVATE_USAGE'\n && logout\n && (\n <StyledHelpItem\n onClick={() => logout()}\n compactSelectors={compactSelectors}\n >\n <PluridIconExit />\n\n {!compactSelectors && (\n <>\n <div>\n logout ({identonym})\n </div>\n\n {/* FORCED layouting. */}\n <div />\n </>\n )}\n </StyledHelpItem>\n )}\n </ul>\n )}\n </StyledHelp>\n );\n\n return (\n <StyledSidebar\n theme={theme}\n >\n <StyledSelectors\n onMouseEnter={() => setMouseOverSelectors(true)}\n onMouseLeave={() => setMouseOverSelectors(false)}\n theme={theme}\n compactSelectors={compactSelectors}\n helpItemsCount={helpItemsCount}\n >\n {branding}\n {selectors}\n {help}\n </StyledSelectors>\n </StyledSidebar>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Sidebar;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledRenderArea {\n theme: Theme;\n}\n\nexport const StyledRenderArea = styled.div<IStyledRenderArea>`\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React, {\n useEffect,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Dashboard,\n } from '../../data';\n // #endregion external\n\n\n // #region internal\n import {\n StyledRenderArea,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface RenderAreaProperties {\n // #region required\n // #region values\n dashboards: Dashboard[];\n selectedDashboard: string;\n renderView: string;\n fullRenderArea: boolean;\n theme: Theme;\n // #endregion values\n\n // #region methods\n setSelectedDashboard: React.Dispatch<string>;\n setRenderView: React.Dispatch<string>;\n setFullRenderArea: React.Dispatch<boolean>;\n // #endregion methods\n // #endregion required\n}\n\nconst RenderArea: React.FC<RenderAreaProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n dashboards,\n selectedDashboard,\n renderView,\n fullRenderArea,\n theme,\n // #endregion values\n\n // #region methods\n setSelectedDashboard,\n setRenderView,\n setFullRenderArea,\n // #endregion methods\n // #endregion required\n } = properties;\n\n const dashboard = dashboards.find(\n dashboard => dashboard.id === selectedDashboard,\n );\n if (!dashboard) {\n return (<></>);\n }\n // #endregion properties\n\n\n // #region handlers\n const resolveView = () => {\n const dashboard = dashboards.find(\n dashboard => dashboard.id === selectedDashboard,\n );\n if (!dashboard) {\n return;\n }\n\n const renderViewInDashboard = dashboard.renderers[renderView];\n if (renderViewInDashboard) {\n return renderView;\n }\n\n if (dashboard.defaultRender) {\n return dashboard.defaultRender;\n }\n\n return Object.keys(dashboard.renderers)[0];\n }\n // #endregion handlers\n\n\n // #region effects\n const renderID = resolveView();\n\n useEffect(() => {\n if (renderID && renderID !== renderView) {\n setRenderView(renderID);\n }\n }, [\n renderID,\n ]);\n // #endregion effects\n\n\n // #region render\n if (!renderID) {\n return (<></>);\n }\n const DashboardRender = dashboard.renderers[renderID];\n if (!DashboardRender) {\n return (<></>);\n }\n\n return (\n <StyledRenderArea\n theme={theme}\n >\n <DashboardRender\n theme={theme}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n renderView={renderView}\n setRenderView={setRenderView}\n fullRenderArea={fullRenderArea}\n setFullRenderArea={setFullRenderArea}\n />\n </StyledRenderArea>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default RenderArea;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React, {\n useEffect,\n useState,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n Dashboard,\n } from './data';\n\n import {\n StyledDashboardsRenderer,\n StyledNoDashboardRender,\n } from './styled';\n\n import Sidebar from './components/Sidebar';\n import RenderArea from './components/RenderArea';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface DashboardsRendererProperties {\n // #region required\n // #region values\n dashboards: Dashboard[];\n theme: Theme;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID?: string;\n identonym?: string;\n usageType?: string;\n brandingName?: string;\n brandingNameStyle?: React.CSSProperties;\n brandingLogo?: string;\n activeDashboard?: string;\n activeRender?: string;\n compactSelectors?: boolean;\n fullRenderArea?: boolean;\n noDashboardRender?: JSX.Element;\n // #endregion values\n\n // #region methods\n openManual?: () => void;\n atDashboardChange?: (newDashboard: string) => void;\n atUIChange?: (\n type: string,\n value: any,\n ) => void;\n\n logout?: () => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst DashboardsRenderer: React.FC<DashboardsRendererProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n dashboards,\n theme,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID,\n identonym,\n usageType,\n brandingName,\n brandingNameStyle,\n brandingLogo,\n activeDashboard,\n activeRender,\n compactSelectors: compactSelectorsProperty,\n fullRenderArea: fullRenderAreaProperty,\n noDashboardRender,\n // #endregion values\n\n // #region methods\n atDashboardChange,\n atUIChange,\n openManual,\n\n logout,\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region state\n const [\n compactSelectors,\n setCompactSelectors,\n ] = useState(compactSelectorsProperty ?? false);\n\n const [\n fullRenderArea,\n setFullRenderArea,\n ] = useState(fullRenderAreaProperty ?? false);\n\n const [\n selectedDashboard,\n setSelectedDashboard,\n ] = useState(activeDashboard || '');\n\n const [\n renderView,\n setRenderView,\n ] = useState(activeRender || '');\n // #endregion state\n\n\n // #region effects\n useEffect(() => {\n if (!activeDashboard) {\n return;\n }\n\n if (selectedDashboard === activeDashboard) {\n return;\n }\n\n setSelectedDashboard(activeDashboard);\n }, [\n activeDashboard,\n ]);\n\n useEffect(() => {\n if (atDashboardChange) {\n atDashboardChange(renderView);\n }\n }, [\n renderView,\n ]);\n\n useEffect(() => {\n if (typeof compactSelectorsProperty === 'boolean') {\n setCompactSelectors(compactSelectorsProperty);\n }\n\n if (typeof fullRenderAreaProperty === 'boolean') {\n setFullRenderArea(fullRenderAreaProperty);\n }\n }, [\n compactSelectorsProperty,\n fullRenderAreaProperty,\n ]);\n\n useEffect(() => {\n if (atUIChange) {\n atUIChange(\n 'compactSelectors',\n compactSelectors,\n );\n }\n }, [\n compactSelectors,\n ]);\n\n useEffect(() => {\n if (atUIChange) {\n atUIChange(\n 'fullRenderArea',\n fullRenderArea,\n );\n }\n }, [\n fullRenderArea,\n ]);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledDashboardsRenderer\n theme={theme}\n compactSelectors={compactSelectors}\n fullRenderArea={fullRenderArea}\n >\n {!fullRenderArea && (\n <Sidebar\n dashboards={dashboards}\n theme={theme}\n\n compactSelectors={compactSelectors}\n setCompactSelectors={setCompactSelectors}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n identonym={identonym}\n usageType={usageType}\n\n openManual={openManual}\n logout={logout}\n\n rendererID={rendererID}\n brandingName={brandingName}\n brandingNameStyle={brandingNameStyle}\n brandingLogo={brandingLogo}\n />\n )}\n\n {selectedDashboard && (\n <RenderArea\n dashboards={dashboards}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n renderView={renderView}\n setRenderView={setRenderView}\n fullRenderArea={fullRenderArea}\n setFullRenderArea={setFullRenderArea}\n theme={theme}\n />\n )}\n\n {!selectedDashboard && noDashboardRender && (\n <StyledNoDashboardRender>\n {noDashboardRender}\n </StyledNoDashboardRender>\n )}\n </StyledDashboardsRenderer>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default DashboardsRenderer;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled, {\n css,\n } from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledEntityView {\n theme: Theme;\n}\n\nexport const StyledEntityView = styled.div<IStyledEntityView>`\n position: relative;\n height: 100%;\n\n button {\n font-family: ${\n ({\n theme,\n }: IStyledEntityView) => theme.fontFamilySansSerif\n };\n }\n`;\n\n\nexport const StyledEntityViewTop = styled.div`\n display: grid;\n grid-template-columns: 3fr 1fr;\n align-items: center;\n margin-bottom: 30px;\n`;\n\n\nexport const StyledEntityFilterLine = styled.div`\n position: relative;\n`;\n\n\nexport interface IStyledEntityFilterCancel {\n filterLength: string;\n}\n\nexport const StyledEntityFilterCancel = styled.div<IStyledEntityFilterCancel>`\n position: absolute;\n top: 10px;\n\n left: ${\n ({\n filterLength,\n }: IStyledEntityFilterCancel) => filterLength === 'SMALL' ? '275px' : '575px'\n };\n`;\n\n\nexport const StyledTopButtons = styled.div`\n text-align: right;\n`;\n\n\nexport const StyledEntityListContainer = styled.div`\n`;\n\n\nexport interface IStyledEntityList {\n theme: Theme;\n header?: boolean;\n loading?: number;\n}\n\nexport const StyledEntityList = styled.ul<IStyledEntityList>`\n padding: 0;\n margin: 0;\n list-style: none;\n max-height: 500px;\n overflow: auto;\n\n background-color: ${\n ({\n theme,\n }: IStyledEntityList) => theme.backgroundColorSecondaryAlpha\n };\n box-shadow: ${\n ({\n theme,\n }: IStyledEntityList) => theme.boxShadowUmbraInset\n };\n opacity: ${\n ({\n loading,\n }: IStyledEntityList) => {\n if (loading) {\n return '0.5';\n }\n\n return '1';\n }\n };\n\n li:first-child {\n background-color: ${\n ({\n theme,\n header,\n }: IStyledEntityList) => {\n if (header) {\n return theme.backgroundColorTertiary;\n }\n\n return 'initial';\n }\n };\n }\n\n ${({\n header,\n }: IStyledEntityList) => {\n if (header) {\n return;\n }\n\n return css`\n li:hover {\n background-color: ${\n ({\n theme,\n }: IStyledEntityList) => theme.backgroundColorPrimary\n };\n }\n `\n }}\n`;\n\n\nexport interface IStyledEntityListItem {\n rowTemplate: string;\n}\n\nexport const StyledEntityListItem = styled.li<IStyledEntityListItem>`\n display: grid;\n grid-template-columns: ${\n ({\n rowTemplate,\n }: IStyledEntityListItem) => rowTemplate\n };\n grid-gap: 0.5rem;\n padding: 0.7rem;\n align-items: center;\n min-height: 45px;\n word-break: break-all;\n`;\n\n\nexport const StyledActionButton = styled.div`\n width: 200px;\n position: absolute;\n bottom: 0;\n right: 0;\n`;\n\n\nexport const StyledNoRows = styled.div`\n margin: 20px 0;\n text-align: center;\n`;\n// #endregion module\n","// #region module\nexport const createSearchTerms = (\n rows: any[],\n fields: string[],\n) => (rows.map(\n (entity) => {\n const {\n id,\n } = entity;\n\n const data: string[] = [];\n\n for (const field of fields) {\n const term = entity[field];\n\n if (term && typeof term === 'string') {\n data.push(\n term.toLowerCase().trim(),\n );\n }\n }\n\n return {\n id,\n data,\n };\n },\n));\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n forwardRef,\n useImperativeHandle,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconReset,\n PluridIconDelete,\n } from '@plurid/plurid-icons-react';\n\n import {\n useThrottledCallback,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region external\n import universal from '../../../universal';\n\n import {\n EntityViewRefAttributes,\n EntityViewSearchTerm,\n } from '~data/interfaces';\n // #endregion external\n\n\n // #region internal\n import {\n StyledEntityView,\n StyledEntityViewTop,\n StyledEntityFilterLine,\n StyledEntityFilterCancel,\n StyledTopButtons,\n StyledEntityListContainer,\n StyledEntityList,\n StyledEntityListItem,\n StyledActionButton,\n StyledNoRows,\n } from './styled';\n\n import {\n createSearchTerms,\n } from './logic';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst {\n buttons: {\n PureButton: PluridPureButton,\n },\n inputs: {\n Textline: PluridTextline,\n },\n markers: {\n Spinner: PluridSpinner,\n },\n} = universal;\n\n\nexport interface EntityViewProperties {\n // #region required\n // #region values\n entities: any[];\n searchFields: string[];\n\n generalTheme: Theme;\n interactionTheme: Theme;\n\n rowsHeader: JSX.Element;\n rowTemplate: string;\n rows?: JSX.Element[];\n noRows: string;\n // #endregion values\n\n // #region methods\n abstractRowRenderer: (\n columns: string[],\n data: Record<string, any>,\n methods: Record<string, any>,\n ) => JSX.Element,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n actionButtonText?: string;\n placeholderText?: string;\n scrollThrottleTime?: number;\n loading?: number;\n\n rowRenderFields?: string[];\n rowRenderMethods?: any;\n // #endregion values\n\n // #region methods\n actionButtonClick?: () => void;\n filterUpdate?: (\n value: any,\n ) => void;\n refresh?: () => void;\n\n actionScrollBottom?: (\n entities: any[],\n ) => void;\n\n customRowRenderer?: (\n columns: string[],\n data: Record<string, any>,\n methods: Record<string, any>,\n ) => JSX.Element[];\n // #endregion methods\n // #endregion optional\n}\n\nexport type EntityViewType = EntityViewProperties\n & React.RefAttributes<EntityViewRefAttributes>;\n\n\nconst EntityView: React.ForwardRefExoticComponent<EntityViewType> = forwardRef((\n properties,\n reference,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n entities,\n searchFields,\n\n generalTheme,\n interactionTheme,\n\n rowsHeader,\n rowTemplate,\n noRows,\n // #endregion values\n\n // #region methods\n abstractRowRenderer,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values.\n actionButtonText,\n placeholderText,\n scrollThrottleTime: scrollThrottleTimeProperty,\n loading,\n\n rowRenderFields,\n rowRenderMethods,\n // #endregion values\n\n // #region methods\n actionButtonClick,\n filterUpdate,\n refresh,\n actionScrollBottom,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const placeholder = placeholderText || 'search';\n const scrollThrottleTime = scrollThrottleTimeProperty ?? 1_000;\n // #endregion properties\n\n\n // #region references\n const bottomTimeout = useRef<NodeJS.Timeout | null>();\n const entityList = useRef<HTMLUListElement | null>(null);\n // #endregion references\n\n\n // #region state\n const [\n searchTerms,\n setSearchTerms,\n ] = useState<EntityViewSearchTerm[]>(\n createSearchTerms(entities, searchFields),\n );\n\n const [\n filteredRows,\n setFilteredRows,\n ] = useState<JSX.Element[]>(\n entities.map(\n entity => abstractRowRenderer(\n rowRenderFields || [],\n entity,\n rowRenderMethods || {},\n ),\n ),\n );\n\n const [\n searchValue,\n setSearchValue,\n ] = useState('');\n const [\n filterLength,\n setFilterLength,\n ] = useState('SMALL');\n const [\n refreshClicked,\n setRefreshClicked,\n ] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const handleScroll = useThrottledCallback(() => {\n const element = entityList.current;\n if (!element) {\n return;\n }\n\n const scrolledAmount = element.scrollTop + element.getBoundingClientRect().height\n const bottomReached = scrolledAmount >= element.scrollHeight;\n\n if (bottomReached && actionScrollBottom && entities) {\n actionScrollBottom(entities);\n }\n }, scrollThrottleTime);\n\n const clearFilterValue = () => {\n setSearchValue('');\n\n if (filterUpdate) {\n filterUpdate('');\n }\n }\n // #endregion handlers\n\n\n // #region effects\n useEffect(() => {\n setFilteredRows(\n entities.map(\n entity => abstractRowRenderer(\n rowRenderFields || [],\n entity,\n rowRenderMethods || {},\n ),\n ),\n );\n\n setSearchTerms(\n createSearchTerms(entities, searchFields),\n );\n }, [\n entities.length,\n JSON.stringify(entities),\n ]);\n\n useEffect(() => {\n if (refreshClicked) {\n setTimeout(() => {\n setRefreshClicked(false);\n }, 1500);\n }\n }, [\n refreshClicked,\n ]);\n\n /**\n * Action at Bottom of List.\n */\n useEffect(() => {\n bottomTimeout.current = setTimeout(() => {\n if (entityList.current && actionScrollBottom) {\n entityList.current.addEventListener('scroll', handleScroll);\n }\n }, 100);\n\n return () => {\n if (bottomTimeout.current) {\n clearTimeout(bottomTimeout.current);\n }\n\n if (entityList.current && actionScrollBottom) {\n entityList.current.removeEventListener('scroll', handleScroll);\n }\n }\n }, [\n entities,\n ]);\n\n /**\n * Filter length\n */\n useEffect(() => {\n if (searchValue.length <= 30) {\n if (filterLength !== 'SMALL') {\n setFilterLength('SMALL');\n }\n } else {\n if (filterLength !== 'LARGE') {\n setFilterLength('LARGE');\n }\n }\n }, [\n searchValue,\n ]);\n\n useImperativeHandle(\n reference,\n () => ({\n resetFilterValue() {\n clearFilterValue();\n },\n getSearchTerms() {\n return searchTerms;\n },\n }),\n [\n JSON.stringify(searchTerms),\n ],\n );\n // #endregion effects\n\n\n // #region render\n return (\n <StyledEntityView\n theme={generalTheme}\n >\n {!!loading\n && (\n <PluridSpinner\n theme={generalTheme}\n />\n )}\n\n <StyledEntityViewTop>\n <StyledEntityFilterLine>\n <PluridTextline\n text={searchValue}\n placeholder={placeholder}\n atChange={(event) => {\n const {\n value,\n } = event.target;\n\n setSearchValue(value);\n\n if (filterUpdate) {\n filterUpdate(value);\n }\n }}\n atKeyDown={(event) => {\n if (event.key === 'Escape') {\n clearFilterValue();\n }\n }}\n theme={interactionTheme}\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n level={2}\n style={{\n width: filterLength === 'SMALL' ? '300px' : '600px',\n paddingRight: '2rem',\n }}\n />\n\n {searchValue && (\n <StyledEntityFilterCancel\n filterLength={filterLength}\n >\n <PluridIconDelete\n atClick={() => {\n clearFilterValue();\n }}\n />\n </StyledEntityFilterCancel>\n )}\n </StyledEntityFilterLine>\n\n <StyledTopButtons>\n {refresh\n && !refreshClicked\n && (\n <PluridIconReset\n atClick={() => {\n setRefreshClicked(true);\n refresh();\n }}\n theme={generalTheme}\n />\n )}\n </StyledTopButtons>\n </StyledEntityViewTop>\n\n {filteredRows.length === 0 && (\n <StyledNoRows>\n {noRows}\n </StyledNoRows>\n )}\n\n {filteredRows.length !== 0 && (\n <StyledEntityListContainer\n theme={generalTheme}\n >\n <StyledEntityList\n theme={generalTheme}\n header={true}\n >\n <StyledEntityListItem\n rowTemplate={rowTemplate}\n >\n {rowsHeader}\n </StyledEntityListItem>\n </StyledEntityList>\n\n <StyledEntityList\n theme={generalTheme}\n ref={entityList}\n loading={loading}\n >\n {filteredRows.map(row => (\n <StyledEntityListItem\n key={Math.random() + ''}\n rowTemplate={rowTemplate}\n >\n {row}\n </StyledEntityListItem>\n ))}\n </StyledEntityList>\n </StyledEntityListContainer>\n )}\n\n {actionButtonText && (\n <StyledActionButton>\n <PluridPureButton\n text={actionButtonText}\n atClick={() => actionButtonClick\n ? actionButtonClick()\n : undefined\n }\n theme={interactionTheme}\n level={2}\n />\n </StyledActionButton>\n )}\n </StyledEntityView>\n );\n // #endregion render\n});\n// #endregion module\n\n\n\n// #region exports\nexport default EntityView;\n// #endregion exports\n","// #region imports\n // #region internal\n import DashboardsRenderer from './DashboardsRenderer';\n import EntityView from './EntityView';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst containers = {\n DashboardsRenderer,\n EntityView,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default containers;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n StateOfAny,\n head,\n } from '@plurid/plurid-ui-state-react';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport type HeadState = StateOfAny & {\n head: head.HeadState;\n}\n\nexport type HeadSelectors = StateOfAny & {\n head: typeof head.selectors;\n}\n\nexport interface HeadDefaults {\n robots?: string;\n viewport?: string;\n faviconIcon?: string;\n favicon16?: string;\n favicon32?: string;\n manifest?: string;\n themeColor?: string;\n apiDomain?: string;\n canonicalURL?: string;\n ogImageWidth?: string;\n ogImageHeight?: string;\n ogSiteName?: string;\n appleTouchIcon?: string;\n}\n\nexport interface HeadOwnProperties {\n Helmet: any;\n defaults?: Partial<head.HeadState> & HeadDefaults;\n selectors: HeadSelectors;\n context: React.Context<any>;\n children?: React.ReactNode;\n}\n\nexport interface HeadStateProperties {\n stateHead: head.HeadState;\n}\n\nexport interface HeadDispatchProperties {\n}\n\nexport type HeadProperties =\n & HeadOwnProperties\n & HeadStateProperties\n & HeadDispatchProperties;\n\n\nconst Head: React.FC<HeadProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region own\n Helmet,\n defaults,\n children,\n // #endregion own\n\n // #region state\n stateHead,\n // #endregion state\n } = properties;\n\n const robots = defaults?.robots || 'index,follow';\n const viewport = defaults?.viewport || 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0, shrink-to-fit=no';\n const faviconIcon = defaults?.faviconIcon ?? '/favicon.ico';\n const favicon16 = defaults?.favicon16 ?? '/favicon-16x16.png';\n const favicon32 = defaults?.favicon32 ?? '/favicon-32x32.png';\n const manifest = defaults?.manifest ?? '/site.webmanifest';\n const themeColor = defaults?.themeColor || '';\n\n const titleValue = stateHead.title || defaults?.title || '';\n const descriptionValue = stateHead.description || defaults?.description || '';\n const canonicalURL = stateHead.canonicalURL || defaults?.canonicalURL || '';\n\n const ogTitleValue = stateHead.ogTitle || titleValue;\n const ogDescriptionValue = stateHead.ogDescription || titleValue;\n const ogImageValue = stateHead.ogImage || defaults?.ogImage || '';\n const ogURLValue = stateHead.ogURL || defaults?.ogURL || '';\n\n const apiDomain = defaults?.apiDomain || '';\n\n const ogImageWidth = defaults?.ogImageWidth || '1200';\n const ogImageHeight = defaults?.ogImageHeight || '630';\n const ogSiteName = defaults?.ogSiteName || '';\n\n const appleTouchIcon = defaults?.appleTouchIcon || '';\n\n const {\n styles,\n scripts,\n } = stateHead;\n // #endregion properties\n\n\n // #region render\n return (\n <Helmet>\n <meta charSet=\"utf-8\" />\n <meta name=\"robots\" content={robots} />\n <meta name=\"viewport\" content={viewport} />\n\n <title>{titleValue}</title>\n <meta name=\"title\" content={titleValue} />\n <meta name=\"description\" content={descriptionValue} />\n\n {apiDomain && (\n <>\n <link rel=\"preconnect\" href={apiDomain} />\n <link rel=\"dns-prefetch\" href={apiDomain} />\n </>\n )}\n\n {faviconIcon && (<link rel=\"icon\" sizes=\"64x64\" href={faviconIcon} />)}\n {favicon32 && (<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href={favicon32} />)}\n {favicon16 && (<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href={favicon16} />)}\n {manifest && (<link rel=\"manifest\" href={manifest} />)}\n {themeColor && (<meta name=\"theme-color\" content={themeColor} />)}\n\n {canonicalURL && (<link rel=\"canonical\" href={canonicalURL} />)}\n\n {/* OPEN GRAPH */}\n <meta property=\"og:type\" content=\"website\" />\n <meta property=\"og:title\" content={ogTitleValue} />\n <meta property=\"og:image\" content={ogImageValue} />\n <meta property=\"og:image:width\" content={ogImageWidth} />\n <meta property=\"og:image:height\" content={ogImageHeight} />\n {ogSiteName && (<meta property=\"og:site_name\" content={ogSiteName} />)}\n <meta property=\"og:url\" content={ogURLValue} />\n <meta property=\"og:description\" content={ogDescriptionValue} />\n\n {/* TWITTER */}\n <meta property=\"twitter:card\" content=\"summary_large_image\" />\n <meta property=\"twitter:url\" content={ogURLValue} />\n <meta property=\"twitter:title\" content={ogTitleValue} />\n <meta property=\"twitter:description\" content={ogDescriptionValue} />\n <meta property=\"twitter:image\" content={ogImageValue} />\n\n {/* SAFARI */}\n <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\" />\n <meta name=\"apple-mobile-web-app-title\" content={titleValue} />\n {appleTouchIcon && (<link rel=\"apple-touch-icon\" sizes=\"180x180\" href={appleTouchIcon} />)}\n\n {children}\n\n {styles?.map((style) => {\n return (\n <link\n rel=\"stylesheet\"\n key={'head-style' + style}\n href={style}\n />\n );\n })}\n\n {scripts?.map((script) => {\n return (\n <script\n key={'head-script' + script}\n src={script}\n />\n );\n })}\n </Helmet>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties =(\n state: HeadState,\n ownProperties: HeadOwnProperties,\n): HeadStateProperties => ({\n stateHead: ownProperties.selectors.head.getHead(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): HeadDispatchProperties => ({\n});\n\n\nconst ConnectedHead = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(Head);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedHead;\n// #endregion exports\n","// #region imports\n // #region internal\n import Head from './Head';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst head = {\n Head,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default head;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled, {\n keyframes,\n } from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nconst translateUp = keyframes`\n from {\n transform: translateY(2000px);\n }\n to {\n transform: translateY(0);\n }\n`;\n\n\nexport interface IStyledNotification {\n theme: Theme;\n}\n\nexport const StyledNotification = styled.div<IStyledNotification>`\n display: grid;\n align-items: center;\n position: relative;\n min-height: 60px;\n width: 260px;\n margin: 10px 20px;\n border-radius: 10px;\n pointer-events: all;\n background-color: ${(props: IStyledNotification) => {\n return props.theme.backgroundColorSecondary;\n }};\n color: ${(props: IStyledNotification) => {\n return props.theme.colorPrimary;\n }};\n box-shadow: ${(props: IStyledNotification) => {\n return props.theme.boxShadowUmbra;\n }};\n animation: ${translateUp} 750ms ease-in-out forwards;\n transition: opacity 400ms;\n\n a {\n text-decoration: none;\n color: ${(props: IStyledNotification) => {\n return props.theme.colorSecondary;\n }};\n }\n`;\n\n\n\nexport interface IStyledNotificationContent {\n wordBreak: string;\n}\n\nexport const StyledNotificationContent = styled.div<IStyledNotificationContent>`\n font-size: 0.9rem;\n padding: 32px 16px;\n word-break: ${\n ({\n wordBreak,\n }) => wordBreak\n };\n`;\n\n\nexport const StyledNotificationClose = styled.div`\n position: absolute;\n top: 8px;\n right: 8px;\n user-select: none;\n cursor: pointer;\n width: 20px;\n height: 20px;\n display: grid;\n place-content: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n DispatchAction,\n Notification,\n notifications,\n } from '@plurid/plurid-ui-state-react';\n\n import {\n PluridIconDelete,\n } from '@plurid/plurid-icons-react';\n\n import {\n createMarkup,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledNotification,\n StyledNotificationContent,\n StyledNotificationClose,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface NotificationOwnProperties {\n // #region required\n // #region values\n data: Notification;\n theme: Theme;\n // #endregion values\n\n // #region methods\n remove: DispatchAction<typeof notifications.actions.remove>;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n elements?: Record<string, JSX.Element>;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nexport type NotificationProperties = NotificationOwnProperties;\n\nconst Notification: React.FC<NotificationProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n data,\n theme,\n // #endregion values\n\n // #region methods\n remove,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n elements,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const {\n id,\n text,\n html,\n react,\n timeout,\n wordBreak,\n } = data;\n\n const resolvedWordBreak = wordBreak === true ? 'break-all' : 'normal';\n // #endregion properties\n\n\n // #region state\n const [\n prepareForRemoval,\n setPrepareForRemoval,\n ] = useState(false);\n // #endregion state\n\n\n // #region references\n const notificationTimeout = useRef<NodeJS.Timeout | null>(null);\n // #endregion references\n\n\n // #region effects\n useEffect(() => {\n const timeoutValue = timeout === undefined\n ? react\n ? 4_000\n : 2_000 + text.length * 40\n : timeout === 0\n ? undefined\n : timeout;\n\n if (timeoutValue) {\n notificationTimeout.current = setTimeout(() => {\n setPrepareForRemoval(true);\n setTimeout(() => {\n remove(id);\n }, 400);\n }, timeoutValue);\n }\n\n return () => {\n if (notificationTimeout.current) {\n clearTimeout(notificationTimeout.current);\n }\n }\n }, [\n id,\n timeout,\n remove,\n ]);\n // #endregion effects\n\n\n // #region render\n const resolveRender = () => {\n const contentProperties = {\n wordBreak: resolvedWordBreak,\n };\n\n if (html) {\n return (\n <StyledNotificationContent\n dangerouslySetInnerHTML={createMarkup(text)}\n {...contentProperties}\n />\n );\n }\n\n if (react && elements && elements[text]) {\n return (\n <StyledNotificationContent\n {...contentProperties}\n >\n {elements[text]}\n </StyledNotificationContent>\n );\n }\n\n return (\n <StyledNotificationContent\n {...contentProperties}\n >\n {text}\n </StyledNotificationContent>\n );\n }\n\n const content = resolveRender();\n\n return (\n <StyledNotification\n theme={theme}\n style={{\n ...style,\n opacity: prepareForRemoval ? 0 : undefined,\n }}\n className={className}\n >\n {content}\n\n <StyledNotificationClose>\n <PluridIconDelete\n atClick={() => remove(id)}\n />\n </StyledNotificationClose>\n </StyledNotification>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Notification;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledNotifications = styled.div`\n position: absolute;\n bottom: 0;\n top: 0;\n right: 0;\n width: 300px;\n display: flex;\n flex-direction: column-reverse;\n z-index: 9999;\n pointer-events: none;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n DispatchAction,\n StateOfAny,\n themes as themesStateService,\n notifications as notificationsStateService,\n Notification as INotification,\n } from '@plurid/plurid-ui-state-react';\n // #endregion libraries\n\n\n // #region external\n import Notification from '../Notification';\n // #endregion external\n\n\n // #region internal\n import {\n StyledNotifications,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport type NotificationsState = StateOfAny & {\n themes: themesStateService.ThemesState;\n notifications: notificationsStateService.NotificationsState;\n}\n\nexport type NotificationsSelectors = StateOfAny & {\n themes: typeof themesStateService.selectors;\n notifications: typeof notificationsStateService.selectors;\n}\n\n\nexport interface NotificationsOwnProperties {\n selectors: NotificationsSelectors;\n context: React.Context<any>;\n elements?: Record<string, JSX.Element>;\n}\n\nexport interface NotificationsStateProperties {\n stateGeneralTheme: Theme;\n stateNotifications: INotification[];\n}\n\nexport interface NotificationsDispatchProperties {\n dispatchRemoveNotification: DispatchAction<typeof notificationsStateService.actions.remove>;\n}\n\nexport type NotificationsProperties =\n & NotificationsOwnProperties\n & NotificationsStateProperties\n & NotificationsDispatchProperties;\n\n\nconst Notifications: React.FC<NotificationsProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region optional\n // #region values\n elements,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n // #region state\n stateGeneralTheme,\n stateNotifications,\n // #endregion state\n\n // #region dispatch\n dispatchRemoveNotification,\n // #endregion dispatch\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledNotifications>\n {stateNotifications.map(notification => {\n return (\n <Notification\n // #region required\n // #region values\n key={notification.id}\n data={notification}\n theme={stateGeneralTheme}\n // #endregion values\n\n // #region methods\n remove={dispatchRemoveNotification}\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n elements={elements}\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n />\n );\n })}\n </StyledNotifications>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties =(\n state: NotificationsState,\n ownProperties: NotificationsOwnProperties,\n): NotificationsStateProperties => ({\n stateGeneralTheme: ownProperties.selectors.themes.getGeneralTheme(state),\n stateNotifications: ownProperties.selectors.notifications.getAll(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): NotificationsDispatchProperties => ({\n dispatchRemoveNotification: (payload) => dispatch(\n notificationsStateService.actions.remove(payload),\n ),\n});\n\n\nconst ConnectedNotifications = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(Notifications);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedNotifications;\n// #endregion exports\n","// #region imports\n // #region internal\n import Notification from './Notification';\n import Notifications from './Notifications';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst notifications = {\n Notification,\n Notifications,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default notifications;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSittingTray: any = styled.div`\n background-color: ${(props: any) => {\n return props.theme.backgroundColorSecondary;\n }};\n box-shadow: ${(props: any) => {\n return props.theme.boxShadowUmbra;\n }};\n\n border-radius: 10px;\n position: absolute;\n left: 35px;\n width: 160px;\n /*\n -1 * (height - 40px <button>)\n */\n /* height: 95px; */\n bottom: -163px;\n /* bottom: 0; */\n overflow: hidden;\n`;\n\n\nexport const StyledSittingTrayContainer: any = styled.div`\n overflow: auto;\n height: 100%;\n\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* IE 10+ */\n ::-webkit-scrollbar {\n width: 0px;\n background: transparent;\n }\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n text-align: left;\n }\n\n li {\n min-height: 26px;\n /* padding: 0 7px;\n margin: 7px 0; */\n display: grid;\n grid-template-columns: 1fr;\n align-items: center;\n }\n\n h4 {\n margin: 0;\n }\n`;\n\n\nexport const StyledSittingTrayItem: any = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr 1fr;\n align-items: center;\n`;\n\n\nexport const StyledSittingTrayItemHeader: any = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n`;\n\n\nexport const StyledSittingTrayItemBody: any = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n align-items: center;\n`;\n\n\nexport const StyledSittingTrayButton: any = styled.div`\n display: grid;\n grid-template-columns: 25px 1fr;\n cursor: pointer;\n`;\n\n\nexport const StyledSittingTrayButtonIcon: any = styled.div`\n`;\n\n\nexport const StyledSittingTrayButtonText: any = styled.div`\n display: flex;\n align-items: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledStateLink = styled.div`\n padding: 7px;\n padding-bottom: 0px;\n margin-bottom: 4px;\n`;\n\n\nexport const StyledStateLinkContainer: any = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n height: 25px;\n align-items: center;\n`;\n\n\nexport const StyledStateLinkText: any = styled.div`\n width: 100%;\n overflow-x: scroll;\n overflow-y: hidden;\n white-space: nowrap;\n user-select: all;\n text-align: left;\n\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n`;\n\n\nexport const StyledStateLinkCopy: any = styled.div`\n width: 100%;\n cursor: pointer;\n justify-self: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n useEffect,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n PluridIconCopy,\n } from '@plurid/plurid-icons-react';\n\n import {\n clipboard,\n } from '@plurid/plurid-functions';\n // #endregion libraries\n\n\n // #region external\n import {\n StyledSittingTrayItem,\n StyledSittingTrayItemHeader,\n StyledSittingTrayItemBody,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledStateLink,\n StyledStateLinkContainer,\n StyledStateLinkText,\n StyledStateLinkCopy,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n\n// #region module\nexport interface StateLinkProperties {\n theme: any;\n currentLink: string;\n context: React.Context<any>;\n}\n\nconst StateLink: React.FC<StateLinkProperties> = (\n properties,\n) => {\n const {\n // theme,\n currentLink,\n } = properties;\n\n const copyStateLink = () => {\n clipboard.copy(currentLink);\n setCurrentStateLink('copied link');\n setTimeout(() => {\n setCurrentStateLink(currentLink);\n }, 650);\n }\n\n const [currentStateLink, setCurrentStateLink] = useState(currentLink);\n\n useEffect(() => {\n setCurrentStateLink(currentLink);\n }, [\n currentLink,\n ]);\n\n return (\n <StyledStateLink>\n <StyledSittingTrayItem>\n <StyledSittingTrayItemHeader>\n <div>\n <h4>\n state link\n </h4>\n </div>\n\n <div\n style={{justifySelf: 'right'}}\n >\n <StyledStateLinkCopy\n onClick={copyStateLink}\n >\n <PluridIconCopy />\n </StyledStateLinkCopy>\n </div>\n </StyledSittingTrayItemHeader>\n\n <StyledSittingTrayItemBody>\n <StyledStateLinkContainer>\n <StyledStateLinkText>\n {currentStateLink}\n </StyledStateLinkText>\n </StyledStateLinkContainer>\n </StyledSittingTrayItemBody>\n </StyledSittingTrayItem>\n </StyledStateLink>\n );\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n) => ({\n theme: ownProperties.selectors.themes.getInteractionTheme(state),\n currentLink: ownProperties.selectors.sitting.getCurrentLink(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n) => ({\n});\n\n\nconst ConnectedStateLink = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(StateLink);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedStateLink;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledStateLine = styled.div`\n padding: 0 7px;\n margin-bottom: 4px;\n\n display: grid;\n align-items: center;\n justify-items: center;\n\n svg {\n height: 18px;\n width: 18px;\n color: white;\n fill: white;\n user-select: none;\n cursor: pointer;\n }\n`;\n\nexport const StyledSliderStateButton = styled.div`\n user-select: none;\n cursor: pointer;\n display: grid;\n place-content: center;\n`;\n\nexport const StyledSliderStateSliderContainer = styled.div`\n`;\n\n\nexport const StyledSliderStateSittings = styled.div`\n justify-self: center;\n`;\n\n\nexport const StyledStateLineButtons = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 20px);\n grid-gap: 3px;\n align-items: center;\n justify-content: right;\n`;\n\nexport const StyledStateLineButton = styled.div`\n display: grid;\n place-content: center;\n`;\n\n\nexport const StyledStateLineContainer = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n align-items: center;\n justify-content: space-between;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n // useContext,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n PluridIconNewStateline,\n PluridIconPlay,\n PluridIconBranch\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n // import Slider from '../../../../../../Slider';\n\n import {\n StyledSittingTrayItem,\n StyledSittingTrayItemHeader,\n StyledSittingTrayItemBody,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledStateLine,\n StyledSliderStateButton,\n StyledSliderStateSliderContainer,\n // StyledSliderStateSittings,\n StyledStateLineButtons,\n StyledStateLineButton,\n StyledStateLineContainer,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n\n// #region module\nexport interface StateLineProperties {\n theme: any;\n context: React.Context<any>;\n}\n\nconst StateLine: React.FC<StateLineProperties> = (\n properties,\n) => {\n // const context: InitialContext = useContext(Context);\n\n // const {\n // theme,\n // } = properties;\n\n\n // #region state\n const [stateIndex, setStateIndex] = useState(0);\n // #endregion state\n\n\n // const {\n // setView,\n // recorder,\n // } = context;\n\n // const allStates = recorder.all();\n\n // const maxStateSlider = allStates.length + 5;\n const maxStateSlider = 5;\n // const maxStateSlider = allStates.length - 1;\n\n // const handleStateSliderInput = (value: string) => {\n // setStateIndex(parseInt(value));\n // }\n\n\n // #region handlers\n const handleStateIndex = (\n type: string,\n ) => {\n switch (type) {\n case 'DECREASE':\n if (stateIndex - 1 >= 0) {\n setStateIndex(stateIndex - 1);\n } else {\n setStateIndex(0);\n }\n // recorder.previous();\n break;\n case 'INCREASE':\n if (stateIndex + 1 <= maxStateSlider) {\n setStateIndex(stateIndex + 1);\n } else {\n setStateIndex(maxStateSlider);\n }\n // recorder.next();\n break;\n }\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledStateLine>\n <StyledSittingTrayItem>\n <StyledSittingTrayItemHeader>\n <div>\n <h4>\n state line\n </h4>\n </div>\n\n <div>\n <StyledStateLineButtons>\n <StyledStateLineButton>\n {/* onClick go to the end of state line */}\n <PluridIconPlay />\n </StyledStateLineButton>\n\n <StyledStateLineButton>\n {/* onClick create new state branch */}\n <PluridIconBranch />\n </StyledStateLineButton>\n\n <StyledStateLineButton>\n {/* onClick end current sitting and start new one */}\n <PluridIconNewStateline />\n </StyledStateLineButton>\n </StyledStateLineButtons>\n </div>\n </StyledSittingTrayItemHeader>\n\n <StyledSittingTrayItemBody>\n <StyledStateLineContainer>\n <div\n style={{display: 'grid', justifyContent: 'left'}}\n >\n {stateIndex !== 0 && (\n <StyledSliderStateButton\n onClick={() => handleStateIndex('DECREASE')}\n >\n ◀\n </StyledSliderStateButton>\n )}\n </div>\n\n <StyledSliderStateSliderContainer>\n {/* {maxStateSlider !== 0 && (\n <Slider\n theme={theme}\n value={stateIndex}\n min={0}\n max={maxStateSlider}\n step={1}\n hideValue={true}\n defaultValue={50}\n handleInput={handleStateSliderInput}\n width={110}\n />\n )} */}\n </StyledSliderStateSliderContainer>\n\n <div\n style={{display: 'grid', justifyContent: 'right'}}\n >\n {stateIndex !== maxStateSlider && (\n <StyledSliderStateButton\n onClick={() => handleStateIndex('INCREASE')}\n >\n ▶\n </StyledSliderStateButton>\n )}\n </div>\n </StyledStateLineContainer>\n </StyledSittingTrayItemBody>\n </StyledSittingTrayItem>\n </StyledStateLine>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n) => ({\n theme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n) => ({\n});\n\n\nconst ConnectedStateLine = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(StateLine);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedStateLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledStateImage = styled.div`\n padding: 0 7px;\n margin-bottom: 4px;\n\n svg {\n height: 18px;\n width: 18px;\n color: white;\n fill: white;\n user-select: none;\n cursor: pointer;\n }\n`;\n\n\nexport const StyledStateShareImage = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 25px;\n align-items: center;\n`;\n\n\nexport const StyledStateShareImageButtons = styled.div`\n display: grid;\n grid-template-columns: 110px auto;\n align-items: center;\n justify-items: center;\n height: 25px;\n`;\n\n\nexport const StyledStateShareImageButtonsCopy = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 10px;\n justify-self: left;\n\n svg {\n height: 18px;\n width: 18px;\n fill: white;\n }\n`;\n\n\nexport const StyledStateShareImagePasteContainer = styled.div`\n display: grid;\n grid-template-columns: 100px 40px;\n align-items: center;\n justify-items: center;\n\n input {\n width: 100%;\n outline: none;\n border: none;\n background: hsla(0, 0%, 10%, 0.5);\n color: white;\n padding: 6px;\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconStateShareImage,\n PluridIconCopyCurrentState,\n PluridIconCopyStateHistory,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n StyledSittingTrayItem,\n StyledSittingTrayItemHeader,\n StyledSittingTrayItemBody,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledStateImage,\n StyledStateShareImage,\n StyledStateShareImageButtons,\n StyledStateShareImagePasteContainer,\n StyledStateShareImageButtonsCopy,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n\n// #region module\nexport interface StateImageOwnProperties {\n selectors: any;\n context: React.Context<any>;\n}\n\nexport interface StateImageStateProperties {\n stateInteractionTheme: Theme;\n}\n\nexport interface StateImageDispatchProperties {\n}\n\nexport type StateImageProperties =\n & StateImageOwnProperties\n & StateImageStateProperties\n & StateImageDispatchProperties;\n\n\nconst StateImage: React.FC<StateImageProperties> = (\n properties,\n) => {\n // #region state\n const [message, setMessage] = useState('');\n const [showPaste, setShowPaste] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const copyCurrentState = () => {\n setMessage('copied state image');\n setTimeout(() => {\n setMessage('');\n }, 2000);\n }\n\n const copyStateHistory = () => {\n setMessage('copied state history');\n setTimeout(() => {\n setMessage('');\n }, 2000);\n }\n\n const paste = () => {\n setShowPaste(false);\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledStateImage>\n <StyledSittingTrayItem>\n <StyledSittingTrayItemHeader>\n <div>\n <h4>\n state image\n </h4>\n </div>\n\n <div>\n <div\n style={{\n display: 'grid',\n alignItems: 'center',\n justifyContent: 'right',\n }}\n >\n <PluridIconStateShareImage />\n </div>\n </div>\n </StyledSittingTrayItemHeader>\n\n <StyledSittingTrayItemBody>\n <StyledStateShareImage>\n {!message && !showPaste && (\n <StyledStateShareImageButtons>\n <StyledStateShareImageButtonsCopy\n >\n <div\n onClick={copyCurrentState}\n >\n <PluridIconCopyCurrentState />\n </div>\n\n <div\n onClick={copyStateHistory}\n >\n <PluridIconCopyStateHistory />\n </div>\n </StyledStateShareImageButtonsCopy>\n\n <div\n onClick={() => setShowPaste(true)}\n >\n paste\n </div>\n </StyledStateShareImageButtons>\n )}\n\n {message && !showPaste && (\n <div>\n {message}\n </div>\n )}\n\n {showPaste && (\n <StyledStateShareImagePasteContainer>\n <input\n type=\"text\"\n />\n <div\n onClick={paste}\n >\n paste\n </div>\n </StyledStateShareImagePasteContainer>\n )}\n </StyledStateShareImage>\n </StyledSittingTrayItemBody>\n </StyledSittingTrayItem>\n </StyledStateImage>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n) => ({\n theme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n) => ({\n});\n\n\nconst ConnectedStateImage = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(StateImage);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedStateImage;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSittings: any = styled.div`\n padding: 7px;\n\n display: grid;\n align-items: center;\n\n svg {\n height: 18px;\n width: 18px;\n color: white;\n fill: white;\n user-select: none;\n cursor: pointer;\n }\n\n :hover {\n background-color: ${(props: any) => {\n return props.theme.backgroundColorTertiary;\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconSittings,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n StyledSittingTrayButton,\n StyledSittingTrayButtonIcon,\n StyledSittingTrayButtonText,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledSittings,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface SittingsOwnProperties {\n selectors: any;\n context: React.Context<any>;\n}\n\nexport interface SittingsStateProperties {\n stateInteractionTheme: Theme;\n}\n\nexport interface SittingsDispatchProperties {\n}\n\nexport type SittingsProperties =\n & SittingsOwnProperties\n & SittingsStateProperties\n & SittingsDispatchProperties;\n\n\nconst Sittings: React.FC<SittingsProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region state\n stateInteractionTheme,\n // #endregion state\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSittings\n theme={stateInteractionTheme}\n >\n <StyledSittingTrayButton>\n <StyledSittingTrayButtonIcon>\n <PluridIconSittings\n theme={stateInteractionTheme}\n />\n </StyledSittingTrayButtonIcon>\n\n <StyledSittingTrayButtonText>\n sittings\n </StyledSittingTrayButtonText>\n </StyledSittingTrayButton>\n </StyledSittings>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n): SittingsStateProperties => ({\n stateInteractionTheme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): SittingsDispatchProperties => ({\n});\n\n\nconst ConnectedSittings = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(Sittings);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedSittings;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import StateLink from './components/StateLink';\n import StateLine from './components/StateLine';\n import StateImage from './components/StateImage';\n import Sittings from './components/Sittings';\n\n import {\n StyledSittingTray,\n StyledSittingTrayContainer,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface SittingTrayOwnProperties {\n selectors: any;\n context: React.Context<any>;\n}\n\nexport interface SittingTrayStateProperties {\n stateInteractionTheme: Theme;\n}\n\nexport interface SittingTrayDispatchProperties {\n}\n\nexport type SittingTrayProperties =\n & SittingTrayOwnProperties\n & SittingTrayStateProperties\n & SittingTrayDispatchProperties;\n\n\nconst SittingTray: React.FC<SittingTrayProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region own\n selectors,\n context,\n // #endregion own\n\n // #region state\n stateInteractionTheme,\n // #endregion state\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSittingTray\n theme={stateInteractionTheme}\n >\n <StyledSittingTrayContainer>\n <ul>\n <li>\n <StateLink\n selectors={selectors}\n context={context}\n />\n </li>\n\n <li>\n <StateLine\n selectors={selectors}\n context={context}\n />\n </li>\n\n <li>\n <StateImage\n selectors={selectors}\n context={context}\n />\n </li>\n\n <li>\n <Sittings\n selectors={selectors}\n context={context}\n />\n </li>\n </ul>\n </StyledSittingTrayContainer>\n </StyledSittingTray>\n );\n // #endregion render\n}\n\n\nconst mapStatedToProperties = (\n state: any,\n ownProperties: any,\n): SittingTrayStateProperties => ({\n stateInteractionTheme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchdToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): SittingTrayDispatchProperties => ({\n});\n\n\nconst ConnectedSittingTray = connect(\n mapStatedToProperties,\n mapDispatchdToProperties,\n)(SittingTray);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedSittingTray;\n// #endregion exports\n","// #region imports\n // #region internal\n import SittingTray from './SittingTray';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst sitting = {\n SittingTray,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default sitting;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledHorizontalToolbarButton {\n active?: boolean;\n scaleIcon?: boolean;\n theme: Theme;\n}\n\nexport const StyledHorizontalToolbarButton = styled.div<IStyledHorizontalToolbarButton>`\n position: relative;\n cursor: pointer;\n user-select: none;\n font-weight: normal;\n transition: transform 50ms ease-in-out;\n height: 45px;\n min-width: 2rem;\n padding: 0 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: ${\n (props: IStyledHorizontalToolbarButton) => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return 'transparent';\n }\n };\n color: ${\n (props: IStyledHorizontalToolbarButton) => {\n return props.theme.colorPrimary;\n }\n };\n font-family: ${\n (props: IStyledHorizontalToolbarButton) => {\n return props.theme.fontFamilySansSerif;\n }\n };\n\n @media (hover: hover) {\n :hover {\n background: ${(props: IStyledHorizontalToolbarButton) => {\n return props.theme.backgroundColorTertiary;\n }};\n }\n\n :hover svg {\n transform: ${(props: IStyledHorizontalToolbarButton) => {\n if (props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n }\n\n svg {\n transition: transform 100ms linear;\n transform: ${(props: IStyledHorizontalToolbarButton) => {\n if (props.active && props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n`;\n\n\nexport interface IStyledHorizontalToolbarButtonIcon {\n text: string;\n}\n\nexport const StyledHorizontalToolbarButtonIcon = styled.div<IStyledHorizontalToolbarButtonIcon>`\n display: flex;\n align-items: center;\n margin-right: ${\n ({\n text,\n }: IStyledHorizontalToolbarButtonIcon) => {\n if (text === '') {\n return '0';\n }\n\n return '0.5rem';\n }\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import themes, {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledHorizontalToolbarButton,\n StyledHorizontalToolbarButtonIcon,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface HorizontalToolbarButtonOwnProperties {\n // #region required\n // #region values\n text: string;\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n active?: boolean;\n icon?: React.FC;\n scaleIcon?: boolean;\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst HorizontalToolbarButton: React.FC<HorizontalToolbarButtonOwnProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n active,\n scaleIcon,\n icon: Icon,\n theme: themeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || themes.plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledHorizontalToolbarButton\n active={active}\n scaleIcon={scaleIcon}\n onClick={atClick}\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n {Icon && (\n <StyledHorizontalToolbarButtonIcon\n text={text}\n >\n <Icon />\n </StyledHorizontalToolbarButtonIcon>\n )}\n\n {text}\n </StyledHorizontalToolbarButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default HorizontalToolbarButton;\n// #endregion exports\n","// #region module\nexport enum SizeTypes {\n small = 'small',\n normal = 'normal',\n large = 'large',\n}\n\n\nexport enum HorizontalPositions {\n left = 'left',\n right = 'right',\n}\n\n\nexport enum VerticalPositions {\n top = 'top',\n bottom = 'bottom',\n}\n// #endregion module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n VerticalPositions,\n } from '~data/enumerations';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledToolbarControls {\n position: keyof typeof VerticalPositions;\n theme: Theme;\n}\n\nexport const StyledToolbarControls = styled.div<IStyledToolbarControls>`\n top: ${\n ({ position, }: IStyledToolbarControls) => {\n if (position === VerticalPositions.top) {\n return '15px';\n }\n return 'initial';\n }\n };\n bottom: ${\n ({ position, }: IStyledToolbarControls) => {\n if (position === VerticalPositions.bottom) {\n return '15px';\n }\n return 'initial';\n }\n };\n\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n z-index: 99999;\n`;\n\n\ninterface IStyledToolbarControlsButtons {\n theme: Theme;\n}\n\nexport const StyledToolbarControlsButtons = styled.div<IStyledToolbarControlsButtons>`\n background-color: ${\n ({ theme, }: IStyledToolbarControlsButtons) => {\n return theme.backgroundColorSecondary;\n }\n };\n box-shadow: ${\n ({ theme, }: IStyledToolbarControlsButtons) => {\n return theme.boxShadowUmbra;\n }\n };\n\n display: flex;\n align-items: center;\n border-radius: 22.5px;\n min-height: 45px;\n height: 45px;\n padding: 0 22.5px;\n margin: 0 auto;\n font-size: 0.9rem;\n opacity: 1;\n height: 100%;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n VerticalPositions,\n } from '~data/enumerations';\n // #endregion external\n\n\n // #region internal\n import {\n StyledToolbarControls,\n StyledToolbarControlsButtons,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ToolbarControlsOwnProperties {\n // #region optional\n // #region values\n position?: keyof typeof VerticalPositions;\n\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nexport type ToolbarControlsProperties = ToolbarControlsOwnProperties;\n\nconst ToolbarControls: React.FC<ToolbarControlsProperties> = (\n properties,\n) => {\n // #region optional\n const {\n // #region optional\n // #region values\n position: positionProperty,\n theme: themeProperty,\n style,\n className,\n\n children,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const position = positionProperty || VerticalPositions.top;\n const theme = themeProperty || pluridTheme;\n // #endregion optional\n\n\n // #region render\n return (\n <StyledToolbarControls\n position={position}\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n <StyledToolbarControlsButtons\n theme={theme}\n >\n {children}\n </StyledToolbarControlsButtons>\n </StyledToolbarControls>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default ToolbarControls;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledVerticalToolbarButton {\n active: boolean;\n scaleIcon: boolean;\n first: boolean;\n last: boolean;\n theme: Theme;\n}\n\nexport const StyledVerticalToolbarButton: any = styled.div<IStyledVerticalToolbarButton>`\n position: relative;\n cursor: pointer;\n height: 40px;\n display: grid;\n place-content: center;\n transition: transform 50ms ease-in-out;\n\n border-top-left-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.first) {\n return '15px';\n }\n return '0';\n }};\n border-top-right-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.first) {\n return '15px';\n }\n return '0';\n }};\n\n border-bottom-left-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.last) {\n return '15px';\n }\n return '0';\n }};\n border-bottom-right-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.last) {\n return '15px';\n }\n return '0';\n }};\n\n background-color: ${(props: IStyledVerticalToolbarButton) => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return 'transparent';\n }};\n\n @media (hover: hover) {\n :hover {\n background: ${(props: IStyledVerticalToolbarButton) => {\n return props.theme.backgroundColorTertiary;\n }};\n }\n\n :hover svg {\n transform: ${(props: IStyledVerticalToolbarButton) => {\n if (props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n }\n\n svg {\n transition: transform 100ms linear;\n width: 15px;\n height: 15px;\n fill: ${(props: IStyledVerticalToolbarButton) => {\n return props.theme.colorPrimary;\n }};\n transform: ${(props: IStyledVerticalToolbarButton) => {\n if (props.active && props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n`;\n\n\n\nexport interface IStyledVerticalToolbarButtonText {\n textLeft: boolean;\n}\n\nexport const StyledVerticalToolbarButtonText: any = styled.div<IStyledVerticalToolbarButtonText>`\n left: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return '-108px';\n }\n return '30px';\n }};\n justify-content: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return 'flex-end';\n }\n return 'left';\n }};\n text-align: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return 'right';\n }\n return 'left';\n }};\n padding-left: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return '0';\n }\n return '8px';\n }};\n\n pointer-events: none;\n position: absolute;\n height: 40px;\n width: 100px;\n display: flex;\n align-items: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledVerticalToolbarButton,\n StyledVerticalToolbarButtonText,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface VerticalToolbarButtonOwnProperties {\n atClick: (event: React.MouseEvent) => void;\n icon: React.FC;\n active: boolean;\n text: string;\n textLeft: boolean;\n showText: boolean;\n scaleIcon: boolean;\n theme: Theme;\n first?: boolean;\n last?: boolean;\n}\n\nconst VerticalToolbarButton: React.FC<VerticalToolbarButtonOwnProperties> = (\n properties,\n) => {\n // #region properties\n const {\n atClick,\n icon: Icon,\n active,\n text,\n textLeft,\n showText,\n scaleIcon,\n first,\n last,\n theme,\n } = properties;\n // #endregion properties\n\n\n // #region state\n const [mouseOver, setMouseOver] = useState(false);\n // #endregion state\n\n\n // #region render\n return (\n <StyledVerticalToolbarButton\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n onClick={atClick}\n active={active}\n scaleIcon={scaleIcon}\n first={first}\n last={last}\n theme={theme}\n >\n <Icon />\n\n {mouseOver\n && showText\n && (\n <StyledVerticalToolbarButtonText\n textLeft={textLeft}\n >\n {text}\n </StyledVerticalToolbarButtonText>\n )}\n </StyledVerticalToolbarButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default VerticalToolbarButton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n HorizontalPositions,\n } from '~data/enumerations';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledToolbar {\n position: keyof typeof HorizontalPositions;\n}\n\nexport const StyledToolbar = styled.div<IStyledToolbar>`\n left: ${(props: IStyledToolbar) => {\n if (props.position === HorizontalPositions.left) {\n return '0';\n }\n return 'initial';\n }};\n right: ${(props: IStyledToolbar) => {\n if (props.position === HorizontalPositions.right) {\n return '0';\n }\n return 'initial';\n }};\n\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 60px;\n`;\n\n\nexport interface IStyledToolbarButtons {\n theme: Theme;\n}\n\nexport const StyledToolbarButtons = styled.div<IStyledToolbarButtons>`\n background-color: ${(props: IStyledToolbarButtons) => {\n return props.theme.backgroundColorSecondary;\n }};\n box-shadow: ${(props: IStyledToolbarButtons) => {\n return props.theme.boxShadowUmbra;\n }};\n\n pointer-events: all;\n display: grid;\n place-content: center;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr;\n border-radius: 15px;\n margin: 0 15px;\n font-size: 12px;\n opacity: 1;\n width: 30px;\n height: auto;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n transition: opacity 300ms ease-in-out;\n z-index: 9999;\n user-select: none;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n useEffect,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n ToolbarButton,\n } from '~data/interfaces';\n\n import {\n HorizontalPositions,\n } from '~data/enumerations';\n\n import VerticalToolbarButton from '../VerticalToolbarButton';\n // #endregion external\n\n\n // #region internal\n import {\n StyledToolbar,\n StyledToolbarButtons,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ToolbarSpecificOwnProperties {\n buttons: ToolbarButton[],\n handleClick: (\n type: any,\n index: number,\n ) => void;\n activeType: any;\n selectors: any;\n position?: keyof typeof HorizontalPositions;\n\n children?: React.ReactNode;\n}\n\nexport interface ToolbarSpecificStateProperties {\n stateToolbars: any;\n stateIdentonym: string;\n stateInteractionTheme: Theme;\n}\n\nexport interface ToolbarSpecificDispatchProperties {\n}\n\nexport type ToolbarSpecificProperties = ToolbarSpecificOwnProperties\n & ToolbarSpecificStateProperties\n & ToolbarSpecificDispatchProperties;\n\nconst ToolbarSpecific: React.FC<ToolbarSpecificProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** own */\n buttons,\n handleClick,\n activeType,\n position,\n\n children,\n\n // #region state\n stateToolbars,\n stateIdentonym,\n stateInteractionTheme,\n // #endregion state\n } = properties;\n\n const {\n alwaysShow,\n location,\n scaleIcons,\n showNames,\n } = stateToolbars;\n\n const toolbarPosition = position\n ? position\n : HorizontalPositions.right;\n // #endregion properties\n\n\n // #region state\n const [showToolbar, setShowToolbar] = useState(alwaysShow);\n const [mouseIn, setMouseIn] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const handleMouseMove = (\n event: any,\n ) => {\n if (!showToolbar) {\n setShowToolbar(true);\n }\n\n // TODO\n // move toolbar\n // if (event.shiftKey) {\n // }\n }\n // #endregion handlers\n\n\n // #region effects\n useEffect(() => {\n if (alwaysShow) {\n setShowToolbar(true);\n }\n\n if (mouseIn) {\n setShowToolbar(true);\n } else {\n if (!alwaysShow) {\n setShowToolbar(false);\n }\n }\n }, [\n mouseIn,\n alwaysShow,\n ]);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledToolbar\n onMouseMove={() => handleMouseMove}\n onMouseEnter={() => setMouseIn(true)}\n onMouseLeave={() => setMouseIn(false)}\n position={toolbarPosition}\n >\n <StyledToolbarButtons\n theme={stateInteractionTheme}\n style = {{\n top: location ? location + '%' : '',\n opacity: showToolbar ? 1 : 0\n }}\n >\n {buttons.filter(button => {\n const {\n loggedIn,\n } = button;\n\n if (loggedIn === 'ONLY' && !stateIdentonym) {\n return false;\n }\n\n if (loggedIn === 'NONE' && stateIdentonym) {\n return false;\n }\n\n return true;\n }).map((\n button: ToolbarButton,\n index,\n ) => {\n const {\n type,\n text,\n icon: Icon,\n first,\n last,\n } = button;\n\n return (\n <VerticalToolbarButton\n key={type}\n atClick={() => handleClick(type, index)}\n icon={Icon}\n active={activeType === type}\n text={text}\n textLeft={toolbarPosition === 'right'}\n showText={showNames}\n scaleIcon={scaleIcons}\n theme={stateInteractionTheme}\n first={first}\n last={last}\n />\n );\n })}\n\n {children}\n </StyledToolbarButtons>\n </StyledToolbar>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n): ToolbarSpecificStateProperties => ({\n stateToolbars: ownProperties.selectors.product.getProductUI(state).toolbars,\n stateIdentonym: ownProperties.selectors.owner.getIdentonym(state),\n stateInteractionTheme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): ToolbarSpecificDispatchProperties => ({\n});\n\n\nconst ConnectedToolbarSpecific = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(ToolbarSpecific);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedToolbarSpecific;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n DispatchAction,\n sitting,\n } from '@plurid/plurid-ui-state-react';\n\n import {\n PluridIconSpeak,\n PluridIconStateShareImage,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n ToolbarButton,\n } from '~data/interfaces';\n\n import {\n HorizontalPositions,\n } from '~data/enumerations';\n\n import ToolbarSpecific from '../ToolbarSpecific';\n import VerticalToolbarButton from '../VerticalToolbarButton';\n import SittingTray from '~components/pluridal/sitting/SittingTray';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface ToolbarGeneralOwnProperties {\n // #region required\n // #region values\n buttons: ToolbarButton[],\n selectors: any;\n context: React.Context<any>;\n // #endregion values\n\n // #region methods\n handleClick: (type: any) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n speakButton?: boolean;\n sittingButton?: boolean;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nexport interface ToolbarGeneralStateProperties {\n stateView: string;\n stateToolbars: any;\n stateSittingTray: boolean;\n stateInteractionTheme: Theme;\n}\n\nexport interface ToolbarGeneralDispatchProperties {\n dispatchToggleSittingTray: DispatchAction<typeof sitting.actions.toggleSittingTray>;\n}\n\nexport type ToolbarGeneralProperties = ToolbarGeneralOwnProperties\n & ToolbarGeneralStateProperties\n & ToolbarGeneralDispatchProperties;\n\n\nconst ToolbarGeneral: React.FC<ToolbarGeneralProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n buttons,\n selectors,\n context,\n // #endregion values\n\n // #region methods\n handleClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n speakButton,\n sittingButton: sittingButtonProperty,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n\n // #region state\n stateView,\n stateSittingTray,\n stateToolbars,\n stateInteractionTheme,\n // #endregion state\n\n\n // #region dispatch\n dispatchToggleSittingTray,\n // #endregion dispatch\n } = properties;\n\n const {\n scaleIcons,\n showNames,\n } = stateToolbars;\n\n const iconTextLeft = false;\n\n const sittingButton = sittingButtonProperty ?? true;\n // #endregion properties\n\n\n // #region render\n return (\n <ToolbarSpecific\n buttons={buttons}\n handleClick={handleClick}\n activeType={stateView}\n position={HorizontalPositions.left}\n selectors={selectors}\n context={context}\n >\n {speakButton && (\n <VerticalToolbarButton\n atClick={() => {}}\n icon={PluridIconSpeak}\n active={false}\n text=\"speak\"\n textLeft={iconTextLeft}\n showText={showNames}\n scaleIcon={scaleIcons}\n theme={stateInteractionTheme}\n />\n )}\n\n {sittingButton && (\n <>\n <VerticalToolbarButton\n atClick={() => dispatchToggleSittingTray()}\n icon={PluridIconStateShareImage}\n active={stateSittingTray}\n text=\"sitting\"\n textLeft={iconTextLeft}\n showText={showNames}\n scaleIcon={scaleIcons}\n theme={stateInteractionTheme}\n last={true}\n />\n\n {stateSittingTray && (\n <SittingTray\n selectors={selectors}\n context={context}\n />\n )}\n </>\n )}\n </ToolbarSpecific>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n): ToolbarGeneralStateProperties => ({\n stateView: ownProperties.selectors.views?.getGeneralView(state),\n stateToolbars: ownProperties.selectors.product?.getProductUI(state)?.toolbars,\n stateSittingTray: ownProperties.selectors.sitting?.getTray(state),\n stateInteractionTheme: ownProperties.selectors.themes?.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): ToolbarGeneralDispatchProperties => ({\n dispatchToggleSittingTray: () => dispatch(\n sitting.actions.toggleSittingTray(),\n ),\n});\n\n\nconst ConnectedToolbarGeneral = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(ToolbarGeneral);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedToolbarGeneral;\n// #endregion exports\n","// #region imports\n // #region internal\n import HorizontalToolbarButton from './HorizontalToolbarButton';\n import ToolbarControls from './ToolbarControls';\n import ToolbarGeneral from './ToolbarGeneral';\n import ToolbarSpecific from './ToolbarSpecific';\n import VerticalToolbarButton from './VerticalToolbarButton';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst toolbars = {\n HorizontalToolbarButton,\n ToolbarControls,\n ToolbarGeneral,\n ToolbarSpecific,\n VerticalToolbarButton,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default toolbars;\n// #endregion exports\n","// #region imports\n // #region internal\n import containers from './containers';\n import head from './head';\n import notifications from './notifications';\n import sitting from './sitting';\n import toolbars from './toolbars';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst pluridal = {\n containers,\n head,\n notifications,\n sitting,\n toolbars,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default pluridal;\n// #endregion exports\n","// #region imports\n // #region internal\n import universal from '~components/universal';\n import pluridal from '~components/pluridal';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region exports\nexport * from './data/enumerations';\nexport * from './data/interfaces';\n\nexport default {\n ...universal.buttons,\n ...universal.form,\n ...universal.general,\n ...universal.inputs,\n ...universal.markers,\n ...universal.typography,\n ...universal.varia,\n\n ...pluridal.containers,\n ...pluridal.head,\n ...pluridal.notifications,\n ...pluridal.sitting,\n ...pluridal.toolbars,\n};\n\n\nconst {\n buttons: {\n LinkButton,\n PureButton,\n RefreshButton,\n },\n form: {\n FormLeftRight,\n FormObliterate,\n Formbutton,\n Formitem,\n Formline,\n },\n general: {\n GlobalStyles,\n },\n inputs: {\n Dropdown,\n EntityPill,\n EntityPillGroup,\n InputBox,\n InputDescriptor,\n InputLine,\n InputSwitch,\n Itemsline,\n Select,\n Slider,\n Switch,\n Textline,\n },\n markers: {\n HR,\n ProgressCircle,\n Spinner,\n Tooltip,\n },\n typography: {\n Heading,\n Paragraph,\n },\n varia: {\n CopyableLine,\n NewPageLink,\n ScrollableLine,\n TextItem,\n },\n} = universal;\n\nconst {\n containers: {\n DashboardsRenderer,\n EntityView,\n },\n head: {\n Head,\n },\n notifications: {\n Notification,\n Notifications,\n },\n sitting: {\n SittingTray,\n },\n toolbars: {\n HorizontalToolbarButton,\n ToolbarControls,\n ToolbarGeneral,\n ToolbarSpecific,\n VerticalToolbarButton,\n },\n} = pluridal;\n\n\nexport {\n universal,\n pluridal,\n\n\n LinkButton,\n PureButton,\n RefreshButton,\n\n FormLeftRight,\n FormObliterate,\n Formbutton,\n Formitem,\n Formline,\n\n GlobalStyles,\n\n Dropdown,\n EntityPill,\n EntityPillGroup,\n InputBox,\n InputDescriptor,\n InputLine,\n InputSwitch,\n Itemsline,\n Select,\n Slider,\n Switch,\n Textline,\n\n HR,\n ProgressCircle,\n Spinner,\n Tooltip,\n\n Heading,\n Paragraph,\n\n CopyableLine,\n NewPageLink,\n ScrollableLine,\n TextItem,\n\n\n DashboardsRenderer,\n EntityView,\n\n Head,\n\n Notification,\n Notifications,\n\n SittingTray,\n\n HorizontalToolbarButton,\n ToolbarControls,\n ToolbarGeneral,\n ToolbarSpecific,\n VerticalToolbarButton,\n};\n// #endregion exports\n"],"names":["StyledSpinner","styled","div","StyledLoader","props","size","theme","colorPrimary","Spinner","properties","style","className","themeValue","pluridTheme","sizeValue","React","createElement","StyledPureButton","button","level","isDisabled","backgroundColorPrimaryAlpha","backgroundColorPrimary","backgroundColorSecondary","backgroundColorTertiary","backgroundColorQuaternary","boxShadowUmbraColor","fontFamilySansSerif","StyledPureButtonDiv","attrs","as","PureButton","text","atClick","themeProperty","levelProperty","sizeProperty","disabled","loading","Object","assign","PluridSpinner","onClick","event","StyledLinkButton","colorSecondary","colorTertiary","inline","isActive","StyledLinkButtonLoading","DEFAULT_LEVEL","LinkButton","active","StyledRefreshButton","RefreshButton","textProperty","hideAtClick","hideAtClickProperty","hideTime","hideTimeProperty","isMounted","useRef","showIconReset","setShowIconReset","useState","atClickHandler","setTimeout","current","useEffect","PluridIconReset","title","inactive","opacity","buttons","StyledFormbutton","devisible","hoverEffect","StyledFormbuttonIcon","position","StyledFormbuttonText","Formbutton","Icon","link","target","iconPosition","hoverEffectProperty","_theme","_level","_devisible","_iconPosition","_inactive","render","Fragment","renderProperties","href","StyledFormitem","Formitem","children","StyledFormLeftRight","FormLeftRight","StyledFormline","responsive","StyledFormlineText","StyledFormlineElement","Formline","Element","undefined","_responsive","StyledFormObliterate","StyledObliterateContainer","FormObliterate","atObliterate","item","showObliterate","setShowObliterate","handleObliterate","PluridIconObliterate","form","GlobalStyles","createGlobalStyle","type","backgroundColorBright","backgroundColorDark","general","setNativeValue","element","value","valueSetter","getOwnPropertyDescriptor","set","prototype","getPrototypeOf","prototypeValueSetter","call","StyledTextline","round","width","center","StyledEnterIcon","left","StyledErrorLine","Textline","forwardRef","reference","atChange","atKeyDown","atFocus","atBlur","placeholder","autoCapitalize","autoComplete","autoCorrect","spellCheck","error","enterIconLeft","enterEmpty","enterAtClick","escapeClear","ariaLabel","_type","plurid","_round","inputElement","handleKeyDown","key","_event","Event","bubbles","dispatchEvent","showEnterIcon","length","onChange","onKeyDown","onFocus","onBlur","paddingRight","ref","mergeReferences","StyledDropdown","StyledDropdownSelected","selectedColor","StyledDropdownList","listTop","heightItems","heightBeyond","StyledFilterable","StyledFilterUpdate","Dropdown","selected","selectables","atSelect","kind","dropdownToggled","dropdownSign","hideAtSelect","selectAtHover","filterable","generalTheme","generalThemeProperty","interactionTheme","interactionThemeProperty","setDropdownToggled","filterUpdate","_generalTheme","_interactionTheme","_hideAtSelect","_selectAtHover","_dropdownSign","filterInput","setGeneralTheme","setInteractionTheme","showList","setShowList","selectedBackgroundColor","setSelectedBackgroundColor","filterValue","setFilterValue","filteredSelectables","setFilteredSelectables","showFilterUpdate","setShowFilterUpdate","arrowIndex","setArrowIndex","select","handleSelect","handleHover","handleFiltering","toLowerCase","filter","selectable","filterSelectable","startsWith","split","itemsReferences","reduce","accumulator","_","index","createRef","focusFilterInput","focus","scrollTo","scrollIntoView","behavior","block","handleArrows","newIndex","handleScroll","window","addEventListener","removeEventListener","backgroundColor","boxShadow","boxShadowPenumbraInset","padding","map","selectableID","id","selectableValue","isSelected","onMouseEnter","StyledEntityPill","boxShadowUmbra","EntityPill","remove","textValue","marginRight","PluridIconDelete","StyledEntityPillGroup","EntityPillGroup","entities","keyFix","pillStyle","entity","stringEntity","StyledInputDescriptor","InputDescriptor","name","show","StyledInputBox","StyledTextBox","InputBox","PluridInputDescriptor","StyledInputLine","InputLine","textline","PluridTextline","StyledSwitch","label","levelBackgroundColor","accent","exclusive","checked","backgroundColorSecondaryAlpha","backgroundColorTertiaryAlpha","backgroundColorQuaternaryAlpha","StyledSwitchSlider","span","StyledSwitchIcon","Switch","commonProperties","StyledInputSwitch","compact","InputSwitch","switch","switchProperties","PluridFormLeftRight","marginLeft","PluridSwitch","StyledItemsline","Itemsline","items","removeItem","themes","_left","Math","random","StyledSelect","PluridSelect","StyledSlider","StyledNamedValue","StyledSliderValue","StyledSliderInputContainer","thumbSize","hovered","DEFAULT_VALUE","DEFAULT_MIN","DEFAULT_MAX","DEFAULT_STEP","DEFAULT_THUMB_SIZE","Slider","defaultValue","min","max","step","valueSign","namedValueAbove","mouseOver","setMouseOver","_thumbSize","_step","handleDoubleClick","handleSliderInput","parseFloat","onMouseLeave","onMouseMove","onDoubleClick","inputs","Select","StyledHR","hr","HR","StyledProgressCircle","ProgressCircle","progress","radius","stroke","progressValue","mathematics","numbers","normalizeBetween","radiusValue","diameter","strokeValue","normalizedRadius","circumference","PI","strokeDashoffset","height","fill","strokeWidth","r","cx","cy","strokeDasharray","StyledTooltip","StyledTooltipString","StyledTooltipIcon","StyledTooltipText","indicator","Tooltip","tool","Tool","tip","Tip","indicatorProperty","icon","iconProperty","mounted","useMounted","hoverOutTimeout","showTooltipText","setShowTooltipText","clearTimeout","renderTool","markers","StyledHeading1","h1","StyledHeading2","h2","StyledHeading3","h3","StyledHeading4","h4","StyledHeading5","h5","StyledHeading6","Heading","typeProperty","StyledParagraph","p","fontFamily","fontFamilySerif","Paragraph","fontFamilyProperty","typography","StyledCopyableLine","StyledData","CopyableLine","data","viewData","copyMessage","copyMessageTime","viewDataText","copyMessageText","copyMessageTimeValue","showCopyMessage","setShowCopyMessage","useFalseAfterTimedTrue","PluridIconCopy","clipboard","copy","StyledNewPageLink","a","NewPageLink","rel","StyledScrollableLine","ScrollableLine","StyledTextItem","TextItem","IconProperty","PluridIconInfo","varia","universal","StyledDashboardsRenderer","fullRenderArea","compactSelectors","StyledNoDashboardRender","StyledSidebar","StyledSelectors","helpItemsCount","StyledBranding","StyledHelp","StyledHelpItem","li","StyledSelector","StyledSelectorRelativeLabel","Selector","selectedDashboard","setSelectedDashboard","rendererID","selectorIcon","PluridIconSpace","Sidebar","dashboards","setCompactSelectors","identonym","usageType","openManual","logout","brandingName","brandingNameStyle","brandingLogo","openManualCount","usageTypeCount","mouseOverSelectors","setMouseOverSelectors","branding","src","alt","PluridIconArrowRight","selectors","dashboard","help","PluridIconDocuments","PluridIconExternalLink","PluridIconExit","StyledRenderArea","RenderArea","renderView","setRenderView","setFullRenderArea","find","resolveView","renderViewInDashboard","renderers","defaultRender","keys","renderID","DashboardRender","DashboardsRenderer","activeDashboard","activeRender","compactSelectorsProperty","fullRenderAreaProperty","noDashboardRender","atDashboardChange","atUIChange","StyledEntityView","StyledEntityViewTop","StyledEntityFilterLine","StyledEntityFilterCancel","filterLength","StyledTopButtons","StyledEntityListContainer","StyledEntityList","ul","boxShadowUmbraInset","header","css","StyledEntityListItem","rowTemplate","StyledActionButton","StyledNoRows","createSearchTerms","rows","fields","field","term","push","trim","PluridPureButton","EntityView","searchFields","rowsHeader","noRows","abstractRowRenderer","actionButtonText","placeholderText","scrollThrottleTime","scrollThrottleTimeProperty","rowRenderFields","rowRenderMethods","actionButtonClick","refresh","actionScrollBottom","bottomTimeout","entityList","searchTerms","setSearchTerms","filteredRows","setFilteredRows","searchValue","setSearchValue","setFilterLength","refreshClicked","setRefreshClicked","useThrottledCallback","scrolledAmount","scrollTop","getBoundingClientRect","bottomReached","scrollHeight","clearFilterValue","JSON","stringify","useImperativeHandle","resetFilterValue","getSearchTerms","row","containers","Head","Helmet","defaults","stateHead","robots","viewport","faviconIcon","_a","favicon16","_b","favicon32","_c","manifest","_d","themeColor","titleValue","descriptionValue","description","canonicalURL","ogTitleValue","ogTitle","ogDescriptionValue","ogDescription","ogImageValue","ogImage","ogURLValue","ogURL","apiDomain","ogImageWidth","ogImageHeight","ogSiteName","appleTouchIcon","styles","scripts","charSet","content","sizes","property","script","mapStateToProperties","state","ownProperties","head","getHead","mapDispatchToProperties","dispatch","ConnectedHead","connect","translateUp","keyframes","StyledNotification","StyledNotificationContent","wordBreak","StyledNotificationClose","Notification","elements","html","react","timeout","resolvedWordBreak","prepareForRemoval","setPrepareForRemoval","notificationTimeout","timeoutValue","resolveRender","contentProperties","dangerouslySetInnerHTML","createMarkup","StyledNotifications","Notifications","stateGeneralTheme","stateNotifications","dispatchRemoveNotification","notification","getGeneralTheme","notifications","getAll","payload","notificationsStateService","actions","ConnectedNotifications","StyledSittingTray","StyledSittingTrayContainer","StyledSittingTrayItem","StyledSittingTrayItemHeader","StyledSittingTrayItemBody","StyledSittingTrayButton","StyledSittingTrayButtonIcon","StyledSittingTrayButtonText","StyledStateLink","StyledStateLinkContainer","StyledStateLinkText","StyledStateLinkCopy","StateLink","currentLink","copyStateLink","setCurrentStateLink","currentStateLink","justifySelf","getInteractionTheme","sitting","getCurrentLink","ConnectedStateLink","StyledStateLine","StyledSliderStateButton","StyledSliderStateSliderContainer","StyledStateLineButtons","StyledStateLineButton","StyledStateLineContainer","StateLine","stateIndex","setStateIndex","maxStateSlider","handleStateIndex","PluridIconPlay","PluridIconBranch","PluridIconNewStateline","display","justifyContent","ConnectedStateLine","StyledStateImage","StyledStateShareImage","StyledStateShareImageButtons","StyledStateShareImageButtonsCopy","StyledStateShareImagePasteContainer","StateImage","message","setMessage","showPaste","setShowPaste","copyCurrentState","copyStateHistory","paste","alignItems","PluridIconStateShareImage","PluridIconCopyCurrentState","PluridIconCopyStateHistory","ConnectedStateImage","StyledSittings","Sittings","stateInteractionTheme","PluridIconSittings","ConnectedSittings","SittingTray","context","mapStatedToProperties","mapDispatchdToProperties","ConnectedSittingTray","StyledHorizontalToolbarButton","scaleIcon","StyledHorizontalToolbarButtonIcon","HorizontalToolbarButton","SizeTypes","HorizontalPositions","VerticalPositions","StyledToolbarControls","top","bottom","StyledToolbarControlsButtons","ToolbarControls","positionProperty","StyledVerticalToolbarButton","first","last","StyledVerticalToolbarButtonText","textLeft","VerticalToolbarButton","showText","StyledToolbar","right","StyledToolbarButtons","ToolbarSpecific","handleClick","activeType","stateToolbars","stateIdentonym","alwaysShow","location","scaleIcons","showNames","toolbarPosition","showToolbar","setShowToolbar","mouseIn","setMouseIn","handleMouseMove","loggedIn","product","getProductUI","toolbars","owner","getIdentonym","ConnectedToolbarSpecific","ToolbarGeneral","speakButton","sittingButton","sittingButtonProperty","stateView","stateSittingTray","dispatchToggleSittingTray","iconTextLeft","PluridIconSpeak","views","getGeneralView","getTray","_e","toggleSittingTray","ConnectedToolbarGeneral","pluridal"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../source/components/universal/markers/Spinner/styled.tsx","../source/components/universal/markers/Spinner/index.tsx","../source/components/universal/buttons/PureButton/styled.tsx","../source/components/universal/buttons/PureButton/index.tsx","../source/components/universal/buttons/LinkButton/styled.tsx","../source/components/universal/buttons/LinkButton/index.tsx","../source/components/universal/buttons/RefreshButton/styled.ts","../source/components/universal/buttons/RefreshButton/index.tsx","../source/components/universal/buttons/index.ts","../source/components/universal/form/Formbutton/styled.tsx","../source/components/universal/form/Formbutton/index.tsx","../source/components/universal/form/Formitem/styled.tsx","../source/components/universal/form/Formitem/index.tsx","../source/components/universal/form/FormLeftRight/styled.tsx","../source/components/universal/form/FormLeftRight/index.tsx","../source/components/universal/form/Formline/styled.tsx","../source/components/universal/form/Formline/index.tsx","../source/components/universal/form/FormObliterate/styled.tsx","../source/components/universal/form/FormObliterate/index.tsx","../source/components/universal/form/index.ts","../source/components/universal/general/GlobalStyles/index.ts","../source/components/universal/general/index.ts","../source/utilities/input/index.ts","../source/components/universal/inputs/Textline/styled.tsx","../source/components/universal/inputs/Textline/index.tsx","../source/components/universal/inputs/Dropdown/styled.ts","../source/components/universal/inputs/Dropdown/index.tsx","../source/components/universal/inputs/EntityPill/styled.ts","../source/components/universal/inputs/EntityPill/index.tsx","../source/components/universal/inputs/EntityPillGroup/styled.ts","../source/components/universal/inputs/EntityPillGroup/index.tsx","../source/components/universal/inputs/InputDescriptor/styled.ts","../source/components/universal/inputs/InputDescriptor/index.tsx","../source/components/universal/inputs/InputBox/styled.ts","../source/components/universal/inputs/InputBox/index.tsx","../source/components/universal/inputs/InputLine/styled.ts","../source/components/universal/inputs/InputLine/index.tsx","../source/components/universal/inputs/Switch/styled.tsx","../source/components/universal/inputs/Switch/index.tsx","../source/components/universal/inputs/InputSwitch/styled.ts","../source/components/universal/inputs/InputSwitch/index.tsx","../source/components/universal/inputs/Itemsline/styled.tsx","../source/components/universal/inputs/Itemsline/index.tsx","../source/components/universal/inputs/Select/styled.tsx","../source/components/universal/inputs/Select/index.tsx","../source/components/universal/inputs/Slider/styled.tsx","../source/components/universal/inputs/Slider/index.tsx","../source/components/universal/inputs/index.ts","../source/components/universal/markers/HR/styled.tsx","../source/components/universal/markers/HR/index.tsx","../source/components/universal/markers/ProgressCircle/styled.ts","../source/components/universal/markers/ProgressCircle/index.tsx","../source/components/universal/markers/Tooltip/styled.tsx","../source/components/universal/markers/Tooltip/index.tsx","../source/components/universal/markers/index.ts","../source/components/universal/typography/Heading/styled.tsx","../source/components/universal/typography/Heading/index.tsx","../source/components/universal/typography/Paragraph/styled.tsx","../source/components/universal/typography/Paragraph/index.tsx","../source/components/universal/typography/index.ts","../source/components/universal/varia/CopyableLine/styled.ts","../source/components/universal/varia/CopyableLine/index.tsx","../source/components/universal/varia/NewPageLink/styled.ts","../source/components/universal/varia/NewPageLink/index.tsx","../source/components/universal/varia/ScrollableLine/styled.tsx","../source/components/universal/varia/ScrollableLine/index.tsx","../source/components/universal/varia/TextItem/styled.ts","../source/components/universal/varia/TextItem/index.tsx","../source/components/universal/varia/index.ts","../source/components/universal/index.ts","../source/components/pluridal/containers/DashboardsRenderer/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/components/Selector/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/components/Selector/index.tsx","../source/components/pluridal/containers/DashboardsRenderer/components/Sidebar/index.tsx","../source/components/pluridal/containers/DashboardsRenderer/components/RenderArea/styled.ts","../source/components/pluridal/containers/DashboardsRenderer/components/RenderArea/index.tsx","../source/components/pluridal/containers/DashboardsRenderer/index.tsx","../source/components/pluridal/containers/EntityView/styled.ts","../source/components/pluridal/containers/EntityView/logic.tsx","../source/components/pluridal/containers/EntityView/index.tsx","../source/components/pluridal/containers/index.ts","../source/components/pluridal/head/Head/index.tsx","../source/components/pluridal/head/index.ts","../source/components/pluridal/notifications/Notification/styled.tsx","../source/components/pluridal/notifications/Notification/index.tsx","../source/components/pluridal/notifications/Notifications/styled.tsx","../source/components/pluridal/notifications/Notifications/index.tsx","../source/components/pluridal/notifications/index.ts","../source/components/pluridal/sitting/SittingTray/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateLink/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateLink/index.tsx","../source/components/pluridal/sitting/SittingTray/components/StateLine/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateLine/index.tsx","../source/components/pluridal/sitting/SittingTray/components/StateImage/styled.ts","../source/components/pluridal/sitting/SittingTray/components/StateImage/index.tsx","../source/components/pluridal/sitting/SittingTray/components/Sittings/styled.ts","../source/components/pluridal/sitting/SittingTray/components/Sittings/index.tsx","../source/components/pluridal/sitting/SittingTray/index.tsx","../source/components/pluridal/sitting/index.ts","../source/components/pluridal/toolbars/HorizontalToolbarButton/styled.ts","../source/components/pluridal/toolbars/HorizontalToolbarButton/index.tsx","../source/data/enumerations/index.ts","../source/components/pluridal/toolbars/ToolbarControls/styled.tsx","../source/components/pluridal/toolbars/ToolbarControls/index.tsx","../source/components/pluridal/toolbars/VerticalToolbarButton/styled.ts","../source/components/pluridal/toolbars/VerticalToolbarButton/index.tsx","../source/components/pluridal/toolbars/ToolbarSpecific/styled.ts","../source/components/pluridal/toolbars/ToolbarSpecific/index.tsx","../source/components/pluridal/toolbars/ToolbarGeneral/index.tsx","../source/components/pluridal/toolbars/index.ts","../source/components/pluridal/index.ts","../source/index.ts"],"sourcesContent":["// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSpinner = styled.div`\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n`;\n\n\nexport interface IStyledLoader {\n theme: Theme,\n size: Sizes,\n}\n\nexport const StyledLoader = styled.div<IStyledLoader>`\n display: inline-block;\n position: relative;\n\n width: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n height: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n\n div {\n width: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n height: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.8rem';\n case 'large':\n return '2.4rem';\n default:\n return '1.8rem';\n }\n }};\n margin: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '0.1rem';\n case 'normal':\n return '0.2rem';\n case 'large':\n return '0.3rem';\n default:\n return '0.2rem';\n }\n }};\n border: ${(props: IStyledLoader) => {\n switch (props.size) {\n case 'small':\n return '0.1rem solid ' + props.theme.colorPrimary;\n case 'normal':\n return '0.2rem solid ' + props.theme.colorPrimary;\n case 'large':\n return '0.3rem solid ' + props.theme.colorPrimary;\n default:\n return '0.2rem solid ' + props.theme.colorPrimary;\n }\n }};\n border-color: ${(props: IStyledLoader) => {\n return props.theme.colorPrimary;\n }} transparent transparent transparent;\n\n box-sizing: border-box;\n display: block;\n position: absolute;\n border-radius: 50%;\n animation: spinner-rotate 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n }\n\n div:nth-child(1) {\n animation-delay: -0.45s;\n }\n\n div:nth-child(2) {\n animation-delay: -0.3s;\n }\n\n div:nth-child(3) {\n animation-delay: -0.15s;\n }\n\n @keyframes spinner-rotate {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n StyledSpinner,\n StyledLoader\n } from './styled';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface SpinnerProperties {\n // #region optional\n // #region values\n theme?: Theme;\n size?: Sizes;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n}\n\nconst Spinner: React.FC<SpinnerProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region optional\n // #region values\n theme,\n size,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n } = properties;\n\n const themeValue = theme || pluridTheme;\n const sizeValue = size || 'normal';\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSpinner\n style={{\n ...style,\n }}\n className={className}\n >\n <StyledLoader\n theme={themeValue}\n size={sizeValue}\n >\n <div />\n <div />\n <div />\n <div />\n </StyledLoader>\n </StyledSpinner>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Spinner;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledPureButton {\n theme: Theme;\n size: Sizes;\n level: number;\n isDisabled?: boolean;\n}\n\nexport const StyledPureButton: any = styled.button<IStyledPureButton>`\n color: ${\n ({\n theme,\n }: IStyledPureButton) => theme.colorPrimary\n };\n background-color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return theme.backgroundColorPrimaryAlpha;\n }\n\n switch (level) {\n case 0:\n return theme.backgroundColorPrimary;\n case 1:\n return theme.backgroundColorSecondary;\n case 2:\n return theme.backgroundColorTertiary;\n case 3:\n return theme.backgroundColorQuaternary;\n default:\n return theme.backgroundColorPrimary;\n }\n }\n };\n box-shadow: 0px 8px 8px 0px ${\n ({\n theme,\n }: IStyledPureButton) => theme.boxShadowUmbraColor\n };\n\n box-sizing: border-box;\n display: block;\n width: 100%;\n min-width: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '8rem';\n case 'normal':\n return '10rem';\n case 'large':\n return '12rem';\n default:\n return '10rem';\n }\n }\n };\n border-radius: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '1rem';\n case 'normal':\n return '1.2rem';\n case 'large':\n return '1.4rem';\n default:\n return '1.2rem';\n }\n }\n };\n padding: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '0 1.2rem';\n case 'normal':\n return '0 1.4rem';\n case 'large':\n return '0 1.6rem';\n default:\n return '0 1.4rem';\n }\n }\n };\n\n font-family: ${\n ({\n theme,\n }: IStyledPureButton) => theme.fontFamilySansSerif\n };\n font-size: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '0.8rem';\n case 'normal':\n return '0.9rem';\n case 'large':\n return '1rem';\n default:\n return '0.9rem';\n }\n }\n };\n height: ${\n ({\n size,\n }: IStyledPureButton) => {\n switch (size) {\n case 'small':\n return '2rem';\n case 'normal':\n return '2.4rem';\n case 'large':\n return '2.8rem';\n default:\n return '2.4rem';\n }\n }\n };\n cursor: ${\n ({\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return 'default';\n }\n\n return 'pointer';\n }\n };\n\n\n border: none;\n outline: none;\n user-select: none;\n display: grid;\n place-content: center;\n line-height: 1.2;\n font-weight: bold;\n transition: box-shadow 200ms linear, background-color 200ms linear;\n position: relative;\n min-height: 40px;\n min-width: 160px;\n\n @media (hover: hover) {\n :hover {\n background-color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return theme.backgroundColorPrimaryAlpha;\n }\n\n switch (level) {\n case 0:\n return theme.backgroundColorSecondary;\n case 1:\n return theme.backgroundColorTertiary;\n case 2:\n return theme.backgroundColorQuaternary;\n case 3:\n return theme.backgroundColorPrimary;\n default:\n return theme.backgroundColorSecondary;\n }\n }\n };\n }\n }\n\n :active {\n box-shadow: ${\n ({\n theme,\n isDisabled,\n }: IStyledPureButton) => {\n if (isDisabled) {\n return '0px 8px 8px 0px ' + theme.boxShadowUmbraColor;\n }\n\n return '0px 3px 3px 0px ' + theme.boxShadowUmbraColor;\n }\n };\n }\n`;\n\n\nexport type IStyledPureButtonDiv = {\n theme: Theme;\n level: number;\n isDisabled?: boolean;\n} & any; // FORCED\n\nexport const StyledPureButtonDiv = styled(StyledPureButton).attrs<IStyledPureButtonDiv>({\n as: 'div',\n})`\n background-color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledPureButtonDiv) => {\n if (isDisabled) {\n return '';\n }\n\n switch (level) {\n case 0:\n return theme.backgroundColorSecondary;\n case 1:\n return theme.backgroundColorTertiary;\n case 2:\n return theme.backgroundColorQuaternary;\n case 3:\n return theme.backgroundColorPrimary;\n default:\n return theme.backgroundColorSecondary;\n }\n }\n };\n box-shadow: 0px 3px 3px 0px ${\n ({\n theme,\n }: IStyledPureButtonDiv) => theme.boxShadowUmbraColor\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n\n import PluridSpinner from '~components/universal/markers/Spinner';\n // #endregion external\n\n\n // #region internal\n import {\n StyledPureButton,\n StyledPureButtonDiv,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface PureButtonProperties {\n // #region required\n // #region values\n text: string | JSX.Element;\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n level?: number;\n size?: Sizes;\n disabled?: boolean;\n loading?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst PureButton: React.FC<PureButtonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n level: levelProperty,\n size: sizeProperty,\n disabled,\n loading,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const level = levelProperty ?? 0;\n const size = sizeProperty || 'normal';\n // #endregion properties\n\n\n // #region render\n if (loading) {\n return (\n <StyledPureButtonDiv\n style={{\n ...style,\n }}\n className={className}\n\n theme={theme}\n level={level}\n size={size}\n isDisabled={disabled}\n >\n <PluridSpinner\n theme={theme}\n size=\"small\"\n />\n </StyledPureButtonDiv>\n );\n }\n\n return (\n <StyledPureButton\n onClick={(\n event: React.MouseEvent,\n ) => disabled\n ? null\n : atClick(event)\n }\n\n style={{\n ...style,\n }}\n className={className}\n\n theme={theme}\n level={level}\n size={size}\n isDisabled={disabled}\n >\n {text}\n </StyledPureButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default PureButton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledLinkButton {\n theme: Theme;\n level: number;\n isDisabled?: boolean;\n inline?: boolean;\n isActive?: boolean;\n}\n\nexport const StyledLinkButton: any = styled.button<IStyledLinkButton>`\n font-family: ${\n ({\n theme,\n }: IStyledLinkButton) => theme.fontFamilySansSerif\n };\n\n color: ${\n ({\n theme,\n level,\n isDisabled,\n }: IStyledLinkButton) => {\n if (isDisabled) {\n return theme.backgroundColorPrimaryAlpha;\n }\n\n switch (level) {\n case 0:\n return theme.colorPrimary;\n case 1:\n return theme.colorSecondary;\n case 2:\n return theme.colorTertiary;\n default:\n return theme.colorPrimary;\n }\n }\n };\n margin: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return '0';\n }\n\n return '0 1rem';\n }\n };\n padding: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return '0';\n }\n\n return 'initial';\n }\n };\n font-size: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return 'inherit';\n }\n\n return '0.9rem';\n }\n };\n display: ${\n ({\n inline,\n }: IStyledLinkButton) => {\n if (inline) {\n return 'inline';\n }\n\n return 'grid';\n }\n };\n cursor: ${\n ({\n isDisabled,\n }: IStyledLinkButton) => {\n if (isDisabled) {\n return 'inherit';\n }\n\n return 'pointer';\n }\n };\n border: none;\n border-bottom: 1px solid ${\n ({\n isActive,\n theme,\n }: IStyledLinkButton) => {\n if (isActive) {\n return theme.colorPrimary;\n }\n\n return 'transparent';\n }\n };\n\n font-weight: bold;\n background: transparent;\n place-content: center;\n user-select: none;\n outline: none;\n`;\n\n\nexport const StyledLinkButtonLoading = styled.div`\n position: relative;\n min-height: 1rem;\n height: 100%;\n width: 100%;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n plurid as pluridTheme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridSpinner from '~components/universal/markers/Spinner';\n // #endregion external\n\n\n // #region internal\n import {\n StyledLinkButton,\n StyledLinkButtonLoading,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst DEFAULT_LEVEL = 0;\n\nexport interface LinkButtonProperties {\n // #region required\n // #region values\n text: string | JSX.Element;\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n level?: number;\n inline?: boolean;\n disabled?: boolean;\n loading?: boolean;\n active?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst LinkButton: React.FC<LinkButtonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n level: levelProperty,\n inline,\n disabled,\n loading,\n active,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const level = levelProperty ?? DEFAULT_LEVEL;\n // #endregion properties\n\n\n // #region render\n if (loading) {\n return (\n <StyledLinkButtonLoading>\n <PluridSpinner\n size=\"small\"\n theme={theme}\n />\n </StyledLinkButtonLoading>\n );\n }\n\n return (\n <StyledLinkButton\n onClick={(\n event: React.MouseEvent,\n ) => disabled\n ? null\n : atClick(event)\n }\n style={{\n ...style,\n }}\n className={className}\n\n theme={theme}\n level={level}\n inline={inline}\n isDisabled={disabled}\n isActive={active}\n >\n {text}\n </StyledLinkButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default LinkButton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledRefreshButton {\n theme: Theme;\n}\n\nconst StyledRefreshButton = styled.div<IStyledRefreshButton>`\n`;\n// #endregion module\n\n\n\n// #region exports\nexport {\n StyledRefreshButton,\n};\n// #endregion exports\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconReset,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledRefreshButton,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface RefreshButtonProperties {\n // #region required\n // #region values\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n text?: string;\n disabled?: boolean;\n hideAtClick?: boolean;\n hideTime?: number;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst RefreshButton: React.FC<RefreshButtonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n text: textProperty,\n disabled,\n hideAtClick: hideAtClickProperty,\n hideTime: hideTimeProperty,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const text = textProperty || '';\n const hideAtClick = hideAtClickProperty ?? true;\n const hideTime = hideTimeProperty || 1300;\n // #endregion properties\n\n\n // #region references\n const isMounted = useRef(true);\n // #endregion references\n\n\n // #region state\n const [\n showIconReset,\n setShowIconReset,\n ] = useState(true);\n // #endregion state\n\n\n // #region handlers\n const atClickHandler = (\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (disabled) {\n return;\n }\n\n if (hideAtClick) {\n setShowIconReset(false);\n }\n\n atClick(event);\n\n if (hideAtClick) {\n setTimeout(() => {\n if (!isMounted.current) {\n return;\n }\n\n setShowIconReset(true);\n }, hideTime);\n }\n }\n // #endregion handlers\n\n\n // #region effects\n useEffect(() => {\n return () => {\n isMounted.current = false;\n }\n }, []);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledRefreshButton\n theme={theme}\n >\n {showIconReset && (\n <PluridIconReset\n // #region required\n // #region values\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme={theme}\n title={text}\n inactive={disabled}\n opacity={disabled ? 0.5 : 1}\n // #endregion values\n\n // #region methods\n atClick={atClickHandler}\n // #endregion methods\n // #endregion optional\n />\n )}\n </StyledRefreshButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default RefreshButton;\n// #endregion exports\n","// #region imports\n // #region internal\n import PureButton from './PureButton';\n import LinkButton from './LinkButton';\n import RefreshButton from './RefreshButton';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst buttons = {\n PureButton,\n LinkButton,\n RefreshButton,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default buttons;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledFormbutton {\n theme: Theme,\n level: number;\n inactive: boolean;\n devisible: boolean;\n hoverEffect: boolean;\n}\n\nexport const StyledFormbutton = styled.div<IStyledFormbutton>`\n display: grid;\n grid-template-columns: 20px 1fr;\n grid-gap: 0.5rem;\n align-items: center;\n min-height: 2rem;\n user-select: none;\n text-decoration: none;\n padding: 0.3rem 0.7rem;\n\n margin: ${(props: IStyledFormbutton) => {\n if (props.devisible) {\n return '0';\n }\n return 'initial';\n }};\n cursor: ${(props: IStyledFormbutton) => {\n if (props.inactive) {\n return 'default';\n }\n return 'pointer';\n }};\n color: ${(props: IStyledFormbutton) => {\n return props.theme.colorPrimary;\n }};\n\n :hover {\n background-color: ${(props: IStyledFormbutton) => {\n if (!props.hoverEffect) {\n return 'initial';\n }\n\n if (props.inactive || props.devisible) {\n return 'initial';\n }\n\n return props.theme.backgroundColorSecondary;\n }};\n }\n`;\n\n\nexport interface IStyledFormbuttonIcon {\n theme: Theme,\n position: 'left' | 'center' | 'right';\n}\n\nexport const StyledFormbuttonIcon = styled.div<IStyledFormbuttonIcon>`\n justify-self: ${(props: IStyledFormbuttonIcon) => {\n return props.position;\n }};\n display: grid;\n place-content: center;\n`;\n\n\nexport const StyledFormbuttonText = styled.div`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconProperties,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormbutton,\n StyledFormbuttonIcon,\n StyledFormbuttonText,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormbuttonProperties {\n text: string;\n Icon: React.FC<PluridIconProperties>;\n atClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n\n link?: string;\n target?: string;\n theme?: Theme;\n devisible?: boolean;\n level?: number;\n iconPosition?: 'left' | 'center' | 'right';\n /**\n * Renders the button as is (without hover, cursor effects, and on click listen).\n */\n inactive?: boolean;\n hoverEffect?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n}\n\n/**\n * Renders an icon and a descriptive text, button-like.\n *\n * @param properties\n */\nconst Formbutton: React.FC<FormbuttonProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** required */\n text,\n Icon,\n atClick,\n\n /** optional */\n link,\n target,\n theme,\n devisible,\n level,\n iconPosition,\n inactive,\n hoverEffect: hoverEffectProperty,\n style,\n className,\n } = properties;\n\n const _theme = theme || pluridTheme\n const _level = level ?? 0;\n const _devisible = devisible ?? false;\n const _iconPosition = iconPosition || 'left';\n const _inactive = inactive ?? false\n const hoverEffect = hoverEffectProperty ?? true;\n // #endregion properties\n\n\n // #region render\n const render = () => (\n <>\n <StyledFormbuttonIcon\n position={_iconPosition}\n >\n <Icon\n theme={_theme}\n />\n </StyledFormbuttonIcon>\n\n <StyledFormbuttonText>\n {text}\n </StyledFormbuttonText>\n </>\n );\n\n const renderProperties = {\n style: {...style},\n className: className,\n theme: _theme,\n level: _level,\n inactive: _inactive,\n devisible: _devisible,\n hoverEffect,\n };\n\n\n if (link) {\n return (\n <StyledFormbutton\n onClick={(event: any) => !_inactive ? atClick(event) : null }\n as={'a'}\n href={link}\n target={target}\n {...renderProperties}\n >\n {render()}\n </StyledFormbutton>\n );\n }\n\n return (\n <StyledFormbutton\n onClick={(event: any) => !_inactive ? atClick(event as any) : null }\n {...renderProperties}\n >\n {render()}\n </StyledFormbutton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Formbutton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\nexport interface IStyledFormitem {\n theme: Theme,\n level: number;\n}\n\nexport const StyledFormitem = styled.div<IStyledFormitem>`\n display: grid;\n align-items: center;\n min-height: 2rem;\n padding: 0.3rem 0.7rem;\n user-select: none;\n`;\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormitem,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormitemProperties {\n theme?: Theme;\n level?: number;\n\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Renders a form item.\n *\n * @param properties\n */\nconst Formitem: React.FC<FormitemProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** optional */\n theme,\n level,\n style,\n className,\n\n /** default */\n children,\n } = properties;\n\n const _theme = theme || pluridTheme;\n const _level = level ?? 0;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledFormitem\n style={{\n ...style,\n }}\n className={className}\n theme={_theme}\n level={_level}\n >\n {children}\n </StyledFormitem>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Formitem;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\nexport interface IStyledFormLeftRight {\n theme: Theme,\n}\n\nexport const StyledFormLeftRight = styled.div<IStyledFormLeftRight>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormLeftRight,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormLeftRightProperties {\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Form left and right items\n *\n * @param properties\n */\nconst FormLeftRight: React.FC<FormLeftRightProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** optional */\n theme,\n style,\n className,\n\n /** default */\n children,\n } = properties;\n\n const _theme = theme || pluridTheme;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledFormLeftRight\n style={{\n ...style,\n }}\n className={className}\n theme={_theme}\n >\n {children}\n </StyledFormLeftRight>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default FormLeftRight;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledFormline {\n theme: Theme,\n level: number;\n responsive: boolean;\n}\n\nexport const StyledFormline = styled.div<IStyledFormline>`\n display: grid;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n min-height: 2rem;\n padding: 0.3rem 0.7rem;\n\n color: ${(props: IStyledFormline) => {\n return props.theme.colorPrimary;\n }};\n\n @media (max-width: 800px) {\n grid-template-columns: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return '1fr';\n }\n return '1fr 1fr';\n }};\n min-height: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return '2.4rem';\n }\n return '2rem';\n }};\n justify-items: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return 'center';\n }\n return 'auto';\n }};\n justify-content: ${(props: IStyledFormline) => {\n if (props.responsive) {\n return 'center';\n }\n return 'auto';\n }};\n }\n`;\n\n\nexport const StyledFormlineText = styled.div`\n user-select: none;\n`;\n\n\n\nexport interface IStyledFormlineElement {\n responsive: boolean;\n}\n\nexport const StyledFormlineElement = styled.div<IStyledFormlineElement>`\n justify-self: right;\n\n @media (max-width: 800px) {\n justify-self: ${(props: IStyledFormlineElement) => {\n if (props.responsive) {\n return 'center';\n }\n return 'right';\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledFormline,\n StyledFormlineText,\n StyledFormlineElement,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormlineProperties {\n text: string;\n\n Element?: React.FC;\n theme?: Theme;\n level?: number;\n responsive?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Renders a descriptive text and a form element side by side.\n *\n * The form element can be passed as `Element` prop or as child.\n *\n * @param properties\n */\nconst Formline: React.FC<FormlineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** required */\n text,\n\n /** optional */\n Element,\n theme,\n level,\n responsive,\n\n style,\n className,\n\n /** default */\n children,\n } = properties;\n\n const _theme = theme || pluridTheme;\n\n const _level = level === undefined\n ? 0\n : level;\n\n const _responsive = responsive === undefined\n ? false\n : responsive;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledFormline\n style={{\n ...style,\n }}\n className={className}\n theme={_theme}\n level={_level}\n responsive={_responsive}\n >\n <StyledFormlineText>\n {text}\n </StyledFormlineText>\n\n <StyledFormlineElement\n responsive={_responsive}\n >\n {Element\n ? (\n <Element />\n ) : (\n <>\n {children}\n </>\n )}\n </StyledFormlineElement>\n </StyledFormline>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Formline;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledFormObliterate {\n theme: Theme,\n level: number;\n devisible: boolean;\n}\n\nexport const StyledFormObliterate = styled.div<IStyledFormObliterate>`\n color: ${(properties: IStyledFormObliterate) => {\n return properties.theme.colorPrimary;\n }};\n font-family: ${(properties: IStyledFormObliterate) => {\n return properties.theme.fontFamilySansSerif;\n }};\n font-size: 0.8rem;\n user-select: none;\n`;\n\n\nexport const StyledObliterateContainer = styled.div`\n text-align: center;\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 30px 45px 60px;\n align-items: center;\n max-width: 200px;\n margin: 1rem auto;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconObliterate,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import Formbutton from '../Formbutton';\n\n import LinkButton from '../../buttons/LinkButton';\n import PureButton from '../../buttons/PureButton';\n // #endregion external\n\n\n // #region internal\n import {\n StyledFormObliterate,\n StyledObliterateContainer,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface FormObliterateProperties {\n atObliterate: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n\n item?: string;\n\n theme?: Theme;\n devisible?: boolean;\n level?: number;\n\n style?: React.CSSProperties;\n className?: string;\n}\n\n/**\n * Renders an icon and a descriptive text, button-like.\n *\n * @param properties\n */\nconst FormObliterate: React.FC<FormObliterateProperties> = (\n properties,\n) => {\n // #region properties\n /** properties */\n const {\n /** required */\n atObliterate,\n\n /** optional */\n item,\n\n theme,\n devisible,\n level,\n\n style,\n className,\n } = properties;\n\n const _theme = theme || pluridTheme;\n const _level = level ?? 0;\n const _devisible = devisible ?? false;\n // #endregion properties\n\n\n // #region state\n const [showObliterate, setShowObliterate] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const handleObliterate = (\n event: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n setShowObliterate(false);\n atObliterate(event);\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledFormObliterate\n theme={_theme}\n level={_level}\n devisible={_devisible}\n style={{\n ...style,\n }}\n className={className}\n >\n {!showObliterate && (\n <Formbutton\n theme={_theme}\n text={item ? `obliterate ${item}` : 'obliterate'}\n Icon={PluridIconObliterate}\n atClick={() => setShowObliterate(true)}\n devisible={true}\n />\n )}\n\n {showObliterate && (\n <StyledObliterateContainer>\n <div>\n remove forever?\n </div>\n\n <LinkButton\n theme={_theme}\n text=\"cancel\"\n atClick={() => setShowObliterate(false)}\n />\n\n <PureButton\n theme={_theme}\n text=\"Obliterate\"\n atClick={(event) => handleObliterate(event as any)}\n />\n </StyledObliterateContainer>\n )}\n </StyledFormObliterate>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default FormObliterate;\n// #endregion exports\n","// #region imports\n // #region internal\n import Formbutton from './Formbutton';\n import Formitem from './Formitem';\n import FormLeftRight from './FormLeftRight';\n import Formline from './Formline';\n import FormObliterate from './FormObliterate';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst form = {\n Formbutton,\n Formitem,\n FormLeftRight,\n Formline,\n FormObliterate,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default form;\n// #endregion exports\n","// #region imports\n // #region libraries\n import {\n createGlobalStyle,\n } from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IGlobalStyles {\n theme: Theme;\n}\n\nconst GlobalStyles = createGlobalStyle<IGlobalStyles>`\n *, *::after, *::before {\n box-sizing: border-box;\n }\n\n html {\n height: 100%;\n min-height: 100vh;\n }\n\n body {\n font-family: ${\n ({\n theme,\n }: IGlobalStyles) => theme.fontFamilySansSerif\n };\n\n height: 100%;\n margin: 0;\n padding: 0;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n color: ${\n ({\n theme,\n }: IGlobalStyles) => {\n if (theme.type === 'dark') {\n return theme.backgroundColorBright;\n }\n\n return theme.colorPrimary;\n }\n };\n background: ${\n ({\n theme,\n }: IGlobalStyles) => {\n if (theme.type === 'dark') {\n return theme.backgroundColorDark;\n }\n\n return theme.backgroundColorPrimary;\n }\n };\n }\n`;\n// #endregion module\n\n\n\n// #region exports\nexport default GlobalStyles;\n// #endregion exports\n","// #region imports\n // #region internal\n import GlobalStyles from './GlobalStyles';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst general = {\n GlobalStyles,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default general;\n// #endregion exports\n","// #region module\n/**\n * https://github.com/facebook/react/issues/10135#issuecomment-314441175\n */\nexport const setNativeValue = (\n element: any,\n value: any,\n) => {\n const valueSetter = (Object as any).getOwnPropertyDescriptor(element, 'value').set;\n const prototype = Object.getPrototypeOf(element);\n const prototypeValueSetter = (Object as any).getOwnPropertyDescriptor(prototype, 'value').set;\n\n if (valueSetter && valueSetter !== prototypeValueSetter) {\n prototypeValueSetter.call(element, value);\n } else {\n valueSetter.call(element, value);\n }\n}\n// #endregion module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledTextline: any = styled.div`\n position: relative;\n display: inline-block;\n width: 100%;\n\n input {\n box-sizing: border-box;\n border: none;\n outline: none;\n font-size: 0.8rem;\n\n padding: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n return '0.6rem 1rem';\n }};\n padding-top: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n return '0.7rem';\n }};\n min-height: ${(props: any) => {\n if (props.devisible) {\n return 'initial';\n }\n return '36px';\n }};\n background-color: ${(props: any) => {\n if (props.devisible) {\n return 'transparent';\n }\n\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n }};\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n box-shadow: inset 0px 4px 4px ${(props: any) => {\n if (props.devisible) {\n return 'transparent';\n }\n\n return props.theme.boxShadowUmbraColor;\n }};\n border-radius: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (props.round) {\n return '1000px';\n }\n return '0px';\n }};\n width: ${(props: any) => {\n if (!props.width) {\n return '100%';\n }\n\n if (typeof props.width === 'number') {\n return props.width + 'px';\n }\n\n return props.width;\n }};\n text-align: ${(props: any) => {\n if (props.center) {\n return 'center';\n }\n\n return 'left';\n }};\n\n ::placeholder {\n color: ${(props: any) => {\n return props.theme.colorSecondary;\n }};\n }\n }\n`;\n\n\nexport const StyledEnterIcon: any = styled.div`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n height: 20px;\n width: 20px;\n border-radius: 100px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.9rem;\n user-select: none;\n cursor: pointer;\n border: 1px solid transparent;\n\n right: ${(props: any) => {\n if (props.left) {\n return 'auto';\n }\n return '0.6rem';\n }};\n left: ${(props: any) => {\n if (props.left) {\n return '0.6rem';\n }\n return 'auto';\n }};\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n\n :hover {\n border: 1px solid ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n }\n`;\n\n\nexport const StyledErrorLine: any = styled.div`\n position: absolute;\n background-color: #FF0000;\n bottom: -2px;\n\n height: ${(props: any) => {\n if (props.devisible) {\n return '2px';\n }\n\n return '4px';\n }};\n left: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (!props.round) {\n return '0';\n }\n\n return '14px';\n }};\n right: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (!props.round) {\n return '0';\n }\n\n return '14px';\n }};\n border-radius: ${(props: any) => {\n if (props.devisible) {\n return '0';\n }\n\n if (props.round) {\n return '10px';\n }\n return '0px';\n }};\n box-shadow: 0px 1px 3px 0px ${(props: any) => {\n if (props.devisible) {\n return 'initial';\n }\n\n return props.theme.boxShadowUmbraColor;\n }};\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n forwardRef,\n } from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n mergeReferences,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region external\n import {\n setNativeValue,\n } from '~utilities/input';\n // #endregion external\n\n\n // #region internal\n import {\n StyledTextline,\n StyledEnterIcon,\n StyledErrorLine,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface TextlineProperties {\n text: string;\n atChange: (event: React.ChangeEvent<HTMLInputElement>, value: string) => void;\n atKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n atFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n atBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n\n type?: 'text' | 'password' | 'number';\n placeholder?: string;\n autoCapitalize?: string;\n autoComplete?: string;\n autoCorrect?: string;\n spellCheck?: boolean;\n style?: React.CSSProperties;\n className?: string;\n\n theme?: Theme;\n level?: number;\n devisible?: boolean;\n center?: boolean;\n round?: boolean;\n width?: string | number;\n error?: boolean;\n\n enterIconLeft?: boolean;\n enterEmpty?: boolean;\n enterAtClick?: () => void;\n escapeClear?: boolean;\n\n ariaLabel?: string;\n}\n\nexport type TextlineType = TextlineProperties & React.RefAttributes<any>;\n\n/**\n * @param text `string`\n * @param atChange `(event: React.ChangeEvent<HTMLInputElement>, value: string) => void`\n * @param atKeyDown `(event: React.KeyboardEvent<HTMLInputElement>) => void`\n * @param atFocus `(event: React.FocusEvent<HTMLInputElement>) => void`\n * @param atBlur `(event: React.FocusEvent<HTMLInputElement>) => void`\n *\n * @param type optional - `'text' | 'password' | 'number'`\n * @param placeholder optional - `string`\n * @param autoCapitalize optional - `string`\n * @param autoComplete optional - `string`\n * @param autoCorrect optional - `string`\n * @param spellCheck optional - `boolean`\n * @param style optional - `React.CSSProperties`\n *\n * @param theme optional - `Theme`\n * @param level optional - `number`\n * @param devisible optional - `boolean`\n * @param center optional - `boolean`\n * @param round optional - `boolean`\n * @param width optional - `string | number`\n * @param error optional - `boolean`\n *\n * @param enterIconLeft optional - `boolean`\n * @param enterEmpty optional - `boolean`\n * @param enterAtClick optional - `() => void`\n * @param escapeClear optional - `boolean`\n *\n * @param ariaLabel optiona - `boolean`\n */\nconst Textline: React.ForwardRefExoticComponent<TextlineType> = forwardRef<HTMLInputElement, TextlineProperties>((\n properties,\n reference,\n) => {\n // #region properties\n const {\n text,\n atChange,\n atKeyDown,\n atFocus,\n atBlur,\n\n type,\n placeholder,\n autoCapitalize,\n autoComplete,\n autoCorrect,\n spellCheck,\n style,\n className,\n\n theme,\n level,\n devisible,\n center,\n round,\n width,\n error,\n\n enterIconLeft,\n enterEmpty,\n enterAtClick,\n escapeClear,\n\n ariaLabel,\n } = properties;\n\n const _type = type || 'text';\n const _theme = theme || plurid;\n const _level = level ?? 0;\n const _round = round ?? true;\n // #endregion properties\n\n\n // #region references\n const inputElement = useRef<HTMLInputElement | null>();\n // #endregion references\n\n\n // #region handlers\n const handleKeyDown = (\n event: React.KeyboardEvent<HTMLInputElement>,\n ) => {\n if (!inputElement.current) {\n return;\n }\n\n if (atKeyDown) {\n atKeyDown(event);\n }\n\n if (\n enterAtClick\n && event.key === 'Enter'\n ) {\n enterAtClick();\n }\n\n if (\n escapeClear\n && event.key === 'Escape'\n && inputElement.current\n ) {\n setNativeValue(inputElement.current, '');\n const _event = new Event('input', {\n bubbles: true,\n });\n inputElement.current.dispatchEvent(_event);\n }\n }\n // #endregion handlers\n\n\n // #region render\n const showEnterIcon = enterAtClick && (text.length > 0 || enterEmpty);\n\n return (\n <StyledTextline\n theme={_theme}\n level={_level}\n devisible={devisible}\n center={center}\n round={_round}\n width={width}\n className={className}\n >\n <input\n type={_type}\n\n value={text}\n onChange={(event) => {\n atChange(event, event.target.value);\n }}\n onKeyDown={handleKeyDown}\n onFocus={atFocus}\n onBlur={atBlur}\n\n placeholder={placeholder}\n autoCapitalize={autoCapitalize}\n autoComplete={autoComplete}\n autoCorrect={autoCorrect}\n spellCheck={spellCheck}\n\n aria-label={ariaLabel}\n\n style={{\n ...style,\n paddingRight: showEnterIcon ? '35px' : undefined,\n }}\n\n ref={mergeReferences(\n inputElement,\n reference,\n )}\n />\n\n {error && (\n <StyledErrorLine\n theme={_theme}\n devisible={devisible}\n round={_round}\n />\n )}\n\n {\n showEnterIcon\n && (\n <StyledEnterIcon\n theme={_theme}\n onClick={() => enterAtClick()}\n left={enterIconLeft}\n >\n ➔\n </StyledEnterIcon>\n )\n }\n </StyledTextline>\n );\n // #endregion render\n});\n// #endregion module\n\n\n\n// #region exports\nexport default Textline;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledDropdown: any = styled.div`\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n text-align: ${(props: any) => {\n if (props.left) {\n return 'left';\n }\n return 'right';\n }};\n font-size: 1rem;\n\n position: relative;\n`;\n\n\nexport const StyledDropdownSelected: any = styled.div`\n cursor: pointer;\n user-select: none;\n color: ${(props: any) => {\n if (props.selectedColor) {\n return props.selectedColor;\n }\n\n return props.theme.colorPrimary;\n }};\n`;\n\n\nexport const StyledDropdownList: any = styled.div`\n font-size: 0.85rem;\n\n background: ${(props: any) => {\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n }};\n color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n position: absolute;\n left: ${(props: any) => {\n if (props.left) {\n return '0px';\n }\n return 'auto';\n }};\n right: ${(props: any) => {\n if (props.left) {\n return 'auto';\n }\n return '0px';\n }};\n top: ${(props: any) => {\n if (props.listTop) {\n return props.listTop;\n }\n\n return '25px';\n }};\n height: ${(props: any) => {\n if (props.heightItems) {\n const value = props.heightItems * 2 + 'rem';\n if (props.heightBeyond) {\n return `calc(${value} + 1rem)`;\n }\n return value;\n }\n return 'initial';\n }};\n overflow: ${(props: any) => {\n if (props.heightItems) {\n return 'scroll';\n }\n return 'initial';\n }};\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 width: ${(props: any) => {\n if (props.width) {\n if (typeof props.width === 'number') {\n return props.width + 'px';\n }\n if (typeof props.width === 'string') {\n return props.width;\n }\n }\n return 'initial';\n }};\n\n border-radius: 10px;\n min-width: 60px;\n\n z-index: 9998;\n box-shadow: 0px 3px 5px 1px hsla(327, 94%, 10%, 0.7);\n\n ul {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n ul li {\n box-sizing: border-box;\n padding: 0.3rem 0.6rem;\n user-select: none;\n cursor: pointer;\n min-height: 2rem;\n display: grid;\n align-items: center;\n word-break: break-all;\n justify-content: ${(props: any) => {\n if (props.left) {\n return 'left';\n }\n return 'right';\n }};\n }\n\n ul li:hover {\n background: ${(props: any) => {\n if (props.level === 2) {\n return props.theme.backgroundColorSecondary;\n }\n return props.theme.backgroundColorTertiary;\n }};\n }\n\n ul li:first-child {\n border-top-right-radius: 10px;\n border-top-left-radius: 10px;\n }\n\n ul li:last-child {\n border-bottom-right-radius: 10px;\n border-bottom-left-radius: 10px;\n }\n`;\n\n\nexport const StyledFilterable: any = styled.div`\n position: relative;\n\n input {\n text-align: ${(props: any) => {\n if (props.left) {\n return 'left !important';\n }\n return 'right !important';\n }};\n }\n`;\n\n\n\nexport interface IStyledFilterUpdate {\n left?: boolean;\n}\n\nexport const StyledFilterUpdate: any = styled.div<IStyledFilterUpdate>`\n position: absolute;\n z-index: 9999;\n top: 0;\n left: ${(props: any) => {\n if (props.left) {\n return 'auto';\n }\n return '0';\n }};\n right: ${(props: any) => {\n if (props.left) {\n return '0';\n }\n return 'auto';\n }};\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconReset,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n PluridUIDropdownSelectable,\n } from '~data/interfaces';\n\n import Textline from '../Textline';\n // #endregion external\n\n\n // #region internal\n import {\n StyledDropdown,\n StyledDropdownSelected,\n StyledDropdownList,\n StyledFilterable,\n StyledFilterUpdate,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface DropdownProperties {\n // #region required\n // #region values\n selectables: (PluridUIDropdownSelectable | string)[];\n selected: PluridUIDropdownSelectable | string;\n // #endregion values\n\n // #region methods\n atSelect: (\n selection: PluridUIDropdownSelectable | string,\n kind?: string,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n left?: boolean;\n kind?: string;\n listTop?: string;\n dropdownToggled?: boolean;\n dropdownSign?: string | boolean;\n\n /**\n * Hide dropdown after click selection.\n *\n * Default `true`.\n */\n hideAtSelect?: boolean;\n /**\n * Run the `atSelect` function when hovering over a dropdown item.\n *\n * Default `true`.\n */\n selectAtHover?: boolean;\n selectedColor?: string;\n\n /**\n * Inserts an input field to filter the selectables.\n */\n filterable?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n\n theme?: Theme;\n generalTheme?: Theme;\n interactionTheme?: Theme;\n level?: number;\n devisible?: boolean;\n round?: boolean;\n width?: string | number;\n\n /**\n * The number of items determining the height;\n */\n heightItems?: number;\n // #endregion values\n\n // #region methods\n setDropdownToggled?: any;\n filterUpdate?: () => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst Dropdown: React.FC<DropdownProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n selected,\n selectables,\n // #endregion values\n\n // #region methods\n atSelect,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n left,\n kind,\n listTop,\n dropdownToggled,\n dropdownSign,\n hideAtSelect,\n selectAtHover,\n selectedColor,\n filterable,\n\n style,\n className,\n\n theme: themeProperty,\n generalTheme: generalThemeProperty,\n interactionTheme: interactionThemeProperty,\n level,\n\n heightItems,\n width,\n // #endregion values\n\n // #region methods\n setDropdownToggled,\n filterUpdate,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const _generalTheme = generalThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : generalThemeProperty;\n\n const _interactionTheme = interactionThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : interactionThemeProperty;\n\n const _level = level ?? 0;\n const _hideAtSelect = hideAtSelect ?? true;\n const _selectAtHover = selectAtHover ?? false;\n\n const _dropdownSign = typeof dropdownSign === 'string'\n ? dropdownSign\n : !dropdownSign\n ? ''\n : '▼';\n // #endregion properties\n\n\n // #region references\n const isMounted = useRef(true);\n const filterInput = useRef<HTMLInputElement | null>(null);\n // #endregion references\n\n\n // #region state\n const [\n generalTheme,\n setGeneralTheme,\n ] = useState(_generalTheme);\n const [\n interactionTheme,\n setInteractionTheme,\n ] = useState(_interactionTheme);\n\n const [\n showList,\n setShowList,\n ] = useState(false);\n const [\n selectedBackgroundColor,\n setSelectedBackgroundColor,\n ] = useState(interactionTheme.backgroundColorTertiary);\n const [\n filterValue,\n setFilterValue,\n ] = useState('');\n const [\n filteredSelectables,\n setFilteredSelectables,\n ] = useState([\n ...selectables,\n ]);\n\n const [\n showFilterUpdate,\n setShowFilterUpdate,\n ] = useState(!!filterUpdate);\n\n const [\n arrowIndex,\n setArrowIndex,\n ] = useState(-1);\n // #endregion state\n\n\n // #region handlers\n const select = (\n selected: string | PluridUIDropdownSelectable,\n ) => {\n kind\n ? atSelect(selected, kind)\n : atSelect(selected);\n }\n\n const handleSelect = (\n selected: string | PluridUIDropdownSelectable,\n ) => {\n select(selected);\n\n if (_hideAtSelect) {\n setShowList(false);\n }\n }\n\n const handleHover = (\n selected: string | PluridUIDropdownSelectable,\n ) => {\n if (_selectAtHover) {\n select(selected);\n }\n }\n\n const handleFiltering = (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const {\n value,\n } = event.target;\n\n const filterValue = value.toLowerCase();\n\n const filteredSelectables = selectables.filter(selectable => {\n if (typeof selectable === 'string') {\n const filterSelectable = selectable.toLowerCase();\n\n if (selectable.toLowerCase().startsWith(filterValue)) {\n return true;\n }\n\n const split = filterSelectable.split(' ');\n\n for (const element of split) {\n if (element.startsWith(filterValue)) {\n return true;\n }\n }\n\n return false;\n }\n\n\n const filterSelectable = selectable.value.toLowerCase();\n\n if (filterSelectable.startsWith(filterValue)) {\n return true;\n }\n\n const split = filterSelectable.split(' ');\n\n for (const element of split) {\n if (element.startsWith(filterValue)) {\n return true;\n }\n }\n\n return false;\n });\n\n setFilterValue(value);\n setFilteredSelectables(filteredSelectables);\n\n itemsReferences.current = filteredSelectables.reduce((accumulator, _, index) => {\n (accumulator as any)[index] = React.createRef();\n return accumulator;\n }, {});\n }\n\n const focusFilterInput = () => {\n setTimeout(() => {\n if (filterInput.current) {\n filterInput.current.focus();\n }\n }, 100);\n }\n // #endregion handlersn\n\n\n // #region references\n const itemsReferences = useRef<Record<number, any>>(\n filteredSelectables.reduce((accumulator, _, index) => {\n (accumulator as Record<number, any>)[index] = React.createRef();\n return accumulator;\n }, {}),\n );\n // #endregion references\n\n\n // #region effects\n /** Handle Dropdown */\n useEffect(() => {\n if (!dropdownToggled) {\n setShowList(false);\n }\n }, [\n dropdownToggled,\n ]);\n\n /** Handle Level */\n useEffect(() => {\n if (_level === 2) {\n setSelectedBackgroundColor(interactionTheme.backgroundColorSecondary);\n } else {\n setSelectedBackgroundColor(interactionTheme.backgroundColorTertiary);\n }\n }, [\n _level,\n interactionTheme,\n ]);\n\n /** Handle Themes */\n useEffect(() => {\n const generalTheme = generalThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : generalThemeProperty;\n\n const interactionTheme = interactionThemeProperty === undefined\n ? themeProperty === undefined\n ? plurid\n : themeProperty\n : interactionThemeProperty;\n\n setGeneralTheme(generalTheme);\n setInteractionTheme(interactionTheme);\n }, [\n themeProperty,\n generalThemeProperty,\n interactionThemeProperty,\n ]);\n\n /**\n * Handle Arrows.\n */\n useEffect(() => {\n const scrollTo = (\n index: number,\n ) => {\n if (itemsReferences.current[index].current) {\n itemsReferences.current[index].current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n }\n\n const handleArrows = (\n event: KeyboardEvent,\n ) => {\n if (event.key === 'ArrowUp') {\n const newIndex = arrowIndex - 1;\n\n if (newIndex >= 0) {\n setArrowIndex(newIndex);\n scrollTo(newIndex);\n }\n }\n\n if (event.key === 'ArrowDown') {\n const newIndex = arrowIndex + 1;\n\n if (newIndex < filteredSelectables.length) {\n setArrowIndex(newIndex);\n scrollTo(newIndex);\n }\n }\n\n if (event.key === 'Enter') {\n const selected = filteredSelectables[arrowIndex];\n\n if (selected) {\n atSelect(selected);\n setArrowIndex(-1);\n\n if (_hideAtSelect) {\n setShowList(false);\n }\n }\n }\n }\n\n const handleScroll = () => {\n setArrowIndex(-1);\n }\n\n if (showList) {\n window.addEventListener('keydown', handleArrows);\n window.addEventListener('wheel', handleScroll);\n } else {\n setArrowIndex(-1);\n }\n\n return () => {\n if (showList) {\n window.removeEventListener('keydown', handleArrows);\n window.removeEventListener('wheel', handleScroll);\n }\n }\n }, [\n arrowIndex,\n showList,\n ]);\n\n /**\n * Is mounted.\n */\n useEffect(() => {\n return () => {\n isMounted.current = false;\n }\n }, []);\n\n /**\n * Selectables update.\n */\n useEffect(() => {\n setFilteredSelectables(\n [\n ...selectables,\n ],\n );\n }, [\n selectables.length,\n ]);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledDropdown\n theme={interactionTheme}\n left={left}\n style={{...style}}\n className={className}\n >\n <StyledDropdownSelected\n onClick={() => {\n setShowList(!showList);\n\n if (setDropdownToggled) {\n setDropdownToggled(kind);\n }\n\n if (!showList && filterable) {\n focusFilterInput();\n }\n }}\n theme={generalTheme}\n selectedColor={selectedColor}\n >\n {typeof selected === 'string'\n ? selected\n : selected.value\n }\n {_dropdownSign && (\n <>\n &nbsp;{_dropdownSign}\n </>\n )}\n </StyledDropdownSelected>\n\n {showList && (\n <StyledDropdownList\n theme={interactionTheme}\n left={left}\n listTop={listTop}\n level={_level}\n heightItems={heightItems && filterable && filteredSelectables.length < heightItems\n ? filteredSelectables.length + 1\n : heightItems\n }\n heightBeyond={filteredSelectables.length > (heightItems || 0)}\n width={width}\n >\n <ul>\n {filterable && (\n <li\n style={{\n backgroundColor: interactionTheme.backgroundColorTertiary,\n boxShadow: interactionTheme.boxShadowPenumbraInset,\n }}\n >\n <StyledFilterable\n left={left}\n >\n {filterUpdate\n && showFilterUpdate\n && (\n <StyledFilterUpdate\n left={left}\n >\n <PluridIconReset\n theme={interactionTheme}\n atClick={() => {\n setShowFilterUpdate(false);\n filterUpdate();\n\n setTimeout(() => {\n if (!isMounted.current) {\n return;\n }\n\n setShowFilterUpdate(true);\n }, 5300);\n }}\n />\n </StyledFilterUpdate>\n )}\n\n <Textline\n ref={filterInput}\n theme={interactionTheme}\n text={filterValue}\n atChange={handleFiltering}\n devisible={true}\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n style={{\n padding: !!filterUpdate\n ? left\n ? '0 1.3rem 0 0'\n : '0 0 0 1.3rem'\n : '0'\n }}\n />\n </StyledFilterable>\n </li>\n )}\n\n {filteredSelectables.map((selectable, index) => {\n let selectableID = typeof selectable === 'string'\n ? selectable\n : selectable.id;\n let selectableValue = typeof selectable === 'string'\n ? selectable\n : selectable.value;\n\n let isSelected = false;\n if (typeof selected === 'string') {\n if (selected === selectableID) {\n isSelected = true;\n }\n } else {\n if (selected.id === selectableID) {\n isSelected = true;\n }\n }\n\n if (arrowIndex === index) {\n isSelected = true;\n }\n\n return (\n <li\n ref={itemsReferences.current[index]}\n key={selectableID}\n onClick={() => handleSelect(selectable)}\n onMouseEnter={() => handleHover(selectable)}\n style={{\n backgroundColor: isSelected\n ? selectedBackgroundColor\n : '',\n }}\n >\n {selectableValue}\n </li>\n );\n })}\n </ul>\n </StyledDropdownList>\n )}\n </StyledDropdown>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Dropdown;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledEntityPill {\n theme: Theme;\n}\n\nexport const StyledEntityPill = styled.div<IStyledEntityPill>`\n background-color: ${\n ({\n theme,\n }: IStyledEntityPill) => theme.backgroundColorTertiary\n };\n box-shadow: ${\n ({\n theme,\n }: IStyledEntityPill) => theme.boxShadowUmbra\n };\n\n padding: 0.5rem 1rem;\n margin: 0.5rem;\n border-radius: 20px;\n\n display: flex;\n align-items: center;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n plurid as pluridTheme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconDelete,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledEntityPill,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface EntityPillProperties {\n // #region required\n // #region values\n id: string;\n // #endregion values\n\n // #region methods\n remove: (\n id: string,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n text?: string;\n theme?: Theme;\n style?: React.CSSProperties;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst EntityPill: React.FC<EntityPillProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n id,\n // #endregion values\n\n // #region methods\n remove,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n text,\n theme,\n style,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const textValue = text || id;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledEntityPill\n theme={theme || pluridTheme}\n style={{\n ...style,\n }}\n >\n <div\n style={{\n marginRight: '0.5rem',\n }}\n >\n {textValue}\n </div>\n\n <PluridIconDelete\n theme={theme}\n atClick={() => remove(id)}\n />\n </StyledEntityPill>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default EntityPill;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledEntityPillGroup {\n theme: Theme;\n}\n\nexport const StyledEntityPillGroup = styled.div<IStyledEntityPillGroup>`\n display: flex;\n flex-flow: wrap;\n margin: 0 auto;\n justify-content: center;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n plurid as pluridTheme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n PluridUIEntityPillData,\n } from '~data/interfaces';\n\n import EntityPill from '~components/universal/inputs/EntityPill';\n // #endregion external\n\n\n // #region internal\n import {\n StyledEntityPillGroup,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface EntityPillGroupProperties {\n // #region required\n // #region values\n entities: (string | PluridUIEntityPillData)[];\n // #endregion values\n\n // #region methods\n remove: (\n id: string,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n keyFix?: string;\n theme?: Theme;\n style?: React.CSSProperties;\n pillStyle?: React.CSSProperties;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst EntityPillGroup: React.FC<EntityPillGroupProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n entities,\n // #endregion values\n\n // #region methods\n remove,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n keyFix,\n theme,\n style,\n pillStyle,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledEntityPillGroup\n theme={theme}\n style={{\n ...style,\n }}\n >\n {entities.map(entity => {\n const stringEntity = typeof entity === 'string';\n const id = stringEntity ? entity : entity.id;\n const text = stringEntity ? undefined : entity.text;\n\n return (\n <EntityPill\n key={`entity-pill-${id}${keyFix || ''}`}\n\n id={id}\n text={text}\n\n remove={remove}\n\n theme={theme || pluridTheme}\n style={pillStyle}\n />\n );\n })}\n </StyledEntityPillGroup>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default EntityPillGroup;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputDescriptor {\n theme: Theme;\n}\n\nexport const StyledInputDescriptor = styled.div<IStyledInputDescriptor>`\n text-align: left;\n font-size: 0.9rem;\n line-height: 1;\n min-height: 1.1rem;\n margin-top: 1.3rem;\n margin-bottom: 0.4rem;\n margin-left: 0.9rem;\n\n font-family: ${\n ({\n theme,\n }: IStyledInputDescriptor) => theme.fontFamilySansSerif\n };\n color: ${\n ({\n theme,\n }: IStyledInputDescriptor) => theme.colorPrimary\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledInputDescriptor,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputDescriptorProperties {\n // #region required\n // #region values\n name: string;\n show: boolean;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst InputDescriptor: React.FC<InputDescriptorProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n show,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputDescriptor\n theme={theme}\n className={className}\n style={{\n ...style,\n }}\n >\n {show && (\n <>\n {name}\n </>\n )}\n </StyledInputDescriptor>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputDescriptor;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputBox {\n theme: Theme;\n}\n\nexport const StyledInputBox = styled.div<IStyledInputBox>`\n textarea {\n box-sizing: border-box;\n width: 100%;\n min-height: 5rem;\n resize: vertical;\n outline: none;\n border: none;\n padding: 0.9rem;\n font-size: 0.8rem;\n border-radius: 0.9rem;\n line-height: 1.5;\n\n font-family: ${\n ({\n theme,\n }: IStyledInputBox) => theme.fontFamilySansSerif\n };\n color: ${\n ({\n theme,\n }: IStyledInputBox) => theme.colorPrimary\n };\n background-color: ${\n ({\n theme,\n }: IStyledInputBox) => theme.backgroundColorTertiary\n };\n box-shadow: inset 0px 4px 4px ${\n ({\n theme,\n }: IStyledInputBox) => theme.boxShadowUmbraColor\n };\n\n\n ::placeholder {\n color: ${\n ({\n theme,\n }: IStyledInputBox) => theme.colorSecondary\n };\n }\n }\n`;\n\n\nexport interface IStyledTextBox {\n theme: Theme;\n}\n\nexport const StyledTextBox = styled.div<IStyledTextBox>`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridInputDescriptor from '../InputDescriptor';\n // #endregion external\n\n\n // #region internal\n import {\n StyledInputBox,\n StyledTextBox,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputBoxProperties {\n // #region required\n // #region values\n name: string;\n text: string;\n // #endregion values\n\n // #region methods\n atChange: (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n atKeyDown?: (\n event: React.KeyboardEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst InputBox: React.FC<InputBoxProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n name,\n // #endregion values\n\n // #region methods\n atChange,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n atKeyDown,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputBox\n theme={theme}\n className={className}\n style={{\n ...style,\n }}\n >\n <PluridInputDescriptor\n name={name}\n show={text !== ''}\n theme={theme}\n />\n\n <StyledTextBox\n theme={theme}\n >\n <textarea\n value={text}\n placeholder={name}\n onChange={(event) => atChange(event as any)}\n onKeyDown={(event) => atKeyDown ? atKeyDown(event as any) : null}\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n />\n </StyledTextBox>\n </StyledInputBox>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputBox;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputLine {\n theme: Theme;\n}\n\nexport const StyledInputLine = styled.div<IStyledInputLine>`\n width: 350px;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridInputDescriptor from '../InputDescriptor';\n\n import PluridTextline, {\n TextlineProperties,\n } from '../Textline';\n // #endregion external\n\n\n // #region internal\n import {\n StyledInputLine,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputLineProperties {\n // #region required\n // #region values\n name: string;\n text: string;\n // #endregion values\n\n // #region methods\n atChange: (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n type?: 'text' | 'password';\n error?: boolean;\n textline?: Partial<TextlineProperties>;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n atKeyDown?: (\n event: React.KeyboardEvent<HTMLInputElement>,\n ) => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst InputLine: React.FC<InputLineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n text,\n // #endregion values\n\n // #region methods\n atChange,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n type,\n error,\n textline,\n style,\n className,\n // #endregion values\n\n // #region methods\n atKeyDown,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputLine\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n <PluridInputDescriptor\n name={name}\n show={text !== ''}\n theme={theme}\n />\n\n <PluridTextline\n text={text}\n type={type}\n placeholder={name}\n\n theme={theme}\n level={2}\n error={error}\n\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n\n atChange={atChange}\n atKeyDown={atKeyDown}\n\n {...textline}\n />\n </StyledInputLine>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSwitch: any = styled.label`\n position: relative;\n display: inline-block;\n width: 60px;\n height: 34px;\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n`;\n\n\nconst levelBackgroundColor = (\n props: any,\n) => {\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n}\n\nconst backgroundColor = (\n props: any,\n) => {\n if (props.accent) {\n return props.accent;\n }\n\n if (props.exclusive && !props.checked) {\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimaryAlpha;\n case 1:\n return props.theme.backgroundColorSecondaryAlpha;\n case 2:\n return props.theme.backgroundColorTertiaryAlpha;\n case 3:\n return props.theme.backgroundColorQuaternaryAlpha;\n default:\n return props.theme.backgroundColorPrimaryAlpha;\n }\n }\n\n return levelBackgroundColor(props);\n}\n\n\nexport const StyledSwitchSlider: any = styled.span`\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: .4s ease-in-out;\n box-shadow: inset 0 2px 3px black;\n\n background-color: ${(props: any) => {\n return backgroundColor(props);\n }};\n border-radius: ${(props: any) => {\n if (props.round) {\n return '34px';\n }\n return '0';\n }};\n\n :before {\n position: absolute;\n content: \"\";\n height: 26px;\n width: 26px;\n left: 4px;\n bottom: 4px;\n transition: .4s;\n\n background-color: ${(props: any) => {\n return props.theme.colorPrimary;\n }};\n border-radius: ${(props: any) => {\n if (props.round) {\n return '50%';\n }\n return '0';\n }};\n transform: ${(props: any) => {\n if (props.checked) {\n return 'translateX(26px)';\n }\n return 'translateX(0px)';\n }};\n }\n`;\n\n\nexport const StyledSwitchIcon: any = styled.div`\n height: 100%;\n position: absolute;\n top: 0;\n display: flex;\n align-items: center;\n transition: .4s;\n\n svg {\n fill: ${(props: any) => {\n return levelBackgroundColor(props);\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledSwitch,\n StyledSwitchSlider,\n StyledSwitchIcon,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface SwitchProperties {\n checked: boolean;\n\n theme?: Theme;\n level?: number;\n round?: boolean;\n exclusive?: boolean;\n accent?: string;\n Icon?: React.FC<any>;\n\n atChange: () => void;\n}\n\nconst Switch: React.FC<SwitchProperties> = (\n properties,\n) => {\n // #region properties\n const {\n checked,\n\n theme,\n level,\n round,\n exclusive,\n accent,\n Icon,\n\n atChange,\n } = properties;\n\n const _theme = theme || pluridTheme;\n\n const _level = level === undefined\n ? 0\n : level;\n\n const _round = round === undefined\n ? true\n : round;\n\n const commonProperties = {\n theme: _theme,\n level: _level,\n exclusive,\n checked,\n accent,\n };\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSwitch\n theme={_theme}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={() => atChange()}\n />\n\n <StyledSwitchSlider\n round={_round}\n {...commonProperties}\n />\n\n {Icon && (\n <StyledSwitchIcon\n {...commonProperties}\n style={{\n left: checked ? '35px' : '9px',\n }}\n >\n <Icon />\n </StyledSwitchIcon>\n )}\n </StyledSwitch>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Switch;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledInputSwitch {\n compact?: boolean;\n}\n\nexport const StyledInputSwitch = styled.div<IStyledInputSwitch>`\n font-size: 0.9rem;\n\n margin-top: ${\n ({\n compact,\n }: IStyledInputSwitch) => {\n if (compact) {\n return '1rem';\n }\n\n return '2.2rem';\n }\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import PluridSwitch, {\n SwitchProperties,\n } from '../Switch';\n import PluridFormLeftRight from '../../form/FormLeftRight';\n // #endregion external\n\n\n // #region internal\n import {\n StyledInputSwitch,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface InputSwitchProperties {\n // #region required\n // #region values\n name: string;\n checked: boolean;\n // #endregion values\n\n // #region methods\n atChange: () => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme?: Theme;\n compact?: boolean;\n switch?: SwitchProperties;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst InputSwitch: React.FC<InputSwitchProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n checked,\n // #endregion values\n\n // #region methods\n atChange,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n compact,\n switch: switchProperties,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledInputSwitch\n compact={compact}\n style={{\n ...style,\n }}\n className={className}\n >\n <PluridFormLeftRight>\n <div\n style={{\n marginLeft: '0.9rem',\n }}\n >\n {name}\n </div>\n\n <PluridSwitch\n checked={checked}\n level={2}\n exclusive={true}\n theme={theme}\n atChange={() => atChange()}\n {...switchProperties}\n />\n </PluridFormLeftRight>\n </StyledInputSwitch>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default InputSwitch;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledItemsline {\n theme: Theme,\n level: number;\n left: boolean;\n}\n\nexport const StyledItemsline = styled.div<IStyledItemsline>`\n padding: 0 0.7rem;\n font-size: 0.9rem;\n\n ul {\n list-style: none;\n padding: 0;\n margin-top: 0.4rem;\n margin-bottom: 0.8rem;\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n flex-direction: ${(props: IStyledItemsline) => {\n if (props.left) {\n return 'row';\n }\n return 'row-reverse';\n }};\n }\n\n li {\n margin: 0 0.3rem;\n cursor: pointer;\n user-select: none;\n line-height: 1.2rem;\n\n :hover {\n text-decoration: line-through;\n }\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import themes, {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledItemsline,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ItemslineProperties {\n items: string[];\n removeItem: (item: string) => void;\n\n theme?: Theme;\n level?: number;\n left?: boolean;\n\n style?: React.CSSProperties;\n className?: string;\n}\n\n/**\n * Renders an icon and a descriptive text.\n *\n * @param properties\n */\nconst Itemsline: React.FC<ItemslineProperties> = (properties) => {\n const {\n /** required */\n items,\n removeItem,\n\n /** optional */\n theme,\n level,\n left,\n\n style,\n className,\n } = properties;\n\n const _theme = theme === undefined\n ? themes.plurid\n : theme;\n\n const _level = level === undefined\n ? 0\n : level;\n\n const _left = left === undefined\n ? false\n : left;\n\n return (\n <StyledItemsline\n style={{...style}}\n className={className}\n theme={_theme}\n level={_level}\n left={_left}\n >\n {items.length > 0 && (\n <ul>\n {items.map(item => {\n return (\n <li\n key={item + Math.random()}\n onClick={() => removeItem(item)}\n >\n {item}\n </li>\n );\n })}\n </ul>\n )}\n </StyledItemsline>\n );\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Itemsline;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSelect: any = styled.div`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledSelect,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface PluridSelectProperties {\n selectables: string[];\n atChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n\n theme?: Theme;\n level?: number;\n devisible?: boolean;\n round?: boolean;\n width?: string | number;\n}\n\n/**\n * @param selectables `string[]`\n * @param atChange `(event: React.ChangeEvent<HTMLInputElement>) => void`\n *\n * @param theme optional - `Theme`\n * @param level optional - `number`\n * @param devisible optional - `boolean`\n * @param round optional - `boolean`\n * @param width optional - `string | number`\n */\nconst PluridSelect: React.FC<PluridSelectProperties> = (\n properties,\n) => {\n // #region properties\n const {\n selectables,\n atChange,\n\n theme,\n level,\n devisible,\n round,\n width,\n } = properties;\n\n const _theme = theme || pluridTheme;\n const _level = level ?? 0;\n const _round = round ?? true;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSelect\n theme={_theme}\n level={_level}\n devisible={devisible}\n round={_round}\n width={width}\n >\n <select>\n {selectables.map(selectable => {\n return (\n <option\n key={selectable}\n value={selectable}\n >\n {selectable}\n </option>\n );\n })}\n </select>\n </StyledSelect>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default PluridSelect;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSlider: any = styled.div`\n display: grid;\n align-items: center;\n font-family: ${(props: any) => props.theme.fontFamilySansSerif };\n grid-template-columns: 1fr;\n grid-template-rows: auto;\n\n width: ${(props: any) => {\n if (props.width) {\n if (typeof props.width === 'string') {\n return props.width;\n }\n return props.width + 'px';\n }\n return '100px';\n }};\n`;\n\n\nexport const StyledNamedValue: any = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 0.8rem;\n line-height: 16px;\n user-select: none;\n`;\n\n\nexport const StyledSliderValue = styled.div`\n user-select: none;\n font-size: 0.8rem;\n min-width: 1.6rem;\n text-align: right;\n`;\n\n\nexport const StyledSliderInputContainer: any = styled.div`\n width: ${(props: any) => {\n if (props.width) {\n if (typeof props.width === 'string') {\n return props.width;\n }\n return props.width + 'px';\n }\n return '100px';\n }};\n\n /*\n article: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/\n tool: http://danielstern.ca/range.css/\n */\n input[type=range] {\n -webkit-appearance: none;\n width: 100%;\n margin: 2px 0;\n padding: 10px 0;\n background: transparent;\n cursor: pointer;\n }\n\n input[type=range]:focus {\n outline: none;\n }\n\n input[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 2px;\n cursor: pointer;\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-webkit-slider-thumb {\n border: 2px solid ${(props: any) => props.theme.colorPrimary };\n height: ${(props: any) => {\n switch (props.thumbSize) {\n case 'small':\n return '14px';\n case 'normal':\n return '20px';\n case 'large':\n return '26px';\n default:\n return '26px';\n }\n }};\n width: ${(props: any) => {\n switch (props.thumbSize) {\n case 'small':\n return '14px';\n case 'normal':\n return '20px';\n case 'large':\n return '26px';\n default:\n return '26px';\n }\n }};\n background: ${(props: any) => {\n if (props.hovered) {\n return props.theme.colorPrimary;\n }\n\n switch (props.level) {\n case 0:\n return props.theme.backgroundColorPrimary;\n case 1:\n return props.theme.backgroundColorSecondary;\n case 2:\n return props.theme.backgroundColorTertiary;\n case 3:\n return props.theme.backgroundColorQuaternary;\n default:\n return props.theme.backgroundColorPrimary;\n }\n }};\n margin-top: ${(props: any) => {\n switch (props.thumbSize) {\n case 'small':\n return '-6px';\n case 'normal':\n return '-9px';\n case 'large':\n return '-12px';\n default:\n return '-12px';\n }\n }};\n border-radius: 50px;\n cursor: pointer;\n -webkit-appearance: none;\n }\n\n input[type=range]:focus::-webkit-slider-runnable-track {\n background: ${(props: any) => props.theme.colorPrimary };\n }\n\n input[type=range]::-moz-range-track {\n width: 100%;\n height: 2px;\n cursor: pointer;\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-moz-range-thumb {\n border: 2px solid ${(props: any) => props.theme.colorPrimary };\n height: 15px;\n width: 15px;\n border-radius: 50px;\n background: ${(props: any) => {\n if (props.hovered) {\n return props.theme.colorPrimary;\n }\n\n // return '#384158';\n return props.theme.backgroundColorTertiary;\n }};\n cursor: pointer;\n }\n\n input[type=range]::-ms-track {\n width: 100%;\n height: 2px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n }\n\n input[type=range]::-ms-fill-lower {\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-ms-fill-upper {\n background: ${(props: any) => props.theme.colorPrimary };\n border-radius: 0px;\n }\n\n input[type=range]::-ms-thumb {\n border: 2px solid ${(props: any) => props.theme.colorPrimary };\n height: 15px;\n width: 15px;\n border-radius: 50px;\n background: ${(props: any) => {\n if (props.hovered) {\n return props.theme.colorPrimary;\n }\n\n // return '#384158';\n return props.theme.backgroundColorTertiary;\n }};\n cursor: pointer;\n height: 2px;\n }\n\n input[type=range]:focus::-ms-fill-lower {\n background: ${(props: any) => props.theme.colorPrimary };\n }\n\n input[type=range]:focus::-ms-fill-upper {\n background: ${(props: any) => props.theme.colorPrimary };\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledSlider,\n StyledNamedValue,\n StyledSliderInputContainer,\n StyledSliderValue,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst DEFAULT_VALUE = 0;\nconst DEFAULT_MIN = 0;\nconst DEFAULT_MAX = 100;\nconst DEFAULT_STEP = 1;\nconst DEFAULT_LEVEL = 0;\nconst DEFAULT_THUMB_SIZE = 'large';\n\nexport interface SliderProperties {\n value: number;\n atChange: (value: number) => void;\n\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n name?: string;\n theme?: Theme;\n level?: number;\n thumbSize?: 'small' | 'normal' | 'large';\n width?: number | string;\n valueSign?: string;\n namedValueAbove?: boolean;\n}\n\nconst Slider: React.FC<SliderProperties> = (\n properties,\n) => {\n // #region properties\n const {\n value,\n atChange,\n\n defaultValue,\n min,\n max,\n step,\n name,\n theme,\n level,\n thumbSize,\n width,\n valueSign,\n namedValueAbove,\n } = properties;\n\n const [mouseOver, setMouseOver] = useState(false);\n\n const _theme = theme || pluridTheme;\n\n const _level = level === undefined\n ? DEFAULT_LEVEL\n : level;\n\n const _thumbSize = thumbSize === undefined\n ? DEFAULT_THUMB_SIZE\n : thumbSize;\n\n const _step = step === undefined\n ? DEFAULT_STEP\n : step;\n // #endregion properties\n\n\n // #region handlers\n const handleDoubleClick = () => {\n atChange(defaultValue || DEFAULT_VALUE);\n }\n\n const handleSliderInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n atChange(parseFloat(event.target.value));\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledSlider\n theme={_theme}\n width={width}\n >\n {namedValueAbove && (\n <StyledNamedValue>\n <div>\n {name}\n </div>\n\n <StyledSliderValue\n theme={_theme}\n >\n {value}{valueSign}\n </StyledSliderValue>\n </StyledNamedValue>\n )}\n\n <StyledSliderInputContainer\n theme={_theme}\n hovered={mouseOver}\n thumbSize={_thumbSize}\n level={_level}\n width={width}\n >\n <input\n type=\"range\"\n min={min || DEFAULT_MIN}\n max={max || DEFAULT_MAX}\n name={name || ''}\n value={value}\n step={_step}\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n onMouseMove={() => mouseOver ? setMouseOver(true) : null}\n onChange={handleSliderInput}\n onDoubleClick={handleDoubleClick}\n />\n </StyledSliderInputContainer>\n </StyledSlider>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Slider;\n// #endregion exports\n","// #region imports\n // #region internal\n import Dropdown from './Dropdown';\n import EntityPill from './EntityPill';\n import EntityPillGroup from './EntityPillGroup';\n import InputBox from './InputBox';\n import InputDescriptor from './InputDescriptor';\n import InputLine from './InputLine';\n import InputSwitch from './InputSwitch';\n import Itemsline from './Itemsline';\n import Select from './Select';\n import Slider from './Slider';\n import Switch from './Switch';\n import Textline from './Textline';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst inputs = {\n Dropdown,\n EntityPill,\n EntityPillGroup,\n InputBox,\n InputDescriptor,\n InputLine,\n InputSwitch,\n Itemsline,\n Select,\n Slider,\n Switch,\n Textline,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default inputs;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledHR {\n theme: Theme;\n}\n\nexport const StyledHR = styled.hr<IStyledHR>`\n outline: 0;\n border: 0;\n margin: 0.8rem auto;\n height: 1px;\n\n background-color: ${\n ({\n theme,\n }: IStyledHR) => theme.colorPrimary\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledHR,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface HRProperties {\n // #region optional\n // #region values\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n // #endregion optional\n}\n\nconst HR: React.FC<HRProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region optional\n // #region values\n theme,\n style,\n className,\n // #endregion values\n // #endregion optional\n } = properties;\n\n const themeValue = theme || pluridTheme;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledHR\n theme={themeValue}\n style={{\n ...style,\n }}\n className={className}\n />\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default HR;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledProgressCircle {\n size: Sizes;\n}\n\nexport const StyledProgressCircle = styled.div<IStyledProgressCircle>`\n height: 0;\n width: 0;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n margin: 10px;\n\n svg {\n transform: translateX(-50%) translateY(-50%);\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n mathematics,\n } from '@plurid/plurid-functions';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n\n\n // #region internal\n import {\n StyledProgressCircle,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ProgressCircleProperties {\n // #region required\n // #region values\n progress: number;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n size?: Sizes;\n radius?: number;\n stroke?: number;\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst ProgressCircle: React.FC<ProgressCircleProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n progress,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n size,\n radius,\n stroke,\n theme,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const progressValue = mathematics.numbers.normalizeBetween(\n progress, 0, 100,\n );\n const radiusValue = radius || 20;\n const diameter = radiusValue * 2;\n const strokeValue = stroke || 3;\n\n const normalizedRadius = radiusValue - strokeValue * 2;\n const circumference = normalizedRadius * 2 * Math.PI;\n const strokeDashoffset = circumference - progressValue / 100 * circumference;\n\n const themeValue = theme || pluridTheme;\n const sizeValue = size || 'normal';\n // #endregion properties\n\n\n // #region render\n return (\n <StyledProgressCircle\n size={sizeValue}\n style={{\n ...style,\n }}\n className={className}\n >\n <svg\n height={diameter}\n width={diameter}\n >\n <circle\n stroke={themeValue.backgroundColorPrimaryAlpha}\n fill=\"transparent\"\n strokeWidth={strokeValue}\n r={normalizedRadius}\n cx={radiusValue}\n cy={radiusValue}\n />\n <circle\n stroke={themeValue.colorPrimary}\n fill=\"transparent\"\n strokeWidth={strokeValue}\n strokeDasharray={circumference + ' ' + circumference}\n style={{strokeDashoffset}}\n r={normalizedRadius}\n cx={radiusValue}\n cy={radiusValue}\n />\n </svg>\n </StyledProgressCircle>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default ProgressCircle;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledTooltip {\n theme: Theme;\n}\n\nexport const StyledTooltip = styled.span<IStyledTooltip>`\n position: relative;\n`;\n\n\nexport const StyledTooltipString = styled.span`\n`;\n\n\nexport interface StyledTooltipIcon {\n theme: Theme;\n}\n\nexport const StyledTooltipIcon = styled.span<StyledTooltipIcon>`\n user-select: none;\n cursor: pointer;\n\n display: inline-grid;\n margin: 0 5px;\n place-content: center;\n height: 20px;\n width: 20px;\n border-radius: 20px;\n font-size: 12px;\n line-height: 1.4;\n text-align: left;\n\n font-family: ${(props: StyledTooltipIcon) => {\n return props.theme.fontFamilySansSerif;\n }};\n color: ${(props: StyledTooltipIcon) => {\n return props.theme.colorPrimary;\n }};\n background-color: ${(props: StyledTooltipIcon) => {\n return props.theme.backgroundColorSecondary;\n }};\n`;\n\n\nexport interface IStyledTooltipText {\n theme: Theme;\n indicator: boolean;\n}\n\nexport const StyledTooltipText = styled.div<IStyledTooltipText>`\n position: absolute;\n top: 30px;\n left: 50%;\n transform: translateX(-50%);\n border-radius: 2px;\n z-index: 999;\n padding: 20px;\n min-width: 150px;\n font-size: 12px;\n line-height: 1.3;\n text-align: left;\n\n color: ${(props: IStyledTooltipText) => {\n return props.theme.colorPrimary;\n }};\n background-color: ${(props: IStyledTooltipText) => {\n return props.theme.backgroundColorSecondary;\n }};\n box-shadow: ${(props: IStyledTooltipText) => {\n return props.theme.boxShadowUmbra;\n }};\n\n :before {\n content: '';\n position: absolute;\n top: -10px;\n left: 50%;\n transform: translateX(-50%);\n border-left: ${(props: IStyledTooltipText) => {\n if (props.indicator) {\n return '10px';\n }\n return '0';\n }} solid transparent;\n border-right: ${(props: IStyledTooltipText) => {\n if (props.indicator) {\n return '10px';\n }\n return '0';\n }} solid transparent;\n border-bottom: ${(props: IStyledTooltipText) => {\n if (props.indicator) {\n return '10px';\n }\n return '0';\n }} solid ${(props: IStyledTooltipText) => {\n return props.theme.backgroundColorSecondary;\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n useMounted,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledTooltip,\n StyledTooltipString,\n StyledTooltipIcon,\n StyledTooltipText,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface TooltipProperties {\n tool: string | React.FC<any>;\n tip: string | React.FC<any>;\n\n indicator?: boolean;\n /**\n * Render the `tool` as a circle.\n */\n icon?: boolean;\n\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** required */\n tool: Tool,\n tip: Tip,\n\n /** optional */\n indicator: indicatorProperty,\n icon: iconProperty,\n\n theme: themeProperty,\n style,\n className,\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const indicator = indicatorProperty ?? true;\n const icon = iconProperty ?? true;\n // #endregion properties\n\n\n // #region references\n const mounted = useMounted();\n const hoverOutTimeout = useRef<NodeJS.Timeout | null>(null);\n // #endregion references\n\n\n // #region state\n const [mouseOver, setMouseOver] = useState(false);\n const [showTooltipText, setShowTooltipText] = useState(false);\n // #endregion state\n\n\n // #region effects\n useEffect(() => {\n if (!mounted) {\n return;\n }\n\n if (mouseOver) {\n setShowTooltipText(true);\n }\n\n if (!mouseOver) {\n hoverOutTimeout.current = setTimeout(\n () => {\n if (!mounted) {\n return;\n }\n\n setShowTooltipText(false);\n },\n 500,\n );\n }\n\n return () => {\n if (hoverOutTimeout.current) {\n clearTimeout(hoverOutTimeout.current);\n }\n }\n }, [\n mouseOver,\n ]);\n // #endregion effects\n\n\n // #region render\n const renderTool = (\n <>\n {typeof Tool === 'string' ? (\n <>{Tool}</>\n ) : (\n <Tool />\n )}\n </>\n );\n\n return (\n <StyledTooltip\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n onMouseMove={() => !showTooltipText ? setMouseOver(true) : null}\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n {icon && (\n <StyledTooltipIcon\n theme={theme}\n >\n {renderTool}\n </StyledTooltipIcon>\n )}\n\n {!icon && (\n <StyledTooltipString>\n {renderTool}\n </StyledTooltipString>\n )}\n\n {showTooltipText && (\n <StyledTooltipText\n theme={theme}\n indicator={indicator}\n >\n {typeof Tip === 'string'\n ? (\n <>{Tip}</>\n ) : (\n <Tip />\n )}\n </StyledTooltipText>\n )}\n </StyledTooltip>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Tooltip;\n// #endregion exports\n","// #region imports\n // #region internal\n import HR from './HR';\n import ProgressCircle from './ProgressCircle';\n import Spinner from './Spinner';\n import Tooltip from './Tooltip';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst markers = {\n HR,\n ProgressCircle,\n Spinner,\n Tooltip,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default markers;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledHeading1: any = styled.h1`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 2.2rem;\n margin: 1.4rem 0;\n`;\n\n\nexport const StyledHeading2: any = styled.h2`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 2rem;\n margin: 1.2rem 0;\n`;\n\n\nexport const StyledHeading3: any = styled.h3`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.8rem;\n margin: 1rem 0;\n`;\n\n\nexport const StyledHeading4: any = styled.h4`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.6rem;\n margin: 1rem 0;\n`;\n\n\nexport const StyledHeading5: any = styled.h5`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.4rem;\n margin: 1rem 0;\n`;\n\n\nexport const StyledHeading6: any = styled.h5`\n color: ${props => props.theme.colorPrimary};\n font-family: ${props => props.theme.fontFamilySansSerif};\n font-size: 1.2rem;\n margin: 1rem 0;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledHeading1,\n StyledHeading2,\n StyledHeading3,\n StyledHeading4,\n StyledHeading5,\n StyledHeading6,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface HeadingProperties {\n // #region optional\n // #region values\n theme?: Theme;\n type?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst Heading: React.FC<React.PropsWithChildren<HeadingProperties>> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n children,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n type: typeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const type = typeProperty || 'h1';\n // #endregion properties\n\n\n // #region render\n const renderProperties = {\n theme,\n style,\n className,\n };\n\n switch (type) {\n case 'h1':\n return (\n <StyledHeading1\n {...renderProperties}\n >\n {children}\n </StyledHeading1>\n );\n case 'h2':\n return (\n <StyledHeading2\n {...renderProperties}\n >\n {children}\n </StyledHeading2>\n );\n case 'h3':\n return (\n <StyledHeading3\n {...renderProperties}\n >\n {children}\n </StyledHeading3>\n );\n case 'h4':\n return (\n <StyledHeading4\n {...renderProperties}\n >\n {children}\n </StyledHeading4>\n );\n case 'h5':\n return (\n <StyledHeading5\n {...renderProperties}\n >\n {children}\n </StyledHeading5>\n );\n case 'h6':\n return (\n <StyledHeading6\n {...renderProperties}\n >\n {children}\n </StyledHeading6>\n );\n default:\n return (\n <StyledHeading1\n {...renderProperties}\n >\n {children}\n </StyledHeading1>\n );\n }\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Heading;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Sizes,\n } from '~data/interfaces';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledParagraph {\n theme: Theme;\n size: Sizes;\n fontFamily: 'sans-serif' | 'serif';\n}\n\nexport const StyledParagraph: any = styled.p<IStyledParagraph>`\n color: ${props => props.theme.colorPrimary};\n font-family: ${(props: IStyledParagraph) => {\n switch (props.fontFamily) {\n case 'sans-serif':\n return props.theme.fontFamilySansSerif;\n case 'serif':\n return props.theme.fontFamilySerif;\n default:\n return props.fontFamily;\n }\n }};\n font-size: ${(props: IStyledParagraph) => {\n switch (props.size) {\n case 'small':\n return '0.8rem';\n case 'normal':\n return '1rem';\n case 'large':\n return '1.2rem';\n default:\n return '1rem';\n }\n }};\n\n margin: 1.2rem 0;\n line-height: 1.4;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledParagraph,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ParagraphProperties {\n // #region optional\n // #region values\n theme?: Theme;\n size?: 'small' | 'normal' | 'large';\n fontFamily?: 'sans-serif' | 'serif';\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst Paragraph: React.FC<React.PropsWithChildren<ParagraphProperties>> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n children,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme: themeProperty,\n size: sizeProperty,\n fontFamily: fontFamilyProperty,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || pluridTheme;\n const size = sizeProperty || 'normal';\n const fontFamily = fontFamilyProperty || 'sans-serif';\n // #endregion properties\n\n\n // #region render\n return (\n <StyledParagraph\n theme={theme}\n size={size}\n fontFamily={fontFamily}\n style={{\n ...style,\n }}\n className={className}\n >\n {children}\n </StyledParagraph>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Paragraph;\n// #endregion exports\n","// #region imports\n // #region internal\n import Heading from './Heading';\n import Paragraph from './Paragraph';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst typography = {\n Heading,\n Paragraph,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default typography;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledCopyableLine = styled.div`\n display: grid;\n align-items: center;\n grid-template-columns: 16px 1fr;\n grid-gap: 0.7rem;\n`;\n\n\nexport const StyledData = styled.div`\n user-select: all;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n clipboard,\n } from '@plurid/plurid-functions';\n\n import {\n useFalseAfterTimedTrue,\n } from '@plurid/plurid-functions-react';\n\n import {\n PluridIconCopy,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledCopyableLine,\n StyledData,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface CopyableLineProperties {\n // #region required\n // #region values\n /**\n * Data to be copied.\n */\n data: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n /**\n * Data to be shown.\n */\n theme?: Theme;\n viewData?: string;\n copyMessage?: string;\n copyMessageTime?: number;\n\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst CopyableLine: React.FC<CopyableLineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n data,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n theme,\n viewData,\n copyMessage,\n copyMessageTime,\n\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const viewDataText = viewData || data;\n const copyMessageText = copyMessage ?? 'copied';\n const copyMessageTimeValue = copyMessageTime || 2_000;\n // #endregion properties\n\n\n // #region state\n const [\n showCopyMessage,\n setShowCopyMessage,\n ] = useFalseAfterTimedTrue(copyMessageTimeValue);\n // #endregion state\n\n\n // #region render\n return (\n <StyledCopyableLine\n style={{\n ...style,\n }}\n className={className}\n >\n <PluridIconCopy\n atClick={() => {\n clipboard.copy(data);\n\n setShowCopyMessage(true);\n }}\n theme={theme}\n />\n\n <StyledData>\n {showCopyMessage ? (\n <>\n {copyMessageText}\n </>\n ) : (\n <>\n {viewDataText}\n </>\n )}\n </StyledData>\n </StyledCopyableLine>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default CopyableLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledNewPageLink {\n}\n\nexport const StyledNewPageLink = styled.a<IStyledNewPageLink>`\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledNewPageLink,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface NewPageLinkProperties {\n // #region required\n // #region values\n link: string;\n text: string | JSX.Element;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\n/**\n * Opens the `link` in new page/tab.\n *\n * @param properties\n */\nconst NewPageLink: React.FC<NewPageLinkProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n link,\n text,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledNewPageLink\n href={link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n\n style={{\n ...style,\n }}\n className={className}\n >\n {text}\n </StyledNewPageLink>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default NewPageLink;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledScrollableLine {\n}\n\nexport const StyledScrollableLine = styled.div<IStyledScrollableLine>`\n text-align: left;\n overflow: scroll;\n outline: none;\n white-space: nowrap;\n\n -ms-overflow-style: none; /* Internet Explorer 10+ */\n scrollbar-width: none; /* Firefox */\n ::-webkit-scrollbar {\n display: none; /* Safari and Chrome */\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n // #endregion libraries\n\n // #region internal\n import {\n StyledScrollableLine,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ScrollableLineProperties {\n // #region required\n // #region values\n text: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\n/**\n * Renders a horizontal scrollable line of text\n * based on the width of the container.\n *\n * @param properties\n */\nconst ScrollableLine: React.FC<ScrollableLineProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledScrollableLine\n style={{\n ...style,\n }}\n className={className}\n >\n {text}\n </StyledScrollableLine>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default ScrollableLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledTextItem = styled.div`\n display: flex;\n align-items: center;\n margin-right: 2rem;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n PluridIconInfo,\n PluridIconProperties,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledTextItem,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface TextItemProperties {\n // #region required\n // #region values\n name: string;\n render: JSX.Element;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n icon?: React.FC<PluridIconProperties>;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst TextItem: React.FC<TextItemProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n name,\n render,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n icon: IconProperty,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const Icon = IconProperty || PluridIconInfo;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledTextItem>\n <Icon\n title={name}\n inactive={true}\n style={{\n marginRight: '0.5rem',\n }}\n />\n\n {render}\n </StyledTextItem>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default TextItem;\n// #endregion exports\n","// #region imports\n // #region internal\n import CopyableLine from './CopyableLine';\n import NewPageLink from './NewPageLink';\n import ScrollableLine from './ScrollableLine';\n import TextItem from './TextItem';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst varia = {\n CopyableLine,\n NewPageLink,\n ScrollableLine,\n TextItem,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default varia;\n// #endregion exports\n","// #region imports\n // #region internal\n import buttons from './buttons';\n import form from './form';\n import general from './general';\n import inputs from './inputs';\n import markers from './markers';\n import typography from './typography';\n import varia from './varia';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst universal = {\n buttons,\n form,\n general,\n inputs,\n markers,\n typography,\n varia,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default universal;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledDashboardsRenderer {\n theme: Theme;\n compactSelectors: boolean;\n fullRenderArea: boolean;\n}\n\nexport const StyledDashboardsRenderer = styled.div<IStyledDashboardsRenderer>`\n display: grid;\n grid-template-columns: ${\n ({\n fullRenderArea,\n compactSelectors,\n }: IStyledDashboardsRenderer) => {\n if (fullRenderArea) {\n return '1fr';\n }\n\n return compactSelectors\n ? '60px auto'\n : '1fr 4fr'\n }\n };\n min-height: 700px;\n`;\n\n\nexport const StyledNoDashboardRender = styled.div`\n display: grid;\n place-content: center;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledSidebar {\n theme: Theme;\n}\n\nexport const StyledSidebar = styled.div<IStyledSidebar>`\n`;\n\n\n\nexport interface IStyledSelectors {\n theme: Theme;\n compactSelectors: boolean;\n helpItemsCount: number;\n}\n\nexport const StyledSelectors = styled.div<IStyledSelectors>`\n height: 100%;\n display: grid;\n justify-content: space-between;\n grid-template-columns: 1fr;\n grid-template-rows: ${\n ({\n helpItemsCount,\n }: IStyledSelectors) => `120px auto ${45 * helpItemsCount}px`\n };\n\n background-color: ${\n ({\n theme,\n }: IStyledSelectors) => theme.backgroundColorTertiary\n };\n box-shadow: inset -3px 0px 3px 0px ${\n ({\n theme,\n }: IStyledSelectors) => theme.boxShadowUmbraColor\n };\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n li {\n cursor: pointer;\n padding: 0.7rem 1.4rem;\n user-select: none;\n }\n`;\n\n\nexport interface IStyledBranding {\n compactSelectors: boolean;\n}\n\nexport const StyledBranding = styled.div<IStyledBranding>`\n display: grid;\n place-content: center;\n grid-gap: 0.5rem;\n height: 100%;\n font-size: 0.9rem;\n text-align: center;\n user-select: none;\n\n img {\n cursor: pointer;\n }\n`;\n\nexport const StyledHelp = styled.div`\n li {\n font-size: 0.9rem;\n }\n`;\n\n\nexport interface IStyledHelpItem {\n compactSelectors: boolean;\n}\n\nexport const StyledHelpItem = styled.li<IStyledHelpItem>`\n display: grid;\n align-items: center;\n grid-gap: 0.5rem;\n grid-template-columns: ${\n ({\n compactSelectors,\n }: IStyledHelpItem) => compactSelectors\n ? '16px'\n : '16px auto 16px'\n };\n min-height: 45px;\n`;\n// #region module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledSelector {\n theme: Theme;\n selected: boolean;\n compactSelectors: boolean;\n}\n\nexport const StyledSelector = styled.li<IStyledSelector>`\n background-color: ${\n ({\n theme,\n selected,\n }: IStyledSelector) => selected\n ? theme.backgroundColorPrimary\n : 'initial'\n };\n\n :hover {\n background-color: ${\n ({\n theme,\n }: IStyledSelector) => theme.backgroundColorPrimary\n };\n }\n\n display: grid;\n grid-template-columns: ${\n ({\n compactSelectors,\n }: IStyledSelector) => compactSelectors\n ? '16px'\n : '16px auto'\n };\n grid-gap: 0.7rem;\n min-height: 45px;\n align-items: center;\n position: relative;\n`;\n\n\nexport interface IStyledSelectorRelativeLabel {\n theme: Theme;\n}\n\nexport const StyledSelectorRelativeLabel = styled.div<IStyledSelectorRelativeLabel>`\n position: absolute;\n left: 50px;\n z-index: 9999;\n min-height: 45px;\n display: grid;\n align-items: center;\n padding-right: 0.5rem;\n background-color: ${\n ({\n theme,\n }: IStyledSelectorRelativeLabel) => theme.backgroundColorPrimaryAlpha\n };\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n useEffect,\n } from 'react';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconSpace,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n Dashboard,\n } from '../../../../data';\n // #endregion external\n\n\n // #region internal\n import {\n StyledSelector,\n StyledSelectorRelativeLabel,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface SelectorProperties {\n // #region required\n // #region values\n data: Dashboard;\n compactSelectors: boolean;\n theme: Theme;\n selectedDashboard: string;\n // #endregion values\n\n // #region methods\n setSelectedDashboard: React.Dispatch<string>;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst Selector: React.FC<SelectorProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n data,\n selectedDashboard,\n compactSelectors,\n theme,\n // #endregion values\n\n // #region methods\n setSelectedDashboard,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const {\n id,\n icon,\n label,\n } = data;\n\n // FORCE uppercase for React.\n const Icon: any = icon;\n\n const selected = id === selectedDashboard;\n // #endregion properties\n\n\n // #region state\n const [\n mouseOver,\n setMouseOver,\n ] = useState(false);\n // #endregion state\n\n\n // #region effects\n useEffect(() => {\n let mounted = true;\n\n if (mouseOver) {\n setTimeout(() => {\n if (!mounted) {\n return;\n }\n\n setMouseOver(false);\n }, 2_000);\n }\n\n return () => {\n mounted = false;\n }\n }, [\n mouseOver,\n ]);\n // #endregion effects\n\n\n // #region render\n const selectorIcon = !icon\n ? (<PluridIconSpace theme={theme} />)\n : typeof icon === 'function'\n ? (<Icon theme={theme} />)\n : (<>{icon}</>);\n\n return (\n <StyledSelector\n key={(rendererID || '') + id}\n\n onClick={() => setSelectedDashboard(id)}\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n\n theme={theme}\n selected={selected}\n compactSelectors={compactSelectors}\n >\n {selectorIcon}\n\n {!compactSelectors\n && (\n <div>\n {label}\n </div>\n )}\n\n {compactSelectors\n && mouseOver\n && (\n <StyledSelectorRelativeLabel\n theme={theme}\n >\n {label}\n </StyledSelectorRelativeLabel>\n )}\n </StyledSelector>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Selector;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconArrowRight,\n PluridIconDocuments,\n PluridIconExternalLink,\n PluridIconExit,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n Dashboard,\n } from '../../data';\n // #endregion external\n\n\n // #region internal\n import {\n StyledSidebar,\n StyledSelectors,\n StyledBranding,\n StyledHelp,\n StyledHelpItem,\n } from './styled';\n\n import Selector from './components/Selector';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface SidebarProperties {\n // #region required\n // #region values\n dashboards: Dashboard[];\n theme: Theme;\n\n compactSelectors: boolean;\n setCompactSelectors: React.Dispatch<boolean>;\n selectedDashboard: string;\n setSelectedDashboard: React.Dispatch<string>;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID?: string;\n identonym?: string;\n usageType?: string;\n brandingName?: string;\n brandingNameStyle?: React.CSSProperties;\n brandingLogo?: string;\n // #endregion values\n\n // #region methods\n openManual?: () => void;\n logout?: () => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst Sidebar: React.FC<SidebarProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n dashboards,\n theme,\n\n compactSelectors,\n setCompactSelectors,\n selectedDashboard,\n setSelectedDashboard,\n\n identonym,\n usageType,\n // #endregion values\n\n // #region methods\n openManual,\n logout,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID,\n brandingName,\n brandingNameStyle,\n brandingLogo,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const openManualCount = openManual ? 1 : 0;\n const usageTypeCount = (usageType === 'PRIVATE_USAGE' && logout) ? 1 : 0;\n const helpItemsCount = openManualCount + usageTypeCount;\n // #endregion properties\n\n\n // #region state\n const [\n mouseOverSelectors,\n setMouseOverSelectors,\n ] = useState(false);\n // #endregion state\n\n\n // #region render\n const branding = (\n <StyledBranding\n compactSelectors={compactSelectors}\n >\n {!compactSelectors && (\n <>\n <div>\n {brandingLogo && (\n <img\n src={brandingLogo}\n alt=\"icon\"\n height={40}\n onClick={() => {\n setCompactSelectors(true);\n setMouseOverSelectors(false);\n }}\n />\n )}\n </div>\n\n {brandingName && (\n <div\n style={brandingNameStyle}\n >\n {brandingName}\n </div>\n )}\n </>\n )}\n\n {compactSelectors\n && mouseOverSelectors\n && (\n <>\n <PluridIconArrowRight\n atClick={() => setCompactSelectors(false)}\n />\n\n <div>\n {/* Empty space for alignment purposes. */}\n &#12644;\n </div>\n </>\n )}\n </StyledBranding>\n );\n\n const selectors = (\n <ul>\n {dashboards.map(dashboard => (\n <Selector\n key={dashboard.id}\n data={dashboard}\n compactSelectors={compactSelectors}\n theme={theme}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n rendererID={rendererID}\n />\n ))}\n </ul>\n );\n\n const help = (\n <StyledHelp>\n {mouseOverSelectors && (\n <ul>\n {openManual\n && (\n <StyledHelpItem\n onClick={() => openManual()}\n compactSelectors={compactSelectors}\n >\n <PluridIconDocuments />\n\n {!compactSelectors && (\n <>\n <div>\n manual\n </div>\n\n <PluridIconExternalLink />\n </>\n )}\n </StyledHelpItem>\n )}\n\n {usageType === 'PRIVATE_USAGE'\n && logout\n && (\n <StyledHelpItem\n onClick={() => logout()}\n compactSelectors={compactSelectors}\n >\n <PluridIconExit />\n\n {!compactSelectors && (\n <>\n <div>\n logout ({identonym})\n </div>\n\n {/* FORCED layouting. */}\n <div />\n </>\n )}\n </StyledHelpItem>\n )}\n </ul>\n )}\n </StyledHelp>\n );\n\n return (\n <StyledSidebar\n theme={theme}\n >\n <StyledSelectors\n onMouseEnter={() => setMouseOverSelectors(true)}\n onMouseLeave={() => setMouseOverSelectors(false)}\n theme={theme}\n compactSelectors={compactSelectors}\n helpItemsCount={helpItemsCount}\n >\n {branding}\n {selectors}\n {help}\n </StyledSelectors>\n </StyledSidebar>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Sidebar;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #region libraries\n// #region imports\n\n\n\n// #region module\nexport interface IStyledRenderArea {\n theme: Theme;\n}\n\nexport const StyledRenderArea = styled.div<IStyledRenderArea>`\n`;\n// #region module\n","// #region imports\n // #region libraries\n import React, {\n useEffect,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n Dashboard,\n } from '../../data';\n // #endregion external\n\n\n // #region internal\n import {\n StyledRenderArea,\n } from './styled';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface RenderAreaProperties {\n // #region required\n // #region values\n dashboards: Dashboard[];\n selectedDashboard: string;\n renderView: string;\n fullRenderArea: boolean;\n theme: Theme;\n // #endregion values\n\n // #region methods\n setSelectedDashboard: React.Dispatch<string>;\n setRenderView: React.Dispatch<string>;\n setFullRenderArea: React.Dispatch<boolean>;\n // #endregion methods\n // #endregion required\n}\n\nconst RenderArea: React.FC<RenderAreaProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n dashboards,\n selectedDashboard,\n renderView,\n fullRenderArea,\n theme,\n // #endregion values\n\n // #region methods\n setSelectedDashboard,\n setRenderView,\n setFullRenderArea,\n // #endregion methods\n // #endregion required\n } = properties;\n\n const dashboard = dashboards.find(\n dashboard => dashboard.id === selectedDashboard,\n );\n if (!dashboard) {\n return (<></>);\n }\n // #endregion properties\n\n\n // #region handlers\n const resolveView = () => {\n const dashboard = dashboards.find(\n dashboard => dashboard.id === selectedDashboard,\n );\n if (!dashboard) {\n return;\n }\n\n const renderViewInDashboard = dashboard.renderers[renderView];\n if (renderViewInDashboard) {\n return renderView;\n }\n\n if (dashboard.defaultRender) {\n return dashboard.defaultRender;\n }\n\n return Object.keys(dashboard.renderers)[0];\n }\n // #endregion handlers\n\n\n // #region effects\n const renderID = resolveView();\n\n useEffect(() => {\n if (renderID && renderID !== renderView) {\n setRenderView(renderID);\n }\n }, [\n renderID,\n ]);\n // #endregion effects\n\n\n // #region render\n if (!renderID) {\n return (<></>);\n }\n const DashboardRender = dashboard.renderers[renderID];\n if (!DashboardRender) {\n return (<></>);\n }\n\n return (\n <StyledRenderArea\n theme={theme}\n >\n <DashboardRender\n theme={theme}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n renderView={renderView}\n setRenderView={setRenderView}\n fullRenderArea={fullRenderArea}\n setFullRenderArea={setFullRenderArea}\n />\n </StyledRenderArea>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default RenderArea;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React, {\n useEffect,\n useState,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n Dashboard,\n } from './data';\n\n import {\n StyledDashboardsRenderer,\n StyledNoDashboardRender,\n } from './styled';\n\n import Sidebar from './components/Sidebar';\n import RenderArea from './components/RenderArea';\n // #endregion internal\n// #region imports\n\n\n\n// #region module\nexport interface DashboardsRendererProperties {\n // #region required\n // #region values\n dashboards: Dashboard[];\n theme: Theme;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID?: string;\n identonym?: string;\n usageType?: string;\n brandingName?: string;\n brandingNameStyle?: React.CSSProperties;\n brandingLogo?: string;\n activeDashboard?: string;\n activeRender?: string;\n compactSelectors?: boolean;\n fullRenderArea?: boolean;\n noDashboardRender?: JSX.Element;\n // #endregion values\n\n // #region methods\n openManual?: () => void;\n atDashboardChange?: (newDashboard: string) => void;\n atUIChange?: (\n type: string,\n value: any,\n ) => void;\n\n logout?: () => void;\n // #endregion methods\n // #endregion optional\n}\n\nconst DashboardsRenderer: React.FC<DashboardsRendererProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n dashboards,\n theme,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n rendererID,\n identonym,\n usageType,\n brandingName,\n brandingNameStyle,\n brandingLogo,\n activeDashboard,\n activeRender,\n compactSelectors: compactSelectorsProperty,\n fullRenderArea: fullRenderAreaProperty,\n noDashboardRender,\n // #endregion values\n\n // #region methods\n atDashboardChange,\n atUIChange,\n openManual,\n\n logout,\n // #endregion methods\n // #endregion optional\n } = properties;\n // #endregion properties\n\n\n // #region state\n const [\n compactSelectors,\n setCompactSelectors,\n ] = useState(compactSelectorsProperty ?? false);\n\n const [\n fullRenderArea,\n setFullRenderArea,\n ] = useState(fullRenderAreaProperty ?? false);\n\n const [\n selectedDashboard,\n setSelectedDashboard,\n ] = useState(activeDashboard || '');\n\n const [\n renderView,\n setRenderView,\n ] = useState(activeRender || '');\n // #endregion state\n\n\n // #region effects\n useEffect(() => {\n if (!activeDashboard) {\n return;\n }\n\n if (selectedDashboard === activeDashboard) {\n return;\n }\n\n setSelectedDashboard(activeDashboard);\n }, [\n activeDashboard,\n ]);\n\n useEffect(() => {\n if (atDashboardChange) {\n atDashboardChange(renderView);\n }\n }, [\n renderView,\n ]);\n\n useEffect(() => {\n if (typeof compactSelectorsProperty === 'boolean') {\n setCompactSelectors(compactSelectorsProperty);\n }\n\n if (typeof fullRenderAreaProperty === 'boolean') {\n setFullRenderArea(fullRenderAreaProperty);\n }\n }, [\n compactSelectorsProperty,\n fullRenderAreaProperty,\n ]);\n\n useEffect(() => {\n if (atUIChange) {\n atUIChange(\n 'compactSelectors',\n compactSelectors,\n );\n }\n }, [\n compactSelectors,\n ]);\n\n useEffect(() => {\n if (atUIChange) {\n atUIChange(\n 'fullRenderArea',\n fullRenderArea,\n );\n }\n }, [\n fullRenderArea,\n ]);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledDashboardsRenderer\n theme={theme}\n compactSelectors={compactSelectors}\n fullRenderArea={fullRenderArea}\n >\n {!fullRenderArea && (\n <Sidebar\n dashboards={dashboards}\n theme={theme}\n\n compactSelectors={compactSelectors}\n setCompactSelectors={setCompactSelectors}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n identonym={identonym}\n usageType={usageType}\n\n openManual={openManual}\n logout={logout}\n\n rendererID={rendererID}\n brandingName={brandingName}\n brandingNameStyle={brandingNameStyle}\n brandingLogo={brandingLogo}\n />\n )}\n\n {selectedDashboard && (\n <RenderArea\n dashboards={dashboards}\n selectedDashboard={selectedDashboard}\n setSelectedDashboard={setSelectedDashboard}\n renderView={renderView}\n setRenderView={setRenderView}\n fullRenderArea={fullRenderArea}\n setFullRenderArea={setFullRenderArea}\n theme={theme}\n />\n )}\n\n {!selectedDashboard && noDashboardRender && (\n <StyledNoDashboardRender>\n {noDashboardRender}\n </StyledNoDashboardRender>\n )}\n </StyledDashboardsRenderer>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default DashboardsRenderer;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled, {\n css,\n } from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledEntityView {\n theme: Theme;\n}\n\nexport const StyledEntityView = styled.div<IStyledEntityView>`\n position: relative;\n height: 100%;\n\n button {\n font-family: ${\n ({\n theme,\n }: IStyledEntityView) => theme.fontFamilySansSerif\n };\n }\n`;\n\n\nexport const StyledEntityViewTop = styled.div`\n display: grid;\n grid-template-columns: 3fr 1fr;\n align-items: center;\n margin-bottom: 30px;\n`;\n\n\nexport const StyledEntityFilterLine = styled.div`\n position: relative;\n`;\n\n\nexport interface IStyledEntityFilterCancel {\n filterLength: string;\n}\n\nexport const StyledEntityFilterCancel = styled.div<IStyledEntityFilterCancel>`\n position: absolute;\n top: 10px;\n\n left: ${\n ({\n filterLength,\n }: IStyledEntityFilterCancel) => filterLength === 'SMALL' ? '275px' : '575px'\n };\n`;\n\n\nexport const StyledTopButtons = styled.div`\n text-align: right;\n`;\n\n\nexport const StyledEntityListContainer = styled.div`\n`;\n\n\nexport type IStyledEntityList = {\n theme: Theme;\n header?: boolean;\n loading?: number;\n} & any; // FORCED\n\nexport const StyledEntityList = styled.ul<IStyledEntityList>`\n padding: 0;\n margin: 0;\n list-style: none;\n max-height: 500px;\n overflow: auto;\n\n background-color: ${\n ({\n theme,\n }: IStyledEntityList) => theme.backgroundColorSecondaryAlpha\n };\n box-shadow: ${\n ({\n theme,\n }: IStyledEntityList) => theme.boxShadowUmbraInset\n };\n opacity: ${\n ({\n loading,\n }: IStyledEntityList) => {\n if (loading) {\n return '0.5';\n }\n\n return '1';\n }\n };\n\n li:first-child {\n background-color: ${\n ({\n theme,\n header,\n }: IStyledEntityList) => {\n if (header) {\n return theme.backgroundColorTertiary;\n }\n\n return 'initial';\n }\n };\n }\n\n ${({\n header,\n }: IStyledEntityList) => {\n if (header) {\n return;\n }\n\n return css`\n li:hover {\n background-color: ${\n ({\n theme,\n }: IStyledEntityList) => theme.backgroundColorPrimary\n };\n }\n `\n }}\n`;\n\n\nexport interface IStyledEntityListItem {\n rowTemplate: string;\n}\n\nexport const StyledEntityListItem = styled.li<IStyledEntityListItem>`\n display: grid;\n grid-template-columns: ${\n ({\n rowTemplate,\n }: IStyledEntityListItem) => rowTemplate\n };\n grid-gap: 0.5rem;\n padding: 0.7rem;\n align-items: center;\n min-height: 45px;\n word-break: break-all;\n`;\n\n\nexport const StyledActionButton = styled.div`\n width: 200px;\n position: absolute;\n bottom: 0;\n right: 0;\n`;\n\n\nexport const StyledNoRows = styled.div`\n margin: 20px 0;\n text-align: center;\n`;\n// #endregion module\n","// #region module\nexport const createSearchTerms = (\n rows: any[],\n fields: string[],\n) => (rows.map(\n (entity) => {\n const {\n id,\n } = entity;\n\n const data: string[] = [];\n\n for (const field of fields) {\n const term = entity[field];\n\n if (term && typeof term === 'string') {\n data.push(\n term.toLowerCase().trim(),\n );\n }\n }\n\n return {\n id,\n data,\n };\n },\n));\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n forwardRef,\n useImperativeHandle,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconReset,\n PluridIconDelete,\n } from '@plurid/plurid-icons-react';\n\n import {\n useThrottledCallback,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region external\n import universal from '../../../universal';\n\n import {\n EntityViewRefAttributes,\n EntityViewSearchTerm,\n } from '~data/interfaces';\n // #endregion external\n\n\n // #region internal\n import {\n StyledEntityView,\n StyledEntityViewTop,\n StyledEntityFilterLine,\n StyledEntityFilterCancel,\n StyledTopButtons,\n StyledEntityListContainer,\n StyledEntityList,\n StyledEntityListItem,\n StyledActionButton,\n StyledNoRows,\n } from './styled';\n\n import {\n createSearchTerms,\n } from './logic';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst {\n buttons: {\n PureButton: PluridPureButton,\n },\n inputs: {\n Textline: PluridTextline,\n },\n markers: {\n Spinner: PluridSpinner,\n },\n} = universal;\n\n\nexport interface EntityViewProperties {\n // #region required\n // #region values\n entities: any[];\n searchFields: string[];\n\n generalTheme: Theme;\n interactionTheme: Theme;\n\n rowsHeader: JSX.Element;\n rowTemplate: string;\n rows?: JSX.Element[];\n noRows: string;\n // #endregion values\n\n // #region methods\n abstractRowRenderer: (\n columns: string[],\n data: Record<string, any>,\n methods: Record<string, any>,\n ) => JSX.Element,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n actionButtonText?: string;\n placeholderText?: string;\n scrollThrottleTime?: number;\n loading?: number;\n\n rowRenderFields?: string[];\n rowRenderMethods?: any;\n // #endregion values\n\n // #region methods\n actionButtonClick?: () => void;\n filterUpdate?: (\n value: any,\n ) => void;\n refresh?: () => void;\n\n actionScrollBottom?: (\n entities: any[],\n ) => void;\n\n customRowRenderer?: (\n columns: string[],\n data: Record<string, any>,\n methods: Record<string, any>,\n ) => JSX.Element[];\n // #endregion methods\n // #endregion optional\n}\n\nexport type EntityViewType = EntityViewProperties\n & React.RefAttributes<EntityViewRefAttributes>;\n\n\nconst EntityView: React.ForwardRefExoticComponent<EntityViewType> = forwardRef((\n properties,\n reference,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n entities,\n searchFields,\n\n generalTheme,\n interactionTheme,\n\n rowsHeader,\n rowTemplate,\n noRows,\n // #endregion values\n\n // #region methods\n abstractRowRenderer,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values.\n actionButtonText,\n placeholderText,\n scrollThrottleTime: scrollThrottleTimeProperty,\n loading,\n\n rowRenderFields,\n rowRenderMethods,\n // #endregion values\n\n // #region methods\n actionButtonClick,\n filterUpdate,\n refresh,\n actionScrollBottom,\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const placeholder = placeholderText || 'search';\n const scrollThrottleTime = scrollThrottleTimeProperty ?? 1_000;\n // #endregion properties\n\n\n // #region references\n const bottomTimeout = useRef<NodeJS.Timeout | null>();\n const entityList = useRef<HTMLUListElement | null>(null);\n // #endregion references\n\n\n // #region state\n const [\n searchTerms,\n setSearchTerms,\n ] = useState<EntityViewSearchTerm[]>(\n createSearchTerms(entities, searchFields),\n );\n\n const [\n filteredRows,\n setFilteredRows,\n ] = useState<JSX.Element[]>(\n entities.map(\n entity => abstractRowRenderer(\n rowRenderFields || [],\n entity,\n rowRenderMethods || {},\n ),\n ),\n );\n\n const [\n searchValue,\n setSearchValue,\n ] = useState('');\n const [\n filterLength,\n setFilterLength,\n ] = useState('SMALL');\n const [\n refreshClicked,\n setRefreshClicked,\n ] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const handleScroll = useThrottledCallback(() => {\n const element = entityList.current;\n if (!element) {\n return;\n }\n\n const scrolledAmount = element.scrollTop + element.getBoundingClientRect().height\n const bottomReached = scrolledAmount >= element.scrollHeight;\n\n if (bottomReached && actionScrollBottom && entities) {\n actionScrollBottom(entities);\n }\n }, scrollThrottleTime);\n\n const clearFilterValue = () => {\n setSearchValue('');\n\n if (filterUpdate) {\n filterUpdate('');\n }\n }\n // #endregion handlers\n\n\n // #region effects\n useEffect(() => {\n setFilteredRows(\n entities.map(\n entity => abstractRowRenderer(\n rowRenderFields || [],\n entity,\n rowRenderMethods || {},\n ),\n ),\n );\n\n setSearchTerms(\n createSearchTerms(entities, searchFields),\n );\n }, [\n entities.length,\n JSON.stringify(entities),\n ]);\n\n useEffect(() => {\n if (refreshClicked) {\n setTimeout(() => {\n setRefreshClicked(false);\n }, 1500);\n }\n }, [\n refreshClicked,\n ]);\n\n /**\n * Action at Bottom of List.\n */\n useEffect(() => {\n bottomTimeout.current = setTimeout(() => {\n if (entityList.current && actionScrollBottom) {\n entityList.current.addEventListener('scroll', handleScroll);\n }\n }, 100);\n\n return () => {\n if (bottomTimeout.current) {\n clearTimeout(bottomTimeout.current);\n }\n\n if (entityList.current && actionScrollBottom) {\n entityList.current.removeEventListener('scroll', handleScroll);\n }\n }\n }, [\n entities,\n ]);\n\n /**\n * Filter length\n */\n useEffect(() => {\n if (searchValue.length <= 30) {\n if (filterLength !== 'SMALL') {\n setFilterLength('SMALL');\n }\n } else {\n if (filterLength !== 'LARGE') {\n setFilterLength('LARGE');\n }\n }\n }, [\n searchValue,\n ]);\n\n useImperativeHandle(\n reference,\n () => ({\n resetFilterValue() {\n clearFilterValue();\n },\n getSearchTerms() {\n return searchTerms;\n },\n }),\n [\n JSON.stringify(searchTerms),\n ],\n );\n // #endregion effects\n\n\n // #region render\n return (\n <StyledEntityView\n theme={generalTheme}\n >\n {!!loading\n && (\n <PluridSpinner\n theme={generalTheme}\n />\n )}\n\n <StyledEntityViewTop>\n <StyledEntityFilterLine>\n <PluridTextline\n text={searchValue}\n placeholder={placeholder}\n atChange={(event) => {\n const {\n value,\n } = event.target;\n\n setSearchValue(value);\n\n if (filterUpdate) {\n filterUpdate(value);\n }\n }}\n atKeyDown={(event) => {\n if (event.key === 'Escape') {\n clearFilterValue();\n }\n }}\n theme={interactionTheme}\n spellCheck={false}\n autoCapitalize=\"false\"\n autoComplete=\"false\"\n autoCorrect=\"false\"\n level={2}\n style={{\n width: filterLength === 'SMALL' ? '300px' : '600px',\n paddingRight: '2rem',\n }}\n />\n\n {searchValue && (\n <StyledEntityFilterCancel\n filterLength={filterLength}\n >\n <PluridIconDelete\n atClick={() => {\n clearFilterValue();\n }}\n />\n </StyledEntityFilterCancel>\n )}\n </StyledEntityFilterLine>\n\n <StyledTopButtons>\n {refresh\n && !refreshClicked\n && (\n <PluridIconReset\n atClick={() => {\n setRefreshClicked(true);\n refresh();\n }}\n theme={generalTheme}\n />\n )}\n </StyledTopButtons>\n </StyledEntityViewTop>\n\n {filteredRows.length === 0 && (\n <StyledNoRows>\n {noRows}\n </StyledNoRows>\n )}\n\n {filteredRows.length !== 0 && (\n <StyledEntityListContainer\n theme={generalTheme}\n >\n <StyledEntityList\n theme={generalTheme}\n header={true}\n >\n <StyledEntityListItem\n rowTemplate={rowTemplate}\n >\n {rowsHeader}\n </StyledEntityListItem>\n </StyledEntityList>\n\n <StyledEntityList\n theme={generalTheme}\n ref={entityList}\n loading={loading}\n >\n {filteredRows.map(row => (\n <StyledEntityListItem\n key={Math.random() + ''}\n rowTemplate={rowTemplate}\n >\n {row}\n </StyledEntityListItem>\n ))}\n </StyledEntityList>\n </StyledEntityListContainer>\n )}\n\n {actionButtonText && (\n <StyledActionButton>\n <PluridPureButton\n text={actionButtonText}\n atClick={() => actionButtonClick\n ? actionButtonClick()\n : undefined\n }\n theme={interactionTheme}\n level={2}\n />\n </StyledActionButton>\n )}\n </StyledEntityView>\n );\n // #endregion render\n});\n// #endregion module\n\n\n\n// #region exports\nexport default EntityView;\n// #endregion exports\n","// #region imports\n // #region internal\n import DashboardsRenderer from './DashboardsRenderer';\n import EntityView from './EntityView';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst containers = {\n DashboardsRenderer,\n EntityView,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default containers;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n StateOfAny,\n head,\n } from '@plurid/plurid-ui-state-react';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport type HeadState = StateOfAny & {\n head: head.HeadState;\n}\n\nexport type HeadSelectors = StateOfAny & {\n head: typeof head.selectors;\n}\n\nexport interface HeadDefaults {\n robots?: string;\n viewport?: string;\n faviconIcon?: string;\n favicon16?: string;\n favicon32?: string;\n manifest?: string;\n themeColor?: string;\n apiDomain?: string;\n canonicalURL?: string;\n ogImageWidth?: string;\n ogImageHeight?: string;\n ogSiteName?: string;\n appleTouchIcon?: string;\n}\n\nexport interface HeadOwnProperties {\n Helmet: any;\n defaults?: Partial<head.HeadState> & HeadDefaults;\n selectors: HeadSelectors;\n context: React.Context<any>;\n children?: React.ReactNode;\n}\n\nexport interface HeadStateProperties {\n stateHead: head.HeadState;\n}\n\nexport interface HeadDispatchProperties {\n}\n\nexport type HeadProperties =\n & HeadOwnProperties\n & HeadStateProperties\n & HeadDispatchProperties;\n\n\nconst Head: React.FC<HeadProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region own\n Helmet,\n defaults,\n children,\n // #endregion own\n\n // #region state\n stateHead,\n // #endregion state\n } = properties;\n\n const robots = defaults?.robots || 'index,follow';\n const viewport = defaults?.viewport || 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0, shrink-to-fit=no';\n const faviconIcon = defaults?.faviconIcon ?? '/favicon.ico';\n const favicon16 = defaults?.favicon16 ?? '/favicon-16x16.png';\n const favicon32 = defaults?.favicon32 ?? '/favicon-32x32.png';\n const manifest = defaults?.manifest ?? '/site.webmanifest';\n const themeColor = defaults?.themeColor || '';\n\n const titleValue = stateHead.title || defaults?.title || '';\n const descriptionValue = stateHead.description || defaults?.description || '';\n const canonicalURL = stateHead.canonicalURL || defaults?.canonicalURL || '';\n\n const ogTitleValue = stateHead.ogTitle || titleValue;\n const ogDescriptionValue = stateHead.ogDescription || titleValue;\n const ogImageValue = stateHead.ogImage || defaults?.ogImage || '';\n const ogURLValue = stateHead.ogURL || defaults?.ogURL || '';\n\n const apiDomain = defaults?.apiDomain || '';\n\n const ogImageWidth = defaults?.ogImageWidth || '1200';\n const ogImageHeight = defaults?.ogImageHeight || '630';\n const ogSiteName = defaults?.ogSiteName || '';\n\n const appleTouchIcon = defaults?.appleTouchIcon || '';\n\n const {\n styles,\n scripts,\n } = stateHead;\n // #endregion properties\n\n\n // #region render\n return (\n <Helmet>\n <meta charSet=\"utf-8\" />\n <meta name=\"robots\" content={robots} />\n <meta name=\"viewport\" content={viewport} />\n\n <title>{titleValue}</title>\n <meta name=\"title\" content={titleValue} />\n <meta name=\"description\" content={descriptionValue} />\n\n {apiDomain && (\n <>\n <link rel=\"preconnect\" href={apiDomain} />\n <link rel=\"dns-prefetch\" href={apiDomain} />\n </>\n )}\n\n {faviconIcon && (<link rel=\"icon\" sizes=\"64x64\" href={faviconIcon} />)}\n {favicon32 && (<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href={favicon32} />)}\n {favicon16 && (<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href={favicon16} />)}\n {manifest && (<link rel=\"manifest\" href={manifest} />)}\n {themeColor && (<meta name=\"theme-color\" content={themeColor} />)}\n\n {canonicalURL && (<link rel=\"canonical\" href={canonicalURL} />)}\n\n {/* OPEN GRAPH */}\n <meta property=\"og:type\" content=\"website\" />\n <meta property=\"og:title\" content={ogTitleValue} />\n <meta property=\"og:image\" content={ogImageValue} />\n <meta property=\"og:image:width\" content={ogImageWidth} />\n <meta property=\"og:image:height\" content={ogImageHeight} />\n {ogSiteName && (<meta property=\"og:site_name\" content={ogSiteName} />)}\n <meta property=\"og:url\" content={ogURLValue} />\n <meta property=\"og:description\" content={ogDescriptionValue} />\n\n {/* TWITTER */}\n <meta property=\"twitter:card\" content=\"summary_large_image\" />\n <meta property=\"twitter:url\" content={ogURLValue} />\n <meta property=\"twitter:title\" content={ogTitleValue} />\n <meta property=\"twitter:description\" content={ogDescriptionValue} />\n <meta property=\"twitter:image\" content={ogImageValue} />\n\n {/* SAFARI */}\n <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"default\" />\n <meta name=\"apple-mobile-web-app-title\" content={titleValue} />\n {appleTouchIcon && (<link rel=\"apple-touch-icon\" sizes=\"180x180\" href={appleTouchIcon} />)}\n\n {children}\n\n {styles?.map((style) => {\n return (\n <link\n rel=\"stylesheet\"\n key={'head-style' + style}\n href={style}\n />\n );\n })}\n\n {scripts?.map((script) => {\n return (\n <script\n key={'head-script' + script}\n src={script}\n />\n );\n })}\n </Helmet>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties =(\n state: HeadState,\n ownProperties: HeadOwnProperties,\n): HeadStateProperties => ({\n stateHead: ownProperties.selectors.head.getHead(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): HeadDispatchProperties => ({\n});\n\n\nconst ConnectedHead = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(Head);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedHead;\n// #endregion exports\n","// #region imports\n // #region internal\n import Head from './Head';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst head = {\n Head,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default head;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled, {\n keyframes,\n } from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nconst translateUp = keyframes`\n from {\n transform: translateY(2000px);\n }\n to {\n transform: translateY(0);\n }\n`;\n\n\nexport interface IStyledNotification {\n theme: Theme;\n}\n\nexport const StyledNotification = styled.div<IStyledNotification>`\n display: grid;\n align-items: center;\n position: relative;\n min-height: 60px;\n width: 260px;\n margin: 10px 20px;\n border-radius: 10px;\n pointer-events: all;\n background-color: ${(props: IStyledNotification) => {\n return props.theme.backgroundColorSecondary;\n }};\n color: ${(props: IStyledNotification) => {\n return props.theme.colorPrimary;\n }};\n box-shadow: ${(props: IStyledNotification) => {\n return props.theme.boxShadowUmbra;\n }};\n animation: ${translateUp} 750ms ease-in-out forwards;\n transition: opacity 400ms;\n\n a {\n text-decoration: none;\n color: ${(props: IStyledNotification) => {\n return props.theme.colorSecondary;\n }};\n }\n`;\n\n\n\nexport interface IStyledNotificationContent {\n wordBreak: string;\n}\n\nexport const StyledNotificationContent = styled.div<IStyledNotificationContent>`\n font-size: 0.9rem;\n padding: 32px 16px;\n word-break: ${\n ({\n wordBreak,\n }) => wordBreak\n };\n`;\n\n\nexport const StyledNotificationClose = styled.div`\n position: absolute;\n top: 8px;\n right: 8px;\n user-select: none;\n cursor: pointer;\n width: 20px;\n height: 20px;\n display: grid;\n place-content: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useRef,\n useState,\n useEffect,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n DispatchAction,\n Notification,\n notifications,\n } from '@plurid/plurid-ui-state-react';\n\n import {\n PluridIconDelete,\n } from '@plurid/plurid-icons-react';\n\n import {\n createMarkup,\n } from '@plurid/plurid-functions-react';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledNotification,\n StyledNotificationContent,\n StyledNotificationClose,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface NotificationOwnProperties {\n // #region required\n // #region values\n data: Notification;\n theme: Theme;\n // #endregion values\n\n // #region methods\n remove: DispatchAction<typeof notifications.actions.remove>;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n elements?: Record<string, JSX.Element>;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nexport type NotificationProperties = NotificationOwnProperties;\n\nconst Notification: React.FC<NotificationProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n data,\n theme,\n // #endregion values\n\n // #region methods\n remove,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n elements,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const {\n id,\n text,\n html,\n react,\n timeout,\n wordBreak,\n } = data;\n\n const resolvedWordBreak = wordBreak === true ? 'break-all' : 'normal';\n // #endregion properties\n\n\n // #region state\n const [\n prepareForRemoval,\n setPrepareForRemoval,\n ] = useState(false);\n // #endregion state\n\n\n // #region references\n const notificationTimeout = useRef<NodeJS.Timeout | null>(null);\n // #endregion references\n\n\n // #region effects\n useEffect(() => {\n const timeoutValue = timeout === undefined\n ? react\n ? 4_000\n : 2_000 + text.length * 40\n : timeout === 0\n ? undefined\n : timeout;\n\n if (timeoutValue) {\n notificationTimeout.current = setTimeout(() => {\n setPrepareForRemoval(true);\n setTimeout(() => {\n remove(id);\n }, 400);\n }, timeoutValue);\n }\n\n return () => {\n if (notificationTimeout.current) {\n clearTimeout(notificationTimeout.current);\n }\n }\n }, [\n id,\n timeout,\n remove,\n ]);\n // #endregion effects\n\n\n // #region render\n const resolveRender = () => {\n const contentProperties = {\n wordBreak: resolvedWordBreak,\n };\n\n if (html) {\n return (\n <StyledNotificationContent\n dangerouslySetInnerHTML={createMarkup(text)}\n {...contentProperties}\n />\n );\n }\n\n if (react && elements && elements[text]) {\n return (\n <StyledNotificationContent\n {...contentProperties}\n >\n {elements[text]}\n </StyledNotificationContent>\n );\n }\n\n return (\n <StyledNotificationContent\n {...contentProperties}\n >\n {text}\n </StyledNotificationContent>\n );\n }\n\n const content = resolveRender();\n\n return (\n <StyledNotification\n theme={theme}\n style={{\n ...style,\n opacity: prepareForRemoval ? 0 : undefined,\n }}\n className={className}\n >\n {content}\n\n <StyledNotificationClose>\n <PluridIconDelete\n atClick={() => remove(id)}\n />\n </StyledNotificationClose>\n </StyledNotification>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default Notification;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledNotifications = styled.div`\n position: absolute;\n bottom: 0;\n top: 0;\n right: 0;\n width: 300px;\n display: flex;\n flex-direction: column-reverse;\n z-index: 9999;\n pointer-events: none;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n DispatchAction,\n StateOfAny,\n themes as themesStateService,\n notifications as notificationsStateService,\n Notification as INotification,\n } from '@plurid/plurid-ui-state-react';\n // #endregion libraries\n\n\n // #region external\n import Notification from '../Notification';\n // #endregion external\n\n\n // #region internal\n import {\n StyledNotifications,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport type NotificationsState = StateOfAny & {\n themes: themesStateService.ThemesState;\n notifications: notificationsStateService.NotificationsState;\n}\n\nexport type NotificationsSelectors = StateOfAny & {\n themes: typeof themesStateService.selectors;\n notifications: typeof notificationsStateService.selectors;\n}\n\n\nexport interface NotificationsOwnProperties {\n selectors: NotificationsSelectors;\n context: React.Context<any>;\n elements?: Record<string, JSX.Element>;\n}\n\nexport interface NotificationsStateProperties {\n stateGeneralTheme: Theme;\n stateNotifications: INotification[];\n}\n\nexport interface NotificationsDispatchProperties {\n dispatchRemoveNotification: DispatchAction<typeof notificationsStateService.actions.remove>;\n}\n\nexport type NotificationsProperties =\n & NotificationsOwnProperties\n & NotificationsStateProperties\n & NotificationsDispatchProperties;\n\n\nconst Notifications: React.FC<NotificationsProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region optional\n // #region values\n elements,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n // #region state\n stateGeneralTheme,\n stateNotifications,\n // #endregion state\n\n // #region dispatch\n dispatchRemoveNotification,\n // #endregion dispatch\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledNotifications>\n {stateNotifications.map(notification => {\n return (\n <Notification\n // #region required\n // #region values\n key={notification.id}\n data={notification}\n theme={stateGeneralTheme}\n // #endregion values\n\n // #region methods\n remove={dispatchRemoveNotification}\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n elements={elements}\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n />\n );\n })}\n </StyledNotifications>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties =(\n state: NotificationsState,\n ownProperties: NotificationsOwnProperties,\n): NotificationsStateProperties => ({\n stateGeneralTheme: ownProperties.selectors.themes.getGeneralTheme(state),\n stateNotifications: ownProperties.selectors.notifications.getAll(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): NotificationsDispatchProperties => ({\n dispatchRemoveNotification: (payload) => dispatch(\n notificationsStateService.actions.remove(payload),\n ),\n});\n\n\nconst ConnectedNotifications = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(Notifications);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedNotifications;\n// #endregion exports\n","// #region imports\n // #region internal\n import Notification from './Notification';\n import Notifications from './Notifications';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst notifications = {\n Notification,\n Notifications,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default notifications;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSittingTray: any = styled.div`\n background-color: ${(props: any) => {\n return props.theme.backgroundColorSecondary;\n }};\n box-shadow: ${(props: any) => {\n return props.theme.boxShadowUmbra;\n }};\n\n border-radius: 10px;\n position: absolute;\n left: 35px;\n width: 160px;\n /*\n -1 * (height - 40px <button>)\n */\n /* height: 95px; */\n bottom: -163px;\n /* bottom: 0; */\n overflow: hidden;\n`;\n\n\nexport const StyledSittingTrayContainer: any = styled.div`\n overflow: auto;\n height: 100%;\n\n scrollbar-width: none; /* Firefox */\n -ms-overflow-style: none; /* IE 10+ */\n ::-webkit-scrollbar {\n width: 0px;\n background: transparent;\n }\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n text-align: left;\n }\n\n li {\n min-height: 26px;\n /* padding: 0 7px;\n margin: 7px 0; */\n display: grid;\n grid-template-columns: 1fr;\n align-items: center;\n }\n\n h4 {\n margin: 0;\n }\n`;\n\n\nexport const StyledSittingTrayItem: any = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr 1fr;\n align-items: center;\n`;\n\n\nexport const StyledSittingTrayItemHeader: any = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n align-items: center;\n`;\n\n\nexport const StyledSittingTrayItemBody: any = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n align-items: center;\n`;\n\n\nexport const StyledSittingTrayButton: any = styled.div`\n display: grid;\n grid-template-columns: 25px 1fr;\n cursor: pointer;\n`;\n\n\nexport const StyledSittingTrayButtonIcon: any = styled.div`\n`;\n\n\nexport const StyledSittingTrayButtonText: any = styled.div`\n display: flex;\n align-items: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledStateLink = styled.div`\n padding: 7px;\n padding-bottom: 0px;\n margin-bottom: 4px;\n`;\n\n\nexport const StyledStateLinkContainer: any = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n height: 25px;\n align-items: center;\n`;\n\n\nexport const StyledStateLinkText: any = styled.div`\n width: 100%;\n overflow-x: scroll;\n overflow-y: hidden;\n white-space: nowrap;\n user-select: all;\n text-align: left;\n\n scrollbar-width: none;\n ::-webkit-scrollbar {\n display: none;\n }\n`;\n\n\nexport const StyledStateLinkCopy: any = styled.div`\n width: 100%;\n cursor: pointer;\n justify-self: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n useEffect,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n PluridIconCopy,\n } from '@plurid/plurid-icons-react';\n\n import {\n clipboard,\n } from '@plurid/plurid-functions';\n // #endregion libraries\n\n\n // #region external\n import {\n StyledSittingTrayItem,\n StyledSittingTrayItemHeader,\n StyledSittingTrayItemBody,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledStateLink,\n StyledStateLinkContainer,\n StyledStateLinkText,\n StyledStateLinkCopy,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n\n// #region module\nexport interface StateLinkProperties {\n theme: any;\n currentLink: string;\n context: React.Context<any>;\n}\n\nconst StateLink: React.FC<StateLinkProperties> = (\n properties,\n) => {\n const {\n // theme,\n currentLink,\n } = properties;\n\n const copyStateLink = () => {\n clipboard.copy(currentLink);\n setCurrentStateLink('copied link');\n setTimeout(() => {\n setCurrentStateLink(currentLink);\n }, 650);\n }\n\n const [currentStateLink, setCurrentStateLink] = useState(currentLink);\n\n useEffect(() => {\n setCurrentStateLink(currentLink);\n }, [\n currentLink,\n ]);\n\n return (\n <StyledStateLink>\n <StyledSittingTrayItem>\n <StyledSittingTrayItemHeader>\n <div>\n <h4>\n state link\n </h4>\n </div>\n\n <div\n style={{justifySelf: 'right'}}\n >\n <StyledStateLinkCopy\n onClick={copyStateLink}\n >\n <PluridIconCopy />\n </StyledStateLinkCopy>\n </div>\n </StyledSittingTrayItemHeader>\n\n <StyledSittingTrayItemBody>\n <StyledStateLinkContainer>\n <StyledStateLinkText>\n {currentStateLink}\n </StyledStateLinkText>\n </StyledStateLinkContainer>\n </StyledSittingTrayItemBody>\n </StyledSittingTrayItem>\n </StyledStateLink>\n );\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n) => ({\n theme: ownProperties.selectors.themes.getInteractionTheme(state),\n currentLink: ownProperties.selectors.sitting.getCurrentLink(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n) => ({\n});\n\n\nconst ConnectedStateLink = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(StateLink);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedStateLink;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledStateLine = styled.div`\n padding: 0 7px;\n margin-bottom: 4px;\n\n display: grid;\n align-items: center;\n justify-items: center;\n\n svg {\n height: 18px;\n width: 18px;\n color: white;\n fill: white;\n user-select: none;\n cursor: pointer;\n }\n`;\n\nexport const StyledSliderStateButton = styled.div`\n user-select: none;\n cursor: pointer;\n display: grid;\n place-content: center;\n`;\n\nexport const StyledSliderStateSliderContainer = styled.div`\n`;\n\n\nexport const StyledSliderStateSittings = styled.div`\n justify-self: center;\n`;\n\n\nexport const StyledStateLineButtons = styled.div`\n display: grid;\n grid-template-columns: repeat(3, 20px);\n grid-gap: 3px;\n align-items: center;\n justify-content: right;\n`;\n\nexport const StyledStateLineButton = styled.div`\n display: grid;\n place-content: center;\n`;\n\n\nexport const StyledStateLineContainer = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n align-items: center;\n justify-content: space-between;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n // useContext,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n PluridIconNewStateline,\n PluridIconPlay,\n PluridIconBranch\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n // import Slider from '../../../../../../Slider';\n\n import {\n StyledSittingTrayItem,\n StyledSittingTrayItemHeader,\n StyledSittingTrayItemBody,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledStateLine,\n StyledSliderStateButton,\n StyledSliderStateSliderContainer,\n // StyledSliderStateSittings,\n StyledStateLineButtons,\n StyledStateLineButton,\n StyledStateLineContainer,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n\n// #region module\nexport interface StateLineProperties {\n theme: any;\n context: React.Context<any>;\n}\n\nconst StateLine: React.FC<StateLineProperties> = (\n properties,\n) => {\n // const context: InitialContext = useContext(Context);\n\n // const {\n // theme,\n // } = properties;\n\n\n // #region state\n const [stateIndex, setStateIndex] = useState(0);\n // #endregion state\n\n\n // const {\n // setView,\n // recorder,\n // } = context;\n\n // const allStates = recorder.all();\n\n // const maxStateSlider = allStates.length + 5;\n const maxStateSlider = 5;\n // const maxStateSlider = allStates.length - 1;\n\n // const handleStateSliderInput = (value: string) => {\n // setStateIndex(parseInt(value));\n // }\n\n\n // #region handlers\n const handleStateIndex = (\n type: string,\n ) => {\n switch (type) {\n case 'DECREASE':\n if (stateIndex - 1 >= 0) {\n setStateIndex(stateIndex - 1);\n } else {\n setStateIndex(0);\n }\n // recorder.previous();\n break;\n case 'INCREASE':\n if (stateIndex + 1 <= maxStateSlider) {\n setStateIndex(stateIndex + 1);\n } else {\n setStateIndex(maxStateSlider);\n }\n // recorder.next();\n break;\n }\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledStateLine>\n <StyledSittingTrayItem>\n <StyledSittingTrayItemHeader>\n <div>\n <h4>\n state line\n </h4>\n </div>\n\n <div>\n <StyledStateLineButtons>\n <StyledStateLineButton>\n {/* onClick go to the end of state line */}\n <PluridIconPlay />\n </StyledStateLineButton>\n\n <StyledStateLineButton>\n {/* onClick create new state branch */}\n <PluridIconBranch />\n </StyledStateLineButton>\n\n <StyledStateLineButton>\n {/* onClick end current sitting and start new one */}\n <PluridIconNewStateline />\n </StyledStateLineButton>\n </StyledStateLineButtons>\n </div>\n </StyledSittingTrayItemHeader>\n\n <StyledSittingTrayItemBody>\n <StyledStateLineContainer>\n <div\n style={{display: 'grid', justifyContent: 'left'}}\n >\n {stateIndex !== 0 && (\n <StyledSliderStateButton\n onClick={() => handleStateIndex('DECREASE')}\n >\n ◀\n </StyledSliderStateButton>\n )}\n </div>\n\n <StyledSliderStateSliderContainer>\n {/* {maxStateSlider !== 0 && (\n <Slider\n theme={theme}\n value={stateIndex}\n min={0}\n max={maxStateSlider}\n step={1}\n hideValue={true}\n defaultValue={50}\n handleInput={handleStateSliderInput}\n width={110}\n />\n )} */}\n </StyledSliderStateSliderContainer>\n\n <div\n style={{display: 'grid', justifyContent: 'right'}}\n >\n {stateIndex !== maxStateSlider && (\n <StyledSliderStateButton\n onClick={() => handleStateIndex('INCREASE')}\n >\n ▶\n </StyledSliderStateButton>\n )}\n </div>\n </StyledStateLineContainer>\n </StyledSittingTrayItemBody>\n </StyledSittingTrayItem>\n </StyledStateLine>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n) => ({\n theme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n) => ({\n});\n\n\nconst ConnectedStateLine = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(StateLine);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedStateLine;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledStateImage = styled.div`\n padding: 0 7px;\n margin-bottom: 4px;\n\n svg {\n height: 18px;\n width: 18px;\n color: white;\n fill: white;\n user-select: none;\n cursor: pointer;\n }\n`;\n\n\nexport const StyledStateShareImage = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: 25px;\n align-items: center;\n`;\n\n\nexport const StyledStateShareImageButtons = styled.div`\n display: grid;\n grid-template-columns: 110px auto;\n align-items: center;\n justify-items: center;\n height: 25px;\n`;\n\n\nexport const StyledStateShareImageButtonsCopy = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 10px;\n justify-self: left;\n\n svg {\n height: 18px;\n width: 18px;\n fill: white;\n }\n`;\n\n\nexport const StyledStateShareImagePasteContainer = styled.div`\n display: grid;\n grid-template-columns: 100px 40px;\n align-items: center;\n justify-items: center;\n\n input {\n width: 100%;\n outline: none;\n border: none;\n background: hsla(0, 0%, 10%, 0.5);\n color: white;\n padding: 6px;\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconStateShareImage,\n PluridIconCopyCurrentState,\n PluridIconCopyStateHistory,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n StyledSittingTrayItem,\n StyledSittingTrayItemHeader,\n StyledSittingTrayItemBody,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledStateImage,\n StyledStateShareImage,\n StyledStateShareImageButtons,\n StyledStateShareImagePasteContainer,\n StyledStateShareImageButtonsCopy,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n\n// #region module\nexport interface StateImageOwnProperties {\n selectors: any;\n context: React.Context<any>;\n}\n\nexport interface StateImageStateProperties {\n stateInteractionTheme: Theme;\n}\n\nexport interface StateImageDispatchProperties {\n}\n\nexport type StateImageProperties =\n & StateImageOwnProperties\n & StateImageStateProperties\n & StateImageDispatchProperties;\n\n\nconst StateImage: React.FC<StateImageProperties> = (\n properties,\n) => {\n // #region state\n const [message, setMessage] = useState('');\n const [showPaste, setShowPaste] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const copyCurrentState = () => {\n setMessage('copied state image');\n setTimeout(() => {\n setMessage('');\n }, 2000);\n }\n\n const copyStateHistory = () => {\n setMessage('copied state history');\n setTimeout(() => {\n setMessage('');\n }, 2000);\n }\n\n const paste = () => {\n setShowPaste(false);\n }\n // #endregion handlers\n\n\n // #region render\n return (\n <StyledStateImage>\n <StyledSittingTrayItem>\n <StyledSittingTrayItemHeader>\n <div>\n <h4>\n state image\n </h4>\n </div>\n\n <div>\n <div\n style={{\n display: 'grid',\n alignItems: 'center',\n justifyContent: 'right',\n }}\n >\n <PluridIconStateShareImage />\n </div>\n </div>\n </StyledSittingTrayItemHeader>\n\n <StyledSittingTrayItemBody>\n <StyledStateShareImage>\n {!message && !showPaste && (\n <StyledStateShareImageButtons>\n <StyledStateShareImageButtonsCopy\n >\n <div\n onClick={copyCurrentState}\n >\n <PluridIconCopyCurrentState />\n </div>\n\n <div\n onClick={copyStateHistory}\n >\n <PluridIconCopyStateHistory />\n </div>\n </StyledStateShareImageButtonsCopy>\n\n <div\n onClick={() => setShowPaste(true)}\n >\n paste\n </div>\n </StyledStateShareImageButtons>\n )}\n\n {message && !showPaste && (\n <div>\n {message}\n </div>\n )}\n\n {showPaste && (\n <StyledStateShareImagePasteContainer>\n <input\n type=\"text\"\n />\n <div\n onClick={paste}\n >\n paste\n </div>\n </StyledStateShareImagePasteContainer>\n )}\n </StyledStateShareImage>\n </StyledSittingTrayItemBody>\n </StyledSittingTrayItem>\n </StyledStateImage>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n) => ({\n theme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n) => ({\n});\n\n\nconst ConnectedStateImage = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(StateImage);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedStateImage;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport const StyledSittings: any = styled.div`\n padding: 7px;\n\n display: grid;\n align-items: center;\n\n svg {\n height: 18px;\n width: 18px;\n color: white;\n fill: white;\n user-select: none;\n cursor: pointer;\n }\n\n :hover {\n background-color: ${(props: any) => {\n return props.theme.backgroundColorTertiary;\n }};\n }\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n PluridIconSittings,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n StyledSittingTrayButton,\n StyledSittingTrayButtonIcon,\n StyledSittingTrayButtonText,\n } from '../../styled';\n // #endregion external\n\n\n // #region internal\n import {\n StyledSittings,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface SittingsOwnProperties {\n selectors: any;\n context: React.Context<any>;\n}\n\nexport interface SittingsStateProperties {\n stateInteractionTheme: Theme;\n}\n\nexport interface SittingsDispatchProperties {\n}\n\nexport type SittingsProperties =\n & SittingsOwnProperties\n & SittingsStateProperties\n & SittingsDispatchProperties;\n\n\nconst Sittings: React.FC<SittingsProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region state\n stateInteractionTheme,\n // #endregion state\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSittings\n theme={stateInteractionTheme}\n >\n <StyledSittingTrayButton>\n <StyledSittingTrayButtonIcon>\n <PluridIconSittings\n theme={stateInteractionTheme}\n />\n </StyledSittingTrayButtonIcon>\n\n <StyledSittingTrayButtonText>\n sittings\n </StyledSittingTrayButtonText>\n </StyledSittingTrayButton>\n </StyledSittings>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n): SittingsStateProperties => ({\n stateInteractionTheme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): SittingsDispatchProperties => ({\n});\n\n\nconst ConnectedSittings = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(Sittings);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedSittings;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import StateLink from './components/StateLink';\n import StateLine from './components/StateLine';\n import StateImage from './components/StateImage';\n import Sittings from './components/Sittings';\n\n import {\n StyledSittingTray,\n StyledSittingTrayContainer,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface SittingTrayOwnProperties {\n selectors: any;\n context: React.Context<any>;\n}\n\nexport interface SittingTrayStateProperties {\n stateInteractionTheme: Theme;\n}\n\nexport interface SittingTrayDispatchProperties {\n}\n\nexport type SittingTrayProperties =\n & SittingTrayOwnProperties\n & SittingTrayStateProperties\n & SittingTrayDispatchProperties;\n\n\nconst SittingTray: React.FC<SittingTrayProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region own\n selectors,\n context,\n // #endregion own\n\n // #region state\n stateInteractionTheme,\n // #endregion state\n } = properties;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledSittingTray\n theme={stateInteractionTheme}\n >\n <StyledSittingTrayContainer>\n <ul>\n <li>\n <StateLink\n selectors={selectors}\n context={context}\n />\n </li>\n\n <li>\n <StateLine\n selectors={selectors}\n context={context}\n />\n </li>\n\n <li>\n <StateImage\n selectors={selectors}\n context={context}\n />\n </li>\n\n <li>\n <Sittings\n selectors={selectors}\n context={context}\n />\n </li>\n </ul>\n </StyledSittingTrayContainer>\n </StyledSittingTray>\n );\n // #endregion render\n}\n\n\nconst mapStatedToProperties = (\n state: any,\n ownProperties: any,\n): SittingTrayStateProperties => ({\n stateInteractionTheme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchdToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): SittingTrayDispatchProperties => ({\n});\n\n\nconst ConnectedSittingTray = connect(\n mapStatedToProperties,\n mapDispatchdToProperties,\n)(SittingTray);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedSittingTray;\n// #endregion exports\n","// #region imports\n // #region internal\n import SittingTray from './SittingTray';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst sitting = {\n SittingTray,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default sitting;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledHorizontalToolbarButton {\n active?: boolean;\n scaleIcon?: boolean;\n theme: Theme;\n}\n\nexport const StyledHorizontalToolbarButton = styled.div<IStyledHorizontalToolbarButton>`\n position: relative;\n cursor: pointer;\n user-select: none;\n font-weight: normal;\n transition: transform 50ms ease-in-out;\n height: 45px;\n min-width: 2rem;\n padding: 0 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n\n background-color: ${\n (props: IStyledHorizontalToolbarButton) => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return 'transparent';\n }\n };\n color: ${\n (props: IStyledHorizontalToolbarButton) => {\n return props.theme.colorPrimary;\n }\n };\n font-family: ${\n (props: IStyledHorizontalToolbarButton) => {\n return props.theme.fontFamilySansSerif;\n }\n };\n\n @media (hover: hover) {\n :hover {\n background: ${(props: IStyledHorizontalToolbarButton) => {\n return props.theme.backgroundColorTertiary;\n }};\n }\n\n :hover svg {\n transform: ${(props: IStyledHorizontalToolbarButton) => {\n if (props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n }\n\n svg {\n transition: transform 100ms linear;\n transform: ${(props: IStyledHorizontalToolbarButton) => {\n if (props.active && props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n`;\n\n\nexport interface IStyledHorizontalToolbarButtonIcon {\n text: string;\n}\n\nexport const StyledHorizontalToolbarButtonIcon = styled.div<IStyledHorizontalToolbarButtonIcon>`\n display: flex;\n align-items: center;\n margin-right: ${\n ({\n text,\n }: IStyledHorizontalToolbarButtonIcon) => {\n if (text === '') {\n return '0';\n }\n\n return '0.5rem';\n }\n };\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import themes, {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledHorizontalToolbarButton,\n StyledHorizontalToolbarButtonIcon,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface HorizontalToolbarButtonOwnProperties {\n // #region required\n // #region values\n text: string;\n // #endregion values\n\n // #region methods\n atClick: (\n event: React.MouseEvent,\n ) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n active?: boolean;\n icon?: React.FC;\n scaleIcon?: boolean;\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nconst HorizontalToolbarButton: React.FC<HorizontalToolbarButtonOwnProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n text,\n // #endregion values\n\n // #region methods\n atClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n active,\n scaleIcon,\n icon: Icon,\n theme: themeProperty,\n style,\n className,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const theme = themeProperty || themes.plurid;\n // #endregion properties\n\n\n // #region render\n return (\n <StyledHorizontalToolbarButton\n active={active}\n scaleIcon={scaleIcon}\n onClick={atClick}\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n {Icon && (\n <StyledHorizontalToolbarButtonIcon\n text={text}\n >\n <Icon />\n </StyledHorizontalToolbarButtonIcon>\n )}\n\n {text}\n </StyledHorizontalToolbarButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default HorizontalToolbarButton;\n// #endregion exports\n","// #region module\nexport enum SizeTypes {\n small = 'small',\n normal = 'normal',\n large = 'large',\n}\n\n\nexport enum HorizontalPositions {\n left = 'left',\n right = 'right',\n}\n\n\nexport enum VerticalPositions {\n top = 'top',\n bottom = 'bottom',\n}\n// #endregion module\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n VerticalPositions,\n } from '~data/enumerations';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledToolbarControls {\n position: keyof typeof VerticalPositions;\n theme: Theme;\n}\n\nexport const StyledToolbarControls = styled.div<IStyledToolbarControls>`\n top: ${\n ({ position, }: IStyledToolbarControls) => {\n if (position === VerticalPositions.top) {\n return '15px';\n }\n return 'initial';\n }\n };\n bottom: ${\n ({ position, }: IStyledToolbarControls) => {\n if (position === VerticalPositions.bottom) {\n return '15px';\n }\n return 'initial';\n }\n };\n\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n z-index: 99999;\n`;\n\n\ninterface IStyledToolbarControlsButtons {\n theme: Theme;\n}\n\nexport const StyledToolbarControlsButtons = styled.div<IStyledToolbarControlsButtons>`\n background-color: ${\n ({ theme, }: IStyledToolbarControlsButtons) => {\n return theme.backgroundColorSecondary;\n }\n };\n box-shadow: ${\n ({ theme, }: IStyledToolbarControlsButtons) => {\n return theme.boxShadowUmbra;\n }\n };\n\n display: flex;\n align-items: center;\n border-radius: 22.5px;\n min-height: 45px;\n height: 45px;\n padding: 0 22.5px;\n margin: 0 auto;\n font-size: 0.9rem;\n opacity: 1;\n height: 100%;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n plurid as pluridTheme,\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n VerticalPositions,\n } from '~data/enumerations';\n // #endregion external\n\n\n // #region internal\n import {\n StyledToolbarControls,\n StyledToolbarControlsButtons,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ToolbarControlsOwnProperties {\n // #region optional\n // #region values\n position?: keyof typeof VerticalPositions;\n\n theme?: Theme;\n style?: React.CSSProperties;\n className?: string;\n children?: React.ReactNode;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nexport type ToolbarControlsProperties = ToolbarControlsOwnProperties;\n\nconst ToolbarControls: React.FC<ToolbarControlsProperties> = (\n properties,\n) => {\n // #region optional\n const {\n // #region optional\n // #region values\n position: positionProperty,\n theme: themeProperty,\n style,\n className,\n\n children,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n } = properties;\n\n const position = positionProperty || VerticalPositions.top;\n const theme = themeProperty || pluridTheme;\n // #endregion optional\n\n\n // #region render\n return (\n <StyledToolbarControls\n position={position}\n theme={theme}\n style={{\n ...style,\n }}\n className={className}\n >\n <StyledToolbarControlsButtons\n theme={theme}\n >\n {children}\n </StyledToolbarControlsButtons>\n </StyledToolbarControls>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default ToolbarControls;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledVerticalToolbarButton {\n active: boolean;\n scaleIcon: boolean;\n first: boolean;\n last: boolean;\n theme: Theme;\n}\n\nexport const StyledVerticalToolbarButton: any = styled.div<IStyledVerticalToolbarButton>`\n position: relative;\n cursor: pointer;\n height: 40px;\n display: grid;\n place-content: center;\n transition: transform 50ms ease-in-out;\n\n border-top-left-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.first) {\n return '15px';\n }\n return '0';\n }};\n border-top-right-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.first) {\n return '15px';\n }\n return '0';\n }};\n\n border-bottom-left-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.last) {\n return '15px';\n }\n return '0';\n }};\n border-bottom-right-radius: ${(props: IStyledVerticalToolbarButton) => {\n if (props.last) {\n return '15px';\n }\n return '0';\n }};\n\n background-color: ${(props: IStyledVerticalToolbarButton) => {\n if (props.active) {\n return props.theme.backgroundColorTertiary;\n }\n return 'transparent';\n }};\n\n @media (hover: hover) {\n :hover {\n background: ${(props: IStyledVerticalToolbarButton) => {\n return props.theme.backgroundColorTertiary;\n }};\n }\n\n :hover svg {\n transform: ${(props: IStyledVerticalToolbarButton) => {\n if (props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n }\n\n svg {\n transition: transform 100ms linear;\n width: 15px;\n height: 15px;\n fill: ${(props: IStyledVerticalToolbarButton) => {\n return props.theme.colorPrimary;\n }};\n transform: ${(props: IStyledVerticalToolbarButton) => {\n if (props.active && props.scaleIcon) {\n return 'scale(1.2)';\n }\n return '';\n }};\n }\n`;\n\n\n\nexport interface IStyledVerticalToolbarButtonText {\n textLeft: boolean;\n}\n\nexport const StyledVerticalToolbarButtonText: any = styled.div<IStyledVerticalToolbarButtonText>`\n left: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return '-108px';\n }\n return '30px';\n }};\n justify-content: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return 'flex-end';\n }\n return 'left';\n }};\n text-align: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return 'right';\n }\n return 'left';\n }};\n padding-left: ${(props: IStyledVerticalToolbarButtonText) => {\n if (props.textLeft) {\n return '0';\n }\n return '8px';\n }};\n\n pointer-events: none;\n position: absolute;\n height: 40px;\n width: 100px;\n display: flex;\n align-items: center;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n } from 'react';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region internal\n import {\n StyledVerticalToolbarButton,\n StyledVerticalToolbarButtonText,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface VerticalToolbarButtonOwnProperties {\n atClick: (event: React.MouseEvent) => void;\n icon: React.FC;\n active: boolean;\n text: string;\n textLeft: boolean;\n showText: boolean;\n scaleIcon: boolean;\n theme: Theme;\n first?: boolean;\n last?: boolean;\n}\n\nconst VerticalToolbarButton: React.FC<VerticalToolbarButtonOwnProperties> = (\n properties,\n) => {\n // #region properties\n const {\n atClick,\n icon: Icon,\n active,\n text,\n textLeft,\n showText,\n scaleIcon,\n first,\n last,\n theme,\n } = properties;\n // #endregion properties\n\n\n // #region state\n const [mouseOver, setMouseOver] = useState(false);\n // #endregion state\n\n\n // #region render\n return (\n <StyledVerticalToolbarButton\n onMouseEnter={() => setMouseOver(true)}\n onMouseLeave={() => setMouseOver(false)}\n onClick={atClick}\n active={active}\n scaleIcon={scaleIcon}\n first={first}\n last={last}\n theme={theme}\n >\n <Icon />\n\n {mouseOver\n && showText\n && (\n <StyledVerticalToolbarButtonText\n textLeft={textLeft}\n >\n {text}\n </StyledVerticalToolbarButtonText>\n )}\n </StyledVerticalToolbarButton>\n );\n // #endregion render\n}\n// #endregion module\n\n\n\n// #region exports\nexport default VerticalToolbarButton;\n// #endregion exports\n","// #region imports\n // #region libraries\n import styled from 'styled-components';\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n HorizontalPositions,\n } from '~data/enumerations';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface IStyledToolbar {\n position: keyof typeof HorizontalPositions;\n}\n\nexport const StyledToolbar = styled.div<IStyledToolbar>`\n left: ${(props: IStyledToolbar) => {\n if (props.position === HorizontalPositions.left) {\n return '0';\n }\n return 'initial';\n }};\n right: ${(props: IStyledToolbar) => {\n if (props.position === HorizontalPositions.right) {\n return '0';\n }\n return 'initial';\n }};\n\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 60px;\n`;\n\n\nexport interface IStyledToolbarButtons {\n theme: Theme;\n}\n\nexport const StyledToolbarButtons = styled.div<IStyledToolbarButtons>`\n background-color: ${(props: IStyledToolbarButtons) => {\n return props.theme.backgroundColorSecondary;\n }};\n box-shadow: ${(props: IStyledToolbarButtons) => {\n return props.theme.boxShadowUmbra;\n }};\n\n pointer-events: all;\n display: grid;\n place-content: center;\n grid-template-columns: 1fr;\n grid-template-rows: 1fr;\n border-radius: 15px;\n margin: 0 15px;\n font-size: 12px;\n opacity: 1;\n width: 30px;\n height: auto;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n transition: opacity 300ms ease-in-out;\n z-index: 9999;\n user-select: none;\n`;\n// #endregion module\n","// #region imports\n // #region libraries\n import React, {\n useState,\n useEffect,\n } from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n // #endregion libraries\n\n\n // #region external\n import {\n ToolbarButton,\n } from '~data/interfaces';\n\n import {\n HorizontalPositions,\n } from '~data/enumerations';\n\n import VerticalToolbarButton from '../VerticalToolbarButton';\n // #endregion external\n\n\n // #region internal\n import {\n StyledToolbar,\n StyledToolbarButtons,\n } from './styled';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nexport interface ToolbarSpecificOwnProperties {\n buttons: ToolbarButton[],\n handleClick: (\n type: any,\n index: number,\n ) => void;\n activeType: any;\n selectors: any;\n position?: keyof typeof HorizontalPositions;\n\n children?: React.ReactNode;\n}\n\nexport interface ToolbarSpecificStateProperties {\n stateToolbars: any;\n stateIdentonym: string;\n stateInteractionTheme: Theme;\n}\n\nexport interface ToolbarSpecificDispatchProperties {\n}\n\nexport type ToolbarSpecificProperties = ToolbarSpecificOwnProperties\n & ToolbarSpecificStateProperties\n & ToolbarSpecificDispatchProperties;\n\nconst ToolbarSpecific: React.FC<ToolbarSpecificProperties> = (\n properties,\n) => {\n // #region properties\n const {\n /** own */\n buttons,\n handleClick,\n activeType,\n position,\n\n children,\n\n // #region state\n stateToolbars,\n stateIdentonym,\n stateInteractionTheme,\n // #endregion state\n } = properties;\n\n const {\n alwaysShow,\n location,\n scaleIcons,\n showNames,\n } = stateToolbars;\n\n const toolbarPosition = position\n ? position\n : HorizontalPositions.right;\n // #endregion properties\n\n\n // #region state\n const [showToolbar, setShowToolbar] = useState(alwaysShow);\n const [mouseIn, setMouseIn] = useState(false);\n // #endregion state\n\n\n // #region handlers\n const handleMouseMove = (\n event: any,\n ) => {\n if (!showToolbar) {\n setShowToolbar(true);\n }\n\n // TODO\n // move toolbar\n // if (event.shiftKey) {\n // }\n }\n // #endregion handlers\n\n\n // #region effects\n useEffect(() => {\n if (alwaysShow) {\n setShowToolbar(true);\n }\n\n if (mouseIn) {\n setShowToolbar(true);\n } else {\n if (!alwaysShow) {\n setShowToolbar(false);\n }\n }\n }, [\n mouseIn,\n alwaysShow,\n ]);\n // #endregion effects\n\n\n // #region render\n return (\n <StyledToolbar\n onMouseMove={() => handleMouseMove}\n onMouseEnter={() => setMouseIn(true)}\n onMouseLeave={() => setMouseIn(false)}\n position={toolbarPosition}\n >\n <StyledToolbarButtons\n theme={stateInteractionTheme}\n style = {{\n top: location ? location + '%' : '',\n opacity: showToolbar ? 1 : 0\n }}\n >\n {buttons.filter(button => {\n const {\n loggedIn,\n } = button;\n\n if (loggedIn === 'ONLY' && !stateIdentonym) {\n return false;\n }\n\n if (loggedIn === 'NONE' && stateIdentonym) {\n return false;\n }\n\n return true;\n }).map((\n button: ToolbarButton,\n index,\n ) => {\n const {\n type,\n text,\n icon: Icon,\n first,\n last,\n } = button;\n\n return (\n <VerticalToolbarButton\n key={type}\n atClick={() => handleClick(type, index)}\n icon={Icon}\n active={activeType === type}\n text={text}\n textLeft={toolbarPosition === 'right'}\n showText={showNames}\n scaleIcon={scaleIcons}\n theme={stateInteractionTheme}\n first={first}\n last={last}\n />\n );\n })}\n\n {children}\n </StyledToolbarButtons>\n </StyledToolbar>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n): ToolbarSpecificStateProperties => ({\n stateToolbars: ownProperties.selectors.product.getProductUI(state).toolbars,\n stateIdentonym: ownProperties.selectors.owner.getIdentonym(state),\n stateInteractionTheme: ownProperties.selectors.themes.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): ToolbarSpecificDispatchProperties => ({\n});\n\n\nconst ConnectedToolbarSpecific = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(ToolbarSpecific);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedToolbarSpecific;\n// #endregion exports\n","// #region imports\n // #region libraries\n import React from 'react';\n\n import {\n AnyAction,\n ThunkDispatch,\n } from '@reduxjs/toolkit';\n import { connect } from 'react-redux';\n\n\n import {\n Theme,\n } from '@plurid/plurid-themes';\n\n import {\n DispatchAction,\n sitting,\n } from '@plurid/plurid-ui-state-react';\n\n import {\n PluridIconSpeak,\n PluridIconStateShareImage,\n } from '@plurid/plurid-icons-react';\n // #endregion libraries\n\n\n // #region external\n import {\n ToolbarButton,\n } from '~data/interfaces';\n\n import {\n HorizontalPositions,\n } from '~data/enumerations';\n\n import ToolbarSpecific from '../ToolbarSpecific';\n import VerticalToolbarButton from '../VerticalToolbarButton';\n import SittingTray from '~components/pluridal/sitting/SittingTray';\n // #endregion external\n// #endregion imports\n\n\n\n// #region module\nexport interface ToolbarGeneralOwnProperties {\n // #region required\n // #region values\n buttons: ToolbarButton[],\n selectors: any;\n context: React.Context<any>;\n // #endregion values\n\n // #region methods\n handleClick: (type: any) => void;\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n speakButton?: boolean;\n sittingButton?: boolean;\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n}\n\nexport interface ToolbarGeneralStateProperties {\n stateView: string;\n stateToolbars: any;\n stateSittingTray: boolean;\n stateInteractionTheme: Theme;\n}\n\nexport interface ToolbarGeneralDispatchProperties {\n dispatchToggleSittingTray: DispatchAction<typeof sitting.actions.toggleSittingTray>;\n}\n\nexport type ToolbarGeneralProperties = ToolbarGeneralOwnProperties\n & ToolbarGeneralStateProperties\n & ToolbarGeneralDispatchProperties;\n\n\nconst ToolbarGeneral: React.FC<ToolbarGeneralProperties> = (\n properties,\n) => {\n // #region properties\n const {\n // #region required\n // #region values\n buttons,\n selectors,\n context,\n // #endregion values\n\n // #region methods\n handleClick,\n // #endregion methods\n // #endregion required\n\n // #region optional\n // #region values\n speakButton,\n sittingButton: sittingButtonProperty,\n // #endregion values\n\n // #region methods\n // #endregion methods\n // #endregion optional\n\n\n // #region state\n stateView,\n stateSittingTray,\n stateToolbars,\n stateInteractionTheme,\n // #endregion state\n\n\n // #region dispatch\n dispatchToggleSittingTray,\n // #endregion dispatch\n } = properties;\n\n const {\n scaleIcons,\n showNames,\n } = stateToolbars;\n\n const iconTextLeft = false;\n\n const sittingButton = sittingButtonProperty ?? true;\n // #endregion properties\n\n\n // #region render\n return (\n <ToolbarSpecific\n buttons={buttons}\n handleClick={handleClick}\n activeType={stateView}\n position={HorizontalPositions.left}\n selectors={selectors}\n context={context}\n >\n {speakButton && (\n <VerticalToolbarButton\n atClick={() => {}}\n icon={PluridIconSpeak}\n active={false}\n text=\"speak\"\n textLeft={iconTextLeft}\n showText={showNames}\n scaleIcon={scaleIcons}\n theme={stateInteractionTheme}\n />\n )}\n\n {sittingButton && (\n <>\n <VerticalToolbarButton\n atClick={() => dispatchToggleSittingTray()}\n icon={PluridIconStateShareImage}\n active={stateSittingTray}\n text=\"sitting\"\n textLeft={iconTextLeft}\n showText={showNames}\n scaleIcon={scaleIcons}\n theme={stateInteractionTheme}\n last={true}\n />\n\n {stateSittingTray && (\n <SittingTray\n selectors={selectors}\n context={context}\n />\n )}\n </>\n )}\n </ToolbarSpecific>\n );\n // #endregion render\n}\n\n\nconst mapStateToProperties = (\n state: any,\n ownProperties: any,\n): ToolbarGeneralStateProperties => ({\n stateView: ownProperties.selectors.views?.getGeneralView(state),\n stateToolbars: ownProperties.selectors.product?.getProductUI(state)?.toolbars,\n stateSittingTray: ownProperties.selectors.sitting?.getTray(state),\n stateInteractionTheme: ownProperties.selectors.themes?.getInteractionTheme(state),\n});\n\n\nconst mapDispatchToProperties = (\n dispatch: ThunkDispatch<{}, {}, AnyAction>,\n): ToolbarGeneralDispatchProperties => ({\n dispatchToggleSittingTray: () => dispatch(\n sitting.actions.toggleSittingTray(),\n ),\n});\n\n\nconst ConnectedToolbarGeneral = connect(\n mapStateToProperties,\n mapDispatchToProperties,\n)(ToolbarGeneral);\n// #endregion module\n\n\n\n// #region exports\nexport default ConnectedToolbarGeneral;\n// #endregion exports\n","// #region imports\n // #region internal\n import HorizontalToolbarButton from './HorizontalToolbarButton';\n import ToolbarControls from './ToolbarControls';\n import ToolbarGeneral from './ToolbarGeneral';\n import ToolbarSpecific from './ToolbarSpecific';\n import VerticalToolbarButton from './VerticalToolbarButton';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst toolbars = {\n HorizontalToolbarButton,\n ToolbarControls,\n ToolbarGeneral,\n ToolbarSpecific,\n VerticalToolbarButton,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default toolbars;\n// #endregion exports\n","// #region imports\n // #region internal\n import containers from './containers';\n import head from './head';\n import notifications from './notifications';\n import sitting from './sitting';\n import toolbars from './toolbars';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region module\nconst pluridal = {\n containers,\n head,\n notifications,\n sitting,\n toolbars,\n};\n// #endregion module\n\n\n\n// #region exports\nexport default pluridal;\n// #endregion exports\n","// #region imports\n // #region internal\n import universal from '~components/universal';\n import pluridal from '~components/pluridal';\n // #endregion internal\n// #endregion imports\n\n\n\n// #region exports\nexport * from './data/enumerations';\nexport * from './data/interfaces';\n\nexport default {\n ...universal.buttons,\n ...universal.form,\n ...universal.general,\n ...universal.inputs,\n ...universal.markers,\n ...universal.typography,\n ...universal.varia,\n\n ...pluridal.containers,\n ...pluridal.head,\n ...pluridal.notifications,\n ...pluridal.sitting,\n ...pluridal.toolbars,\n};\n\n\nconst {\n buttons: {\n LinkButton,\n PureButton,\n RefreshButton,\n },\n form: {\n FormLeftRight,\n FormObliterate,\n Formbutton,\n Formitem,\n Formline,\n },\n general: {\n GlobalStyles,\n },\n inputs: {\n Dropdown,\n EntityPill,\n EntityPillGroup,\n InputBox,\n InputDescriptor,\n InputLine,\n InputSwitch,\n Itemsline,\n Select,\n Slider,\n Switch,\n Textline,\n },\n markers: {\n HR,\n ProgressCircle,\n Spinner,\n Tooltip,\n },\n typography: {\n Heading,\n Paragraph,\n },\n varia: {\n CopyableLine,\n NewPageLink,\n ScrollableLine,\n TextItem,\n },\n} = universal;\n\nconst {\n containers: {\n DashboardsRenderer,\n EntityView,\n },\n head: {\n Head,\n },\n notifications: {\n Notification,\n Notifications,\n },\n sitting: {\n SittingTray,\n },\n toolbars: {\n HorizontalToolbarButton,\n ToolbarControls,\n ToolbarGeneral,\n ToolbarSpecific,\n VerticalToolbarButton,\n },\n} = pluridal;\n\n\nexport {\n universal,\n pluridal,\n\n\n LinkButton,\n PureButton,\n RefreshButton,\n\n FormLeftRight,\n FormObliterate,\n Formbutton,\n Formitem,\n Formline,\n\n GlobalStyles,\n\n Dropdown,\n EntityPill,\n EntityPillGroup,\n InputBox,\n InputDescriptor,\n InputLine,\n InputSwitch,\n Itemsline,\n Select,\n Slider,\n Switch,\n Textline,\n\n HR,\n ProgressCircle,\n Spinner,\n Tooltip,\n\n Heading,\n Paragraph,\n\n CopyableLine,\n NewPageLink,\n ScrollableLine,\n TextItem,\n\n\n DashboardsRenderer,\n EntityView,\n\n Head,\n\n Notification,\n Notifications,\n\n SittingTray,\n\n HorizontalToolbarButton,\n ToolbarControls,\n ToolbarGeneral,\n ToolbarSpecific,\n VerticalToolbarButton,\n};\n// #endregion exports\n"],"names":["StyledSpinner","styled","div","StyledLoader","props","size","theme","colorPrimary","Spinner","properties","style","className","themeValue","pluridTheme","sizeValue","React","createElement","StyledPureButton","button","level","isDisabled","backgroundColorPrimaryAlpha","backgroundColorPrimary","backgroundColorSecondary","backgroundColorTertiary","backgroundColorQuaternary","boxShadowUmbraColor","fontFamilySansSerif","StyledPureButtonDiv","attrs","as","PureButton","text","atClick","themeProperty","levelProperty","sizeProperty","disabled","loading","PluridSpinner","onClick","event","StyledLinkButton","colorSecondary","colorTertiary","inline","isActive","StyledLinkButtonLoading","DEFAULT_LEVEL","LinkButton","active","StyledRefreshButton","RefreshButton","textProperty","hideAtClick","hideAtClickProperty","hideTime","hideTimeProperty","isMounted","useRef","showIconReset","setShowIconReset","useState","atClickHandler","setTimeout","current","useEffect","PluridIconReset","title","inactive","opacity","buttons","StyledFormbutton","devisible","hoverEffect","StyledFormbuttonIcon","position","StyledFormbuttonText","Formbutton","Icon","link","target","iconPosition","hoverEffectProperty","_theme","_level","_devisible","_iconPosition","_inactive","render","Fragment","renderProperties","href","StyledFormitem","Formitem","children","StyledFormLeftRight","FormLeftRight","StyledFormline","responsive","StyledFormlineText","StyledFormlineElement","Formline","Element","undefined","_responsive","StyledFormObliterate","StyledObliterateContainer","FormObliterate","atObliterate","item","showObliterate","setShowObliterate","handleObliterate","PluridIconObliterate","form","GlobalStyles","createGlobalStyle","type","backgroundColorBright","backgroundColorDark","general","setNativeValue","element","value","valueSetter","Object","getOwnPropertyDescriptor","set","prototype","getPrototypeOf","prototypeValueSetter","call","StyledTextline","round","width","center","StyledEnterIcon","left","StyledErrorLine","Textline","forwardRef","reference","atChange","atKeyDown","atFocus","atBlur","placeholder","autoCapitalize","autoComplete","autoCorrect","spellCheck","error","enterIconLeft","enterEmpty","enterAtClick","escapeClear","ariaLabel","_type","plurid","_round","inputElement","handleKeyDown","key","_event","Event","bubbles","dispatchEvent","showEnterIcon","length","onChange","onKeyDown","onFocus","onBlur","paddingRight","ref","mergeReferences","StyledDropdown","StyledDropdownSelected","selectedColor","StyledDropdownList","listTop","heightItems","heightBeyond","StyledFilterable","StyledFilterUpdate","Dropdown","selected","selectables","atSelect","kind","dropdownToggled","dropdownSign","hideAtSelect","selectAtHover","filterable","generalTheme","generalThemeProperty","interactionTheme","interactionThemeProperty","setDropdownToggled","filterUpdate","_generalTheme","_interactionTheme","_hideAtSelect","_selectAtHover","_dropdownSign","filterInput","setGeneralTheme","setInteractionTheme","showList","setShowList","selectedBackgroundColor","setSelectedBackgroundColor","filterValue","setFilterValue","filteredSelectables","setFilteredSelectables","showFilterUpdate","setShowFilterUpdate","arrowIndex","setArrowIndex","select","handleSelect","handleHover","handleFiltering","toLowerCase","filter","selectable","filterSelectable","startsWith","split","itemsReferences","reduce","accumulator","_","index","createRef","focusFilterInput","focus","scrollTo","scrollIntoView","behavior","block","handleArrows","newIndex","handleScroll","window","addEventListener","removeEventListener","backgroundColor","boxShadow","boxShadowPenumbraInset","padding","map","selectableID","id","selectableValue","isSelected","onMouseEnter","StyledEntityPill","boxShadowUmbra","EntityPill","remove","textValue","marginRight","PluridIconDelete","StyledEntityPillGroup","EntityPillGroup","entities","keyFix","pillStyle","entity","stringEntity","StyledInputDescriptor","InputDescriptor","name","show","StyledInputBox","StyledTextBox","InputBox","PluridInputDescriptor","StyledInputLine","InputLine","textline","PluridTextline","StyledSwitch","label","levelBackgroundColor","accent","exclusive","checked","backgroundColorSecondaryAlpha","backgroundColorTertiaryAlpha","backgroundColorQuaternaryAlpha","StyledSwitchSlider","span","StyledSwitchIcon","Switch","commonProperties","StyledInputSwitch","compact","InputSwitch","switch","switchProperties","PluridFormLeftRight","marginLeft","PluridSwitch","StyledItemsline","Itemsline","items","removeItem","themes","_left","Math","random","StyledSelect","PluridSelect","StyledSlider","StyledNamedValue","StyledSliderValue","StyledSliderInputContainer","thumbSize","hovered","DEFAULT_VALUE","DEFAULT_MIN","DEFAULT_MAX","DEFAULT_STEP","DEFAULT_THUMB_SIZE","Slider","defaultValue","min","max","step","valueSign","namedValueAbove","mouseOver","setMouseOver","_thumbSize","_step","handleDoubleClick","handleSliderInput","parseFloat","onMouseLeave","onMouseMove","onDoubleClick","inputs","Select","StyledHR","hr","HR","StyledProgressCircle","ProgressCircle","progress","radius","stroke","progressValue","mathematics","numbers","normalizeBetween","radiusValue","diameter","strokeValue","normalizedRadius","circumference","PI","strokeDashoffset","height","fill","strokeWidth","r","cx","cy","strokeDasharray","StyledTooltip","StyledTooltipString","StyledTooltipIcon","StyledTooltipText","indicator","Tooltip","tool","Tool","tip","Tip","indicatorProperty","icon","iconProperty","mounted","useMounted","hoverOutTimeout","showTooltipText","setShowTooltipText","clearTimeout","renderTool","markers","StyledHeading1","h1","StyledHeading2","h2","StyledHeading3","h3","StyledHeading4","h4","StyledHeading5","h5","StyledHeading6","Heading","typeProperty","StyledParagraph","p","fontFamily","fontFamilySerif","Paragraph","fontFamilyProperty","typography","StyledCopyableLine","StyledData","CopyableLine","data","viewData","copyMessage","copyMessageTime","viewDataText","copyMessageText","copyMessageTimeValue","showCopyMessage","setShowCopyMessage","useFalseAfterTimedTrue","PluridIconCopy","clipboard","copy","StyledNewPageLink","a","NewPageLink","rel","StyledScrollableLine","ScrollableLine","StyledTextItem","TextItem","IconProperty","PluridIconInfo","varia","universal","StyledDashboardsRenderer","fullRenderArea","compactSelectors","StyledNoDashboardRender","StyledSidebar","StyledSelectors","helpItemsCount","StyledBranding","StyledHelp","StyledHelpItem","li","StyledSelector","StyledSelectorRelativeLabel","Selector","selectedDashboard","setSelectedDashboard","rendererID","selectorIcon","PluridIconSpace","Sidebar","dashboards","setCompactSelectors","identonym","usageType","openManual","logout","brandingName","brandingNameStyle","brandingLogo","openManualCount","usageTypeCount","mouseOverSelectors","setMouseOverSelectors","branding","src","alt","PluridIconArrowRight","selectors","dashboard","help","PluridIconDocuments","PluridIconExternalLink","PluridIconExit","StyledRenderArea","RenderArea","renderView","setRenderView","setFullRenderArea","find","resolveView","renderViewInDashboard","renderers","defaultRender","keys","renderID","DashboardRender","DashboardsRenderer","activeDashboard","activeRender","compactSelectorsProperty","fullRenderAreaProperty","noDashboardRender","atDashboardChange","atUIChange","StyledEntityView","StyledEntityViewTop","StyledEntityFilterLine","StyledEntityFilterCancel","filterLength","StyledTopButtons","StyledEntityListContainer","StyledEntityList","ul","boxShadowUmbraInset","header","css","StyledEntityListItem","rowTemplate","StyledActionButton","StyledNoRows","createSearchTerms","rows","fields","field","term","push","trim","PluridPureButton","EntityView","searchFields","rowsHeader","noRows","abstractRowRenderer","actionButtonText","placeholderText","scrollThrottleTime","scrollThrottleTimeProperty","rowRenderFields","rowRenderMethods","actionButtonClick","refresh","actionScrollBottom","bottomTimeout","entityList","searchTerms","setSearchTerms","filteredRows","setFilteredRows","searchValue","setSearchValue","setFilterLength","refreshClicked","setRefreshClicked","useThrottledCallback","scrolledAmount","scrollTop","getBoundingClientRect","bottomReached","scrollHeight","clearFilterValue","JSON","stringify","useImperativeHandle","resetFilterValue","getSearchTerms","row","containers","Head","Helmet","defaults","stateHead","robots","viewport","faviconIcon","favicon16","favicon32","manifest","themeColor","titleValue","descriptionValue","description","canonicalURL","ogTitleValue","ogTitle","ogDescriptionValue","ogDescription","ogImageValue","ogImage","ogURLValue","ogURL","apiDomain","ogImageWidth","ogImageHeight","ogSiteName","appleTouchIcon","styles","scripts","charSet","content","sizes","property","script","mapStateToProperties","state","ownProperties","head","getHead","mapDispatchToProperties","dispatch","ConnectedHead","connect","translateUp","keyframes","StyledNotification","StyledNotificationContent","wordBreak","StyledNotificationClose","Notification","elements","html","react","timeout","resolvedWordBreak","prepareForRemoval","setPrepareForRemoval","notificationTimeout","timeoutValue","resolveRender","contentProperties","dangerouslySetInnerHTML","createMarkup","StyledNotifications","Notifications","stateGeneralTheme","stateNotifications","dispatchRemoveNotification","notification","getGeneralTheme","notifications","getAll","payload","notificationsStateService","actions","ConnectedNotifications","StyledSittingTray","StyledSittingTrayContainer","StyledSittingTrayItem","StyledSittingTrayItemHeader","StyledSittingTrayItemBody","StyledSittingTrayButton","StyledSittingTrayButtonIcon","StyledSittingTrayButtonText","StyledStateLink","StyledStateLinkContainer","StyledStateLinkText","StyledStateLinkCopy","StateLink","currentLink","copyStateLink","setCurrentStateLink","currentStateLink","justifySelf","getInteractionTheme","sitting","getCurrentLink","ConnectedStateLink","StyledStateLine","StyledSliderStateButton","StyledSliderStateSliderContainer","StyledStateLineButtons","StyledStateLineButton","StyledStateLineContainer","StateLine","stateIndex","setStateIndex","maxStateSlider","handleStateIndex","PluridIconPlay","PluridIconBranch","PluridIconNewStateline","display","justifyContent","ConnectedStateLine","StyledStateImage","StyledStateShareImage","StyledStateShareImageButtons","StyledStateShareImageButtonsCopy","StyledStateShareImagePasteContainer","StateImage","message","setMessage","showPaste","setShowPaste","copyCurrentState","copyStateHistory","paste","alignItems","PluridIconStateShareImage","PluridIconCopyCurrentState","PluridIconCopyStateHistory","ConnectedStateImage","StyledSittings","Sittings","stateInteractionTheme","PluridIconSittings","ConnectedSittings","SittingTray","context","mapStatedToProperties","mapDispatchdToProperties","ConnectedSittingTray","StyledHorizontalToolbarButton","scaleIcon","StyledHorizontalToolbarButtonIcon","HorizontalToolbarButton","SizeTypes","HorizontalPositions","VerticalPositions","StyledToolbarControls","top","bottom","StyledToolbarControlsButtons","ToolbarControls","positionProperty","StyledVerticalToolbarButton","first","last","StyledVerticalToolbarButtonText","textLeft","VerticalToolbarButton","showText","StyledToolbar","right","StyledToolbarButtons","ToolbarSpecific","handleClick","activeType","stateToolbars","stateIdentonym","alwaysShow","location","scaleIcons","showNames","toolbarPosition","showToolbar","setShowToolbar","mouseIn","setMouseIn","handleMouseMove","loggedIn","product","getProductUI","toolbars","owner","getIdentonym","ConnectedToolbarSpecific","ToolbarGeneral","speakButton","sittingButton","sittingButtonProperty","stateView","stateSittingTray","dispatchToggleSittingTray","iconTextLeft","PluridIconSpeak","views","getGeneralView","getTray","toggleSittingTray","ConnectedToolbarGeneral","pluridal"],"mappings":"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"}