@equinor/echo-components 0.5.17 → 0.5.19-rc1

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 (101) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +62 -62
  3. package/dist/components/buttonWithPopover/ButtonWithPopover.d.ts +21 -21
  4. package/dist/components/contextMenu/ContextMenu.d.ts +35 -35
  5. package/dist/components/contextMenuPopover/DataInfoButton.d.ts +19 -19
  6. package/dist/components/contextMenuPopover/DataInfoPopover.d.ts +18 -18
  7. package/dist/components/datePicker/PopupHeader.d.ts +19 -19
  8. package/dist/components/datePicker/ReactDatePicker.d.ts +19 -19
  9. package/dist/components/dialogGenerator/DialogGenerator.d.ts +26 -26
  10. package/dist/components/dropdown/Dropdown.d.ts +37 -37
  11. package/dist/components/echoBottomBar/EchoBottomBar.d.ts +7 -7
  12. package/dist/components/echoCard/Body.d.ts +7 -7
  13. package/dist/components/echoCard/DateSection.d.ts +8 -8
  14. package/dist/components/echoCard/EchoCard.d.ts +7 -7
  15. package/dist/components/echoCard/LinkSection.d.ts +8 -8
  16. package/dist/components/echoCard/Title.d.ts +13 -13
  17. package/dist/components/echoCard/index.d.ts +14 -14
  18. package/dist/components/echoHeader/EchoHeader.d.ts +20 -20
  19. package/dist/components/echoTooltip/Tooltip/Tooltip.d.ts +10 -10
  20. package/dist/components/echoTooltip/Tooltip/useTooltip.d.ts +51 -51
  21. package/dist/components/echoTooltip/index.d.ts +10 -10
  22. package/dist/components/floatingActionButton/FloatingActionButton.d.ts +33 -33
  23. package/dist/components/floatingSearchBar/FloatingSearchBar.d.ts +31 -31
  24. package/dist/components/index.d.ts +22 -22
  25. package/dist/components/inlineTagIconLink/InlineTagIconLink.d.ts +12 -12
  26. package/dist/components/listItem/ListItem.d.ts +50 -50
  27. package/dist/components/listItem/index.d.ts +1 -1
  28. package/dist/components/listRow/ListRow.d.ts +29 -29
  29. package/dist/components/rightPanel/PanelStore.d.ts +9 -0
  30. package/dist/components/rightPanel/index.d.ts +5 -5
  31. package/dist/components/rightPanel/menuButton/MenuButton.d.ts +24 -26
  32. package/dist/components/rightPanel/panel/Panel.d.ts +18 -18
  33. package/dist/components/rightPanel/panelContent/PanelContent.d.ts +23 -21
  34. package/dist/components/rightPanel/panelWrapper/PanelWrapper.d.ts +21 -21
  35. package/dist/components/sidebarButton/SidebarButton.d.ts +61 -61
  36. package/dist/components/sidesheet/enums.d.ts +5 -5
  37. package/dist/components/sidesheet/index.d.ts +11 -11
  38. package/dist/components/sidesheet/sheet/Sheet.d.ts +19 -19
  39. package/dist/components/sidesheet/sheet/index.d.ts +1 -1
  40. package/dist/components/sidesheet/sheet/utils.d.ts +2 -2
  41. package/dist/components/sidesheet/sheetTopArea/SheetTopArea.d.ts +16 -16
  42. package/dist/components/sidesheet/sheetTopArea/index.d.ts +1 -1
  43. package/dist/components/splitView/SplitView.d.ts +14 -14
  44. package/dist/components/splitView/index.d.ts +8 -8
  45. package/dist/components/splitView/left/SplitViewLeft.d.ts +9 -9
  46. package/dist/components/tagContextMenu/TagContextMenu.d.ts +30 -30
  47. package/dist/components/timePicker/TimePicker.d.ts +12 -12
  48. package/dist/components/workOrderListItem/WorkOrderStatusLabel.d.ts +11 -11
  49. package/dist/components/workOrderListItem/WorkOrdertListItem.d.ts +10 -10
  50. package/dist/elements/draggableItemsWrapper/DraggableItemsWrapper.d.ts +18 -18
  51. package/dist/elements/icon/Icon.d.ts +20 -20
  52. package/dist/elements/index.d.ts +8 -8
  53. package/dist/elements/radioButtonGroup/RadioButtonGroup.d.ts +20 -20
  54. package/dist/elements/roundIconButton/RoundIconButton.d.ts +13 -13
  55. package/dist/elements/sliderField/SliderField.d.ts +25 -25
  56. package/dist/elements/tagIcon/TagIcon.d.ts +16 -16
  57. package/dist/elements/tagIcon/TagIconShadow.d.ts +13 -13
  58. package/dist/elements/textIconButton/TextIconButton.d.ts +19 -19
  59. package/dist/helpers/classnames.d.ts +5 -5
  60. package/dist/helpers/getIcon.d.ts +2 -2
  61. package/dist/helpers/index.d.ts +3 -3
  62. package/dist/helpers/tagCategoryIcon.d.ts +38 -38
  63. package/dist/hooks/index.d.ts +3 -3
  64. package/dist/hooks/useEventListener.d.ts +3 -3
  65. package/dist/hooks/useIsMobile.d.ts +5 -5
  66. package/dist/hooks/useKeyboardNavigation.d.ts +21 -21
  67. package/dist/icons/echoAssets/external.d.ts +5 -5
  68. package/dist/icons/echoAssets/index.d.ts +4 -4
  69. package/dist/icons/echoAssets/notifications.d.ts +9 -9
  70. package/dist/icons/echoAssets/punches.d.ts +4 -4
  71. package/dist/icons/echoAssets/workOrders.d.ts +11 -11
  72. package/dist/icons/index.d.ts +3 -3
  73. package/dist/index.d.ts +9 -9
  74. package/dist/index.js +1042 -449
  75. package/dist/index.js.map +1 -1
  76. package/dist/setupTests.d.ts +1 -1
  77. package/dist/structure/iconList/IconList.d.ts +32 -32
  78. package/dist/structure/iconList/createListRow.d.ts +14 -14
  79. package/dist/structure/index.d.ts +3 -3
  80. package/dist/structure/linkCard/LinkCard.d.ts +26 -26
  81. package/dist/structure/optionsList/OptionsList.d.ts +24 -24
  82. package/dist/theme/index.d.ts +1 -1
  83. package/dist/theme/themeConst.d.ts +66 -66
  84. package/dist/types/actionButton.d.ts +6 -6
  85. package/dist/types/dataInformation.d.ts +8 -8
  86. package/dist/types/draggableItem.d.ts +5 -5
  87. package/dist/types/expandableRowProps.d.ts +6 -6
  88. package/dist/types/iconItem.d.ts +4 -4
  89. package/dist/types/iconListItem.d.ts +6 -6
  90. package/dist/types/index.d.ts +11 -11
  91. package/dist/types/linkCardItem.d.ts +5 -5
  92. package/dist/types/menuItem.d.ts +11 -9
  93. package/dist/types/optionsItem.d.ts +6 -6
  94. package/dist/types/radioButtonItem.d.ts +4 -4
  95. package/dist/types/workOrderItem.d.ts +9 -9
  96. package/dist/utils/date.d.ts +1 -1
  97. package/dist/utils/index.d.ts +2 -2
  98. package/dist/utils/workorder.d.ts +3 -3
  99. package/package.json +125 -125
  100. package/dist/components/rightPanel/PanelContextWrapper.d.ts +0 -19
  101. package/dist/components/rightPanel/usePanelContext.d.ts +0 -8
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Icon as Icon$1, Button, DotProgress, Banner, CircularProgress, Typography, Dialog, Search, Radio, Slider, Menu, Autocomplete, Tooltip as Tooltip$1 } from '@equinor/eds-core-react';
2
2
  import * as React from 'react';
3
- import React__default, { useState, useEffect, useCallback, createElement, PureComponent, useRef, useLayoutEffect, useMemo, createContext, useContext, forwardRef, isValidElement, cloneElement } from 'react';
3
+ import React__default, { useState, useEffect, useCallback, createElement, PureComponent, useRef, useLayoutEffect, useMemo, createContext, useContext, forwardRef, isValidElement, cloneElement, useDebugValue } from 'react';
4
4
  import * as ReactDOM from 'react-dom';
5
5
  import ReactDOM__default, { createPortal } from 'react-dom';
6
6
  import * as edsIcons from '@equinor/eds-icons';
