@startlibs/core 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/lib/SlotFill.mjs +232 -0
  2. package/lib/SlotFill.mjs.map +1 -0
  3. package/lib/StartlibsProvider.mjs +62 -0
  4. package/lib/StartlibsProvider.mjs.map +1 -0
  5. package/lib/hocs/WithLazyResource.mjs +74 -0
  6. package/lib/hocs/WithLazyResource.mjs.map +1 -0
  7. package/lib/hocs/WithRef.mjs +20 -0
  8. package/lib/hocs/WithRef.mjs.map +1 -0
  9. package/lib/hocs/consumes.mjs +22 -0
  10. package/lib/hocs/consumes.mjs.map +1 -0
  11. package/lib/hocs/withDialogError.mjs +22 -0
  12. package/lib/hocs/withDialogError.mjs.map +1 -0
  13. package/lib/hocs/withGroupEvent.mjs +45 -0
  14. package/lib/hocs/withGroupEvent.mjs.map +1 -0
  15. package/lib/hooks/WithConstant.mjs +13 -0
  16. package/lib/hooks/WithConstant.mjs.map +1 -0
  17. package/lib/hooks/WithEffect.mjs +12 -0
  18. package/lib/hooks/WithEffect.mjs.map +1 -0
  19. package/lib/hooks/useAsyncEffect.mjs +14 -0
  20. package/lib/hooks/useAsyncEffect.mjs.map +1 -0
  21. package/lib/hooks/useCallState.mjs +21 -0
  22. package/lib/hooks/useCallState.mjs.map +1 -0
  23. package/lib/hooks/useCallbackStable.mjs +17 -0
  24. package/lib/hooks/useCallbackStable.mjs.map +1 -0
  25. package/lib/hooks/useConstant.mjs +21 -0
  26. package/lib/hooks/useConstant.mjs.map +1 -0
  27. package/lib/hooks/useConsumerCatalog.mjs +25 -0
  28. package/lib/hooks/useConsumerCatalog.mjs.map +1 -0
  29. package/lib/hooks/useEnsureRef.mjs +9 -0
  30. package/lib/hooks/useEnsureRef.mjs.map +1 -0
  31. package/lib/hooks/useForceUpdate.mjs +28 -0
  32. package/lib/hooks/useForceUpdate.mjs.map +1 -0
  33. package/lib/hooks/useIsUnmounted.mjs +15 -0
  34. package/lib/hooks/useIsUnmounted.mjs.map +1 -0
  35. package/lib/hooks/usePopupToggle.mjs +33 -0
  36. package/lib/hooks/usePopupToggle.mjs.map +1 -0
  37. package/lib/hooks/usePrevious.mjs +28 -0
  38. package/lib/hooks/usePrevious.mjs.map +1 -0
  39. package/lib/hooks/useRecycleFocus.mjs +36 -0
  40. package/lib/hooks/useRecycleFocus.mjs.map +1 -0
  41. package/lib/hooks/useRefMemo.mjs +13 -0
  42. package/lib/hooks/useRefMemo.mjs.map +1 -0
  43. package/lib/hooks/useRefState.mjs +29 -0
  44. package/lib/hooks/useRefState.mjs.map +1 -0
  45. package/lib/hooks/useSignal.mjs +271 -0
  46. package/lib/hooks/useSignal.mjs.map +1 -0
  47. package/lib/hooks/useTitle.mjs +17 -0
  48. package/lib/hooks/useTitle.mjs.map +1 -0
  49. package/lib/hooks/useToggle.mjs +152 -0
  50. package/lib/hooks/useToggle.mjs.map +1 -0
  51. package/lib/hooks/useUpdateEffect.mjs +15 -0
  52. package/lib/hooks/useUpdateEffect.mjs.map +1 -0
  53. package/lib/hooks/useUpdateOnResize.mjs +18 -0
  54. package/lib/hooks/useUpdateOnResize.mjs.map +1 -0
  55. package/lib/hooks/useWithTransition.mjs +18 -0
  56. package/lib/hooks/useWithTransition.mjs.map +1 -0
  57. package/lib/hooks/willUseLayers.mjs +55 -0
  58. package/lib/hooks/willUseLayers.mjs.map +1 -0
  59. package/lib/hooks/willUseSharedCallback.mjs +70 -0
  60. package/lib/hooks/willUseSharedCallback.mjs.map +1 -0
  61. package/lib/hooks/willUseSharedState.mjs +41 -0
  62. package/lib/hooks/willUseSharedState.mjs.map +1 -0
  63. package/lib/hooks/willUseSpreadState.mjs +119 -0
  64. package/lib/hooks/willUseSpreadState.mjs.map +1 -0
  65. package/lib/index.cjs +1474 -0
  66. package/lib/index.cjs.map +1 -0
  67. package/lib/index.mjs +33 -0
  68. package/lib/index.mjs.map +1 -0
  69. package/package.json +43 -29
  70. package/src/SlotFill.jsx +166 -0
  71. package/src/StartlibsProvider.jsx +62 -0
  72. package/src/hocs/WithLazyResource.jsx +32 -0
  73. package/src/hocs/WithRef.js +20 -0
  74. package/src/hocs/Wrapper.jsx +40 -0
  75. package/src/hocs/consumes.jsx +16 -0
  76. package/src/hocs/withDialogError.jsx +16 -0
  77. package/src/hocs/withGroupEvent.jsx +43 -0
  78. package/src/hooks/WithConstant.jsx +7 -0
  79. package/src/hooks/WithEffect.jsx +6 -0
  80. package/src/hooks/useAsyncEffect.jsx +11 -0
  81. package/src/hooks/useCallState.js +15 -0
  82. package/src/hooks/useCallbackStable.jsx +12 -0
  83. package/src/hooks/useConstant.js +20 -0
  84. package/src/hooks/useConsumerCatalog.jsx +21 -0
  85. package/src/hooks/useEnsureRef.js +6 -0
  86. package/src/hooks/useForceUpdate.jsx +16 -0
  87. package/src/hooks/useIsUnmounted.jsx +12 -0
  88. package/src/hooks/usePopupToggle.js +30 -0
  89. package/src/hooks/usePrevious.jsx +27 -0
  90. package/src/hooks/useRecycleFocus.jsx +26 -0
  91. package/src/hooks/useRefMemo.jsx +10 -0
  92. package/src/hooks/useRefState.js +26 -0
  93. package/src/hooks/useSignal.jsx +193 -0
  94. package/src/hooks/useTitle.jsx +12 -0
  95. package/src/hooks/useToggle.js +126 -0
  96. package/src/hooks/useUpdateEffect.js +14 -0
  97. package/src/hooks/useUpdateOnResize.jsx +14 -0
  98. package/src/hooks/useWithTransition.jsx +14 -0
  99. package/src/hooks/willUseLayers.jsx +42 -0
  100. package/src/hooks/willUseSharedCallback.jsx +60 -0
  101. package/src/hooks/willUseSharedState.jsx +34 -0
  102. package/src/hooks/willUseSpreadState.jsx +103 -0
  103. package/src/index.js +32 -0
  104. package/.babelrc +0 -27
  105. package/lib/index.js +0 -1907
  106. package/rollup.config.js +0 -53
  107. package/yarn-error.log +0 -3374
