@ozen-ui/kit 0.80.0 → 0.81.0

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 (191) hide show
  1. package/__inner__/cjs/components/Dialog/Dialog.d.ts +1 -0
  2. package/__inner__/cjs/components/DialogNext/components/DialogModal/DialogModal.d.ts +1 -0
  3. package/__inner__/cjs/components/DialogNext/types.d.ts +1 -1
  4. package/__inner__/cjs/components/Drawer/Drawer.d.ts +1 -0
  5. package/__inner__/cjs/components/Modal/Modal.d.ts +1 -0
  6. package/__inner__/cjs/components/Modal/Modal.js +13 -5
  7. package/__inner__/cjs/components/Modal/constants.d.ts +1 -0
  8. package/__inner__/cjs/components/Modal/constants.js +2 -1
  9. package/__inner__/cjs/components/Modal/types.d.ts +2 -0
  10. package/__inner__/cjs/components/OzenProvider/providers/theme/entities/defaultProps.d.ts +2 -1
  11. package/__inner__/cjs/components/StepperVertical/StepperVertical.d.ts +1 -0
  12. package/__inner__/cjs/components/StepperVertical/StepperVertical.js +14 -3
  13. package/__inner__/cjs/components/StepperVertical/StepperVerticalContext.d.ts +8 -0
  14. package/__inner__/cjs/components/StepperVertical/StepperVerticalContext.js +10 -0
  15. package/__inner__/cjs/components/StepperVertical/hooks/index.d.ts +4 -0
  16. package/__inner__/cjs/components/StepperVertical/hooks/index.js +7 -0
  17. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalCreateStep/index.d.ts +2 -0
  18. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalCreateStep/index.js +5 -0
  19. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalCreateStep/types.d.ts +11 -0
  20. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalCreateStep/types.js +2 -0
  21. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalCreateStep/useStepperVerticalCreateStep.d.ts +2 -0
  22. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalCreateStep/useStepperVerticalCreateStep.js +48 -0
  23. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepHelper.d.ts +5 -0
  24. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepHelper.js +92 -0
  25. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsControl/index.d.ts +2 -0
  26. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsControl/index.js +5 -0
  27. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsControl/types.d.ts +8 -0
  28. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsControl/types.js +2 -0
  29. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsControl/useStepperVerticalStepsControl.d.ts +2 -0
  30. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsControl/useStepperVerticalStepsControl.js +26 -0
  31. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsStructure/index.d.ts +2 -0
  32. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsStructure/index.js +5 -0
  33. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsStructure/types.d.ts +15 -0
  34. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsStructure/types.js +2 -0
  35. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsStructure/useStepperVerticalStepsStructure.d.ts +8 -0
  36. package/__inner__/cjs/components/StepperVertical/hooks/useStepperVerticalStepsStructure/useStepperVerticalStepsStructure.js +82 -0
  37. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalIconIndicator/constants.js +1 -0
  38. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStep.css +42 -4
  39. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStep.d.ts +0 -1
  40. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStep.js +46 -16
  41. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepContext.d.ts +3 -0
  42. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepContext.js +11 -0
  43. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepRootContext.d.ts +7 -0
  44. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepRootContext.js +15 -0
  45. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/classNames.d.ts +1 -0
  46. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/classNames.js +5 -0
  47. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/entities/variant.d.ts +1 -1
  48. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/entities/variant.js +1 -0
  49. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/index.d.ts +2 -0
  50. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/index.js +2 -0
  51. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStep/types.d.ts +2 -0
  52. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/StepperVerticalStepSubstepButton.css +10 -0
  53. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/StepperVerticalStepSubstepButton.d.ts +3 -0
  54. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/StepperVerticalStepSubstepButton.js +31 -0
  55. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/constants.d.ts +2 -0
  56. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/constants.js +6 -0
  57. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/content.d.ts +4 -0
  58. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/content.js +2 -0
  59. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/index.d.ts +1 -0
  60. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/index.js +4 -0
  61. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/index.d.ts +3 -0
  62. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/index.js +6 -0
  63. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/types.d.ts +11 -0
  64. package/__inner__/cjs/components/StepperVertical/modules/StepperVerticalStepSubstepButton/types.js +2 -0
  65. package/__inner__/cjs/components/StepperVertical/modules/index.d.ts +1 -0
  66. package/__inner__/cjs/components/StepperVertical/modules/index.js +1 -0
  67. package/__inner__/cjs/hooks/useEventBus/index.d.ts +1 -0
  68. package/__inner__/cjs/hooks/useEventBus/index.js +4 -0
  69. package/__inner__/cjs/hooks/useEventBus/useEventBus.d.ts +3 -0
  70. package/__inner__/cjs/hooks/useEventBus/useEventBus.js +9 -0
  71. package/__inner__/cjs/hooks/useEventBusEvents/index.d.ts +2 -0
  72. package/__inner__/cjs/hooks/useEventBusEvents/index.js +5 -0
  73. package/__inner__/cjs/hooks/useEventBusEvents/types.d.ts +4 -0
  74. package/__inner__/cjs/hooks/useEventBusEvents/types.js +2 -0
  75. package/__inner__/cjs/hooks/useEventBusEvents/useEventBusEvents.d.ts +5 -0
  76. package/__inner__/cjs/hooks/useEventBusEvents/useEventBusEvents.js +40 -0
  77. package/__inner__/cjs/utils/eventBus/EventBus.d.ts +8 -0
  78. package/__inner__/cjs/utils/eventBus/EventBus.js +51 -0
  79. package/__inner__/cjs/utils/eventBus/index.d.ts +2 -0
  80. package/__inner__/cjs/utils/eventBus/index.js +5 -0
  81. package/__inner__/cjs/utils/eventBus/types/EventBusEvents.d.ts +1 -0
  82. package/__inner__/cjs/utils/eventBus/types/EventBusEvents.js +2 -0
  83. package/__inner__/cjs/utils/eventBus/types/EventBusListener.d.ts +5 -0
  84. package/__inner__/cjs/utils/eventBus/types/EventBusListener.js +2 -0
  85. package/__inner__/cjs/utils/eventBus/types/EventBusListenerCallback.d.ts +1 -0
  86. package/__inner__/cjs/utils/eventBus/types/EventBusListenerCallback.js +2 -0
  87. package/__inner__/cjs/utils/eventBus/types/ExtractEventBusEvents.d.ts +3 -0
  88. package/__inner__/cjs/utils/eventBus/types/ExtractEventBusEvents.js +2 -0
  89. package/__inner__/cjs/utils/eventBus/types/index.d.ts +4 -0
  90. package/__inner__/cjs/utils/eventBus/types/index.js +7 -0
  91. package/__inner__/cjs/utils/index.d.ts +1 -0
  92. package/__inner__/cjs/utils/index.js +1 -0
  93. package/__inner__/cjs/utils/test-utils.d.ts +9 -1
  94. package/__inner__/cjs/utils/test-utils.js +19 -2
  95. package/__inner__/esm/components/Dialog/Dialog.d.ts +1 -0
  96. package/__inner__/esm/components/DialogNext/components/DialogModal/DialogModal.d.ts +1 -0
  97. package/__inner__/esm/components/DialogNext/types.d.ts +1 -1
  98. package/__inner__/esm/components/Drawer/Drawer.d.ts +1 -0
  99. package/__inner__/esm/components/Modal/Modal.d.ts +1 -0
  100. package/__inner__/esm/components/Modal/Modal.js +14 -6
  101. package/__inner__/esm/components/Modal/constants.d.ts +1 -0
  102. package/__inner__/esm/components/Modal/constants.js +1 -0
  103. package/__inner__/esm/components/Modal/types.d.ts +2 -0
  104. package/__inner__/esm/components/OzenProvider/providers/theme/entities/defaultProps.d.ts +2 -1
  105. package/__inner__/esm/components/StepperVertical/StepperVertical.d.ts +1 -0
  106. package/__inner__/esm/components/StepperVertical/StepperVertical.js +14 -3
  107. package/__inner__/esm/components/StepperVertical/StepperVerticalContext.d.ts +8 -0
  108. package/__inner__/esm/components/StepperVertical/StepperVerticalContext.js +10 -0
  109. package/__inner__/esm/components/StepperVertical/hooks/index.d.ts +4 -0
  110. package/__inner__/esm/components/StepperVertical/hooks/index.js +4 -0
  111. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalCreateStep/index.d.ts +2 -0
  112. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalCreateStep/index.js +2 -0
  113. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalCreateStep/types.d.ts +11 -0
  114. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalCreateStep/types.js +1 -0
  115. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalCreateStep/useStepperVerticalCreateStep.d.ts +2 -0
  116. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalCreateStep/useStepperVerticalCreateStep.js +44 -0
  117. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepHelper.d.ts +5 -0
  118. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepHelper.js +88 -0
  119. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsControl/index.d.ts +2 -0
  120. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsControl/index.js +2 -0
  121. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsControl/types.d.ts +8 -0
  122. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsControl/types.js +1 -0
  123. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsControl/useStepperVerticalStepsControl.d.ts +2 -0
  124. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsControl/useStepperVerticalStepsControl.js +22 -0
  125. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsStructure/index.d.ts +2 -0
  126. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsStructure/index.js +2 -0
  127. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsStructure/types.d.ts +15 -0
  128. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsStructure/types.js +1 -0
  129. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsStructure/useStepperVerticalStepsStructure.d.ts +8 -0
  130. package/__inner__/esm/components/StepperVertical/hooks/useStepperVerticalStepsStructure/useStepperVerticalStepsStructure.js +78 -0
  131. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalIconIndicator/constants.js +2 -1
  132. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStep.css +42 -4
  133. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStep.d.ts +0 -1
  134. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStep.js +46 -16
  135. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepContext.d.ts +3 -0
  136. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepContext.js +11 -0
  137. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepRootContext.d.ts +7 -0
  138. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/StepperVerticalStepRootContext.js +11 -0
  139. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/classNames.d.ts +1 -0
  140. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/classNames.js +2 -0
  141. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/entities/variant.d.ts +1 -1
  142. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/entities/variant.js +1 -0
  143. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/index.d.ts +2 -0
  144. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/index.js +2 -0
  145. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStep/types.d.ts +2 -0
  146. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/StepperVerticalStepSubstepButton.css +10 -0
  147. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/StepperVerticalStepSubstepButton.d.ts +3 -0
  148. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/StepperVerticalStepSubstepButton.js +28 -0
  149. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/constants.d.ts +2 -0
  150. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/constants.js +3 -0
  151. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/content.d.ts +4 -0
  152. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/content.js +1 -0
  153. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/index.d.ts +1 -0
  154. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/entities/index.js +1 -0
  155. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/index.d.ts +3 -0
  156. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/index.js +3 -0
  157. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/types.d.ts +11 -0
  158. package/__inner__/esm/components/StepperVertical/modules/StepperVerticalStepSubstepButton/types.js +1 -0
  159. package/__inner__/esm/components/StepperVertical/modules/index.d.ts +1 -0
  160. package/__inner__/esm/components/StepperVertical/modules/index.js +1 -0
  161. package/__inner__/esm/hooks/useEventBus/index.d.ts +1 -0
  162. package/__inner__/esm/hooks/useEventBus/index.js +1 -0
  163. package/__inner__/esm/hooks/useEventBus/useEventBus.d.ts +3 -0
  164. package/__inner__/esm/hooks/useEventBus/useEventBus.js +5 -0
  165. package/__inner__/esm/hooks/useEventBusEvents/index.d.ts +2 -0
  166. package/__inner__/esm/hooks/useEventBusEvents/index.js +2 -0
  167. package/__inner__/esm/hooks/useEventBusEvents/types.d.ts +4 -0
  168. package/__inner__/esm/hooks/useEventBusEvents/types.js +1 -0
  169. package/__inner__/esm/hooks/useEventBusEvents/useEventBusEvents.d.ts +5 -0
  170. package/__inner__/esm/hooks/useEventBusEvents/useEventBusEvents.js +36 -0
  171. package/__inner__/esm/utils/eventBus/EventBus.d.ts +8 -0
  172. package/__inner__/esm/utils/eventBus/EventBus.js +48 -0
  173. package/__inner__/esm/utils/eventBus/index.d.ts +2 -0
  174. package/__inner__/esm/utils/eventBus/index.js +2 -0
  175. package/__inner__/esm/utils/eventBus/types/EventBusEvents.d.ts +1 -0
  176. package/__inner__/esm/utils/eventBus/types/EventBusEvents.js +1 -0
  177. package/__inner__/esm/utils/eventBus/types/EventBusListener.d.ts +5 -0
  178. package/__inner__/esm/utils/eventBus/types/EventBusListener.js +1 -0
  179. package/__inner__/esm/utils/eventBus/types/EventBusListenerCallback.d.ts +1 -0
  180. package/__inner__/esm/utils/eventBus/types/EventBusListenerCallback.js +1 -0
  181. package/__inner__/esm/utils/eventBus/types/ExtractEventBusEvents.d.ts +3 -0
  182. package/__inner__/esm/utils/eventBus/types/ExtractEventBusEvents.js +1 -0
  183. package/__inner__/esm/utils/eventBus/types/index.d.ts +4 -0
  184. package/__inner__/esm/utils/eventBus/types/index.js +4 -0
  185. package/__inner__/esm/utils/index.d.ts +1 -0
  186. package/__inner__/esm/utils/index.js +1 -0
  187. package/__inner__/esm/utils/test-utils.d.ts +9 -1
  188. package/__inner__/esm/utils/test-utils.js +16 -1
  189. package/package.json +4 -4
  190. package/useEventBus/package.json +5 -0
  191. package/useEventBusEvents/package.json +5 -0