@@ -37,16 +37,16 @@ function styleInject(css, ref) {
37
37
  var css_248z$B = ":root{--xSmall:0.25rem;--small:0.5rem;--medium:1rem;--large:1.5rem;--xLarge:2rem;--black:#000;--white:#fff;--equiBlue1:#233746;--equiBlue2:#d7e1ed;--equiBlue3:#d5eaf4;--equiGray1:#87929a;--equiGray2:#b4bbc0;--equiGray3:#d1d5d8;--equiGray4:#e3e6e8;--equiGray5:#f7f7f7;--equiRed1:#ff1243;--darkEquiRed:#ce183e;--equiGreen1:#006f79;--equiGreen2:#deedee;--equiGreen3:#e6faec;--equiGreen4:#c3f3d2;--echoText:#3d3d3d;--disabledBackgroundColor:#eaeaea;--disabledColor:#6f6f6f;--pm01:#0f0;--pm02:#ff1493;--pm03:#0ff;--pm04:#9400d3;--pm05:#1e90ff;--pm06:#ffdead;--pm010:#ff4500;--pm015:#228b22;--pm020:#00008b;--onGoing:#fbca36;--done:#4bb748;--asBuilt:#007079;--planned:#4bb748;--future:#52c0ff;--historic:#ff7d98;--outOfService:#ff9200;--reserved:#243746;--voided:#eb0000;--default:#dcdcdc;--ok:#23ef2a;--os:#adaead;--pa:#f94693;--pb:#fd0;--unknown:#525252;--rfccSent:#bcf316;--rfccPartly:#c7f316;--rfcc:#60f316;--rfocSent:#0dccf2;--rfocPartly:#1accf2;--rfoc:#0d59f2;--rfccRejected:#ff1243;--rfocRejected:#ff1243;--handoverError:#eb0000;--priorityHigh:#ff1243;--priorityMedium:#fbca36;--systems:#d5eaf4;--locations:#3eb54a;--ofpDark:#f4d6a2;--ofpLight:#faebce;--warningText:#ad6200;--warningIcon:#ff9200;--warningBackground:#ffe7d6;--dropDownButtonBackground:#f0f0f0;--dropDownTextColor:grey;--searchBarBackground:#f7f7f7;--highSeverity:#ffc1c1;--mediumSeverity:#ffe7d6;--lowSeverity:#dce6ee;--defaultSeverity:#d5eaf4;--highSeverityText:#eb0000;--mediumSeverityText:#52c0ff;--lowSeverityText:#4bb748;--defaultSeverityText:#3d3d3d;--toggleActive:#4bb748;--toggleInactive:#b30d2f;--hoverIcon:#004f55;--hoverIconWithNotification:#b30d2f;--tertiaryText:#6f6f6f}#root,body,html{height:100%;overflow:hidden;width:100%}html[data-theme=dark]{--equiGreen1:#006f79}body,h1,h2,h3,h4,h5,h6,label,p{color:var(--echoText)}body,html,span{font-family:Equinor!important}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:#f7f7f7;border-radius:5px}::-webkit-scrollbar-thumb{background:#007079;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#004f55}button,input{appearance:none;background:transparent;border:inherit;color:inherit;font:inherit;outline:0}input,input:after,input:before{-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:auto}";
38
38
  styleInject(css_248z$B);
39
39
 
40
- /**
41
- * Component that work's as a eds icon wrapper, it imports all eds possible icons
42
- *
43
- * @param {IconProps} {
44
- * name: The name of the icon to be displayed
45
- * title: The html title to use
46
- * color:The color to icon should have
47
- * size: The wanted size of the icon. Possible values are 16, 24, 32, 40 and 48
48
- * }
49
- * @return {*} {JSX.Element} A icon for the provided information
40
+ /**
41
+ * Component that work's as a eds icon wrapper, it imports all eds possible icons
42
+ *
43
+ * @param {IconProps} {
44
+ * name: The name of the icon to be displayed
45
+ * title: The html title to use
46
+ * color:The color to icon should have
47
+ * size: The wanted size of the icon. Possible values are 16, 24, 32, 40 and 48
48
+ * }
49
+ * @return {*} {JSX.Element} A icon for the provided information
50
50
  */
51
51
  var Icon = function Icon(_ref) {
52
52
  var name = _ref.name,
@@ -358,17 +358,17 @@ var css_248z$A = ".dataInfoButton-module_button__N4F5j{background-color:var(--wh
358
358
  var style$a = {"button":"dataInfoButton-module_button__N4F5j","buttonWithBadge":"dataInfoButton-module_buttonWithBadge__Qjm3a"};
359
359
  styleInject(css_248z$A);
360
360
 
361
- /**
362
- * Component that renders a data information button with a badge to indicate the number of items under that scoped type
363
- *
364
- * @param {DataInfoButtonProps} { data } Contains data information related to how the button should be rendered
365
- * numberOfItems: If number is 1 or less no badge will be displayed on the button. If number is over 99,
366
- * then the text 99+ will be displayed. Otherwise the provided number will be displayed
367
- * label: The name of the data type, will be displayed on the button
368
- * ariaLabel: The aria label set on the button, if empty the label will be used
369
- * onTagInfoClicked: The method to be called when button is pressed
370
- * itemButtonClassName: Used to style button if default styling is not wanted. class name might need higher precedence for overriding existing styling e.g. "div.itemButtonClassName { background-color: blue !important}"
371
- * @return {*} {JSX.Element} Data information button with or without a badge based on the provided data object
361
+ /**
362
+ * Component that renders a data information button with a badge to indicate the number of items under that scoped type
363
+ *
364
+ * @param {DataInfoButtonProps} { data } Contains data information related to how the button should be rendered
365
+ * numberOfItems: If number is 1 or less no badge will be displayed on the button. If number is over 99,
366
+ * then the text 99+ will be displayed. Otherwise the provided number will be displayed
367
+ * label: The name of the data type, will be displayed on the button
368
+ * ariaLabel: The aria label set on the button, if empty the label will be used
369
+ * onTagInfoClicked: The method to be called when button is pressed
370
+ * itemButtonClassName: Used to style button if default styling is not wanted. class name might need higher precedence for overriding existing styling e.g. "div.itemButtonClassName { background-color: blue !important}"
371
+ * @return {*} {JSX.Element} Data information button with or without a badge based on the provided data object
372
372
  */
373
373
  var DataInfoButton = function DataInfoButton(_ref) {
374
374
  var data = _ref.data;
@@ -386,15 +386,15 @@ var css_248z$z = ".dataInfoPopover-module_wrapper__l8JCd{display:flex;flex-direc
386
386
  var style$9 = {"wrapper":"dataInfoPopover-module_wrapper__l8JCd","arrow":"dataInfoPopover-module_arrow__KXQ5a","optionsPopover":"dataInfoPopover-module_optionsPopover__ZPXbv","groupWrapper":"dataInfoPopover-module_groupWrapper__InWuY","banner":"dataInfoPopover-module_banner__QtiKf","infoMessage":"dataInfoPopover-module_infoMessage__lqzTe"};
387
387
  styleInject(css_248z$z);
388
388
 
389
- /**
390
- * Component that renders a popover with data information buttons
391
- *
392
- * @param {DataInfoPopoverProps} {
393
- * dataToShow: list of DataInformation objects to be displayed.
394
- * The itemType in these objects are used to group them together in the popover
395
- * isLoading: loading flag that tells if a dot progress should be displayed if data is being fetched
396
- * }
397
- * @return {*} {JSX.Element} Popover with data information buttons based on the provided DataInformation objects
389
+ /**
390
+ * Component that renders a popover with data information buttons
391
+ *
392
+ * @param {DataInfoPopoverProps} {
393
+ * dataToShow: list of DataInformation objects to be displayed.
394
+ * The itemType in these objects are used to group them together in the popover
395
+ * isLoading: loading flag that tells if a dot progress should be displayed if data is being fetched
396
+ * }
397
+ * @return {*} {JSX.Element} Popover with data information buttons based on the provided DataInformation objects
398
398
  */
399
399
  var DataInfoPopover = function DataInfoPopover(_ref) {
400
400
  var dataToShow = _ref.dataToShow,
@@ -455,16 +455,16 @@ var css_248z$y = ".buttonWithPopover-module_button__FDyTt{background-color:var(-
455
455
  var style$8 = {"button":"buttonWithPopover-module_button__FDyTt","wrapper":"buttonWithPopover-module_wrapper__-pQfB","spinner":"buttonWithPopover-module_spinner__LMbqe"};
456
456
  styleInject(css_248z$y);
457
457
 
458
- /**
459
- * Component that renders a round button, that opens a popover upon being clicked
460
- *
461
- * @param {ButtonWithPopoverProps} {
462
- * onShowMoreClicked: method called upon button clicked
463
- * fetchedData: array of DataInformation that popover should be displayed when button is clicked.
464
- * Meant to be the return value of the fetchDataToShow method
465
- * isLoading: flag to show loading state if data fetch takes some time
466
- * expanded: flag to determine if popover should be expanded or not
467
- * @return {*} {JSX.Element} Round button with belonging popover to display data information buttons
458
+ /**
459
+ * Component that renders a round button, that opens a popover upon being clicked
460
+ *
461
+ * @param {ButtonWithPopoverProps} {
462
+ * onShowMoreClicked: method called upon button clicked
463
+ * fetchedData: array of DataInformation that popover should be displayed when button is clicked.
464
+ * Meant to be the return value of the fetchDataToShow method
465
+ * isLoading: flag to show loading state if data fetch takes some time
466
+ * expanded: flag to determine if popover should be expanded or not
467
+ * @return {*} {JSX.Element} Round button with belonging popover to display data information buttons
468
468
  */
469
469
  var ButtonWithPopover = function ButtonWithPopover(_ref) {
470
470
  var onShowMoreClicked = _ref.onShowMoreClicked,
@@ -507,14 +507,14 @@ var css_248z$x = ".tagIcon-module_icon__FVhlT{border:3px solid var(--white);bord
507
507
  var styles$n = {"icon":"tagIcon-module_icon__FVhlT","shadow":"tagIcon-module_shadow__dAk0l"};
508
508
  styleInject(css_248z$x);
509
509
 
510
- /**
511
- * Component that will wrap the provided icon with a background color (usually the legend color)
512
- *
513
- * @param {TagIconProps} {
514
- * icon: Icon to be wrapped
515
- * legendColor: background color to apply. Need to be valid css color
516
- * }
517
- * @return {*} {JSX.Element} Wrapped icon with provided color
510
+ /**
511
+ * Component that will wrap the provided icon with a background color (usually the legend color)
512
+ *
513
+ * @param {TagIconProps} {
514
+ * icon: Icon to be wrapped
515
+ * legendColor: background color to apply. Need to be valid css color
516
+ * }
517
+ * @return {*} {JSX.Element} Wrapped icon with provided color
518
518
  */
519
519
  var TagIcon = function TagIcon(_ref) {
520
520
  var icon = _ref.icon,
@@ -527,12 +527,12 @@ var TagIcon = function TagIcon(_ref) {
527
527
  }, icon);
528
528
  };
529
529
 
530
- /**
531
- * Component that will wrap the provided child element in a shadow.
532
- * Should be used to add shadow to the tagIcon component
533
- *
534
- * @param {TagIconShadowWrapperProps} { children } Child element to wrap
535
- * @return {*} {JSX.Element} wrapped child element in a shadow
530
+ /**
531
+ * Component that will wrap the provided child element in a shadow.
532
+ * Should be used to add shadow to the tagIcon component
533
+ *
534
+ * @param {TagIconShadowWrapperProps} { children } Child element to wrap
535
+ * @return {*} {JSX.Element} wrapped child element in a shadow
536
536
  */
537
537
  var TagIconShadowWrapper = function TagIconShadowWrapper(_ref) {
538
538
  var children = _ref.children;
@@ -545,22 +545,22 @@ var css_248z$w = ".tagContextMenu-module_contextWrapper__o8wWz{border-radius:10r
545
545
  var styles$m = {"contextWrapper":"tagContextMenu-module_contextWrapper__o8wWz","contextWrapperExpanded":"tagContextMenu-module_contextWrapperExpanded__FJI8c","selected":"tagContextMenu-module_selected__4L6WK","tagInfoWrapper":"tagContextMenu-module_tagInfoWrapper__y4LBf","tagText":"tagContextMenu-module_tagText__8GaFk","tagHeader":"tagContextMenu-module_tagHeader__NW1El","tagDescription":"tagContextMenu-module_tagDescription__lrT1D","tagInfoIcon":"tagContextMenu-module_tagInfoIcon__AMpqu"};
546
546
  styleInject(css_248z$w);
547
547
 
548
- /**
549
- * Component that renders a tag context menu that can be expanded and closed upon click
550
- * The condensed variant will only display the the relevant tag icon
551
- * The expanded variant will display relevant tag icon, tag number and tag description
552
- *
553
- * @param {TagContextMenuProps} {
554
- * expanded: flag that state if the context menu should be expanded or not
555
- * setExpanded: method to update the expanded flag
556
- * tagNo: the tag no to display
557
- * description: the tag description
558
- * openTagInformation: method called when expanded context menu is called
559
- * selected: Flag to handle if there are multiple context menu's on a page, and a selected style should be applied
560
- * selectedClassName: styling used to handle multiple tag visible on the page at the same time, class will be added to tagIcon when context menu is not expanded
561
- * children: Meant to be used to pass TagIcon component to this component
562
- * }
563
- * @return {*} {JSX.Element} a tag context menu for the provided properties
548
+ /**
549
+ * Component that renders a tag context menu that can be expanded and closed upon click
550
+ * The condensed variant will only display the the relevant tag icon
551
+ * The expanded variant will display relevant tag icon, tag number and tag description
552
+ *
553
+ * @param {TagContextMenuProps} {
554
+ * expanded: flag that state if the context menu should be expanded or not
555
+ * setExpanded: method to update the expanded flag
556
+ * tagNo: the tag no to display
557
+ * description: the tag description
558
+ * openTagInformation: method called when expanded context menu is called
559
+ * selected: Flag to handle if there are multiple context menu's on a page, and a selected style should be applied
560
+ * selectedClassName: styling used to handle multiple tag visible on the page at the same time, class will be added to tagIcon when context menu is not expanded
561
+ * children: Meant to be used to pass TagIcon component to this component
562
+ * }
563
+ * @return {*} {JSX.Element} a tag context menu for the provided properties
564
564
  */
565
565
  var TagContextMenu = function TagContextMenu(_ref) {
566
566
  var expanded = _ref.expanded,
@@ -609,24 +609,24 @@ var css_248z$v = ".contextMenu-module_wrapper__p-0Zc{display:flex;flex-wrap:wrap
609
609
  var style$7 = {"wrapper":"contextMenu-module_wrapper__p-0Zc"};
610
610
  styleInject(css_248z$v);
611
611
 
612
- /**
613
- * Component that renders full context menu functionality, meant for displaying tag context menu.
614
- * With the ability to provide more information button and related popover that should be wrapped with the context menu
615
- *
616
- * @param {ContextMenuProps} {
617
- * icon: icon to be displayed
618
- * expanded: flag to determine if context menu should be expanded or not
619
- * legendColor: color used for the tag icon
620
- * setExpanded: method to update expanded flag
621
- * tagNo: The tag number to display
622
- * description: The tag description to display
623
- * positionStyle: The position styling element used to position the context menu
624
- * openTagInformation: Method that will be called when expanded context menu is clicked
625
- * selected: Flag to handle if there are multiple context menu's on a page, and a selected style should be applied
626
- * selectedClassName: styling used to handle multiple tag visible on the page at the same time, class will be added to tagIcon when context menu is not expanded
627
- * children: Related elements to display, e.g. more information button
628
- * }
629
- * @return {*} {JSX.Element} Context menu with relevant children wrapped
612
+ /**
613
+ * Component that renders full context menu functionality, meant for displaying tag context menu.
614
+ * With the ability to provide more information button and related popover that should be wrapped with the context menu
615
+ *
616
+ * @param {ContextMenuProps} {
617
+ * icon: icon to be displayed
618
+ * expanded: flag to determine if context menu should be expanded or not
619
+ * legendColor: color used for the tag icon
620
+ * setExpanded: method to update expanded flag
621
+ * tagNo: The tag number to display
622
+ * description: The tag description to display
623
+ * positionStyle: The position styling element used to position the context menu
624
+ * openTagInformation: Method that will be called when expanded context menu is clicked
625
+ * selected: Flag to handle if there are multiple context menu's on a page, and a selected style should be applied
626
+ * selectedClassName: styling used to handle multiple tag visible on the page at the same time, class will be added to tagIcon when context menu is not expanded
627
+ * children: Related elements to display, e.g. more information button
628
+ * }
629
+ * @return {*} {JSX.Element} Context menu with relevant children wrapped
630
630
  */
631
631
  var ContextMenu = function ContextMenu(_ref) {
632
632
  var icon = _ref.icon,
@@ -13527,19 +13527,19 @@ var css_248z$q = ".dialogGenerator-module_footer__h-ido{box-sizing:border-box;di
13527
13527
  var styles$l = {"footer":"dialogGenerator-module_footer__h-ido"};
13528
13528
  styleInject(css_248z$q);
13529
13529
 
13530
- /**
13531
- * Component that renders a dialog box based on input properties
13532
- *
13533
- * @param {DialogGeneratorProps} {
13534
- * dialogStyle: style property to override existing styling on the dialog wrapper
13535
- * title: the title of the dialog
13536
- * children: The main content of the dialog
13537
- * actionButtons: the buttons to show in the dialog
13538
- * open: if the dialog should be open
13539
- * isDismissable: if the modal is closable by clicking aside or by hitting ESC key
13540
- * onClose: callback to be called when the dialog is closed
13541
- * }
13542
- * @return {*} {JSX.Element} Dialog component
13530
+ /**
13531
+ * Component that renders a dialog box based on input properties
13532
+ *
13533
+ * @param {DialogGeneratorProps} {
13534
+ * dialogStyle: style property to override existing styling on the dialog wrapper
13535
+ * title: the title of the dialog
13536
+ * children: The main content of the dialog
13537
+ * actionButtons: the buttons to show in the dialog
13538
+ * open: if the dialog should be open
13539
+ * isDismissable: if the modal is closable by clicking aside or by hitting ESC key
13540
+ * onClose: callback to be called when the dialog is closed
13541
+ * }
13542
+ * @return {*} {JSX.Element} Dialog component
13543
13543
  */
13544
13544
  var DialogGenerator = function DialogGenerator(_ref) {
13545
13545
  var dialogStyle = _ref.dialogStyle,
@@ -14498,24 +14498,24 @@ var _EchoUtils$Hooks = EchoUtils.Hooks,
14498
14498
  useFocus$1 = _EchoUtils$Hooks.useFocus,
14499
14499
  useOnOutsideClick = _EchoUtils$Hooks.useOnOutsideClick;
14500
14500
  var generateRandomId = EchoUtils.Utils.generateRandomId;
14501
- /**
14502
- * Component that renders a dropdown menu, e.g., for a plant selector.
14503
- * Additional possibility to make the list searchable by adding a search field.
14504
- * @param {DropdownItemProps} {
14505
- * selected: The item that is currently selected from the list.
14506
- * data: The list of data items to be displayed in the dropdown.
14507
- * placeholder: Placeholder text to be displayed when no item is selected.
14508
- * openDownWards: Flag which decides if the menu is opened downwards or upwards.
14509
- * filterFunc: Function which filters the list of data based on the value of the search field.
14510
- * setSelected: Function for setting the selected item.
14511
- * isDisabled: Flag which disables the dropdown.
14512
- * disabledText: The title text that displays when the dropdown is disabled.
14513
- * variant: Decides which style the dropdown should have. Either default or compact.
14514
- * showSearch: Flag which decides whether we should include the search field or not.
14515
- * position: Determines if the dropdown position should be relative or absolute.
14516
- * triggerOpen: Callback to trigger when the dropdown is opened.
14517
- * }
14518
- * @return {*} {JSX.Element} The dropdown component.
14501
+ /**
14502
+ * Component that renders a dropdown menu, e.g., for a plant selector.
14503
+ * Additional possibility to make the list searchable by adding a search field.
14504
+ * @param {DropdownItemProps} {
14505
+ * selected: The item that is currently selected from the list.
14506
+ * data: The list of data items to be displayed in the dropdown.
14507
+ * placeholder: Placeholder text to be displayed when no item is selected.
14508
+ * openDownWards: Flag which decides if the menu is opened downwards or upwards.
14509
+ * filterFunc: Function which filters the list of data based on the value of the search field.
14510
+ * setSelected: Function for setting the selected item.
14511
+ * isDisabled: Flag which disables the dropdown.
14512
+ * disabledText: The title text that displays when the dropdown is disabled.
14513
+ * variant: Decides which style the dropdown should have. Either default or compact.
14514
+ * showSearch: Flag which decides whether we should include the search field or not.
14515
+ * position: Determines if the dropdown position should be relative or absolute.
14516
+ * triggerOpen: Callback to trigger when the dropdown is opened.
14517
+ * }
14518
+ * @return {*} {JSX.Element} The dropdown component.
14519
14519
  */
14520
14520
  var Dropdown = function Dropdown(_ref) {
14521
14521
  var selected = _ref.selected,
@@ -14916,16 +14916,16 @@ var css_248z$m = ".echoHeader-module_headerWrapper__1aaPR{background-color:#fff;
14916
14916
  var styles$i = {"headerWrapper":"echoHeader-module_headerWrapper__1aaPR","headerContainer":"echoHeader-module_headerContainer__jHC0e","moduleIcon":"echoHeader-module_moduleIcon__-U7mU","titleSection":"echoHeader-module_titleSection__macuj","moduleTextTitle":"echoHeader-module_moduleTextTitle__CiJzX","plantName":"echoHeader-module_plantName__eNNEy","customSection":"echoHeader-module_customSection__gGG2C"};
14917
14917
  styleInject(css_248z$m);
14918
14918
 
14919
- /**
14920
- * Component that renders the Echo header
14921
- *
14922
- * @param {EchoHeaderProps} {
14923
- * moduleTitle: the title of the module
14924
- * moduleIcon: the module Icon
14925
- * plantName: show the plant name next to the module title
14926
- * customSection: a section in the header where there can be custom components
14927
- * }
14928
- * @returns {*} {JSX.Element} Echo header with custom section
14919
+ /**
14920
+ * Component that renders the Echo header
14921
+ *
14922
+ * @param {EchoHeaderProps} {
14923
+ * moduleTitle: the title of the module
14924
+ * moduleIcon: the module Icon
14925
+ * plantName: show the plant name next to the module title
14926
+ * customSection: a section in the header where there can be custom components
14927
+ * }
14928
+ * @returns {*} {JSX.Element} Echo header with custom section
14929
14929
  */
14930
14930
  var EchoHeader = function EchoHeader(_ref) {
14931
14931
  var _ref$moduleTitle = _ref.moduleTitle,
@@ -16970,10 +16970,10 @@ var getEchoVariantStyle = function getEchoVariantStyle(echoVariant) {
16970
16970
  return '';
16971
16971
  }
16972
16972
  };
16973
- /**
16974
- * Floating actions buttons exists within the viewport, seperated from any sheet, dialog or menu
16975
- * and are typically used for special actions pertaining to the module they are used in.
16976
- * @return {*} {JSX.Element} Floating actions button
16973
+ /**
16974
+ * Floating actions buttons exists within the viewport, seperated from any sheet, dialog or menu
16975
+ * and are typically used for special actions pertaining to the module they are used in.
16976
+ * @return {*} {JSX.Element} Floating actions button
16977
16977
  */
16978
16978
  var FloatingActionButton = function FloatingActionButton(_ref) {
16979
16979
  var label = _ref.label,
@@ -17020,9 +17020,9 @@ var useEventListener = function useEventListener(eventName, handler, options) {
17020
17020
  };
17021
17021
 
17022
17022
  var useInitial = EchoUtils.Hooks.useInitial;
17023
- /**
17024
- * Hook for checking if page is loaded from mobile device.
17025
- * @returns boolean true if on mobile.
17023
+ /**
17024
+ * Hook for checking if page is loaded from mobile device.
17025
+ * @returns boolean true if on mobile.
17026
17026
  */
17027
17027
  function useIsMobile() {
17028
17028
  var _useState = useState(false),
@@ -17082,11 +17082,11 @@ var useListNavigator = function useListNavigator(listLength) {
17082
17082
  }, listenerTarget);
17083
17083
  return currIndex;
17084
17084
  };
17085
- /**
17086
- * 1. On open: focus should be undefined/inactive. (list should scroll/show selected item if any).
17087
- * 2. user presses a key (usually down) - scroll list to focused element, which should be first item
17088
- * in the first section. Also set focused section.
17089
- * 3. Potentially jump to last in list if user goes up?
17085
+ /**
17086
+ * 1. On open: focus should be undefined/inactive. (list should scroll/show selected item if any).
17087
+ * 2. user presses a key (usually down) - scroll list to focused element, which should be first item
17088
+ * in the first section. Also set focused section.
17089
+ * 3. Potentially jump to last in list if user goes up?
17090
17090
  */
17091
17091
  var useSectionNavigator = function useSectionNavigator(sections, initialSelected, keyboardEvents) {
17092
17092
  var listenerTarget = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : document;
@@ -17457,23 +17457,23 @@ var TagCategoryType;
17457
17457
  TagCategoryType["JunctionBox"] = "junction box";
17458
17458
  TagCategoryType["Administrative"] = "administrative";
17459
17459
  })(TagCategoryType || (TagCategoryType = {}));
17460
- /**
17461
- * Method that returns the relevant Icon for the tagCategoryDescription provided
17462
- * Tag icon is the default JSX.Element Icon returned
17463
- * @export
17464
- * @param {('electrical'
17465
- * | 'main equipment'
17466
- * | 'line'
17467
- * | 'manual valve'
17468
- * | 'circuit/starter'
17469
- * | 'instrument'
17470
- * | 'cable'
17471
- * | 'function'
17472
- * | 'signal'
17473
- * | 'telecom'
17474
- * | 'junction box'
17475
- * | 'administrative'
17476
- * @return {*} {JSX.Element} Relevant icon for the provided tagCategoryDescription
17460
+ /**
17461
+ * Method that returns the relevant Icon for the tagCategoryDescription provided
17462
+ * Tag icon is the default JSX.Element Icon returned
17463
+ * @export
17464
+ * @param {('electrical'
17465
+ * | 'main equipment'
17466
+ * | 'line'
17467
+ * | 'manual valve'
17468
+ * | 'circuit/starter'
17469
+ * | 'instrument'
17470
+ * | 'cable'
17471
+ * | 'function'
17472
+ * | 'signal'
17473
+ * | 'telecom'
17474
+ * | 'junction box'
17475
+ * | 'administrative'
17476
+ * @return {*} {JSX.Element} Relevant icon for the provided tagCategoryDescription
17477
17477
  */
17478
17478
  var TagCategoryIcon = function TagCategoryIcon(_ref) {
17479
17479
  var tagCategoryDescription = _ref.tagCategoryDescription;
@@ -17540,12 +17540,12 @@ function getIcon(tagCategoryDescription) {
17540
17540
  });
17541
17541
  }
17542
17542
 
17543
- /**
17544
- * Floating search bar
17545
- *
17546
- * @param {FloatingSearchBarProps} {
17547
- * }
17548
- * @return {*} {JSX.Element}
17543
+ /**
17544
+ * Floating search bar
17545
+ *
17546
+ * @param {FloatingSearchBarProps} {
17547
+ * }
17548
+ * @return {*} {JSX.Element}
17549
17549
  */
17550
17550
  var FloatingSearchBar = function FloatingSearchBar(_ref) {
17551
17551
  var ariaLabel = _ref.ariaLabel,
@@ -22038,15 +22038,15 @@ Please read the updated README.md at https://github.com/SortableJS/react-sortabl
22038
22038
  } (dist));
22039
22039
 
22040
22040
  var DraggableHandleSelector = 'globalDraggableHandle';
22041
- /**
22042
- * Component that renders a wrapper for items that are draggable
22043
- *
22044
- * @param {DraggableItemsWrapperProps} {
22045
- * style: style element to override wrapper style
22046
- * onChange: method that will be called when elements have be reordered inside the wrapper
22047
- * children: list of elements that can be reordered
22048
- * }
22049
- * @return {*} {JSX.Element}
22041
+ /**
22042
+ * Component that renders a wrapper for items that are draggable
22043
+ *
22044
+ * @param {DraggableItemsWrapperProps} {
22045
+ * style: style element to override wrapper style
22046
+ * onChange: method that will be called when elements have be reordered inside the wrapper
22047
+ * children: list of elements that can be reordered
22048
+ * }
22049
+ * @return {*} {JSX.Element}
22050
22050
  */
22051
22051
  var DraggableItemsWrapper = function DraggableItemsWrapper(_ref) {
22052
22052
  var style = _ref.style,
@@ -22091,16 +22091,16 @@ var css_248z$h = ".radioButton-module_buttonWrapper__gzYAz span,.radioButton-mod
22091
22091
  var styles$f = {"header":"radioButton-module_header__f6AoN","buttonWrapper":"radioButton-module_buttonWrapper__gzYAz"};
22092
22092
  styleInject(css_248z$h);
22093
22093
 
22094
- /**
22095
- * Component that renders a Radio Button Group with a set of options to choose from
22096
- *
22097
- * @param {RadioButtonGroupProps} {
22098
- * title: The title of the radio button group,
22099
- * options: List of items to be displayed as options,
22100
- * style: Style element to override wrapper style,
22101
- * onSelected: Method to be called when the selected value is changed
22102
- * }
22103
- * @return {*} {JSX.Element}
22094
+ /**
22095
+ * Component that renders a Radio Button Group with a set of options to choose from
22096
+ *
22097
+ * @param {RadioButtonGroupProps} {
22098
+ * title: The title of the radio button group,
22099
+ * options: List of items to be displayed as options,
22100
+ * style: Style element to override wrapper style,
22101
+ * onSelected: Method to be called when the selected value is changed
22102
+ * }
22103
+ * @return {*} {JSX.Element}
22104
22104
  */
22105
22105
  var RadioButtonGroup = function RadioButtonGroup(_ref) {
22106
22106
  var title = _ref.title,
@@ -22164,19 +22164,19 @@ var css_248z$f = ".sliderField-module_sliderField__gp6ce{display:flex;flex-direc
22164
22164
  var styles$e = {"sliderField":"sliderField-module_sliderField__gp6ce","sliderWrapper":"sliderField-module_sliderWrapper__pAwLd"};
22165
22165
  styleInject(css_248z$f);
22166
22166
 
22167
- /**
22168
- * Component that renders a slider with numeric or custom values
22169
- *
22170
- * @param {SliderFieldProps} {
22171
- * value: Current value of the slider,
22172
- * min: Minimum value of the slider,
22173
- * max: Maximum value of the slider,
22174
- * labels: List of labels to use if the slider should not display numeric values,
22175
- * title: Text shown as title of the slider,
22176
- * onChange: Method that will be called if the slider value is changed,
22177
- * style: style element to override wrapper style
22178
- * }
22179
- * @return {*} {JSX.Element}
22167
+ /**
22168
+ * Component that renders a slider with numeric or custom values
22169
+ *
22170
+ * @param {SliderFieldProps} {
22171
+ * value: Current value of the slider,
22172
+ * min: Minimum value of the slider,
22173
+ * max: Maximum value of the slider,
22174
+ * labels: List of labels to use if the slider should not display numeric values,
22175
+ * title: Text shown as title of the slider,
22176
+ * onChange: Method that will be called if the slider value is changed,
22177
+ * style: style element to override wrapper style
22178
+ * }
22179
+ * @return {*} {JSX.Element}
22180
22180
  */
22181
22181
  var SliderField = function SliderField(_ref) {
22182
22182
  var value = _ref.value,
@@ -22222,16 +22222,16 @@ var css_248z$e = ".textIconButton-module_button__9s6rE{align-items:center;border
22222
22222
  var styles$d = {"button":"textIconButton-module_button__9s6rE","text":"textIconButton-module_text__hw0bg"};
22223
22223
  styleInject(css_248z$e);
22224
22224
 
22225
- /**
22226
- * Component that renders a button with the icon and the text provided
22227
- *
22228
- * @param {TextIconButtonProps} {
22229
- * icon: the name of the icon to display
22230
- * title: the title text that the button should display
22231
- * onClick: the function that will be called when user clicks the button
22232
- * style: Optional parameter that will override the button style
22233
- * }
22234
- * @return {*} {JSX.Element} A button with the provided icon and text
22225
+ /**
22226
+ * Component that renders a button with the icon and the text provided
22227
+ *
22228
+ * @param {TextIconButtonProps} {
22229
+ * icon: the name of the icon to display
22230
+ * title: the title text that the button should display
22231
+ * onClick: the function that will be called when user clicks the button
22232
+ * style: Optional parameter that will override the button style
22233
+ * }
22234
+ * @return {*} {JSX.Element} A button with the provided icon and text
22235
22235
  */
22236
22236
  var TextIconButton = function TextIconButton(_ref) {
22237
22237
  var icon = _ref.icon,
@@ -22258,24 +22258,24 @@ var css_248z$d = ".listRow-module_wrapper__j5Czq{border-bottom:1px solid #dcdcdc
22258
22258
  var styles$c = {"wrapper":"listRow-module_wrapper__j5Czq","row":"listRow-module_row__5taKB","infoCol":"listRow-module_infoCol__fSiO5","draggable":"listRow-module_draggable__WoQYD","info":"listRow-module_info__fX3UU","iconCol":"listRow-module_iconCol__A4oE0","activeIconButton":"listRow-module_activeIconButton__GdFjq","iconButton":"listRow-module_iconButton__j9G0z","expandedRow":"listRow-module_expandedRow__DdJu5","close":"listRow-module_close__gdtqH"};
22259
22259
  styleInject(css_248z$d);
22260
22260
 
22261
- /**
22262
- * Component that renders one row in a list. The row can be marked as draggable and expandable
22263
- *
22264
- * @param {ListRowProps} {
22265
- * isDraggable: flag to indicate that the row can be rearranged in a list
22266
- * item: { The item to be rendered in the row
22267
- * title: the title of the item in the row
22268
- * subtitle: the subtitle of the item in the row
22269
- * icons: the icons that will be displayed on the same row, and their respective actions
22270
- * }
22271
- * expandable: { object with properties to handle if the row is expandable. If undefined the row cannot be expanded
22272
- * iconItems: the items that will be displayed if row is expanded, and their respective actions
22273
- * expanded: flag to indicate if the row is expanded or not
22274
- * setExpanded: method that updates the expanded flag
22275
- * }
22276
- * style: style element to override wrapper style
22277
- * }
22278
- * @return {*} {JSX.Element} a row element to be used in a list
22261
+ /**
22262
+ * Component that renders one row in a list. The row can be marked as draggable and expandable
22263
+ *
22264
+ * @param {ListRowProps} {
22265
+ * isDraggable: flag to indicate that the row can be rearranged in a list
22266
+ * item: { The item to be rendered in the row
22267
+ * title: the title of the item in the row
22268
+ * subtitle: the subtitle of the item in the row
22269
+ * icons: the icons that will be displayed on the same row, and their respective actions
22270
+ * }
22271
+ * expandable: { object with properties to handle if the row is expandable. If undefined the row cannot be expanded
22272
+ * iconItems: the items that will be displayed if row is expanded, and their respective actions
22273
+ * expanded: flag to indicate if the row is expanded or not
22274
+ * setExpanded: method that updates the expanded flag
22275
+ * }
22276
+ * style: style element to override wrapper style
22277
+ * }
22278
+ * @return {*} {JSX.Element} a row element to be used in a list
22279
22279
  */
22280
22280
  var ListRow = function ListRow(_ref) {
22281
22281
  var isDraggable = _ref.isDraggable,
@@ -22351,31 +22351,29 @@ var css_248z$c = ".menuButton-module_button__qpHsn{align-items:center;border-lef
22351
22351
  var styles$b = {"button":"menuButton-module_button__qpHsn","text":"menuButton-module_text__MiZeF","active":"menuButton-module_active__1Dznq"};
22352
22352
  styleInject(css_248z$c);
22353
22353
 
22354
- /**
22355
- * The menu bottom items
22356
- * On desktop it will have an active border on the left,
22357
- * and on mobile the active border will be on the bottom
22358
- * Contains an icon and a descriptive text
22359
- * @param {*} {
22360
- * text, the text below the icon, also displayed on hover
22361
- * active, boolean describing the buttons active state
22362
- * children, the icon to be displayed
22363
- * onClick, the on click event
22364
- * refValue, a reference value in case its needed
22365
- * id: the id of the button in case its needed
22366
- * }
22367
- * @return {*} {JSX.Element}
22354
+ /**
22355
+ * The menu bottom items
22356
+ * On desktop it will have an active border on the left,
22357
+ * and on mobile the active border will be on the bottom
22358
+ * Contains an icon and a descriptive text
22359
+ * @param {*} {
22360
+ * text, the text below the icon, also displayed on hover
22361
+ * active, boolean describing the buttons active state
22362
+ * children, the icon to be displayed
22363
+ * onClick, the on click event
22364
+ * id: the id of the button in case its needed
22365
+ * }
22366
+ * @return {*} {JSX.Element}
22368
22367
  */
22369
- var MenuButton = function MenuButton(_ref) {
22370
- var text = _ref.text,
22371
- active = _ref.active,
22372
- children = _ref.children,
22373
- onClick = _ref.onClick,
22374
- refValue = _ref.refValue,
22375
- id = _ref.id;
22368
+ var MenuButton = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
22369
+ var text = props.text,
22370
+ active = props.active,
22371
+ children = props.children,
22372
+ onClick = props.onClick,
22373
+ id = props.id;
22376
22374
  return /*#__PURE__*/React__default.createElement("button", {
22377
22375
  title: text,
22378
- ref: refValue,
22376
+ ref: ref,
22379
22377
  type: "button",
22380
22378
  onClick: onClick,
22381
22379
  id: id,
@@ -22383,61 +22381,12 @@ var MenuButton = function MenuButton(_ref) {
22383
22381
  }, children, /*#__PURE__*/React__default.createElement(Typography, {
22384
22382
  className: styles$b.text
22385
22383
  }, text));
22386
- };
22384
+ });
22385
+ MenuButton.displayName = 'MenuButton';
22387
22386
  MenuButton.defaultProps = {
22388
- refValue: undefined,
22389
22387
  id: ''
22390
22388
  };
22391
22389
 
22392
- /**
22393
- * Panel context with default initialized values
22394
- *
22395
- */
22396
- var PanelContext = /*#__PURE__*/React__default.createContext({
22397
- activePanel: undefined,
22398
- panelSize: 'wide',
22399
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- need to match interface
22400
- updateActivePanel: function updateActivePanel(newActivePanel) {
22401
- throw new Error('Panel Context not initialized use Panel component');
22402
- },
22403
- // eslint-disable-next-line @typescript-eslint/no-unused-vars -- need to match interface
22404
- updatePanelSize: function updatePanelSize(newPanelSize) {
22405
- throw new Error('Panel Context not initialized use Panel component');
22406
- }
22407
- });
22408
- /**
22409
- * The panel context wrapper that should be used within Panel component to store the state of the panel
22410
- *
22411
- */
22412
- var PanelContextWrapper = function PanelContextWrapper(_ref) {
22413
- var children = _ref.children;
22414
- var _React$useState = React__default.useState(undefined),
22415
- _React$useState2 = _slicedToArray(_React$useState, 2),
22416
- activePanel = _React$useState2[0],
22417
- setActivePanel = _React$useState2[1];
22418
- var updateActivePanel = React__default.useCallback(function (newActivePanel) {
22419
- return setActivePanel(newActivePanel);
22420
- }, []);
22421
- var _React$useState3 = React__default.useState('wide'),
22422
- _React$useState4 = _slicedToArray(_React$useState3, 2),
22423
- panelSize = _React$useState4[0],
22424
- setPanelSize = _React$useState4[1];
22425
- var updatePanelSize = React__default.useCallback(function (newPanelSize) {
22426
- return setPanelSize(newPanelSize);
22427
- }, []);
22428
- var value = React__default.useMemo(function () {
22429
- return {
22430
- activePanel: activePanel,
22431
- updateActivePanel: updateActivePanel,
22432
- panelSize: panelSize,
22433
- updatePanelSize: updatePanelSize
22434
- };
22435
- }, [activePanel, panelSize, updateActivePanel, updatePanelSize]);
22436
- return /*#__PURE__*/React__default.createElement(PanelContext.Provider, {
22437
- value: value
22438
- }, children);
22439
- };
22440
-
22441
22390
  /**
22442
22391
  * lodash (Custom Build) <https://lodash.com/>
22443
22392
  * Build: `lodash modularize exports="npm" -o ./`
@@ -22878,47 +22827,608 @@ function toNumber(value) {
22878
22827
 
22879
22828
  var lodash_throttle = throttle;
22880
22829
 
22830
+ const createStoreImpl = (createState) => {
22831
+ let state;
22832
+ const listeners = /* @__PURE__ */ new Set();
22833
+ const setState = (partial, replace) => {
22834
+ const nextState = typeof partial === "function" ? partial(state) : partial;
22835
+ if (!Object.is(nextState, state)) {
22836
+ const previousState = state;
22837
+ state = (replace != null ? replace : typeof nextState !== "object") ? nextState : Object.assign({}, state, nextState);
22838
+ listeners.forEach((listener) => listener(state, previousState));
22839
+ }
22840
+ };
22841
+ const getState = () => state;
22842
+ const subscribe = (listener) => {
22843
+ listeners.add(listener);
22844
+ return () => listeners.delete(listener);
22845
+ };
22846
+ const destroy = () => {
22847
+ if ((import.meta.env && import.meta.env.MODE) !== "production") {
22848
+ console.warn(
22849
+ "[DEPRECATED] The destroy method will be unsupported in the future version. You should use unsubscribe function returned by subscribe. Everything will be garbage collected if store is garbage collected."
22850
+ );
22851
+ }
22852
+ listeners.clear();
22853
+ };
22854
+ const api = { setState, getState, subscribe, destroy };
22855
+ state = createState(setState, getState, api);
22856
+ return api;
22857
+ };
22858
+ const createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
22859
+
22860
+ var withSelectorExports = {};
22861
+ var withSelector = {
22862
+ get exports(){ return withSelectorExports; },
22863
+ set exports(v){ withSelectorExports = v; },
22864
+ };
22865
+
22866
+ var withSelector_production_min = {};
22867
+
22868
+ var shimExports = {};
22869
+ var shim = {
22870
+ get exports(){ return shimExports; },
22871
+ set exports(v){ shimExports = v; },
22872
+ };
22873
+
22874
+ var useSyncExternalStoreShim_production_min = {};
22875
+
22881
22876
  /**
22882
- * Hook that exposes panel context, if not used within a PanelContext this hook will throw an error
22877
+ * @license React
22878
+ * use-sync-external-store-shim.production.min.js
22879
+ *
22880
+ * Copyright (c) Facebook, Inc. and its affiliates.
22883
22881
  *
22884
- * @export
22885
- * @return {*} {PanelContextState} Returns the existing panel context or throws error if not used within a PanelContext
22882
+ * This source code is licensed under the MIT license found in the
22883
+ * LICENSE file in the root directory of this source tree.
22886
22884
  */
22887
- function usePanelContext() {
22888
- var context = React__default.useContext(PanelContext);
22889
- if (!context) {
22890
- throw new Error("Panel compound components cannot be rendered outside the Panel component");
22891
- }
22892
- return context;
22885
+
22886
+ var hasRequiredUseSyncExternalStoreShim_production_min;
22887
+
22888
+ function requireUseSyncExternalStoreShim_production_min () {
22889
+ if (hasRequiredUseSyncExternalStoreShim_production_min) return useSyncExternalStoreShim_production_min;
22890
+ hasRequiredUseSyncExternalStoreShim_production_min = 1;
22891
+ var e=React__default;function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k="function"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c});},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c});})},[a]);p(d);return d}
22892
+ function r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return !k(a,d)}catch(f){return !0}}function t(a,b){return b()}var u="undefined"===typeof window||"undefined"===typeof window.document||"undefined"===typeof window.document.createElement?t:q;useSyncExternalStoreShim_production_min.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;
22893
+ return useSyncExternalStoreShim_production_min;
22893
22894
  }
