@startlibs/core 1.1.0 → 1.2.0-rc.2

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 (119) hide show
  1. package/lib/SlotFill.mjs +4 -4
  2. package/lib/SlotFill.mjs.map +1 -1
  3. package/lib/StartlibsProvider.mjs.map +1 -1
  4. package/lib/hocs/WithLazyResource.mjs +4 -4
  5. package/lib/hocs/WithLazyResource.mjs.map +1 -1
  6. package/lib/hocs/WithRef.mjs.map +1 -1
  7. package/lib/hocs/consumes.mjs +1 -1
  8. package/lib/hocs/consumes.mjs.map +1 -1
  9. package/lib/hocs/withDialogError.mjs +1 -1
  10. package/lib/hocs/withDialogError.mjs.map +1 -1
  11. package/lib/hocs/withGroupEvent.mjs +1 -1
  12. package/lib/hocs/withGroupEvent.mjs.map +1 -1
  13. package/lib/hooks/WithConstant.mjs +2 -2
  14. package/lib/hooks/WithConstant.mjs.map +1 -1
  15. package/lib/hooks/WithEffect.mjs.map +1 -1
  16. package/lib/hooks/useAsyncEffect.mjs.map +1 -1
  17. package/lib/hooks/useCallState.mjs +1 -1
  18. package/lib/hooks/useCallState.mjs.map +1 -1
  19. package/lib/hooks/useCallbackStable.mjs.map +1 -1
  20. package/lib/hooks/useConstant.mjs.map +1 -1
  21. package/lib/hooks/useConsumerCatalog.mjs.map +1 -1
  22. package/lib/hooks/useEnsureRef.mjs.map +1 -1
  23. package/lib/hooks/useForceUpdate.mjs +7 -7
  24. package/lib/hooks/useForceUpdate.mjs.map +1 -1
  25. package/lib/hooks/useIsUnmounted.mjs.map +1 -1
  26. package/lib/hooks/usePopupToggle.mjs +1 -1
  27. package/lib/hooks/usePopupToggle.mjs.map +1 -1
  28. package/lib/hooks/usePrevious.mjs.map +1 -1
  29. package/lib/hooks/useRecycleFocus.mjs.map +1 -1
  30. package/lib/hooks/useRefMemo.mjs.map +1 -1
  31. package/lib/hooks/useRefState.mjs +1 -1
  32. package/lib/hooks/useRefState.mjs.map +1 -1
  33. package/lib/hooks/useSignal.mjs +15 -15
  34. package/lib/hooks/useSignal.mjs.map +1 -1
  35. package/lib/hooks/useTitle.mjs +2 -2
  36. package/lib/hooks/useTitle.mjs.map +1 -1
  37. package/lib/hooks/useToggle.mjs +1 -1
  38. package/lib/hooks/useToggle.mjs.map +1 -1
  39. package/lib/hooks/useUpdateEffect.mjs.map +1 -1
  40. package/lib/hooks/useUpdateOnResize.mjs.map +1 -1
  41. package/lib/hooks/useWithTransition.mjs +1 -1
  42. package/lib/hooks/useWithTransition.mjs.map +1 -1
  43. package/lib/hooks/willUseLayers.mjs +2 -2
  44. package/lib/hooks/willUseLayers.mjs.map +1 -1
  45. package/lib/hooks/willUseSharedCallback.mjs.map +1 -1
  46. package/lib/hooks/willUseSharedState.mjs +3 -3
  47. package/lib/hooks/willUseSharedState.mjs.map +1 -1
  48. package/lib/hooks/willUseSpreadState.mjs +4 -4
  49. package/lib/hooks/willUseSpreadState.mjs.map +1 -1
  50. package/lib/index.cjs +164 -164
  51. package/lib/index.cjs.map +1 -1
  52. package/lib/index.mjs +10 -10
  53. package/lib-yak/SlotFill.mjs +230 -0
  54. package/lib-yak/SlotFill.mjs.map +1 -0
  55. package/lib-yak/StartlibsProvider.mjs +62 -0
  56. package/lib-yak/StartlibsProvider.mjs.map +1 -0
  57. package/lib-yak/hocs/WithLazyResource.mjs +74 -0
  58. package/lib-yak/hocs/WithLazyResource.mjs.map +1 -0
  59. package/lib-yak/hocs/WithRef.mjs +20 -0
  60. package/lib-yak/hocs/WithRef.mjs.map +1 -0
  61. package/lib-yak/hocs/consumes.mjs +22 -0
  62. package/lib-yak/hocs/consumes.mjs.map +1 -0
  63. package/lib-yak/hocs/withDialogError.mjs +22 -0
  64. package/lib-yak/hocs/withDialogError.mjs.map +1 -0
  65. package/lib-yak/hocs/withGroupEvent.mjs +45 -0
  66. package/lib-yak/hocs/withGroupEvent.mjs.map +1 -0
  67. package/lib-yak/hooks/WithConstant.mjs +13 -0
  68. package/lib-yak/hooks/WithConstant.mjs.map +1 -0
  69. package/lib-yak/hooks/WithEffect.mjs +12 -0
  70. package/lib-yak/hooks/WithEffect.mjs.map +1 -0
  71. package/lib-yak/hooks/useAsyncEffect.mjs +14 -0
  72. package/lib-yak/hooks/useAsyncEffect.mjs.map +1 -0
  73. package/lib-yak/hooks/useCallState.mjs +21 -0
  74. package/lib-yak/hooks/useCallState.mjs.map +1 -0
  75. package/lib-yak/hooks/useCallbackStable.mjs +17 -0
  76. package/lib-yak/hooks/useCallbackStable.mjs.map +1 -0
  77. package/lib-yak/hooks/useConstant.mjs +21 -0
  78. package/lib-yak/hooks/useConstant.mjs.map +1 -0
  79. package/lib-yak/hooks/useConsumerCatalog.mjs +25 -0
  80. package/lib-yak/hooks/useConsumerCatalog.mjs.map +1 -0
  81. package/lib-yak/hooks/useEnsureRef.mjs +9 -0
  82. package/lib-yak/hooks/useEnsureRef.mjs.map +1 -0
  83. package/lib-yak/hooks/useForceUpdate.mjs +28 -0
  84. package/lib-yak/hooks/useForceUpdate.mjs.map +1 -0
  85. package/lib-yak/hooks/useIsUnmounted.mjs +15 -0
  86. package/lib-yak/hooks/useIsUnmounted.mjs.map +1 -0
  87. package/lib-yak/hooks/usePopupToggle.mjs +33 -0
  88. package/lib-yak/hooks/usePopupToggle.mjs.map +1 -0
  89. package/lib-yak/hooks/usePrevious.mjs +28 -0
  90. package/lib-yak/hooks/usePrevious.mjs.map +1 -0
  91. package/lib-yak/hooks/useRecycleFocus.mjs +34 -0
  92. package/lib-yak/hooks/useRecycleFocus.mjs.map +1 -0
  93. package/lib-yak/hooks/useRefMemo.mjs +13 -0
  94. package/lib-yak/hooks/useRefMemo.mjs.map +1 -0
  95. package/lib-yak/hooks/useRefState.mjs +29 -0
  96. package/lib-yak/hooks/useRefState.mjs.map +1 -0
  97. package/lib-yak/hooks/useSignal.mjs +271 -0
  98. package/lib-yak/hooks/useSignal.mjs.map +1 -0
  99. package/lib-yak/hooks/useTitle.mjs +17 -0
  100. package/lib-yak/hooks/useTitle.mjs.map +1 -0
  101. package/lib-yak/hooks/useToggle.mjs +152 -0
  102. package/lib-yak/hooks/useToggle.mjs.map +1 -0
  103. package/lib-yak/hooks/useUpdateEffect.mjs +15 -0
  104. package/lib-yak/hooks/useUpdateEffect.mjs.map +1 -0
  105. package/lib-yak/hooks/useUpdateOnResize.mjs +18 -0
  106. package/lib-yak/hooks/useUpdateOnResize.mjs.map +1 -0
  107. package/lib-yak/hooks/useWithTransition.mjs +18 -0
  108. package/lib-yak/hooks/useWithTransition.mjs.map +1 -0
  109. package/lib-yak/hooks/willUseLayers.mjs +55 -0
  110. package/lib-yak/hooks/willUseLayers.mjs.map +1 -0
  111. package/lib-yak/hooks/willUseSharedCallback.mjs +70 -0
  112. package/lib-yak/hooks/willUseSharedCallback.mjs.map +1 -0
  113. package/lib-yak/hooks/willUseSharedState.mjs +41 -0
  114. package/lib-yak/hooks/willUseSharedState.mjs.map +1 -0
  115. package/lib-yak/hooks/willUseSpreadState.mjs +119 -0
  116. package/lib-yak/hooks/willUseSpreadState.mjs.map +1 -0
  117. package/lib-yak/index.mjs +33 -0
  118. package/lib-yak/index.mjs.map +1 -0
  119. package/package.json +11 -2