@@ -0,0 +1,78 @@
1
+ import { useMemo, useEffect } from 'react';
2
+ import { useEventBus } from '../../../../hooks/useEventBus';
3
+ import { useStoredValue } from '../../../../hooks/useStoredValue';
4
+ import { cnCollapse } from '../../../Collapse';
5
+ export var useStepperVerticalStepsStructure = function (ref, stepsControl, children) {
6
+ var eventBus = useEventBus();
7
+ var structure = useStoredValue({
8
+ nodes: [],
9
+ nodeById: {},
10
+ });
11
+ var calculate = function () {
12
+ var element = ref.current;
13
+ if (!element) {
14
+ return { nodes: [], nodeById: {} };
15
+ }
16
+ var nodeById = {};
17
+ var nodes = [];
18
+ var stepsControlSteps = Object.values(stepsControl.steps.current);
19
+ var collectNodeSubsteps = function (node, element) {
20
+ var substeps = Object.values(node.step.substeps);
21
+ if (substeps.length === 0) {
22
+ return;
23
+ }
24
+ var nextElement = element.nextElementSibling;
25
+ if (!nextElement) {
26
+ throw new Error('Ожидается следующий элемент для шага с подшагами');
27
+ }
28
+ var isNextElementCollapse = nextElement.classList.contains(cnCollapse());
29
+ if (!isNextElementCollapse) {
30
+ throw new Error('Ожидается collapse для подшагов');
31
+ }
32
+ var collapseInner = nextElement.firstElementChild;
33
+ if (!collapseInner) {
34
+ throw new Error('Не удалось получить inner для collapse');
35
+ }
36
+ Array.from(collapseInner.childNodes).forEach(function (collapseStep) {
37
+ var relatedSubstep = substeps.find(function (substep) { return substep.ref.current === collapseStep; });
38
+ if (!relatedSubstep) {
39
+ return;
40
+ }
41
+ var newNode = {
42
+ root: node,
43
+ step: relatedSubstep,
44
+ substeps: [],
45
+ };
46
+ nodeById[relatedSubstep.id] = newNode;
47
+ node.substeps.push(newNode);
48
+ if (Object.keys(relatedSubstep.substeps).length > 0) {
49
+ collectNodeSubsteps(newNode, relatedSubstep.ref.current);
50
+ }
51
+ });
52
+ };
53
+ element.childNodes.forEach(function (node) {
54
+ var relatedStep = stepsControlSteps.find(function (step) { return step.ref.current === node; });
55
+ if (!relatedStep) {
56
+ return;
57
+ }
58
+ var newNode = {
59
+ root: null,
60
+ step: relatedStep,
61
+ substeps: [],
62
+ };
63
+ nodeById[relatedStep.id] = newNode;
64
+ nodes.push(newNode);
65
+ collectNodeSubsteps(newNode, newNode.step.ref.current);
66
+ });
67
+ return { nodeById: nodeById, nodes: nodes };
68
+ };
69
+ var recalculate = function () {
70
+ var newStructure = calculate();
71
+ structure.current = newStructure;
72
+ eventBus.publish('update', { structure: structure.current });
73
+ };
74
+ useEffect(function () {
75
+ recalculate();
76
+ }, [children]);
77
+ return useMemo(function () { return ({ value: structure, eventBus: eventBus }); }, []);
78
+ };
@@ -1,5 +1,6 @@
1
- import { CheckCircleFilledIcon, CircleFillIcon, ClockFilledIcon, CrossCircleFilledIcon, MinusCircleFilledIcon, WarningCircleFilledIcon, } from '@ozen-ui/icons';
1
+ import { CheckCircleFilledIcon, CircleFillIcon, ClockFilledIcon, CrossCircleFilledIcon, DotBigIcon, MinusCircleFilledIcon, WarningCircleFilledIcon, } from '@ozen-ui/icons';
2
2
  export var STEPPER_VERTICAL_STEP_DEFAULT_ICON_BY_VARIANT = {
3
+ default: DotBigIcon,
3
4
  refusal: MinusCircleFilledIcon,
4
5
  blocked: CrossCircleFilledIcon,
5
6
  warning: WarningCircleFilledIcon,
@@ -27,6 +27,18 @@
27
27
  padding-block: var(--spacing-xs);
28
28
  }