22894
22895
 
22895
- var css_248z$b = ".panelWrapper-module_wrapper__asJxL{position:fixed;right:0;z-index:5}.panelWrapper-module_topBarWrapper__Nt84G{background-color:#fff;border-left:1px solid #dcdcdc;box-sizing:border-box;height:100dvh;padding:4px 0;width:64px;z-index:10}.panelWrapper-module_topBarWrapper__Nt84G div:first-child{display:none}.panelWrapper-module_contentPanel__JWij5,.panelWrapper-module_narrowPanel__zW0DI{background:#fff;box-sizing:border-box;height:100%;overflow:hidden;position:absolute;right:64px;top:0;transition:width .4s ease-in-out;width:0;z-index:1200}.panelWrapper-module_narrowPanel__zW0DI{width:240px!important}.panelWrapper-module_activeContentPanel__1nAhR{border-left:2px solid #f7f7f7;padding-left:14px;padding-right:16px;padding-top:16px;width:320px}.panelWrapper-module_buttonWrapperMobile__pcR1V{display:none}.panelWrapper-module_buttonWrapper__xbmQI{height:calc(100dvh - 16px)}@media screen and (max-width:927px) and (orientation:landscape){.panelWrapper-module_topBarWrapper__Nt84G{width:calc(100dvw - 56px)}}@media screen and (max-width:767px) and (orientation:portrait){.panelWrapper-module_topBarWrapper__Nt84G{width:100dvw}}@media screen and (max-width:767px) and (orientation:portrait),screen and (max-width:927px) and (orientation:landscape){.panelWrapper-module_topBarWrapper__Nt84G{border-bottom:1px solid #dcdcdc;border-left:none;display:flex;flex-direction:row;height:48px;padding-bottom:0;padding-top:0;z-index:10}.panelWrapper-module_topBarWrapper__Nt84G div:first-child{display:flex}.panelWrapper-module_moduleTitle__4Wloo{display:flex;margin:auto 0 auto 16px}.panelWrapper-module_moduleTitle__4Wloo p{color:var(--echoText);font-size:16px;font-weight:500;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panelWrapper-module_contentPanel__JWij5,.panelWrapper-module_narrowPanel__zW0DI{height:100dvh;right:0}.panelWrapper-module_buttonWrapperMobile__pcR1V{display:flex;justify-content:flex-end;margin-right:8px}.panelWrapper-module_buttonWrapper__xbmQI{display:none}}@media screen and (max-width:768px) and (orientation:portrait){.panelWrapper-module_moduleTitle__4Wloo{width:140px}.panelWrapper-module_buttonWrapperMobile__pcR1V{width:calc(100vw - 140px)}}@media screen and (max-width:927px) and (orientation:landscape){.panelWrapper-module_moduleTitle__4Wloo{width:240px}.panelWrapper-module_buttonWrapperMobile__pcR1V{width:calc(100vw - 240px)}}";
22896
- var styles$a = {"wrapper":"panelWrapper-module_wrapper__asJxL","topBarWrapper":"panelWrapper-module_topBarWrapper__Nt84G","narrowPanel":"panelWrapper-module_narrowPanel__zW0DI","contentPanel":"panelWrapper-module_contentPanel__JWij5","activeContentPanel":"panelWrapper-module_activeContentPanel__1nAhR","buttonWrapperMobile":"panelWrapper-module_buttonWrapperMobile__pcR1V","buttonWrapper":"panelWrapper-module_buttonWrapper__xbmQI","moduleTitle":"panelWrapper-module_moduleTitle__4Wloo"};
22897
- styleInject(css_248z$b);
22896
+ var useSyncExternalStoreShim_development = {};
22898
22897
 
