@webkrafters/react-observable-context 6.0.5 → 7.0.0-rc.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.
- package/LICENSE +674 -21
- package/README.md +128 -13
- package/dist/index.d.ts +5 -77
- package/dist/index.js +13 -43
- package/dist/main/index.d.ts +21 -19
- package/dist/main/index.js +116 -311
- package/package.json +2 -2
- package/dist/constants.d.ts +0 -2
- package/dist/constants.js +0 -68
- package/dist/main/hooks/use-prehooks-ref/index.d.ts +0 -3
- package/dist/main/hooks/use-prehooks-ref/index.js +0 -15
- package/dist/main/hooks/use-render-key-provider/index.d.ts +0 -5
- package/dist/main/hooks/use-render-key-provider/index.js +0 -36
- package/dist/main/hooks/use-store/index.d.ts +0 -9
- package/dist/main/hooks/use-store/index.js +0 -255
- package/dist/model/storage/index.d.ts +0 -12
- package/dist/model/storage/index.js +0 -124
package/dist/main/index.js
CHANGED
|
@@ -1,30 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
4
|
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
5
5
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
8
|
-
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
9
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
10
6
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
11
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
12
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
13
7
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
8
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
9
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
14
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; }
|
|
15
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; }
|
|
16
12
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
17
|
-
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
18
|
-
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
19
|
-
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
20
|
-
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
21
|
-
function _wrapNativeSuper(t) { var r = "function" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }
|
|
22
|
-
function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }
|
|
23
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24
|
-
function _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf("[native code]"); } catch (n) { return "function" == typeof t; } }
|
|
25
|
-
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
26
|
-
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
27
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
28
13
|
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
29
14
|
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
30
15
|
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
@@ -79,186 +64,141 @@ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
|
79
64
|
Object.defineProperty(exports, "__esModule", {
|
|
80
65
|
value: true
|
|
81
66
|
});
|
|
82
|
-
exports.
|
|
83
|
-
exports.connect = connect;
|
|
67
|
+
exports.ObservableContext = void 0;
|
|
84
68
|
exports.createContext = createContext;
|
|
85
|
-
exports.mkReadonly = mkReadonly;
|
|
86
|
-
exports.useContext = useContext;
|
|
87
69
|
var react_1 = __importStar(require("react"));
|
|
88
70
|
var lodash_isequal_1 = __importDefault(require("lodash.isequal"));
|
|
89
71
|
var lodash_isplainobject_1 = __importDefault(require("lodash.isplainobject"));
|
|
90
72
|
var lodash_omit_1 = __importDefault(require("lodash.omit"));
|
|
91
|
-
var
|
|
92
|
-
var path_dotize_1 = __importDefault(require("@webkrafters/path-dotize"));
|
|
93
|
-
var constants = __importStar(require("../constants"));
|
|
94
|
-
var use_render_key_provider_1 = __importDefault(require("./hooks/use-render-key-provider"));
|
|
95
|
-
var use_store_1 = __importDefault(require("./hooks/use-store"));
|
|
96
|
-
var __CTX_SYM__ = Symbol('Context Symbol');
|
|
97
|
-
var connRegister = {};
|
|
98
|
-
var ChildMemo = function () {
|
|
99
|
-
var useNodeMemo = function useNodeMemo(node) {
|
|
100
|
-
var nodeRef = (0, react_1.useRef)(node);
|
|
101
|
-
if (!(0, lodash_isequal_1["default"])((0, lodash_omit_1["default"])(nodeRef.current, '_owner'), (0, lodash_omit_1["default"])(node, '_owner'))) {
|
|
102
|
-
nodeRef.current = node;
|
|
103
|
-
}
|
|
104
|
-
return nodeRef.current;
|
|
105
|
-
};
|
|
106
|
-
var ChildMemo = (0, react_1.memo)(function (_ref) {
|
|
107
|
-
var child = _ref.child;
|
|
108
|
-
return react_1["default"].createElement(react_1["default"].Fragment, null, child);
|
|
109
|
-
});
|
|
110
|
-
ChildMemo.displayName = 'ObservableContext.Provider.Internal.Guardian.ChildMemo';
|
|
111
|
-
var Guardian = function Guardian(_ref2) {
|
|
112
|
-
var child = _ref2.child;
|
|
113
|
-
return react_1["default"].createElement(ChildMemo, {
|
|
114
|
-
child: useNodeMemo(child)
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
Guardian.displayName = 'ObservableContext.Provider.Internal.Guardian';
|
|
118
|
-
return Guardian;
|
|
119
|
-
}();
|
|
120
|
-
var defaultPrehooks = Object.freeze({});
|
|
73
|
+
var eagleeye_1 = require("@webkrafters/eagleeye");
|
|
121
74
|
var ObservableContext = /*#__PURE__*/function () {
|
|
122
|
-
function ObservableContext() {
|
|
75
|
+
function ObservableContext(value, prehooks, storage) {
|
|
76
|
+
var _this = this;
|
|
123
77
|
_classCallCheck(this, ObservableContext);
|
|
124
|
-
this.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
78
|
+
this._connect = function (selectorMap) {
|
|
79
|
+
var ctx = _this;
|
|
80
|
+
function connector(WrappedComponent) {
|
|
81
|
+
var useStream = ctx.useStream;
|
|
82
|
+
var Wrapped = !((0, lodash_isplainobject_1["default"])(WrappedComponent) && 'compare' in WrappedComponent) ? (0, react_1.memo)(WrappedComponent) : WrappedComponent;
|
|
83
|
+
var ConnectedComponent = (0, react_1.memo)((0, react_1.forwardRef)(function (ownProps, ref) {
|
|
84
|
+
var store = useStream(selectorMap);
|
|
85
|
+
return memoizeImmediateChildTree(react_1["default"].createElement(Wrapped, _objectSpread(_objectSpread(_objectSpread({}, store), ownProps), {}, {
|
|
86
|
+
ref: ref
|
|
87
|
+
})));
|
|
88
|
+
}));
|
|
89
|
+
ConnectedComponent.displayName = 'ObservableContext.Connected';
|
|
90
|
+
return ConnectedComponent;
|
|
91
|
+
}
|
|
92
|
+
return connector;
|
|
93
|
+
};
|
|
94
|
+
this.consumer = (0, eagleeye_1.createEagleEye)({
|
|
95
|
+
prehooks: prehooks,
|
|
96
|
+
storage: storage,
|
|
97
|
+
value: value
|
|
129
98
|
});
|
|
130
|
-
this.provider = makeObservable(this.cxt.Provider);
|
|
131
99
|
}
|
|
132
100
|
return _createClass(ObservableContext, [{
|
|
133
|
-
key:
|
|
101
|
+
key: "cache",
|
|
102
|
+
get: function get() {
|
|
103
|
+
return this.consumer.cache;
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
key: "closed",
|
|
107
|
+
get: function get() {
|
|
108
|
+
return this.consumer.closed;
|
|
109
|
+
}
|
|
110
|
+
}, {
|
|
111
|
+
key: "connect",
|
|
112
|
+
get: function get() {
|
|
113
|
+
return this._connect;
|
|
114
|
+
}
|
|
115
|
+
}, {
|
|
116
|
+
key: "prehooks",
|
|
117
|
+
get: function get() {
|
|
118
|
+
return this.consumer.prehooks;
|
|
119
|
+
},
|
|
120
|
+
set: function set(prehooks) {
|
|
121
|
+
this.consumer.prehooks = prehooks;
|
|
122
|
+
}
|
|
123
|
+
}, {
|
|
124
|
+
key: "storage",
|
|
134
125
|
get: function get() {
|
|
135
|
-
return this.
|
|
126
|
+
return this.consumer.storage;
|
|
127
|
+
},
|
|
128
|
+
set: function set(storage) {
|
|
129
|
+
this.consumer.storage = storage;
|
|
136
130
|
}
|
|
137
131
|
}, {
|
|
138
|
-
key: "
|
|
132
|
+
key: "store",
|
|
139
133
|
get: function get() {
|
|
140
|
-
return this.
|
|
134
|
+
return this.consumer.store;
|
|
141
135
|
}
|
|
142
136
|
}, {
|
|
143
|
-
key: "
|
|
137
|
+
key: "useStream",
|
|
144
138
|
get: function get() {
|
|
145
|
-
|
|
139
|
+
var stream = this.consumer.stream;
|
|
140
|
+
return function (selectorMap) {
|
|
141
|
+
var _ref = (0, react_1.useState)(function () {
|
|
142
|
+
return stream(selectorMap);
|
|
143
|
+
}),
|
|
144
|
+
_ref2 = _slicedToArray(_ref, 1),
|
|
145
|
+
channel = _ref2[0];
|
|
146
|
+
var _ref3 = (0, react_1.useState)(function () {
|
|
147
|
+
return {
|
|
148
|
+
data: channel.data,
|
|
149
|
+
resetState: channel.resetState.bind(channel),
|
|
150
|
+
setState: channel.setState.bind(channel)
|
|
151
|
+
};
|
|
152
|
+
}),
|
|
153
|
+
_ref4 = _slicedToArray(_ref3, 2),
|
|
154
|
+
store = _ref4[0],
|
|
155
|
+
setStore = _ref4[1];
|
|
156
|
+
(0, react_1.useEffect)(function () {
|
|
157
|
+
channel.selectorMap = selectorMap;
|
|
158
|
+
}, [selectorMap]);
|
|
159
|
+
(0, react_1.useEffect)(function () {
|
|
160
|
+
channel.addListener('data-changed', function () {
|
|
161
|
+
return setStore(_objectSpread(_objectSpread({}, store), {}, {
|
|
162
|
+
data: channel.data
|
|
163
|
+
}));
|
|
164
|
+
});
|
|
165
|
+
return function () {
|
|
166
|
+
return channel.endStream();
|
|
167
|
+
};
|
|
168
|
+
}, []);
|
|
169
|
+
return store;
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}, {
|
|
173
|
+
key: "dispose",
|
|
174
|
+
value: function dispose() {
|
|
175
|
+
this.consumer.dispose();
|
|
146
176
|
}
|
|
147
177
|
}]);
|
|
148
178
|
}();
|
|
149
179
|
exports.ObservableContext = ObservableContext;
|
|
150
|
-
var
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
_classCallCheck(this, UsageError);
|
|
156
|
-
return _callSuper(this, UsageError, arguments);
|
|
157
|
-
}
|
|
158
|
-
_inherits(UsageError, _Error);
|
|
159
|
-
return _createClass(UsageError);
|
|
160
|
-
}(/*#__PURE__*/_wrapNativeSuper(Error));
|
|
161
|
-
exports.UsageError = UsageError;
|
|
162
|
-
;
|
|
163
|
-
function connect(context, selectorMap) {
|
|
164
|
-
function connector(WrappedComponent) {
|
|
165
|
-
var Wrapped = !((0, lodash_isplainobject_1["default"])(WrappedComponent) && 'compare' in WrappedComponent) ? (0, react_1.memo)(WrappedComponent) : WrappedComponent;
|
|
166
|
-
var ConnectedComponent = (0, react_1.memo)((0, react_1.forwardRef)(function (ownProps, ref) {
|
|
167
|
-
var store = useContext(context, selectorMap);
|
|
168
|
-
return react_1["default"].createElement(Wrapped, _objectSpread(_objectSpread(_objectSpread({}, store), ownProps), {}, {
|
|
169
|
-
ref: ref
|
|
170
|
-
}));
|
|
171
|
-
}));
|
|
172
|
-
ConnectedComponent.displayName = 'ObservableContext.Connected';
|
|
173
|
-
return ConnectedComponent;
|
|
174
|
-
}
|
|
175
|
-
return connector;
|
|
176
|
-
}
|
|
177
|
-
function createContext() {
|
|
178
|
-
return new ObservableContext();
|
|
179
|
-
}
|
|
180
|
-
;
|
|
181
|
-
function getConnectionFrom(connKey, cache) {
|
|
182
|
-
if (connKey.current === undefined) {
|
|
183
|
-
try {
|
|
184
|
-
var connection = cache.connect();
|
|
185
|
-
connKey.current = connection.instanceId;
|
|
186
|
-
connRegister[connKey.current] = connection;
|
|
187
|
-
} catch (e) {
|
|
188
|
-
reportNonReactUsage();
|
|
180
|
+
var ChildMemo = function () {
|
|
181
|
+
var useNodeMemo = function useNodeMemo(node) {
|
|
182
|
+
var nodeRef = (0, react_1.useRef)(node);
|
|
183
|
+
if (!(0, lodash_isequal_1["default"])((0, lodash_omit_1["default"])(nodeRef.current, '_owner'), (0, lodash_omit_1["default"])(node, '_owner'))) {
|
|
184
|
+
nodeRef.current = node;
|
|
189
185
|
}
|
|
190
|
-
|
|
191
|
-
return connRegister[connKey.current];
|
|
192
|
-
}
|
|
193
|
-
function getStoreRef(store, connection) {
|
|
194
|
-
return {
|
|
195
|
-
getState: function getState() {
|
|
196
|
-
var propertyPaths = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
197
|
-
if (!propertyPaths.length || propertyPaths.indexOf(constants.FULL_STATE_SELECTOR) !== -1) {
|
|
198
|
-
return connection.get(constants.GLOBAL_SELECTOR)[constants.GLOBAL_SELECTOR];
|
|
199
|
-
}
|
|
200
|
-
var data = connection.get.apply(connection, _toConsumableArray(propertyPaths));
|
|
201
|
-
var state = {};
|
|
202
|
-
for (var d in data) {
|
|
203
|
-
(0, lodash_set_1["default"])(state, d, data[d]);
|
|
204
|
-
}
|
|
205
|
-
return mkReadonly(state);
|
|
206
|
-
},
|
|
207
|
-
resetState: function resetState() {
|
|
208
|
-
var propertyPaths = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
209
|
-
return store.resetState(connection, propertyPaths);
|
|
210
|
-
},
|
|
211
|
-
setState: function setState(changes) {
|
|
212
|
-
return store.setState(connection, changes);
|
|
213
|
-
},
|
|
214
|
-
subscribe: store.subscribe
|
|
186
|
+
return nodeRef.current;
|
|
215
187
|
};
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
var _ref3$children = _ref3.children,
|
|
220
|
-
children = _ref3$children === void 0 ? null : _ref3$children,
|
|
221
|
-
_ref3$prehooks = _ref3.prehooks,
|
|
222
|
-
prehooks = _ref3$prehooks === void 0 ? defaultPrehooks : _ref3$prehooks,
|
|
223
|
-
_ref3$storage = _ref3.storage,
|
|
224
|
-
storage = _ref3$storage === void 0 ? null : _ref3$storage,
|
|
225
|
-
value = _ref3.value;
|
|
226
|
-
var connKey = (0, react_1.useRef)();
|
|
227
|
-
var store = (0, use_store_1["default"])(prehooks, value, storage);
|
|
228
|
-
var _ref4 = (0, react_1.useState)(function () {
|
|
229
|
-
return getConnectionFrom(connKey, store.cache);
|
|
230
|
-
}),
|
|
231
|
-
_ref5 = _slicedToArray(_ref4, 1),
|
|
232
|
-
connection = _ref5[0];
|
|
233
|
-
(0, react_1.useImperativeHandle)(storeRef, function () {
|
|
234
|
-
var _storeRef$current;
|
|
235
|
-
return _objectSpread(_objectSpread({}, (_storeRef$current = storeRef === null || storeRef === void 0 ? void 0 : storeRef.current) !== null && _storeRef$current !== void 0 ? _storeRef$current : {}), getStoreRef(store, connection));
|
|
236
|
-
}, [storeRef === null || storeRef === void 0 ? void 0 : storeRef.current]);
|
|
237
|
-
(0, react_1.useEffect)(function () {
|
|
238
|
-
return function () {
|
|
239
|
-
connection.disconnect();
|
|
240
|
-
delete connRegister[connKey.current];
|
|
241
|
-
connKey.current = undefined;
|
|
242
|
-
};
|
|
243
|
-
}, []);
|
|
244
|
-
return react_1["default"].createElement(Provider, {
|
|
245
|
-
value: store
|
|
246
|
-
}, memoizeImmediateChildTree(children));
|
|
188
|
+
var ChildMemo = (0, react_1.memo)(function (_ref5) {
|
|
189
|
+
var child = _ref5.child;
|
|
190
|
+
return react_1["default"].createElement(react_1["default"].Fragment, null, child);
|
|
247
191
|
});
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
return Object.freeze(v);
|
|
261
|
-
}
|
|
192
|
+
ChildMemo.displayName = 'ObservableContext.Provider.Internal.Guardian.ChildMemo';
|
|
193
|
+
var Guardian = function Guardian(_ref6) {
|
|
194
|
+
var child = _ref6.child;
|
|
195
|
+
return react_1["default"].createElement(ChildMemo, {
|
|
196
|
+
child: useNodeMemo(child)
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
Guardian.displayName = 'ObservableContext.Provider.Internal.Guardian';
|
|
200
|
+
return Guardian;
|
|
201
|
+
}();
|
|
262
202
|
function memoizeImmediateChildTree(children) {
|
|
263
203
|
return react_1.Children.map(children, function (_child) {
|
|
264
204
|
var _child2, _child$type$$$typeof, _child$props;
|
|
@@ -274,141 +214,6 @@ function memoizeImmediateChildTree(children) {
|
|
|
274
214
|
});
|
|
275
215
|
});
|
|
276
216
|
}
|
|
277
|
-
function
|
|
278
|
-
|
|
279
|
-
cache = _react_1$default$useC.cache,
|
|
280
|
-
_resetState = _react_1$default$useC.resetState,
|
|
281
|
-
_setState = _react_1$default$useC.setState,
|
|
282
|
-
subscribe = _react_1$default$useC.subscribe;
|
|
283
|
-
var connKey = (0, react_1.useRef)();
|
|
284
|
-
var _react_1$default$useS = react_1["default"].useState(function () {
|
|
285
|
-
return getConnectionFrom(connKey, cache);
|
|
286
|
-
}),
|
|
287
|
-
_react_1$default$useS2 = _slicedToArray(_react_1$default$useS, 1),
|
|
288
|
-
connection = _react_1$default$useS2[0];
|
|
289
|
-
var _renderKeys = (0, use_render_key_provider_1["default"])(selectorMap);
|
|
290
|
-
var refineKeys = function refineKeys() {
|
|
291
|
-
var rKeys = _renderKeys.slice();
|
|
292
|
-
if (fullStateSelectorIndex !== -1) {
|
|
293
|
-
rKeys[fullStateSelectorIndex] = constants.GLOBAL_SELECTOR;
|
|
294
|
-
}
|
|
295
|
-
return rKeys;
|
|
296
|
-
};
|
|
297
|
-
var _ref6 = (0, react_1.useMemo)(function () {
|
|
298
|
-
var map = {};
|
|
299
|
-
if (!_renderKeys.length) {
|
|
300
|
-
return [map, _renderKeys.indexOf(constants.FULL_STATE_SELECTOR)];
|
|
301
|
-
}
|
|
302
|
-
for (var selectorKey in selectorMap) {
|
|
303
|
-
map[selectorMap[selectorKey]] = selectorKey;
|
|
304
|
-
}
|
|
305
|
-
return [map, _renderKeys.indexOf(constants.FULL_STATE_SELECTOR)];
|
|
306
|
-
}, [_renderKeys]),
|
|
307
|
-
_ref7 = _slicedToArray(_ref6, 2),
|
|
308
|
-
selectorMapInverse = _ref7[0],
|
|
309
|
-
fullStateSelectorIndex = _ref7[1];
|
|
310
|
-
var _react_1$default$useS3 = react_1["default"].useState(function () {
|
|
311
|
-
var _connection;
|
|
312
|
-
var data = {};
|
|
313
|
-
if (!_renderKeys.length) {
|
|
314
|
-
return data;
|
|
315
|
-
}
|
|
316
|
-
var state = (_connection = connection).get.apply(_connection, _toConsumableArray(refineKeys()));
|
|
317
|
-
var _iterator = _createForOfIteratorHelper(_renderKeys),
|
|
318
|
-
_step;
|
|
319
|
-
try {
|
|
320
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
321
|
-
var propertyPath = _step.value;
|
|
322
|
-
data[selectorMapInverse[propertyPath]] = state[propertyPath === constants.FULL_STATE_SELECTOR ? constants.GLOBAL_SELECTOR : propertyPath];
|
|
323
|
-
}
|
|
324
|
-
} catch (err) {
|
|
325
|
-
_iterator.e(err);
|
|
326
|
-
} finally {
|
|
327
|
-
_iterator.f();
|
|
328
|
-
}
|
|
329
|
-
return data;
|
|
330
|
-
}),
|
|
331
|
-
_react_1$default$useS4 = _slicedToArray(_react_1$default$useS3, 2),
|
|
332
|
-
data = _react_1$default$useS4[0],
|
|
333
|
-
setData = _react_1$default$useS4[1];
|
|
334
|
-
var dataSourceListener = function dataSourceListener(changes, changePathsTokens, netChanges, mayHaveChangesAt) {
|
|
335
|
-
for (var _Len = _renderKeys.length, _ = 0; _ < _Len; _++) {
|
|
336
|
-
if (_renderKeys[_] !== constants.FULL_STATE_SELECTOR && !mayHaveChangesAt((0, path_dotize_1["default"])(_renderKeys[_]).split('.'))) {
|
|
337
|
-
continue;
|
|
338
|
-
}
|
|
339
|
-
return updateData();
|
|
340
|
-
}
|
|
341
|
-
};
|
|
342
|
-
var updateData = function updateData() {
|
|
343
|
-
var _connection2;
|
|
344
|
-
var hasChanges = false;
|
|
345
|
-
var state = (_connection2 = connection).get.apply(_connection2, _toConsumableArray(refineKeys()));
|
|
346
|
-
var _iterator2 = _createForOfIteratorHelper(_renderKeys),
|
|
347
|
-
_step2;
|
|
348
|
-
try {
|
|
349
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
350
|
-
var propertyPath = _step2.value;
|
|
351
|
-
var selectorKey = selectorMapInverse[propertyPath];
|
|
352
|
-
if (propertyPath === constants.FULL_STATE_SELECTOR) {
|
|
353
|
-
if (data[selectorKey] === state[constants.GLOBAL_SELECTOR]) {
|
|
354
|
-
continue;
|
|
355
|
-
}
|
|
356
|
-
data[selectorKey] = state[constants.GLOBAL_SELECTOR];
|
|
357
|
-
hasChanges = true;
|
|
358
|
-
continue;
|
|
359
|
-
}
|
|
360
|
-
if (data[selectorKey] === state[propertyPath]) {
|
|
361
|
-
continue;
|
|
362
|
-
}
|
|
363
|
-
data[selectorKey] = state[propertyPath];
|
|
364
|
-
hasChanges = true;
|
|
365
|
-
}
|
|
366
|
-
} catch (err) {
|
|
367
|
-
_iterator2.e(err);
|
|
368
|
-
} finally {
|
|
369
|
-
_iterator2.f();
|
|
370
|
-
}
|
|
371
|
-
hasChanges && setData(_objectSpread({}, data));
|
|
372
|
-
};
|
|
373
|
-
var resetState = (0, react_1.useCallback)(function () {
|
|
374
|
-
var propertyPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _renderKeys;
|
|
375
|
-
return _resetState(connection, propertyPath);
|
|
376
|
-
}, [_resetState, connection]);
|
|
377
|
-
var setState = (0, react_1.useCallback)(function (changes) {
|
|
378
|
-
return _setState(connection, changes);
|
|
379
|
-
}, [_setState, connection]);
|
|
380
|
-
react_1["default"].useEffect(function () {
|
|
381
|
-
if (cache.closed) {
|
|
382
|
-
return;
|
|
383
|
-
}
|
|
384
|
-
connection = getConnectionFrom(connKey, cache);
|
|
385
|
-
if (!_renderKeys.length) {
|
|
386
|
-
var _default = {};
|
|
387
|
-
!(0, lodash_isequal_1["default"])(_default, data) && setData(_default);
|
|
388
|
-
return;
|
|
389
|
-
}
|
|
390
|
-
for (var selectorKey in data) {
|
|
391
|
-
if (!(selectorMap[selectorKey] in selectorMapInverse)) {
|
|
392
|
-
delete data[selectorKey];
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
var unsubscribe = subscribe(dataSourceListener);
|
|
396
|
-
updateData();
|
|
397
|
-
return function () {
|
|
398
|
-
if (cache.closed) {
|
|
399
|
-
return;
|
|
400
|
-
}
|
|
401
|
-
unsubscribe();
|
|
402
|
-
connection.disconnect();
|
|
403
|
-
delete connRegister[connKey.current];
|
|
404
|
-
connKey.current = undefined;
|
|
405
|
-
};
|
|
406
|
-
}, [_renderKeys, cache]);
|
|
407
|
-
return (0, react_1.useMemo)(function () {
|
|
408
|
-
return {
|
|
409
|
-
data: data,
|
|
410
|
-
resetState: resetState,
|
|
411
|
-
setState: setState
|
|
412
|
-
};
|
|
413
|
-
}, [data]);
|
|
217
|
+
function createContext(value, prehooks, storage) {
|
|
218
|
+
return new ObservableContext(value, prehooks, storage);
|
|
414
219
|
}
|
package/package.json
CHANGED
|
@@ -113,8 +113,8 @@
|
|
|
113
113
|
"test:watch": "eslint --fix && jest --updateSnapshot --watchAll"
|
|
114
114
|
},
|
|
115
115
|
"types": "dist/index.d.ts",
|
|
116
|
-
"version": "
|
|
116
|
+
"version": "7.0.0-rc.0",
|
|
117
117
|
"dependencies": {
|
|
118
|
-
"@webkrafters/
|
|
118
|
+
"@webkrafters/eagleeye": "^1.0.0-beta.4"
|
|
119
119
|
}
|
|
120
120
|
}
|
package/dist/constants.d.ts
DELETED
package/dist/constants.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.FULL_STATE_SELECTOR = exports.Tag = exports.SPLICE_TAG = exports.SET_TAG = exports.REPLACE_TAG = exports.PUSH_TAG = exports.NULL_SELECTOR = exports.MOVE_TAG = exports.GLOBAL_SELECTOR = exports.DELETE_TAG = exports.CLEAR_TAG = void 0;
|
|
7
|
-
var auto_immutable_1 = require("@webkrafters/auto-immutable");
|
|
8
|
-
Object.defineProperty(exports, "CLEAR_TAG", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function get() {
|
|
11
|
-
return auto_immutable_1.CLEAR_TAG;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(exports, "DELETE_TAG", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function get() {
|
|
17
|
-
return auto_immutable_1.DELETE_TAG;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(exports, "GLOBAL_SELECTOR", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: function get() {
|
|
23
|
-
return auto_immutable_1.GLOBAL_SELECTOR;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
Object.defineProperty(exports, "MOVE_TAG", {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
get: function get() {
|
|
29
|
-
return auto_immutable_1.MOVE_TAG;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
Object.defineProperty(exports, "NULL_SELECTOR", {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: function get() {
|
|
35
|
-
return auto_immutable_1.NULL_SELECTOR;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
Object.defineProperty(exports, "PUSH_TAG", {
|
|
39
|
-
enumerable: true,
|
|
40
|
-
get: function get() {
|
|
41
|
-
return auto_immutable_1.PUSH_TAG;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
Object.defineProperty(exports, "REPLACE_TAG", {
|
|
45
|
-
enumerable: true,
|
|
46
|
-
get: function get() {
|
|
47
|
-
return auto_immutable_1.REPLACE_TAG;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
Object.defineProperty(exports, "SET_TAG", {
|
|
51
|
-
enumerable: true,
|
|
52
|
-
get: function get() {
|
|
53
|
-
return auto_immutable_1.SET_TAG;
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
Object.defineProperty(exports, "SPLICE_TAG", {
|
|
57
|
-
enumerable: true,
|
|
58
|
-
get: function get() {
|
|
59
|
-
return auto_immutable_1.SPLICE_TAG;
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
Object.defineProperty(exports, "Tag", {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
get: function get() {
|
|
65
|
-
return auto_immutable_1.Tag;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
exports.FULL_STATE_SELECTOR = '@@STATE';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
var react_1 = require("react");
|
|
7
|
-
function usePrehooksRef(prehooks) {
|
|
8
|
-
var prehooksRef = (0, react_1.useRef)(prehooks);
|
|
9
|
-
(0, react_1.useEffect)(function () {
|
|
10
|
-
prehooksRef.current = prehooks;
|
|
11
|
-
}, [prehooks]);
|
|
12
|
-
return prehooksRef;
|
|
13
|
-
}
|
|
14
|
-
;
|
|
15
|
-
exports["default"] = usePrehooksRef;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ArraySelector, ObjectSelector, SelectorMap, Text } from '../../..';
|
|
2
|
-
declare function useRenderKeyProvider(selectorMap: ArraySelector): Array<Text>;
|
|
3
|
-
declare function useRenderKeyProvider(selectorMap: ObjectSelector): Array<Text>;
|
|
4
|
-
declare function useRenderKeyProvider(selectorMap: SelectorMap): Array<Text>;
|
|
5
|
-
export default useRenderKeyProvider;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
4
|
-
return mod && mod.__esModule ? mod : {
|
|
5
|
-
"default": mod
|
|
6
|
-
};
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", {
|
|
9
|
-
value: true
|
|
10
|
-
});
|
|
11
|
-
var react_1 = require("react");
|
|
12
|
-
var lodash_isplainobject_1 = __importDefault(require("lodash.isplainobject"));
|
|
13
|
-
function getCurrKeys(selectorMap) {
|
|
14
|
-
if ((0, lodash_isplainobject_1["default"])(selectorMap) || Array.isArray(selectorMap)) {
|
|
15
|
-
return Array.from(new Set(Object.values(selectorMap)));
|
|
16
|
-
}
|
|
17
|
-
if (typeof selectorMap === 'undefined' || selectorMap === null) {
|
|
18
|
-
return [];
|
|
19
|
-
}
|
|
20
|
-
throw new TypeError('Incompatible Selector Map type provided.');
|
|
21
|
-
}
|
|
22
|
-
;
|
|
23
|
-
function useRenderKeyProvider(selectorMap) {
|
|
24
|
-
var renderKeys = (0, react_1.useRef)([]);
|
|
25
|
-
return (0, react_1.useMemo)(function () {
|
|
26
|
-
var currKeys = getCurrKeys(selectorMap);
|
|
27
|
-
if (renderKeys.current.length !== currKeys.length || renderKeys.current.some(function (k, i) {
|
|
28
|
-
return k !== currKeys[i];
|
|
29
|
-
})) {
|
|
30
|
-
renderKeys.current = currKeys;
|
|
31
|
-
}
|
|
32
|
-
return renderKeys.current;
|
|
33
|
-
}, [selectorMap]);
|
|
34
|
-
}
|
|
35
|
-
;
|
|
36
|
-
exports["default"] = useRenderKeyProvider;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { IStorage, StoreInternal, PartialState, Prehooks, State } from '../../..';
|
|
2
|
-
export declare const deps: {
|
|
3
|
-
createStorageKey: () => string;
|
|
4
|
-
};
|
|
5
|
-
interface CurrentStorage<T extends State> extends IStorage<T> {
|
|
6
|
-
isKeyRequired?: boolean;
|
|
7
|
-
}
|
|
8
|
-
declare const useStore: <T extends State>(prehooks: Prehooks<T>, value: PartialState<T>, storage?: CurrentStorage<T>) => StoreInternal<T>;
|
|
9
|
-
export default useStore;
|