@@ -0,0 +1,119 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import _set from 'lodash/fp/set';
3
+ import _update from 'lodash/fp/update';
4
+ import _isFunction from 'lodash/fp/isFunction';
5
+ import _get from 'lodash/fp/get';
6
+ import _isArray from 'lodash/fp/isArray';
7
+ import _isString from 'lodash/fp/isString';
8
+ import React, { useEffect, useMemo, useContext, useState, useCallback } from 'react';
9
+ import { formatPath, _s } from '@startlibs/utils';
10
+ import { useConsumerCatalog, useCatalogManager } from './useConsumerCatalog.mjs';
11
+ import { useIsUnmounted } from './useIsUnmounted.mjs';
12
+ import { useRefState } from './useRefState.mjs';
13
+
14
+ const updateAllInputsState = (inputs, values) => {
15
+ const deferedUndefined = [];
16
+ inputs.forEach(input => {
17
+ const _input = _slicedToArray(input, 2),
18
+ setValue = _input[0],
19
+ selector = _input[1];
20
+ const newValue = selector(values);
21
+ if (newValue === undefined) {
22
+ deferedUndefined.push([setValue, newValue]);
23
+ } else {
24
+ setValue(newValue);
25
+ }
26
+ });
27
+ deferedUndefined.forEach(_ref => {
28
+ let _ref2 = _slicedToArray(_ref, 2),
29
+ set = _ref2[0],
30
+ value = _ref2[1];
31
+ return set(value);
32
+ });
33
+ };
34
+ const pathSelector = path => _s.get(path || []);
35
+ const parsePathOrSelector = pathOrSelector => {
36
+ const isNotSelector = typeof pathOrSelector !== 'function';
37
+ if (isNotSelector) {
38
+ return [formatPath(pathOrSelector), pathSelector(pathOrSelector)];
39
+ } else {
40
+ return ['', pathOrSelector];
41
+ }
42
+ };
43
+ const willUseSpreadState = function (defaultContextValue) {
44
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
45
+ const Context = /*#__PURE__*/React.createContext(defaultContextValue);
46
+ const EMPTY_GLOBAL = {};
47
+ let prevInitState = EMPTY_GLOBAL;
48
+ let globalState = EMPTY_GLOBAL;
49
+ const getGlobalState = key => _isString(key) || _isArray(key) ? _get(key, globalState) : globalState;
50
+ const useProvideSpreadState = (initState, setCallback) => {
51
+ const _useConsumerCatalog = useConsumerCatalog(input => updateAllInputsState([input], state.get())),
52
+ _useConsumerCatalog2 = _slicedToArray(_useConsumerCatalog, 2),
53
+ consumerList = _useConsumerCatalog2[0],
54
+ manager = _useConsumerCatalog2[1];
55
+ const state = useRefState(initState, setCallback);
56
+ if (options.initRefCheck) {
57
+ if (prevInitState !== initState) {
58
+ globalState = initState;
59
+ }
60
+ prevInitState = initState;
61
+ }
62
+ if (globalState === EMPTY_GLOBAL) {
63
+ globalState = initState;
64
+ }
65
+ useEffect(() => {
66
+ globalState = state.get();
67
+ }, []);
68
+ const setState = (newState, fastPath, config) => {
69
+ // console.log("Fastpath noop:"+fastPath)
70
+ state.set(newState, config);
71
+ globalState = state.get();
72
+ updateAllInputsState(consumerList(), state.get());
73
+ };
74
+ const contextValue = useMemo(() => [state.get, setState, manager], []);
75
+ return [Context.Provider, contextValue, [state.get, setState]];
76
+ };
77
+ const useSpreadState = (pathOrSelector, inputs) => {
78
+ const _useContext = useContext(Context),
79
+ _useContext2 = _slicedToArray(_useContext, 3),
80
+ getSpreadState = _useContext2[0],
81
+ setSpreadState = _useContext2[1],
82
+ manager = _useContext2[2];
83
+ const _parsePathOrSelector = parsePathOrSelector(pathOrSelector),
84
+ _parsePathOrSelector2 = _slicedToArray(_parsePathOrSelector, 2),
85
+ path = _parsePathOrSelector2[0],
86
+ selector = _parsePathOrSelector2[1];
87
+ const pathOrInput = [path] || inputs || [];
88
+ const _useState = useState(selector(getSpreadState())),
89
+ _useState2 = _slicedToArray(_useState, 2),
90
+ value = _useState2[0],
91
+ setValue = _useState2[1];
92
+ const isUnmounted = useIsUnmounted();
93
+ const currentPath = useRefState(path);
94
+ if (path !== currentPath.get()) {
95
+ /* when path changes, the consumerCatalogCallback will update the new value
96
+ * another solution would be to call setValue here directly
97
+ * the return value will still be the old, but will be changed before render, just like getDerivedStateFromProps
98
+ *
99
+ * if there's a need for the return value to be the same, the value or, if enters here new value,
100
+ * can be returned in an temp variable
101
+ * */
102
+ currentPath.set(path);
103
+ }
104
+ const input = useMemo(() => [v => {
105
+ /* noop for elements that may be unregistered while looping through consumerList */
106
+ if (path === currentPath.get() && !isUnmounted()) {
107
+ setValue(v);
108
+ }
109
+ }, selector], pathOrInput);
110
+ useCatalogManager(manager, input);
111
+ const setState = useCallback(v => setSpreadState((_isFunction(v) ? pathOrSelector === undefined ? () => v : _update : _set)(path, v), path), pathOrInput);
112
+ const getValue = () => selector(getGlobalState());
113
+ return [value, setState, getValue];
114
+ };
115
+ return [useProvideSpreadState, useSpreadState, Context, getGlobalState];
116
+ };
117
+
118
+ export { willUseSpreadState };
119
+ //# sourceMappingURL=willUseSpreadState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"willUseSpreadState.mjs","sources":["../../src/hooks/willUseSpreadState.jsx"],"sourcesContent":["import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {_s, formatPath} from '@startlibs/utils'\nimport _ from 'lodash/fp'\nimport {useCatalogManager, useConsumerCatalog} from './useConsumerCatalog'\nimport {useIsUnmounted} from './useIsUnmounted'\nimport {useRefState} from './useRefState'\n\nconst updateAllInputsState = (inputs, values) => {\n const deferedUndefined = []\n inputs.forEach((input) => {\n const [setValue, selector] = input\n const newValue = selector(values)\n if (newValue === undefined) {\n deferedUndefined.push([setValue,newValue])\n } else {\n setValue(newValue)\n }\n })\n deferedUndefined.forEach(([set,value])=> set(value))\n}\n\nconst pathSelector = (path) => _s.get(path || [])\nconst parsePathOrSelector = (pathOrSelector) => {\n const isNotSelector = typeof pathOrSelector !== 'function'\n if (isNotSelector) {\n return [formatPath(pathOrSelector), pathSelector(pathOrSelector)]\n } else {\n return ['', pathOrSelector]\n }\n}\nexport const willUseSpreadState = (defaultContextValue,options = {}) => {\n\n const Context = React.createContext(defaultContextValue)\n const EMPTY_GLOBAL = {}\n let prevInitState = EMPTY_GLOBAL\n let globalState = EMPTY_GLOBAL\n const getGlobalState = (key) => _.isString(key) || _.isArray(key) ? _.get(key,globalState) : globalState\n\n const useProvideSpreadState = (initState, setCallback) => {\n const [consumerList, manager] = useConsumerCatalog((input) => updateAllInputsState([input], state.get()))\n const state = useRefState(initState, setCallback)\n\n if (options.initRefCheck) {\n if (prevInitState !== initState) {\n globalState = initState\n }\n prevInitState = initState\n }\n\n if (globalState === EMPTY_GLOBAL) {\n globalState = initState\n }\n useEffect(() => {\n globalState = state.get()\n },[])\n\n const setState = (newState, fastPath, config) => {\n // console.log(\"Fastpath noop:\"+fastPath)\n state.set(newState, config)\n globalState = state.get()\n updateAllInputsState(consumerList(), state.get())\n }\n const contextValue = useMemo(() => [state.get, setState, manager], [])\n\n return [Context.Provider, contextValue, [state.get, setState]]\n }\n\n const useSpreadState = (pathOrSelector, inputs) => {\n const [getSpreadState, setSpreadState, manager] = useContext(Context)\n const [path, selector] = parsePathOrSelector(pathOrSelector)\n const pathOrInput = [path] || inputs || []\n const [value, setValue] = useState(selector(getSpreadState()))\n\n const isUnmounted = useIsUnmounted()\n\n const currentPath = useRefState(path)\n if (path !== currentPath.get()) {\n /* when path changes, the consumerCatalogCallback will update the new value\n * another solution would be to call setValue here directly\n * the return value will still be the old, but will be changed before render, just like getDerivedStateFromProps\n *\n * if there's a need for the return value to be the same, the value or, if enters here new value,\n * can be returned in an temp variable\n * */\n currentPath.set(path)\n }\n\n const input = useMemo(() => [(v) => {\n /* noop for elements that may be unregistered while looping through consumerList */\n if (path === currentPath.get() && !isUnmounted()) {\n setValue(v)\n }\n }, selector], pathOrInput)\n\n useCatalogManager(manager, input)\n const setState = useCallback((v) => setSpreadState((_.isFunction(v) ? (pathOrSelector === undefined ? () => v : _.update) : _.set)(path, v), path), pathOrInput)\n const getValue = () => selector(getGlobalState())\n return [value, setState, getValue]\n }\n\n\n return [useProvideSpreadState, useSpreadState, Context, getGlobalState]\n}"],"names":["updateAllInputsState","inputs","values","deferedUndefined","forEach","input","_input","_slicedToArray","setValue","selector","newValue","undefined","push","_ref","_ref2","set","value","pathSelector","path","_s","get","parsePathOrSelector","pathOrSelector","isNotSelector","formatPath","willUseSpreadState","defaultContextValue","options","arguments","length","Context","React","createContext","EMPTY_GLOBAL","prevInitState","globalState","getGlobalState","key","_isString","_isArray","_get","useProvideSpreadState","initState","setCallback","_useConsumerCatalog","useConsumerCatalog","state","_useConsumerCatalog2","consumerList","manager","useRefState","initRefCheck","useEffect","setState","newState","fastPath","config","contextValue","useMemo","Provider","useSpreadState","_useContext","useContext","_useContext2","getSpreadState","setSpreadState","_parsePathOrSelector","_parsePathOrSelector2","pathOrInput","_useState","useState","_useState2","isUnmounted","useIsUnmounted","currentPath","v","useCatalogManager","useCallback","_isFunction","_update","_set","getValue"],"mappings":"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"}