@startlibs/core 1.0.0-alpha-6u → 1.0.1

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.
package/lib/index.js CHANGED
@@ -9,36 +9,37 @@ var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
9
9
  var _inherits = require('@babel/runtime/helpers/inherits');
10
10
  var _debounce = require('lodash/fp/debounce');
11
11
  var React = require('react');
12
+ var utils = require('@startlibs/utils');
13
+ var core = require('@startlibs/core');
14
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
15
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
16
+ var _set = require('lodash/fp/set');
17
+ var _update = require('lodash/fp/update');
18
+ var _isFunction = require('lodash/fp/isFunction');
19
+ var _get = require('lodash/fp/get');
20
+ var _isArray = require('lodash/fp/isArray');
21
+ var _isString = require('lodash/fp/isString');
12
22
  var _objectDestructuringEmpty = require('@babel/runtime/helpers/objectDestructuringEmpty');
13
23
  var _objectSpread = require('@babel/runtime/helpers/objectSpread');
14
24
  var _extends = require('@babel/runtime/helpers/extends');
15
25
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
16
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
17
26
  var _unset = require('lodash/fp/unset');
18
27
  var _uniqueId = require('lodash/fp/uniqueId');
19
28
  var _differenceBy = require('lodash/fp/differenceBy');
20
- var _set = require('lodash/fp/set');
21
29
  var _findIndex = require('lodash/fp/findIndex');
22
30
  var _isFinite = require('lodash/fp/isFinite');
23
31
  var _max = require('lodash/fp/max');
24
32
  var _flatMap = require('lodash/fp/flatMap');
25
33
  var _without = require('lodash/fp/without');
26
34
  var _union = require('lodash/fp/union');
27
- var _update = require('lodash/fp/update');
28
35
  var _flow = require('lodash/fp/flow');
29
36
  var ReactDOM = require('react-dom');
30
37
  var styled = require('styled-components');
31
- var utils = require('@startlibs/utils');
32
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
38
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
39
+ var mitt = require('mitt');
33
40
  var _typeof = require('@babel/runtime/helpers/typeof');
34
41
  var _regeneratorRuntime = require('@babel/runtime/regenerator');
35
42
  var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
36
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
37
- var mitt = require('mitt');
38
- var _isArray = require('lodash/fp/isArray');
39
- var _isFunction = require('lodash/fp/isFunction');
40
- var _get = require('lodash/fp/get');
41
- var _isString = require('lodash/fp/isString');
42
43
  var _identity = require('lodash/fp/identity');
43
44
 
44
45
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -50,37 +51,193 @@ var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeO
50
51
  var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
51
52
  var _debounce__default = /*#__PURE__*/_interopDefaultLegacy(_debounce);
52
53
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
54
+ var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
55
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
56
+ var _set__default = /*#__PURE__*/_interopDefaultLegacy(_set);
57
+ var _update__default = /*#__PURE__*/_interopDefaultLegacy(_update);
58
+ var _isFunction__default = /*#__PURE__*/_interopDefaultLegacy(_isFunction);
59
+ var _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);
60
+ var _isArray__default = /*#__PURE__*/_interopDefaultLegacy(_isArray);
61
+ var _isString__default = /*#__PURE__*/_interopDefaultLegacy(_isString);
53
62
  var _objectDestructuringEmpty__default = /*#__PURE__*/_interopDefaultLegacy(_objectDestructuringEmpty);
54
63
  var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
55
64
  var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
56
65
  var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
57
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
58
66
  var _unset__default = /*#__PURE__*/_interopDefaultLegacy(_unset);
59
67
  var _uniqueId__default = /*#__PURE__*/_interopDefaultLegacy(_uniqueId);
60
68
  var _differenceBy__default = /*#__PURE__*/_interopDefaultLegacy(_differenceBy);
61
- var _set__default = /*#__PURE__*/_interopDefaultLegacy(_set);
62
69
  var _findIndex__default = /*#__PURE__*/_interopDefaultLegacy(_findIndex);
63
70
  var _isFinite__default = /*#__PURE__*/_interopDefaultLegacy(_isFinite);
64
71
  var _max__default = /*#__PURE__*/_interopDefaultLegacy(_max);
65
72
  var _flatMap__default = /*#__PURE__*/_interopDefaultLegacy(_flatMap);
66
73
  var _without__default = /*#__PURE__*/_interopDefaultLegacy(_without);
67
74
  var _union__default = /*#__PURE__*/_interopDefaultLegacy(_union);
68
- var _update__default = /*#__PURE__*/_interopDefaultLegacy(_update);
69
75
  var _flow__default = /*#__PURE__*/_interopDefaultLegacy(_flow);
70
76
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
71
77
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
72
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
78
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
79
+ var mitt__default = /*#__PURE__*/_interopDefaultLegacy(mitt);
73
80
  var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
74
81
  var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
75
82
  var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
76
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
77
- var mitt__default = /*#__PURE__*/_interopDefaultLegacy(mitt);
78
- var _isArray__default = /*#__PURE__*/_interopDefaultLegacy(_isArray);
79
- var _isFunction__default = /*#__PURE__*/_interopDefaultLegacy(_isFunction);
80
- var _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);
81
- var _isString__default = /*#__PURE__*/_interopDefaultLegacy(_isString);
82
83
  var _identity__default = /*#__PURE__*/_interopDefaultLegacy(_identity);
83
84
 
