@apia/components 2.0.6 → 2.0.8

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 (142) hide show
  1. package/dist/components/IconsList/Icon.js.map +1 -1
  2. package/dist/components/IconsList/IconWrapper.js.map +1 -1
  3. package/dist/components/IconsList/KeyHandler.js.map +1 -1
  4. package/dist/components/IconsList/context.js.map +1 -1
  5. package/dist/components/IconsList/index.js.map +1 -1
  6. package/dist/components/IconsList/renderers/DefaultIconRenderer.js.map +1 -1
  7. package/dist/components/IconsList/store/context.js.map +1 -1
  8. package/dist/components/IconsList/store/distinctors.js.map +1 -1
  9. package/dist/components/IconsList/store/keysMaker.js.map +1 -1
  10. package/dist/components/IconsList/store/operations.js.map +1 -1
  11. package/dist/components/IconsList/store/state.js.map +1 -1
  12. package/dist/components/IconsList/store/useStore.js.map +1 -1
  13. package/dist/components/IconsList/styles.js.map +1 -1
  14. package/dist/components/IconsList/util.js.map +1 -1
  15. package/dist/components/ListBox/Combobox.js.map +1 -1
  16. package/dist/components/ListBox/listbox.js.map +1 -1
  17. package/dist/components/ListBox/operations.js.map +1 -1
  18. package/dist/components/ListBox/useIndexedChildren.js.map +1 -1
  19. package/dist/components/ListBox/useListboxAutofocus.js.map +1 -1
  20. package/dist/components/ListBox/useListboxContextValue.js.map +1 -1
  21. package/dist/components/ListBox/useShoutSelectionChange.js.map +1 -1
  22. package/dist/components/ListBox/useStore.js.map +1 -1
  23. package/dist/components/ListBox/useUpdateRowCount.js.map +1 -1
  24. package/dist/components/SortableList/SortableListHandler.js +1 -1
  25. package/dist/components/SortableList/SortableListHandler.js.map +1 -1
  26. package/dist/components/SortableList/SortableListItem.js.map +1 -1
  27. package/dist/components/SortableList/index.js.map +1 -1
  28. package/dist/components/Toolbar/ToolbarController.js.map +1 -1
  29. package/dist/components/Toolbar/ToolbarIconButton.js.map +1 -1
  30. package/dist/components/Toolbar/ToolbarInput.js.map +1 -1
  31. package/dist/components/Toolbar/ToolbarSelect.js.map +1 -1
  32. package/dist/components/Toolbar/ToolbarSeparator.js.map +1 -1
  33. package/dist/components/Toolbar/ToolbarTextButton.js.map +1 -1
  34. package/dist/components/Toolbar/index.js.map +1 -1
  35. package/dist/components/Toolbar/styles.js.map +1 -1
  36. package/dist/components/accordion/Accordion.d.ts +1 -0
  37. package/dist/components/accordion/Accordion.js +6 -0
  38. package/dist/components/accordion/Accordion.js.map +1 -1
  39. package/dist/components/accordion/AccordionItem.d.ts +2 -1
  40. package/dist/components/accordion/AccordionItem.js +5 -1
  41. package/dist/components/accordion/AccordionItem.js.map +1 -1
  42. package/dist/components/accordion/AccordionItemButton.js.map +1 -1
  43. package/dist/components/accordion/AccordionItemContent.js.map +1 -1
  44. package/dist/components/accordion/KeyHandler.js +64 -59
  45. package/dist/components/accordion/KeyHandler.js.map +1 -1
  46. package/dist/components/accordion/context.js.map +1 -1
  47. package/dist/components/accordion/defaultElements/Checkbox.js.map +1 -1
  48. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js +1 -3
  49. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js.map +1 -1
  50. package/dist/components/accordion/defaultElements/useIsChecked.js.map +1 -1
  51. package/dist/components/accordion/handler.d.ts +1 -1
  52. package/dist/components/accordion/handler.js +11 -3
  53. package/dist/components/accordion/handler.js.map +1 -1
  54. package/dist/components/apia/ApiaDateFilter.js.map +1 -1
  55. package/dist/components/apia/ApiaFilter.js.map +1 -1
  56. package/dist/components/buttons/useOtherTagButton.js.map +1 -1
  57. package/dist/components/collapsiblePanel/index.js.map +1 -1
  58. package/dist/components/collapsiblePanel/styles.js.map +1 -1
  59. package/dist/components/dialogs/AlertModal.js.map +1 -1
  60. package/dist/components/dialogs/ConfirmModal.js.map +1 -1
  61. package/dist/components/forms/Captcha.js.map +1 -1
  62. package/dist/components/forms/Checkbox.js.map +1 -1
  63. package/dist/components/forms/DateInput.js.map +1 -1
  64. package/dist/components/forms/FieldErrorMessage.js.map +1 -1
  65. package/dist/components/forms/FieldLabel.js.map +1 -1
  66. package/dist/components/forms/IconInput.js.map +1 -1
  67. package/dist/components/forms/NumberInput.js.map +1 -1
  68. package/dist/components/forms/RequiredMark.js.map +1 -1
  69. package/dist/components/forms/buttons/BaseButton.js.map +1 -1
  70. package/dist/components/forms/buttons/IconButton.js.map +1 -1
  71. package/dist/components/forms/buttons/SimpleButton.js.map +1 -1
  72. package/dist/components/forms/util/style.js.map +1 -1
  73. package/dist/components/importComponent.js +1 -1
  74. package/dist/components/importComponent.js.map +1 -1
  75. package/dist/components/loaders/LinearLoader.js.map +1 -1
  76. package/dist/components/loaders/LoaderSpinner.js.map +1 -1
  77. package/dist/components/loaders/ProgressBar.js.map +1 -1
  78. package/dist/components/modals/CalendarModal.js.map +1 -1
  79. package/dist/components/modals/Modal.d.ts +28 -2
  80. package/dist/components/modals/Modal.js +3 -1
  81. package/dist/components/modals/Modal.js.map +1 -1
  82. package/dist/components/modals/ModalContext.js.map +1 -1
  83. package/dist/components/modals/Overlay.js.map +1 -1
  84. package/dist/components/modals/StaticModal.js.map +1 -1
  85. package/dist/components/modals/WindowModal.js +225 -4
  86. package/dist/components/modals/WindowModal.js.map +1 -1
  87. package/dist/components/modals/hooks/useEscapeKey.js +36 -0
  88. package/dist/components/modals/hooks/useEscapeKey.js.map +1 -0
  89. package/dist/components/modals/hooks/useInitialFocus.js +37 -0
  90. package/dist/components/modals/hooks/useInitialFocus.js.map +1 -0
  91. package/dist/components/modals/hooks/useModal.js.map +1 -1
  92. package/dist/components/modals/hooks/useStyleState.js +44 -0
  93. package/dist/components/modals/hooks/useStyleState.js.map +1 -0
  94. package/dist/components/modals/layout/Confirm.js.map +1 -1
  95. package/dist/components/modals/layout/DialogButtonBar.js.map +1 -1
  96. package/dist/components/modals/layout/DialogHeader.js +1 -2
  97. package/dist/components/modals/layout/DialogHeader.js.map +1 -1
  98. package/dist/components/responsive/AutoEllipsis.js.map +1 -1
  99. package/dist/components/responsive/makeResponsiveComponent.js.map +1 -1
  100. package/dist/components/waiAriaHelpers/typeAhead.js.map +1 -1
  101. package/dist/globalFocus.js +2 -2
  102. package/dist/globalFocus.js.map +1 -1
  103. package/dist/hooks/useBodyScrollLock.js +2 -2
  104. package/dist/hooks/useBodyScrollLock.js.map +1 -1
  105. package/dist/index.d.ts +1 -0
  106. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js +3 -3
  107. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js.map +1 -1
  108. package/dist/objects/ApiaUtil/index.js +1 -1
  109. package/dist/objects/ApiaUtil/index.js.map +1 -1
  110. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +2 -2
  111. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js.map +1 -1
  112. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js +3 -3
  113. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js.map +1 -1
  114. package/dist/objects/ApiaUtil/modals/OpenModal.d.ts +31 -1
  115. package/dist/objects/ApiaUtil/modals/OpenModal.js +18 -0
  116. package/dist/objects/ApiaUtil/modals/OpenModal.js.map +1 -1
  117. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js.map +1 -1
  118. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js.map +1 -1
  119. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js.map +1 -1
  120. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js.map +1 -1
  121. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js +1 -1
  122. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js.map +1 -1
  123. package/dist/objects/ApiaUtil/tabs/util.js.map +1 -1
  124. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js +1 -1
  125. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js.map +1 -1
  126. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js.map +1 -1
  127. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js +1 -1
  128. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js.map +1 -1
  129. package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js.map +1 -1
  130. package/dist/objects/ApiaUtil/tooltips/tooltip/util.js.map +1 -1
  131. package/dist/tabs/Content.js.map +1 -1
  132. package/dist/tabs/ContextMenu.js +1 -2
  133. package/dist/tabs/ContextMenu.js.map +1 -1
  134. package/dist/tabs/Item.js +1 -2
  135. package/dist/tabs/Item.js.map +1 -1
  136. package/dist/tabs/Tabs.js.map +1 -1
  137. package/dist/tabs/TabsList.js.map +1 -1
  138. package/dist/tabs/renderers/DefaultTabsLabelRenderer.js.map +1 -1
  139. package/dist/tabs/tabsController.js.map +1 -1
  140. package/dist/tabs/useTabsList.js.map +1 -1
  141. package/dist/tabs/util.js.map +1 -1
  142. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"ApiaUtilTooltip.js","sources":["../../../../src/objects/ApiaUtil/tooltips/ApiaUtilTooltip.ts"],"sourcesContent":["import { TTooltip } from './tooltip';\n\nlet maxId = 0;\n\nexport class ApiaUtilTooltip {\n id = `tooltip__${maxId++}`;\n\n constructor(public props: TTooltip, public close: () => void) {}\n}\n"],"names":[],"mappings":";;;;;;AAEA,IAAI,KAAQ,GAAA,CAAA,CAAA;AAEL,MAAM,eAAgB,CAAA;AAAA,EAG3B,WAAA,CAAmB,OAAwB,KAAmB,EAAA;AAA3C,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAwB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAF3C,IAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK,YAAY,KAAO,EAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAEuC;AACjE;;;;"}