22899
22898
  /**
22900
- * Component that display's the buttons in a panel. It will automatically try to calculate how many buttons to display
22901
- * and how many buttons to hide behind the more menu.
22902
- * It controls which panel to display when a button is clicked
22903
- * On desktop this component will render on the right side, and on the top in mobile view
22904
- *
22905
- * @param {*} {
22906
- * menuItems, the items to be displayed in the menu and its belonging panels
22907
- * header, the header that will be displayed on mobile.
22908
- * If its a string then it will only display a header text. But it can also be a component with self defined html
22909
- * }
22910
- * @return {*} {JSX.Element}
22899
+ * @license React
22900
+ * use-sync-external-store-shim.development.js
22901
+ *
22902
+ * Copyright (c) Facebook, Inc. and its affiliates.
22903
+ *
22904
+ * This source code is licensed under the MIT license found in the
22905
+ * LICENSE file in the root directory of this source tree.
22906
+ */
22907
+
22908
+ var hasRequiredUseSyncExternalStoreShim_development;
22909
+
22910
+ function requireUseSyncExternalStoreShim_development () {
22911
+ if (hasRequiredUseSyncExternalStoreShim_development) return useSyncExternalStoreShim_development;
22912
+ hasRequiredUseSyncExternalStoreShim_development = 1;
22913
+
22914
+ if (process.env.NODE_ENV !== "production") {
22915
+ (function() {
22916
+
22917
+ /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
22918
+ if (
22919
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
22920
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===
22921
+ 'function'
22922
+ ) {
22923
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
22924
+ }
22925
+ var React = React__default;
22926
+
22927
+ var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
22928
+
22929
+ function error(format) {
22930
+ {
22931
+ {
22932
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
22933
+ args[_key2 - 1] = arguments[_key2];
22934
+ }
22935
+
22936
+ printWarning('error', format, args);
22937
+ }
22938
+ }
22939
+ }
22940
+
22941
+ function printWarning(level, format, args) {
22942
+ // When changing this logic, you might want to also
22943
+ // update consoleWithStackDev.www.js as well.
22944
+ {
22945
+ var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
22946
+ var stack = ReactDebugCurrentFrame.getStackAddendum();
22947
+
22948
+ if (stack !== '') {
22949
+ format += '%s';
22950
+ args = args.concat([stack]);
22951
+ } // eslint-disable-next-line react-internal/safe-string-coercion
22952
+
22953
+
22954
+ var argsWithFormat = args.map(function (item) {
22955
+ return String(item);
22956
+ }); // Careful: RN currently depends on this prefix
22957
+
22958
+ argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
22959
+ // breaks IE9: https://github.com/facebook/react/issues/13610
22960
+ // eslint-disable-next-line react-internal/no-production-logging
22961
+
22962
+ Function.prototype.apply.call(console[level], console, argsWithFormat);
22963
+ }
22964
+ }
22965
+
22966
+ /**
22967
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
22968
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
22969
+ */
22970
+ function is(x, y) {
22971
+ return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
22972
+ ;
22973
+ }
22974
+
22975
+ var objectIs = typeof Object.is === 'function' ? Object.is : is;
22976
+
22977
+ // dispatch for CommonJS interop named imports.
22978
+
22979
+ var useState = React.useState,
22980
+ useEffect = React.useEffect,
22981
+ useLayoutEffect = React.useLayoutEffect,
22982
+ useDebugValue = React.useDebugValue;
22983
+ var didWarnOld18Alpha = false;
22984
+ var didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works
22985
+ // because of a very particular set of implementation details and assumptions
22986
+ // -- change any one of them and it will break. The most important assumption
22987
+ // is that updates are always synchronous, because concurrent rendering is
22988
+ // only available in versions of React that also have a built-in
22989
+ // useSyncExternalStore API. And we only use this shim when the built-in API
22990
+ // does not exist.
22991
+ //
22992
+ // Do not assume that the clever hacks used by this hook also work in general.
22993
+ // The point of this shim is to replace the need for hacks by other libraries.
22994
+
22995
+ function useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of
22996
+ // React do not expose a way to check if we're hydrating. So users of the shim
22997
+ // will need to track that themselves and return the correct value
22998
+ // from `getSnapshot`.
22999
+ getServerSnapshot) {
23000
+ {
23001
+ if (!didWarnOld18Alpha) {
23002
+ if (React.startTransition !== undefined) {
23003
+ didWarnOld18Alpha = true;
23004
+
23005
+ error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');
23006
+ }
23007
+ }
23008
+ } // Read the current snapshot from the store on every render. Again, this
23009
+ // breaks the rules of React, and only works here because of specific
23010
+ // implementation details, most importantly that updates are
23011
+ // always synchronous.
23012
+
23013
+
23014
+ var value = getSnapshot();
23015
+
23016
+ {
23017
+ if (!didWarnUncachedGetSnapshot) {
23018
+ var cachedValue = getSnapshot();
23019
+
23020
+ if (!objectIs(value, cachedValue)) {
23021
+ error('The result of getSnapshot should be cached to avoid an infinite loop');
23022
+
23023
+ didWarnUncachedGetSnapshot = true;
23024
+ }
23025
+ }
23026
+ } // Because updates are synchronous, we don't queue them. Instead we force a
23027
+ // re-render whenever the subscribed state changes by updating an some
23028
+ // arbitrary useState hook. Then, during render, we call getSnapshot to read
23029
+ // the current value.
23030
+ //
23031
+ // Because we don't actually use the state returned by the useState hook, we
23032
+ // can save a bit of memory by storing other stuff in that slot.
23033
+ //
23034
+ // To implement the early bailout, we need to track some things on a mutable
23035
+ // object. Usually, we would put that in a useRef hook, but we can stash it in
23036
+ // our useState hook instead.
23037
+ //
23038
+ // To force a re-render, we call forceUpdate({inst}). That works because the
23039
+ // new object always fails an equality check.
23040
+
23041
+
23042
+ var _useState = useState({
23043
+ inst: {
23044
+ value: value,
23045
+ getSnapshot: getSnapshot
23046
+ }
23047
+ }),
23048
+ inst = _useState[0].inst,
23049
+ forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated
23050
+ // in the layout phase so we can access it during the tearing check that
23051
+ // happens on subscribe.
23052
+
23053
+
23054
+ useLayoutEffect(function () {
23055
+ inst.value = value;
23056
+ inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the
23057
+ // commit phase if there was an interleaved mutation. In concurrent mode
23058
+ // this can happen all the time, but even in synchronous mode, an earlier
23059
+ // effect may have mutated the store.
23060
+
23061
+ if (checkIfSnapshotChanged(inst)) {
23062
+ // Force a re-render.
23063
+ forceUpdate({
23064
+ inst: inst
23065
+ });
23066
+ }
23067
+ }, [subscribe, value, getSnapshot]);
23068
+ useEffect(function () {
23069
+ // Check for changes right before subscribing. Subsequent changes will be
23070
+ // detected in the subscription handler.
23071
+ if (checkIfSnapshotChanged(inst)) {
23072
+ // Force a re-render.
23073
+ forceUpdate({
23074
+ inst: inst
23075
+ });
23076
+ }
23077
+
23078
+ var handleStoreChange = function () {
23079
+ // TODO: Because there is no cross-renderer API for batching updates, it's
23080
+ // up to the consumer of this library to wrap their subscription event
23081
+ // with unstable_batchedUpdates. Should we try to detect when this isn't
23082
+ // the case and print a warning in development?
23083
+ // The store changed. Check if the snapshot changed since the last time we
23084
+ // read from the store.
23085
+ if (checkIfSnapshotChanged(inst)) {
23086
+ // Force a re-render.
23087
+ forceUpdate({
23088
+ inst: inst
23089
+ });
23090
+ }
23091
+ }; // Subscribe to the store and return a clean-up function.
23092
+
23093
+
23094
+ return subscribe(handleStoreChange);
23095
+ }, [subscribe]);
23096
+ useDebugValue(value);
23097
+ return value;
23098
+ }
23099
+
23100
+ function checkIfSnapshotChanged(inst) {
23101
+ var latestGetSnapshot = inst.getSnapshot;
23102
+ var prevValue = inst.value;
23103
+
23104
+ try {
23105
+ var nextValue = latestGetSnapshot();
23106
+ return !objectIs(prevValue, nextValue);
23107
+ } catch (error) {
23108
+ return true;
23109
+ }
23110
+ }
23111
+
23112
+ function useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {
23113
+ // Note: The shim does not use getServerSnapshot, because pre-18 versions of
23114
+ // React do not expose a way to check if we're hydrating. So users of the shim
23115
+ // will need to track that themselves and return the correct value
23116
+ // from `getSnapshot`.
23117
+ return getSnapshot();
23118
+ }
23119
+
23120
+ var canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');
23121
+
23122
+ var isServerEnvironment = !canUseDOM;
23123
+
23124
+ var shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;
23125
+ var useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;
23126
+
23127
+ useSyncExternalStoreShim_development.useSyncExternalStore = useSyncExternalStore$2;
23128
+ /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
23129
+ if (
23130
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
23131
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===
23132
+ 'function'
23133
+ ) {
23134
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
23135
+ }
23136
+
23137
+ })();
23138
+ }
23139
+ return useSyncExternalStoreShim_development;
23140
+ }
23141
+
23142
+ var hasRequiredShim;
23143
+
23144
+ function requireShim () {
23145
+ if (hasRequiredShim) return shimExports;
23146
+ hasRequiredShim = 1;
23147
+ (function (module) {
23148
+
23149
+ if (process.env.NODE_ENV === 'production') {
23150
+ module.exports = requireUseSyncExternalStoreShim_production_min();
23151
+ } else {
23152
+ module.exports = requireUseSyncExternalStoreShim_development();
23153
+ }
23154
+ } (shim));
23155
+ return shimExports;
23156
+ }
23157
+
23158
+ /**
23159
+ * @license React
23160
+ * use-sync-external-store-shim/with-selector.production.min.js
23161
+ *
23162
+ * Copyright (c) Facebook, Inc. and its affiliates.
23163
+ *
23164
+ * This source code is licensed under the MIT license found in the
23165
+ * LICENSE file in the root directory of this source tree.
23166
+ */
23167
+
23168
+ var hasRequiredWithSelector_production_min;
23169
+
23170
+ function requireWithSelector_production_min () {
23171
+ if (hasRequiredWithSelector_production_min) return withSelector_production_min;
23172
+ hasRequiredWithSelector_production_min = 1;
23173
+ var h=React__default,n=requireShim();function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q="function"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;
23174
+ withSelector_production_min.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f;}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return [function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);
23175
+ u(function(){f.hasValue=!0;f.value=d;},[d]);w(d);return d};
23176
+ return withSelector_production_min;
23177
+ }
23178
+
23179
+ var withSelector_development = {};
23180
+
23181
+ /**
23182
+ * @license React
23183
+ * use-sync-external-store-shim/with-selector.development.js
23184
+ *
23185
+ * Copyright (c) Facebook, Inc. and its affiliates.
23186
+ *
23187
+ * This source code is licensed under the MIT license found in the
23188
+ * LICENSE file in the root directory of this source tree.
23189
+ */
23190
+
23191
+ var hasRequiredWithSelector_development;
23192
+
23193
+ function requireWithSelector_development () {
23194
+ if (hasRequiredWithSelector_development) return withSelector_development;
23195
+ hasRequiredWithSelector_development = 1;
23196
+
23197
+ if (process.env.NODE_ENV !== "production") {
23198
+ (function() {
23199
+
23200
+ /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
23201
+ if (
23202
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
23203
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===
23204
+ 'function'
23205
+ ) {
23206
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
23207
+ }
23208
+ var React = React__default;
23209
+ var shim = requireShim();
23210
+
23211
+ /**
23212
+ * inlined Object.is polyfill to avoid requiring consumers ship their own
23213
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
23214
+ */
23215
+ function is(x, y) {
23216
+ return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
23217
+ ;
23218
+ }
23219
+
23220
+ var objectIs = typeof Object.is === 'function' ? Object.is : is;
23221
+
23222
+ var useSyncExternalStore = shim.useSyncExternalStore;
23223
+
23224
+ // for CommonJS interop.
23225
+
23226
+ var useRef = React.useRef,
23227
+ useEffect = React.useEffect,
23228
+ useMemo = React.useMemo,
23229
+ useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.
23230
+
23231
+ function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
23232
+ // Use this to track the rendered snapshot.
23233
+ var instRef = useRef(null);
23234
+ var inst;
23235
+
23236
+ if (instRef.current === null) {
23237
+ inst = {
23238
+ hasValue: false,
23239
+ value: null
23240
+ };
23241
+ instRef.current = inst;
23242
+ } else {
23243
+ inst = instRef.current;
23244
+ }
23245
+
23246
+ var _useMemo = useMemo(function () {
23247
+ // Track the memoized state using closure variables that are local to this
23248
+ // memoized instance of a getSnapshot function. Intentionally not using a
23249
+ // useRef hook, because that state would be shared across all concurrent
23250
+ // copies of the hook/component.
23251
+ var hasMemo = false;
23252
+ var memoizedSnapshot;
23253
+ var memoizedSelection;
23254
+
23255
+ var memoizedSelector = function (nextSnapshot) {
23256
+ if (!hasMemo) {
23257
+ // The first time the hook is called, there is no memoized result.
23258
+ hasMemo = true;
23259
+ memoizedSnapshot = nextSnapshot;
23260
+
23261
+ var _nextSelection = selector(nextSnapshot);
23262
+
23263
+ if (isEqual !== undefined) {
23264
+ // Even if the selector has changed, the currently rendered selection
23265
+ // may be equal to the new selection. We should attempt to reuse the
23266
+ // current value if possible, to preserve downstream memoizations.
23267
+ if (inst.hasValue) {
23268
+ var currentSelection = inst.value;
23269
+
23270
+ if (isEqual(currentSelection, _nextSelection)) {
23271
+ memoizedSelection = currentSelection;
23272
+ return currentSelection;
23273
+ }
23274
+ }
23275
+ }
23276
+
23277
+ memoizedSelection = _nextSelection;
23278
+ return _nextSelection;
23279
+ } // We may be able to reuse the previous invocation's result.
23280
+
23281
+
23282
+ // We may be able to reuse the previous invocation's result.
23283
+ var prevSnapshot = memoizedSnapshot;
23284
+ var prevSelection = memoizedSelection;
23285
+
23286
+ if (objectIs(prevSnapshot, nextSnapshot)) {
23287
+ // The snapshot is the same as last time. Reuse the previous selection.
23288
+ return prevSelection;
23289
+ } // The snapshot has changed, so we need to compute a new selection.
23290
+
23291
+
23292
+ // The snapshot has changed, so we need to compute a new selection.
23293
+ var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data
23294
+ // has changed. If it hasn't, return the previous selection. That signals
23295
+ // to React that the selections are conceptually equal, and we can bail
23296
+ // out of rendering.
23297
+
23298
+ // If a custom isEqual function is provided, use that to check if the data
23299
+ // has changed. If it hasn't, return the previous selection. That signals
23300
+ // to React that the selections are conceptually equal, and we can bail
23301
+ // out of rendering.
23302
+ if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {
23303
+ return prevSelection;
23304
+ }
23305
+
23306
+ memoizedSnapshot = nextSnapshot;
23307
+ memoizedSelection = nextSelection;
23308
+ return nextSelection;
23309
+ }; // Assigning this to a constant so that Flow knows it can't change.
23310
+
23311
+
23312
+ // Assigning this to a constant so that Flow knows it can't change.
23313
+ var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;
23314
+
23315
+ var getSnapshotWithSelector = function () {
23316
+ return memoizedSelector(getSnapshot());
23317
+ };
23318
+
23319
+ var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {
23320
+ return memoizedSelector(maybeGetServerSnapshot());
23321
+ };
23322
+ return [getSnapshotWithSelector, getServerSnapshotWithSelector];
23323
+ }, [getSnapshot, getServerSnapshot, selector, isEqual]),
23324
+ getSelection = _useMemo[0],
23325
+ getServerSelection = _useMemo[1];
23326
+
23327
+ var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);
23328
+ useEffect(function () {
23329
+ inst.hasValue = true;
23330
+ inst.value = value;
23331
+ }, [value]);
23332
+ useDebugValue(value);
23333
+ return value;
23334
+ }
23335
+
23336
+ withSelector_development.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;
23337
+ /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
23338
+ if (
23339
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
23340
+ typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===
23341
+ 'function'
23342
+ ) {
23343
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());
23344
+ }
23345
+
23346
+ })();
23347
+ }
23348
+ return withSelector_development;
23349
+ }
23350
+
23351
+ (function (module) {
23352
+
23353
+ if (process.env.NODE_ENV === 'production') {
23354
+ module.exports = requireWithSelector_production_min();
23355
+ } else {
23356
+ module.exports = requireWithSelector_development();
23357
+ }
23358
+ } (withSelector));
23359
+
23360
+ var useSyncExternalStoreExports = /*@__PURE__*/getDefaultExportFromCjs(withSelectorExports);
23361
+
23362
+ const { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;
23363
+ function useStore(api, selector = api.getState, equalityFn) {
23364
+ const slice = useSyncExternalStoreWithSelector(
23365
+ api.subscribe,
23366
+ api.getState,
23367
+ api.getServerState || api.getState,
23368
+ selector,
23369
+ equalityFn
23370
+ );
23371
+ useDebugValue(slice);
23372
+ return slice;
23373
+ }
23374
+ const createImpl = (createState) => {
23375
+ if ((import.meta.env && import.meta.env.MODE) !== "production" && typeof createState !== "function") {
23376
+ console.warn(
23377
+ '[DEPRECATED] Passing a vanilla store will be unsupported in the future version. Please use `import { useStore } from "zustand"` to use the vanilla store in React.'
23378
+ );
23379
+ }
23380
+ const api = typeof createState === "function" ? createStore(createState) : createState;
23381
+ const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);
23382
+ Object.assign(useBoundStore, api);
23383
+ return useBoundStore;
23384
+ };
23385
+ const create = (createState) => createState ? createImpl(createState) : createImpl;
23386
+
23387
+ // need to import whole of zustand for the build to be correct so the store can be used by other modules in the proper way
23388
+ var usePanelStore = create(function (set) {
23389
+ return {
23390
+ activePanel: undefined,
23391
+ panelSize: 'wide',
23392
+ updateActivePanel: function updateActivePanel(newActivePanel) {
23393
+ set({
23394
+ activePanel: newActivePanel
23395
+ });
23396
+ },
23397
+ updatePanelSize: function updatePanelSize(newPanelSize) {
23398
+ set({
23399
+ panelSize: newPanelSize
23400
+ });
23401
+ }
23402
+ };
23403
+ });
23404
+
23405
+ var css_248z$b = ".panelWrapper-module_wrapper__asJxL{position:fixed;right:0;z-index:5}.panelWrapper-module_topBarWrapper__Nt84G{background-color:#fff;border-left:1px solid #dcdcdc;box-sizing:border-box;height:calc(100dvh - 64px);padding-left:0;padding-right:0;width:64px;z-index:10}.panelWrapper-module_topBarWrapper__Nt84G div:first-child{display:none}.panelWrapper-module_contentPanel__JWij5,.panelWrapper-module_narrowPanel__zW0DI{background:#fff;box-sizing:border-box;height:100%;overflow:hidden;position:absolute;right:64px;top:0;transition:width .4s ease-in-out;width:0;z-index:1200}.panelWrapper-module_narrowPanel__zW0DI{width:240px!important}.panelWrapper-module_activeContentPanel__1nAhR{border-left:2px solid #f7f7f7;padding-left:14px;padding-right:16px;padding-top:16px;width:320px}.panelWrapper-module_buttonWrapperMobile__pcR1V{display:none}.panelWrapper-module_buttonWrapper__xbmQI{height:calc(100dvh - 70px)}.panelWrapper-module_buttonAtBottomWrapper__jLd-d{bottom:6px;position:absolute;width:100%}@media screen and (max-width:927px) and (orientation:landscape){.panelWrapper-module_topBarWrapper__Nt84G{width:calc(100dvw - 56px)}}@media screen and (max-width:767px) and (orientation:portrait){.panelWrapper-module_activeContentPanel__1nAhR,.panelWrapper-module_topBarWrapper__Nt84G{width:100dvw}}@media screen and (max-width:767px) and (orientation:portrait),screen and (max-width:927px) and (orientation:landscape){.panelWrapper-module_buttonAtBottomWrapper__jLd-d{display:none}.panelWrapper-module_topBarWrapper__Nt84G{border-bottom:1px solid #dcdcdc;border-left:none;display:flex;flex-direction:row;height:48px;padding-bottom:0;padding-top:0;z-index:10}.panelWrapper-module_topBarWrapper__Nt84G div:first-child{display:flex}.panelWrapper-module_moduleTitle__4Wloo{display:flex;margin:auto 0 auto 16px}.panelWrapper-module_moduleTitle__4Wloo p{color:var(--echoText);font-size:16px;font-weight:500;line-height:24px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panelWrapper-module_contentPanel__JWij5,.panelWrapper-module_narrowPanel__zW0DI{height:100dvh;right:0}.panelWrapper-module_buttonWrapperMobile__pcR1V{display:flex;justify-content:flex-end;margin-right:8px}.panelWrapper-module_buttonWrapper__xbmQI{display:none}}@media screen and (max-width:768px) and (orientation:portrait){.panelWrapper-module_moduleTitle__4Wloo{width:140px}.panelWrapper-module_buttonWrapperMobile__pcR1V{width:calc(100vw - 140px)}}@media screen and (max-width:927px) and (orientation:landscape){.panelWrapper-module_moduleTitle__4Wloo{width:240px}.panelWrapper-module_buttonWrapperMobile__pcR1V{width:calc(100vw - 240px)}}";
23406
+ var styles$a = {"wrapper":"panelWrapper-module_wrapper__asJxL","topBarWrapper":"panelWrapper-module_topBarWrapper__Nt84G","narrowPanel":"panelWrapper-module_narrowPanel__zW0DI","contentPanel":"panelWrapper-module_contentPanel__JWij5","activeContentPanel":"panelWrapper-module_activeContentPanel__1nAhR","buttonWrapperMobile":"panelWrapper-module_buttonWrapperMobile__pcR1V","buttonWrapper":"panelWrapper-module_buttonWrapper__xbmQI","buttonAtBottomWrapper":"panelWrapper-module_buttonAtBottomWrapper__jLd-d","moduleTitle":"panelWrapper-module_moduleTitle__4Wloo"};
23407
+ styleInject(css_248z$b);
23408
+
23409
+ /**
23410
+ * Component that display's the buttons in a panel. It will automatically try to calculate how many buttons to display
23411
+ * and how many buttons to hide behind the more menu.
23412
+ * It controls which panel to display when a button is clicked
23413
+ * On desktop this component will render on the right side, and on the top in mobile view
23414
+ *
23415
+ * @param {*} {
23416
+ * menuItems, the items to be displayed in the menu and its belonging panels
23417
+ * header, the header that will be displayed on mobile.
23418
+ * If its a string then it will only display a header text. But it can also be a component with self defined html
23419
+ * }
23420
+ * @return {*} {JSX.Element}
22911
23421
  */