@@ -0,0 +1,230 @@
1
+ import React, { useRef, useContext, useLayoutEffect, useMemo, useEffect } from 'react';
2
+ import { callIfFunction, _s } from '@startlibs/utils';
3
+ import _objectDestructuringEmpty from '@babel/runtime/helpers/objectDestructuringEmpty';
4
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
5
+ import _extends from '@babel/runtime/helpers/extends';
6
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
7
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
8
+ import _unset from 'lodash/fp/unset';
9
+ import _uniqueId from 'lodash/fp/uniqueId';
10
+ import _differenceBy from 'lodash/fp/differenceBy';
11
+ import _set from 'lodash/fp/set';
12
+ import _findIndex from 'lodash/fp/findIndex';
13
+ import _isFinite from 'lodash/fp/isFinite';
14
+ import _max from 'lodash/fp/max';
15
+ import _flatMap from 'lodash/fp/flatMap';
16
+ import _without from 'lodash/fp/without';
17
+ import _union from 'lodash/fp/union';
18
+ import _update from 'lodash/fp/update';
19
+ import _flow from 'lodash/fp/flow';
20
+ import { yakDomTag } from '@startlibs/utils/yakDomTag';
21
+ import ReactDOM from 'react-dom';
22
+ import { styled } from '@yak/react';
23
+ import { useConstant } from './hooks/useConstant.mjs';
24
+ import { willUseSharedState } from './hooks/willUseSharedState.mjs';
25
+
26
+ const _excluded = ["name", "children"];
27
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
29
+ const SlotContext = /*#__PURE__*/React.createContext(new Map());
30
+ const _willUseSharedState = willUseSharedState(),
31
+ _willUseSharedState2 = _slicedToArray(_willUseSharedState, 2),
32
+ useFillHookState = _willUseSharedState2[0],
33
+ useFillHookStateRef = _willUseSharedState2[1];
34
+ const _willUseSharedState3 = willUseSharedState(),
35
+ _willUseSharedState4 = _slicedToArray(_willUseSharedState3, 2),
36
+ useHiddenFillHookState = _willUseSharedState4[0],
37
+ useHiddenFillHookStateRef = _willUseSharedState4[1];
38
+ const DEFAULT_CONTEXT = new Map();
39
+ const SlotProvider = _ref => {
40
+ let children = _ref.children;
41
+ return /*#__PURE__*/React.createElement(SlotContext.Provider, {
42
+ value: DEFAULT_CONTEXT
43
+ }, children, /*#__PURE__*/React.createElement(React.Suspense, {
44
+ fallback: null
45
+ }, /*#__PURE__*/React.createElement(FillHooks, null)), /*#__PURE__*/React.createElement(HiddenFillHooks, null));
46
+ };
47
+ const Slot = _ref2 => {
48
+ let name = _ref2.name,
49
+ children = _ref2.children,
50
+ rest = _objectWithoutProperties(_ref2, _excluded);
51
+ const ref = useRef();
52
+ const slotInfo = useConstant({
53
+ ref
54
+ });
55
+ const slots = useContext(SlotContext);
56
+ useLayoutEffect(() => {
57
+ const previous = slots.get(name);
58
+ const updates = (previous === null || previous === void 0 ? void 0 : previous.updates) || [];
59
+ if (previous !== null && previous !== void 0 && previous.children) ;
60
+ slots.set(name, _flow(_update('infos', _union([slotInfo])))(previous));
61
+ updates.forEach(v => v({}));
62
+ return () => {
63
+ var _previous$infos, _previous$updates;
64
+ const previous = slots.get(name);
65
+ previous.infos = _without([slotInfo], previous.infos);
66
+ if (!((_previous$infos = previous.infos) !== null && _previous$infos !== void 0 && _previous$infos.length) && !((_previous$updates = previous.updates) !== null && _previous$updates !== void 0 && _previous$updates.length)) {
67
+ slots.delete(name);
68
+ }
69
+ };
70
+ }, [name]);
71
+ return children ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", _extends({
72
+ "data-id": name
73
+ }, rest, {
74
+ ref: ref
75
+ })), React.Children.map(children, c => /*#__PURE__*/React.cloneElement(c, _objectSpread(_objectSpread({}, c.props), {}, {
76
+ name,
77
+ stack: Number.MIN_SAFE_INTEGER
78
+ })))) : /*#__PURE__*/React.createElement("div", _extends({
79
+ "data-id": name
80
+ }, rest, {
81
+ ref: ref
82
+ }));
83
+ };
84
+ const Invisible = styled(yakDomTag("div"))`display:none`;
85
+ const FillBeforeFlip = _ref3 => {
86
+ let name = _ref3.name,
87
+ children = _ref3.children,
88
+ slot = _ref3.slot;
89
+ const slots = useContext(SlotContext);
90
+ const ref = useRef();
91
+ useLayoutEffect(() => {
92
+ var _slots$get;
93
+ const infos = ((_slots$get = slots.get(name)) === null || _slots$get === void 0 ? void 0 : _slots$get.infos) || [];
94
+ const mounted = _flatMap(_ref4 => {
95
+ let ref = _ref4.ref;
96
+ return ref === null || ref === void 0 ? void 0 : ref.current;
97
+ }, infos);
98
+ const clones = [];
99
+ const getClone = () => {
100
+ const cloned = ref.current.cloneNode(true);
101
+ cloned.className = 'JS-fill-flip';
102
+ clones.push(cloned);
103
+ return cloned;
104
+ };
105
+ mounted.map(_ => _.appendChild(getClone()));
106
+ return () => {
107
+ clones.forEach(el => el.remove());
108
+ };
109
+ }, []);
110
+ return /*#__PURE__*/React.createElement(Invisible, {
111
+ ref: ref
112
+ }, children);
113
+ };
114
+ const useFillState = (name, stack) => {
115
+ const forceUpdate = React.useState(false)[1];
116
+ const slots = useContext(SlotContext);
117
+ const renderSlot = slots.get(name);
118
+ const maxStack = _max(renderSlot === null || renderSlot === void 0 ? void 0 : renderSlot.stacks);
119
+ const onStack = !_isFinite(maxStack) || maxStack === stack;
120
+ useLayoutEffect(() => {
121
+ const slot = slots.get(name);
122
+ const updatedSlot = _flow(_update('updates', _union([forceUpdate])), _update('stacks', _union([stack])))(slot);
123
+ slots.set(name, updatedSlot);
124
+ updatedSlot.updates.forEach(v => v({}));
125
+ return () => {
126
+ const previous = slots.get(name);
127
+ const index = previous.updates.indexOf(forceUpdate);
128
+ const next = _flow(_update('updates', _s.removeAt(index)), _update('stacks', _s.removeAt(index)))(previous);
129
+ slots.set(name, next);
130
+ next.updates.forEach(v => v({}));
131
+ };
132
+ }, []);
133
+ return [renderSlot, onStack];
134
+ };
135
+ const Fill = _ref5 => {
136
+ let name = _ref5.name,
137
+ children = _ref5.children,
138
+ _ref5$stack = _ref5.stack,
139
+ stack = _ref5$stack === void 0 ? 0 : _ref5$stack,
140
+ mountBeforeFlip = _ref5.mountBeforeFlip;
141
+ const _useFillState = useFillState(name, stack),
142
+ _useFillState2 = _slicedToArray(_useFillState, 2),
143
+ slot = _useFillState2[0],
144
+ onStack = _useFillState2[1];
145
+ if (slot !== null && slot !== void 0 && slot.infos && onStack) {
146
+ return slot === null || slot === void 0 ? void 0 : slot.infos.map(info => {
147
+ var _info$ref;
148
+ return ((_info$ref = info.ref) === null || _info$ref === void 0 ? void 0 : _info$ref.current) && /*#__PURE__*/ReactDOM.createPortal(callIfFunction(children, info), info.ref.current);
149
+ });
150
+ } else if (mountBeforeFlip) {
151
+ return /*#__PURE__*/React.createElement(FillBeforeFlip, {
152
+ name: name,
153
+ slot: slot
154
+ }, children);
155
+ } else {
156
+ return null;
157
+ }
158
+ };
159
+ const FillHooks = _ref6 => {
160
+ _objectDestructuringEmpty(_ref6);
161
+ const _useFillHookState = useFillHookState({}),
162
+ _useFillHookState2 = _slicedToArray(_useFillHookState, 1),
163
+ hooked = _useFillHookState2[0];
164
+ return Object.entries(hooked).map(_ref7 => {
165
+ let _ref8 = _slicedToArray(_ref7, 2),
166
+ name = _ref8[0],
167
+ childs = _ref8[1];
168
+ return childs.map((_ref9, i) => {
169
+ let children = _ref9.children;
170
+ return /*#__PURE__*/React.createElement(Fill, {
171
+ key: name + i,
172
+ name: name
173
+ }, children);
174
+ });
175
+ });
176
+ };
177
+ let uid = 0;
178
+ const useFill = (name, children, inputs) => {
179
+ const _useFillHookStateRef = useFillHookStateRef(),
180
+ _useFillHookStateRef2 = _slicedToArray(_useFillHookStateRef, 2),
181
+ set = _useFillHookStateRef2[1];
182
+ const key = useRef(uid++);
183
+ useLayoutEffect(() => {
184
+ if (children) {
185
+ set(_update([name], function () {
186
+ let list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
187
+ const index = _findIndex(['key', key.current], list);
188
+ const value = {
189
+ children,
190
+ key: key.current
191
+ };
192
+ if (index >= 0) {
193
+ return _set([index], value, list);
194
+ } else {
195
+ return list.concat(value);
196
+ }
197
+ }));
198
+ } else {
199
+ set(_update([name], _differenceBy('key', _differenceBy.placeholder, [{
200
+ children,
201
+ key: key.current
202
+ }])));
203
+ }
204
+ }, inputs || children);
205
+ useLayoutEffect(() => () => set(_update([name], _differenceBy('key', _differenceBy.placeholder, [{
206
+ key: key.current
207
+ }]))), []);
208
+ };
209
+ const HiddenFillHooks = _ref0 => {
210
+ _objectDestructuringEmpty(_ref0);
211
+ const _useHiddenFillHookSta = useHiddenFillHookState({}),
212
+ _useHiddenFillHookSta2 = _slicedToArray(_useHiddenFillHookSta, 1),
213
+ hookedChildren = _useHiddenFillHookSta2[0];
214
+ return /*#__PURE__*/React.createElement("div", null, Object.values(hookedChildren));
215
+ };
216
+ const useHiddenFill = (children, inputs) => {
217
+ const _useHiddenFillHookSta3 = useHiddenFillHookStateRef(),
218
+ _useHiddenFillHookSta4 = _slicedToArray(_useHiddenFillHookSta3, 2),
219
+ set = _useHiddenFillHookSta4[1];
220
+ const _useMemo = useMemo(() => _uniqueId(""), []),
221
+ _useMemo2 = _slicedToArray(_useMemo, 1),
222
+ uid = _useMemo2[0];
223
+ set(_set([uid], children ? /*#__PURE__*/React.cloneElement(children, {
224
+ key: uid
225
+ }) : null));
226
+ useEffect(() => () => set(_unset([uid])), []);
227
+ };
228
+
229
+ export { Fill, Slot, SlotContext, SlotProvider, useFill, useHiddenFill };
230
+ //# sourceMappingURL=SlotFill.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlotFill.mjs","sources":["../src/SlotFill.jsx"],"sourcesContent":["import React, {useContext, useEffect, useLayoutEffect, useMemo, useRef} from 'react'\nimport ReactDOM from 'react-dom'\nimport styled from 'styled-components'\nimport _ from 'lodash/fp'\nimport {_s, callIfFunction} from '@startlibs/utils'\nimport {useConstant} from './hooks/useConstant'\nimport {willUseSharedState} from './hooks/willUseSharedState'\n\nexport const SlotContext = React.createContext(new Map())\nconst [useFillHookState, useFillHookStateRef] = willUseSharedState()\nconst [useHiddenFillHookState, useHiddenFillHookStateRef] = willUseSharedState()\n\nconst DEFAULT_CONTEXT = new Map()\n\nexport const SlotProvider = ({children}) => {\n\n return <SlotContext.Provider value={DEFAULT_CONTEXT}>\n {children}\n <React.Suspense fallback={null}><FillHooks/></React.Suspense>\n <HiddenFillHooks/>\n </SlotContext.Provider>\n}\n\nexport const Slot = ({name,children,...rest}) => {\n\n const ref = useRef()\n const slotInfo = useConstant({ref})\n\n const slots = useContext(SlotContext)\n\n useLayoutEffect(() => {\n const previous = slots.get(name)\n const updates = previous?.updates || []\n if (previous?.children) {\n // reparent\n }\n slots.set(name,_.flow(\n _.update('infos',_.union([slotInfo]))\n )(previous))\n updates.forEach(v => v({}))\n return () => {\n const previous = slots.get(name)\n previous.infos = _.without([slotInfo],previous.infos)\n if (!previous.infos?.length && !previous.updates?.length) {\n slots.delete(name)\n }\n }\n }, [name])\n\n return children\n ? <>\n <div data-id={name} {...rest} ref={ref}/>\n {React.Children.map(children,c => React.cloneElement(c,{...c.props,name,stack:Number.MIN_SAFE_INTEGER}))}\n </>\n : <div data-id={name} {...rest} ref={ref}/>\n\n}\n\nconst Invisible = styled.div`display:none`\n\nconst FillBeforeFlip = ({name, children, slot}) => {\n const slots = useContext(SlotContext)\n const ref = useRef()\n useLayoutEffect(() => {\n const infos = slots.get(name)?.infos || []\n const mounted = _.flatMap(({ref}) => ref?.current,infos)\n const clones = []\n const getClone = () => {\n const cloned = ref.current.cloneNode(true)\n cloned.className = 'JS-fill-flip'\n clones.push(cloned)\n return cloned\n }\n mounted.map(_ => _.appendChild(getClone()))\n return () => {\n clones.forEach(el => el.remove())\n }\n },[])\n return <Invisible ref={ref}>{children}</Invisible>\n}\n\nconst useFillState = (name,stack) => {\n const forceUpdate = React.useState(false)[1];\n const slots = useContext(SlotContext)\n const renderSlot = slots.get(name)\n const maxStack = _.max(renderSlot?.stacks)\n const onStack = !_.isFinite(maxStack) || maxStack === stack\n useLayoutEffect(() => {\n\n const slot = slots.get(name)\n const updatedSlot = _.flow(\n _.update('updates',_.union([forceUpdate])),\n _.update('stacks',_.union([stack])),\n )(slot)\n slots.set(name, updatedSlot)\n updatedSlot.updates.forEach(v => v({}))\n return () => {\n const previous = slots.get(name)\n const index = previous.updates.indexOf(forceUpdate)\n const next = _.flow(\n _.update('updates',_s.removeAt(index)),\n _.update('stacks',_s.removeAt(index))\n )(previous)\n slots.set(name,next)\n next.updates.forEach(v => v({}))\n }\n },[])\n\n return [renderSlot,onStack]\n}\n\n\nexport const Fill = ({name, children, stack = 0, mountBeforeFlip}) => {\n const [slot,onStack] = useFillState(name,stack)\n if (slot?.infos && onStack) {\n return slot?.infos.map((info) => info.ref?.current && ReactDOM.createPortal(callIfFunction(children,info),info.ref.current))\n } else if (mountBeforeFlip) {\n return <FillBeforeFlip name={name} slot={slot}>{children}</FillBeforeFlip>\n } else {\n return null\n }\n}\n\n\nconst FillHooks = ({}) => {\n const [hooked] = useFillHookState({})\n return Object.entries(hooked)\n .map(([name, childs]) => childs.map(({children}, i) => <Fill key={name + i} name={name}>{children}</Fill>))\n}\n\nlet uid = 0\nexport const useFill = (name, children, inputs) => {\n const [, set] = useFillHookStateRef()\n const key = useRef(uid++)\n useLayoutEffect(() => {\n if (children) {\n set(_.update([name], (list = []) => {\n const index = _.findIndex(['key',key.current],list)\n const value = {children,key:key.current}\n if (index >= 0 ) {\n return _.set([index],value,list)\n } else {\n return list.concat(value)\n }\n } ))\n } else {\n set(_.update([name], _.differenceBy('key',_, [{children,key:key.current}])))\n }\n }, inputs || children)\n\n useLayoutEffect(() =>\n () => set(_.update([name], _.differenceBy('key',_, [{key:key.current}])))\n ,[])\n}\n\nconst HiddenFillHooks = ({}) => {\n const [hookedChildren] = useHiddenFillHookState({})\n return <div>{Object.values(hookedChildren)}</div>\n}\n\nexport const useHiddenFill = (children, inputs) => {\n const [, set] = useHiddenFillHookStateRef()\n const [uid] = useMemo(()=>_.uniqueId(\"\"),[])\n set(_.set([uid], children ? React.cloneElement(children,{key:uid}) : null))\n useEffect(()=> () => set(_.unset([uid])),[])\n}\n"],"names":["SlotContext","React","createContext","Map","_willUseSharedState","willUseSharedState","_willUseSharedState2","_slicedToArray","useFillHookState","useFillHookStateRef","_willUseSharedState3","_willUseSharedState4","useHiddenFillHookState","useHiddenFillHookStateRef","DEFAULT_CONTEXT","SlotProvider","_ref","children","createElement","Provider","value","Suspense","fallback","FillHooks","HiddenFillHooks","Slot","_ref2","name","rest","_objectWithoutProperties","_excluded","ref","useRef","slotInfo","useConstant","slots","useContext","useLayoutEffect","previous","get","updates","set","_flow","_update","_union","forEach","v","_previous$infos","_previous$updates","infos","_without","length","delete","Fragment","_extends","Children","map","c","cloneElement","_objectSpread","props","stack","Number","MIN_SAFE_INTEGER","Invisible","styled","yakDomTag","FillBeforeFlip","_ref3","slot","_slots$get","mounted","_flatMap","_ref4","current","clones","getClone","cloned","cloneNode","className","push","_","appendChild","el","remove","useFillState","forceUpdate","useState","renderSlot","maxStack","_max","stacks","onStack","_isFinite","updatedSlot","index","indexOf","next","_s","removeAt","Fill","_ref5","_ref5$stack","mountBeforeFlip","_useFillState","_useFillState2","info","_info$ref","ReactDOM","createPortal","callIfFunction","_ref6","_objectDestructuringEmpty","_useFillHookState","_useFillHookState2","hooked","Object","entries","_ref7","_ref8","childs","_ref9","i","key","uid","useFill","inputs","_useFillHookStateRef","_useFillHookStateRef2","list","arguments","undefined","_findIndex","_set","concat","_differenceBy","placeholder","_ref0","_useHiddenFillHookSta","_useHiddenFillHookSta2","hookedChildren","values","useHiddenFill","_useHiddenFillHookSta3","_useHiddenFillHookSta4","_useMemo","useMemo","_uniqueId","_useMemo2","useEffect","_unset"],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import _debounce from 'lodash/fp/debounce';
2
+ import React from 'react';
3
+ import { callIfFunction, fixMediaQuery } from '@startlibs/utils';
4
+ import { SlotProvider } from './SlotFill.mjs';
5
+ import { clearPopups } from './hooks/usePopupToggle.mjs';
6
+
7
+ const StartlibsContext = /*#__PURE__*/React.createContext({});
8
+ const PopupContext = /*#__PURE__*/React.createContext({});
9
+ const StartlibsMetacontext = /*#__PURE__*/React.createContext(() => {});
10
+ const StartlibsConsumer = StartlibsContext.Consumer;
11
+ const wrappeStyle = {
12
+ height: '100%'
13
+ };
14
+ class StartlibsProvider extends React.Component {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.openToggles = new Map();
18
+ this.popupToggleRender = (_ref, ref) => {
19
+ let isOpen = _ref.isOpen,
20
+ close = _ref.close;
21
+ if (isOpen && !this.openToggles.has(ref)) {
22
+ this.closePopup();
23
+ this.openToggles.set(ref, close);
24
+ }
25
+ };
26
+ this.closePopup = () => {
27
+ clearPopups();
28
+ };
29
+ this.startlibsMeta = new Map();
30
+ this.getMeta = (key, initValue) => {
31
+ const exists = this.startlibsMeta.get(key);
32
+ if (exists) return exists;
33
+ this.startlibsMeta.set(key, callIfFunction(initValue));
34
+ return initValue;
35
+ };
36
+ }
37
+ componentDidMount() {
38
+ fixMediaQuery();
39
+ const addVHFix = () => {
40
+ var _document$documentEle;
41
+ let vh = window.innerHeight * 0.01;
42
+ (_document$documentEle = document.documentElement) === null || _document$documentEle === void 0 || (_document$documentEle = _document$documentEle.style) === null || _document$documentEle === void 0 || _document$documentEle.setProperty('--vh', `${vh}px`);
43
+ };
44
+ window.addEventListener('resize', _debounce(200, addVHFix));
45
+ addVHFix();
46
+ }
47
+ render() {
48
+ return /*#__PURE__*/React.createElement(StartlibsContext.Provider, {
49
+ value: this.props.value
50
+ }, /*#__PURE__*/React.createElement(StartlibsMetacontext.Provider, {
51
+ value: this.getMeta
52
+ }, /*#__PURE__*/React.createElement(PopupContext.Provider, {
53
+ value: this.popupToggleRender
54
+ }, /*#__PURE__*/React.createElement("div", {
55
+ style: wrappeStyle,
56
+ onClick: this.closePopup
57
+ }, /*#__PURE__*/React.createElement(SlotProvider, null, this.props.children)))));
58
+ }
59
+ }
60
+
61
+ export { PopupContext, StartlibsConsumer, StartlibsContext, StartlibsMetacontext, StartlibsProvider };
62
+ //# sourceMappingURL=StartlibsProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartlibsProvider.mjs","sources":["../src/StartlibsProvider.jsx"],"sourcesContent":["import React from 'react'\nimport _ from 'lodash/fp'\nimport {fixMediaQuery,callIfFunction} from '@startlibs/utils'\nimport {SlotProvider} from './SlotFill'\nimport {clearPopups} from './hooks/usePopupToggle'\n\nexport const StartlibsContext = React.createContext({})\nexport const PopupContext = React.createContext({})\nexport const StartlibsMetacontext = React.createContext(()=>{})\n\nexport const StartlibsConsumer = StartlibsContext.Consumer\n\nconst wrappeStyle = {height: '100%'}\n\n\nexport class StartlibsProvider extends React.Component {\n\n componentDidMount() {\n fixMediaQuery()\n const addVHFix = () => {\n let vh = window.innerHeight * 0.01;\n document.documentElement?.style?.setProperty('--vh', `${vh}px`);\n }\n window.addEventListener('resize', _.debounce(200, addVHFix))\n addVHFix()\n }\n\n openToggles = new Map()\n\n popupToggleRender = ({isOpen,close},ref) => {\n if (isOpen && !this.openToggles.has(ref)) {\n this.closePopup()\n this.openToggles.set(ref,close)\n }\n }\n closePopup = () => {\n clearPopups()\n }\n\n startlibsMeta = new Map()\n\n getMeta = (key,initValue) => {\n const exists = this.startlibsMeta.get(key)\n if (exists) return exists\n this.startlibsMeta.set(key,callIfFunction(initValue))\n return initValue\n }\n\n render() {\n return <StartlibsContext.Provider value={this.props.value}>\n <StartlibsMetacontext.Provider value={this.getMeta}>\n <PopupContext.Provider value={this.popupToggleRender}>\n <div style={wrappeStyle} onClick={this.closePopup}>\n <SlotProvider>\n {this.props.children}\n </SlotProvider>\n </div>\n </PopupContext.Provider>\n </StartlibsMetacontext.Provider>\n </StartlibsContext.Provider>\n }\n}\n"],"names":["StartlibsContext","React","createContext","PopupContext","StartlibsMetacontext","StartlibsConsumer","Consumer","wrappeStyle","height","StartlibsProvider","Component","constructor","arguments","openToggles","Map","popupToggleRender","_ref","ref","isOpen","close","has","closePopup","set","clearPopups","startlibsMeta","getMeta","key","initValue","exists","get","callIfFunction","componentDidMount","fixMediaQuery","addVHFix","_document$documentEle","vh","window","innerHeight","document","documentElement","style","setProperty","addEventListener","_debounce","render","createElement","Provider","value","props","onClick","SlotProvider","children"],"mappings":";;;;;;MAMaA,gBAAgB,gBAAGC,KAAK,CAACC,aAAa,CAAC,EAAE;MACzCC,YAAY,gBAAGF,KAAK,CAACC,aAAa,CAAC,EAAE;MACrCE,oBAAoB,gBAAGH,KAAK,CAACC,aAAa,CAAC,MAAI,EAAE;MAEjDG,iBAAiB,GAAGL,gBAAgB,CAACM;AAElD,MAAMC,WAAW,GAAG;EAACC,MAAM,EAAE;AAAM,CAAC;AAG7B,MAAMC,iBAAiB,SAASR,KAAK,CAACS,SAAS,CAAC;EAAAC;IAAA,SAAAC,SAAA;IAAA,KAYrDC,WAAW,GAAG,IAAIC,GAAG,EAAE;IAAA,KAEvBC,iBAAiB,GAAG,CAAAC,IAAA,EAAgBC,GAAG,KAAK;MAAA,IAAtBC,MAAM,GAAAF,IAAA,CAANE,MAAM;QAACC,KAAK,GAAAH,IAAA,CAALG,KAAK;MAChC,IAAID,MAAM,IAAI,CAAC,IAAI,CAACL,WAAW,CAACO,GAAG,CAACH,GAAG,CAAC,EAAE;QACxC,IAAI,CAACI,UAAU,EAAE;QACjB,IAAI,CAACR,WAAW,CAACS,GAAG,CAACL,GAAG,EAACE,KAAK,CAAC;;KAElC;IAAA,KACDE,UAAU,GAAG,MAAM;MACjBE,WAAW,EAAE;KACd;IAAA,KAEDC,aAAa,GAAG,IAAIV,GAAG,EAAE;IAAA,KAEzBW,OAAO,GAAG,CAACC,GAAG,EAACC,SAAS,KAAK;MAC3B,MAAMC,MAAM,GAAG,IAAI,CAACJ,aAAa,CAACK,GAAG,CAACH,GAAG,CAAC;MAC1C,IAAIE,MAAM,EAAE,OAAOA,MAAM;MACzB,IAAI,CAACJ,aAAa,CAACF,GAAG,CAACI,GAAG,EAACI,cAAc,CAACH,SAAS,CAAC,CAAC;MACrD,OAAOA,SAAS;KACjB;;EA7BDI,iBAAiBA,GAAG;IAClBC,aAAa,EAAE;IACf,MAAMC,QAAQ,GAAGA,MAAM;MAAA,IAAAC,qBAAA;MACrB,IAAIC,EAAE,GAAGC,MAAM,CAACC,WAAW,GAAG,IAAI;MAClC,CAAAH,qBAAA,GAAAI,QAAQ,CAACC,eAAe,cAAAL,qBAAA,gBAAAA,qBAAA,GAAxBA,qBAAA,CAA0BM,KAAK,cAAAN,qBAAA,eAA/BA,qBAAA,CAAiCO,WAAW,CAAC,MAAM,EAAE,GAAGN,EAAE,IAAI,CAAC;KAChE;IACDC,MAAM,CAACM,gBAAgB,CAAC,QAAQ,EAAEC,SAAA,CAAW,GAAG,EAAEV,QAAQ,CAAC,CAAC;IAC5DA,QAAQ,EAAE;;EAwBZW,MAAMA,GAAG;IACP,oBAAO3C,KAAA,CAAA4C,aAAA,CAAC7C,gBAAgB,CAAC8C,QAAQ;MAACC,KAAK,EAAE,IAAI,CAACC,KAAK,CAACD;oBAClD9C,KAAA,CAAA4C,aAAA,CAACzC,oBAAoB,CAAC0C,QAAQ;MAACC,KAAK,EAAE,IAAI,CAACtB;oBAC3CxB,KAAA,CAAA4C,aAAA,CAAC1C,YAAY,CAAC2C,QAAQ;MAACC,KAAK,EAAE,IAAI,CAAChC;oBACjCd,KAAA,CAAA4C,aAAA;MAAKL,KAAK,EAAEjC,WAAY;MAAC0C,OAAO,EAAE,IAAI,CAAC5B;oBACrCpB,KAAA,CAAA4C,aAAA,CAACK,YAAY,QACR,IAAI,CAACF,KAAK,CAACG,QACF,CACX,CACgB,CACQ,CACN,CAAC;;AAEhC;;;;"}
@@ -0,0 +1,74 @@
1
+ import React, { useReducer } from 'react';
2
+ import { ifUndefined } from '@startlibs/utils';
3
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
5
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
6
+ import _isArray from 'lodash/fp/isArray';
7
+
8
+ const _excluded = ["value", "fallback", "children", "forwardProps"],
9
+ _excluded2 = ["value", "wrap", "fallback", "children", "forwardProps"];
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ const addExtraProp = function (element, extra) {
13
+ let override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
14
+ return /*#__PURE__*/React.cloneElement(element, override ? _objectSpread(_objectSpread({}, element.props), extra) : _objectSpread(_objectSpread({}, extra), element.props), element.props.children);
15
+ };
16
+ const WithLazyPlaceholder = _ref => {
17
+ let value = _ref.value,
18
+ fallback = _ref.fallback,
19
+ children = _ref.children,
20
+ _ref$forwardProps = _ref.forwardProps,
21
+ forwardProps = _ref$forwardProps === void 0 ? false : _ref$forwardProps,
22
+ props = _objectWithoutProperties(_ref, _excluded);
23
+ return /*#__PURE__*/React.createElement(React.Suspense, {
24
+ fallback: React.Children.map(children(fallback, {
25
+ isLoading: true
26
+ }), child => /*#__PURE__*/React.isValidElement(child) ? addExtraProp(child, {
27
+ isLoading: true
28
+ }, false) : child)
29
+ }, /*#__PURE__*/React.createElement(Load, {
30
+ value: value,
31
+ children: children,
32
+ forwardProps: forwardProps && props
33
+ }));
34
+ };
35
+ const WithLazyResource = _ref2 => {
36
+ let value = _ref2.value,
37
+ wrap = _ref2.wrap,
38
+ fallback = _ref2.fallback,
39
+ children = _ref2.children,
40
+ _ref2$forwardProps = _ref2.forwardProps,
41
+ forwardProps = _ref2$forwardProps === void 0 ? false : _ref2$forwardProps,
42
+ props = _objectWithoutProperties(_ref2, _excluded2);
43
+ return wrap || fallback !== undefined ? /*#__PURE__*/React.createElement(React.Suspense, {
44
+ fallback: ifUndefined(fallback, null)
45
+ }, /*#__PURE__*/React.createElement(Load, {
46
+ value: value,
47
+ forwardProps: forwardProps && props,
48
+ children: children
49
+ })) : /*#__PURE__*/React.createElement(Load, {
50
+ value: value,
51
+ children: children,
52
+ forwardProps: forwardProps && props
53
+ });
54
+ };
55
+ const Load = _ref3 => {
56
+ let value = _ref3.value,
57
+ children = _ref3.children,
58
+ forwardProps = _ref3.forwardProps;
59
+ const loaded = _isArray(value) ? value.forEach(v => v.promise()) || value.map(v => v.read()) : value.read();
60
+ const _useReducer = useReducer(s => s + 1, 0),
61
+ _useReducer2 = _slicedToArray(_useReducer, 2),
62
+ update = _useReducer2[1];
63
+ const refresh = () => Promise.all(_isArray(value) ? value.map(v => v.refresh().promise()) : [value.refresh().promise()]).then(update);
64
+ return forwardProps ? addExtraProp(children(loaded, {
65
+ refresh,
66
+ update
67
+ }), forwardProps) : children(loaded, {
68
+ refresh,
69
+ update
70
+ });
71
+ };
72
+
73
+ export { WithLazyPlaceholder, WithLazyResource };
74
+ //# sourceMappingURL=WithLazyResource.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithLazyResource.mjs","sources":["../../src/hocs/WithLazyResource.jsx"],"sourcesContent":["import React, {useReducer} from 'react'\nimport _ from 'lodash/fp'\nimport {ifUndefined} from '@startlibs/utils'\n\nconst addExtraProp = (element, extra, override = true) => React.cloneElement(\n element,\n override ? {...element.props,...extra} : {...extra,...element.props},\n element.props.children\n)\n\nexport const WithLazyPlaceholder = ({value, fallback, children, forwardProps = false,...props}) => {\n return <React.Suspense\n fallback={React.Children.map(children(fallback,{isLoading:true}), (child) => React.isValidElement(child) ? addExtraProp(child, {isLoading: true}, false) : child)}\n >\n <Load value={value} children={children} forwardProps={forwardProps && props}/>\n </React.Suspense>\n}\n\n\nexport const WithLazyResource = ({value, wrap,fallback,children,forwardProps = false,...props}) => {\n\n return (wrap || fallback !== undefined)\n ? <React.Suspense fallback={ifUndefined(fallback,null)}><Load value={value} forwardProps={forwardProps && props} children={children}/></React.Suspense>\n : <Load value={value} children={children} forwardProps={forwardProps && props}/>\n}\n\nconst Load = ({value,children,forwardProps}) => {\n const loaded = _.isArray(value) ? (value.forEach(v => v.promise()) || value.map(v => v.read())) : value.read()\n const [,update] = useReducer((s) => s+1, 0)\n const refresh = () => Promise.all(_.isArray(value) ? value.map(v => v.refresh().promise()) : [value.refresh().promise()]).then(update)\n return forwardProps ? addExtraProp(children(loaded,{refresh,update}),forwardProps) : children(loaded, {refresh,update})\n}"],"names":["addExtraProp","element","extra","override","arguments","length","undefined","React","cloneElement","_objectSpread","props","children","WithLazyPlaceholder","_ref","value","fallback","_ref$forwardProps","forwardProps","_objectWithoutProperties","_excluded","createElement","Suspense","Children","map","isLoading","child","isValidElement","Load","WithLazyResource","_ref2","wrap","_ref2$forwardProps","_excluded2","ifUndefined","_ref3","loaded","_isArray","forEach","v","promise","read","_useReducer","useReducer","s","_useReducer2","_slicedToArray","update","refresh","Promise","all","then"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+
3
+ class WithRef extends React.Component {
4
+ constructor(props) {
5
+ super(props);
6
+ const total = props.length || props.children.length;
7
+ const refs = new Array(total);
8
+ for (var i = 0; i < total; i++) {
9
+ refs[i] = /*#__PURE__*/React.createRef();
10
+ }
11
+ this.createdRefs = refs;
12
+ }
13
+ render() {
14
+ const children = this.props.children;
15
+ return children(...this.createdRefs);
16
+ }
17
+ }
18
+
19
+ export { WithRef };
20
+ //# sourceMappingURL=WithRef.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithRef.mjs","sources":["../../src/hocs/WithRef.js"],"sourcesContent":["// @flow\nimport React from 'react'\n\nexport class WithRef extends React.Component {\n\n constructor(props) {\n super(props)\n const total = props.length || props.children.length\n const refs = new Array(total)\n for (var i = 0; i < total; i++) {\n refs[i] = React.createRef()\n }\n this.createdRefs = refs\n }\n\n render() {\n const {children} = this.props\n return children(...this.createdRefs)\n }\n}"],"names":["WithRef","React","Component","constructor","props","total","length","children","refs","Array","i","createRef","createdRefs","render"],"mappings":";;AAGO,MAAMA,OAAO,SAASC,KAAK,CAACC,SAAS,CAAC;EAE3CC,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IACZ,MAAMC,KAAK,GAAGD,KAAK,CAACE,MAAM,IAAIF,KAAK,CAACG,QAAQ,CAACD,MAAM;IACnD,MAAME,IAAI,GAAG,IAAIC,KAAK,CAACJ,KAAK,CAAC;IAC7B,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,KAAK,EAAEK,CAAC,EAAE,EAAE;MAC9BF,IAAI,CAACE,CAAC,CAAC,gBAAGT,KAAK,CAACU,SAAS,EAAE;;IAE7B,IAAI,CAACC,WAAW,GAAGJ,IAAI;;EAGzBK,MAAMA,GAAG;IACP,MAAON,QAAQ,GAAI,IAAI,CAACH,KAAK,CAAtBG,QAAQ;IACf,OAAOA,QAAQ,CAAC,GAAG,IAAI,CAACK,WAAW,CAAC;;AAExC;;;;"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
+
5
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
+ const propsOrConsume = (prop, Consumer, childrenAsFunction) => prop ? childrenAsFunction(prop) : /*#__PURE__*/React.createElement(Consumer, null, childrenAsFunction);
8
+ const addConsumers = (Component, obj) => Object.entries(obj).reduce((acc, _ref) => {
9
+ let _ref2 = _slicedToArray(_ref, 2),
10
+ propKey = _ref2[0],
11
+ Consumer = _ref2[1];
12
+ return props => propsOrConsume(props[propKey], Consumer, v => acc(_objectSpread({
13
+ [propKey]: v
14
+ }, props)));
15
+ }, props => /*#__PURE__*/React.createElement(Component, props));
16
+ const consumes = obj => Component => {
17
+ const withConsumers = addConsumers(Component, obj);
18
+ return props => withConsumers(props);
19
+ };
20
+
21
+ export { consumes };
22
+ //# sourceMappingURL=consumes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumes.mjs","sources":["../../src/hocs/consumes.jsx"],"sourcesContent":["import React from 'react'\n\nconst propsOrConsume = (prop, Consumer,childrenAsFunction) => prop ? childrenAsFunction(prop) : <Consumer>{childrenAsFunction}</Consumer>\n\nconst addConsumers = (Component,obj) =>\n Object.entries(obj)\n .reduce(\n (acc, [propKey, Consumer]) => (props) =>\n propsOrConsume(props[propKey],Consumer,v => acc({[propKey]: v, ...props})),\n (props) => <Component {...props} />\n )\n\nexport const consumes = (obj) => (Component) => {\n const withConsumers = addConsumers(Component,obj)\n return (props) => withConsumers(props)\n}\n"],"names":["propsOrConsume","prop","Consumer","childrenAsFunction","React","createElement","addConsumers","Component","obj","Object","entries","reduce","acc","_ref","_ref2","_slicedToArray","propKey","props","v","_objectSpread","consumes","withConsumers"],"mappings":";;;;;;AAEA,MAAMA,cAAc,GAAGA,CAACC,IAAI,EAAEC,QAAQ,EAACC,kBAAkB,KAAKF,IAAI,GAAGE,kBAAkB,CAACF,IAAI,CAAC,gBAAGG,KAAA,CAAAC,aAAA,CAACH,QAAQ,QAAEC,kBAA6B,CAAC;AAEzI,MAAMG,YAAY,GAAGA,CAACC,SAAS,EAACC,GAAG,KACjCC,MAAM,CAACC,OAAO,CAACF,GAAG,CAAC,CAChBG,MAAM,CACL,CAACC,GAAG,EAAAC,IAAA;EAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,IAAA;IAAGG,OAAO,GAAAF,KAAA;IAAEZ,QAAQ,GAAAY,KAAA;EAAA,OAAOG,KAAK,IAClCjB,cAAc,CAACiB,KAAK,CAACD,OAAO,CAAC,EAACd,QAAQ,EAACgB,CAAC,IAAIN,GAAG,CAAAO,aAAA;IAAE,CAACH,OAAO,GAAGE;KAAMD,KAAK,CAAC,CAAC,CAAC;AAAA,GAC3EA,KAAK,iBAAKb,KAAA,CAAAC,aAAA,CAACE,SAAS,EAAKU,KAAQ,CACpC,CAAC;MAEQG,QAAQ,GAAIZ,GAAG,IAAMD,SAAS,IAAK;EAC9C,MAAMc,aAAa,GAAGf,YAAY,CAACC,SAAS,EAACC,GAAG,CAAC;EACjD,OAAQS,KAAK,IAAKI,aAAa,CAACJ,KAAK,CAAC;AACxC;;;;"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import _extends from '@babel/runtime/helpers/extends';
3
+
4
+ const withDialogError = Dialog => {
5
+ const ErrorBoundedComponent = /*#__PURE__*/React.forwardRef((props, ref) => {
6
+ return /*#__PURE__*/React.createElement(Dialog, _extends({
7
+ ref: ref
8
+ }, props));
9
+
10
+ // const ErrorBoundary = __internals('ErrorBoundary')
11
+ /*return (
12
+ <ErrorBoundary Error={props.Error || __internals('DialogError')} closeDialog={props.closeDialog}>
13
+ <Dialog {...props}/>
14
+ </ErrorBoundary>
15
+ )*/
16
+ });
17
+ // ErrorBoundedComponent.contextTypes = {startlibs:()=>null}
18
+ return ErrorBoundedComponent;
19
+ };
20
+
21
+ export { withDialogError };
22
+ //# sourceMappingURL=withDialogError.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withDialogError.mjs","sources":["../../src/hocs/withDialogError.jsx"],"sourcesContent":["import React from 'react'\n\nexport const withDialogError = (Dialog) => {\n const ErrorBoundedComponent = React.forwardRef((props,ref) => {\n return <Dialog ref={ref} {...props}/>\n\n // const ErrorBoundary = __internals('ErrorBoundary')\n /*return (\n <ErrorBoundary Error={props.Error || __internals('DialogError')} closeDialog={props.closeDialog}>\n <Dialog {...props}/>\n </ErrorBoundary>\n )*/\n })\n // ErrorBoundedComponent.contextTypes = {startlibs:()=>null}\n return ErrorBoundedComponent\n}"],"names":["withDialogError","Dialog","ErrorBoundedComponent","React","forwardRef","props","ref","createElement","_extends"],"mappings":";;;MAEaA,eAAe,GAAIC,MAAM,IAAK;EACzC,MAAMC,qBAAqB,gBAAGC,KAAK,CAACC,UAAU,CAAC,CAACC,KAAK,EAACC,GAAG,KAAK;IAC5D,oBAAOH,KAAA,CAAAI,aAAA,CAACN,MAAM,EAAAO,QAAA;MAACF,GAAG,EAAEA;OAASD,KAAK,CAAE,CAAC;;;;AAIzC;AACA;AACA;AACA;GACG,CAAC;;EAEF,OAAOH,qBAAqB;AAC9B;;;;"}
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import _extends from '@babel/runtime/helpers/extends';
3
+ import mitt from 'mitt';
4
+
5
+ const GroupEventFactory = () => {
6
+ let emitter = mitt();
7
+ class WithGroupEvent extends React.Component {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.events = {};
11
+ this.processEvent = (type, event) => {
12
+ (this.events[type] || []).forEach(c => c(event));
13
+ };
14
+ this.groupEventProps = {
15
+ on: (type, callback) => {
16
+ this.events[type] = (this.events[type] || []).concat(callback);
17
+ },
18
+ off: (type, callback) => {
19
+ this.events[type] = (this.events[type] || []).filter(e => e !== callback);
20
+ },
21
+ emit: emitter.emit
22
+ };
23
+ }
24
+ componentDidMount() {
25
+ emitter.on('*', this.processEvent);
26
+ }
27
+ componentWillUnmount() {
28
+ emitter.off('*', this.processEvent);
29
+ }
30
+ render() {
31
+ return this.props.children(this.groupEventProps);
32
+ }
33
+ }
34
+ return WithGroupEvent;
35
+ };
36
+ const withGroupEvent = Component => {
37
+ const WithGroupEvent = GroupEventFactory();
38
+ return /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(WithGroupEvent, null, groupEvent => /*#__PURE__*/React.createElement(Component, _extends({}, props, {
39
+ ref: ref,
40
+ groupEvent: groupEvent
41
+ }))));
42
+ };
43
+
44
+ export { GroupEventFactory, withGroupEvent };
45
+ //# sourceMappingURL=withGroupEvent.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withGroupEvent.mjs","sources":["../../src/hocs/withGroupEvent.jsx"],"sourcesContent":["import React from 'react'\nimport mitt from 'mitt'\n\nexport const GroupEventFactory = () => {\n let emitter = mitt()\n\n class WithGroupEvent extends React.Component {\n componentDidMount() {\n emitter.on('*', this.processEvent)\n }\n\n componentWillUnmount() {\n emitter.off('*',this.processEvent)\n }\n\n events = {}\n\n processEvent = (type, event) => {\n (this.events[type] || []).forEach(c => c(event))\n }\n\n groupEventProps = {\n on: (type,callback) => {\n this.events[type] = (this.events[type] || []).concat(callback)\n },\n off: (type,callback) => {\n this.events[type] = (this.events[type] || []).filter(e=>e!==callback)\n },\n emit: emitter.emit\n }\n\n render() {\n return this.props.children(this.groupEventProps)\n }\n }\n return WithGroupEvent\n}\n\nexport const withGroupEvent = (Component) => {\n const WithGroupEvent = GroupEventFactory()\n return React.forwardRef((props,ref) => <WithGroupEvent>{(groupEvent) => <Component {...props} ref={ref} groupEvent={groupEvent}/>}</WithGroupEvent>)\n}\n\n"],"names":["GroupEventFactory","emitter","mitt","WithGroupEvent","React","Component","constructor","arguments","events","processEvent","type","event","forEach","c","groupEventProps","on","callback","concat","off","filter","e","emit","componentDidMount","componentWillUnmount","render","props","children","withGroupEvent","forwardRef","ref","createElement","groupEvent","_extends"],"mappings":";;;;MAGaA,iBAAiB,GAAGA,MAAM;EACrC,IAAIC,OAAO,GAAGC,IAAI,EAAE;EAEpB,MAAMC,cAAc,SAASC,KAAK,CAACC,SAAS,CAAC;IAAAC;MAAA,SAAAC,SAAA;MAAA,KAS3CC,MAAM,GAAG,EAAE;MAAA,KAEXC,YAAY,GAAG,CAACC,IAAI,EAAEC,KAAK,KAAK;QAC9B,CAAC,IAAI,CAACH,MAAM,CAACE,IAAI,CAAC,IAAI,EAAE,EAAEE,OAAO,CAACC,CAAC,IAAIA,CAAC,CAACF,KAAK,CAAC,CAAC;OACjD;MAAA,KAEDG,eAAe,GAAG;QAChBC,EAAE,EAAEA,CAACL,IAAI,EAACM,QAAQ,KAAK;UACrB,IAAI,CAACR,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,IAAI,CAACF,MAAM,CAACE,IAAI,CAAC,IAAI,EAAE,EAAEO,MAAM,CAACD,QAAQ,CAAC;SAC/D;QACDE,GAAG,EAAEA,CAACR,IAAI,EAACM,QAAQ,KAAK;UACtB,IAAI,CAACR,MAAM,CAACE,IAAI,CAAC,GAAG,CAAC,IAAI,CAACF,MAAM,CAACE,IAAI,CAAC,IAAI,EAAE,EAAES,MAAM,CAACC,CAAC,IAAEA,CAAC,KAAGJ,QAAQ,CAAC;SACtE;QACDK,IAAI,EAAEpB,OAAO,CAACoB;OACf;;IAtBDC,iBAAiBA,GAAG;MAClBrB,OAAO,CAACc,EAAE,CAAC,GAAG,EAAE,IAAI,CAACN,YAAY,CAAC;;IAGpCc,oBAAoBA,GAAG;MACrBtB,OAAO,CAACiB,GAAG,CAAC,GAAG,EAAC,IAAI,CAACT,YAAY,CAAC;;IAmBpCe,MAAMA,GAAG;MACP,OAAO,IAAI,CAACC,KAAK,CAACC,QAAQ,CAAC,IAAI,CAACZ,eAAe,CAAC;;;EAGpD,OAAOX,cAAc;AACvB;MAEawB,cAAc,GAAItB,SAAS,IAAK;EAC3C,MAAMF,cAAc,GAAGH,iBAAiB,EAAE;EAC1C,oBAAOI,KAAK,CAACwB,UAAU,CAAC,CAACH,KAAK,EAACI,GAAG,kBAAKzB,KAAA,CAAA0B,aAAA,CAAC3B,cAAc,QAAG4B,UAAU,iBAAK3B,KAAA,CAAA0B,aAAA,CAACzB,SAAS,EAAA2B,QAAA,KAAKP,KAAK;IAAEI,GAAG,EAAEA,GAAI;IAACE,UAAU,EAAEA;IAAY,CAAkB,CAAC,CAAC;AACtJ;;;;"}
@@ -0,0 +1,13 @@
1
+ import 'react';
2
+ import { useLazyConstant } from './useConstant.mjs';
3
+
4
+ const WithConstant = _ref => {
5
+ let _ref$inputs = _ref.inputs,
6
+ value = _ref.value,
7
+ children = _ref.children;
8
+ const constant = useLazyConstant(value);
9
+ return children(constant);
10
+ };
11
+
12
+ export { WithConstant };
13
+ //# sourceMappingURL=WithConstant.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithConstant.mjs","sources":["../../src/hooks/WithConstant.jsx"],"sourcesContent":["import React from 'react'\nimport {useLazyConstant} from './useConstant'\n\nexport const WithConstant = ({inputs=[],value,children}) => {\n const constant = useLazyConstant(value,inputs)\n return children(constant)\n}"],"names":["WithConstant","_ref","_ref$inputs","inputs","value","children","constant","useLazyConstant"],"mappings":";;;MAGaA,YAAY,GAAGC,IAAA,IAAgC;MAAAC,WAAA,GAAAD,IAAA,CAA9BE,MAAM;IAAIC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAACC,QAAQ,GAAAJ,IAAA,CAARI;EAC5C,MAAMC,QAAQ,GAAGC,eAAe,CAACH,KAAY,CAAC;EAC9C,OAAOC,QAAQ,CAACC,QAAQ,CAAC;AAC3B;;;;"}
@@ -0,0 +1,12 @@
1
+ import { useEffect } from 'react';
2
+
3
+ const WithEffect = _ref => {
4
+ let _ref$inputs = _ref.inputs,
5
+ inputs = _ref$inputs === void 0 ? [] : _ref$inputs,
6
+ children = _ref.children;
7
+ useEffect(children, inputs);
8
+ return null;
9
+ };
10
+
11
+ export { WithEffect };
12
+ //# sourceMappingURL=WithEffect.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithEffect.mjs","sources":["../../src/hooks/WithEffect.jsx"],"sourcesContent":["import React, {useEffect} from 'react'\n\nexport const WithEffect = ({inputs=[],children}) => {\n useEffect(children,inputs)\n return null\n}"],"names":["WithEffect","_ref","_ref$inputs","inputs","children","useEffect"],"mappings":";;MAEaA,UAAU,GAAGC,IAAA,IAA0B;EAAA,IAAAC,WAAA,GAAAD,IAAA,CAAxBE,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAC,EAAE,GAAAA,WAAA;IAACE,QAAQ,GAAAH,IAAA,CAARG,QAAQ;EAC5CC,SAAS,CAACD,QAAQ,EAACD,MAAM,CAAC;EAC1B,OAAO,IAAI;AACb;;;;"}
@@ -0,0 +1,14 @@
1
+ import { useEffect } from 'react';
2
+ import { callIfFunction } from '@startlibs/utils';
3
+
4
+ const useAsyncEffect = (fn, args) => {
5
+ useEffect(() => {
6
+ const result = fn();
7
+ return () => {
8
+ result.then(end => callIfFunction(end));
9
+ };
10
+ }, args);
11
+ };
12
+
13
+ export { useAsyncEffect };
14
+ //# sourceMappingURL=useAsyncEffect.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAsyncEffect.mjs","sources":["../../src/hooks/useAsyncEffect.jsx"],"sourcesContent":["import React, {useEffect} from 'react'\nimport {callIfFunction} from '@startlibs/utils'\n\nexport const useAsyncEffect = (fn,args) => {\n useEffect(() => {\n const result = fn()\n return () => {\n result.then(end => callIfFunction(end))\n }\n },args)\n}"],"names":["useAsyncEffect","fn","args","useEffect","result","then","end","callIfFunction"],"mappings":";;;MAGaA,cAAc,GAAGA,CAACC,EAAE,EAACC,IAAI,KAAK;EACzCC,SAAS,CAAC,MAAM;IACd,MAAMC,MAAM,GAAGH,EAAE,EAAE;IACnB,OAAO,MAAM;MACXG,MAAM,CAACC,IAAI,CAACC,GAAG,IAAIC,cAAc,CAACD,GAAG,CAAC,CAAC;KACxC;GACF,EAACJ,IAAI,CAAC;AACT;;;;"}