1
+ {"version":3,"file":"ApiaUtilTooltip.js","sources":["../../../../src/objects/ApiaUtil/tooltips/ApiaUtilTooltip.ts"],"sourcesContent":["import { TTooltip } from './tooltip';\r\n\r\nlet maxId = 0;\r\n\r\nexport class ApiaUtilTooltip {\r\n id = `tooltip__${maxId++}`;\r\n\r\n constructor(public props: TTooltip, public close: () => void) {}\r\n}\r\n"],"names":[],"mappings":";;;;;;AAEA,IAAI,KAAQ,GAAA,CAAA,CAAA;AAEL,MAAM,eAAgB,CAAA;AAAA,EAG3B,WAAA,CAAmB,OAAwB,KAAmB,EAAA;AAA3C,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAAwB,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAF3C,IAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK,YAAY,KAAO,EAAA,CAAA,CAAA,CAAA,CAAA;AAAA,GAEuC;AACjE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ApiaUtilTooltips.js","sources":["../../../../src/objects/ApiaUtil/tooltips/ApiaUtilTooltips.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { EventEmitter, useMount, useUnmount } from '@apia/util';\nimport { ApiaUtilTooltip } from './ApiaUtilTooltip';\nimport { AutomaticTooltip } from './AutomaticTooltip';\nimport { TTooltip, Tooltip } from './tooltip';\n\nexport class ApiaUtilTooltips {\n #emitter = new EventEmitter<{\n changedList: ApiaUtilTooltip[];\n }>();\n tooltips: ApiaUtilTooltip[] = [];\n\n constructor() {\n document.addEventListener('keydown', (ev) => {\n if (ev.code === 'Escape') {\n this.tooltips = this.tooltips.filter(\n (current) => current.props.closeOnEscape !== false,\n );\n this.#shoutChangedList();\n }\n });\n }\n\n #shoutChangedList = () => {\n this.#emitter.emit('changedList', [...this.tooltips]);\n };\n\n /**\n * Permite crear un tooltip que se abrirá automáticamente al estar parado\n * sobre un elemento durante 300ms\n */\n useHover = (tooltip?: Partial<TTooltip>) => {\n let tt: AutomaticTooltip | undefined = undefined;\n\n tt = useMemo(() => {\n tt?.ref(null);\n return new AutomaticTooltip(tooltip ?? null, this);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tooltip]);\n\n useUnmount(() => {\n tt?.ref(null);\n });\n\n return tt;\n };\n\n close = (id: string) => {\n this.tooltips = this.tooltips.filter((current) => current.id !== id);\n this.#shoutChangedList();\n };\n\n closeAll = () => {\n this.tooltips = [];\n this.#shoutChangedList();\n };\n\n open = (tooltip: TTooltip) => {\n const controller = new ApiaUtilTooltip(tooltip, () => {\n this.close(controller.id);\n });\n\n if (tooltip.closeOthers !== false) {\n this.tooltips = [controller];\n } else {\n this.tooltips = [...this.tooltips, controller];\n }\n this.#shoutChangedList();\n\n return controller;\n };\n\n Component = () => {\n const [tooltips, setTooltips] = useState<ApiaUtilTooltip[]>(this.tooltips);\n\n useMount(() => {\n const unsuscribeToList = this.#emitter.on('changedList', (ev) => {\n setTooltips(ev);\n });\n\n return () => {\n unsuscribeToList();\n };\n });\n\n return (\n <>\n {tooltips.map((current) => (\n <Tooltip\n {...current.props}\n onClose={current.close.bind(current)}\n key={current.id}\n />\n ))}\n </>\n );\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiaUtilTooltips.js","sources":["../../../../src/objects/ApiaUtil/tooltips/ApiaUtilTooltips.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\r\nimport { EventEmitter, useMount, useUnmount } from '@apia/util';\r\nimport { ApiaUtilTooltip } from './ApiaUtilTooltip';\r\nimport { AutomaticTooltip } from './AutomaticTooltip';\r\nimport { TTooltip, Tooltip } from './tooltip';\r\n\r\nexport class ApiaUtilTooltips {\r\n #emitter = new EventEmitter<{\r\n changedList: ApiaUtilTooltip[];\r\n }>();\r\n tooltips: ApiaUtilTooltip[] = [];\r\n\r\n constructor() {\r\n document.addEventListener('keydown', (ev) => {\r\n if (ev.code === 'Escape') {\r\n this.tooltips = this.tooltips.filter(\r\n (current) => current.props.closeOnEscape !== false,\r\n );\r\n this.#shoutChangedList();\r\n }\r\n });\r\n }\r\n\r\n #shoutChangedList = () => {\r\n this.#emitter.emit('changedList', [...this.tooltips]);\r\n };\r\n\r\n /**\r\n * Permite crear un tooltip que se abrirá automáticamente al estar parado\r\n * sobre un elemento durante 300ms\r\n */\r\n useHover = (tooltip?: Partial<TTooltip>) => {\r\n let tt: AutomaticTooltip | undefined = undefined;\r\n\r\n tt = useMemo(() => {\r\n tt?.ref(null);\r\n return new AutomaticTooltip(tooltip ?? null, this);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [tooltip]);\r\n\r\n useUnmount(() => {\r\n tt?.ref(null);\r\n });\r\n\r\n return tt;\r\n };\r\n\r\n close = (id: string) => {\r\n this.tooltips = this.tooltips.filter((current) => current.id !== id);\r\n this.#shoutChangedList();\r\n };\r\n\r\n closeAll = () => {\r\n this.tooltips = [];\r\n this.#shoutChangedList();\r\n };\r\n\r\n open = (tooltip: TTooltip) => {\r\n const controller = new ApiaUtilTooltip(tooltip, () => {\r\n this.close(controller.id);\r\n });\r\n\r\n if (tooltip.closeOthers !== false) {\r\n this.tooltips = [controller];\r\n } else {\r\n this.tooltips = [...this.tooltips, controller];\r\n }\r\n this.#shoutChangedList();\r\n\r\n return controller;\r\n };\r\n\r\n Component = () => {\r\n const [tooltips, setTooltips] = useState<ApiaUtilTooltip[]>(this.tooltips);\r\n\r\n useMount(() => {\r\n const unsuscribeToList = this.#emitter.on('changedList', (ev) => {\r\n setTooltips(ev);\r\n });\r\n\r\n return () => {\r\n unsuscribeToList();\r\n };\r\n });\r\n\r\n return (\r\n <>\r\n {tooltips.map((current) => (\r\n <Tooltip\r\n {...current.props}\r\n onClose={current.close.bind(current)}\r\n key={current.id}\r\n />\r\n ))}\r\n </>\r\n );\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ var __privateAdd = (obj, member, value) => {
19
19
  };
20
20
  var __privateSet = (obj, member, value, setter) => {
21
21
  __accessCheck(obj, member, "write to private field");
22
- setter ? setter.call(obj, value) : member.set(obj, value);
22
+ member.set(obj, value);
23
23
  return value;
24
24
  };
25
25
  var _tooltipTimeout, _unsuscribe, _tooltip;
@@ -1 +1 @@
1
- {"version":3,"file":"AutomaticTooltip.js","sources":["../../../../src/objects/ApiaUtil/tooltips/AutomaticTooltip.ts"],"sourcesContent":["import type { ApiaUtilTooltips } from './ApiaUtilTooltips';\nimport { TTooltip } from './tooltip';\n\nlet y = 0,\n x = 0;\ndocument?.addEventListener('mousemove', (ev) => {\n x = ev.clientX;\n y = ev.clientY;\n});\n\nexport class AutomaticTooltip {\n #tooltipTimeout = 0;\n #unsuscribe: (() => void) | null = null;\n\n ref = (el: HTMLElement | null) => {\n this.#unsuscribe?.();\n\n const listener = () => {\n clearTimeout(this.#tooltipTimeout);\n\n this.#tooltipTimeout = setTimeout(() => {\n if (this.#tooltip?.children)\n this.handler.open({\n closeOnMouseLeaveTooltip: true,\n closeOnEscape: true,\n closeOnScrollOut: true,\n ...this.#tooltip,\n anchorPoint: { left: x + 3, top: y + 3 },\n });\n }, 500) as unknown as number;\n };\n\n const reset = () => {\n clearTimeout(this.#tooltipTimeout);\n };\n\n if (el) {\n el.addEventListener('mousemove', listener);\n el.addEventListener('mouseleave', reset);\n\n this.#unsuscribe = () => {\n el.removeEventListener('mousemove', listener);\n el.removeEventListener('mouseleave', reset);\n };\n } else {\n this.#unsuscribe?.();\n reset();\n }\n };\n\n #tooltip: Partial<TTooltip> | null = null;\n\n constructor(\n tooltip: Partial<TTooltip> | null = null,\n private handler: ApiaUtilTooltips,\n ) {\n this.#tooltip = tooltip;\n }\n\n update = (tooltip: Partial<TTooltip>) => {\n this.#tooltip = tooltip;\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutomaticTooltip.js","sources":["../../../../src/objects/ApiaUtil/tooltips/AutomaticTooltip.ts"],"sourcesContent":["import type { ApiaUtilTooltips } from './ApiaUtilTooltips';\r\nimport { TTooltip } from './tooltip';\r\n\r\nlet y = 0,\r\n x = 0;\r\ndocument?.addEventListener('mousemove', (ev) => {\r\n x = ev.clientX;\r\n y = ev.clientY;\r\n});\r\n\r\nexport class AutomaticTooltip {\r\n #tooltipTimeout = 0;\r\n #unsuscribe: (() => void) | null = null;\r\n\r\n ref = (el: HTMLElement | null) => {\r\n this.#unsuscribe?.();\r\n\r\n const listener = () => {\r\n clearTimeout(this.#tooltipTimeout);\r\n\r\n this.#tooltipTimeout = setTimeout(() => {\r\n if (this.#tooltip?.children)\r\n this.handler.open({\r\n closeOnMouseLeaveTooltip: true,\r\n closeOnEscape: true,\r\n closeOnScrollOut: true,\r\n ...this.#tooltip,\r\n anchorPoint: { left: x + 3, top: y + 3 },\r\n });\r\n }, 500) as unknown as number;\r\n };\r\n\r\n const reset = () => {\r\n clearTimeout(this.#tooltipTimeout);\r\n };\r\n\r\n if (el) {\r\n el.addEventListener('mousemove', listener);\r\n el.addEventListener('mouseleave', reset);\r\n\r\n this.#unsuscribe = () => {\r\n el.removeEventListener('mousemove', listener);\r\n el.removeEventListener('mouseleave', reset);\r\n };\r\n } else {\r\n this.#unsuscribe?.();\r\n reset();\r\n }\r\n };\r\n\r\n #tooltip: Partial<TTooltip> | null = null;\r\n\r\n constructor(\r\n tooltip: Partial<TTooltip> | null = null,\r\n private handler: ApiaUtilTooltips,\r\n ) {\r\n this.#tooltip = tooltip;\r\n }\r\n\r\n update = (tooltip: Partial<TTooltip>) => {\r\n this.#tooltip = tooltip;\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../../../src/objects/ApiaUtil/tooltips/tooltip/Tooltip.tsx"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { TTooltip } from './types';\nimport { Box, ThemeUICSSObject } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { calculateTooltipPosition, useHandlers } from './util';\n\nexport const Tooltip = ({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\n children,\n className,\n closeOnClick = false,\n closeOnClickOut = true,\n closeOnEscape = true,\n closeOnMouseLeaveTooltip = true,\n closeOnMouseLeaveAttachedElement = true,\n closeOnScrollOut = true,\n minSize,\n onClose,\n preferredOrientationX = 'right',\n preferredOrientationY = 'bottom',\n preferredSize = { height: 'auto', width: 'auto' },\n variant = 'layout.common.tooltips.primary',\n}: TTooltip) => {\n const calculatedPosition = calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize,\n });\n\n const sx = {\n position: 'fixed',\n ...calculatedPosition,\n } as ThemeUICSSObject;\n\n const { handleOnClick } = useHandlers({\n attachToElement,\n closeOnEscape,\n closeOnClickOut,\n closeOnClick,\n closeOnMouseLeaveTooltip,\n closeOnMouseLeaveAttachedElement,\n closeOnScrollOut,\n onClose,\n });\n\n return (\n <Box\n className={`tooltip__wrapper ${className ?? ''}`}\n {...getVariant(variant)}\n sx={sx}\n onClick={handleOnClick}\n >\n {children}\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;AAMO,MAAM,UAAU,CAAC;AAAA,EACtB,WAAA;AAAA,EACA,eAAA;AAAA,EACA,0BAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAe,GAAA,KAAA;AAAA,EACf,eAAkB,GAAA,IAAA;AAAA,EAClB,aAAgB,GAAA,IAAA;AAAA,EAChB,wBAA2B,GAAA,IAAA;AAAA,EAC3B,gCAAmC,GAAA,IAAA;AAAA,EACnC,gBAAmB,GAAA,IAAA;AAAA,EACnB,OAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAwB,GAAA,OAAA;AAAA,EACxB,qBAAwB,GAAA,QAAA;AAAA,EACxB,aAAgB,GAAA,EAAE,MAAQ,EAAA,MAAA,EAAQ,OAAO,MAAO,EAAA;AAAA,EAChD,OAAU,GAAA,gCAAA;AACZ,CAAgB,KAAA;AACd,EAAA,MAAM,qBAAqB,wBAAyB,CAAA;AAAA,IAClD,WAAA;AAAA,IACA,eAAA;AAAA,IACA,0BAAA;AAAA,IACA,qBAAA;AAAA,IACA,OAAA;AAAA,IACA,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA,aAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,EAAK,GAAA;AAAA,IACT,QAAU,EAAA,OAAA;AAAA,IACV,GAAG,kBAAA;AAAA,GACL,CAAA;AAEA,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,WAAY,CAAA;AAAA,IACpC,eAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,wBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gBAAA;AAAA,IACA,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,CAAoB,iBAAA,EAAA,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,MAC7C,GAAG,WAAW,OAAO,CAAA;AAAA,MACtB,EAAA;AAAA,MACA,OAAS,EAAA,aAAA;AAAA,MAER,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../../../src/objects/ApiaUtil/tooltips/tooltip/Tooltip.tsx"],"sourcesContent":["/* eslint-disable no-param-reassign */\r\nimport { TTooltip } from './types';\r\nimport { Box, ThemeUICSSObject } from '@apia/theme';\r\nimport { getVariant } from '@apia/theme';\r\nimport { calculateTooltipPosition, useHandlers } from './util';\r\n\r\nexport const Tooltip = ({\r\n anchorPoint,\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n attachToMousePosition,\r\n children,\r\n className,\r\n closeOnClick = false,\r\n closeOnClickOut = true,\r\n closeOnEscape = true,\r\n closeOnMouseLeaveTooltip = true,\r\n closeOnMouseLeaveAttachedElement = true,\r\n closeOnScrollOut = true,\r\n minSize,\r\n onClose,\r\n preferredOrientationX = 'right',\r\n preferredOrientationY = 'bottom',\r\n preferredSize = { height: 'auto', width: 'auto' },\r\n variant = 'layout.common.tooltips.primary',\r\n}: TTooltip) => {\r\n const calculatedPosition = calculateTooltipPosition({\r\n anchorPoint,\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n attachToMousePosition,\r\n minSize,\r\n preferredOrientationX,\r\n preferredOrientationY,\r\n preferredSize,\r\n });\r\n\r\n const sx = {\r\n position: 'fixed',\r\n ...calculatedPosition,\r\n } as ThemeUICSSObject;\r\n\r\n const { handleOnClick } = useHandlers({\r\n attachToElement,\r\n closeOnEscape,\r\n closeOnClickOut,\r\n closeOnClick,\r\n closeOnMouseLeaveTooltip,\r\n closeOnMouseLeaveAttachedElement,\r\n closeOnScrollOut,\r\n onClose,\r\n });\r\n\r\n return (\r\n <Box\r\n className={`tooltip__wrapper ${className ?? ''}`}\r\n {...getVariant(variant)}\r\n sx={sx}\r\n onClick={handleOnClick}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n};\r\n"],"names":[],"mappings":";;;;AAMO,MAAM,UAAU,CAAC;AAAA,EACtB,WAAA;AAAA,EACA,eAAA;AAAA,EACA,0BAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAe,GAAA,KAAA;AAAA,EACf,eAAkB,GAAA,IAAA;AAAA,EAClB,aAAgB,GAAA,IAAA;AAAA,EAChB,wBAA2B,GAAA,IAAA;AAAA,EAC3B,gCAAmC,GAAA,IAAA;AAAA,EACnC,gBAAmB,GAAA,IAAA;AAAA,EACnB,OAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAwB,GAAA,OAAA;AAAA,EACxB,qBAAwB,GAAA,QAAA;AAAA,EACxB,aAAgB,GAAA,EAAE,MAAQ,EAAA,MAAA,EAAQ,OAAO,MAAO,EAAA;AAAA,EAChD,OAAU,GAAA,gCAAA;AACZ,CAAgB,KAAA;AACd,EAAA,MAAM,qBAAqB,wBAAyB,CAAA;AAAA,IAClD,WAAA;AAAA,IACA,eAAA;AAAA,IACA,0BAAA;AAAA,IACA,qBAAA;AAAA,IACA,OAAA;AAAA,IACA,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA,aAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,EAAK,GAAA;AAAA,IACT,QAAU,EAAA,OAAA;AAAA,IACV,GAAG,kBAAA;AAAA,GACL,CAAA;AAEA,EAAM,MAAA,EAAE,aAAc,EAAA,GAAI,WAAY,CAAA;AAAA,IACpC,eAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,wBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gBAAA;AAAA,IACA,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,CAAoB,iBAAA,EAAA,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,MAC7C,GAAG,WAAW,OAAO,CAAA;AAAA,MACtB,EAAA;AAAA,MACA,OAAS,EAAA,aAAA;AAAA,MAER,QAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../../src/objects/ApiaUtil/tooltips/tooltip/util.ts"],"sourcesContent":["import { isChild } from '@apia/util';\nimport { TAttachToElement, TPosition, TTooltip } from './types';\nimport { ThemeUICSSObject } from '@apia/theme';\nimport React, { useCallback, useEffect, useRef } from 'react';\n\nexport function isAttachToElementAFunction(\n attachToElement: TAttachToElement,\n): attachToElement is () => HTMLElement {\n return (\n attachToElement instanceof Function &&\n getParamNames(attachToElement).length === 0\n );\n}\n\nconst STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\nconst ARGUMENT_NAMES = /([^\\s,]+)/g;\n\nexport function getParamNames(func: object) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const fnStr = func.toString().replace(STRIP_COMMENTS, '');\n let result: string[] | RegExpMatchArray | null = fnStr\n .slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\n .match(ARGUMENT_NAMES);\n if (result === null) result = [];\n\n return result;\n}\n\nfunction determineAnchorPoint({\n attachToElement,\n attachToElementAnchorPoint,\n}: Pick<TTooltip, 'attachToElementAnchorPoint'> &\n Required<Pick<TTooltip, 'attachToElement'>>) {\n let actualAnchorPoint: TPosition = { left: 0, top: 0 };\n\n const element = isAttachToElementAFunction(attachToElement)\n ? attachToElement()\n : attachToElement.current;\n\n if (element) {\n const rect = element.getBoundingClientRect();\n\n const point = attachToElementAnchorPoint ?? 'topRight';\n\n switch (point) {\n case 'bottomLeft':\n actualAnchorPoint = {\n left: rect.left,\n top: rect.bottom,\n };\n break;\n case 'bottomRight':\n actualAnchorPoint = {\n left: rect.right,\n top: rect.bottom,\n };\n break;\n case 'center':\n actualAnchorPoint = {\n left: (rect.left + rect.right) / 2,\n top: (rect.bottom + rect.top) / 2,\n };\n break;\n case 'topLeft':\n actualAnchorPoint = {\n left: rect.left,\n top: rect.top,\n };\n break;\n case 'topRight':\n actualAnchorPoint = {\n left: rect.right,\n top: rect.top,\n };\n break;\n }\n } else {\n console.warn(\n 'Cannot resolve element, will use default positioning ',\n attachToElement,\n );\n }\n\n return actualAnchorPoint;\n}\n\nlet x = 0;\nlet y = 0;\ndocument.addEventListener('mousemove', (ev) => {\n x = ev.clientX;\n y = ev.clientY;\n});\n\nexport function calculateTooltipPosition({\n anchorPoint,\n attachToElement,\n attachToElementAnchorPoint,\n attachToMousePosition,\n minSize,\n preferredOrientationX,\n preferredOrientationY,\n preferredSize = { height: 'auto', width: 'auto' },\n}: Pick<\n TTooltip,\n | 'anchorPoint'\n | 'attachToElement'\n | 'attachToElementAnchorPoint'\n | 'attachToMousePosition'\n | 'minSize'\n | 'preferredOrientationX'\n | 'preferredOrientationY'\n | 'preferredSize'\n>): ThemeUICSSObject {\n let actualAnchorPoint = anchorPoint;\n\n if (attachToMousePosition) {\n actualAnchorPoint = {\n left: x + 3,\n top: y + 3,\n };\n }\n\n if (attachToElement) {\n actualAnchorPoint = determineAnchorPoint({\n attachToElement,\n attachToElementAnchorPoint,\n });\n }\n\n if (actualAnchorPoint) {\n const availableBottomSpace = window.innerHeight - actualAnchorPoint.top;\n const availableTopSpace = actualAnchorPoint.top;\n const availableLeftSpace = actualAnchorPoint.left;\n const availableRightSpace = window.innerWidth - actualAnchorPoint.left;\n\n const isEnoughToRight = (minSize?.width ?? 0) <= availableRightSpace;\n const isEnoughToLeft = (minSize?.width ?? 0) <= availableLeftSpace;\n const isEnoughToBottom = (minSize?.height ?? 0) <= availableBottomSpace;\n const isEnoughToTop = (minSize?.height ?? 0) <= availableTopSpace;\n\n const preferredWidth =\n preferredSize.width === 'auto' ? Infinity : preferredSize.width;\n const preferredHeight =\n preferredSize.height === 'auto' ? Infinity : preferredSize.height;\n\n const position: ThemeUICSSObject = {\n '& > *': {\n width: '100%',\n height: '100%',\n },\n width: preferredSize.width === 'auto' ? 'auto' : '100%',\n height: preferredSize.height === 'auto' ? 'auto' : '100%',\n };\n\n if (preferredOrientationX === 'left') {\n if (isEnoughToLeft) {\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\n position.right = window.innerWidth - actualAnchorPoint.left;\n } else if (isEnoughToRight) {\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\n position.left = actualAnchorPoint.left;\n } else {\n position.left = 0;\n position.maxWidth = '100vw';\n }\n } else {\n if (isEnoughToRight) {\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\n position.left = actualAnchorPoint.left;\n } else if (isEnoughToLeft) {\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\n position.right = window.innerWidth - actualAnchorPoint.left;\n } else {\n position.left = 0;\n position.maxWidth = '100vw';\n }\n }\n\n if (preferredOrientationY === 'top') {\n if (isEnoughToTop) {\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\n position.bottom = window.innerHeight - actualAnchorPoint.top;\n } else if (isEnoughToBottom) {\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\n position.top = actualAnchorPoint.top;\n } else {\n position.maxHeight = '100vh';\n position.top = 0;\n }\n } else {\n if (isEnoughToBottom) {\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\n position.top = actualAnchorPoint.top;\n } else if (isEnoughToTop) {\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\n position.bottom = window.innerHeight - actualAnchorPoint.top;\n } else {\n position.maxHeight = '100vh';\n position.top = 0;\n }\n }\n\n position.minHeight =\n typeof position.maxHeight === 'number'\n ? Math.min(position.maxHeight, minSize?.height ?? 0)\n : minSize?.height ?? 0;\n position.minWidth =\n typeof position.minWidth === 'number'\n ? Math.min(position.minWidth, minSize?.width ?? 0)\n : minSize?.width ?? 0;\n\n return position;\n }\n\n return { left: 0, top: 0, width: 'auto', height: 'auto' };\n}\n\nexport function useHandlers({\n attachToElement,\n closeOnClick,\n closeOnClickOut,\n closeOnEscape,\n closeOnMouseLeaveTooltip,\n closeOnMouseLeaveAttachedElement,\n closeOnScrollOut,\n onClose,\n}: Pick<\n TTooltip,\n | 'attachToElement'\n | 'closeOnClick'\n | 'closeOnClickOut'\n | 'closeOnEscape'\n | 'closeOnMouseLeaveTooltip'\n | 'closeOnMouseLeaveAttachedElement'\n | 'closeOnScrollOut'\n | 'onClose'\n>) {\n const hasInited = useRef(false);\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n useEffect(() => {\n function handleEscape(ev: KeyboardEvent) {\n if (ev.code === 'Escape' && closeOnEscape !== false) {\n close();\n }\n }\n function handleMouseDownOut(ev: MouseEvent) {\n if (!hasInited.current) return;\n\n const actuallyCloseOnClickOut =\n (closeOnClickOut instanceof Function\n ? closeOnClickOut(ev)\n : closeOnClickOut) === true;\n\n if (\n actuallyCloseOnClickOut &&\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('tooltip__wrapper'),\n )\n ) {\n close();\n }\n }\n function handleScroll(ev: Event) {\n if (!hasInited.current) return;\n if (\n closeOnScrollOut &&\n !isChild(ev.target as HTMLElement, (current) =>\n current.classList?.contains('tooltip__wrapper'),\n )\n ) {\n close();\n }\n }\n\n function handleMouseLeave(event: MouseEvent) {\n const actuallyCloseOnMouseLeaveTooltip =\n closeOnMouseLeaveTooltip instanceof Function\n ? closeOnMouseLeaveTooltip(event)\n : closeOnMouseLeaveTooltip;\n\n const actuallyCloseOnMouseLeaveAttachedElement =\n closeOnMouseLeaveAttachedElement instanceof Function\n ? closeOnMouseLeaveAttachedElement(event)\n : closeOnMouseLeaveAttachedElement;\n\n if (\n !hasInited.current ||\n (!actuallyCloseOnMouseLeaveAttachedElement &&\n !actuallyCloseOnMouseLeaveTooltip)\n )\n return;\n\n const resolvedAttachToElement = attachToElement\n ? isAttachToElementAFunction(attachToElement)\n ? attachToElement()\n : attachToElement.current\n : null;\n\n const isTooltipTheTarget = isChild(\n event.target as HTMLElement,\n (current) => current.classList.contains('tooltip__wrapper'),\n );\n const isAttachedTheTarget = isChild(\n event.target as HTMLElement,\n (current) => current === resolvedAttachToElement,\n );\n\n const isTooltipRelated = isChild(\n event.relatedTarget as HTMLElement,\n (current) => current.classList.contains('tooltip__wrapper'),\n );\n\n const isAttachedRelated = isChild(\n event.relatedTarget as HTMLElement,\n (current) => current === resolvedAttachToElement,\n );\n\n if (isTooltipRelated || isAttachedRelated) return;\n if (isAttachedTheTarget && !actuallyCloseOnMouseLeaveAttachedElement)\n return;\n if (isTooltipTheTarget && !actuallyCloseOnMouseLeaveTooltip) return;\n\n if (isTooltipTheTarget || isAttachedTheTarget) close();\n }\n\n document.addEventListener('keydown', handleEscape);\n document.addEventListener('mousedown', handleMouseDownOut);\n document.addEventListener('scroll', handleScroll);\n document.addEventListener('mouseout', handleMouseLeave);\n\n setTimeout(() => {\n hasInited.current = true;\n }, 0);\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.removeEventListener('mousedown', handleMouseDownOut);\n document.removeEventListener('scroll', handleScroll);\n document.removeEventListener('mouseout', handleMouseLeave);\n };\n }, [\n attachToElement,\n close,\n closeOnClickOut,\n closeOnEscape,\n closeOnMouseLeaveAttachedElement,\n closeOnMouseLeaveTooltip,\n closeOnScrollOut,\n ]);\n\n return {\n handleOnClick: useCallback(\n (ev: React.MouseEvent) => {\n ev.stopPropagation();\n if (closeOnClick) {\n close();\n }\n },\n [close, closeOnClick],\n ),\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sources":["../../../../../src/objects/ApiaUtil/tooltips/tooltip/util.ts"],"sourcesContent":["import { isChild } from '@apia/util';\r\nimport { TAttachToElement, TPosition, TTooltip } from './types';\r\nimport { ThemeUICSSObject } from '@apia/theme';\r\nimport React, { useCallback, useEffect, useRef } from 'react';\r\n\r\nexport function isAttachToElementAFunction(\r\n attachToElement: TAttachToElement,\r\n): attachToElement is () => HTMLElement {\r\n return (\r\n attachToElement instanceof Function &&\r\n getParamNames(attachToElement).length === 0\r\n );\r\n}\r\n\r\nconst STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\r\nconst ARGUMENT_NAMES = /([^\\s,]+)/g;\r\n\r\nexport function getParamNames(func: object) {\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n const fnStr = func.toString().replace(STRIP_COMMENTS, '');\r\n let result: string[] | RegExpMatchArray | null = fnStr\r\n .slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\r\n .match(ARGUMENT_NAMES);\r\n if (result === null) result = [];\r\n\r\n return result;\r\n}\r\n\r\nfunction determineAnchorPoint({\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n}: Pick<TTooltip, 'attachToElementAnchorPoint'> &\r\n Required<Pick<TTooltip, 'attachToElement'>>) {\r\n let actualAnchorPoint: TPosition = { left: 0, top: 0 };\r\n\r\n const element = isAttachToElementAFunction(attachToElement)\r\n ? attachToElement()\r\n : attachToElement.current;\r\n\r\n if (element) {\r\n const rect = element.getBoundingClientRect();\r\n\r\n const point = attachToElementAnchorPoint ?? 'topRight';\r\n\r\n switch (point) {\r\n case 'bottomLeft':\r\n actualAnchorPoint = {\r\n left: rect.left,\r\n top: rect.bottom,\r\n };\r\n break;\r\n case 'bottomRight':\r\n actualAnchorPoint = {\r\n left: rect.right,\r\n top: rect.bottom,\r\n };\r\n break;\r\n case 'center':\r\n actualAnchorPoint = {\r\n left: (rect.left + rect.right) / 2,\r\n top: (rect.bottom + rect.top) / 2,\r\n };\r\n break;\r\n case 'topLeft':\r\n actualAnchorPoint = {\r\n left: rect.left,\r\n top: rect.top,\r\n };\r\n break;\r\n case 'topRight':\r\n actualAnchorPoint = {\r\n left: rect.right,\r\n top: rect.top,\r\n };\r\n break;\r\n }\r\n } else {\r\n console.warn(\r\n 'Cannot resolve element, will use default positioning ',\r\n attachToElement,\r\n );\r\n }\r\n\r\n return actualAnchorPoint;\r\n}\r\n\r\nlet x = 0;\r\nlet y = 0;\r\ndocument.addEventListener('mousemove', (ev) => {\r\n x = ev.clientX;\r\n y = ev.clientY;\r\n});\r\n\r\nexport function calculateTooltipPosition({\r\n anchorPoint,\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n attachToMousePosition,\r\n minSize,\r\n preferredOrientationX,\r\n preferredOrientationY,\r\n preferredSize = { height: 'auto', width: 'auto' },\r\n}: Pick<\r\n TTooltip,\r\n | 'anchorPoint'\r\n | 'attachToElement'\r\n | 'attachToElementAnchorPoint'\r\n | 'attachToMousePosition'\r\n | 'minSize'\r\n | 'preferredOrientationX'\r\n | 'preferredOrientationY'\r\n | 'preferredSize'\r\n>): ThemeUICSSObject {\r\n let actualAnchorPoint = anchorPoint;\r\n\r\n if (attachToMousePosition) {\r\n actualAnchorPoint = {\r\n left: x + 3,\r\n top: y + 3,\r\n };\r\n }\r\n\r\n if (attachToElement) {\r\n actualAnchorPoint = determineAnchorPoint({\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n });\r\n }\r\n\r\n if (actualAnchorPoint) {\r\n const availableBottomSpace = window.innerHeight - actualAnchorPoint.top;\r\n const availableTopSpace = actualAnchorPoint.top;\r\n const availableLeftSpace = actualAnchorPoint.left;\r\n const availableRightSpace = window.innerWidth - actualAnchorPoint.left;\r\n\r\n const isEnoughToRight = (minSize?.width ?? 0) <= availableRightSpace;\r\n const isEnoughToLeft = (minSize?.width ?? 0) <= availableLeftSpace;\r\n const isEnoughToBottom = (minSize?.height ?? 0) <= availableBottomSpace;\r\n const isEnoughToTop = (minSize?.height ?? 0) <= availableTopSpace;\r\n\r\n const preferredWidth =\r\n preferredSize.width === 'auto' ? Infinity : preferredSize.width;\r\n const preferredHeight =\r\n preferredSize.height === 'auto' ? Infinity : preferredSize.height;\r\n\r\n const position: ThemeUICSSObject = {\r\n '& > *': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n width: preferredSize.width === 'auto' ? 'auto' : '100%',\r\n height: preferredSize.height === 'auto' ? 'auto' : '100%',\r\n };\r\n\r\n if (preferredOrientationX === 'left') {\r\n if (isEnoughToLeft) {\r\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\r\n position.right = window.innerWidth - actualAnchorPoint.left;\r\n } else if (isEnoughToRight) {\r\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\r\n position.left = actualAnchorPoint.left;\r\n } else {\r\n position.left = 0;\r\n position.maxWidth = '100vw';\r\n }\r\n } else {\r\n if (isEnoughToRight) {\r\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\r\n position.left = actualAnchorPoint.left;\r\n } else if (isEnoughToLeft) {\r\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\r\n position.right = window.innerWidth - actualAnchorPoint.left;\r\n } else {\r\n position.left = 0;\r\n position.maxWidth = '100vw';\r\n }\r\n }\r\n\r\n if (preferredOrientationY === 'top') {\r\n if (isEnoughToTop) {\r\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\r\n position.bottom = window.innerHeight - actualAnchorPoint.top;\r\n } else if (isEnoughToBottom) {\r\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\r\n position.top = actualAnchorPoint.top;\r\n } else {\r\n position.maxHeight = '100vh';\r\n position.top = 0;\r\n }\r\n } else {\r\n if (isEnoughToBottom) {\r\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\r\n position.top = actualAnchorPoint.top;\r\n } else if (isEnoughToTop) {\r\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\r\n position.bottom = window.innerHeight - actualAnchorPoint.top;\r\n } else {\r\n position.maxHeight = '100vh';\r\n position.top = 0;\r\n }\r\n }\r\n\r\n position.minHeight =\r\n typeof position.maxHeight === 'number'\r\n ? Math.min(position.maxHeight, minSize?.height ?? 0)\r\n : minSize?.height ?? 0;\r\n position.minWidth =\r\n typeof position.minWidth === 'number'\r\n ? Math.min(position.minWidth, minSize?.width ?? 0)\r\n : minSize?.width ?? 0;\r\n\r\n return position;\r\n }\r\n\r\n return { left: 0, top: 0, width: 'auto', height: 'auto' };\r\n}\r\n\r\nexport function useHandlers({\r\n attachToElement,\r\n closeOnClick,\r\n closeOnClickOut,\r\n closeOnEscape,\r\n closeOnMouseLeaveTooltip,\r\n closeOnMouseLeaveAttachedElement,\r\n closeOnScrollOut,\r\n onClose,\r\n}: Pick<\r\n TTooltip,\r\n | 'attachToElement'\r\n | 'closeOnClick'\r\n | 'closeOnClickOut'\r\n | 'closeOnEscape'\r\n | 'closeOnMouseLeaveTooltip'\r\n | 'closeOnMouseLeaveAttachedElement'\r\n | 'closeOnScrollOut'\r\n | 'onClose'\r\n>) {\r\n const hasInited = useRef(false);\r\n const close = useCallback(() => {\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n function handleEscape(ev: KeyboardEvent) {\r\n if (ev.code === 'Escape' && closeOnEscape !== false) {\r\n close();\r\n }\r\n }\r\n function handleMouseDownOut(ev: MouseEvent) {\r\n if (!hasInited.current) return;\r\n\r\n const actuallyCloseOnClickOut =\r\n (closeOnClickOut instanceof Function\r\n ? closeOnClickOut(ev)\r\n : closeOnClickOut) === true;\r\n\r\n if (\r\n actuallyCloseOnClickOut &&\r\n !isChild(ev.target as HTMLElement, (current) =>\r\n current.classList?.contains('tooltip__wrapper'),\r\n )\r\n ) {\r\n close();\r\n }\r\n }\r\n function handleScroll(ev: Event) {\r\n if (!hasInited.current) return;\r\n if (\r\n closeOnScrollOut &&\r\n !isChild(ev.target as HTMLElement, (current) =>\r\n current.classList?.contains('tooltip__wrapper'),\r\n )\r\n ) {\r\n close();\r\n }\r\n }\r\n\r\n function handleMouseLeave(event: MouseEvent) {\r\n const actuallyCloseOnMouseLeaveTooltip =\r\n closeOnMouseLeaveTooltip instanceof Function\r\n ? closeOnMouseLeaveTooltip(event)\r\n : closeOnMouseLeaveTooltip;\r\n\r\n const actuallyCloseOnMouseLeaveAttachedElement =\r\n closeOnMouseLeaveAttachedElement instanceof Function\r\n ? closeOnMouseLeaveAttachedElement(event)\r\n : closeOnMouseLeaveAttachedElement;\r\n\r\n if (\r\n !hasInited.current ||\r\n (!actuallyCloseOnMouseLeaveAttachedElement &&\r\n !actuallyCloseOnMouseLeaveTooltip)\r\n )\r\n return;\r\n\r\n const resolvedAttachToElement = attachToElement\r\n ? isAttachToElementAFunction(attachToElement)\r\n ? attachToElement()\r\n : attachToElement.current\r\n : null;\r\n\r\n const isTooltipTheTarget = isChild(\r\n event.target as HTMLElement,\r\n (current) => current.classList.contains('tooltip__wrapper'),\r\n );\r\n const isAttachedTheTarget = isChild(\r\n event.target as HTMLElement,\r\n (current) => current === resolvedAttachToElement,\r\n );\r\n\r\n const isTooltipRelated = isChild(\r\n event.relatedTarget as HTMLElement,\r\n (current) => current.classList.contains('tooltip__wrapper'),\r\n );\r\n\r\n const isAttachedRelated = isChild(\r\n event.relatedTarget as HTMLElement,\r\n (current) => current === resolvedAttachToElement,\r\n );\r\n\r\n if (isTooltipRelated || isAttachedRelated) return;\r\n if (isAttachedTheTarget && !actuallyCloseOnMouseLeaveAttachedElement)\r\n return;\r\n if (isTooltipTheTarget && !actuallyCloseOnMouseLeaveTooltip) return;\r\n\r\n if (isTooltipTheTarget || isAttachedTheTarget) close();\r\n }\r\n\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('mousedown', handleMouseDownOut);\r\n document.addEventListener('scroll', handleScroll);\r\n document.addEventListener('mouseout', handleMouseLeave);\r\n\r\n setTimeout(() => {\r\n hasInited.current = true;\r\n }, 0);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape);\r\n document.removeEventListener('mousedown', handleMouseDownOut);\r\n document.removeEventListener('scroll', handleScroll);\r\n document.removeEventListener('mouseout', handleMouseLeave);\r\n };\r\n }, [\r\n attachToElement,\r\n close,\r\n closeOnClickOut,\r\n closeOnEscape,\r\n closeOnMouseLeaveAttachedElement,\r\n closeOnMouseLeaveTooltip,\r\n closeOnScrollOut,\r\n ]);\r\n\r\n return {\r\n handleOnClick: useCallback(\r\n (ev: React.MouseEvent) => {\r\n ev.stopPropagation();\r\n if (closeOnClick) {\r\n close();\r\n }\r\n },\r\n [close, closeOnClick],\r\n ),\r\n };\r\n}\r\n"],"names":[],"mappings":";;;AAKO,SAAS,2BACd,eACsC,EAAA;AACtC,EAAA,OACE,eAA2B,YAAA,QAAA,IAC3B,aAAc,CAAA,eAAe,EAAE,MAAW,KAAA,CAAA,CAAA;AAE9C,CAAA;AAEA,MAAM,cAAiB,GAAA,kCAAA,CAAA;AACvB,MAAM,cAAiB,GAAA,YAAA,CAAA;AAEhB,SAAS,cAAc,IAAc,EAAA;AAE1C,EAAA,MAAM,QAAQ,IAAK,CAAA,QAAA,EAAW,CAAA,OAAA,CAAQ,gBAAgB,EAAE,CAAA,CAAA;AACxD,EAAA,IAAI,MAA6C,GAAA,KAAA,CAC9C,KAAM,CAAA,KAAA,CAAM,QAAQ,GAAG,CAAA,GAAI,CAAG,EAAA,KAAA,CAAM,OAAQ,CAAA,GAAG,CAAC,CAAA,CAChD,MAAM,cAAc,CAAA,CAAA;AACvB,EAAA,IAAI,MAAW,KAAA,IAAA;AAAM,IAAA,MAAA,GAAS,EAAC,CAAA;AAE/B,EAAO,OAAA,MAAA,CAAA;AACT,CAAA;AAEA,SAAS,oBAAqB,CAAA;AAAA,EAC5B,eAAA;AAAA,EACA,0BAAA;AACF,CAC+C,EAAA;AAC7C,EAAA,IAAI,iBAA+B,GAAA,EAAE,IAAM,EAAA,CAAA,EAAG,KAAK,CAAE,EAAA,CAAA;AAErD,EAAA,MAAM,UAAU,0BAA2B,CAAA,eAAe,CACtD,GAAA,eAAA,KACA,eAAgB,CAAA,OAAA,CAAA;AAEpB,EAAA,IAAI,OAAS,EAAA;AACX,IAAM,MAAA,IAAA,GAAO,QAAQ,qBAAsB,EAAA,CAAA;AAE3C,IAAA,MAAM,QAAQ,0BAA8B,IAAA,UAAA,CAAA;AAE5C,IAAA,QAAQ,KAAO;AAAA,MACb,KAAK,YAAA;AACH,QAAoB,iBAAA,GAAA;AAAA,UAClB,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,KAAK,IAAK,CAAA,MAAA;AAAA,SACZ,CAAA;AACA,QAAA,MAAA;AAAA,MACF,KAAK,aAAA;AACH,QAAoB,iBAAA,GAAA;AAAA,UAClB,MAAM,IAAK,CAAA,KAAA;AAAA,UACX,KAAK,IAAK,CAAA,MAAA;AAAA,SACZ,CAAA;AACA,QAAA,MAAA;AAAA,MACF,KAAK,QAAA;AACH,QAAoB,iBAAA,GAAA;AAAA,UAClB,IAAO,EAAA,CAAA,IAAA,CAAK,IAAO,GAAA,IAAA,CAAK,KAAS,IAAA,CAAA;AAAA,UACjC,GAAM,EAAA,CAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAK,GAAO,IAAA,CAAA;AAAA,SAClC,CAAA;AACA,QAAA,MAAA;AAAA,MACF,KAAK,SAAA;AACH,QAAoB,iBAAA,GAAA;AAAA,UAClB,MAAM,IAAK,CAAA,IAAA;AAAA,UACX,KAAK,IAAK,CAAA,GAAA;AAAA,SACZ,CAAA;AACA,QAAA,MAAA;AAAA,MACF,KAAK,UAAA;AACH,QAAoB,iBAAA,GAAA;AAAA,UAClB,MAAM,IAAK,CAAA,KAAA;AAAA,UACX,KAAK,IAAK,CAAA,GAAA;AAAA,SACZ,CAAA;AACA,QAAA,MAAA;AAAA,KACJ;AAAA,GACK,MAAA;AACL,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN,uDAAA;AAAA,MACA,eAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAO,OAAA,iBAAA,CAAA;AACT,CAAA;AAEA,IAAI,CAAI,GAAA,CAAA,CAAA;AACR,IAAI,CAAI,GAAA,CAAA,CAAA;AACR,QAAS,CAAA,gBAAA,CAAiB,WAAa,EAAA,CAAC,EAAO,KAAA;AAC7C,EAAA,CAAA,GAAI,EAAG,CAAA,OAAA,CAAA;AACP,EAAA,CAAA,GAAI,EAAG,CAAA,OAAA,CAAA;AACT,CAAC,CAAA,CAAA;AAEM,SAAS,wBAAyB,CAAA;AAAA,EACvC,WAAA;AAAA,EACA,eAAA;AAAA,EACA,0BAAA;AAAA,EACA,qBAAA;AAAA,EACA,OAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,aAAgB,GAAA,EAAE,MAAQ,EAAA,MAAA,EAAQ,OAAO,MAAO,EAAA;AAClD,CAUqB,EAAA;AACnB,EAAA,IAAI,iBAAoB,GAAA,WAAA,CAAA;AAExB,EAAA,IAAI,qBAAuB,EAAA;AACzB,IAAoB,iBAAA,GAAA;AAAA,MAClB,MAAM,CAAI,GAAA,CAAA;AAAA,MACV,KAAK,CAAI,GAAA,CAAA;AAAA,KACX,CAAA;AAAA,GACF;AAEA,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAA,iBAAA,GAAoB,oBAAqB,CAAA;AAAA,MACvC,eAAA;AAAA,MACA,0BAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,IAAI,iBAAmB,EAAA;AACrB,IAAM,MAAA,oBAAA,GAAuB,MAAO,CAAA,WAAA,GAAc,iBAAkB,CAAA,GAAA,CAAA;AACpE,IAAA,MAAM,oBAAoB,iBAAkB,CAAA,GAAA,CAAA;AAC5C,IAAA,MAAM,qBAAqB,iBAAkB,CAAA,IAAA,CAAA;AAC7C,IAAM,MAAA,mBAAA,GAAsB,MAAO,CAAA,UAAA,GAAa,iBAAkB,CAAA,IAAA,CAAA;AAElE,IAAM,MAAA,eAAA,GAAA,CAAmB,OAAS,EAAA,KAAA,IAAS,CAAM,KAAA,mBAAA,CAAA;AACjD,IAAM,MAAA,cAAA,GAAA,CAAkB,OAAS,EAAA,KAAA,IAAS,CAAM,KAAA,kBAAA,CAAA;AAChD,IAAM,MAAA,gBAAA,GAAA,CAAoB,OAAS,EAAA,MAAA,IAAU,CAAM,KAAA,oBAAA,CAAA;AACnD,IAAM,MAAA,aAAA,GAAA,CAAiB,OAAS,EAAA,MAAA,IAAU,CAAM,KAAA,iBAAA,CAAA;AAEhD,IAAA,MAAM,cACJ,GAAA,aAAA,CAAc,KAAU,KAAA,MAAA,GAAS,WAAW,aAAc,CAAA,KAAA,CAAA;AAC5D,IAAA,MAAM,eACJ,GAAA,aAAA,CAAc,MAAW,KAAA,MAAA,GAAS,WAAW,aAAc,CAAA,MAAA,CAAA;AAE7D,IAAA,MAAM,QAA6B,GAAA;AAAA,MACjC,OAAS,EAAA;AAAA,QACP,KAAO,EAAA,MAAA;AAAA,QACP,MAAQ,EAAA,MAAA;AAAA,OACV;AAAA,MACA,KAAO,EAAA,aAAA,CAAc,KAAU,KAAA,MAAA,GAAS,MAAS,GAAA,MAAA;AAAA,MACjD,MAAQ,EAAA,aAAA,CAAc,MAAW,KAAA,MAAA,GAAS,MAAS,GAAA,MAAA;AAAA,KACrD,CAAA;AAEA,IAAA,IAAI,0BAA0B,MAAQ,EAAA;AACpC,MAAA,IAAI,cAAgB,EAAA;AAClB,QAAA,QAAA,CAAS,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,cAAA,EAAgB,kBAAkB,CAAA,CAAA;AAC/D,QAAS,QAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,UAAA,GAAa,iBAAkB,CAAA,IAAA,CAAA;AAAA,iBAC9C,eAAiB,EAAA;AAC1B,QAAA,QAAA,CAAS,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,cAAA,EAAgB,mBAAmB,CAAA,CAAA;AAChE,QAAA,QAAA,CAAS,OAAO,iBAAkB,CAAA,IAAA,CAAA;AAAA,OAC7B,MAAA;AACL,QAAA,QAAA,CAAS,IAAO,GAAA,CAAA,CAAA;AAChB,QAAA,QAAA,CAAS,QAAW,GAAA,OAAA,CAAA;AAAA,OACtB;AAAA,KACK,MAAA;AACL,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAA,QAAA,CAAS,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,cAAA,EAAgB,mBAAmB,CAAA,CAAA;AAChE,QAAA,QAAA,CAAS,OAAO,iBAAkB,CAAA,IAAA,CAAA;AAAA,iBACzB,cAAgB,EAAA;AACzB,QAAA,QAAA,CAAS,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,cAAA,EAAgB,kBAAkB,CAAA,CAAA;AAC/D,QAAS,QAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,UAAA,GAAa,iBAAkB,CAAA,IAAA,CAAA;AAAA,OAClD,MAAA;AACL,QAAA,QAAA,CAAS,IAAO,GAAA,CAAA,CAAA;AAChB,QAAA,QAAA,CAAS,QAAW,GAAA,OAAA,CAAA;AAAA,OACtB;AAAA,KACF;AAEA,IAAA,IAAI,0BAA0B,KAAO,EAAA;AACnC,MAAA,IAAI,aAAe,EAAA;AACjB,QAAA,QAAA,CAAS,SAAY,GAAA,IAAA,CAAK,GAAI,CAAA,eAAA,EAAiB,iBAAiB,CAAA,CAAA;AAChE,QAAS,QAAA,CAAA,MAAA,GAAS,MAAO,CAAA,WAAA,GAAc,iBAAkB,CAAA,GAAA,CAAA;AAAA,iBAChD,gBAAkB,EAAA;AAC3B,QAAA,QAAA,CAAS,SAAY,GAAA,IAAA,CAAK,GAAI,CAAA,eAAA,EAAiB,oBAAoB,CAAA,CAAA;AACnE,QAAA,QAAA,CAAS,MAAM,iBAAkB,CAAA,GAAA,CAAA;AAAA,OAC5B,MAAA;AACL,QAAA,QAAA,CAAS,SAAY,GAAA,OAAA,CAAA;AACrB,QAAA,QAAA,CAAS,GAAM,GAAA,CAAA,CAAA;AAAA,OACjB;AAAA,KACK,MAAA;AACL,MAAA,IAAI,gBAAkB,EAAA;AACpB,QAAA,QAAA,CAAS,SAAY,GAAA,IAAA,CAAK,GAAI,CAAA,eAAA,EAAiB,oBAAoB,CAAA,CAAA;AACnE,QAAA,QAAA,CAAS,MAAM,iBAAkB,CAAA,GAAA,CAAA;AAAA,iBACxB,aAAe,EAAA;AACxB,QAAA,QAAA,CAAS,SAAY,GAAA,IAAA,CAAK,GAAI,CAAA,eAAA,EAAiB,iBAAiB,CAAA,CAAA;AAChE,QAAS,QAAA,CAAA,MAAA,GAAS,MAAO,CAAA,WAAA,GAAc,iBAAkB,CAAA,GAAA,CAAA;AAAA,OACpD,MAAA;AACL,QAAA,QAAA,CAAS,SAAY,GAAA,OAAA,CAAA;AACrB,QAAA,QAAA,CAAS,GAAM,GAAA,CAAA,CAAA;AAAA,OACjB;AAAA,KACF;AAEA,IAAA,QAAA,CAAS,SACP,GAAA,OAAO,QAAS,CAAA,SAAA,KAAc,WAC1B,IAAK,CAAA,GAAA,CAAI,QAAS,CAAA,SAAA,EAAW,OAAS,EAAA,MAAA,IAAU,CAAC,CAAA,GACjD,SAAS,MAAU,IAAA,CAAA,CAAA;AACzB,IAAA,QAAA,CAAS,QACP,GAAA,OAAO,QAAS,CAAA,QAAA,KAAa,WACzB,IAAK,CAAA,GAAA,CAAI,QAAS,CAAA,QAAA,EAAU,OAAS,EAAA,KAAA,IAAS,CAAC,CAAA,GAC/C,SAAS,KAAS,IAAA,CAAA,CAAA;AAExB,IAAO,OAAA,QAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,EAAE,MAAM,CAAG,EAAA,GAAA,EAAK,GAAG,KAAO,EAAA,MAAA,EAAQ,QAAQ,MAAO,EAAA,CAAA;AAC1D,CAAA;AAEO,SAAS,WAAY,CAAA;AAAA,EAC1B,eAAA;AAAA,EACA,YAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,wBAAA;AAAA,EACA,gCAAA;AAAA,EACA,gBAAA;AAAA,EACA,OAAA;AACF,CAUG,EAAA;AACD,EAAM,MAAA,SAAA,GAAY,OAAO,KAAK,CAAA,CAAA;AAC9B,EAAM,MAAA,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAU,OAAA,IAAA,CAAA;AAAA,GACZ,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AAEZ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAS,aAAa,EAAmB,EAAA;AACvC,MAAA,IAAI,EAAG,CAAA,IAAA,KAAS,QAAY,IAAA,aAAA,KAAkB,KAAO,EAAA;AACnD,QAAM,KAAA,EAAA,CAAA;AAAA,OACR;AAAA,KACF;AACA,IAAA,SAAS,mBAAmB,EAAgB,EAAA;AAC1C,MAAA,IAAI,CAAC,SAAU,CAAA,OAAA;AAAS,QAAA,OAAA;AAExB,MAAA,MAAM,2BACH,eAA2B,YAAA,QAAA,GACxB,eAAgB,CAAA,EAAE,IAClB,eAAqB,MAAA,IAAA,CAAA;AAE3B,MAAA,IACE,2BACA,CAAC,OAAA;AAAA,QAAQ,EAAG,CAAA,MAAA;AAAA,QAAuB,CAAC,OAAA,KAClC,OAAQ,CAAA,SAAA,EAAW,SAAS,kBAAkB,CAAA;AAAA,OAEhD,EAAA;AACA,QAAM,KAAA,EAAA,CAAA;AAAA,OACR;AAAA,KACF;AACA,IAAA,SAAS,aAAa,EAAW,EAAA;AAC/B,MAAA,IAAI,CAAC,SAAU,CAAA,OAAA;AAAS,QAAA,OAAA;AACxB,MAAA,IACE,oBACA,CAAC,OAAA;AAAA,QAAQ,EAAG,CAAA,MAAA;AAAA,QAAuB,CAAC,OAAA,KAClC,OAAQ,CAAA,SAAA,EAAW,SAAS,kBAAkB,CAAA;AAAA,OAEhD,EAAA;AACA,QAAM,KAAA,EAAA,CAAA;AAAA,OACR;AAAA,KACF;AAEA,IAAA,SAAS,iBAAiB,KAAmB,EAAA;AAC3C,MAAA,MAAM,gCACJ,GAAA,wBAAA,YAAoC,QAChC,GAAA,wBAAA,CAAyB,KAAK,CAC9B,GAAA,wBAAA,CAAA;AAEN,MAAA,MAAM,wCACJ,GAAA,gCAAA,YAA4C,QACxC,GAAA,gCAAA,CAAiC,KAAK,CACtC,GAAA,gCAAA,CAAA;AAEN,MAAA,IACE,CAAC,SAAA,CAAU,OACV,IAAA,CAAC,4CACA,CAAC,gCAAA;AAEH,QAAA,OAAA;AAEF,MAAM,MAAA,uBAAA,GAA0B,kBAC5B,0BAA2B,CAAA,eAAe,IACxC,eAAgB,EAAA,GAChB,gBAAgB,OAClB,GAAA,IAAA,CAAA;AAEJ,MAAA,MAAM,kBAAqB,GAAA,OAAA;AAAA,QACzB,KAAM,CAAA,MAAA;AAAA,QACN,CAAC,OAAA,KAAY,OAAQ,CAAA,SAAA,CAAU,SAAS,kBAAkB,CAAA;AAAA,OAC5D,CAAA;AACA,MAAA,MAAM,mBAAsB,GAAA,OAAA;AAAA,QAC1B,KAAM,CAAA,MAAA;AAAA,QACN,CAAC,YAAY,OAAY,KAAA,uBAAA;AAAA,OAC3B,CAAA;AAEA,MAAA,MAAM,gBAAmB,GAAA,OAAA;AAAA,QACvB,KAAM,CAAA,aAAA;AAAA,QACN,CAAC,OAAA,KAAY,OAAQ,CAAA,SAAA,CAAU,SAAS,kBAAkB,CAAA;AAAA,OAC5D,CAAA;AAEA,MAAA,MAAM,iBAAoB,GAAA,OAAA;AAAA,QACxB,KAAM,CAAA,aAAA;AAAA,QACN,CAAC,YAAY,OAAY,KAAA,uBAAA;AAAA,OAC3B,CAAA;AAEA,MAAA,IAAI,gBAAoB,IAAA,iBAAA;AAAmB,QAAA,OAAA;AAC3C,MAAA,IAAI,uBAAuB,CAAC,wCAAA;AAC1B,QAAA,OAAA;AACF,MAAA,IAAI,sBAAsB,CAAC,gCAAA;AAAkC,QAAA,OAAA;AAE7D,MAAA,IAAI,kBAAsB,IAAA,mBAAA;AAAqB,QAAM,KAAA,EAAA,CAAA;AAAA,KACvD;AAEA,IAAS,QAAA,CAAA,gBAAA,CAAiB,WAAW,YAAY,CAAA,CAAA;AACjD,IAAS,QAAA,CAAA,gBAAA,CAAiB,aAAa,kBAAkB,CAAA,CAAA;AACzD,IAAS,QAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA,CAAA;AAChD,IAAS,QAAA,CAAA,gBAAA,CAAiB,YAAY,gBAAgB,CAAA,CAAA;AAEtD,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,SAAA,CAAU,OAAU,GAAA,IAAA,CAAA;AAAA,OACnB,CAAC,CAAA,CAAA;AAEJ,IAAA,OAAO,MAAM;AACX,MAAS,QAAA,CAAA,mBAAA,CAAoB,WAAW,YAAY,CAAA,CAAA;AACpD,MAAS,QAAA,CAAA,mBAAA,CAAoB,aAAa,kBAAkB,CAAA,CAAA;AAC5D,MAAS,QAAA,CAAA,mBAAA,CAAoB,UAAU,YAAY,CAAA,CAAA;AACnD,MAAS,QAAA,CAAA,mBAAA,CAAoB,YAAY,gBAAgB,CAAA,CAAA;AAAA,KAC3D,CAAA;AAAA,GACC,EAAA;AAAA,IACD,eAAA;AAAA,IACA,KAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAA;AAAA,IACA,gCAAA;AAAA,IACA,wBAAA;AAAA,IACA,gBAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,aAAe,EAAA,WAAA;AAAA,MACb,CAAC,EAAyB,KAAA;AACxB,QAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AACnB,QAAA,IAAI,YAAc,EAAA;AAChB,UAAM,KAAA,EAAA,CAAA;AAAA,SACR;AAAA,OACF;AAAA,MACA,CAAC,OAAO,YAAY,CAAA;AAAA,KACtB;AAAA,GACF,CAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sources":["../../src/tabs/Content.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, BoxProps, Spinner, getVariant } from '@apia/theme';\nimport { useTabsContext } from './util';\nimport { usePropsSelector } from '@apia/util';\n\nexport const TabsContent = (props: Omit<BoxProps, 'children'>) => {\n const { handler, id } = useTabsContext();\n const handlerRef = React.useRef(handler);\n handlerRef.current = handler;\n const tabs = usePropsSelector(handler.stateKey, {\n propsStore: handler.stateStore,\n selector: (current) => {\n return (current.tabs ?? []).map((tabId) =>\n handlerRef.current?.propsStore.getFieldProps(tabId),\n );\n },\n comparator() {\n return false;\n },\n });\n\n return (\n <Box\n className=\"tabs__content__wrapper\"\n {...getVariant('layout.common.tabs.primary.content')}\n {...props}\n >\n {tabs?.map((current) => {\n const Render = current.content;\n\n return (\n <Box\n aria-hidden={!current.isOpen}\n aria-labelledby={`tab-${id}-${current.id}`}\n className={`tabs__content ${current.isOpen ? 'open' : ''}`}\n data-id={current.id}\n id={`tabpanel-${id}-${current.id}`}\n key={current.id}\n role=\"tabpanel\"\n >\n <Render tab={current} />\n {current.isLoading && (\n <Box className=\"tabs__content__spinner__wrapper\">\n <Spinner />\n </Box>\n )}\n </Box>\n );\n })}\n </Box>\n );\n};\n"],"names":["React"],"mappings":";;;;;;AAKa,MAAA,WAAA,GAAc,CAAC,KAAsC,KAAA;AAChE,EAAA,MAAM,EAAE,OAAA,EAAS,EAAG,EAAA,GAAI,cAAe,EAAA,CAAA;AACvC,EAAM,MAAA,UAAA,GAAaA,cAAM,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AACvC,EAAA,UAAA,CAAW,OAAU,GAAA,OAAA,CAAA;AACrB,EAAM,MAAA,IAAA,GAAO,gBAAiB,CAAA,OAAA,CAAQ,QAAU,EAAA;AAAA,IAC9C,YAAY,OAAQ,CAAA,UAAA;AAAA,IACpB,QAAA,EAAU,CAAC,OAAY,KAAA;AACrB,MAAQ,OAAA,CAAA,OAAA,CAAQ,IAAQ,IAAA,EAAI,EAAA,GAAA;AAAA,QAAI,CAAC,KAC/B,KAAA,UAAA,CAAW,OAAS,EAAA,UAAA,CAAW,cAAc,KAAK,CAAA;AAAA,OACpD,CAAA;AAAA,KACF;AAAA,IACA,UAAa,GAAA;AACX,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACD,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,wBAAA;AAAA,MACT,GAAG,WAAW,oCAAoC,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,IAAA,EAAM,GAAI,CAAA,CAAC,OAAY,KAAA;AACtB,QAAA,MAAM,SAAS,OAAQ,CAAA,OAAA,CAAA;AAEvB,QACE,uBAAA,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAa,CAAC,OAAQ,CAAA,MAAA;AAAA,YACtB,iBAAiB,EAAA,CAAA,IAAA,EAAO,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,CAAA;AAAA,YACxC,SAAW,EAAA,CAAA,cAAA,EAAiB,OAAQ,CAAA,MAAA,GAAS,SAAS,EAAE,CAAA,CAAA;AAAA,YACxD,WAAS,OAAQ,CAAA,EAAA;AAAA,YACjB,EAAI,EAAA,CAAA,SAAA,EAAY,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,CAAA;AAAA,YAEhC,IAAK,EAAA,UAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAC,GAAA,CAAA,MAAA,EAAA,EAAO,KAAK,OAAS,EAAA,CAAA;AAAA,cACrB,OAAA,CAAQ,6BACN,GAAA,CAAA,GAAA,EAAA,EAAI,WAAU,iCACb,EAAA,QAAA,kBAAA,GAAA,CAAC,WAAQ,CACX,EAAA,CAAA;AAAA,aAAA;AAAA,WAAA;AAAA,UAPG,OAAQ,CAAA,EAAA;AAAA,SASf,CAAA;AAAA,OAEH,CAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Content.js","sources":["../../src/tabs/Content.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, BoxProps, Spinner, getVariant } from '@apia/theme';\r\nimport { useTabsContext } from './util';\r\nimport { usePropsSelector } from '@apia/util';\r\n\r\nexport const TabsContent = (props: Omit<BoxProps, 'children'>) => {\r\n const { handler, id } = useTabsContext();\r\n const handlerRef = React.useRef(handler);\r\n handlerRef.current = handler;\r\n const tabs = usePropsSelector(handler.stateKey, {\r\n propsStore: handler.stateStore,\r\n selector: (current) => {\r\n return (current.tabs ?? []).map((tabId) =>\r\n handlerRef.current?.propsStore.getFieldProps(tabId),\r\n );\r\n },\r\n comparator() {\r\n return false;\r\n },\r\n });\r\n\r\n return (\r\n <Box\r\n className=\"tabs__content__wrapper\"\r\n {...getVariant('layout.common.tabs.primary.content')}\r\n {...props}\r\n >\r\n {tabs?.map((current) => {\r\n const Render = current.content;\r\n\r\n return (\r\n <Box\r\n aria-hidden={!current.isOpen}\r\n aria-labelledby={`tab-${id}-${current.id}`}\r\n className={`tabs__content ${current.isOpen ? 'open' : ''}`}\r\n data-id={current.id}\r\n id={`tabpanel-${id}-${current.id}`}\r\n key={current.id}\r\n role=\"tabpanel\"\r\n >\r\n <Render tab={current} />\r\n {current.isLoading && (\r\n <Box className=\"tabs__content__spinner__wrapper\">\r\n <Spinner />\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n};\r\n"],"names":["React"],"mappings":";;;;;;AAKa,MAAA,WAAA,GAAc,CAAC,KAAsC,KAAA;AAChE,EAAA,MAAM,EAAE,OAAA,EAAS,EAAG,EAAA,GAAI,cAAe,EAAA,CAAA;AACvC,EAAM,MAAA,UAAA,GAAaA,cAAM,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AACvC,EAAA,UAAA,CAAW,OAAU,GAAA,OAAA,CAAA;AACrB,EAAM,MAAA,IAAA,GAAO,gBAAiB,CAAA,OAAA,CAAQ,QAAU,EAAA;AAAA,IAC9C,YAAY,OAAQ,CAAA,UAAA;AAAA,IACpB,QAAA,EAAU,CAAC,OAAY,KAAA;AACrB,MAAQ,OAAA,CAAA,OAAA,CAAQ,IAAQ,IAAA,EAAI,EAAA,GAAA;AAAA,QAAI,CAAC,KAC/B,KAAA,UAAA,CAAW,OAAS,EAAA,UAAA,CAAW,cAAc,KAAK,CAAA;AAAA,OACpD,CAAA;AAAA,KACF;AAAA,IACA,UAAa,GAAA;AACX,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACD,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,wBAAA;AAAA,MACT,GAAG,WAAW,oCAAoC,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,IAAA,EAAM,GAAI,CAAA,CAAC,OAAY,KAAA;AACtB,QAAA,MAAM,SAAS,OAAQ,CAAA,OAAA,CAAA;AAEvB,QACE,uBAAA,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAa,CAAC,OAAQ,CAAA,MAAA;AAAA,YACtB,iBAAiB,EAAA,CAAA,IAAA,EAAO,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,CAAA;AAAA,YACxC,SAAW,EAAA,CAAA,cAAA,EAAiB,OAAQ,CAAA,MAAA,GAAS,SAAS,EAAE,CAAA,CAAA;AAAA,YACxD,WAAS,OAAQ,CAAA,EAAA;AAAA,YACjB,EAAI,EAAA,CAAA,SAAA,EAAY,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,CAAA;AAAA,YAEhC,IAAK,EAAA,UAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAC,GAAA,CAAA,MAAA,EAAA,EAAO,KAAK,OAAS,EAAA,CAAA;AAAA,cACrB,OAAA,CAAQ,6BACN,GAAA,CAAA,GAAA,EAAA,EAAI,WAAU,iCACb,EAAA,QAAA,kBAAA,GAAA,CAAC,WAAQ,CACX,EAAA,CAAA;AAAA,aAAA;AAAA,WAAA;AAAA,UAPG,OAAQ,CAAA,EAAA;AAAA,SASf,CAAA;AAAA,OAEH,CAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
@@ -71,7 +71,6 @@ const ContextMenu = ({
71
71
  }
72
72
  );
73
73
  };
74
- var ContextMenu$1 = ContextMenu;
75
74
 
76
- export { ContextMenu$1 as default };
75
+ export { ContextMenu as default };
77
76
  //# sourceMappingURL=ContextMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.js","sources":["../../src/tabs/ContextMenu.tsx"],"sourcesContent":["import { ControlledMenu, MenuItem, useMenuState } from '@szhsin/react-menu';\nimport React from 'react';\nimport { useTabsContext } from './util';\nimport { TId, getLabel } from '@apia/util';\n\nconst ContextMenu = ({\n anchorPoint,\n isOpen,\n onClose,\n targetId,\n}: {\n anchorPoint: {\n x: number;\n y: number;\n };\n isOpen: boolean;\n onClose: () => unknown;\n targetId: TId;\n}) => {\n const [menuProps, toggleMenu] = useMenuState();\n React.useEffect(() => {\n toggleMenu(isOpen);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n const { handler } = useTabsContext();\n\n const closeOthers = React.useCallback(() => {\n void handler.closeOthers(targetId);\n }, [handler, targetId]);\n\n const closeToLeft = React.useCallback(() => {\n void handler.closeToLeft(targetId);\n }, [handler, targetId]);\n\n const closeToRight = React.useCallback(() => {\n void handler.closeToRight(targetId);\n }, [handler, targetId]);\n\n const firstNonFixedTab = handler.tabsList?.find(\n (current) => !handler.propsStore.getFieldProps(current).isFixed,\n );\n\n let lastNonFixedTab: TId | null = null;\n if (handler.tabsList)\n for (let i = handler.tabsList.length - 1; i >= 0; i--) {\n if (!handler.propsStore.getFieldProps(handler.tabsList[i]).isFixed) {\n lastNonFixedTab = handler.tabsList[i];\n break;\n }\n }\n\n const nonFixedTabsLength =\n handler.tabsList?.filter(\n (current) => !handler.propsStore.getFieldProps(current).isFixed,\n ).length ?? 0;\n\n return (\n <ControlledMenu\n {...menuProps}\n anchorPoint={anchorPoint}\n onClose={onClose}\n portal={{ target: document.getElementById('AppModals') as Element }}\n >\n {/* // No está bien implementado todavía\n <MenuItem\n onClick={React.useCallback(() => {\n handler.propsStore.updateField(targetId, { isFixed: true });\n }, [handler.propsStore, targetId])}\n >\n {window.LBL_FIX_TAB}\n </MenuItem> */}\n <MenuItem\n onClick={React.useCallback(() => {\n void handler.closeTab(targetId);\n }, [handler, targetId])}\n >\n {window.BTN_CLOSE}\n </MenuItem>\n <MenuItem\n onClick={React.useCallback(() => {\n void handler.closeAll();\n }, [handler])}\n >\n {getLabel('lblCloseAll').text}\n </MenuItem>\n {firstNonFixedTab !== targetId && (\n <MenuItem onClick={closeToLeft}>\n {getLabel('lblCloseToLeft').text}\n </MenuItem>\n )}\n {lastNonFixedTab !== targetId && (\n <MenuItem onClick={closeToRight}>\n {getLabel('lblCloseToRight').text}\n </MenuItem>\n )}\n {nonFixedTabsLength > 1 && (\n <MenuItem onClick={closeOthers}>\n {getLabel('lblCloseOthers').text}\n </MenuItem>\n )}\n </ControlledMenu>\n );\n};\n\nexport default ContextMenu;\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.js","sources":["../../src/tabs/ContextMenu.tsx"],"sourcesContent":["import { ControlledMenu, MenuItem, useMenuState } from '@szhsin/react-menu';\r\nimport React from 'react';\r\nimport { useTabsContext } from './util';\r\nimport { TId, getLabel } from '@apia/util';\r\n\r\nconst ContextMenu = ({\r\n anchorPoint,\r\n isOpen,\r\n onClose,\r\n targetId,\r\n}: {\r\n anchorPoint: {\r\n x: number;\r\n y: number;\r\n };\r\n isOpen: boolean;\r\n onClose: () => unknown;\r\n targetId: TId;\r\n}) => {\r\n const [menuProps, toggleMenu] = useMenuState();\r\n React.useEffect(() => {\r\n toggleMenu(isOpen);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isOpen]);\r\n\r\n const { handler } = useTabsContext();\r\n\r\n const closeOthers = React.useCallback(() => {\r\n void handler.closeOthers(targetId);\r\n }, [handler, targetId]);\r\n\r\n const closeToLeft = React.useCallback(() => {\r\n void handler.closeToLeft(targetId);\r\n }, [handler, targetId]);\r\n\r\n const closeToRight = React.useCallback(() => {\r\n void handler.closeToRight(targetId);\r\n }, [handler, targetId]);\r\n\r\n const firstNonFixedTab = handler.tabsList?.find(\r\n (current) => !handler.propsStore.getFieldProps(current).isFixed,\r\n );\r\n\r\n let lastNonFixedTab: TId | null = null;\r\n if (handler.tabsList)\r\n for (let i = handler.tabsList.length - 1; i >= 0; i--) {\r\n if (!handler.propsStore.getFieldProps(handler.tabsList[i]).isFixed) {\r\n lastNonFixedTab = handler.tabsList[i];\r\n break;\r\n }\r\n }\r\n\r\n const nonFixedTabsLength =\r\n handler.tabsList?.filter(\r\n (current) => !handler.propsStore.getFieldProps(current).isFixed,\r\n ).length ?? 0;\r\n\r\n return (\r\n <ControlledMenu\r\n {...menuProps}\r\n anchorPoint={anchorPoint}\r\n onClose={onClose}\r\n portal={{ target: document.getElementById('AppModals') as Element }}\r\n >\r\n {/* // No está bien implementado todavía\r\n <MenuItem\r\n onClick={React.useCallback(() => {\r\n handler.propsStore.updateField(targetId, { isFixed: true });\r\n }, [handler.propsStore, targetId])}\r\n >\r\n {window.LBL_FIX_TAB}\r\n </MenuItem> */}\r\n <MenuItem\r\n onClick={React.useCallback(() => {\r\n void handler.closeTab(targetId);\r\n }, [handler, targetId])}\r\n >\r\n {window.BTN_CLOSE}\r\n </MenuItem>\r\n <MenuItem\r\n onClick={React.useCallback(() => {\r\n void handler.closeAll();\r\n }, [handler])}\r\n >\r\n {getLabel('lblCloseAll').text}\r\n </MenuItem>\r\n {firstNonFixedTab !== targetId && (\r\n <MenuItem onClick={closeToLeft}>\r\n {getLabel('lblCloseToLeft').text}\r\n </MenuItem>\r\n )}\r\n {lastNonFixedTab !== targetId && (\r\n <MenuItem onClick={closeToRight}>\r\n {getLabel('lblCloseToRight').text}\r\n </MenuItem>\r\n )}\r\n {nonFixedTabsLength > 1 && (\r\n <MenuItem onClick={closeOthers}>\r\n {getLabel('lblCloseOthers').text}\r\n </MenuItem>\r\n )}\r\n </ControlledMenu>\r\n );\r\n};\r\n\r\nexport default ContextMenu;\r\n"],"names":["React"],"mappings":"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"}
package/dist/tabs/Item.js CHANGED
@@ -58,7 +58,6 @@ const Item = ({ tabId }) => {
58
58
  };
59
59
  return /* @__PURE__ */ jsx(SimpleButton, { "data-id": tabId, ref, ...buttonProps, children: Renderer ? /* @__PURE__ */ jsx(Renderer, { tab }) : /* @__PURE__ */ jsx(DefaultTabsLabelRenderer, { tab }) });
60
60
  };
61
- var Item$1 = Item;
62
61
 
63
- export { Item$1 as default };
62
+ export { Item as default };
64
63
  //# sourceMappingURL=Item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Item.js","sources":["../../src/tabs/Item.tsx"],"sourcesContent":["import { useUpdateEffect } from 'ahooks';\nimport React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { TTab, TTabsItem } from './types';\nimport { useTabsContext } from './util';\nimport { getSpecificParent, usePropsSelector } from '@apia/util';\nimport { SimpleButton } from '../components';\nimport { DefaultTabsLabelRenderer } from './renderers/DefaultTabsLabelRenderer';\n\nconst Item = ({ tabId }: TTabsItem) => {\n const { handler, id, onCloseTab, onOpenTab } = useTabsContext();\n\n const tab = usePropsSelector<TTab, TTab>(tabId, {\n propsStore: handler.propsStore,\n comparator: shallowEqual,\n });\n\n const Renderer = React.useMemo(\n () => tab.labelRenderer ?? null,\n [tab.labelRenderer],\n );\n\n const ref = React.useRef<HTMLButtonElement>({} as HTMLButtonElement);\n useUpdateEffect(() => {\n if (tab.isFocused) {\n ref.current?.focus({\n preventScroll: true,\n });\n }\n }, [tab.isFocused]);\n React.useEffect(() => {\n if (tab.isOpen) {\n const scrollParent = getSpecificParent(ref.current, (current) =>\n current.classList.contains('tabs__list'),\n ) as HTMLElement;\n\n scrollParent?.scroll({\n left: ref.current.offsetLeft - 100,\n });\n }\n }, [tab.isOpen]);\n\n const handleOpen = React.useCallback(() => onOpenTab(tab), [onOpenTab, tab]);\n const buttonProps = {\n className: `tabs__item__wrapper ${tab.isOpen ? 'open' : ''} ${\n tab.isDisabled ? 'disabled' : ''\n }`,\n title: tab.title ?? tab.label,\n onMouseDown: React.useCallback(\n (ev: React.MouseEvent) => {\n if (ev.button === 1) {\n onCloseTab(tab);\n } else if (ev.button === 0) handleOpen();\n },\n [handleOpen, onCloseTab, tab],\n ),\n 'aria-controls': `tabpanel-${id}-${tab.id}`,\n 'aria-selected': tab.isOpen ?? false,\n id: `tab-${id}-${tab.id}`,\n tabIndex: tab.isFocused ? 0 : -1,\n role: 'tab',\n variant: 'inherit',\n };\n\n return (\n <SimpleButton data-id={tabId} ref={ref} {...buttonProps}>\n {Renderer ? (\n <Renderer tab={tab} />\n ) : (\n <DefaultTabsLabelRenderer tab={tab} />\n )}\n </SimpleButton>\n );\n};\n\nexport default Item;\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"Item.js","sources":["../../src/tabs/Item.tsx"],"sourcesContent":["import { useUpdateEffect } from 'ahooks';\r\nimport React from 'react';\r\nimport { shallowEqual } from 'react-redux';\r\nimport { TTab, TTabsItem } from './types';\r\nimport { useTabsContext } from './util';\r\nimport { getSpecificParent, usePropsSelector } from '@apia/util';\r\nimport { SimpleButton } from '../components';\r\nimport { DefaultTabsLabelRenderer } from './renderers/DefaultTabsLabelRenderer';\r\n\r\nconst Item = ({ tabId }: TTabsItem) => {\r\n const { handler, id, onCloseTab, onOpenTab } = useTabsContext();\r\n\r\n const tab = usePropsSelector<TTab, TTab>(tabId, {\r\n propsStore: handler.propsStore,\r\n comparator: shallowEqual,\r\n });\r\n\r\n const Renderer = React.useMemo(\r\n () => tab.labelRenderer ?? null,\r\n [tab.labelRenderer],\r\n );\r\n\r\n const ref = React.useRef<HTMLButtonElement>({} as HTMLButtonElement);\r\n useUpdateEffect(() => {\r\n if (tab.isFocused) {\r\n ref.current?.focus({\r\n preventScroll: true,\r\n });\r\n }\r\n }, [tab.isFocused]);\r\n React.useEffect(() => {\r\n if (tab.isOpen) {\r\n const scrollParent = getSpecificParent(ref.current, (current) =>\r\n current.classList.contains('tabs__list'),\r\n ) as HTMLElement;\r\n\r\n scrollParent?.scroll({\r\n left: ref.current.offsetLeft - 100,\r\n });\r\n }\r\n }, [tab.isOpen]);\r\n\r\n const handleOpen = React.useCallback(() => onOpenTab(tab), [onOpenTab, tab]);\r\n const buttonProps = {\r\n className: `tabs__item__wrapper ${tab.isOpen ? 'open' : ''} ${\r\n tab.isDisabled ? 'disabled' : ''\r\n }`,\r\n title: tab.title ?? tab.label,\r\n onMouseDown: React.useCallback(\r\n (ev: React.MouseEvent) => {\r\n if (ev.button === 1) {\r\n onCloseTab(tab);\r\n } else if (ev.button === 0) handleOpen();\r\n },\r\n [handleOpen, onCloseTab, tab],\r\n ),\r\n 'aria-controls': `tabpanel-${id}-${tab.id}`,\r\n 'aria-selected': tab.isOpen ?? false,\r\n id: `tab-${id}-${tab.id}`,\r\n tabIndex: tab.isFocused ? 0 : -1,\r\n role: 'tab',\r\n variant: 'inherit',\r\n };\r\n\r\n return (\r\n <SimpleButton data-id={tabId} ref={ref} {...buttonProps}>\r\n {Renderer ? (\r\n <Renderer tab={tab} />\r\n ) : (\r\n <DefaultTabsLabelRenderer tab={tab} />\r\n )}\r\n </SimpleButton>\r\n );\r\n};\r\n\r\nexport default Item;\r\n"],"names":["React"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sources":["../../src/tabs/Tabs.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, BoxProps } from '@apia/theme';\nimport TabsController from './tabsController';\nimport { TTabs, TTabsContext } from './types';\nimport { TabsContext } from './util';\nimport { useMount } from '@apia/util';\n\nconst NonForwardedTabs = <\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\n>(\n {\n id,\n onCloseTab,\n onOpenTab,\n onRequestClose,\n className,\n orientation,\n getHandler,\n initialTabs,\n isMultiple,\n onKeyDown,\n ...props\n }: TTabs<AdditionalPropsType> & Omit<BoxProps, 'id' | 'as' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) => {\n const [handler, setHandler] = React.useState<\n TabsController<AdditionalPropsType>\n >({} as TabsController<AdditionalPropsType>);\n\n useMount(() => {\n const newHandler = new TabsController<AdditionalPropsType>(String(id), {\n id,\n onCloseTab,\n onOpenTab,\n onRequestClose,\n orientation,\n initialTabs,\n isMultiple,\n });\n setHandler(newHandler);\n getHandler?.(newHandler);\n });\n\n const Context = React.useMemo(() => {\n return TabsContext as React.Context<TTabsContext<AdditionalPropsType>>;\n }, []);\n\n return (\n <Context.Provider\n value={React.useMemo(\n () => ({\n handler,\n id,\n onCloseTab(tab) {\n void handler.closeTab(tab.id);\n },\n onOpenTab(tab) {\n handler.openTab(tab.id, !isMultiple);\n onOpenTab?.(tab);\n },\n orientation: orientation ?? 'horizontal',\n }),\n [handler, id, isMultiple, onOpenTab, orientation],\n )}\n >\n <Box\n {...props}\n onKeyDown={React.useCallback(\n (ev: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(ev);\n handler.handleKeyDown(ev);\n },\n [handler, onKeyDown],\n )}\n ref={ref}\n />\n </Context.Provider>\n );\n};\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TTabs>(\n NonForwardedTabs,\n) as unknown as typeof NonForwardedTabs;\n"],"names":["React"],"mappings":";;;;;;;AAOA,MAAM,mBAAmB,CAGvB;AAAA,EACE,EAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG,KAAA;AACL,CAAA,EACA,GACG,KAAA;AACH,EAAA,MAAM,CAAC,OAAS,EAAA,UAAU,IAAIA,cAAM,CAAA,QAAA,CAElC,EAAyC,CAAA,CAAA;AAE3C,EAAA,QAAA,CAAS,MAAM;AACb,IAAA,MAAM,UAAa,GAAA,IAAI,cAAoC,CAAA,MAAA,CAAO,EAAE,CAAG,EAAA;AAAA,MACrE,EAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,UAAA,CAAW,UAAU,CAAA,CAAA;AACrB,IAAA,UAAA,GAAa,UAAU,CAAA,CAAA;AAAA,GACxB,CAAA,CAAA;AAED,EAAM,MAAA,OAAA,GAAUA,cAAM,CAAA,OAAA,CAAQ,MAAM;AAClC,IAAO,OAAA,WAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAEL,EACE,uBAAA,GAAA;AAAA,IAAC,OAAQ,CAAA,QAAA;AAAA,IAAR;AAAA,MACC,OAAOA,cAAM,CAAA,OAAA;AAAA,QACX,OAAO;AAAA,UACL,OAAA;AAAA,UACA,EAAA;AAAA,UACA,WAAW,GAAK,EAAA;AACd,YAAK,KAAA,OAAA,CAAQ,QAAS,CAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AAAA,WAC9B;AAAA,UACA,UAAU,GAAK,EAAA;AACb,YAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,CAAI,EAAI,EAAA,CAAC,UAAU,CAAA,CAAA;AACnC,YAAA,SAAA,GAAY,GAAG,CAAA,CAAA;AAAA,WACjB;AAAA,UACA,aAAa,WAAe,IAAA,YAAA;AAAA,SAC9B,CAAA;AAAA,QACA,CAAC,OAAA,EAAS,EAAI,EAAA,UAAA,EAAY,WAAW,WAAW,CAAA;AAAA,OAClD;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACE,GAAG,KAAA;AAAA,UACJ,WAAWA,cAAM,CAAA,WAAA;AAAA,YACf,CAAC,EAA4C,KAAA;AAC3C,cAAA,SAAA,GAAY,EAAE,CAAA,CAAA;AACd,cAAA,OAAA,CAAQ,cAAc,EAAE,CAAA,CAAA;AAAA,aAC1B;AAAA,YACA,CAAC,SAAS,SAAS,CAAA;AAAA,WACrB;AAAA,UACA,GAAA;AAAA,SAAA;AAAA,OACF;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,OAAOA,cAAM,CAAA,UAAA;AAAA,EACxB,gBAAA;AACF;;;;"}
1
+ {"version":3,"file":"Tabs.js","sources":["../../src/tabs/Tabs.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, BoxProps } from '@apia/theme';\r\nimport TabsController from './tabsController';\r\nimport { TTabs, TTabsContext } from './types';\r\nimport { TabsContext } from './util';\r\nimport { useMount } from '@apia/util';\r\n\r\nconst NonForwardedTabs = <\r\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\r\n>(\r\n {\r\n id,\r\n onCloseTab,\r\n onOpenTab,\r\n onRequestClose,\r\n className,\r\n orientation,\r\n getHandler,\r\n initialTabs,\r\n isMultiple,\r\n onKeyDown,\r\n ...props\r\n }: TTabs<AdditionalPropsType> & Omit<BoxProps, 'id' | 'as' | 'role'>,\r\n ref: React.ForwardedRef<HTMLDivElement>,\r\n) => {\r\n const [handler, setHandler] = React.useState<\r\n TabsController<AdditionalPropsType>\r\n >({} as TabsController<AdditionalPropsType>);\r\n\r\n useMount(() => {\r\n const newHandler = new TabsController<AdditionalPropsType>(String(id), {\r\n id,\r\n onCloseTab,\r\n onOpenTab,\r\n onRequestClose,\r\n orientation,\r\n initialTabs,\r\n isMultiple,\r\n });\r\n setHandler(newHandler);\r\n getHandler?.(newHandler);\r\n });\r\n\r\n const Context = React.useMemo(() => {\r\n return TabsContext as React.Context<TTabsContext<AdditionalPropsType>>;\r\n }, []);\r\n\r\n return (\r\n <Context.Provider\r\n value={React.useMemo(\r\n () => ({\r\n handler,\r\n id,\r\n onCloseTab(tab) {\r\n void handler.closeTab(tab.id);\r\n },\r\n onOpenTab(tab) {\r\n handler.openTab(tab.id, !isMultiple);\r\n onOpenTab?.(tab);\r\n },\r\n orientation: orientation ?? 'horizontal',\r\n }),\r\n [handler, id, isMultiple, onOpenTab, orientation],\r\n )}\r\n >\r\n <Box\r\n {...props}\r\n onKeyDown={React.useCallback(\r\n (ev: React.KeyboardEvent<HTMLDivElement>) => {\r\n onKeyDown?.(ev);\r\n handler.handleKeyDown(ev);\r\n },\r\n [handler, onKeyDown],\r\n )}\r\n ref={ref}\r\n />\r\n </Context.Provider>\r\n );\r\n};\r\n\r\nexport const Tabs = React.forwardRef<HTMLDivElement, TTabs>(\r\n NonForwardedTabs,\r\n) as unknown as typeof NonForwardedTabs;\r\n"],"names":["React"],"mappings":";;;;;;;AAOA,MAAM,mBAAmB,CAGvB;AAAA,EACE,EAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG,KAAA;AACL,CAAA,EACA,GACG,KAAA;AACH,EAAA,MAAM,CAAC,OAAS,EAAA,UAAU,IAAIA,cAAM,CAAA,QAAA,CAElC,EAAyC,CAAA,CAAA;AAE3C,EAAA,QAAA,CAAS,MAAM;AACb,IAAA,MAAM,UAAa,GAAA,IAAI,cAAoC,CAAA,MAAA,CAAO,EAAE,CAAG,EAAA;AAAA,MACrE,EAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,UAAA,CAAW,UAAU,CAAA,CAAA;AACrB,IAAA,UAAA,GAAa,UAAU,CAAA,CAAA;AAAA,GACxB,CAAA,CAAA;AAED,EAAM,MAAA,OAAA,GAAUA,cAAM,CAAA,OAAA,CAAQ,MAAM;AAClC,IAAO,OAAA,WAAA,CAAA;AAAA,GACT,EAAG,EAAE,CAAA,CAAA;AAEL,EACE,uBAAA,GAAA;AAAA,IAAC,OAAQ,CAAA,QAAA;AAAA,IAAR;AAAA,MACC,OAAOA,cAAM,CAAA,OAAA;AAAA,QACX,OAAO;AAAA,UACL,OAAA;AAAA,UACA,EAAA;AAAA,UACA,WAAW,GAAK,EAAA;AACd,YAAK,KAAA,OAAA,CAAQ,QAAS,CAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AAAA,WAC9B;AAAA,UACA,UAAU,GAAK,EAAA;AACb,YAAA,OAAA,CAAQ,OAAQ,CAAA,GAAA,CAAI,EAAI,EAAA,CAAC,UAAU,CAAA,CAAA;AACnC,YAAA,SAAA,GAAY,GAAG,CAAA,CAAA;AAAA,WACjB;AAAA,UACA,aAAa,WAAe,IAAA,YAAA;AAAA,SAC9B,CAAA;AAAA,QACA,CAAC,OAAA,EAAS,EAAI,EAAA,UAAA,EAAY,WAAW,WAAW,CAAA;AAAA,OAClD;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACE,GAAG,KAAA;AAAA,UACJ,WAAWA,cAAM,CAAA,WAAA;AAAA,YACf,CAAC,EAA4C,KAAA;AAC3C,cAAA,SAAA,GAAY,EAAE,CAAA,CAAA;AACd,cAAA,OAAA,CAAQ,cAAc,EAAE,CAAA,CAAA;AAAA,aAC1B;AAAA,YACA,CAAC,SAAS,SAAS,CAAA;AAAA,WACrB;AAAA,UACA,GAAA;AAAA,SAAA;AAAA,OACF;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,OAAOA,cAAM,CAAA,UAAA;AAAA,EACxB,gBAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabsList.js","sources":["../../src/tabs/TabsList.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, getVariant } from '@apia/theme';\nimport ContextMenu from './ContextMenu';\nimport Item from './Item';\nimport useTabsList from './useTabsList';\nimport { useTabsContext } from './util';\nimport { TId, getLabel, getSpecificParent, isChild } from '@apia/util';\nimport { IconButton } from '../components';\n\nexport const TabsList = ({\n arrowsBehavior = 'focus',\n}: {\n arrowsBehavior?: 'open' | 'focus';\n}) => {\n const { id, orientation, handler } = useTabsContext();\n const tabs = useTabsList();\n\n const fixedTabs = React.useMemo(\n () => (tabs ?? []).filter((current) => current.isFixed),\n [tabs],\n );\n const nonFixedTabs = React.useMemo(\n () => (tabs ?? []).filter((current) => !current.isFixed),\n [tabs],\n );\n\n const [showScrollButtons, setShowScrollButtons] = React.useState(true);\n\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n React.useEffect(() => {\n if (ref) {\n const observer = new MutationObserver(([{ addedNodes }]) => {\n const fixedTabsElement = ref.querySelector('.tabsList__fixedTabs');\n const hasFixedTabsScroll =\n (fixedTabsElement?.clientWidth ?? 0) <\n (fixedTabsElement?.scrollWidth ?? 0);\n const nonFixedTabsElement = ref.querySelector('.tabs__list');\n const hasFixedNonTabsScroll =\n (nonFixedTabsElement?.clientWidth ?? 0) <\n (nonFixedTabsElement?.scrollWidth ?? 0);\n\n setShowScrollButtons(hasFixedTabsScroll || hasFixedNonTabsScroll);\n\n if (addedNodes) {\n (\n ref.querySelector('.tabs__list') as HTMLElement\n ).scrollLeft = 9999999;\n }\n });\n observer.observe(ref, { childList: true, subtree: true });\n return () => {\n observer.disconnect();\n };\n }\n\n return () => {};\n }, [ref]);\n\n const onClickPrev = React.useCallback(() => {\n if (arrowsBehavior === 'focus') handler.focusPreviousTab();\n if (arrowsBehavior === 'open') handler.openPreviousTab();\n }, [arrowsBehavior, handler]);\n\n const onClickNext = React.useCallback(() => {\n if (arrowsBehavior === 'focus') handler.focusNextTab();\n if (arrowsBehavior === 'open') handler.openNextTab();\n }, [arrowsBehavior, handler]);\n\n const [anchorPoint, setAnchorPoint] = React.useState({ x: 0, y: 0 });\n const [isOpen, setIsOpen] = React.useState(false);\n const [targetId, setTargetId] = React.useState<TId>('');\n\n return (\n <Box\n id={`tabsList-${id}`}\n className=\"tabsList__wrapper\"\n role=\"tablist\"\n {...getVariant('layout.common.tabs.primary')}\n ref={setRef}\n onBlur={React.useCallback((ev: React.FocusEvent) => {\n if (\n !isChild(ev.relatedTarget as HTMLElement, (current) =>\n current.classList.contains('tabsList__wrapper'),\n )\n ) {\n }\n }, [])}\n >\n <Box className=\"tabsList__fixedTabs\">\n {fixedTabs.map((current) => (\n <Item key={current.id} tabId={current.id} />\n ))}\n </Box>\n <ContextMenu\n anchorPoint={anchorPoint}\n isOpen={isOpen}\n onClose={React.useCallback(() => setIsOpen(false), [])}\n targetId={targetId}\n />\n <Box\n className={`noScrollbar tabs__list ${\n orientation === 'vertical' ? 'vertical' : ''\n }`}\n onContextMenu={React.useCallback((e: React.MouseEvent) => {\n const tabElement = getSpecificParent(\n e.target as HTMLElement,\n (current) => current.classList.contains('tabs__item__wrapper'),\n );\n if (tabElement) {\n e.preventDefault();\n e.stopPropagation();\n setTargetId(tabElement.dataset.id as string);\n setAnchorPoint({ x: e.clientX, y: e.clientY });\n setIsOpen(true);\n }\n }, [])}\n >\n {nonFixedTabs.map((current) => (\n <Item key={current.id} tabId={current.id} />\n ))}\n </Box>\n {showScrollButtons && (\n <>\n <IconButton\n aria-label={getLabel('lblTogglePrevTab').text}\n className=\"tabs__switch__left\"\n icon=\"ArrowLeft\"\n iconSize=\"Xs\"\n onClick={onClickPrev}\n title={getLabel('lblTogglePrevTab').text}\n {...getVariant('icon-primary')}\n />\n <IconButton\n aria-label={getLabel('lblToggleNextTab').text}\n className=\"tabs__switch__right\"\n icon=\"ArrowRight\"\n iconSize=\"Xs\"\n onClick={onClickNext}\n title={getLabel('lblToggleNextTab').text}\n {...getVariant('icon-primary')}\n />\n </>\n )}\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"TabsList.js","sources":["../../src/tabs/TabsList.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, getVariant } from '@apia/theme';\r\nimport ContextMenu from './ContextMenu';\r\nimport Item from './Item';\r\nimport useTabsList from './useTabsList';\r\nimport { useTabsContext } from './util';\r\nimport { TId, getLabel, getSpecificParent, isChild } from '@apia/util';\r\nimport { IconButton } from '../components';\r\n\r\nexport const TabsList = ({\r\n arrowsBehavior = 'focus',\r\n}: {\r\n arrowsBehavior?: 'open' | 'focus';\r\n}) => {\r\n const { id, orientation, handler } = useTabsContext();\r\n const tabs = useTabsList();\r\n\r\n const fixedTabs = React.useMemo(\r\n () => (tabs ?? []).filter((current) => current.isFixed),\r\n [tabs],\r\n );\r\n const nonFixedTabs = React.useMemo(\r\n () => (tabs ?? []).filter((current) => !current.isFixed),\r\n [tabs],\r\n );\r\n\r\n const [showScrollButtons, setShowScrollButtons] = React.useState(true);\r\n\r\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\r\n React.useEffect(() => {\r\n if (ref) {\r\n const observer = new MutationObserver(([{ addedNodes }]) => {\r\n const fixedTabsElement = ref.querySelector('.tabsList__fixedTabs');\r\n const hasFixedTabsScroll =\r\n (fixedTabsElement?.clientWidth ?? 0) <\r\n (fixedTabsElement?.scrollWidth ?? 0);\r\n const nonFixedTabsElement = ref.querySelector('.tabs__list');\r\n const hasFixedNonTabsScroll =\r\n (nonFixedTabsElement?.clientWidth ?? 0) <\r\n (nonFixedTabsElement?.scrollWidth ?? 0);\r\n\r\n setShowScrollButtons(hasFixedTabsScroll || hasFixedNonTabsScroll);\r\n\r\n if (addedNodes) {\r\n (\r\n ref.querySelector('.tabs__list') as HTMLElement\r\n ).scrollLeft = 9999999;\r\n }\r\n });\r\n observer.observe(ref, { childList: true, subtree: true });\r\n return () => {\r\n observer.disconnect();\r\n };\r\n }\r\n\r\n return () => {};\r\n }, [ref]);\r\n\r\n const onClickPrev = React.useCallback(() => {\r\n if (arrowsBehavior === 'focus') handler.focusPreviousTab();\r\n if (arrowsBehavior === 'open') handler.openPreviousTab();\r\n }, [arrowsBehavior, handler]);\r\n\r\n const onClickNext = React.useCallback(() => {\r\n if (arrowsBehavior === 'focus') handler.focusNextTab();\r\n if (arrowsBehavior === 'open') handler.openNextTab();\r\n }, [arrowsBehavior, handler]);\r\n\r\n const [anchorPoint, setAnchorPoint] = React.useState({ x: 0, y: 0 });\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const [targetId, setTargetId] = React.useState<TId>('');\r\n\r\n return (\r\n <Box\r\n id={`tabsList-${id}`}\r\n className=\"tabsList__wrapper\"\r\n role=\"tablist\"\r\n {...getVariant('layout.common.tabs.primary')}\r\n ref={setRef}\r\n onBlur={React.useCallback((ev: React.FocusEvent) => {\r\n if (\r\n !isChild(ev.relatedTarget as HTMLElement, (current) =>\r\n current.classList.contains('tabsList__wrapper'),\r\n )\r\n ) {\r\n }\r\n }, [])}\r\n >\r\n <Box className=\"tabsList__fixedTabs\">\r\n {fixedTabs.map((current) => (\r\n <Item key={current.id} tabId={current.id} />\r\n ))}\r\n </Box>\r\n <ContextMenu\r\n anchorPoint={anchorPoint}\r\n isOpen={isOpen}\r\n onClose={React.useCallback(() => setIsOpen(false), [])}\r\n targetId={targetId}\r\n />\r\n <Box\r\n className={`noScrollbar tabs__list ${\r\n orientation === 'vertical' ? 'vertical' : ''\r\n }`}\r\n onContextMenu={React.useCallback((e: React.MouseEvent) => {\r\n const tabElement = getSpecificParent(\r\n e.target as HTMLElement,\r\n (current) => current.classList.contains('tabs__item__wrapper'),\r\n );\r\n if (tabElement) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setTargetId(tabElement.dataset.id as string);\r\n setAnchorPoint({ x: e.clientX, y: e.clientY });\r\n setIsOpen(true);\r\n }\r\n }, [])}\r\n >\r\n {nonFixedTabs.map((current) => (\r\n <Item key={current.id} tabId={current.id} />\r\n ))}\r\n </Box>\r\n {showScrollButtons && (\r\n <>\r\n <IconButton\r\n aria-label={getLabel('lblTogglePrevTab').text}\r\n className=\"tabs__switch__left\"\r\n icon=\"ArrowLeft\"\r\n iconSize=\"Xs\"\r\n onClick={onClickPrev}\r\n title={getLabel('lblTogglePrevTab').text}\r\n {...getVariant('icon-primary')}\r\n />\r\n <IconButton\r\n aria-label={getLabel('lblToggleNextTab').text}\r\n className=\"tabs__switch__right\"\r\n icon=\"ArrowRight\"\r\n iconSize=\"Xs\"\r\n onClick={onClickNext}\r\n title={getLabel('lblToggleNextTab').text}\r\n {...getVariant('icon-primary')}\r\n />\r\n </>\r\n )}\r\n </Box>\r\n );\r\n};\r\n"],"names":["React"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultTabsLabelRenderer.js","sources":["../../../src/tabs/renderers/DefaultTabsLabelRenderer.tsx"],"sourcesContent":["import React, { MouseEvent } from 'react';\nimport { TTabRenderer } from '../types';\nimport { useTabsContext } from '../util';\nimport { Icon, TIconName, isIconName } from '@apia/icons';\nimport { IconButton, SimpleButton } from '../../components';\nimport { getLabel } from '@apia/util';\n\nfunction makeIcon(name: TIconName) {\n return function IconComponent() {\n return <Icon title=\"\" name={name} />;\n };\n}\n\nexport const DefaultTabsLabelRenderer: TTabRenderer = ({ tab }) => {\n const { onCloseTab } = useTabsContext();\n const ActualIcon = React.useMemo(() => {\n if (tab.icon) {\n if (isIconName(tab.icon)) {\n return makeIcon(tab.icon);\n }\n return tab.icon;\n }\n return function C() {\n return null;\n };\n }, [tab.icon]);\n\n const handleClose = React.useCallback(\n (ev: MouseEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n onCloseTab(tab);\n },\n [onCloseTab, tab],\n );\n\n return (\n <>\n {tab.isIconTab ? (\n <IconButton\n className=\"tabs__item__button\"\n as=\"div\"\n icon={tab.icon as TIconName}\n variant=\"null\"\n iconSize=\"Sm\"\n size=\"Lg\"\n />\n ) : (\n <SimpleButton className=\"tabs__item__button\" as=\"div\" variant=\"null\">\n <ActualIcon />\n {tab.label}\n </SimpleButton>\n )}\n\n {tab.isClosable && (\n <IconButton\n as=\"div\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={handleClose}\n className=\"tabs__item__close\"\n icon=\"Close\"\n variant=\"null\"\n title={\n getLabel('lblCloseSpecificTab', { text: { TOK1: tab.label } }).text\n }\n size=\"Lg\"\n iconSize=\"Sm\"\n />\n )}\n </>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;AAOA,SAAS,SAAS,IAAiB,EAAA;AACjC,EAAA,OAAO,SAAS,aAAgB,GAAA;AAC9B,IAAA,uBAAQ,GAAA,CAAA,IAAA,EAAA,EAAK,KAAM,EAAA,EAAA,EAAG,IAAY,EAAA,CAAA,CAAA;AAAA,GACpC,CAAA;AACF,CAAA;AAEO,MAAM,wBAAyC,GAAA,CAAC,EAAE,GAAA,EAAU,KAAA;AACjE,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,cAAe,EAAA,CAAA;AACtC,EAAM,MAAA,UAAA,GAAaA,cAAM,CAAA,OAAA,CAAQ,MAAM;AACrC,IAAA,IAAI,IAAI,IAAM,EAAA;AACZ,MAAI,IAAA,UAAA,CAAW,GAAI,CAAA,IAAI,CAAG,EAAA;AACxB,QAAO,OAAA,QAAA,CAAS,IAAI,IAAI,CAAA,CAAA;AAAA,OAC1B;AACA,MAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,KACb;AACA,IAAA,OAAO,SAAS,CAAI,GAAA;AAClB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAAA,GACC,EAAA,CAAC,GAAI,CAAA,IAAI,CAAC,CAAA,CAAA;AAEb,EAAA,MAAM,cAAcA,cAAM,CAAA,WAAA;AAAA,IACxB,CAAC,EAAmB,KAAA;AAClB,MAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,MAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AACnB,MAAA,UAAA,CAAW,GAAG,CAAA,CAAA;AAAA,KAChB;AAAA,IACA,CAAC,YAAY,GAAG,CAAA;AAAA,GAClB,CAAA;AAEA,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,GAAA,CAAI,SACH,mBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAU,EAAA,oBAAA;AAAA,QACV,EAAG,EAAA,KAAA;AAAA,QACH,MAAM,GAAI,CAAA,IAAA;AAAA,QACV,OAAQ,EAAA,MAAA;AAAA,QACR,QAAS,EAAA,IAAA;AAAA,QACT,IAAK,EAAA,IAAA;AAAA,OAAA;AAAA,KACP,wBAEC,YAAa,EAAA,EAAA,SAAA,EAAU,sBAAqB,EAAG,EAAA,KAAA,EAAM,SAAQ,MAC5D,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,CAAA;AAAA,MACX,GAAI,CAAA,KAAA;AAAA,KACP,EAAA,CAAA;AAAA,IAGD,IAAI,UACH,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,KAAA;AAAA,QACH,WAAA,EAAa,CAAC,CAAM,KAAA;AAClB,UAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,UAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,SACnB;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,SAAU,EAAA,mBAAA;AAAA,QACV,IAAK,EAAA,OAAA;AAAA,QACL,OAAQ,EAAA,MAAA;AAAA,QACR,KAAA,EACE,QAAS,CAAA,qBAAA,EAAuB,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,GAAI,CAAA,KAAA,EAAQ,EAAC,CAAE,CAAA,IAAA;AAAA,QAEjE,IAAK,EAAA,IAAA;AAAA,QACL,QAAS,EAAA,IAAA;AAAA,OAAA;AAAA,KACX;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DefaultTabsLabelRenderer.js","sources":["../../../src/tabs/renderers/DefaultTabsLabelRenderer.tsx"],"sourcesContent":["import React, { MouseEvent } from 'react';\r\nimport { TTabRenderer } from '../types';\r\nimport { useTabsContext } from '../util';\r\nimport { Icon, TIconName, isIconName } from '@apia/icons';\r\nimport { IconButton, SimpleButton } from '../../components';\r\nimport { getLabel } from '@apia/util';\r\n\r\nfunction makeIcon(name: TIconName) {\r\n return function IconComponent() {\r\n return <Icon title=\"\" name={name} />;\r\n };\r\n}\r\n\r\nexport const DefaultTabsLabelRenderer: TTabRenderer = ({ tab }) => {\r\n const { onCloseTab } = useTabsContext();\r\n const ActualIcon = React.useMemo(() => {\r\n if (tab.icon) {\r\n if (isIconName(tab.icon)) {\r\n return makeIcon(tab.icon);\r\n }\r\n return tab.icon;\r\n }\r\n return function C() {\r\n return null;\r\n };\r\n }, [tab.icon]);\r\n\r\n const handleClose = React.useCallback(\r\n (ev: MouseEvent) => {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n onCloseTab(tab);\r\n },\r\n [onCloseTab, tab],\r\n );\r\n\r\n return (\r\n <>\r\n {tab.isIconTab ? (\r\n <IconButton\r\n className=\"tabs__item__button\"\r\n as=\"div\"\r\n icon={tab.icon as TIconName}\r\n variant=\"null\"\r\n iconSize=\"Sm\"\r\n size=\"Lg\"\r\n />\r\n ) : (\r\n <SimpleButton className=\"tabs__item__button\" as=\"div\" variant=\"null\">\r\n <ActualIcon />\r\n {tab.label}\r\n </SimpleButton>\r\n )}\r\n\r\n {tab.isClosable && (\r\n <IconButton\r\n as=\"div\"\r\n onMouseDown={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }}\r\n onClick={handleClose}\r\n className=\"tabs__item__close\"\r\n icon=\"Close\"\r\n variant=\"null\"\r\n title={\r\n getLabel('lblCloseSpecificTab', { text: { TOK1: tab.label } }).text\r\n }\r\n size=\"Lg\"\r\n iconSize=\"Sm\"\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n"],"names":["React"],"mappings":";;;;;;;;AAOA,SAAS,SAAS,IAAiB,EAAA;AACjC,EAAA,OAAO,SAAS,aAAgB,GAAA;AAC9B,IAAA,uBAAQ,GAAA,CAAA,IAAA,EAAA,EAAK,KAAM,EAAA,EAAA,EAAG,IAAY,EAAA,CAAA,CAAA;AAAA,GACpC,CAAA;AACF,CAAA;AAEO,MAAM,wBAAyC,GAAA,CAAC,EAAE,GAAA,EAAU,KAAA;AACjE,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,cAAe,EAAA,CAAA;AACtC,EAAM,MAAA,UAAA,GAAaA,cAAM,CAAA,OAAA,CAAQ,MAAM;AACrC,IAAA,IAAI,IAAI,IAAM,EAAA;AACZ,MAAI,IAAA,UAAA,CAAW,GAAI,CAAA,IAAI,CAAG,EAAA;AACxB,QAAO,OAAA,QAAA,CAAS,IAAI,IAAI,CAAA,CAAA;AAAA,OAC1B;AACA,MAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,KACb;AACA,IAAA,OAAO,SAAS,CAAI,GAAA;AAClB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAAA,GACC,EAAA,CAAC,GAAI,CAAA,IAAI,CAAC,CAAA,CAAA;AAEb,EAAA,MAAM,cAAcA,cAAM,CAAA,WAAA;AAAA,IACxB,CAAC,EAAmB,KAAA;AAClB,MAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,MAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AACnB,MAAA,UAAA,CAAW,GAAG,CAAA,CAAA;AAAA,KAChB;AAAA,IACA,CAAC,YAAY,GAAG,CAAA;AAAA,GAClB,CAAA;AAEA,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,GAAA,CAAI,SACH,mBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAU,EAAA,oBAAA;AAAA,QACV,EAAG,EAAA,KAAA;AAAA,QACH,MAAM,GAAI,CAAA,IAAA;AAAA,QACV,OAAQ,EAAA,MAAA;AAAA,QACR,QAAS,EAAA,IAAA;AAAA,QACT,IAAK,EAAA,IAAA;AAAA,OAAA;AAAA,KACP,wBAEC,YAAa,EAAA,EAAA,SAAA,EAAU,sBAAqB,EAAG,EAAA,KAAA,EAAM,SAAQ,MAC5D,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,CAAA;AAAA,MACX,GAAI,CAAA,KAAA;AAAA,KACP,EAAA,CAAA;AAAA,IAGD,IAAI,UACH,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,KAAA;AAAA,QACH,WAAA,EAAa,CAAC,CAAM,KAAA;AAClB,UAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,UAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,SACnB;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,SAAU,EAAA,mBAAA;AAAA,QACV,IAAK,EAAA,OAAA;AAAA,QACL,OAAQ,EAAA,MAAA;AAAA,QACR,KAAA,EACE,QAAS,CAAA,qBAAA,EAAuB,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,GAAI,CAAA,KAAA,EAAQ,EAAC,CAAE,CAAA,IAAA;AAAA,QAEjE,IAAK,EAAA,IAAA;AAAA,QACL,QAAS,EAAA,IAAA;AAAA,OAAA;AAAA,KACX;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabsController.js","sources":["../../src/tabs/tabsController.ts"],"sourcesContent":["import clone from 'lodash-es/clone';\nimport uniqueId from 'lodash-es/uniqueId';\nimport React from 'react';\nimport { TTab, TTabs, TTabsListState } from './types';\nimport {\n PropsStore,\n TId,\n getLabel,\n getSpecificParent,\n isChild,\n} from '@apia/util';\nimport { ApiaUtil } from '../objects/ApiaUtil';\n\nexport default class TabsController<\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\n TabType extends TTab<AdditionalPropsType> = TTab<AdditionalPropsType>,\n> {\n propsStore: PropsStore<TTab<AdditionalPropsType>>;\n\n stateKey = 'state';\n\n get stateStore() {\n return this.propsStore as unknown as PropsStore<TTabsListState>;\n }\n\n get activeTabs() {\n return clone(this.state.openTabs);\n }\n\n get tabsList() {\n return clone(this.state.tabs);\n }\n\n constructor(\n name: string,\n private props: TTabs<AdditionalPropsType>,\n initialTabs?: TabType[],\n ) {\n this.propsStore = new PropsStore<TTab<AdditionalPropsType>>({\n logCommands: { propsStore: `tabs_${name}` },\n });\n this.#setState({\n focusedTab: null,\n openTabs: [],\n tabs: initialTabs?.map((current) => current.id) ?? [],\n });\n if (initialTabs && initialTabs.length > 0) this.focusTab(initialTabs[0].id);\n }\n\n #innerAppend(tab: TabType) {\n this.#setState({ tabs: [...this.state.tabs, tab.id] });\n this.propsStore.updateField(tab.id, tab);\n if (tab.isOpen) {\n this.openTab(tab.id);\n this.focusTab(tab.id);\n }\n }\n\n /**\n * Obviamente agrega un tab al listado de tabs\n */\n append(\n tab: Omit<TabType, 'tabAdditionalProps'> &\n Partial<Pick<TabType, 'tabAdditionalProps'>>,\n ) {\n if (this.propsStore.getFieldProps(tab.id)) {\n void new ApiaUtil().dialogs\n .confirm({\n children: getLabel('msgTabIsOpen').text,\n title: getLabel('titMsgWarning').text,\n })\n .then((hasConfirmed) => {\n if (hasConfirmed)\n this.#innerAppend({\n ...tab,\n id: `${tab.id}_${uniqueId()}`,\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\n } as TabType);\n });\n } else\n this.#innerAppend({\n ...tab,\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\n } as TabType);\n }\n\n async closeAll(closeFixedTabsAsWell = false, force = false) {\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed ||\n closeFixedTabsAsWell\n )\n await this.closeTab(current, force);\n }\n }\n\n async closeToRight(targetId: TId) {\n const targetIndex = this.tabsList.indexOf(targetId);\n for (let i = this.tabsList.length - 1; i > targetIndex; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed &&\n current !== targetId\n )\n await this.closeTab(current);\n }\n }\n\n async closeToLeft(targetId: TId) {\n const targetIndex = this.tabsList.indexOf(targetId);\n if (targetIndex > -1) {\n for (let i = targetIndex - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (!this.propsStore.getFieldProps(current).isFixed) {\n await this.closeTab(current);\n }\n }\n }\n }\n\n async closeOthers(targetId: TId) {\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed &&\n current !== targetId\n )\n await this.closeTab(current);\n }\n }\n\n async closeTab(tabId: TId, force = false) {\n const tabProps = this.propsStore.getFieldProps(tabId);\n if (\n !tabProps.isClosable ||\n (!force &&\n this.props.onRequestClose &&\n !(await this.props.onRequestClose(tabProps)))\n )\n return false;\n\n const { onBeforeClose } = tabProps;\n if (onBeforeClose) {\n const canClose = await onBeforeClose();\n const message =\n canClose === false ? getLabel('msgPerDatIng').text : canClose;\n if (message !== true && !force) {\n const hasConfirmed = await new ApiaUtil().dialogs.confirm({\n children: message,\n title: getLabel('lbl_atention').text,\n });\n if (!hasConfirmed) return false;\n }\n }\n\n let newOpenTab: null | TId = null;\n if (this.state.openTabs.includes(tabId)) {\n const tabIndex = this.tabsList.findIndex((current) => current === tabId);\n newOpenTab =\n tabIndex > 0 ? this.tabsList[tabIndex - 1] : this.tabsList[1];\n }\n\n this.#setState({\n tabs: this.state.tabs.filter((current) => current !== tabId),\n });\n this.props.onCloseTab?.(tabProps);\n this.propsStore.removeField(tabId);\n\n if (newOpenTab) {\n this.openTab(newOpenTab);\n this.focusTab(newOpenTab);\n }\n\n return true;\n }\n\n focusNextTab() {\n const { tabs } = this.state;\n const focusedIndex = tabs.findIndex(\n (current) => current === this.state.focusedTab,\n );\n\n if (focusedIndex === tabs.length - 1 || focusedIndex === -1) return null;\n\n const newFocusIndex: number = focusedIndex + 1;\n this.focusTab(tabs[newFocusIndex]);\n\n return tabs[newFocusIndex];\n }\n\n focusPreviousTab() {\n const { tabs } = this.state;\n const focusedIndex = tabs.findIndex(\n (current) => current === this.state.focusedTab,\n );\n\n if (focusedIndex <= 0) return null;\n\n const newFocusIndex: number = focusedIndex - 1;\n this.focusTab(tabs[newFocusIndex]);\n\n return tabs[newFocusIndex];\n }\n\n focusTab(tabId: TId) {\n if (this.state.focusedTab)\n this.propsStore.updateField(this.state.focusedTab, { isFocused: false });\n this.#setState({ focusedTab: tabId });\n this.propsStore.updateField(tabId, { isFocused: true });\n const tabProps = this.propsStore.getFieldProps(tabId);\n tabProps?.onFocus?.(tabProps);\n }\n\n getTabById(tabId: TId) {\n return this.propsStore.getFieldProps(tabId);\n }\n\n getTabElement(tabId: TId) {\n return document.querySelector(`#tabpanel-${this.props.id}-${tabId}`);\n }\n\n handleKeyDown(ev: React.KeyboardEvent) {\n if (\n !isChild(\n ev.target as HTMLElement,\n (current) => current.id === `tabsList-${this.props.id}`,\n )\n )\n return;\n\n switch (ev.code) {\n case 'ArrowDown':\n case 'ArrowRight': {\n if (\n (this.props.orientation === 'horizontal' &&\n ev.code === 'ArrowDown') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowRight')\n )\n return;\n\n this.focusNextTab();\n\n break;\n }\n case 'ArrowUp':\n case 'ArrowLeft': {\n if (\n (this.props.orientation === 'horizontal' && ev.code === 'ArrowUp') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowLeft')\n )\n return;\n\n this.focusPreviousTab();\n\n break;\n }\n case 'Delete': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n if (!this.propsStore.getFieldProps(tabId).isClosable) return;\n\n void this.closeTab(tabId);\n }\n break;\n }\n case 'Enter':\n case 'Space': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n this.openTab(tabId);\n }\n\n break;\n }\n case 'End': {\n this.focusTab(this.state.tabs[this.state.tabs.length - 1]);\n break;\n }\n case 'Home': {\n this.focusTab(this.state.tabs[0]);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n openNextTab() {\n const { tabs } = this.state;\n const openIndex = tabs.findIndex(\n (current) => current === this.state.openTabs[0],\n );\n\n if (openIndex >= this.tabsList.length) return null;\n\n const newOpenIndex: number = openIndex + 1;\n this.openTab(tabs[newOpenIndex]);\n\n return tabs[newOpenIndex];\n }\n\n openPreviousTab() {\n const { tabs } = this.state;\n const openIndex = tabs.findIndex(\n (current) => current === this.state.openTabs[0],\n );\n\n if (openIndex <= 0) return null;\n\n const newOpenIndex: number = openIndex - 1;\n this.openTab(tabs[newOpenIndex]);\n\n return tabs[newOpenIndex];\n }\n\n get state() {\n return this.propsStore.getFieldProps<TTabsListState>(this.stateKey);\n }\n\n #setState(state: Partial<TTabsListState>) {\n this.propsStore.updateField<TTabsListState>(this.stateKey, state);\n }\n\n /**\n * Se utiliza para hacer que el tab aparezca visible en el listado\n *\n * @param justThis Normalmente las tabs se abren de a una, pero si este parámetro se pasa en false, es posible abrir más de una a la vez.\n */\n openTab(tabId: TId, justThis = true) {\n const tabProps = this.propsStore.getFieldProps(tabId);\n if (!tabProps) {\n console.warn(`There is no tab with such id: ${tabId}`);\n } else {\n window.dispatchEvent(\n new CustomEvent('tabOpen', {\n detail: { tabId, justThis },\n }),\n );\n\n if (justThis) {\n window.requestAnimationFrame(() => {\n window.scrollTo(0, 0);\n });\n this.state.openTabs.forEach((current) =>\n this.propsStore.updateField(current, { isOpen: false }),\n );\n }\n this.propsStore.updateField(tabId, { isOpen: true });\n this.#setState({\n openTabs: justThis ? [tabId] : [...this.state.openTabs, tabId],\n });\n this.focusTab(tabId);\n this.props.onOpenTab?.(tabProps);\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabsController.js","sources":["../../src/tabs/tabsController.ts"],"sourcesContent":["import clone from 'lodash-es/clone';\r\nimport uniqueId from 'lodash-es/uniqueId';\r\nimport React from 'react';\r\nimport { TTab, TTabs, TTabsListState } from './types';\r\nimport {\r\n PropsStore,\r\n TId,\r\n getLabel,\r\n getSpecificParent,\r\n isChild,\r\n} from '@apia/util';\r\nimport { ApiaUtil } from '../objects/ApiaUtil';\r\n\r\nexport default class TabsController<\r\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\r\n TabType extends TTab<AdditionalPropsType> = TTab<AdditionalPropsType>,\r\n> {\r\n propsStore: PropsStore<TTab<AdditionalPropsType>>;\r\n\r\n stateKey = 'state';\r\n\r\n get stateStore() {\r\n return this.propsStore as unknown as PropsStore<TTabsListState>;\r\n }\r\n\r\n get activeTabs() {\r\n return clone(this.state.openTabs);\r\n }\r\n\r\n get tabsList() {\r\n return clone(this.state.tabs);\r\n }\r\n\r\n constructor(\r\n name: string,\r\n private props: TTabs<AdditionalPropsType>,\r\n initialTabs?: TabType[],\r\n ) {\r\n this.propsStore = new PropsStore<TTab<AdditionalPropsType>>({\r\n logCommands: { propsStore: `tabs_${name}` },\r\n });\r\n this.#setState({\r\n focusedTab: null,\r\n openTabs: [],\r\n tabs: initialTabs?.map((current) => current.id) ?? [],\r\n });\r\n if (initialTabs && initialTabs.length > 0) this.focusTab(initialTabs[0].id);\r\n }\r\n\r\n #innerAppend(tab: TabType) {\r\n this.#setState({ tabs: [...this.state.tabs, tab.id] });\r\n this.propsStore.updateField(tab.id, tab);\r\n if (tab.isOpen) {\r\n this.openTab(tab.id);\r\n this.focusTab(tab.id);\r\n }\r\n }\r\n\r\n /**\r\n * Obviamente agrega un tab al listado de tabs\r\n */\r\n append(\r\n tab: Omit<TabType, 'tabAdditionalProps'> &\r\n Partial<Pick<TabType, 'tabAdditionalProps'>>,\r\n ) {\r\n if (this.propsStore.getFieldProps(tab.id)) {\r\n void new ApiaUtil().dialogs\r\n .confirm({\r\n children: getLabel('msgTabIsOpen').text,\r\n title: getLabel('titMsgWarning').text,\r\n })\r\n .then((hasConfirmed) => {\r\n if (hasConfirmed)\r\n this.#innerAppend({\r\n ...tab,\r\n id: `${tab.id}_${uniqueId()}`,\r\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\r\n } as TabType);\r\n });\r\n } else\r\n this.#innerAppend({\r\n ...tab,\r\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\r\n } as TabType);\r\n }\r\n\r\n async closeAll(closeFixedTabsAsWell = false, force = false) {\r\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\r\n const current = this.tabsList[i];\r\n if (\r\n !this.propsStore.getFieldProps(current).isFixed ||\r\n closeFixedTabsAsWell\r\n )\r\n await this.closeTab(current, force);\r\n }\r\n }\r\n\r\n async closeToRight(targetId: TId) {\r\n const targetIndex = this.tabsList.indexOf(targetId);\r\n for (let i = this.tabsList.length - 1; i > targetIndex; i--) {\r\n const current = this.tabsList[i];\r\n if (\r\n !this.propsStore.getFieldProps(current).isFixed &&\r\n current !== targetId\r\n )\r\n await this.closeTab(current);\r\n }\r\n }\r\n\r\n async closeToLeft(targetId: TId) {\r\n const targetIndex = this.tabsList.indexOf(targetId);\r\n if (targetIndex > -1) {\r\n for (let i = targetIndex - 1; i >= 0; i--) {\r\n const current = this.tabsList[i];\r\n if (!this.propsStore.getFieldProps(current).isFixed) {\r\n await this.closeTab(current);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async closeOthers(targetId: TId) {\r\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\r\n const current = this.tabsList[i];\r\n if (\r\n !this.propsStore.getFieldProps(current).isFixed &&\r\n current !== targetId\r\n )\r\n await this.closeTab(current);\r\n }\r\n }\r\n\r\n async closeTab(tabId: TId, force = false) {\r\n const tabProps = this.propsStore.getFieldProps(tabId);\r\n if (\r\n !tabProps.isClosable ||\r\n (!force &&\r\n this.props.onRequestClose &&\r\n !(await this.props.onRequestClose(tabProps)))\r\n )\r\n return false;\r\n\r\n const { onBeforeClose } = tabProps;\r\n if (onBeforeClose) {\r\n const canClose = await onBeforeClose();\r\n const message =\r\n canClose === false ? getLabel('msgPerDatIng').text : canClose;\r\n if (message !== true && !force) {\r\n const hasConfirmed = await new ApiaUtil().dialogs.confirm({\r\n children: message,\r\n title: getLabel('lbl_atention').text,\r\n });\r\n if (!hasConfirmed) return false;\r\n }\r\n }\r\n\r\n let newOpenTab: null | TId = null;\r\n if (this.state.openTabs.includes(tabId)) {\r\n const tabIndex = this.tabsList.findIndex((current) => current === tabId);\r\n newOpenTab =\r\n tabIndex > 0 ? this.tabsList[tabIndex - 1] : this.tabsList[1];\r\n }\r\n\r\n this.#setState({\r\n tabs: this.state.tabs.filter((current) => current !== tabId),\r\n });\r\n this.props.onCloseTab?.(tabProps);\r\n this.propsStore.removeField(tabId);\r\n\r\n if (newOpenTab) {\r\n this.openTab(newOpenTab);\r\n this.focusTab(newOpenTab);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n focusNextTab() {\r\n const { tabs } = this.state;\r\n const focusedIndex = tabs.findIndex(\r\n (current) => current === this.state.focusedTab,\r\n );\r\n\r\n if (focusedIndex === tabs.length - 1 || focusedIndex === -1) return null;\r\n\r\n const newFocusIndex: number = focusedIndex + 1;\r\n this.focusTab(tabs[newFocusIndex]);\r\n\r\n return tabs[newFocusIndex];\r\n }\r\n\r\n focusPreviousTab() {\r\n const { tabs } = this.state;\r\n const focusedIndex = tabs.findIndex(\r\n (current) => current === this.state.focusedTab,\r\n );\r\n\r\n if (focusedIndex <= 0) return null;\r\n\r\n const newFocusIndex: number = focusedIndex - 1;\r\n this.focusTab(tabs[newFocusIndex]);\r\n\r\n return tabs[newFocusIndex];\r\n }\r\n\r\n focusTab(tabId: TId) {\r\n if (this.state.focusedTab)\r\n this.propsStore.updateField(this.state.focusedTab, { isFocused: false });\r\n this.#setState({ focusedTab: tabId });\r\n this.propsStore.updateField(tabId, { isFocused: true });\r\n const tabProps = this.propsStore.getFieldProps(tabId);\r\n tabProps?.onFocus?.(tabProps);\r\n }\r\n\r\n getTabById(tabId: TId) {\r\n return this.propsStore.getFieldProps(tabId);\r\n }\r\n\r\n getTabElement(tabId: TId) {\r\n return document.querySelector(`#tabpanel-${this.props.id}-${tabId}`);\r\n }\r\n\r\n handleKeyDown(ev: React.KeyboardEvent) {\r\n if (\r\n !isChild(\r\n ev.target as HTMLElement,\r\n (current) => current.id === `tabsList-${this.props.id}`,\r\n )\r\n )\r\n return;\r\n\r\n switch (ev.code) {\r\n case 'ArrowDown':\r\n case 'ArrowRight': {\r\n if (\r\n (this.props.orientation === 'horizontal' &&\r\n ev.code === 'ArrowDown') ||\r\n (this.props.orientation === 'vertical' && ev.code === 'ArrowRight')\r\n )\r\n return;\r\n\r\n this.focusNextTab();\r\n\r\n break;\r\n }\r\n case 'ArrowUp':\r\n case 'ArrowLeft': {\r\n if (\r\n (this.props.orientation === 'horizontal' && ev.code === 'ArrowUp') ||\r\n (this.props.orientation === 'vertical' && ev.code === 'ArrowLeft')\r\n )\r\n return;\r\n\r\n this.focusPreviousTab();\r\n\r\n break;\r\n }\r\n case 'Delete': {\r\n const tabId = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => !!current.getAttribute('data-id'),\r\n )?.getAttribute('data-id');\r\n\r\n if (tabId) {\r\n if (!this.propsStore.getFieldProps(tabId).isClosable) return;\r\n\r\n void this.closeTab(tabId);\r\n }\r\n break;\r\n }\r\n case 'Enter':\r\n case 'Space': {\r\n const tabId = getSpecificParent(\r\n ev.target as HTMLElement,\r\n (current) => !!current.getAttribute('data-id'),\r\n )?.getAttribute('data-id');\r\n\r\n if (tabId) {\r\n this.openTab(tabId);\r\n }\r\n\r\n break;\r\n }\r\n case 'End': {\r\n this.focusTab(this.state.tabs[this.state.tabs.length - 1]);\r\n break;\r\n }\r\n case 'Home': {\r\n this.focusTab(this.state.tabs[0]);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n openNextTab() {\r\n const { tabs } = this.state;\r\n const openIndex = tabs.findIndex(\r\n (current) => current === this.state.openTabs[0],\r\n );\r\n\r\n if (openIndex >= this.tabsList.length) return null;\r\n\r\n const newOpenIndex: number = openIndex + 1;\r\n this.openTab(tabs[newOpenIndex]);\r\n\r\n return tabs[newOpenIndex];\r\n }\r\n\r\n openPreviousTab() {\r\n const { tabs } = this.state;\r\n const openIndex = tabs.findIndex(\r\n (current) => current === this.state.openTabs[0],\r\n );\r\n\r\n if (openIndex <= 0) return null;\r\n\r\n const newOpenIndex: number = openIndex - 1;\r\n this.openTab(tabs[newOpenIndex]);\r\n\r\n return tabs[newOpenIndex];\r\n }\r\n\r\n get state() {\r\n return this.propsStore.getFieldProps<TTabsListState>(this.stateKey);\r\n }\r\n\r\n #setState(state: Partial<TTabsListState>) {\r\n this.propsStore.updateField<TTabsListState>(this.stateKey, state);\r\n }\r\n\r\n /**\r\n * Se utiliza para hacer que el tab aparezca visible en el listado\r\n *\r\n * @param justThis Normalmente las tabs se abren de a una, pero si este parámetro se pasa en false, es posible abrir más de una a la vez.\r\n */\r\n openTab(tabId: TId, justThis = true) {\r\n const tabProps = this.propsStore.getFieldProps(tabId);\r\n if (!tabProps) {\r\n console.warn(`There is no tab with such id: ${tabId}`);\r\n } else {\r\n window.dispatchEvent(\r\n new CustomEvent('tabOpen', {\r\n detail: { tabId, justThis },\r\n }),\r\n );\r\n\r\n if (justThis) {\r\n window.requestAnimationFrame(() => {\r\n window.scrollTo(0, 0);\r\n });\r\n this.state.openTabs.forEach((current) =>\r\n this.propsStore.updateField(current, { isOpen: false }),\r\n );\r\n }\r\n this.propsStore.updateField(tabId, { isOpen: true });\r\n this.#setState({\r\n openTabs: justThis ? [tabId] : [...this.state.openTabs, tabId],\r\n });\r\n this.focusTab(tabId);\r\n this.props.onOpenTab?.(tabProps);\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,CAAA;AAaA,MAAqB,cAGnB,CAAA;AAAA,EAiBA,WAAA,CACE,IACQ,EAAA,KAAA,EACR,WACA,EAAA;AAFQ,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAcV,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAwRA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAxTA,IAAA,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;AAEA,IAAW,aAAA,CAAA,IAAA,EAAA,UAAA,EAAA,OAAA,CAAA,CAAA;AAmBT,IAAK,IAAA,CAAA,UAAA,GAAa,IAAI,UAAsC,CAAA;AAAA,MAC1D,WAAa,EAAA,EAAE,UAAY,EAAA,CAAA,KAAA,EAAQ,IAAI,CAAG,CAAA,EAAA;AAAA,KAC3C,CAAA,CAAA;AACD,IAAA,eAAA,CAAA,IAAA,EAAK,wBAAL,IAAe,CAAA,IAAA,EAAA;AAAA,MACb,UAAY,EAAA,IAAA;AAAA,MACZ,UAAU,EAAC;AAAA,MACX,IAAA,EAAM,aAAa,GAAI,CAAA,CAAC,YAAY,OAAQ,CAAA,EAAE,KAAK,EAAC;AAAA,KACtD,CAAA,CAAA;AACA,IAAI,IAAA,WAAA,IAAe,YAAY,MAAS,GAAA,CAAA;AAAG,MAAA,IAAA,CAAK,QAAS,CAAA,WAAA,CAAY,CAAC,CAAA,CAAE,EAAE,CAAA,CAAA;AAAA,GAC5E;AAAA,EA1BA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,IAAK,CAAA,UAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,UAAa,GAAA;AACf,IAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAAA,GAClC;AAAA,EAEA,IAAI,QAAW,GAAA;AACb,IAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,GAC9B;AAAA;AAAA;AAAA;AAAA,EA8BA,OACE,GAEA,EAAA;AACA,IAAA,IAAI,IAAK,CAAA,UAAA,CAAW,aAAc,CAAA,GAAA,CAAI,EAAE,CAAG,EAAA;AACzC,MAAA,KAAK,IAAI,QAAA,EAAW,CAAA,OAAA,CACjB,OAAQ,CAAA;AAAA,QACP,QAAA,EAAU,QAAS,CAAA,cAAc,CAAE,CAAA,IAAA;AAAA,QACnC,KAAA,EAAO,QAAS,CAAA,eAAe,CAAE,CAAA,IAAA;AAAA,OAClC,CAAA,CACA,IAAK,CAAA,CAAC,YAAiB,KAAA;AACtB,QAAI,IAAA,YAAA;AACF,UAAA,eAAA,CAAA,IAAA,EAAK,8BAAL,IAAkB,CAAA,IAAA,EAAA;AAAA,YAChB,GAAG,GAAA;AAAA,YACH,IAAI,CAAG,EAAA,GAAA,CAAI,EAAE,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,YAC3B,kBAAA,EAAoB,GAAI,CAAA,kBAAA,IAAsB,EAAC;AAAA,WACjD,CAAA,CAAA;AAAA,OACH,CAAA,CAAA;AAAA,KACL;AACE,MAAA,eAAA,CAAA,IAAA,EAAK,8BAAL,IAAkB,CAAA,IAAA,EAAA;AAAA,QAChB,GAAG,GAAA;AAAA,QACH,kBAAA,EAAoB,GAAI,CAAA,kBAAA,IAAsB,EAAC;AAAA,OACjD,CAAA,CAAA;AAAA,GACJ;AAAA,EAEA,MAAM,QAAA,CAAS,oBAAuB,GAAA,KAAA,EAAO,QAAQ,KAAO,EAAA;AAC1D,IAAA,KAAA,IAAS,IAAI,IAAK,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AAClD,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,MAAA,IACE,CAAC,IAAK,CAAA,UAAA,CAAW,aAAc,CAAA,OAAO,EAAE,OACxC,IAAA,oBAAA;AAEA,QAAM,MAAA,IAAA,CAAK,QAAS,CAAA,OAAA,EAAS,KAAK,CAAA,CAAA;AAAA,KACtC;AAAA,GACF;AAAA,EAEA,MAAM,aAAa,QAAe,EAAA;AAChC,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAClD,IAAA,KAAA,IAAS,IAAI,IAAK,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA,CAAA,GAAI,aAAa,CAAK,EAAA,EAAA;AAC3D,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,MAAA,IACE,CAAC,IAAK,CAAA,UAAA,CAAW,cAAc,OAAO,CAAA,CAAE,WACxC,OAAY,KAAA,QAAA;AAEZ,QAAM,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF;AAAA,EAEA,MAAM,YAAY,QAAe,EAAA;AAC/B,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAClD,IAAA,IAAI,cAAc,CAAI,CAAA,EAAA;AACpB,MAAA,KAAA,IAAS,CAAI,GAAA,WAAA,GAAc,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AACzC,QAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,QAAA,IAAI,CAAC,IAAK,CAAA,UAAA,CAAW,aAAc,CAAA,OAAO,EAAE,OAAS,EAAA;AACnD,UAAM,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AAAA,SAC7B;AAAA,OACF;AAAA,KACF;AAAA,GACF;AAAA,EAEA,MAAM,YAAY,QAAe,EAAA;AAC/B,IAAA,KAAA,IAAS,IAAI,IAAK,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA,CAAA,IAAK,GAAG,CAAK,EAAA,EAAA;AAClD,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAC/B,MAAA,IACE,CAAC,IAAK,CAAA,UAAA,CAAW,cAAc,OAAO,CAAA,CAAE,WACxC,OAAY,KAAA,QAAA;AAEZ,QAAM,MAAA,IAAA,CAAK,SAAS,OAAO,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF;AAAA,EAEA,MAAM,QAAA,CAAS,KAAY,EAAA,KAAA,GAAQ,KAAO,EAAA;AACxC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACpD,IAAA,IACE,CAAC,QAAA,CAAS,UACT,IAAA,CAAC,KACA,IAAA,IAAA,CAAK,KAAM,CAAA,cAAA,IACX,CAAE,MAAM,IAAK,CAAA,KAAA,CAAM,eAAe,QAAQ,CAAA;AAE5C,MAAO,OAAA,KAAA,CAAA;AAET,IAAM,MAAA,EAAE,eAAkB,GAAA,QAAA,CAAA;AAC1B,IAAA,IAAI,aAAe,EAAA;AACjB,MAAM,MAAA,QAAA,GAAW,MAAM,aAAc,EAAA,CAAA;AACrC,MAAA,MAAM,UACJ,QAAa,KAAA,KAAA,GAAQ,QAAS,CAAA,cAAc,EAAE,IAAO,GAAA,QAAA,CAAA;AACvD,MAAI,IAAA,OAAA,KAAY,IAAQ,IAAA,CAAC,KAAO,EAAA;AAC9B,QAAA,MAAM,eAAe,MAAM,IAAI,QAAS,EAAA,CAAE,QAAQ,OAAQ,CAAA;AAAA,UACxD,QAAU,EAAA,OAAA;AAAA,UACV,KAAA,EAAO,QAAS,CAAA,cAAc,CAAE,CAAA,IAAA;AAAA,SACjC,CAAA,CAAA;AACD,QAAA,IAAI,CAAC,YAAA;AAAc,UAAO,OAAA,KAAA,CAAA;AAAA,OAC5B;AAAA,KACF;AAEA,IAAA,IAAI,UAAyB,GAAA,IAAA,CAAA;AAC7B,IAAA,IAAI,IAAK,CAAA,KAAA,CAAM,QAAS,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACvC,MAAA,MAAM,WAAW,IAAK,CAAA,QAAA,CAAS,UAAU,CAAC,OAAA,KAAY,YAAY,KAAK,CAAA,CAAA;AACvE,MACE,UAAA,GAAA,QAAA,GAAW,IAAI,IAAK,CAAA,QAAA,CAAS,WAAW,CAAC,CAAA,GAAI,IAAK,CAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AAAA,KAChE;AAEA,IAAA,eAAA,CAAA,IAAA,EAAK,wBAAL,IAAe,CAAA,IAAA,EAAA;AAAA,MACb,IAAA,EAAM,KAAK,KAAM,CAAA,IAAA,CAAK,OAAO,CAAC,OAAA,KAAY,YAAY,KAAK,CAAA;AAAA,KAC7D,CAAA,CAAA;AACA,IAAK,IAAA,CAAA,KAAA,CAAM,aAAa,QAAQ,CAAA,CAAA;AAChC,IAAK,IAAA,CAAA,UAAA,CAAW,YAAY,KAAK,CAAA,CAAA;AAEjC,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,IAAA,CAAK,QAAQ,UAAU,CAAA,CAAA;AACvB,MAAA,IAAA,CAAK,SAAS,UAAU,CAAA,CAAA;AAAA,KAC1B;AAEA,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAAA,EAEA,YAAe,GAAA;AACb,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,eAAe,IAAK,CAAA,SAAA;AAAA,MACxB,CAAC,OAAA,KAAY,OAAY,KAAA,IAAA,CAAK,KAAM,CAAA,UAAA;AAAA,KACtC,CAAA;AAEA,IAAA,IAAI,YAAiB,KAAA,IAAA,CAAK,MAAS,GAAA,CAAA,IAAK,YAAiB,KAAA,CAAA,CAAA;AAAI,MAAO,OAAA,IAAA,CAAA;AAEpE,IAAA,MAAM,gBAAwB,YAAe,GAAA,CAAA,CAAA;AAC7C,IAAK,IAAA,CAAA,QAAA,CAAS,IAAK,CAAA,aAAa,CAAC,CAAA,CAAA;AAEjC,IAAA,OAAO,KAAK,aAAa,CAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,gBAAmB,GAAA;AACjB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,eAAe,IAAK,CAAA,SAAA;AAAA,MACxB,CAAC,OAAA,KAAY,OAAY,KAAA,IAAA,CAAK,KAAM,CAAA,UAAA;AAAA,KACtC,CAAA;AAEA,IAAA,IAAI,YAAgB,IAAA,CAAA;AAAG,MAAO,OAAA,IAAA,CAAA;AAE9B,IAAA,MAAM,gBAAwB,YAAe,GAAA,CAAA,CAAA;AAC7C,IAAK,IAAA,CAAA,QAAA,CAAS,IAAK,CAAA,aAAa,CAAC,CAAA,CAAA;AAEjC,IAAA,OAAO,KAAK,aAAa,CAAA,CAAA;AAAA,GAC3B;AAAA,EAEA,SAAS,KAAY,EAAA;AACnB,IAAA,IAAI,KAAK,KAAM,CAAA,UAAA;AACb,MAAK,IAAA,CAAA,UAAA,CAAW,YAAY,IAAK,CAAA,KAAA,CAAM,YAAY,EAAE,SAAA,EAAW,OAAO,CAAA,CAAA;AACzE,IAAA,eAAA,CAAA,IAAA,EAAK,SAAL,EAAA,WAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAe,EAAE,UAAA,EAAY,KAAM,EAAA,CAAA,CAAA;AACnC,IAAA,IAAA,CAAK,WAAW,WAAY,CAAA,KAAA,EAAO,EAAE,SAAA,EAAW,MAAM,CAAA,CAAA;AACtD,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACpD,IAAA,QAAA,EAAU,UAAU,QAAQ,CAAA,CAAA;AAAA,GAC9B;AAAA,EAEA,WAAW,KAAY,EAAA;AACrB,IAAO,OAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,GAC5C;AAAA,EAEA,cAAc,KAAY,EAAA;AACxB,IAAO,OAAA,QAAA,CAAS,cAAc,CAAa,UAAA,EAAA,IAAA,CAAK,MAAM,EAAE,CAAA,CAAA,EAAI,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,GACrE;AAAA,EAEA,cAAc,EAAyB,EAAA;AACrC,IAAA,IACE,CAAC,OAAA;AAAA,MACC,EAAG,CAAA,MAAA;AAAA,MACH,CAAC,OAAY,KAAA,OAAA,CAAQ,OAAO,CAAY,SAAA,EAAA,IAAA,CAAK,MAAM,EAAE,CAAA,CAAA;AAAA,KACvD;AAEA,MAAA,OAAA;AAEF,IAAA,QAAQ,GAAG,IAAM;AAAA,MACf,KAAK,WAAA,CAAA;AAAA,MACL,KAAK,YAAc,EAAA;AACjB,QAAA,IACG,IAAK,CAAA,KAAA,CAAM,WAAgB,KAAA,YAAA,IAC1B,EAAG,CAAA,IAAA,KAAS,WACb,IAAA,IAAA,CAAK,KAAM,CAAA,WAAA,KAAgB,UAAc,IAAA,EAAA,CAAG,IAAS,KAAA,YAAA;AAEtD,UAAA,OAAA;AAEF,QAAA,IAAA,CAAK,YAAa,EAAA,CAAA;AAElB,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,SAAA,CAAA;AAAA,MACL,KAAK,WAAa,EAAA;AAChB,QAAA,IACG,IAAK,CAAA,KAAA,CAAM,WAAgB,KAAA,YAAA,IAAgB,EAAG,CAAA,IAAA,KAAS,SACvD,IAAA,IAAA,CAAK,KAAM,CAAA,WAAA,KAAgB,UAAc,IAAA,EAAA,CAAG,IAAS,KAAA,WAAA;AAEtD,UAAA,OAAA;AAEF,QAAA,IAAA,CAAK,gBAAiB,EAAA,CAAA;AAEtB,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,QAAU,EAAA;AACb,QAAA,MAAM,KAAQ,GAAA,iBAAA;AAAA,UACZ,EAAG,CAAA,MAAA;AAAA,UACH,CAAC,OAAY,KAAA,CAAC,CAAC,OAAA,CAAQ,aAAa,SAAS,CAAA;AAAA,SAC/C,EAAG,aAAa,SAAS,CAAA,CAAA;AAEzB,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,IAAI,CAAC,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAE,CAAA,UAAA;AAAY,YAAA,OAAA;AAEtD,UAAK,KAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AAAA,SAC1B;AACA,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,OAAA,CAAA;AAAA,MACL,KAAK,OAAS,EAAA;AACZ,QAAA,MAAM,KAAQ,GAAA,iBAAA;AAAA,UACZ,EAAG,CAAA,MAAA;AAAA,UACH,CAAC,OAAY,KAAA,CAAC,CAAC,OAAA,CAAQ,aAAa,SAAS,CAAA;AAAA,SAC/C,EAAG,aAAa,SAAS,CAAA,CAAA;AAEzB,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,IAAA,CAAK,QAAQ,KAAK,CAAA,CAAA;AAAA,SACpB;AAEA,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,KAAO,EAAA;AACV,QAAK,IAAA,CAAA,QAAA,CAAS,KAAK,KAAM,CAAA,IAAA,CAAK,KAAK,KAAM,CAAA,IAAA,CAAK,MAAS,GAAA,CAAC,CAAC,CAAA,CAAA;AACzD,QAAA,MAAA;AAAA,OACF;AAAA,MACA,KAAK,MAAQ,EAAA;AACX,QAAA,IAAA,CAAK,QAAS,CAAA,IAAA,CAAK,KAAM,CAAA,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AAChC,QAAA,MAAA;AAAA,OACF;AAGA,KACF;AAAA,GACF;AAAA,EAEA,WAAc,GAAA;AACZ,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,YAAY,IAAK,CAAA,SAAA;AAAA,MACrB,CAAC,OAAY,KAAA,OAAA,KAAY,IAAK,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,KAChD,CAAA;AAEA,IAAI,IAAA,SAAA,IAAa,KAAK,QAAS,CAAA,MAAA;AAAQ,MAAO,OAAA,IAAA,CAAA;AAE9C,IAAA,MAAM,eAAuB,SAAY,GAAA,CAAA,CAAA;AACzC,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,YAAY,CAAC,CAAA,CAAA;AAE/B,IAAA,OAAO,KAAK,YAAY,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,eAAkB,GAAA;AAChB,IAAM,MAAA,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,KAAA,CAAA;AACtB,IAAA,MAAM,YAAY,IAAK,CAAA,SAAA;AAAA,MACrB,CAAC,OAAY,KAAA,OAAA,KAAY,IAAK,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,KAChD,CAAA;AAEA,IAAA,IAAI,SAAa,IAAA,CAAA;AAAG,MAAO,OAAA,IAAA,CAAA;AAE3B,IAAA,MAAM,eAAuB,SAAY,GAAA,CAAA,CAAA;AACzC,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAK,CAAA,YAAY,CAAC,CAAA,CAAA;AAE/B,IAAA,OAAO,KAAK,YAAY,CAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,IAAK,CAAA,UAAA,CAAW,aAA8B,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,GACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAA,CAAQ,KAAY,EAAA,QAAA,GAAW,IAAM,EAAA;AACnC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACpD,IAAA,IAAI,CAAC,QAAU,EAAA;AACb,MAAQ,OAAA,CAAA,IAAA,CAAK,CAAiC,8BAAA,EAAA,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,KAChD,MAAA;AACL,MAAO,MAAA,CAAA,aAAA;AAAA,QACL,IAAI,YAAY,SAAW,EAAA;AAAA,UACzB,MAAA,EAAQ,EAAE,KAAA,EAAO,QAAS,EAAA;AAAA,SAC3B,CAAA;AAAA,OACH,CAAA;AAEA,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,MAAA,CAAO,sBAAsB,MAAM;AACjC,UAAO,MAAA,CAAA,QAAA,CAAS,GAAG,CAAC,CAAA,CAAA;AAAA,SACrB,CAAA,CAAA;AACD,QAAA,IAAA,CAAK,MAAM,QAAS,CAAA,OAAA;AAAA,UAAQ,CAAC,YAC3B,IAAK,CAAA,UAAA,CAAW,YAAY,OAAS,EAAA,EAAE,MAAQ,EAAA,KAAA,EAAO,CAAA;AAAA,SACxD,CAAA;AAAA,OACF;AACA,MAAA,IAAA,CAAK,WAAW,WAAY,CAAA,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA,CAAA;AACnD,MAAA,eAAA,CAAA,IAAA,EAAK,wBAAL,IAAe,CAAA,IAAA,EAAA;AAAA,QACb,QAAA,EAAU,QAAW,GAAA,CAAC,KAAK,CAAA,GAAI,CAAC,GAAG,IAAA,CAAK,KAAM,CAAA,QAAA,EAAU,KAAK,CAAA;AAAA,OAC/D,CAAA,CAAA;AACA,MAAA,IAAA,CAAK,SAAS,KAAK,CAAA,CAAA;AACnB,MAAK,IAAA,CAAA,KAAA,CAAM,YAAY,QAAQ,CAAA,CAAA;AAAA,KACjC;AAAA,GACF;AACF,CAAA;AA5TE,YAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAA,cAAA,GAAY,SAAC,GAAc,EAAA;AACzB,EAAK,eAAA,CAAA,IAAA,EAAA,SAAA,EAAA,WAAA,CAAA,CAAL,IAAe,CAAA,IAAA,EAAA,EAAE,IAAM,EAAA,CAAC,GAAG,IAAA,CAAK,KAAM,CAAA,IAAA,EAAM,GAAI,CAAA,EAAE,CAAE,EAAA,CAAA,CAAA;AACpD,EAAA,IAAA,CAAK,UAAW,CAAA,WAAA,CAAY,GAAI,CAAA,EAAA,EAAI,GAAG,CAAA,CAAA;AACvC,EAAA,IAAI,IAAI,MAAQ,EAAA;AACd,IAAK,IAAA,CAAA,OAAA,CAAQ,IAAI,EAAE,CAAA,CAAA;AACnB,IAAK,IAAA,CAAA,QAAA,CAAS,IAAI,EAAE,CAAA,CAAA;AAAA,GACtB;AACF,CAAA,CAAA;AAiRA,SAAA,GAAA,IAAA,OAAA,EAAA,CAAA;AAAA,WAAA,GAAS,SAAC,KAAgC,EAAA;AACxC,EAAA,IAAA,CAAK,UAAW,CAAA,WAAA,CAA4B,IAAK,CAAA,QAAA,EAAU,KAAK,CAAA,CAAA;AAClE,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTabsList.js","sources":["../../src/tabs/useTabsList.ts"],"sourcesContent":["import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { TTabsListState } from './types';\nimport { useTabsContext } from './util';\nimport { TId, usePropsSelector } from '@apia/util';\n\nexport default function useTabsList() {\n const { handler } = useTabsContext();\n\n const tabsIds = usePropsSelector<TId[], TTabsListState>('state', {\n propsStore: handler.stateStore,\n selector: (props) => props.tabs,\n comparator: shallowEqual,\n });\n\n const tabs = React.useMemo(() => {\n return handler.getTabById !== undefined && tabsIds\n ? tabsIds.map((current) => handler.getTabById(current))\n : [];\n }, [handler, tabsIds]);\n\n return tabs;\n}\n"],"names":["React"],"mappings":";;;;;AAMA,SAAwB,WAAc,GAAA;AACpC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,cAAe,EAAA,CAAA;AAEnC,EAAM,MAAA,OAAA,GAAU,iBAAwC,OAAS,EAAA;AAAA,IAC/D,YAAY,OAAQ,CAAA,UAAA;AAAA,IACpB,QAAA,EAAU,CAAC,KAAA,KAAU,KAAM,CAAA,IAAA;AAAA,IAC3B,UAAY,EAAA,YAAA;AAAA,GACb,CAAA,CAAA;AAED,EAAM,MAAA,IAAA,GAAOA,cAAM,CAAA,OAAA,CAAQ,MAAM;AAC/B,IAAA,OAAO,OAAQ,CAAA,UAAA,KAAe,KAAa,CAAA,IAAA,OAAA,GACvC,OAAQ,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,OAAQ,CAAA,UAAA,CAAW,OAAO,CAAC,IACpD,EAAC,CAAA;AAAA,GACJ,EAAA,CAAC,OAAS,EAAA,OAAO,CAAC,CAAA,CAAA;AAErB,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"useTabsList.js","sources":["../../src/tabs/useTabsList.ts"],"sourcesContent":["import React from 'react';\r\nimport { shallowEqual } from 'react-redux';\r\nimport { TTabsListState } from './types';\r\nimport { useTabsContext } from './util';\r\nimport { TId, usePropsSelector } from '@apia/util';\r\n\r\nexport default function useTabsList() {\r\n const { handler } = useTabsContext();\r\n\r\n const tabsIds = usePropsSelector<TId[], TTabsListState>('state', {\r\n propsStore: handler.stateStore,\r\n selector: (props) => props.tabs,\r\n comparator: shallowEqual,\r\n });\r\n\r\n const tabs = React.useMemo(() => {\r\n return handler.getTabById !== undefined && tabsIds\r\n ? tabsIds.map((current) => handler.getTabById(current))\r\n : [];\r\n }, [handler, tabsIds]);\r\n\r\n return tabs;\r\n}\r\n"],"names":["React"],"mappings":";;;;;AAMA,SAAwB,WAAc,GAAA;AACpC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,cAAe,EAAA,CAAA;AAEnC,EAAM,MAAA,OAAA,GAAU,iBAAwC,OAAS,EAAA;AAAA,IAC/D,YAAY,OAAQ,CAAA,UAAA;AAAA,IACpB,QAAA,EAAU,CAAC,KAAA,KAAU,KAAM,CAAA,IAAA;AAAA,IAC3B,UAAY,EAAA,YAAA;AAAA,GACb,CAAA,CAAA;AAED,EAAM,MAAA,IAAA,GAAOA,cAAM,CAAA,OAAA,CAAQ,MAAM;AAC/B,IAAA,OAAO,OAAQ,CAAA,UAAA,KAAe,KAAa,CAAA,IAAA,OAAA,GACvC,OAAQ,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,OAAQ,CAAA,UAAA,CAAW,OAAO,CAAC,IACpD,EAAC,CAAA;AAAA,GACJ,EAAA,CAAC,OAAS,EAAA,OAAO,CAAC,CAAA,CAAA;AAErB,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../src/tabs/util.ts"],"sourcesContent":["import React from 'react';\nimport { TTabsContext } from './types';\n\nexport const TabsContext = React.createContext<TTabsContext>(\n {} as TTabsContext,\n);\n\nexport function makeTabsContext<\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\n>() {\n return React.createContext<TTabsContext<AdditionalPropsType>>(\n {} as TTabsContext<AdditionalPropsType>,\n );\n}\n\nexport function defaultOnRequestClose() {\n return new Promise((resolve) => {\n resolve(true);\n });\n}\n\nexport function useTabsContext() {\n return React.useContext(TabsContext);\n}\n"],"names":["React"],"mappings":";;AAGO,MAAM,cAAcA,cAAM,CAAA,aAAA;AAAA,EAC/B,EAAC;AACH,EAAA;AAgBO,SAAS,cAAiB,GAAA;AAC/B,EAAO,OAAAA,cAAA,CAAM,WAAW,WAAW,CAAA,CAAA;AACrC;;;;"}
1
+ {"version":3,"file":"util.js","sources":["../../src/tabs/util.ts"],"sourcesContent":["import React from 'react';\r\nimport { TTabsContext } from './types';\r\n\r\nexport const TabsContext = React.createContext<TTabsContext>(\r\n {} as TTabsContext,\r\n);\r\n\r\nexport function makeTabsContext<\r\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\r\n>() {\r\n return React.createContext<TTabsContext<AdditionalPropsType>>(\r\n {} as TTabsContext<AdditionalPropsType>,\r\n );\r\n}\r\n\r\nexport function defaultOnRequestClose() {\r\n return new Promise((resolve) => {\r\n resolve(true);\r\n });\r\n}\r\n\r\nexport function useTabsContext() {\r\n return React.useContext(TabsContext);\r\n}\r\n"],"names":["React"],"mappings":";;AAGO,MAAM,cAAcA,cAAM,CAAA,aAAA;AAAA,EAC/B,EAAC;AACH,EAAA;AAgBO,SAAS,cAAiB,GAAA;AAC/B,EAAO,OAAAA,cAAA,CAAM,WAAW,WAAW,CAAA,CAAA;AACrC;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apia/components",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "sideEffects": false,
5
5
  "author": "Alexis Leite <alexisleite@live.com>",
6
6
  "main": "dist/index.js",
@@ -13,12 +13,12 @@
13
13
  "libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.tsx,WATCH:true"
14
14
  },
15
15
  "dependencies": {
16
- "@apia/dom-store": "^2.0.5",
17
- "@apia/icons": "^2.0.5",
18
- "@apia/notifications": "^2.0.5",
19
- "@apia/store": "^2.0.5",
20
- "@apia/theme": "^2.0.5",
21
- "@apia/util": "^2.0.6",
16
+ "@apia/dom-store": "^2.0.8",
17
+ "@apia/icons": "^2.0.8",
18
+ "@apia/notifications": "^2.0.8",
19
+ "@apia/store": "^2.0.8",
20
+ "@apia/theme": "^2.0.8",
21
+ "@apia/util": "^2.0.8",
22
22
  "@theme-ui/color": "0.16.2",
23
23
  "@theme-ui/match-media": "0.16.2",
24
24
  "react-animate-height": "^3.2.2",
@@ -47,5 +47,5 @@
47
47
  "access": "public",
48
48
  "registry": "https://registry.npmjs.org/"
49
49
  },
50
- "gitHead": "7c0b758674e77292cf4c5f2a0c2ce3d2d6a25c29"
50
+ "gitHead": "7081b9e9d30efe218f23e835d29737aab3c89824"
51
51
  }