22912
23422
  var PanelWrapper = function PanelWrapper(_ref) {
22913
23423
  var _classnames;
22914
23424
  var menuItems = _ref.menuItems,
22915
23425
  header = _ref.header;
22916
- var _a, _b;
22917
- var _usePanelContext = usePanelContext(),
22918
- activePanel = _usePanelContext.activePanel,
22919
- panelSize = _usePanelContext.panelSize,
22920
- updateActivePanel = _usePanelContext.updateActivePanel,
22921
- updatePanelSize = _usePanelContext.updatePanelSize;
23426
+ var _a, _b, _c;
23427
+ var _usePanelStore = usePanelStore(),
23428
+ activePanel = _usePanelStore.activePanel,
23429
+ panelSize = _usePanelStore.panelSize,
23430
+ updateActivePanel = _usePanelStore.updateActivePanel,
23431
+ updatePanelSize = _usePanelStore.updatePanelSize;
22922
23432
  var _useState = useState(false),
22923
23433
  _useState2 = _slicedToArray(_useState, 2),
22924
23434
  isMenuOpen = _useState2[0],
@@ -22932,6 +23442,10 @@ var PanelWrapper = function PanelWrapper(_ref) {
22932
23442
  _useState6 = _slicedToArray(_useState5, 2),
22933
23443
  buttonsInOverflow = _useState6[0],
22934
23444
  setButtonsInOverflow = _useState6[1];
23445
+ var _useState7 = useState(),
23446
+ _useState8 = _slicedToArray(_useState7, 2),
23447
+ buttonAtBottom = _useState8[0],
23448
+ setButtonAtBottom = _useState8[1];
22935
23449
  var mobileWrapperRef = useRef(null);
22936
23450
  var desktopWrapperRef = useRef(null);
22937
23451
  var handleActiveMenuItemChanged = function handleActiveMenuItemChanged(menuItemType, panelSizeToUse) {
@@ -22946,9 +23460,15 @@ var PanelWrapper = function PanelWrapper(_ref) {
22946
23460
  var calculateOverflow = useCallback(function () {
22947
23461
  var _a, _b, _c, _d, _e, _f;
22948
23462
  var numberOfIconsThereIsRoomFor;
23463
+ var shouldShowButtonAtBottom = false;
22949
23464
  if ((_a = mobileWrapperRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth) {
22950
23465
  numberOfIconsThereIsRoomFor = ((_c = (_b = mobileWrapperRef.current) === null || _b === void 0 ? void 0 : _b.clientWidth) !== null && _c !== void 0 ? _c : 0) / 56;
22951
23466
  } else if ((_d = desktopWrapperRef.current) === null || _d === void 0 ? void 0 : _d.clientHeight) {
23467
+ var buttonAtBottomFromList = menuItems.find(function (item) {
23468
+ return item.isBottomItem === true;
23469
+ });
23470
+ if (buttonAtBottomFromList) shouldShowButtonAtBottom = true;
23471
+ setButtonAtBottom(buttonAtBottomFromList);
22952
23472
  numberOfIconsThereIsRoomFor = ((_f = (_e = desktopWrapperRef.current) === null || _e === void 0 ? void 0 : _e.clientHeight) !== null && _f !== void 0 ? _f : 0) / 56;
22953
23473
  }
22954
23474
  if (!numberOfIconsThereIsRoomFor) {
@@ -22964,9 +23484,19 @@ var PanelWrapper = function PanelWrapper(_ref) {
22964
23484
  }
22965
23485
  }
22966
23486
  var menuItemsCopy = _toConsumableArray$1(menuItems);
23487
+ // if there is a button at the bottom then there is less room for the other buttons
23488
+ if (shouldShowButtonAtBottom) {
23489
+ iconsInOverflow += 1;
23490
+ var _buttonAtBottomFromList = menuItems.find(function (item) {
23491
+ return item.isBottomItem === true;
23492
+ });
23493
+ if (_buttonAtBottomFromList) menuItemsCopy = menuItems.filter(function (item) {
23494
+ return item.labelId !== _buttonAtBottomFromList.labelId;
23495
+ });
23496
+ }
22967
23497
  setButtonsToDisplay(menuItemsCopy.slice(0, menuItems.length - iconsInOverflow));
22968
23498
  setButtonsInOverflow(menuItemsCopy.slice(menuItems.length - iconsInOverflow));
22969
- }, [menuItems]);
23499
+ }, [menuItems, mobileWrapperRef, desktopWrapperRef]);
22970
23500
  useEffect(function () {
22971
23501
  calculateOverflow();
22972
23502
  }, [calculateOverflow]);
@@ -22999,12 +23529,55 @@ var PanelWrapper = function PanelWrapper(_ref) {
22999
23529
  }
23000
23530
  return null;
23001
23531
  };
23532
+ var shouldCloseMoreOnOutsideClick = function shouldCloseMoreOnOutsideClick() {
23533
+ if (buttonsInOverflow.find(function (button) {
23534
+ return button.skipPanelContent;
23535
+ })) {
23536
+ return undefined;
23537
+ } else {
23538
+ return function () {
23539
+ return setIsMenuOpen(false);
23540
+ };
23541
+ }
23542
+ };
23543
+ var renderButtonAtBottom = function renderButtonAtBottom(button) {
23544
+ if (!button) return;
23545
+ if (button.skipPanelContent) {
23546
+ var PanelComponent = button.component;
23547
+ return /*#__PURE__*/React__default.createElement("div", {
23548
+ className: styles$a.buttonAtBottomWrapper
23549
+ }, /*#__PURE__*/React__default.createElement(PanelComponent, {
23550
+ key: button.labelId
23551
+ }));
23552
+ }
23553
+ return /*#__PURE__*/React__default.createElement("div", {
23554
+ className: styles$a.buttonAtBottomWrapper
23555
+ }, /*#__PURE__*/React__default.createElement(MenuButton, {
23556
+ text: button.label,
23557
+ key: button.labelId,
23558
+ id: button.labelId,
23559
+ active: activePanel === button.labelId,
23560
+ onClick: function onClick() {
23561
+ return handleActiveMenuItemChanged(button.labelId, button.panelSize);
23562
+ }
23563
+ }, typeof button.icon === 'string' ? /*#__PURE__*/React__default.createElement(Icon$1, {
23564
+ color: themeConst.echoText,
23565
+ name: button.icon
23566
+ }) : button.icon));
23567
+ };
23002
23568
  var renderMenuItems = function renderMenuItems() {
23003
23569
  var _a, _b;
23004
23570
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, buttonsToDisplay.map(function (button) {
23571
+ if (button.skipPanelContent) {
23572
+ var PanelComponent = button.component;
23573
+ return /*#__PURE__*/React__default.createElement(PanelComponent, {
23574
+ key: button.labelId
23575
+ });
23576
+ }
23005
23577
  return /*#__PURE__*/React__default.createElement(MenuButton, {
23006
23578
  text: button.label,
23007
23579
  key: button.labelId,
23580
+ id: button.labelId,
23008
23581
  active: activePanel === button.labelId,
23009
23582
  onClick: function onClick() {
23010
23583
  return handleActiveMenuItemChanged(button.labelId, button.panelSize);
@@ -23015,7 +23588,7 @@ var PanelWrapper = function PanelWrapper(_ref) {
23015
23588
  }) : button.icon);
23016
23589
  }), buttonsInOverflow.length > 0 && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MenuButton, {
23017
23590
  text: "More",
23018
- refValue: menuRef,
23591
+ ref: menuRef,
23019
23592
  id: "more-menu-options-anchor",
23020
23593
  active: isMenuOpen,
23021
23594
  onClick: function onClick() {
@@ -23025,14 +23598,23 @@ var PanelWrapper = function PanelWrapper(_ref) {
23025
23598
  color: themeConst.echoText,
23026
23599
  name: "more_vertical"
23027
23600
  })), /*#__PURE__*/React__default.createElement(Menu, {
23601
+ style: {
23602
+ overflowX: 'auto',
23603
+ maxHeight: 'calc(100dvh - 70px)'
23604
+ },
23028
23605
  anchorEl: menuRef.current,
23029
23606
  id: "more-menu-options",
23030
- onClose: function onClose() {
23031
- return setIsMenuOpen(false);
23032
- },
23607
+ onClose: shouldCloseMoreOnOutsideClick,
23033
23608
  placement: ((_b = (_a = mobileWrapperRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : 0) > 0 ? 'bottom-start' : 'left',
23034
23609
  open: isMenuOpen
23035
23610
  }, buttonsInOverflow.map(function (button) {
23611
+ if (button.skipPanelContent) {
23612
+ var PanelComponent = button.component;
23613
+ return /*#__PURE__*/React__default.createElement(PanelComponent, {
23614
+ key: button.labelId,
23615
+ isOverflow: true
23616
+ });
23617
+ }
23036
23618
  return /*#__PURE__*/React__default.createElement(Menu.Item, {
23037
23619
  key: button.labelId,
23038
23620
  onClick: function onClick() {
@@ -23042,7 +23624,7 @@ var PanelWrapper = function PanelWrapper(_ref) {
23042
23624
  color: themeConst.echoText,
23043
23625
  name: button.icon
23044
23626
  }) : button.icon, button.label);
23045
- }))));
23627
+ }))), renderButtonAtBottom(buttonAtBottom));
23046
23628
  };