29
29
 
30
+ .StepperVerticalStep-Substeps .Collapse-Inner {
31
+ display: flex;
32
+ flex-direction: column;
33
+ }
34
+
35
+ .StepperVerticalStep_variant_default {
36
+ --stepper-vertical-indicator-color-non-current: var(--color-background-action-light);
37
+ --stepper-vertical-indicator-color-current: var(--color-background-action);
38
+ --stepper-vertical-indicator-text-color-non-current: var(--color-content-action-dark);
39
+ --stepper-vertical-indicator-text-color-current: var(--color-content-action-on);
40
+ }
41
+
30
42
  .StepperVerticalStep_variant_refusal {
31
43
  --stepper-vertical-indicator-color-non-current: var(--color-background-error-light);
32
44
  --stepper-vertical-indicator-color-current: var(--color-background-error);
@@ -91,22 +103,48 @@
91
103
  white-space: nowrap;
92
104
  }
93
105
 
94
- .StepperVerticalStep:not(:last-child) .StepperVerticalStep-Path {
106
+ .StepperVerticalStep-Path {
95
107
  position: relative;
96
108
  }
97
109
 
98
- .StepperVerticalStep:not(:last-child) .StepperVerticalStep-Path::after {
110
+ .StepperVerticalStep-Path::before {
111
+ content: '';
112
+ box-sizing: border-box;
113
+ display: block;
114
+ block-size: var(--stepper-vertical-indicator-icon-inset-top);
115
+ inline-size: 2px;
116
+ position: absolute;
117
+ inset-block-start: 0;
118
+ inset-inline-start: 50%;
119
+ transform: translate(-50%, 0);
120
+ background-color: var(--color-background-secondary);
121
+ border-radius: 0 0 var(--border-radius-xs) var(--border-radius-xs);
122
+ transition: var(--transition-default);
123
+ transition-property: block-size, clip-path;
124
+ clip-path: inset(100% 0 0 0);
125
+ }
126
+
127
+ .StepperVerticalStep-Path::after {
99
128
  --stepper-vertical-indicator-icon-stroke-gap: 1px;
100
129
  --stepper-vertical-indicator-inset-top: calc(var(--stepper-vertical-indicator-icon-size) + var(--stepper-vertical-indicator-icon-inset-top) + var(--stepper-vertical-indicator-icon-stroke-gap));
101
130
  content: '';
102
131
  box-sizing: border-box;
103
132
  display: block;
104
- block-size: calc(100% - var(--stepper-vertical-indicator-inset-top) + var(--stepper-vertical-indicator-icon-inset-top) - var(--stepper-vertical-indicator-icon-stroke-gap));
133
+ block-size: 0;
105
134
  inline-size: 2px;
106
135
  position: absolute;
107
136
  inset-block-start: var(--stepper-vertical-indicator-inset-top);
108
137
  inset-inline-start: 50%;
109
138
  transform: translate(-50%, 0);
110
139
  background-color: var(--color-background-secondary);
111
- border-radius: var(--border-radius-xs);
140
+ border-radius: var(--border-radius-xs) var(--border-radius-xs) 0 0;
141
+ transition: var(--transition-default) block-size;
112
142
  }
143
+
144
+ .StepperVerticalStep_hasPrevious .StepperVerticalStep-Path::before {
145
+ clip-path: inset(0% 0 0 0);
146
+ }
147
+
148
+ .StepperVerticalStep_hasNext .StepperVerticalStep-Path::after {
149
+ block-size: calc(100% - var(--stepper-vertical-indicator-inset-top) + 1px);
150
+ }
@@ -1,3 +1,2 @@
1
1
  import type { StepperVerticalStepBaseProps } from './types';
2
- export declare const cnStepperVerticalStep: import("@bem-react/classname").ClassNameFormatter;
3
2
  export declare const StepperVerticalStep: import("../../../../utils").PolymorphicComponentWithRef<StepperVerticalStepBaseProps, "div", "as">;
@@ -1,38 +1,68 @@
1
1
  import { __assign, __rest } from "tslib";
2
- import React from 'react';
2
+ import React, { useEffect, useMemo } from 'react';
3
+ import { useMultiRef } from '../../../../hooks/useMultiRef';
3
4
  import { useThemeProps } from '../../../../hooks/useThemeProps';
4
- import { cn, polymorphicComponentWithRef } from '../../../../utils';
5
+ import { isArray, polymorphicComponentWithRef, resolveChildren, } from '../../../../utils';
6
+ import { Collapse } from '../../../Collapse';
5
7
  import { Stack } from '../../../Stack';
6
8
  import { Typography } from '../../../Typography';
9
+ import { useStepperVerticalStepHelper, useStepperVerticalCreateStep, } from '../../hooks';
7
10
  import { useStepperVerticalContext } from '../../StepperVerticalContext';
8
11
  import { StepperVerticalIconIndicator } from '../StepperVerticalIconIndicator';
12
+ import { cnStepperVerticalStep } from './classNames';
9
13
  import { STEPPER_VERTICAL_STEP_DEFAULT_TAG, STEPPER_VERTICAL_STEP_DEFAULT_CURRENT, STEPPER_VERTICAL_STEP_DEFAULT_VARIANT, } from './constants';
10
14
  import { StepperVerticalStepContext } from './StepperVerticalStepContext';
11
- export var cnStepperVerticalStep = cn('StepperVerticalStep');
15
+ import { StepperVerticalStepRootContext, useStepperVerticalStepRootContext, } from './StepperVerticalStepRootContext';
12
16
  export var StepperVerticalStep = polymorphicComponentWithRef(function (inProps, ref) {
13
17
  var props = useThemeProps({
14
18
  name: 'StepperVerticalStep',
15
19
  props: inProps,
16
20
  });
17
- var _a = props.variant, variant = _a === void 0 ? STEPPER_VERTICAL_STEP_DEFAULT_VARIANT : _a, _b = props.current, current = _b === void 0 ? STEPPER_VERTICAL_STEP_DEFAULT_CURRENT : _b, ellipsisProp = props.ellipsis, hint = props.hint, children = props.children, caption = props.caption, action = props.action, _c = props.indicator, indicator = _c === void 0 ? React.createElement(StepperVerticalIconIndicator, null) : _c, className = props.className, _d = props.as, as = _d === void 0 ? STEPPER_VERTICAL_STEP_DEFAULT_TAG : _d, other = __rest(props, ["variant", "current", "ellipsis", "hint", "children", "caption", "action", "indicator", "className", "as"]);
21
+ var _a = props.variant, variant = _a === void 0 ? STEPPER_VERTICAL_STEP_DEFAULT_VARIANT : _a, _b = props.current, current = _b === void 0 ? STEPPER_VERTICAL_STEP_DEFAULT_CURRENT : _b, ellipsisProp = props.ellipsis, hint = props.hint, children = props.children, caption = props.caption, action = props.action, _c = props.indicator, indicator = _c === void 0 ? React.createElement(StepperVerticalIconIndicator, null) : _c, className = props.className, _d = props.as, as = _d === void 0 ? STEPPER_VERTICAL_STEP_DEFAULT_TAG : _d, substeps = props.substeps, other = __rest(props, ["variant", "current", "ellipsis", "hint", "children", "caption", "action", "indicator", "className", "as", "substeps"]);
18
22
  var stepperVerticalContext = useStepperVerticalContext();
23
+ var rootContext = useStepperVerticalStepRootContext();
24
+ var isSubstep = !!rootContext;
25
+ var hasSubsteps = (function () {
26
+ var resolved = resolveChildren(substeps);
27
+ if (isArray(resolved)) {
28
+ return resolved.length > 0;
29
+ }
30
+ return !!resolved;
31
+ })();
19
32
  var ellipsis = (function () {
20
33
  if (ellipsisProp !== undefined) {
21
34
  return ellipsisProp;
22
35
  }
23
36
  return stepperVerticalContext.ellipsis;
24
37
  })();
25
- return (React.createElement(StepperVerticalStepContext.Provider, { value: { variant: variant, current: current } },
26
- React.createElement(Stack, __assign({}, other, { ref: ref, as: as, className: cnStepperVerticalStep({ variant: variant, current: current, ellipsis: ellipsis }, [
27
- className,
28
- ]), gap: "m" }),
29
- React.createElement("div", { className: cnStepperVerticalStep('Path') },
30
- React.createElement("div", { className: cnStepperVerticalStep('Indicator') }, indicator)),
31
- React.createElement(Stack, { direction: "column", className: cnStepperVerticalStep('Description') },
32
- React.createElement(Stack, { className: cnStepperVerticalStep('Info'), direction: "column", gap: "xs" },
33
- children && (React.createElement(Typography, { className: cnStepperVerticalStep('Label'), color: "primary", variant: "text-m_1" }, children)),
34
- caption && (React.createElement(Typography, { className: cnStepperVerticalStep('Caption'), color: "primary", variant: "text-s" }, caption)),
35
- hint && (React.createElement(Typography, { className: cnStepperVerticalStep('Hint'), color: "secondary", variant: "text-2xs" }, hint))),
36
- action && (React.createElement("div", { className: cnStepperVerticalStep('Action') }, action))))));
38
+ var step = useStepperVerticalCreateStep(rootContext === null || rootContext === void 0 ? void 0 : rootContext.root);
39
+ var _e = useStepperVerticalStepHelper(step), hasNext = _e.hasNext, hasPrevious = _e.hasPrevious;
40
+ useEffect(function () {
41
+ if (rootContext && !(rootContext === null || rootContext === void 0 ? void 0 : rootContext.root.isSubStepsOpen)) {
42
+ step.setIsSubStepsOpen(false);
43
+ }
44
+ }, [rootContext === null || rootContext === void 0 ? void 0 : rootContext.root.isSubStepsOpen]);
45
+ var memoizedContext = useMemo(function () { return ({ variant: variant, current: current, hasSubsteps: hasSubsteps, step: step }); }, [variant, current, hasSubsteps, step, step.isSubStepsOpen, step.root]);
46
+ var memoizedRootContext = useMemo(function () { return ({ root: step }); }, [step, step.isSubStepsOpen, step.root]);
47
+ return (React.createElement(React.Fragment, null,
48
+ React.createElement(StepperVerticalStepContext.Provider, { value: memoizedContext },
49
+ React.createElement(Stack, __assign({}, other, { ref: useMultiRef([step.ref, ref]), as: as, className: cnStepperVerticalStep({
50
+ variant: variant,
51
+ current: current,
52
+ ellipsis: ellipsis,
53
+ substep: isSubstep,
54
+ hasNext: hasNext,
55
+ hasPrevious: hasPrevious,
56
+ }, [className]), gap: "m" }),
57
+ React.createElement("div", { className: cnStepperVerticalStep('Path') },
58
+ React.createElement("div", { className: cnStepperVerticalStep('Indicator') }, indicator)),
59
+ React.createElement(Stack, { direction: "column", className: cnStepperVerticalStep('Description') },
60
+ React.createElement(Stack, { className: cnStepperVerticalStep('Info'), direction: "column", gap: "xs" },
61
+ children && (React.createElement(Typography, { className: cnStepperVerticalStep('Label'), color: "primary", variant: "text-m_1" }, children)),
62
+ caption && (React.createElement(Typography, { className: cnStepperVerticalStep('Caption'), color: "primary", variant: "text-s" }, caption)),
63
+ hint && (React.createElement(Typography, { className: cnStepperVerticalStep('Hint'), color: "secondary", variant: "text-2xs" }, hint))),
64
+ action && (React.createElement("div", { className: cnStepperVerticalStep('Action') }, action))))),
65
+ hasSubsteps && (React.createElement(StepperVerticalStepRootContext.Provider, { value: memoizedRootContext },
66
+ React.createElement(Collapse, { className: cnStepperVerticalStep('Substeps'), expanded: step.isSubStepsOpen }, substeps)))));
37
67
  });
38
68
  StepperVerticalStep.displayName = 'StepperVerticalStep';
@@ -1,7 +1,10 @@
1
+ import type { StepperVerticalStepControl } from '../../hooks';
1
2
  import type { StepperVerticalStepVariant } from './entities';
2
3
  export type StepperVerticalStepContextValue = {
3
4
  variant: StepperVerticalStepVariant;
4
5
  current: boolean;
6
+ hasSubsteps: boolean;
7
+ step: StepperVerticalStepControl;
5
8
  };
6
9
  export declare const StepperVerticalStepContextDefaultValue: StepperVerticalStepContextValue;
7
10
  export declare const StepperVerticalStepContext: import("react").Context<StepperVerticalStepContextValue>;
@@ -4,6 +4,17 @@ import { STEPPER_VERTICAL_STEP_DEFAULT_VARIANT } from './constants';
4
4
  export var StepperVerticalStepContextDefaultValue = {
5
5
  variant: STEPPER_VERTICAL_STEP_DEFAULT_VARIANT,
6
6
  current: false,
7
+ hasSubsteps: false,
8
+ step: {
9
+ id: '',
10
+ setIsSubStepsOpen: function () { },
11
+ ref: { current: null },
12
+ isSubStepsOpen: false,
13
+ root: null,
14
+ substeps: {},
15
+ unregisterSubstep: function () { },
16
+ registerSubstep: function () { },
17
+ },
7
18
  };
8
19
  export var StepperVerticalStepContext = createContext(StepperVerticalStepContextDefaultValue);
9
20
  export var useStepperVerticalStepContext = function () {
@@ -0,0 +1,7 @@
1
+ import type { StepperVerticalStepControl } from '../../hooks';
2
+ export type StepperVerticalStepRootContextValue = {
3
+ root: StepperVerticalStepControl;
4
+ };
5
+ export declare const StepperVerticalStepRootContextDefaultValue: StepperVerticalStepRootContextValue | null;
6
+ export declare const StepperVerticalStepRootContext: import("react").Context<StepperVerticalStepRootContextValue | null>;
7
+ export declare const useStepperVerticalStepRootContext: () => StepperVerticalStepRootContextValue | null;
@@ -0,0 +1,11 @@
1
+ import { useContext, createContext } from 'react';
2
+ import { isDev } from '../../../../constants/environment';
3
+ export var StepperVerticalStepRootContextDefaultValue = null;
4
+ export var StepperVerticalStepRootContext = createContext(StepperVerticalStepRootContextDefaultValue);
5
+ export var useStepperVerticalStepRootContext = function () {
6
+ return useContext(StepperVerticalStepRootContext);
7
+ };
8
+ // Именованный провайдер
9
+ if (isDev) {
10
+ StepperVerticalStepRootContext.displayName = 'StepperVerticalStepRootContext';
11
+ }
@@ -0,0 +1 @@
1
+ export declare const cnStepperVerticalStep: import("@bem-react/classname").ClassNameFormatter;
@@ -0,0 +1,2 @@
1
+ import { cn } from '../../../../utils';
2
+ export var cnStepperVerticalStep = cn('StepperVerticalStep');
@@ -1,2 +1,2 @@
1
- export declare const stepperVerticalStepVariant: readonly ["refusal", "blocked", "warning", "awaiting", "inProcessing", "success", "action"];
1
+ export declare const stepperVerticalStepVariant: readonly ["default", "refusal", "blocked", "warning", "awaiting", "inProcessing", "success", "action"];
2
2
  export type StepperVerticalStepVariant = (typeof stepperVerticalStepVariant)[number];
@@ -1,4 +1,5 @@
1
1
  export var stepperVerticalStepVariant = [
2
+ 'default',
2
3
  'refusal',
3
4
  'blocked',
4
5
  'warning',
@@ -1,5 +1,7 @@
1
1
  export * from './entities';
2
+ export * from './classNames';
2
3
  export * from './constants';
3
4
  export * from './StepperVerticalStep';
4
5
  export * from './StepperVerticalStepContext';
6
+ export * from './StepperVerticalStepRootContext';
5
7
  export * from './types';
@@ -1,5 +1,7 @@
1
1
  export * from './entities';
2
+ export * from './classNames';
2
3
  export * from './constants';
3
4
  export * from './StepperVerticalStep';
4
5
  export * from './StepperVerticalStepContext';
6
+ export * from './StepperVerticalStepRootContext';
5
7
  export * from './types';
@@ -19,6 +19,8 @@ export type StepperVerticalStepBaseProps = {
19
19
  current?: boolean;
20
20
  /** Если `true`, обрезает текст и добавляет многоточие */
21
21
  ellipsis?: boolean;
22
+ /** Подшаги */
23
+ substeps?: ReactNode;
22
24
  /** Идентификатор компонента для тестов */
23
25
  'data-testid'?: string;
24
26
  };
@@ -0,0 +1,10 @@
1
+ .StepperVerticalStepSubstepButton_open {
2
+ --stepper-vertical-step-substep-button-icon-rotate: 0deg;
3
+ }
4
+ .StepperVerticalStepSubstepButton_closed {
5
+ --stepper-vertical-step-substep-button-icon-rotate: 180deg;
6
+ }
7
+ .StepperVerticalStepSubstepButton-Icon {
8
+ transform: rotate(var(--stepper-vertical-step-substep-button-icon-rotate));
9
+ transition: var(--transition-default) transform;
10
+ }
@@ -0,0 +1,3 @@
1
+ import type { StepperVerticalStepSubstepButtonBaseProps } from './types';
2
+ export declare const cnStepperVerticalStepSubstepButton: import("@bem-react/classname").ClassNameFormatter;
3
+ export declare const StepperVerticalStepSubstepButton: import("../../../../utils").PolymorphicComponentWithRef<StepperVerticalStepSubstepButtonBaseProps, "button", "as">;
@@ -0,0 +1,28 @@
1
+ import { __assign, __rest } from "tslib";
2
+ import React from 'react';
3
+ import { ChevronUpIcon } from '@ozen-ui/icons';
4
+ import { useThemeProps } from '../../../../hooks/useThemeProps';
5
+ import { cn, polymorphicComponentWithRef, renderContent, } from '../../../../utils';
6
+ import { useStepperVerticalStepContext } from '../StepperVerticalStep';
7
+ import { StepperVerticalStepButton } from '../StepperVerticalStepButton';
8
+ import { STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_COLOR, STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_TAG, } from './constants';
9
+ export var cnStepperVerticalStepSubstepButton = cn('StepperVerticalStepSubstepButton');
10
+ export var StepperVerticalStepSubstepButton = polymorphicComponentWithRef(function (inProps, ref) {
11
+ var props = useThemeProps({
12
+ name: 'StepperVerticalStepSubstepButton',
13
+ props: inProps,
14
+ });
15
+ var _a = props.color, color = _a === void 0 ? STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_COLOR : _a, className = props.className, _b = props.as, as = _b === void 0 ? STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_TAG : _b, onClick = props.onClick, text = props.text, other = __rest(props, ["color", "className", "as", "onClick", "text"]);
16
+ var _c = useStepperVerticalStepContext(), hasSubsteps = _c.hasSubsteps, step = _c.step;
17
+ if (!hasSubsteps) {
18
+ return null;
19
+ }
20
+ return (React.createElement(StepperVerticalStepButton, __assign({}, other, { as: as, ref: ref, color: color, iconRight: React.createElement(ChevronUpIcon, { className: cnStepperVerticalStepSubstepButton('Icon') }), className: cnStepperVerticalStepSubstepButton({ open: step.isSubStepsOpen, closed: !step.isSubStepsOpen }, [className]), onClick: function (event) {
21
+ step.setIsSubStepsOpen(function (prevState) { return !prevState; });
22
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
23
+ } }), renderContent({
24
+ content: text,
25
+ props: { isOpen: step.isSubStepsOpen },
26
+ })));
27
+ });
28
+ StepperVerticalStepSubstepButton.displayName = 'StepperVerticalStepButton';
@@ -0,0 +1,2 @@
1
+ export declare const STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_COLOR = "primary";
2
+ export declare const STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_TAG = "button";
@@ -0,0 +1,3 @@
1
+ import { STEPPER_VERTICAL_STEP_BUTTON_DEFAULT_COLOR, STEPPER_VERTICAL_STEP_BUTTON_DEFAULT_TAG, } from '../StepperVerticalStepButton';
2
+ export var STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_COLOR = STEPPER_VERTICAL_STEP_BUTTON_DEFAULT_COLOR;
3
+ export var STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_TAG = STEPPER_VERTICAL_STEP_BUTTON_DEFAULT_TAG;
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from 'react';
2
+ export type StepperVerticalStepSubstepButtonContent = (props: {
3
+ isOpen: boolean;
4
+ }) => ReactNode;
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './StepperVerticalStepSubstepButton';
3
+ export * from './types';
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './StepperVerticalStepSubstepButton';
3
+ export * from './types';
@@ -0,0 +1,11 @@
1
+ import type { ElementType } from 'react';
2
+ import type { PolymorphicComponentPropsWithRef } from '../../../../utils';
3
+ import type { StepperVerticalStepButtonBaseProps, StepperVerticalStepButtonRef } from '../StepperVerticalStepButton';
4
+ import type { STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_TAG } from './constants';
5
+ import type { StepperVerticalStepSubstepButtonContent } from './entities';
6
+ export type StepperVerticalStepSubstepButtonRef<As extends ElementType = typeof STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_TAG> = StepperVerticalStepButtonRef<As>;
7
+ export type StepperVerticalStepSubstepButtonBaseProps = {
8
+ /** Текст кнопки */
9
+ text: StepperVerticalStepSubstepButtonContent;
10
+ } & Omit<StepperVerticalStepButtonBaseProps, 'iconRight' | 'children'>;
11
+ export type StepperVerticalStepSubstepButtonProps<As extends ElementType = typeof STEPPER_VERTICAL_STEP_SUBSTEP_BUTTON_DEFAULT_TAG> = PolymorphicComponentPropsWithRef<StepperVerticalStepSubstepButtonBaseProps, As>;
@@ -2,3 +2,4 @@ export * from './StepperVerticalIconIndicator';
2
2
  export * from './StepperVerticalIndicator';
3
3
  export * from './StepperVerticalStep';
4
4
  export * from './StepperVerticalStepButton';
5
+ export * from './StepperVerticalStepSubstepButton';
@@ -2,3 +2,4 @@ export * from './StepperVerticalIconIndicator';
2
2
  export * from './StepperVerticalIndicator';
3
3
  export * from './StepperVerticalStep';
4
4
  export * from './StepperVerticalStepButton';
5
+ export * from './StepperVerticalStepSubstepButton';
@@ -0,0 +1 @@
1
+ export * from './useEventBus';
@@ -0,0 +1 @@
1
+ export * from './useEventBus';
@@ -0,0 +1,3 @@
1
+ import type { EventBusEvents } from '../../utils';
2
+ import { EventBus } from '../../utils';
3
+ export declare const useEventBus: <Events extends EventBusEvents>() => EventBus<Events>;
@@ -0,0 +1,5 @@
1
+ import { EventBus } from '../../utils';
2
+ import { useStoredValue } from '../useStoredValue';
3
+ export var useEventBus = function () {
4
+ return useStoredValue(function () { return new EventBus(); }).current;
5
+ };
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './useEventBusEvents';
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './useEventBusEvents';
@@ -0,0 +1,4 @@
1
+ import type { EventBusEvents } from '../../utils';
2
+ export type UseEventBusEventsSubscribes<Events extends EventBusEvents> = {
3
+ [key in keyof Events]?: (data: Events[key]) => void;
4
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { EventBus, EventBusEvents, ExtractEventBusEvents } from '../../utils';
2
+ import type { UseEventBusEventsSubscribes } from './types';
3
+ export declare const useEventBusEvents: <TEventBus extends EventBus<EventBusEvents>>(eventBus: TEventBus, subscribes: UseEventBusEventsSubscribes<ExtractEventBusEvents<TEventBus>>, params?: {
4
+ layoutEffect?: boolean;
5
+ }) => void;
@@ -0,0 +1,36 @@
1
+ import { __read } from "tslib";
2
+ import { useEffect } from 'react';
3
+ import { logger } from '@ozen-ui/logger';
4
+ import { useDevEffect } from '../useDevEffect';
5
+ import { useIsomorphicEffect } from '../useIsomorphicEffect';
6
+ import { useStoredValue } from '../useStoredValue';
7
+ export var useEventBusEvents = function (eventBus, subscribes, params) {
8
+ var _a = (params !== null && params !== void 0 ? params : {}).layoutEffect, layoutEffect = _a === void 0 ? false : _a;
9
+ var savedLayoutEffect = useStoredValue(layoutEffect);
10
+ useDevEffect(function () {
11
+ if (savedLayoutEffect.current !== layoutEffect) {
12
+ logger.warn('Свойство "layoutEffect" не может отличаться между рендерами.');
13
+ }
14
+ }, [layoutEffect]);
15
+ var clearSubscribes = useStoredValue(function () { return function () { }; });
16
+ var useNeededEffect = savedLayoutEffect.current
17
+ ? useIsomorphicEffect
18
+ : useEffect;
19
+ useNeededEffect(function () {
20
+ clearSubscribes.current();
21
+ var clearSubscribesCallbacks = [];
22
+ Object.entries(subscribes).forEach(function (_a) {
23
+ var _b = __read(_a, 2), event = _b[0], callback = _b[1];
24
+ var unsubscribe = eventBus.subscribe(event, callback);
25
+ clearSubscribesCallbacks.push(unsubscribe);
26
+ });
27
+ clearSubscribes.current = function () {
28
+ clearSubscribesCallbacks.forEach(function (unsubscribe) {
29
+ unsubscribe();
30
+ });
31
+ };
32
+ return function () {
33
+ clearSubscribes.current();
34
+ };
35
+ }, [eventBus, subscribes]);
36
+ };
@@ -0,0 +1,8 @@
1
+ import type { EventBusEvents, EventBusListenerCallback } from './types';
2
+ export declare class EventBus<Events extends EventBusEvents> {
3
+ private listenersByEvent;
4
+ subscribe<Event extends keyof Events>(event: Event, callback: EventBusListenerCallback<Events[Event]>, isClearAfterCall?: boolean): () => void;
5
+ publish<Event extends keyof Events>(event: Event, payload: Events[Event]): void;
6
+ clear(event: keyof Events): void;
7
+ private unsubscribe;
8
+ }
@@ -0,0 +1,48 @@
1
+ var EventBus = /** @class */ (function () {
2
+ function EventBus() {
3
+ this.listenersByEvent = {};
4
+ }
5
+ EventBus.prototype.subscribe = function (event, callback, isClearAfterCall) {
6
+ var _this = this;
7
+ if (isClearAfterCall === void 0) { isClearAfterCall = false; }
8
+ var listener = {
9
+ callback: callback,
10
+ isClearAfterCall: isClearAfterCall,
11
+ };
12
+ if (!this.listenersByEvent[event]) {
13
+ this.listenersByEvent[event] = new Set();
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
16
+ this.listenersByEvent[event].add(listener);
17
+ return function () {
18
+ _this.unsubscribe(event, listener);
19
+ };
20
+ };
21
+ EventBus.prototype.publish = function (event, payload) {
22
+ var _this = this;
23
+ var listeners = this.listenersByEvent[event];
24
+ if (!listeners) {
25
+ return;
26
+ }
27
+ listeners.forEach(function (listener) {
28
+ var callback = listener.callback, isClearAfterCall = listener.isClearAfterCall;
29
+ callback(payload);
30
+ if (isClearAfterCall) {
31
+ _this.unsubscribe(event, listener);
32
+ }
33
+ });
34
+ };
35
+ EventBus.prototype.clear = function (event) {
36
+ var _a;
37
+ (_a = this.listenersByEvent[event]) === null || _a === void 0 ? void 0 : _a.clear();
38
+ };
39
+ EventBus.prototype.unsubscribe = function (event, listener) {
40
+ var listeners = this.listenersByEvent[event];
41
+ if (!listeners) {
42
+ return;
43
+ }
44
+ listeners.delete(listener);
45
+ };
46
+ return EventBus;
47
+ }());
48
+ export { EventBus };
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './EventBus';
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './EventBus';
@@ -0,0 +1 @@
1
+ export type EventBusEvents = Record<string, any>;