85
+ var StartlibsContext = React__default['default'].createContext({});
86
+ var PopupContext = React__default['default'].createContext({});
87
+ var StartlibsMetacontext = React__default['default'].createContext(function () {});
88
+ var StartlibsConsumer = StartlibsContext.Consumer;
89
+ var wrappeStyle = {
90
+ height: '100%'
91
+ };
92
+ var StartlibsProvider =
93
+ /*#__PURE__*/
94
+ function (_React$Component) {
95
+ _inherits__default['default'](StartlibsProvider, _React$Component);
96
+
97
+ function StartlibsProvider() {
98
+ var _getPrototypeOf2;
99
+
100
+ var _this;
101
+
102
+ _classCallCheck__default['default'](this, StartlibsProvider);
103
+
104
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
105
+ args[_key] = arguments[_key];
106
+ }
107
+
108
+ _this = _possibleConstructorReturn__default['default'](this, (_getPrototypeOf2 = _getPrototypeOf__default['default'](StartlibsProvider)).call.apply(_getPrototypeOf2, [this].concat(args)));
109
+ _this.openToggles = new Map();
110
+
111
+ _this.popupToggleRender = function (_ref, ref) {
112
+ var isOpen = _ref.isOpen,
113
+ close = _ref.close;
114
+
115
+ if (isOpen && !_this.openToggles.has(ref)) {
116
+ _this.closePopup();
117
+
118
+ _this.openToggles.set(ref, close);
119
+ }
120
+ };
121
+
122
+ _this.closePopup = function () {
123
+ core.clearPopups();
124
+ };
125
+
126
+ _this.startlibsMeta = new Map();
127
+
128
+ _this.getMeta = function (key, initValue) {
129
+ var exists = _this.startlibsMeta.get(key);
130
+
131
+ if (exists) return exists;
132
+
133
+ _this.startlibsMeta.set(key, utils.callIfFunction(initValue));
134
+
135
+ return initValue;
136
+ };
137
+
138
+ return _this;
139
+ }
140
+
141
+ _createClass__default['default'](StartlibsProvider, [{
142
+ key: "componentDidMount",
143
+ value: function componentDidMount() {
144
+ utils.fixMediaQuery();
145
+
146
+ var addVHFix = function addVHFix() {
147
+ var _document$documentEle, _document$documentEle2;
148
+
149
+ var vh = window.innerHeight * 0.01;
150
+ (_document$documentEle = document.documentElement) === null || _document$documentEle === void 0 ? void 0 : (_document$documentEle2 = _document$documentEle.style) === null || _document$documentEle2 === void 0 ? void 0 : _document$documentEle2.setProperty('--vh', "".concat(vh, "px"));
151
+ };
152
+
153
+ window.addEventListener('resize', _debounce__default['default'](200, addVHFix));
154
+ addVHFix();
155
+ }
156
+ }, {
157
+ key: "render",
158
+ value: function render() {
159
+ return React__default['default'].createElement(StartlibsContext.Provider, {
160
+ value: this.props.value
161
+ }, React__default['default'].createElement(StartlibsMetacontext.Provider, {
162
+ value: this.getMeta
163
+ }, React__default['default'].createElement(PopupContext.Provider, {
164
+ value: this.popupToggleRender
165
+ }, React__default['default'].createElement("div", {
166
+ style: wrappeStyle,
167
+ onClick: this.closePopup
168
+ }, React__default['default'].createElement(core.SlotProvider, null, this.props.children)))));
169
+ }
170
+ }]);
171
+
172
+ return StartlibsProvider;
173
+ }(React__default['default'].Component);
174
+
175
+ var willUseLayers = function willUseLayers() {
176
+ var useEffect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : React__default['default'].useEffect;
177
+
178
+ var _willUseSharedCallbac = core.willUseSharedCallback(useEffect),
179
+ _willUseSharedCallbac2 = _slicedToArray__default['default'](_willUseSharedCallbac, 3),
180
+ useRegisterSharedCallback = _willUseSharedCallbac2[0],
181
+ callGroup = _willUseSharedCallbac2[1],
182
+ _getSize = _willUseSharedCallbac2[2];
183
+
184
+ var useLayer = function useLayer() {
185
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
186
+ onFirst = _ref.onFirst,
187
+ onEmpty = _ref.onEmpty,
188
+ onTop = _ref.onTop,
189
+ onRemove = _ref.onRemove;
190
+
191
+ var listener = arguments.length > 1 ? arguments[1] : undefined;
192
+ var resetIndex = React.useCallback(function () {
193
+ setIndex(getIndex());
194
+
195
+ if (getIndex() + 1 === _getSize()) {
196
+ utils.callIfFunction(onTop, getIndex);
197
+ }
198
+ }, []);
199
+ var getIndex = useRegisterSharedCallback(resetIndex, listener);
200
+
201
+ var _useState = React.useState(getIndex()),
202
+ _useState2 = _slicedToArray__default['default'](_useState, 2),
203
+ index = _useState2[0],
204
+ setIndex = _useState2[1];
205
+
206
+ useEffect(function () {
207
+ if (getIndex() === 0) {
208
+ utils.callIfFunction(onFirst);
209
+ }
210
+
211
+ resetIndex();
212
+ return function () {
213
+ utils.callIfFunction(onRemove, _getSize());
214
+
215
+ if (_getSize() === 0) {
216
+ utils.callIfFunction(onEmpty);
217
+ }
218
+
219
+ callGroup();
220
+ };
221
+ }, []);
222
+ return [index, {
223
+ isFirst: function isFirst() {
224
+ return getIndex() === 1;
225
+ },
226
+ isTop: function isTop() {
227
+ return getIndex() === _getSize() - 1;
228
+ },
229
+ isEmpty: function isEmpty() {
230
+ return _getSize() === 0;
231
+ },
232
+ getSize: function getSize() {
233
+ return _getSize();
234
+ }
235
+ }];
236
+ };
237
+
238
+ return [useLayer, _getSize];
239
+ };
240
+
84
241
  var callList = function callList(list, firstArg) {
85
242
  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
86
243
  args[_key - 2] = arguments[_key];
@@ -188,7 +345,7 @@ var willUseSharedCallback = function willUseSharedCallback() {
188
345
 
189
346
  var notDefined = {};
190
347
  var willUseSharedState = function willUseSharedState(initialValue) {
191
- var _willUseSharedCallbac = willUseSharedCallback(),
348
+ var _willUseSharedCallbac = core.willUseSharedCallback(),
192
349
  _willUseSharedCallbac2 = _slicedToArray__default['default'](_willUseSharedCallbac, 3),
193
350
  useRegisterGroupCallback = _willUseSharedCallbac2[0],
194
351
  callGroup = _willUseSharedCallbac2[1],
@@ -233,54 +390,180 @@ var willUseSharedState = function willUseSharedState(initialValue) {
233
390
  }, clear];
234
391
  };
235
392
 
236
- var not_defined = {};
237
- var useConstant = function useConstant(value) {
238
- var ref = React.useRef(not_defined);
239
-
240
- if (ref.current === not_defined) {
241
- ref.current = value;
242
- }
393
+ var updateAllInputsState = function updateAllInputsState(inputs, values) {
394
+ var deferedUndefined = [];
395
+ inputs.forEach(function (input) {
396
+ var _input = _slicedToArray__default['default'](input, 2),
397
+ setValue = _input[0],
398
+ selector = _input[1];
243
399
 
244
- return ref.current;
245
- };
246
- var useLazyConstant = function useLazyConstant(value) {
247
- var ref = React.useRef(not_defined);
400
+ var newValue = selector(values);
248
401
 
249
- if (ref.current === not_defined) {
250
- ref.current = utils.callIfFunction(value);
251
- }
402
+ if (newValue === undefined) {
403
+ deferedUndefined.push([setValue, newValue]);
404
+ } else {
405
+ setValue(newValue);
406
+ }
407
+ });
408
+ deferedUndefined.forEach(function (_ref) {
409
+ var _ref2 = _slicedToArray__default['default'](_ref, 2),
410
+ set = _ref2[0],
411
+ value = _ref2[1];
252
412
 
253
- return ref.current;
413
+ return set(value);
414
+ });
254
415
  };
255
416
 
256
- var SlotContext = React__default['default'].createContext(new Map());
257
-
258
- var _willUseSharedState = willUseSharedState(),
259
- _willUseSharedState2 = _slicedToArray__default['default'](_willUseSharedState, 2),
260
- useFillHookState = _willUseSharedState2[0],
261
- useFillHookStateRef = _willUseSharedState2[1];
417
+ var pathSelector = function pathSelector(path) {
418
+ return utils._s.get(path || []);
419
+ };
262
420
 
263
- var _willUseSharedState3 = willUseSharedState(),
264
- _willUseSharedState4 = _slicedToArray__default['default'](_willUseSharedState3, 2),
265
- useHiddenFillHookState = _willUseSharedState4[0],
266
- useHiddenFillHookStateRef = _willUseSharedState4[1];
421
+ var parsePathOrSelector = function parsePathOrSelector(pathOrSelector) {
422
+ var isNotSelector = typeof pathOrSelector !== 'function';
267
423
 
268
- var DEFAULT_CONTEXT = new Map();
269
- var SlotProvider = function SlotProvider(_ref) {
270
- var children = _ref.children;
271
- return React__default['default'].createElement(SlotContext.Provider, {
272
- value: DEFAULT_CONTEXT
273
- }, children, React__default['default'].createElement(React__default['default'].Suspense, {
274
- fallback: null
275
- }, React__default['default'].createElement(FillHooks, null)), React__default['default'].createElement(HiddenFillHooks, null));
424
+ if (isNotSelector) {
425
+ return [utils.formatPath(pathOrSelector), pathSelector(pathOrSelector)];
426
+ } else {
427
+ return ['', pathOrSelector];
428
+ }
276
429
  };
277
- var Slot = function Slot(_ref2) {
278
- var name = _ref2.name,
279
- children = _ref2.children,
280
- rest = _objectWithoutProperties__default['default'](_ref2, ["name", "children"]);
281
430
 
282
- var ref = React.useRef();
283
- var slotInfo = useConstant({
431
+ var willUseSpreadState = function willUseSpreadState(defaultContextValue) {
432
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
433
+ var Context = React__default['default'].createContext(defaultContextValue);
434
+ var EMPTY_GLOBAL = {};
435
+ var prevInitState = EMPTY_GLOBAL;
436
+ var globalState = EMPTY_GLOBAL;
437
+
438
+ var getGlobalState = function getGlobalState(key) {
439
+ return _isString__default['default'](key) || _isArray__default['default'](key) ? _get__default['default'](key, globalState) : globalState;
440
+ };
441
+
442
+ var useProvideSpreadState = function useProvideSpreadState(initState, setCallback) {
443
+ var _useConsumerCatalog = core.useConsumerCatalog(function (input) {
444
+ return updateAllInputsState([input], state.get());
445
+ }),
446
+ _useConsumerCatalog2 = _slicedToArray__default['default'](_useConsumerCatalog, 2),
447
+ consumerList = _useConsumerCatalog2[0],
448
+ manager = _useConsumerCatalog2[1];
449
+
450
+ var state = core.useRefState(initState, setCallback);
451
+
452
+ if (options.initRefCheck) {
453
+ if (prevInitState !== initState) {
454
+ globalState = initState;
455
+ }
456
+
457
+ prevInitState = initState;
458
+ }
459
+
460
+ if (globalState === EMPTY_GLOBAL) {
461
+ globalState = initState;
462
+ }
463
+
464
+ React.useEffect(function () {
465
+ globalState = state.get();
466
+ }, []);
467
+
468
+ var setState = function setState(newState, fastPath, config) {
469
+ // console.log("Fastpath noop:"+fastPath)
470
+ state.set(newState, config);
471
+ globalState = state.get();
472
+ updateAllInputsState(consumerList(), state.get());
473
+ };
474
+
475
+ var contextValue = React.useMemo(function () {
476
+ return [state.get, setState, manager];
477
+ }, []);
478
+ return [Context.Provider, contextValue, [state.get, setState]];
479
+ };
480
+
481
+ var useSpreadState = function useSpreadState(pathOrSelector, inputs) {
482
+ var _useContext = React.useContext(Context),
483
+ _useContext2 = _slicedToArray__default['default'](_useContext, 3),
484
+ getSpreadState = _useContext2[0],
485
+ setSpreadState = _useContext2[1],
486
+ manager = _useContext2[2];
487
+
488
+ var _parsePathOrSelector = parsePathOrSelector(pathOrSelector),
489
+ _parsePathOrSelector2 = _slicedToArray__default['default'](_parsePathOrSelector, 2),
490
+ path = _parsePathOrSelector2[0],
491
+ selector = _parsePathOrSelector2[1];
492
+
493
+ var pathOrInput = [path] || inputs || [];
494
+
495
+ var _useState = React.useState(selector(getSpreadState())),
496
+ _useState2 = _slicedToArray__default['default'](_useState, 2),
497
+ value = _useState2[0],
498
+ setValue = _useState2[1];
499
+
500
+ var isUnmounted = core.useIsUnmounted();
501
+ var currentPath = core.useRefState(path);
502
+
503
+ if (path !== currentPath.get()) {
504
+ /* when path changes, the consumerCatalogCallback will update the new value
505
+ * another solution would be to call setValue here directly
506
+ * the return value will still be the old, but will be changed before render, just like getDerivedStateFromProps
507
+ *
508
+ * if there's a need for the return value to be the same, the value or, if enters here new value,
509
+ * can be returned in an temp variable
510
+ * */
511
+ currentPath.set(path);
512
+ }
513
+
514
+ var input = React.useMemo(function () {
515
+ return [function (v) {
516
+ /* noop for elements that may be unregistered while looping through consumerList */
517
+ if (path === currentPath.get() && !isUnmounted()) {
518
+ setValue(v);
519
+ }
520
+ }, selector];
521
+ }, pathOrInput);
522
+ core.useCatalogManager(manager, input);
523
+ var setState = React.useCallback(function (v) {
524
+ return setSpreadState((_isFunction__default['default'](v) ? pathOrSelector === undefined ? function () {
525
+ return v;
526
+ } : _update__default['default'] : _set__default['default'])(path, v), path);
527
+ }, pathOrInput);
528
+
529
+ var getValue = function getValue() {
530
+ return selector(getGlobalState());
531
+ };
532
+
533
+ return [value, setState, getValue];
534
+ };
535
+
536
+ return [useProvideSpreadState, useSpreadState, Context, getGlobalState];
537
+ };
538
+
539
+ var SlotContext = React__default['default'].createContext(new Map());
540
+
541
+ var _willUseSharedState = core.willUseSharedState(),
542
+ _willUseSharedState2 = _slicedToArray__default['default'](_willUseSharedState, 2),
543
+ useFillHookState = _willUseSharedState2[0],
544
+ useFillHookStateRef = _willUseSharedState2[1];
545
+
546
+ var _willUseSharedState3 = core.willUseSharedState(),
547
+ _willUseSharedState4 = _slicedToArray__default['default'](_willUseSharedState3, 2),
548
+ useHiddenFillHookState = _willUseSharedState4[0],
549
+ useHiddenFillHookStateRef = _willUseSharedState4[1];
550
+
551
+ var DEFAULT_CONTEXT = new Map();
552
+ var SlotProvider = function SlotProvider(_ref) {
553
+ var children = _ref.children;
554
+ return React__default['default'].createElement(SlotContext.Provider, {
555
+ value: DEFAULT_CONTEXT
556
+ }, children, React__default['default'].createElement(React__default['default'].Suspense, {
557
+ fallback: null
558
+ }, React__default['default'].createElement(FillHooks, null)), React__default['default'].createElement(HiddenFillHooks, null));
559
+ };
560
+ var Slot = function Slot(_ref2) {
561
+ var name = _ref2.name,
562
+ children = _ref2.children,
563
+ rest = _objectWithoutProperties__default['default'](_ref2, ["name", "children"]);
564
+
565
+ var ref = React.useRef();
566
+ var slotInfo = core.useConstant({
284
567
  ref: ref
285
568
  });
286
569
  var slots = React.useContext(SlotContext);
@@ -518,113 +801,296 @@ var useHiddenFill = function useHiddenFill(children, inputs) {
518
801
  }, []);
519
802
  };
520
803
 
521
- var isPath = function isPath(path) {
522
- return typeof path === 'string' || typeof path === 'number' || Array.isArray(path);
523
- };
524
-
525
- var getter = function getter(value) {
526
- return function (path) {
527
- return path !== "" && isPath(path) ? utils._s.get(path, value) : value;
528
- };
804
+ var propsOrConsume = function propsOrConsume(prop, Consumer, childrenAsFunction) {
805
+ return prop ? childrenAsFunction(prop) : React__default['default'].createElement(Consumer, null, childrenAsFunction);
529
806
  };
530
807
 
531
- var uninitialized = {};
532
- var useRefState = function useRefState(defaultValue, setCallback) {
533
- var ref = React.useRef(uninitialized);
534
-
535
- if (ref.current === uninitialized) {
536
- ref.current = utils.callIfFunction(defaultValue);
537
- }
538
-
539
- return React.useMemo(function () {
540
- var get = function get(path) {
541
- return getter(ref.current)(path);
542
- };
808
+ var addConsumers = function addConsumers(Component, obj) {
809
+ return Object.entries(obj).reduce(function (acc, _ref) {
810
+ var _ref2 = _slicedToArray__default['default'](_ref, 2),
811
+ propKey = _ref2[0],
812
+ Consumer = _ref2[1];
543
813
 
544
- var set = function set(v, config) {
545
- var prev = ref.current;
546
- ref.current = utils.callIfFunctions(v, function () {
547
- return get();
814
+ return function (props) {
815
+ return propsOrConsume(props[propKey], Consumer, function (v) {
816
+ return acc(_objectSpread__default['default'](_defineProperty__default['default']({}, propKey, v), props));
548
817
  });
549
-
550
- if (prev !== ref.current && (!config || !config.ignoreCallback)) {
551
- utils.callIfFunction(setCallback, prev, ref.current);
552
- }
553
818
  };
819
+ }, function (props) {
820
+ return React__default['default'].createElement(Component, props);
821
+ });
822
+ };
554
823
 
555
- return {
556
- get: get,
557
- set: set
824
+ var consumes = function consumes(obj) {
825
+ return function (Component) {
826
+ var withConsumers = addConsumers(Component, obj);
827
+ return function (props) {
828
+ return withConsumers(props);
558
829
  };
559
- }, []);
830
+ };
560
831
  };
561
832
 
562
- var useCallState = function useCallState(defaultValue, setCallback) {
563
- var _useState = React.useState(defaultValue),
564
- _useState2 = _slicedToArray__default['default'](_useState, 2),
565
- val = _useState2[0],
566
- setValue = _useState2[1];
833
+ var withDialogError = function withDialogError(Dialog) {
834
+ var ErrorBoundedComponent = React__default['default'].forwardRef(function (props, ref) {
835
+ return React__default['default'].createElement(Dialog, _extends__default['default']({
836
+ ref: ref
837
+ }, props)); // const ErrorBoundary = __internals('ErrorBoundary')
567
838
 
568
- return React.useMemo(function () {
569
- var get = function get() {
570
- return val;
571
- };
839
+ /*return (
840
+ <ErrorBoundary Error={props.Error || __internals('DialogError')} closeDialog={props.closeDialog}>
841
+ <Dialog {...props}/>
842
+ </ErrorBoundary>
843
+ )*/
844
+ }); // ErrorBoundedComponent.contextTypes = {startlibs:()=>null}
572
845
 
573
- return {
574
- get: get,
575
- val: val,
576
- set: setValue
577
- };
578
- }, [val]);
846
+ return ErrorBoundedComponent;
579
847
  };
580
848
 
581
- var useIsUnmounted = function useIsUnmounted() {
582
- var unmounted = React.useRef();
583
- React.useEffect(function () {
584
- return function () {
585
- return unmounted.current = true;
586
- };
587
- }, []);
588
- return function () {
589
- return unmounted.current;
590
- };
591
- };
849
+ var GroupEventFactory = function GroupEventFactory() {
850
+ var emitter = mitt__default['default']();
592
851
 
593
- var useToggleInternal = function useToggleInternal() {
594
- var startWith = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
595
- var useStore = arguments.length > 1 ? arguments[1] : undefined;
596
- var callback = arguments.length > 2 ? arguments[2] : undefined;
597
- var key = arguments.length > 3 ? arguments[3] : undefined;
598
- var isOpen = useStore(startWith);
599
- var closing = useStore(false);
600
- var refIsOpen = useRefState(isOpen.get());
601
- var refIsClosing = useRefState(closing.get());
602
- var timerId = React.useRef();
603
- var isUnmounted = useIsUnmounted();
852
+ var WithGroupEvent =
853
+ /*#__PURE__*/
854
+ function (_React$Component) {
855
+ _inherits__default['default'](WithGroupEvent, _React$Component);
604
856
 
605
- var clearClosing = function clearClosing() {
606
- if (refIsClosing.get() !== false) {
607
- closing.set(false);
608
- refIsClosing.set(false);
609
- window.clearTimeout(timerId.current);
610
- }
611
- };
857
+ function WithGroupEvent() {
858
+ var _getPrototypeOf2;
612
859
 
613
- var toggleWith = function toggleWith() {
614
- var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
615
- var calledValue = utils.callIfFunction(value, refIsOpen.get());
616
- var newValue = refIsOpen.get() === calledValue ? !calledValue : calledValue;
860
+ var _this;
617
861
 
618
- if (!isUnmounted() && refIsOpen.get() !== newValue) {
619
- var result = utils.callIfFunction(callback, newValue, refIsOpen.get());
862
+ _classCallCheck__default['default'](this, WithGroupEvent);
620
863
 
621
- if (result === false) {
622
- return;
864
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
865
+ args[_key] = arguments[_key];
623
866
  }
624
867
 
625
- isOpen.set(newValue);
626
- refIsOpen.set(newValue);
627
- clearClosing();
868
+ _this = _possibleConstructorReturn__default['default'](this, (_getPrototypeOf2 = _getPrototypeOf__default['default'](WithGroupEvent)).call.apply(_getPrototypeOf2, [this].concat(args)));
869
+ _this.events = {};
870
+
871
+ _this.processEvent = function (type, event) {
872
+ (_this.events[type] || []).forEach(function (c) {
873
+ return c(event);
874
+ });
875
+ };
876
+
877
+ _this.groupEventProps = {
878
+ on: function on(type, callback) {
879
+ _this.events[type] = (_this.events[type] || []).concat(callback);
880
+ },
881
+ off: function off(type, callback) {
882
+ _this.events[type] = (_this.events[type] || []).filter(function (e) {
883
+ return e !== callback;
884
+ });
885
+ },
886
+ emit: emitter.emit
887
+ };
888
+ return _this;
889
+ }
890
+
891
+ _createClass__default['default'](WithGroupEvent, [{
892
+ key: "componentDidMount",
893
+ value: function componentDidMount() {
894
+ emitter.on('*', this.processEvent);
895
+ }
896
+ }, {
897
+ key: "componentWillUnmount",
898
+ value: function componentWillUnmount() {
899
+ emitter.off('*', this.processEvent);
900
+ }
901
+ }, {
902
+ key: "render",
903
+ value: function render() {
904
+ return this.props.children(this.groupEventProps);
905
+ }
906
+ }]);
907
+
908
+ return WithGroupEvent;
909
+ }(React__default['default'].Component);
910
+
911
+ return WithGroupEvent;
912
+ };
913
+ var withGroupEvent = function withGroupEvent(Component) {
914
+ var WithGroupEvent = GroupEventFactory();
915
+ return React__default['default'].forwardRef(function (props, ref) {
916
+ return React__default['default'].createElement(WithGroupEvent, null, function (groupEvent) {
917
+ return React__default['default'].createElement(Component, _extends__default['default']({}, props, {
918
+ ref: ref,
919
+ groupEvent: groupEvent
920
+ }));
921
+ });
922
+ });
923
+ };
924
+
925
+ var WithRef =
926
+ /*#__PURE__*/
927
+ function (_React$Component) {
928
+ _inherits__default['default'](WithRef, _React$Component);
929
+
930
+ function WithRef(props) {
931
+ var _this;
932
+
933
+ _classCallCheck__default['default'](this, WithRef);
934
+
935
+ _this = _possibleConstructorReturn__default['default'](this, _getPrototypeOf__default['default'](WithRef).call(this, props));
936
+ var total = props.length || props.children.length;
937
+ var refs = new Array(total);
938
+
939
+ for (var i = 0; i < total; i++) {
940
+ refs[i] = React__default['default'].createRef();
941
+ }
942
+
943
+ _this.createdRefs = refs;
944
+ return _this;
945
+ }
946
+
947
+ _createClass__default['default'](WithRef, [{
948
+ key: "render",
949
+ value: function render() {
950
+ var children = this.props.children;
951
+ return children.apply(void 0, _toConsumableArray__default['default'](this.createdRefs));
952
+ }
953
+ }]);
954
+
955
+ return WithRef;
956
+ }(React__default['default'].Component);
957
+
958
+ var addExtraProp = function addExtraProp(element, extra) {
959
+ var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
960
+ return React__default['default'].cloneElement(element, override ? _objectSpread__default['default']({}, element.props, extra) : _objectSpread__default['default']({}, extra, element.props), element.props.children);
961
+ };
962
+
963
+ var WithLazyPlaceholder = function WithLazyPlaceholder(_ref) {
964
+ var value = _ref.value,
965
+ fallback = _ref.fallback,
966
+ children = _ref.children,
967
+ _ref$forwardProps = _ref.forwardProps,
968
+ forwardProps = _ref$forwardProps === void 0 ? false : _ref$forwardProps,
969
+ props = _objectWithoutProperties__default['default'](_ref, ["value", "fallback", "children", "forwardProps"]);
970
+
971
+ return React__default['default'].createElement(React__default['default'].Suspense, {
972
+ fallback: React__default['default'].Children.map(children(fallback, {
973
+ isLoading: true
974
+ }), function (child) {
975
+ return React__default['default'].isValidElement(child) ? addExtraProp(child, {
976
+ isLoading: true
977
+ }, false) : child;
978
+ })
979
+ }, React__default['default'].createElement(Load, {
980
+ value: value,
981
+ children: children,
982
+ forwardProps: forwardProps && props
983
+ }));
984
+ };
985
+ var WithLazyResource = function WithLazyResource(_ref2) {
986
+ var value = _ref2.value,
987
+ wrap = _ref2.wrap,
988
+ fallback = _ref2.fallback,
989
+ children = _ref2.children,
990
+ _ref2$forwardProps = _ref2.forwardProps,
991
+ forwardProps = _ref2$forwardProps === void 0 ? false : _ref2$forwardProps,
992
+ props = _objectWithoutProperties__default['default'](_ref2, ["value", "wrap", "fallback", "children", "forwardProps"]);
993
+
994
+ return wrap || fallback !== undefined ? React__default['default'].createElement(React__default['default'].Suspense, {
995
+ fallback: utils.ifUndefined(fallback, null)
996
+ }, React__default['default'].createElement(Load, {
997
+ value: value,
998
+ forwardProps: forwardProps && props,
999
+ children: children
1000
+ })) : React__default['default'].createElement(Load, {
1001
+ value: value,
1002
+ children: children,
1003
+ forwardProps: forwardProps && props
1004
+ });
1005
+ };
1006
+
1007
+ var Load = function Load(_ref3) {
1008
+ var value = _ref3.value,
1009
+ children = _ref3.children,
1010
+ forwardProps = _ref3.forwardProps;
1011
+ var loaded = _isArray__default['default'](value) ? value.forEach(function (v) {
1012
+ return v.promise();
1013
+ }) || value.map(function (v) {
1014
+ return v.read();
1015
+ }) : value.read();
1016
+
1017
+ var _useReducer = React.useReducer(function (s) {
1018
+ return s + 1;
1019
+ }, 0),
1020
+ _useReducer2 = _slicedToArray__default['default'](_useReducer, 2),
1021
+ update = _useReducer2[1];
1022
+
1023
+ var refresh = function refresh() {
1024
+ return Promise.all(_isArray__default['default'](value) ? value.map(function (v) {
1025
+ return v.refresh().promise();
1026
+ }) : [value.refresh().promise()]).then(update);
1027
+ };
1028
+
1029
+ return forwardProps ? addExtraProp(children(loaded, {
1030
+ refresh: refresh,
1031
+ update: update
1032
+ }), forwardProps) : children(loaded, {
1033
+ refresh: refresh,
1034
+ update: update
1035
+ });
1036
+ };
1037
+
1038
+ var useCallbackStable = function useCallbackStable(fn) {
1039
+ var ref = React__default['default'].useRef([fn, function () {
1040
+ return ref[0].apply(ref, arguments);
1041
+ }]).current; // Per Dan Abramov: useInsertionEffect executes marginally closer to the
1042
+ // correct timing for ref synchronization than useLayoutEffect on React 18.
1043
+ // See: https://github.com/facebook/react/pull/25881#issuecomment-1356244360
1044
+
1045
+ React.useInsertionEffect(function () {
1046
+ ref[0] = fn;
1047
+ });
1048
+ return ref[1];
1049
+ };
1050
+
1051
+ var WithEffect = function WithEffect(_ref) {
1052
+ var _ref$inputs = _ref.inputs,
1053
+ inputs = _ref$inputs === void 0 ? [] : _ref$inputs,
1054
+ children = _ref.children;
1055
+ React.useEffect(children, inputs);
1056
+ return null;
1057
+ };
1058
+
1059
+ var useToggleInternal = function useToggleInternal() {
1060
+ var startWith = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1061
+ var useStore = arguments.length > 1 ? arguments[1] : undefined;
1062
+ var callback = arguments.length > 2 ? arguments[2] : undefined;
1063
+ var key = arguments.length > 3 ? arguments[3] : undefined;
1064
+ var isOpen = useStore(startWith);
1065
+ var closing = useStore(false);
1066
+ var refIsOpen = core.useRefState(isOpen.get());
1067
+ var refIsClosing = core.useRefState(closing.get());
1068
+ var timerId = React.useRef();
1069
+ var isUnmounted = core.useIsUnmounted();
1070
+
1071
+ var clearClosing = function clearClosing() {
1072
+ if (refIsClosing.get() !== false) {
1073
+ closing.set(false);
1074
+ refIsClosing.set(false);
1075
+ window.clearTimeout(timerId.current);
1076
+ }
1077
+ };
1078
+
1079
+ var toggleWith = function toggleWith() {
1080
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
1081
+ var calledValue = utils.callIfFunction(value, refIsOpen.get());
1082
+ var newValue = refIsOpen.get() === calledValue ? !calledValue : calledValue;
1083
+
1084
+ if (!isUnmounted() && refIsOpen.get() !== newValue) {
1085
+ var result = utils.callIfFunction(callback, newValue, refIsOpen.get());
1086
+
1087
+ if (result === false) {
1088
+ return;
1089
+ }
1090
+
1091
+ isOpen.set(newValue);
1092
+ refIsOpen.set(newValue);
1093
+ clearClosing();
628
1094
  }
629
1095
  };
630
1096
 
@@ -797,10 +1263,10 @@ var useToggleInternal = function useToggleInternal() {
797
1263
  };
798
1264
 
799
1265
  var useToggle = function useToggle(startWith, callback, key) {
800
- return useToggleInternal(startWith, useCallState, callback, key);
1266
+ return useToggleInternal(startWith, core.useCallState, callback, key);
801
1267
  };
802
1268
  var useRefToggle = function useRefToggle(startWith) {
803
- return useToggleInternal(startWith, useRefState);
1269
+ return useToggleInternal(startWith, core.useRefState);
804
1270
  };
805
1271
 
806
1272
  var prevOpenToggleClose = function prevOpenToggleClose() {};
@@ -814,7 +1280,7 @@ var clearPopups = function clearPopups() {
814
1280
  }
815
1281
  };
816
1282
  var usePopupToggle = function usePopupToggle(startWith, callback) {
817
- var toggle = useToggle(startWith, function (v, prev) {
1283
+ var toggle = core.useToggle(startWith, function (v, prev) {
818
1284
  var result = utils.callIfFunction(callback, v, prev);
819
1285
 
820
1286
  if (result === false) {
@@ -837,413 +1303,100 @@ var usePopupToggle = function usePopupToggle(startWith, callback) {
837
1303
  return toggle;
838
1304
  };
839
1305
 
840
- var StartlibsContext = React__default['default'].createContext({});
841
- var PopupContext = React__default['default'].createContext({});
842
- var StartlibsMetacontext = React__default['default'].createContext(function () {});
843
- var StartlibsConsumer = StartlibsContext.Consumer;
844
- var wrappeStyle = {
845
- height: '100%'
846
- };
847
- var StartlibsProvider =
848
- /*#__PURE__*/
849
- function (_React$Component) {
850
- _inherits__default['default'](StartlibsProvider, _React$Component);
851
-
852
- function StartlibsProvider() {
853
- var _getPrototypeOf2;
1306
+ var useCallState = function useCallState(defaultValue, setCallback) {
1307
+ var _useState = React.useState(defaultValue),
1308
+ _useState2 = _slicedToArray__default['default'](_useState, 2),
1309
+ val = _useState2[0],
1310
+ setValue = _useState2[1];
854
1311
 
855
- var _this;
1312
+ return React.useMemo(function () {
1313
+ var get = function get() {
1314
+ return val;
1315
+ };
856
1316
 
857
- _classCallCheck__default['default'](this, StartlibsProvider);
1317
+ return {
1318
+ get: get,
1319
+ val: val,
1320
+ set: setValue
1321
+ };
1322
+ }, [val]);
1323
+ };
858
1324
 
859
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
860
- args[_key] = arguments[_key];
861
- }
1325
+ var isPath = function isPath(path) {
1326
+ return typeof path === 'string' || typeof path === 'number' || Array.isArray(path);
1327
+ };
862
1328
 
863
- _this = _possibleConstructorReturn__default['default'](this, (_getPrototypeOf2 = _getPrototypeOf__default['default'](StartlibsProvider)).call.apply(_getPrototypeOf2, [this].concat(args)));
864
- _this.openToggles = new Map();
1329
+ var getter = function getter(value) {
1330
+ return function (path) {
1331
+ return path !== "" && isPath(path) ? utils._s.get(path, value) : value;
1332
+ };
1333
+ };
865
1334
 
866
- _this.popupToggleRender = function (_ref, ref) {
867
- var isOpen = _ref.isOpen,
868
- close = _ref.close;
1335
+ var uninitialized = {};
1336
+ var useRefState = function useRefState(defaultValue, setCallback) {
1337
+ var ref = React.useRef(uninitialized);
869
1338
 
870
- if (isOpen && !_this.openToggles.has(ref)) {
871
- _this.closePopup();
1339
+ if (ref.current === uninitialized) {
1340
+ ref.current = utils.callIfFunction(defaultValue);
1341
+ }
872
1342
 
873
- _this.openToggles.set(ref, close);
874
- }
1343
+ return React.useMemo(function () {
1344
+ var get = function get(path) {
1345
+ return getter(ref.current)(path);
875
1346
  };
876
1347
 
877
- _this.closePopup = function () {
878
- clearPopups();
879
- };
880
-
881
- _this.startlibsMeta = new Map();
882
-
883
- _this.getMeta = function (key, initValue) {
884
- var exists = _this.startlibsMeta.get(key);
885
-
886
- if (exists) return exists;
887
-
888
- _this.startlibsMeta.set(key, utils.callIfFunction(initValue));
889
-
890
- return initValue;
891
- };
892
-
893
- return _this;
894
- }
895
-
896
- _createClass__default['default'](StartlibsProvider, [{
897
- key: "componentDidMount",
898
- value: function componentDidMount() {
899
- utils.fixMediaQuery();
900
-
901
- var addVHFix = function addVHFix() {
902
- var _document$documentEle, _document$documentEle2;
903
-
904
- var vh = window.innerHeight * 0.01;
905
- (_document$documentEle = document.documentElement) === null || _document$documentEle === void 0 ? void 0 : (_document$documentEle2 = _document$documentEle.style) === null || _document$documentEle2 === void 0 ? void 0 : _document$documentEle2.setProperty('--vh', "".concat(vh, "px"));
906
- };
907
-
908
- window.addEventListener('resize', _debounce__default['default'](200, addVHFix));
909
- addVHFix();
910
- }
911
- }, {
912
- key: "render",
913
- value: function render() {
914
- return React__default['default'].createElement(StartlibsContext.Provider, {
915
- value: this.props.value
916
- }, React__default['default'].createElement(StartlibsMetacontext.Provider, {
917
- value: this.getMeta
918
- }, React__default['default'].createElement(PopupContext.Provider, {
919
- value: this.popupToggleRender
920
- }, React__default['default'].createElement(SlotProvider, null, React__default['default'].createElement("div", {
921
- style: wrappeStyle,
922
- onClick: this.closePopup
923
- }, this.props.children)))));
924
- }
925
- }]);
926
-
927
- return StartlibsProvider;
928
- }(React__default['default'].Component);
929
-
930
- var propsOrConsume = function propsOrConsume(prop, Consumer, childrenAsFunction) {
931
- return prop ? childrenAsFunction(prop) : React__default['default'].createElement(Consumer, null, childrenAsFunction);
932
- };
933
-
934
- var addConsumers = function addConsumers(Component, obj) {
935
- return Object.entries(obj).reduce(function (acc, _ref) {
936
- var _ref2 = _slicedToArray__default['default'](_ref, 2),
937
- propKey = _ref2[0],
938
- Consumer = _ref2[1];
939
-
940
- return function (props) {
941
- return propsOrConsume(props[propKey], Consumer, function (v) {
942
- return acc(_objectSpread__default['default'](_defineProperty__default['default']({}, propKey, v), props));
1348
+ var set = function set(v, config) {
1349
+ var prev = ref.current;
1350
+ ref.current = utils.callIfFunctions(v, function () {
1351
+ return get();
943
1352
  });
944
- };
945
- }, function (props) {
946
- return React__default['default'].createElement(Component, props);
947
- });
948
- };
949
-
950
- var consumes = function consumes(obj) {
951
- return function (Component) {
952
- var withConsumers = addConsumers(Component, obj);
953
- return function (props) {
954
- return withConsumers(props);
955
- };
956
- };
957
- };
958
-
959
- var withDialogError = function withDialogError(Dialog) {
960
- var ErrorBoundedComponent = React__default['default'].forwardRef(function (props, ref) {
961
- return React__default['default'].createElement(Dialog, _extends__default['default']({
962
- ref: ref
963
- }, props)); // const ErrorBoundary = __internals('ErrorBoundary')
964
-
965
- /*return (
966
- <ErrorBoundary Error={props.Error || __internals('DialogError')} closeDialog={props.closeDialog}>
967
- <Dialog {...props}/>
968
- </ErrorBoundary>
969
- )*/
970
- }); // ErrorBoundedComponent.contextTypes = {startlibs:()=>null}
971
-
972
- return ErrorBoundedComponent;
973
- };
974
-
975
- var GroupEventFactory = function GroupEventFactory() {
976
- var emitter = mitt__default['default']();
977
1353
 
978
- var WithGroupEvent =
979
- /*#__PURE__*/
980
- function (_React$Component) {
981
- _inherits__default['default'](WithGroupEvent, _React$Component);
982
-
983
- function WithGroupEvent() {
984
- var _getPrototypeOf2;
985
-
986
- var _this;
987
-
988
- _classCallCheck__default['default'](this, WithGroupEvent);
989
-
990
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
991
- args[_key] = arguments[_key];
992
- }
993
-
994
- _this = _possibleConstructorReturn__default['default'](this, (_getPrototypeOf2 = _getPrototypeOf__default['default'](WithGroupEvent)).call.apply(_getPrototypeOf2, [this].concat(args)));
995
- _this.events = {};
996
-
997
- _this.processEvent = function (type, event) {
998
- (_this.events[type] || []).forEach(function (c) {
999
- return c(event);
1000
- });
1001
- };
1002
-
1003
- _this.groupEventProps = {
1004
- on: function on(type, callback) {
1005
- _this.events[type] = (_this.events[type] || []).concat(callback);
1006
- },
1007
- off: function off(type, callback) {
1008
- _this.events[type] = (_this.events[type] || []).filter(function (e) {
1009
- return e !== callback;
1010
- });
1011
- },
1012
- emit: emitter.emit
1013
- };
1014
- return _this;
1015
- }
1016
-
1017
- _createClass__default['default'](WithGroupEvent, [{
1018
- key: "componentDidMount",
1019
- value: function componentDidMount() {
1020
- emitter.on('*', this.processEvent);
1021
- }
1022
- }, {
1023
- key: "componentWillUnmount",
1024
- value: function componentWillUnmount() {
1025
- emitter.off('*', this.processEvent);
1026
- }
1027
- }, {
1028
- key: "render",
1029
- value: function render() {
1030
- return this.props.children(this.groupEventProps);
1354
+ if (prev !== ref.current && (!config || !config.ignoreCallback)) {
1355
+ utils.callIfFunction(setCallback, prev, ref.current);
1031
1356
  }
1032
- }]);
1033
-
1034
- return WithGroupEvent;
1035
- }(React__default['default'].Component);
1036
-
1037
- return WithGroupEvent;
1038
- };
1039
- var withGroupEvent = function withGroupEvent(Component) {
1040
- var WithGroupEvent = GroupEventFactory();
1041
- return React__default['default'].forwardRef(function (props, ref) {
1042
- return React__default['default'].createElement(WithGroupEvent, null, function (groupEvent) {
1043
- return React__default['default'].createElement(Component, _extends__default['default']({}, props, {
1044
- ref: ref,
1045
- groupEvent: groupEvent
1046
- }));
1047
- });
1048
- });
1049
- };
1050
-
1051
- var WithRef =
1052
- /*#__PURE__*/
1053
- function (_React$Component) {
1054
- _inherits__default['default'](WithRef, _React$Component);
1055
-
1056
- function WithRef(props) {
1057
- var _this;
1058
-
1059
- _classCallCheck__default['default'](this, WithRef);
1060
-
1061
- _this = _possibleConstructorReturn__default['default'](this, _getPrototypeOf__default['default'](WithRef).call(this, props));
1062
- var total = props.length || props.children.length;
1063
- var refs = new Array(total);
1064
-
1065
- for (var i = 0; i < total; i++) {
1066
- refs[i] = React__default['default'].createRef();
1067
- }
1068
-
1069
- _this.createdRefs = refs;
1070
- return _this;
1071
- }
1072
-
1073
- _createClass__default['default'](WithRef, [{
1074
- key: "render",
1075
- value: function render() {
1076
- var children = this.props.children;
1077
- return children.apply(void 0, _toConsumableArray__default['default'](this.createdRefs));
1078
- }
1079
- }]);
1080
-
1081
- return WithRef;
1082
- }(React__default['default'].Component);
1083
-
1084
- var addExtraProp = function addExtraProp(element, extra) {
1085
- var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
1086
- return React__default['default'].cloneElement(element, override ? _objectSpread__default['default']({}, element.props, extra) : _objectSpread__default['default']({}, extra, element.props), element.props.children);
1087
- };
1088
-
1089
- var WithLazyResource = function WithLazyResource(_ref) {
1090
- var value = _ref.value,
1091
- wrap = _ref.wrap,
1092
- fallback = _ref.fallback,
1093
- children = _ref.children,
1094
- _ref$forwardProps = _ref.forwardProps,
1095
- forwardProps = _ref$forwardProps === void 0 ? false : _ref$forwardProps,
1096
- props = _objectWithoutProperties__default['default'](_ref, ["value", "wrap", "fallback", "children", "forwardProps"]);
1097
-
1098
- return wrap || fallback !== undefined ? React__default['default'].createElement(React__default['default'].Suspense, {
1099
- fallback: utils.ifUndefined(fallback, null)
1100
- }, React__default['default'].createElement(Load, {
1101
- value: value,
1102
- forwardProps: forwardProps && props,
1103
- children: children
1104
- })) : React__default['default'].createElement(Load, {
1105
- value: value,
1106
- children: children,
1107
- forwardProps: forwardProps && props
1108
- });
1109
- };
1110
-
1111
- var Load = function Load(_ref2) {
1112
- var value = _ref2.value,
1113
- children = _ref2.children,
1114
- forwardProps = _ref2.forwardProps;
1115
- var loaded = _isArray__default['default'](value) ? value.forEach(function (v) {
1116
- return v.promise();
1117
- }) || value.map(function (v) {
1118
- return v.read();
1119
- }) : value.read();
1120
-
1121
- var _useReducer = React.useReducer(function (s) {
1122
- return s + 1;
1123
- }, 0),
1124
- _useReducer2 = _slicedToArray__default['default'](_useReducer, 2),
1125
- update = _useReducer2[1];
1126
-
1127
- var refresh = function refresh() {
1128
- return Promise.all(_isArray__default['default'](value) ? value.map(function (v) {
1129
- return v.refresh().promise();
1130
- }) : [value.refresh().promise()]).then(update);
1131
- };
1132
-
1133
- return forwardProps ? addExtraProp(children(loaded, {
1134
- refresh: refresh,
1135
- update: update
1136
- }), forwardProps) : children(loaded, {
1137
- refresh: refresh,
1138
- update: update
1139
- });
1140
- };
1141
-
1142
- var WithEffect = function WithEffect(_ref) {
1143
- var _ref$inputs = _ref.inputs,
1144
- inputs = _ref$inputs === void 0 ? [] : _ref$inputs,
1145
- children = _ref.children;
1146
- React.useEffect(children, inputs);
1147
- return null;
1148
- };
1149
-
1150
- var useConsumerCatalog = function useConsumerCatalog(mountCallback, unmountCallback) {
1151
- var elements = useRefState([]);
1152
- var register = utils.callMany(function (element) {
1153
- return elements.set(function (elements) {
1154
- return elements.concat([element]);
1155
- });
1156
- }, mountCallback);
1157
- var unregister = utils.callMany(function (element) {
1158
- return elements.set(function (elements) {
1159
- return elements.filter(function (_) {
1160
- return _ !== element;
1161
- });
1162
- });
1163
- }, unmountCallback);
1164
- var manager = React.useMemo(function () {
1165
- return {
1166
- register: register,
1167
- unregister: unregister
1168
- };
1169
- }, []);
1170
- return [elements.get, manager];
1171
- };
1172
- var useCatalogManager = function useCatalogManager(_ref, ref) {
1173
- var register = _ref.register,
1174
- unregister = _ref.unregister;
1175
- React.useEffect(function () {
1176
- register(ref);
1177
- return function () {
1178
- return unregister(ref);
1179
1357
  };
1180
- }, [ref]);
1181
- };
1182
-
1183
- var willUseLayers = function willUseLayers() {
1184
- var useEffect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : React__default['default'].useEffect;
1185
-
1186
- var _willUseSharedCallbac = willUseSharedCallback(useEffect),
1187
- _willUseSharedCallbac2 = _slicedToArray__default['default'](_willUseSharedCallbac, 3),
1188
- useRegisterSharedCallback = _willUseSharedCallbac2[0],
1189
- callGroup = _willUseSharedCallbac2[1],
1190
- _getSize = _willUseSharedCallbac2[2];
1191
-
1192
- var useLayer = function useLayer() {
1193
- var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1194
- onFirst = _ref.onFirst,
1195
- onEmpty = _ref.onEmpty,
1196
- onTop = _ref.onTop;
1197
-
1198
- var listener = arguments.length > 1 ? arguments[1] : undefined;
1199
- var resetIndex = React.useCallback(function () {
1200
- setIndex(getIndex());
1201
-
1202
- if (getIndex() + 1 === _getSize()) {
1203
- utils.callIfFunction(onTop, getIndex);
1204
- }
1205
- }, []);
1206
- var getIndex = useRegisterSharedCallback(resetIndex, listener);
1207
-
1208
- var _useState = React.useState(getIndex()),
1209
- _useState2 = _slicedToArray__default['default'](_useState, 2),
1210
- index = _useState2[0],
1211
- setIndex = _useState2[1];
1212
-
1213
- useEffect(function () {
1214
- if (getIndex() === 0) {
1215
- utils.callIfFunction(onFirst);
1216
- }
1217
-
1218
- resetIndex();
1219
- return function () {
1220
- if (_getSize() === 0) {
1221
- utils.callIfFunction(onEmpty);
1222
- }
1223
1358
 
1224
- callGroup();
1225
- };
1226
- }, []);
1227
- return [index, {
1228
- isFirst: function isFirst() {
1229
- return getIndex() === 1;
1230
- },
1231
- isTop: function isTop() {
1232
- return getIndex() === _getSize() - 1;
1233
- },
1234
- isEmpty: function isEmpty() {
1235
- return _getSize() === 0;
1236
- },
1237
- getSize: function getSize() {
1238
- return _getSize();
1239
- }
1240
- }];
1241
- };
1359
+ return {
1360
+ get: get,
1361
+ set: set
1362
+ };
1363
+ }, []);
1364
+ };
1242
1365
 
1243
- return [useLayer, _getSize];
1366
+ var useConsumerCatalog = function useConsumerCatalog(mountCallback, unmountCallback) {
1367
+ var elements = core.useRefState([]);
1368
+ var register = utils.callMany(function (element) {
1369
+ return elements.set(function (elements) {
1370
+ return elements.concat([element]);
1371
+ });
1372
+ }, mountCallback);
1373
+ var unregister = utils.callMany(function (element) {
1374
+ return elements.set(function (elements) {
1375
+ return elements.filter(function (_) {
1376
+ return _ !== element;
1377
+ });
1378
+ });
1379
+ }, unmountCallback);
1380
+ var manager = React.useMemo(function () {
1381
+ return {
1382
+ register: register,
1383
+ unregister: unregister
1384
+ };
1385
+ }, []);
1386
+ return [elements.get, manager];
1387
+ };
1388
+ var useCatalogManager = function useCatalogManager(_ref, ref) {
1389
+ var register = _ref.register,
1390
+ unregister = _ref.unregister;
1391
+ React.useEffect(function () {
1392
+ register(ref);
1393
+ return function () {
1394
+ return unregister(ref);
1395
+ };
1396
+ }, [ref]);
1244
1397
  };
1245
1398
 
1246
- var _willUseLayers = willUseLayers(),
1399
+ var _willUseLayers = core.willUseLayers(),
1247
1400
  _willUseLayers2 = _slicedToArray__default['default'](_willUseLayers, 1),
1248
1401
  useTitleLayers = _willUseLayers2[0];
1249
1402
 
@@ -1318,11 +1471,43 @@ function usePreviousForEffect(value, initialValue) {
1318
1471
  return ref.current;
1319
1472
  }
1320
1473
 
1474
+ var useIsUnmounted = function useIsUnmounted() {
1475
+ var unmounted = React.useRef();
1476
+ React.useEffect(function () {
1477
+ return function () {
1478
+ return unmounted.current = true;
1479
+ };
1480
+ }, []);
1481
+ return function () {
1482
+ return unmounted.current;
1483
+ };
1484
+ };
1485
+
1321
1486
  var useEnsureRef = function useEnsureRef(forwardedRef) {
1322
1487
  var ref = React.useRef();
1323
1488
  return forwardedRef || ref;
1324
1489
  };
1325
1490
 
1491
+ var not_defined = {};
1492
+ var useConstant = function useConstant(value) {
1493
+ var ref = React.useRef(not_defined);
1494
+
1495
+ if (ref.current === not_defined) {
1496
+ ref.current = value;
1497
+ }
1498
+
1499
+ return ref.current;
1500
+ };
1501
+ var useLazyConstant = function useLazyConstant(value) {
1502
+ var ref = React.useRef(not_defined);
1503
+
1504
+ if (ref.current === not_defined) {
1505
+ ref.current = utils.callIfFunction(value);
1506
+ }
1507
+
1508
+ return ref.current;
1509
+ };
1510
+
1326
1511
  var useForceUpdate = function useForceUpdate() {
1327
1512
  var _useState = React.useState(0),
1328
1513
  _useState2 = _slicedToArray__default['default'](_useState, 2),
@@ -1337,7 +1522,7 @@ var useForceUpdate = function useForceUpdate() {
1337
1522
  }; // update the state to force render
1338
1523
  };
1339
1524
  var willUseForceUpdate = function willUseForceUpdate() {
1340
- var _willUseSharedState = willUseSharedState(),
1525
+ var _willUseSharedState = core.willUseSharedState(),
1341
1526
  _willUseSharedState2 = _slicedToArray__default['default'](_willUseSharedState, 3),
1342
1527
  useValue = _willUseSharedState2[0],
1343
1528
  set = _willUseSharedState2[2];
@@ -1364,7 +1549,7 @@ var willUseForceUpdate = function willUseForceUpdate() {
1364
1549
 
1365
1550
  var useUpdateOnResize = function useUpdateOnResize() {
1366
1551
  var debounceInterval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 200;
1367
- var update = useForceUpdate();
1552
+ var update = core.useForceUpdate();
1368
1553
  React.useEffect(function () {
1369
1554
  var trigger = _debounce__default['default'](debounceInterval, update);
1370
1555
 
@@ -1397,152 +1582,6 @@ var useUpdateEffect = function useUpdateEffect(effect, inputs) {
1397
1582
  }, inputs);
1398
1583
  };
1399
1584
 
1400
- var updateAllInputsState = function updateAllInputsState(inputs, values) {
1401
- var deferedUndefined = [];
1402
- inputs.forEach(function (input) {
1403
- var _input = _slicedToArray__default['default'](input, 2),
1404
- setValue = _input[0],
1405
- selector = _input[1];
1406
-
1407
- var newValue = selector(values);
1408
-
1409
- if (newValue === undefined) {
1410
- deferedUndefined.push([setValue, newValue]);
1411
- } else {
1412
- setValue(newValue);
1413
- }
1414
- });
1415
- deferedUndefined.forEach(function (_ref) {
1416
- var _ref2 = _slicedToArray__default['default'](_ref, 2),
1417
- set = _ref2[0],
1418
- value = _ref2[1];
1419
-
1420
- return set(value);
1421
- });
1422
- };
1423
-
1424
- var pathSelector = function pathSelector(path) {
1425
- return utils._s.get(path || []);
1426
- };
1427
-
1428
- var parsePathOrSelector = function parsePathOrSelector(pathOrSelector) {
1429
- var isNotSelector = typeof pathOrSelector !== 'function';
1430
-
1431
- if (isNotSelector) {
1432
- return [utils.formatPath(pathOrSelector), pathSelector(pathOrSelector)];
1433
- } else {
1434
- return ['', pathOrSelector];
1435
- }
1436
- };
1437
-
1438
- var willUseSpreadState = function willUseSpreadState(defaultContextValue) {
1439
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1440
- var Context = React__default['default'].createContext(defaultContextValue);
1441
- var EMPTY_GLOBAL = {};
1442
- var prevInitState = EMPTY_GLOBAL;
1443
- var globalState = EMPTY_GLOBAL;
1444
-
1445
- var getGlobalState = function getGlobalState(key) {
1446
- return _isString__default['default'](key) || _isArray__default['default'](key) ? _get__default['default'](key, globalState) : globalState;
1447
- };
1448
-
1449
- var useProvideSpreadState = function useProvideSpreadState(initState, setCallback) {
1450
- var _useConsumerCatalog = useConsumerCatalog(function (input) {
1451
- return updateAllInputsState([input], state.get());
1452
- }),
1453
- _useConsumerCatalog2 = _slicedToArray__default['default'](_useConsumerCatalog, 2),
1454
- consumerList = _useConsumerCatalog2[0],
1455
- manager = _useConsumerCatalog2[1];
1456
-
1457
- var state = useRefState(initState, setCallback);
1458
-
1459
- if (options.initRefCheck) {
1460
- if (prevInitState !== initState) {
1461
- globalState = initState;
1462
- }
1463
-
1464
- prevInitState = initState;
1465
- }
1466
-
1467
- if (globalState === EMPTY_GLOBAL) {
1468
- globalState = initState;
1469
- }
1470
-
1471
- React.useEffect(function () {
1472
- globalState = state.get();
1473
- }, []);
1474
-
1475
- var setState = function setState(newState, fastPath, config) {
1476
- // console.log("Fastpath noop:"+fastPath)
1477
- state.set(newState, config);
1478
- globalState = state.get();
1479
- updateAllInputsState(consumerList(), state.get());
1480
- };
1481
-
1482
- var contextValue = React.useMemo(function () {
1483
- return [state.get, setState, manager];
1484
- }, []);
1485
- return [Context.Provider, contextValue, [state.get, setState]];
1486
- };
1487
-
1488
- var useSpreadState = function useSpreadState(pathOrSelector, inputs) {
1489
- var _useContext = React.useContext(Context),
1490
- _useContext2 = _slicedToArray__default['default'](_useContext, 3),
1491
- getSpreadState = _useContext2[0],
1492
- setSpreadState = _useContext2[1],
1493
- manager = _useContext2[2];
1494
-
1495
- var _parsePathOrSelector = parsePathOrSelector(pathOrSelector),
1496
- _parsePathOrSelector2 = _slicedToArray__default['default'](_parsePathOrSelector, 2),
1497
- path = _parsePathOrSelector2[0],
1498
- selector = _parsePathOrSelector2[1];
1499
-
1500
- var pathOrInput = [path] || inputs || [];
1501
-
1502
- var _useState = React.useState(selector(getSpreadState())),
1503
- _useState2 = _slicedToArray__default['default'](_useState, 2),
1504
- value = _useState2[0],
1505
- setValue = _useState2[1];
1506
-
1507
- var isUnmounted = useIsUnmounted();
1508
- var currentPath = useRefState(path);
1509
-
1510
- if (path !== currentPath.get()) {
1511
- /* when path changes, the consumerCatalogCallback will update the new value
1512
- * another solution would be to call setValue here directly
1513
- * the return value will still be the old, but will be changed before render, just like getDerivedStateFromProps
1514
- *
1515
- * if there's a need for the return value to be the same, the value or, if enters here new value,
1516
- * can be returned in an temp variable
1517
- * */
1518
- currentPath.set(path);
1519
- }
1520
-
1521
- var input = React.useMemo(function () {
1522
- return [function (v) {
1523
- /* noop for elements that may be unregistered while looping through consumerList */
1524
- if (path === currentPath.get() && !isUnmounted()) {
1525
- setValue(v);
1526
- }
1527
- }, selector];
1528
- }, pathOrInput);
1529
- useCatalogManager(manager, input);
1530
- var setState = React.useCallback(function (v) {
1531
- return setSpreadState((_isFunction__default['default'](v) ? pathOrSelector === undefined ? function () {
1532
- return v;
1533
- } : _update__default['default'] : _set__default['default'])(path, v), path);
1534
- }, pathOrInput);
1535
-
1536
- var getValue = function getValue() {
1537
- return selector(getGlobalState());
1538
- };
1539
-
1540
- return [value, setState, getValue];
1541
- };
1542
-
1543
- return [useProvideSpreadState, useSpreadState, Context, getGlobalState];
1544
- };
1545
-
1546
1585
  var useRefMemo = function useRefMemo(value) {
1547
1586
  var ref = React.useRef(value);
1548
1587
 
@@ -1554,9 +1593,9 @@ var useRefMemo = function useRefMemo(value) {
1554
1593
  };
1555
1594
 
1556
1595
  var IS_ARRAY_ITEMS_EQUALS = function IS_ARRAY_ITEMS_EQUALS(a, b) {
1557
- return a.length === b.length && !a.find(function (itemA, i) {
1596
+ return a.length === b.length && a.findIndex(function (itemA, i) {
1558
1597
  return !Object.is(itemA, b[i]);
1559
- });
1598
+ }) < 0;
1560
1599
  };
1561
1600
 
1562
1601
  var IS_DEPS_EQUALS = function IS_DEPS_EQUALS() {
@@ -1573,7 +1612,7 @@ var EMPTY_DEPS = [];
1573
1612
  var useUpdateSignal = function useUpdateSignal(initialValue) {
1574
1613
  var value = React.useRef(initialValue);
1575
1614
  value.current = initialValue;
1576
- return useLazyConstant(function () {
1615
+ return core.useLazyConstant(function () {
1577
1616
  var registered = [];
1578
1617
 
1579
1618
  var register = function register() {
@@ -1581,7 +1620,7 @@ var useUpdateSignal = function useUpdateSignal(initialValue) {
1581
1620
  var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SHALLOW_IS_EQUAL;
1582
1621
  var selectorRef = React.useRef();
1583
1622
  selectorRef.current = selector;
1584
- var update = useForceUpdate();
1623
+ var update = core.useForceUpdate();
1585
1624
  var lastValueRef = React.useRef(utils._s.select(selectorRef.current, value.current));
1586
1625
  React.useEffect(function () {
1587
1626
  var item = [update, selectorRef, isEqual, lastValueRef];
@@ -1658,7 +1697,7 @@ var createStatefulContext = function createStatefulContext(v) {
1658
1697
  utils = _ref3.utils,
1659
1698
  children = _ref3.children;
1660
1699
  var register = useSelectorSignal(value);
1661
- var v = useLazyConstant(function () {
1700
+ var v = core.useLazyConstant(function () {
1662
1701
  return [register, setValue, utils];
1663
1702
  });
1664
1703
  return React__default['default'].createElement(Ctx.Provider, {
@@ -1674,33 +1713,144 @@ var createStatefulContext = function createStatefulContext(v) {
1674
1713
  return useRegister(selector, deps, isEqual);
1675
1714
  };
1676
1715
 
1677
- var useState = function useState(path, deps) {
1716
+ var useSetValue = function useSetValue(path, deps) {
1678
1717
  var _useContext3 = React.useContext(Ctx),
1679
- _useContext4 = _slicedToArray__default['default'](_useContext3, 3),
1680
- useRegister = _useContext4[0],
1681
- set = _useContext4[1],
1682
- utils$1 = _useContext4[2];
1718
+ _useContext4 = _slicedToArray__default['default'](_useContext3, 2),
1719
+ reg = _useContext4[0],
1720
+ set = _useContext4[1];
1721
+
1722
+ return core.useConstant(function (update) {
1723
+ return set(function (state) {
1724
+ return path ? _update__default['default'](path, function (v) {
1725
+ return utils.callIfFunction(update, v);
1726
+ }, state) : utils.callIfFunction(update, state);
1727
+ });
1728
+ });
1729
+ };
1730
+
1731
+ var useUtils = function useUtils(path, deps) {
1732
+ var _useContext5 = React.useContext(Ctx),
1733
+ _useContext6 = _slicedToArray__default['default'](_useContext5, 3),
1734
+ reg = _useContext6[0],
1735
+ set = _useContext6[1],
1736
+ utils = _useContext6[2];
1737
+
1738
+ return utils;
1739
+ };
1740
+
1741
+ return [Provider, [useSelectValue, useSetValue, useUtils]];
1742
+ };
1743
+ var createSelfStatefulContext = function createSelfStatefulContext(v) {
1744
+ var Ctx = React__default['default'].createContext(v);
1683
1745
 
1684
- var setValue = useConstant(function (update) {
1746
+ var Provider = function Provider(_ref4) {
1747
+ var _ref4$init = _ref4.init,
1748
+ init = _ref4$init === void 0 ? {} : _ref4$init,
1749
+ utils = _ref4.utils,
1750
+ children = _ref4.children;
1751
+
1752
+ var _useState3 = React.useState(init),
1753
+ _useState4 = _slicedToArray__default['default'](_useState3, 2),
1754
+ value = _useState4[0],
1755
+ setValue = _useState4[1];
1756
+
1757
+ var register = useSelectorSignal(value);
1758
+ var v = core.useLazyConstant(function () {
1759
+ return [register, setValue, utils];
1760
+ });
1761
+ return React__default['default'].createElement(Ctx.Provider, {
1762
+ value: v
1763
+ }, children);
1764
+ };
1765
+
1766
+ var useSelectValue = function useSelectValue(selector, deps, isEqual) {
1767
+ var _useContext7 = React.useContext(Ctx),
1768
+ _useContext8 = _slicedToArray__default['default'](_useContext7, 1),
1769
+ useRegister = _useContext8[0];
1770
+
1771
+ return useRegister(selector, deps, isEqual);
1772
+ };
1773
+
1774
+ var useSetState = function useSetState(path, deps) {
1775
+ var _useContext9 = React.useContext(Ctx),
1776
+ _useContext10 = _slicedToArray__default['default'](_useContext9, 3),
1777
+ useRegister = _useContext10[0],
1778
+ set = _useContext10[1],
1779
+ utils$1 = _useContext10[2];
1780
+
1781
+ var setValue = core.useConstant(function (update) {
1685
1782
  return set(function (state) {
1686
1783
  return path ? _update__default['default'](path, function (v) {
1687
1784
  return utils.callIfFunction(update, v);
1688
1785
  }, state) : utils.callIfFunction(update, state);
1689
1786
  });
1690
1787
  });
1691
- return [useRegister(path, deps), setValue, utils$1];
1788
+ return setValue;
1692
1789
  };
1693
1790
 
1694
- return [Provider, useState, useSelectValue];
1791
+ var useUtils = function useUtils(path, deps) {
1792
+ var _useContext11 = React.useContext(Ctx),
1793
+ _useContext12 = _slicedToArray__default['default'](_useContext11, 3),
1794
+ useRegister = _useContext12[0],
1795
+ set = _useContext12[1],
1796
+ utils = _useContext12[2];
1797
+
1798
+ return utils;
1799
+ };
1800
+
1801
+ return [Provider, [useSelectValue, useSetState, useUtils]];
1695
1802
  };
1696
1803
  var createSelectableContext = function createSelectableContext(v) {
1697
1804
  var _createStatefulContex = createStatefulContext(v),
1698
- _createStatefulContex2 = _slicedToArray__default['default'](_createStatefulContex, 3),
1805
+ _createStatefulContex2 = _slicedToArray__default['default'](_createStatefulContex, 2),
1699
1806
  Provider = _createStatefulContex2[0],
1700
- useSelectValue = _createStatefulContex2[2];
1807
+ _createStatefulContex3 = _slicedToArray__default['default'](_createStatefulContex2[1], 1),
1808
+ useSelectValue = _createStatefulContex3[0];
1701
1809
 
1702
1810
  return [Provider, useSelectValue];
1703
1811
  };
1812
+ var createTriggerUpdateContext = function createTriggerUpdateContext(v) {
1813
+ var _createStatefulContex4 = createStatefulContext(v),
1814
+ _createStatefulContex5 = _slicedToArray__default['default'](_createStatefulContex4, 2),
1815
+ Provider = _createStatefulContex5[0],
1816
+ _createStatefulContex6 = _slicedToArray__default['default'](_createStatefulContex5[1], 1),
1817
+ useSelectValue = _createStatefulContex6[0];
1818
+
1819
+ var TriggerProvider = React__default['default'].forwardRef(function (_ref5, ref) {
1820
+ var children = _ref5.children;
1821
+
1822
+ var _useState5 = React.useState(0),
1823
+ _useState6 = _slicedToArray__default['default'](_useState5, 2),
1824
+ v = _useState6[0],
1825
+ setV = _useState6[1];
1826
+
1827
+ var trigger = React__default['default'].useMemo(function () {
1828
+ return function () {
1829
+ return setV(function (v) {
1830
+ return v + 1;
1831
+ });
1832
+ };
1833
+ }, [v]);
1834
+ React__default['default'].useImperativeHandle(ref, function () {
1835
+ return {
1836
+ trigger: trigger
1837
+ };
1838
+ }, []);
1839
+ return React__default['default'].createElement(Provider, {
1840
+ value: trigger
1841
+ }, children);
1842
+ });
1843
+ return [TriggerProvider, useSelectValue];
1844
+ };
1845
+
1846
+ var WithConstant = function WithConstant(_ref) {
1847
+ var _ref$inputs = _ref.inputs,
1848
+ inputs = _ref$inputs === void 0 ? [] : _ref$inputs,
1849
+ value = _ref.value,
1850
+ children = _ref.children;
1851
+ var constant = core.useLazyConstant(value, inputs);
1852
+ return children(constant);
1853
+ };
1704
1854
 
1705
1855
  exports.Fill = Fill;
1706
1856
  exports.GroupEventFactory = GroupEventFactory;
@@ -1712,14 +1862,20 @@ exports.StartlibsConsumer = StartlibsConsumer;
1712
1862
  exports.StartlibsContext = StartlibsContext;
1713
1863
  exports.StartlibsMetacontext = StartlibsMetacontext;
1714
1864
  exports.StartlibsProvider = StartlibsProvider;
1865
+ exports.WithConstant = WithConstant;
1715
1866
  exports.WithEffect = WithEffect;
1867
+ exports.WithLazyPlaceholder = WithLazyPlaceholder;
1716
1868
  exports.WithLazyResource = WithLazyResource;
1717
1869
  exports.WithRef = WithRef;
1718
1870
  exports.clearPopups = clearPopups;
1719
1871
  exports.consumes = consumes;
1720
1872
  exports.createSelectableContext = createSelectableContext;
1873
+ exports.createSelfStatefulContext = createSelfStatefulContext;
1721
1874
  exports.createStatefulContext = createStatefulContext;
1875
+ exports.createTriggerUpdateContext = createTriggerUpdateContext;
1722
1876
  exports.useAsyncEffect = useAsyncEffect;
1877
+ exports.useCallState = useCallState;
1878
+ exports.useCallbackStable = useCallbackStable;
1723
1879
  exports.useCatalogManager = useCatalogManager;
1724
1880
  exports.useConstant = useConstant;
1725
1881
  exports.useConsumerCatalog = useConsumerCatalog;