23047
23629
  var renderMenuItemsBasedOnRef = function renderMenuItemsBasedOnRef(ref) {
23048
23630
  if (ref) return renderMenuItems();
@@ -23059,53 +23641,55 @@ var PanelWrapper = function PanelWrapper(_ref) {
23059
23641
  }, renderMenuItemsBasedOnRef((_a = mobileWrapperRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth)), /*#__PURE__*/React__default.createElement("div", {
23060
23642
  className: styles$a.buttonWrapper,
23061
23643
  ref: desktopWrapperRef
23062
- }, renderMenuItemsBasedOnRef((_b = desktopWrapperRef.current) === null || _b === void 0 ? void 0 : _b.clientHeight))), /*#__PURE__*/React__default.createElement("div", {
23644
+ }, renderMenuItemsBasedOnRef((_b = desktopWrapperRef.current) === null || _b === void 0 ? void 0 : _b.clientHeight))), !((_c = getActivePanel(activePanel)) === null || _c === void 0 ? void 0 : _c.skipPanelContent) && /*#__PURE__*/React__default.createElement("div", {
23063
23645
  className: classnames$2(styles$a.contentPanel, (_classnames = {}, _defineProperty$1(_classnames, styles$a.narrowPanel, panelSize === 'narrow' && activePanel), _defineProperty$1(_classnames, styles$a.activeContentPanel, activePanel), _classnames))
23064
23646
  }, getPanelComponentForActivePanel(activePanel)));
23065
23647
  };
23066
23648
 
23067
- /**
23068
- * The actual right side panel. This component wraps the panel with a panel state
23069
- *
23070
- * @param {PanelProps} {
23071
- * menuItems, the items to be displayed in the menu and its belonging panels
23072
- * header, the header that will be displayed on mobile.
23073
- * If its a string then it will only display a header text. But it can also be a component with self defined html
23074
- * }
23075
- * @return {*} {JSX.Element}
23649
+ /**
23650
+ * The actual right side panel. This component wraps the panel with a panel state
23651
+ *
23652
+ * @param {PanelProps} {
23653
+ * menuItems, the items to be displayed in the menu and its belonging panels
23654
+ * header, the header that will be displayed on mobile.
23655
+ * If its a string then it will only display a header text. But it can also be a component with self defined html
23656
+ * }
23657
+ * @return {*} {JSX.Element}
23076
23658
  */
23077
23659
  var Panel = function Panel(_ref) {
23078
23660
  var menuItems = _ref.menuItems,
23079
23661
  header = _ref.header;
23080
- return /*#__PURE__*/React__default.createElement(PanelContextWrapper, null, /*#__PURE__*/React__default.createElement(PanelWrapper, {
23662
+ return /*#__PURE__*/React__default.createElement(PanelWrapper, {
23081
23663
  header: header,
23082
23664
  menuItems: menuItems
23083
- }));
23665
+ });
23084
23666
  };
23085
23667
 
23086
- var css_248z$a = ".panelContent-module_headerWrapper__BAc2H{display:flex;justify-content:space-between;padding-bottom:16px}.panelContent-module_panelTitle__jqqJT{margin:auto 0!important}.panelContent-module_bodyWrapper__EHsg5{height:calc(100dvh - 112px);margin-right:-8px;margin-top:16px;overflow-x:hidden;overflow-y:auto}.panelContent-module_contentWrapper__1re5K{margin-right:8px}";
23087
- var styles$9 = {"headerWrapper":"panelContent-module_headerWrapper__BAc2H","panelTitle":"panelContent-module_panelTitle__jqqJT","bodyWrapper":"panelContent-module_bodyWrapper__EHsg5","contentWrapper":"panelContent-module_contentWrapper__1re5K"};
23668
+ var css_248z$a = ".panelContent-module_headerWrapper__BAc2H{display:flex;justify-content:space-between;padding-bottom:16px}.panelContent-module_panelTitle__jqqJT{margin:auto 0!important}.panelContent-module_bodyWrapperWithFooter__uoMyR,.panelContent-module_bodyWrapper__EHsg5{height:calc(100dvh - 112px);margin-right:-8px;margin-top:16px;overflow-x:hidden;overflow-y:auto}.panelContent-module_bodyWrapperWithFooter__uoMyR{height:calc(100dvh - 140px)}.panelContent-module_footer__P1Nr8{height:52px}.panelContent-module_contentWrapper__1re5K{margin-right:8px}";
23669
+ var styles$9 = {"headerWrapper":"panelContent-module_headerWrapper__BAc2H","panelTitle":"panelContent-module_panelTitle__jqqJT","bodyWrapper":"panelContent-module_bodyWrapper__EHsg5","bodyWrapperWithFooter":"panelContent-module_bodyWrapperWithFooter__uoMyR","footer":"panelContent-module_footer__P1Nr8","contentWrapper":"panelContent-module_contentWrapper__1re5K"};
23088
23670
  styleInject(css_248z$a);
23089
23671
 
23090
- /**
23091
- * The component that wraps the panel drawer content
23092
- * This components displays a header with close and possible back button
23093
- * It also displays the content wrapped with some css
23094
- *
23095
- * @param {PanelContentProps} {
23096
- * header, the header text to display
23097
- * children, the panels content
23098
- * backToMainPanel: optional parameter that controls whether the panel should have a back button or not
23099
- * to be used in cases where there are panels within panels
23100
- * }
23101
- * @return {*} {JSX.Element}
23672
+ /**
23673
+ * The component that wraps the panel drawer content
23674
+ * This components displays a header with close and possible back button
23675
+ * It also displays the content wrapped with some css
23676
+ *
23677
+ * @param {PanelContentProps} {
23678
+ * header, the header text to display
23679
+ * children, the panels content
23680
+ * backToMainPanel: optional parameter that controls whether the panel should have a back button or not
23681
+ * to be used in cases where there are panels within panels,
23682
+ * footer: optional param, if used a footer will be shown in the panel content
23683
+ * }
23684
+ * @return {*} {JSX.Element}
23102
23685
  */
23103
23686
  var PanelContent = function PanelContent(_ref) {
23104
23687
  var header = _ref.header,
23105
23688
  children = _ref.children,
23106
- backToMainPanel = _ref.backToMainPanel;
23107
- var _usePanelContext = usePanelContext(),
23108
- updateActivePanel = _usePanelContext.updateActivePanel;
23689
+ backToMainPanel = _ref.backToMainPanel,
23690
+ footer = _ref.footer;
23691
+ var _usePanelStore = usePanelStore(),
23692
+ updateActivePanel = _usePanelStore.updateActivePanel;
23109
23693
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
23110
23694
  className: styles$9.headerWrapper
23111
23695
  }, backToMainPanel && /*#__PURE__*/React__default.createElement(Button, {
@@ -23124,10 +23708,12 @@ var PanelContent = function PanelContent(_ref) {
23124
23708
  }, /*#__PURE__*/React__default.createElement(Icon$1, {
23125
23709
  name: "close"
23126
23710
  }))), /*#__PURE__*/React__default.createElement("div", {
23127
- className: styles$9.bodyWrapper
23711
+ className: footer ? styles$9.bodyWrapperWithFooter : styles$9.bodyWrapper
23128
23712
  }, /*#__PURE__*/React__default.createElement("div", {
23129
23713
  className: styles$9.contentWrapper
23130
- }, children)));
23714
+ }, children)), footer && /*#__PURE__*/React__default.createElement("div", {
23715
+ className: styles$9.footer
23716
+ }, footer));
23131
23717
  };
23132
23718
  PanelContent.defaultProps = {
23133
23719
  backToMainPanel: undefined
@@ -23137,28 +23723,28 @@ var css_248z$9 = ".sidebarButton-module_button__37sG4{align-items:center;box-siz
23137
23723
  var styles$8 = {"button":"sidebarButton-module_button__37sG4","activeButton":"sidebarButton-module_activeButton__WkS2p","text":"sidebarButton-module_text__S0hrv","rightBarButton":"sidebarButton-module_rightBarButton__nh2hd","leftBarButton":"sidebarButton-module_leftBarButton__C5g1N","bottomBarButton":"sidebarButton-module_bottomBarButton__UJRT3","tabButton":"sidebarButton-module_tabButton__eQISU","tabItemCount":"sidebarButton-module_tabItemCount__nQc-M"};
23138
23724
  styleInject(css_248z$9);
23139
23725
 
23140
- /**
23141
- * The reusable button component that is used in the sidebars/bottom bar.
23142
- *
23143
- * On desktop it will have an active border on the left/right/top,
23144
- * depending if the ButtonPosition is set to: "right"/"left"/"bottom".
23145
- * The active border will be on the right if it's a tab button and ButtonPosition is set to: "tab".
23146
- *
23147
- * On mobile with the right sidebar, the active border will be on the bottom.
23148
- * In landscape mode with the bottom bar, the active border will be on the right.
23149
- *
23150
- * The button contains an icon and a descriptive text.
23151
- * @param {*} {
23152
- * text: the text below the icon.
23153
- * active: boolean describing the button's active state.
23154
- * onClick: the onClick event.
23155
- * count: will display a count on the button.
23156
- * buttonPosition: decides the active border, depending if the button is placed in the right bar/left bar/bottom bar.
23157
- * refValue: a reference value, in case it's needed.
23158
- * id: the id of the button, in case it's needed.
23159
- * children: the icon to be displayed.
23160
- * }
23161
- * @return {*} {JSX.Element}
23726
+ /**
23727
+ * The reusable button component that is used in the sidebars/bottom bar.
23728
+ *
23729
+ * On desktop it will have an active border on the left/right/top,
23730
+ * depending if the ButtonPosition is set to: "right"/"left"/"bottom".
23731
+ * The active border will be on the right if it's a tab button and ButtonPosition is set to: "tab".
23732
+ *
23733
+ * On mobile with the right sidebar, the active border will be on the bottom.
23734
+ * In landscape mode with the bottom bar, the active border will be on the right.
23735
+ *
23736
+ * The button contains an icon and a descriptive text.
23737
+ * @param {*} {
23738
+ * text: the text below the icon.
23739
+ * active: boolean describing the button's active state.
23740
+ * onClick: the onClick event.
23741
+ * count: will display a count on the button.
23742
+ * buttonPosition: decides the active border, depending if the button is placed in the right bar/left bar/bottom bar.
23743
+ * refValue: a reference value, in case it's needed.
23744
+ * id: the id of the button, in case it's needed.
23745
+ * children: the icon to be displayed.
23746
+ * }
23747
+ * @return {*} {JSX.Element}
23162
23748
  */
23163
23749
  var SidebarButton = function SidebarButton(_ref) {
23164
23750
  var _classnames;
@@ -23503,8 +24089,8 @@ function getIsActive(statusIds) {
23503
24089
  return true;
23504
24090
  }
23505
24091
 
23506
- var css_248z$3 = ".WorkOrderListItem-module_container__AaZwJ{padding:1rem}.WorkOrderListItem-module_container__AaZwJ>div:not(:first-of-type){gap:8px}.WorkOrderListItem-module_visual__UCRRo{align-items:center;background-color:var(--echoText);border-radius:50%;color:#fff;display:flex;flex-direction:column;font-size:12px;font-weight:500;height:40px;justify-content:center;margin:.5rem;padding:.5rem;width:40px}.WorkOrderListItem-module_primary__aflKC{align-items:center;display:flex;flex-flow:row nowrap}.WorkOrderListItem-module_tertiary__9VMmL{gap:.75rem}.WorkOrderListItem-module_tertiaryMultiline__fnZfW{align-items:flex-start;flex-direction:column;gap:.1rem}.WorkOrderListItem-module_primaryText__Fdd7q{width:auto}.WorkOrderListItem-module_secondaryText__I85sw{color:#565656}.WorkOrderListItem-module_tertiaryText__TRbrY{color:var(--tertiaryText)}.WorkOrderListItem-module_divider__XvYes{border:1px solid #d9d9d9;height:.75rem}.WorkOrderListItem-module_statusContainer__YJ0If{align-items:center;display:flex;flex-flow:row nowrap;gap:.2rem}.WorkOrderListItem-module_statusIndicator__aCFoR{border-radius:50%;height:.75rem;margin-left:.5rem;width:.75rem}.WorkOrderListItem-module_statusText__a2z46{display:contents;margin-left:.25rem}";
23507
- var styles$3 = {"container":"WorkOrderListItem-module_container__AaZwJ","visual":"WorkOrderListItem-module_visual__UCRRo","primary":"WorkOrderListItem-module_primary__aflKC","tertiary":"WorkOrderListItem-module_tertiary__9VMmL WorkOrderListItem-module_primary__aflKC","tertiaryMultiline":"WorkOrderListItem-module_tertiaryMultiline__fnZfW WorkOrderListItem-module_primary__aflKC","primaryText":"WorkOrderListItem-module_primaryText__Fdd7q","secondaryText":"WorkOrderListItem-module_secondaryText__I85sw","tertiaryText":"WorkOrderListItem-module_tertiaryText__TRbrY","divider":"WorkOrderListItem-module_divider__XvYes","statusContainer":"WorkOrderListItem-module_statusContainer__YJ0If","statusIndicator":"WorkOrderListItem-module_statusIndicator__aCFoR","statusText":"WorkOrderListItem-module_statusText__a2z46"};
24092
+ var css_248z$3 = ".WorkOrderListItem-module_container__AaZwJ{padding:1rem}.WorkOrderListItem-module_container__AaZwJ>div:not(:first-of-type){gap:8px}.WorkOrderListItem-module_visual__UCRRo{align-items:center;background-color:var(--echoText);border-radius:50%;color:#fff;display:flex;flex-direction:column;font-size:12px;font-weight:500;height:40px;justify-content:center;margin:.5rem;padding:.5rem;width:40px}.WorkOrderListItem-module_primary__aflKC{align-items:center;display:flex;flex-flow:row nowrap}.WorkOrderListItem-module_tertiary__9VMmL{gap:.75rem}.WorkOrderListItem-module_tertiaryMultiline__fnZfW{align-items:flex-start;flex-direction:column;gap:.1rem}.WorkOrderListItem-module_primaryText__Fdd7q{width:auto}.WorkOrderListItem-module_secondaryText__I85sw{color:#565656}.WorkOrderListItem-module_tertiaryText__TRbrY{color:var(--tertiaryText)}.WorkOrderListItem-module_divider__XvYes{border:1px solid #d9d9d9;height:.75rem}.WorkOrderListItem-module_statusContainer__YJ0If{align-items:center;display:flex;flex-flow:row nowrap;gap:.2rem}.WorkOrderListItem-module_statusIndicator__aCFoR{border-radius:50%;height:.75rem;margin-left:.5rem;width:.75rem}.WorkOrderListItem-module_statusText__a2z46{display:contents;margin-left:.25rem}.WorkOrderListItem-module_title__S3kG9{width:auto}";
24093
+ var styles$3 = {"container":"WorkOrderListItem-module_container__AaZwJ","visual":"WorkOrderListItem-module_visual__UCRRo","primary":"WorkOrderListItem-module_primary__aflKC","tertiary":"WorkOrderListItem-module_tertiary__9VMmL WorkOrderListItem-module_primary__aflKC","tertiaryMultiline":"WorkOrderListItem-module_tertiaryMultiline__fnZfW WorkOrderListItem-module_primary__aflKC","primaryText":"WorkOrderListItem-module_primaryText__Fdd7q","secondaryText":"WorkOrderListItem-module_secondaryText__I85sw","tertiaryText":"WorkOrderListItem-module_tertiaryText__TRbrY","divider":"WorkOrderListItem-module_divider__XvYes","statusContainer":"WorkOrderListItem-module_statusContainer__YJ0If","statusIndicator":"WorkOrderListItem-module_statusIndicator__aCFoR","statusText":"WorkOrderListItem-module_statusText__a2z46","title":"WorkOrderListItem-module_title__S3kG9"};
23508
24094
  styleInject(css_248z$3);
23509
24095
 
23510
24096
  function WorkOrderStatusLabel(_ref) {
@@ -23533,16 +24119,22 @@ var WorkOrderStatusColorMap = {
23533
24119
  active: '#FF9200'
23534
24120
  };
23535
24121
 
24122
+ function setShowDate(wo) {
24123
+ if (wo.orderType.toUpperCase() === 'PM01' && wo.requiredEndDateTime) return true;
24124
+ if (wo.orderType.toUpperCase() === 'PM02' && wo.maintenancePlanDate) return true;
24125
+ return false;
24126
+ }
23536
24127
  function WorkOrderListItem(props) {
23537
24128
  var _classnames;
23538
24129
  var isMobile = useIsMobile();
23539
24130
  var wo = props.workOrder;
24131
+ var showDate = setShowDate(wo);
23540
24132
  var displayHeaderDate = function displayHeaderDate() {
23541
24133
  if (wo.orderType.toUpperCase() === 'PM01') {
23542
- return /*#__PURE__*/React__default.createElement("div", null, "Req. end date: ", dateToStringOrEmpty(wo.requiredEndDateTime));
24134
+ return /*#__PURE__*/React__default.createElement("span", null, "Req. end date: ", dateToStringOrEmpty(wo.requiredEndDateTime));
23543
24135
  }
23544
24136
  if (wo.orderType.toUpperCase() === 'PM02') {
23545
- return /*#__PURE__*/React__default.createElement("div", null, "Planned date: ", dateToStringOrEmpty(wo.maintenancePlanDate));
24137
+ return /*#__PURE__*/React__default.createElement("span", null, "Planned date: ", dateToStringOrEmpty(wo.maintenancePlanDate));
23546
24138
  }
23547
24139
  return null;
23548
24140
  };
@@ -23554,6 +24146,7 @@ function WorkOrderListItem(props) {
23554
24146
  primary: /*#__PURE__*/React__default.createElement("div", {
23555
24147
  className: styles$3.primary
23556
24148
  }, /*#__PURE__*/React__default.createElement(Typography, {
24149
+ className: styles$3.title,
23557
24150
  variant: 'h6'
23558
24151
  }, wo.id.substring(4)), /*#__PURE__*/React__default.createElement(WorkOrderStatusLabel, {
23559
24152
  workOrderStatus: wo.activeStatusIds
@@ -23568,13 +24161,13 @@ function WorkOrderListItem(props) {
23568
24161
  variant: 'chart',
23569
24162
  group: 'ui',
23570
24163
  className: styles$3.tertiaryText
23571
- }, wo.planningPlant), !isOverflow && !isMobile && /*#__PURE__*/React__default.createElement("div", {
24164
+ }, wo.planningPlant), showDate && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, !isOverflow && !isMobile && /*#__PURE__*/React__default.createElement("div", {
23572
24165
  className: styles$3.divider
23573
24166
  }), /*#__PURE__*/React__default.createElement(Typography, {
23574
24167
  variant: 'chart',
23575
24168
  group: 'ui',
23576
24169
  className: styles$3.tertiaryText
23577
- }, displayHeaderDate())),
24170
+ }, displayHeaderDate()))),
23578
24171
  visual: /*#__PURE__*/React__default.createElement("div", {
23579
24172
  className: styles$3.visual
23580
24173
  }, /*#__PURE__*/React__default.createElement(Icon$1, {
@@ -23592,8 +24185,8 @@ var staticData$3 = {
23592
24185
  prefix: 'echo',
23593
24186
  group: 'robim_external'
23594
24187
  };
23595
- /*
23596
- * ROBIM EXTERNAL ICONS
24188
+ /*
24189
+ * ROBIM EXTERNAL ICONS
23597
24190
  */
23598
24191
  var robim_external_ald = Object.assign(Object.assign({}, staticData$3), {
23599
24192
  name: 'robim_external_ald',
@@ -23748,15 +24341,15 @@ var echoIcons = /*#__PURE__*/Object.freeze({
23748
24341
 
23749
24342
  Icon$1.add(Object.assign(Object.assign({}, edsIcons), echoIcons));
23750
24343
 
23751
- /**
23752
- * Helper method that will return a list row given some input values. Used in IconList component for rendering rows
23753
- *
23754
- * @param {boolean} isDraggable flag to indicate that the row is draggable
23755
- * @param {number} index the index of the list
23756
- * @param {IconListState} iconListState the state from the IconList component used to create the row and its interactions
23757
- * @param {(value: React.SetStateAction<IconListState>) => void} setIconListState the action to update the state from the IconList component
23758
- * @param {IconItem[]} expandedIcons the icons to be displayed if the row is expandable. Is undefined if the row should not be expandable
23759
- * @return {*} {React.ReactNode} A list row component created from the input parameters
24344
+ /**
24345
+ * Helper method that will return a list row given some input values. Used in IconList component for rendering rows
24346
+ *
24347
+ * @param {boolean} isDraggable flag to indicate that the row is draggable
24348
+ * @param {number} index the index of the list
24349
+ * @param {IconListState} iconListState the state from the IconList component used to create the row and its interactions
24350
+ * @param {(value: React.SetStateAction<IconListState>) => void} setIconListState the action to update the state from the IconList component
24351
+ * @param {IconItem[]} expandedIcons the icons to be displayed if the row is expandable. Is undefined if the row should not be expandable
24352
+ * @return {*} {React.ReactNode} A list row component created from the input parameters
23760
24353
  */
23761
24354
  var createListRow = function createListRow(isDraggable, index, iconListState, setIconListState, expandedIcons) {
23762
24355
  return /*#__PURE__*/React__default.createElement(ListRow, {
@@ -23788,22 +24381,22 @@ var css_248z$2 = ".iconList-module_wrapper__AMjAK{display:flex;flex-direction:co
23788
24381
  var styles$2 = {"wrapper":"iconList-module_wrapper__AMjAK","header":"iconList-module_header__g2suM"};
23789
24382
  styleInject(css_248z$2);
23790
24383
 
23791
- /**
23792
- * Component that renders an IconList of rows, that can be draggable and/or expandable
23793
- *
23794
- * @param {IconListProps} {
23795
- * style: the style to override the IconList wrapper
23796
- * title: The title of the list
23797
- * items: { The items to be rendered in the row
23798
- * title: the title of the item in the row
23799
- * subtitle: the subtitle of the item in the row
23800
- * icons: the icons that will be displayed on the same row, and their respective actions
23801
- * }[]
23802
- * isDraggable: flag to indicate if the elements in the list should be draggable
23803
- * expandedIcons: list of icons that should be displayed if a row is expanded. If undefined no row can be expanded
23804
- * onUpdatedOrder: method that will be called when the order of the list has changed
23805
- * }
23806
- * @return {*} {JSX.Element} a list of items that can be draggable and/or expandable
24384
+ /**
24385
+ * Component that renders an IconList of rows, that can be draggable and/or expandable
24386
+ *
24387
+ * @param {IconListProps} {
24388
+ * style: the style to override the IconList wrapper
24389
+ * title: The title of the list
24390
+ * items: { The items to be rendered in the row
24391
+ * title: the title of the item in the row
24392
+ * subtitle: the subtitle of the item in the row
24393
+ * icons: the icons that will be displayed on the same row, and their respective actions
24394
+ * }[]
24395
+ * isDraggable: flag to indicate if the elements in the list should be draggable
24396
+ * expandedIcons: list of icons that should be displayed if a row is expanded. If undefined no row can be expanded
24397
+ * onUpdatedOrder: method that will be called when the order of the list has changed
24398
+ * }
24399
+ * @return {*} {JSX.Element} a list of items that can be draggable and/or expandable
23807
24400
  */
23808
24401
  var IconList = function IconList(_ref) {
23809
24402
  var style = _ref.style,
@@ -23881,21 +24474,21 @@ var css_248z$1 = ".linkCard-module_wrapper__eoD5r{background-color:var(--white);
23881
24474
  var styles$1 = {"wrapper":"linkCard-module_wrapper__eoD5r","image":"linkCard-module_image__EUhQK","header":"linkCard-module_header__P5GTe","title":"linkCard-module_title__WGglA","subTitle":"linkCard-module_subTitle__0j2D5","links":"linkCard-module_links__LkokT","link":"linkCard-module_link__uaQqQ"};
23882
24475
  styleInject(css_248z$1);
23883
24476
 
23884
- /**
23885
- * Component that renders a card with an image and a list of links
23886
- *
23887
- * @param {LinkCardProps} {
23888
- * style: style element to override wrapper style
23889
- * image: the image scr of the image to be displayed
23890
- * title: the title of the card
23891
- * subTitle: the subtitle of the cars
23892
- * links { A list of links to display
23893
- * title: the text of the link
23894
- * url: the url to the link
23895
- * target: how the link should be opened. Possible values are '_blank' | '_self', default is '_self'
23896
- * }
23897
- * }
23898
- * @return {*} {JSX.Element} a card element with an image and some provided links
24477
+ /**
24478
+ * Component that renders a card with an image and a list of links
24479
+ *
24480
+ * @param {LinkCardProps} {
24481
+ * style: style element to override wrapper style
24482
+ * image: the image scr of the image to be displayed
24483
+ * title: the title of the card
24484
+ * subTitle: the subtitle of the cars
24485
+ * links { A list of links to display
24486
+ * title: the text of the link
24487
+ * url: the url to the link
24488
+ * target: how the link should be opened. Possible values are '_blank' | '_self', default is '_self'
24489
+ * }
24490
+ * }
24491
+ * @return {*} {JSX.Element} a card element with an image and some provided links
23899
24492
  */
23900
24493
  var LinkCard = function LinkCard(_ref) {
23901
24494
  var style = _ref.style,
@@ -23974,20 +24567,20 @@ var css_248z = ".optionsList-module_wrapper__r6i4r{display:table;width:100%}.opt
23974
24567
  var styles = {"wrapper":"optionsList-module_wrapper__r6i4r","head":"optionsList-module_head__W2pf7","row":"optionsList-module_row__hkSEt","item":"optionsList-module_item__uXdrQ","itemTitle":"optionsList-module_itemTitle__tQcdj","columnTitle":"optionsList-module_columnTitle__ciUTO","radio":"optionsList-module_radio__Ll5Fr","circle":"optionsList-module_circle__5Ub8n"};
23975
24568
  styleInject(css_248z);
23976
24569
 
23977
- /**
23978
- * Component that renders a list with a set number of radio buttons for each row in the list
23979
- *
23980
- * @param {OptionsListProps} {
23981
- * items:{ the items that should be shown in the list
23982
- * title: the text displayed for a row in the list
23983
- * color: the background color used in the badge in front of the title of the item
23984
- * selectedColumnIndex: specifies witch radio button should have selected state. Should not be larger than the columns input property
23985
- * }
23986
- * style: Optional parameter that can override the wrapper style
23987
- * titles: list of title that should be shown for the different columns in the list
23988
- * columns: the number of columns the list should have
23989
- * }
23990
- * @return {*} {JSX.Element} a list of rows with a set of radio buttons
24570
+ /**
24571
+ * Component that renders a list with a set number of radio buttons for each row in the list
24572
+ *
24573
+ * @param {OptionsListProps} {
24574
+ * items:{ the items that should be shown in the list
24575
+ * title: the text displayed for a row in the list
24576
+ * color: the background color used in the badge in front of the title of the item
24577
+ * selectedColumnIndex: specifies witch radio button should have selected state. Should not be larger than the columns input property
24578
+ * }
24579
+ * style: Optional parameter that can override the wrapper style
24580
+ * titles: list of title that should be shown for the different columns in the list
24581
+ * columns: the number of columns the list should have
24582
+ * }
24583
+ * @return {*} {JSX.Element} a list of rows with a set of radio buttons
23991
24584
  */
23992
24585
  var OptionsList = function OptionsList(_ref) {
23993
24586
  var items = _ref.items,
@@ -24035,5 +24628,5 @@ var OptionsList = function OptionsList(_ref) {
24035
24628
  }));
24036
24629
  };
24037
24630
 
24038
- export { ButtonWithPopover, ContextMenu, DataInfoButton, DialogGenerator, DraggableItemsWrapper, Dropdown, EchoBottomBar, EchoCard, EchoHeader, EchoTooltip, FloatingActionButton, FloatingSearchBar, Icon, IconList, InlineTagIconLink, LinkCard, ListItem, ListRow, OptionsList, Panel, PanelContent, PanelWrapper, RadioButtonGroup, ReactDatePicker, RoundIconButton, RoundIconButtonVariants, SideSheet, SideSheetOrientation, SidebarButton, SliderField, SplitView, TagCategoryIcon, TagCategoryType, TagContextMenu, TagIcon, TagIconShadowWrapper, TextIconButton, TimePicker, WorkOrderListItem, classnames$1 as classnames, echoIcons, getIcon, notifications_m1, notifications_m2, notifications_m3, notifications_m4, notifications_m5, notifications_m6, notifications_m9, notifications_main_group, punches_main_group, punches_pa, punches_pb, robim_external_ald, robim_external_iwit, robim_external_timp, robim_external_timp_text, themeConst, useIsMobile, useKeyboardNavigation, useListNavigator, usePanelContext, useSectionNavigator, workorders_main_group, workorders_pm01, workorders_pm02, workorders_pm03, workorders_pm04, workorders_pm05, workorders_pm06, workorders_pm10, workorders_pm15, workorders_pm20 };
24631
+ export { ButtonWithPopover, ContextMenu, DataInfoButton, DialogGenerator, DraggableItemsWrapper, Dropdown, EchoBottomBar, EchoCard, EchoHeader, EchoTooltip, FloatingActionButton, FloatingSearchBar, Icon, IconList, InlineTagIconLink, LinkCard, ListItem, ListRow, OptionsList, Panel, PanelContent, PanelWrapper, RadioButtonGroup, ReactDatePicker, RoundIconButton, RoundIconButtonVariants, SideSheet, SideSheetOrientation, SidebarButton, SliderField, SplitView, TagCategoryIcon, TagCategoryType, TagContextMenu, TagIcon, TagIconShadowWrapper, TextIconButton, TimePicker, WorkOrderListItem, classnames$1 as classnames, echoIcons, getIcon, notifications_m1, notifications_m2, notifications_m3, notifications_m4, notifications_m5, notifications_m6, notifications_m9, notifications_main_group, punches_main_group, punches_pa, punches_pb, robim_external_ald, robim_external_iwit, robim_external_timp, robim_external_timp_text, themeConst, useIsMobile, useKeyboardNavigation, useListNavigator, usePanelStore, useSectionNavigator, workorders_main_group, workorders_pm01, workorders_pm02, workorders_pm03, workorders_pm04, workorders_pm05, workorders_pm06, workorders_pm10, workorders_pm15, workorders_pm20 };
24039
24632
  //# sourceMappingURL=index.js.map