react-elmish 10.0.0-alpha.1 → 10.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -7
- package/dist/ElmComponent.js +3 -5
- package/dist/Types.d.ts +14 -6
- package/dist/Types.js +35 -1
- package/dist/createCallBase.d.ts +1 -2
- package/dist/createCallBase.js +1 -1
- package/dist/immutable/ElmComponent.d.ts +67 -0
- package/dist/immutable/ElmComponent.js +198 -0
- package/dist/immutable/Types.d.ts +28 -0
- package/dist/immutable/Types.js +6 -0
- package/dist/immutable/createCallBase.d.ts +5 -0
- package/dist/immutable/createCallBase.js +24 -0
- package/dist/immutable/createDefer.d.ts +7 -0
- package/dist/immutable/createDefer.js +23 -0
- package/dist/immutable/index.d.ts +7 -0
- package/dist/immutable/index.js +53 -0
- package/dist/immutable/useElmish.d.ts +49 -0
- package/dist/immutable/useElmish.js +219 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/mergeSubscriptions.d.ts +1 -2
- package/dist/mergeSubscriptions.js +3 -3
- package/dist/{Testing → testing}/createModelAndProps.js +1 -1
- package/dist/{Testing → testing}/createUpdateArgsFactory.js +1 -1
- package/dist/{Testing → testing}/execCmd.js +1 -1
- package/dist/testing/execCmd.spec.d.ts +1 -0
- package/dist/{Testing → testing}/execSubscription.d.ts +1 -2
- package/dist/testing/execSubscription.js +51 -0
- package/dist/{Testing → testing}/getCreateUpdateArgs.js +1 -1
- package/dist/testing/getUpdateFn.js +111 -0
- package/dist/{Testing → testing}/index.js +1 -1
- package/dist/{Testing → testing}/initAndExecCmd.js +1 -1
- package/dist/{Testing → testing}/renderWithModel.js +1 -1
- package/dist/testing/renderWithModel.spec.d.ts +1 -0
- package/dist/useElmish.d.ts +6 -15
- package/dist/useElmish.js +5 -15
- package/package.json +6 -2
- package/dist/Testing/execSubscription.js +0 -51
- package/dist/Testing/getUpdateFn.js +0 -114
- /package/dist/{Testing/execCmd.spec.d.ts → immutable/ElmComponent.spec.d.ts} +0 -0
- /package/dist/{Testing/renderWithModel.spec.d.ts → immutable/useElmish.spec.d.ts} +0 -0
- /package/dist/{Testing → testing}/createModelAndProps.d.ts +0 -0
- /package/dist/{Testing → testing}/createUpdateArgsFactory.d.ts +0 -0
- /package/dist/{Testing → testing}/execCmd.d.ts +0 -0
- /package/dist/{Testing → testing}/getCreateUpdateArgs.d.ts +0 -0
- /package/dist/{Testing → testing}/getUpdateFn.d.ts +0 -0
- /package/dist/{Testing → testing}/index.d.ts +0 -0
- /package/dist/{Testing → testing}/initAndExecCmd.d.ts +0 -0
- /package/dist/{Testing → testing}/renderWithModel.d.ts +0 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ElmComponent = void 0;
|
|
7
|
+
var _immer = require("immer");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _Common = require("../Common");
|
|
10
|
+
var _fakeOptions = require("../fakeOptions");
|
|
11
|
+
var _Init = require("../Init");
|
|
12
|
+
var _createCallBase = require("./createCallBase");
|
|
13
|
+
var _createDefer3 = require("./createDefer");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
15
|
+
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); }
|
|
16
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
17
|
+
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."); }
|
|
18
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
19
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
20
|
+
function _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }
|
|
21
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
22
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
23
|
+
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."); }
|
|
24
|
+
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; } }
|
|
25
|
+
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; }
|
|
26
|
+
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; } }
|
|
27
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
28
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
29
|
+
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
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
31
|
+
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
32
|
+
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); }
|
|
33
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
34
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
35
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
36
|
+
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); }
|
|
37
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
38
|
+
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; }
|
|
39
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
40
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
41
|
+
/**
|
|
42
|
+
* Abstract class for a react class component using the Elmish pattern.
|
|
43
|
+
* @export
|
|
44
|
+
* @abstract
|
|
45
|
+
* @class ElmComponent
|
|
46
|
+
* @extends {Component<TProps, TModel>}
|
|
47
|
+
* @template TModel The type of the model.
|
|
48
|
+
* @template TMessage The type of the messages.
|
|
49
|
+
* @template TProps The type of the props.
|
|
50
|
+
*/
|
|
51
|
+
var ElmComponent = exports.ElmComponent = /*#__PURE__*/function (_React$Component) {
|
|
52
|
+
/**
|
|
53
|
+
* Creates an instance of ElmComponent.
|
|
54
|
+
* @param {TProps} props The props for the component.
|
|
55
|
+
* @param {() => TModel} init The initializer function.
|
|
56
|
+
* @param name The name of the component.
|
|
57
|
+
* @memberof ElmComponent
|
|
58
|
+
*/
|
|
59
|
+
function ElmComponent(props, init, name) {
|
|
60
|
+
var _Services$logger2;
|
|
61
|
+
var _this;
|
|
62
|
+
_classCallCheck(this, ElmComponent);
|
|
63
|
+
_this = _callSuper(this, ElmComponent, [props]);
|
|
64
|
+
_defineProperty(_this, "initCommands", void 0);
|
|
65
|
+
_defineProperty(_this, "componentName", void 0);
|
|
66
|
+
_defineProperty(_this, "buffer", []);
|
|
67
|
+
_defineProperty(_this, "running", false);
|
|
68
|
+
_defineProperty(_this, "mounted", false);
|
|
69
|
+
_defineProperty(_this, "currentModel", void 0);
|
|
70
|
+
/**
|
|
71
|
+
* Dispatches a message.
|
|
72
|
+
* @param {TMessage} msg The message to dispatch.
|
|
73
|
+
* @memberof ElmComponent
|
|
74
|
+
*/
|
|
75
|
+
_defineProperty(_this, "dispatch", function (msg) {
|
|
76
|
+
if (_this.running) {
|
|
77
|
+
_this.buffer.push(msg);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
_this.running = true;
|
|
81
|
+
var nextMsg = msg;
|
|
82
|
+
var modified = false;
|
|
83
|
+
do {
|
|
84
|
+
var currentMessage = nextMsg;
|
|
85
|
+
(0, _Common.logMessage)(_this.componentName, currentMessage);
|
|
86
|
+
var _createDefer = (0, _createDefer3.createDefer)(),
|
|
87
|
+
_createDefer2 = _slicedToArray(_createDefer, 2),
|
|
88
|
+
defer = _createDefer2[0],
|
|
89
|
+
getDeferred = _createDefer2[1];
|
|
90
|
+
var callBase = (0, _createCallBase.createCallBase)(currentMessage, _this.currentModel, _this.props, {
|
|
91
|
+
defer: defer
|
|
92
|
+
});
|
|
93
|
+
var _this$update = _this.update(_this.currentModel, currentMessage, _this.props, {
|
|
94
|
+
defer: defer,
|
|
95
|
+
callBase: callBase
|
|
96
|
+
}),
|
|
97
|
+
_this$update2 = _toArray(_this$update),
|
|
98
|
+
draftFn = _this$update2[0],
|
|
99
|
+
commands = _this$update2.slice(1);
|
|
100
|
+
var _getDeferred = getDeferred(),
|
|
101
|
+
_getDeferred2 = _slicedToArray(_getDeferred, 2),
|
|
102
|
+
deferredDraftFunctions = _getDeferred2[0],
|
|
103
|
+
deferredCommands = _getDeferred2[1];
|
|
104
|
+
var _iterator = _createForOfIteratorHelper(deferredDraftFunctions),
|
|
105
|
+
_step;
|
|
106
|
+
try {
|
|
107
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
108
|
+
var deferredDraftFn = _step.value;
|
|
109
|
+
_this.currentModel = (0, _immer.produce)(_this.currentModel, deferredDraftFn);
|
|
110
|
+
modified = true;
|
|
111
|
+
}
|
|
112
|
+
} catch (err) {
|
|
113
|
+
_iterator.e(err);
|
|
114
|
+
} finally {
|
|
115
|
+
_iterator.f();
|
|
116
|
+
}
|
|
117
|
+
if (draftFn) {
|
|
118
|
+
_this.currentModel = (0, _immer.produce)(_this.currentModel, draftFn);
|
|
119
|
+
modified = true;
|
|
120
|
+
}
|
|
121
|
+
_Common.execCmd.apply(void 0, [_this.dispatch].concat(_toConsumableArray(commands), _toConsumableArray(deferredCommands)));
|
|
122
|
+
nextMsg = _this.buffer.shift();
|
|
123
|
+
} while (nextMsg);
|
|
124
|
+
_this.running = false;
|
|
125
|
+
if (_this.mounted && modified) {
|
|
126
|
+
var _Services$logger;
|
|
127
|
+
(_Services$logger = _Init.Services.logger) === null || _Services$logger === void 0 || _Services$logger.debug("Update model for", _this.componentName, _this.currentModel);
|
|
128
|
+
_this.forceUpdate();
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
/**
|
|
132
|
+
* Function to modify the model based on a message.
|
|
133
|
+
* @param {TModel} model The current model.
|
|
134
|
+
* @param {TMessage} msg The message to process.
|
|
135
|
+
* @param {TProps} props The props of the component.
|
|
136
|
+
* @param options The options for the update function.
|
|
137
|
+
* @returns The new model (can also be an empty object {}) and an optional new message to dispatch.
|
|
138
|
+
* @abstract
|
|
139
|
+
* @memberof ElmComponent
|
|
140
|
+
*/
|
|
141
|
+
_defineProperty(_this, "update", void 0);
|
|
142
|
+
var fakeOptions = (0, _fakeOptions.getFakeOptionsOnce)();
|
|
143
|
+
if (fakeOptions !== null && fakeOptions !== void 0 && fakeOptions.dispatch) {
|
|
144
|
+
_this.dispatch = fakeOptions.dispatch;
|
|
145
|
+
}
|
|
146
|
+
var _ref = fakeOptions !== null && fakeOptions !== void 0 && fakeOptions.model ? [fakeOptions.model] : init(_this.props),
|
|
147
|
+
_ref2 = _toArray(_ref),
|
|
148
|
+
model = _ref2[0],
|
|
149
|
+
_commands = _ref2.slice(1);
|
|
150
|
+
(_Services$logger2 = _Init.Services.logger) === null || _Services$logger2 === void 0 || _Services$logger2.debug("Initial model for", name, model);
|
|
151
|
+
_this.componentName = name;
|
|
152
|
+
_this.currentModel = (0, _immer.castImmutable)((0, _immer.freeze)(model, true));
|
|
153
|
+
_this.initCommands = _commands;
|
|
154
|
+
return _this;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Is called when the component is loaded.
|
|
159
|
+
* When implementing this method, the base implementation has to be called.
|
|
160
|
+
* @memberof ElmComponent
|
|
161
|
+
*/
|
|
162
|
+
_inherits(ElmComponent, _React$Component);
|
|
163
|
+
return _createClass(ElmComponent, [{
|
|
164
|
+
key: "componentDidMount",
|
|
165
|
+
value: function componentDidMount() {
|
|
166
|
+
this.mounted = true;
|
|
167
|
+
if (this.initCommands) {
|
|
168
|
+
_Common.execCmd.apply(void 0, [this.dispatch].concat(_toConsumableArray(this.initCommands)));
|
|
169
|
+
this.initCommands = null;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Is called before unloading the component.
|
|
175
|
+
* When implementing this method, the base implementation has to be called.
|
|
176
|
+
* @memberof ElmComponent
|
|
177
|
+
*/
|
|
178
|
+
}, {
|
|
179
|
+
key: "componentWillUnmount",
|
|
180
|
+
value: function componentWillUnmount() {
|
|
181
|
+
this.mounted = false;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Returns the current model.
|
|
186
|
+
* @readonly
|
|
187
|
+
* @type {Readonly<TModel>}
|
|
188
|
+
* @memberof ElmComponent
|
|
189
|
+
*/
|
|
190
|
+
// eslint-disable-next-line react/no-unused-class-component-methods -- We need it internally.
|
|
191
|
+
}, {
|
|
192
|
+
key: "model",
|
|
193
|
+
get: function get() {
|
|
194
|
+
return this.currentModel;
|
|
195
|
+
}
|
|
196
|
+
}]);
|
|
197
|
+
}(_react["default"].Component);
|
|
198
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW1tZXIiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Db21tb24iLCJfZmFrZU9wdGlvbnMiLCJfSW5pdCIsIl9jcmVhdGVDYWxsQmFzZSIsIl9jcmVhdGVEZWZlcjMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInQiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJ0ZXN0IiwibCIsImkiLCJPYmplY3QiLCJwdXNoIiwiX2NsYXNzQ2FsbENoZWNrIiwiX2RlZmluZVByb3BlcnRpZXMiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkVsbUNvbXBvbmVudCIsImV4cG9ydHMiLCJfUmVhY3QkQ29tcG9uZW50IiwicHJvcHMiLCJpbml0IiwiX1NlcnZpY2VzJGxvZ2dlcjIiLCJfdGhpcyIsIm1zZyIsInJ1bm5pbmciLCJidWZmZXIiLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJjdXJyZW50TWVzc2FnZSIsImxvZ01lc3NhZ2UiLCJjb21wb25lbnROYW1lIiwiX2NyZWF0ZURlZmVyIiwiY3JlYXRlRGVmZXIiLCJfY3JlYXRlRGVmZXIyIiwiZGVmZXIiLCJnZXREZWZlcnJlZCIsImNhbGxCYXNlIiwiY3JlYXRlQ2FsbEJhc2UiLCJjdXJyZW50TW9kZWwiLCJfdGhpcyR1cGRhdGUiLCJ1cGRhdGUiLCJfdGhpcyR1cGRhdGUyIiwiZHJhZnRGbiIsImNvbW1hbmRzIiwiX2dldERlZmVycmVkIiwiX2dldERlZmVycmVkMiIsImRlZmVycmVkRHJhZnRGdW5jdGlvbnMiLCJkZWZlcnJlZENvbW1hbmRzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJkZWZlcnJlZERyYWZ0Rm4iLCJwcm9kdWNlIiwiZXJyIiwiZXhlY0NtZCIsImRpc3BhdGNoIiwiY29uY2F0Iiwic2hpZnQiLCJtb3VudGVkIiwiX1NlcnZpY2VzJGxvZ2dlciIsIlNlcnZpY2VzIiwibG9nZ2VyIiwiZGVidWciLCJmb3JjZVVwZGF0ZSIsImZha2VPcHRpb25zIiwiZ2V0RmFrZU9wdGlvbnNPbmNlIiwiX3JlZiIsIm1vZGVsIiwiX3JlZjIiLCJjYXN0SW1tdXRhYmxlIiwiZnJlZXplIiwiaW5pdENvbW1hbmRzIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImdldCIsIlJlYWN0IiwiQ29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltbXV0YWJsZS9FbG1Db21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FzdEltbXV0YWJsZSwgZnJlZXplLCBwcm9kdWNlLCB0eXBlIEltbXV0YWJsZSB9IGZyb20gXCJpbW1lclwiO1xuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZXhlY0NtZCwgbG9nTWVzc2FnZSB9IGZyb20gXCIuLi9Db21tb25cIjtcbmltcG9ydCB7IGdldEZha2VPcHRpb25zT25jZSB9IGZyb20gXCIuLi9mYWtlT3B0aW9uc1wiO1xuaW1wb3J0IHsgU2VydmljZXMgfSBmcm9tIFwiLi4vSW5pdFwiO1xuaW1wb3J0IHR5cGUgeyBDbWQsIEluaXRGdW5jdGlvbiwgTWVzc2FnZSwgTnVsbGFibGUgfSBmcm9tIFwiLi4vVHlwZXNcIjtcbmltcG9ydCB7IGNyZWF0ZUNhbGxCYXNlIH0gZnJvbSBcIi4vY3JlYXRlQ2FsbEJhc2VcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmVyIH0gZnJvbSBcIi4vY3JlYXRlRGVmZXJcIjtcbmltcG9ydCB0eXBlIHsgVXBkYXRlRnVuY3Rpb24gfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBhIHJlYWN0IGNsYXNzIGNvbXBvbmVudCB1c2luZyB0aGUgRWxtaXNoIHBhdHRlcm4uXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBFbG1Db21wb25lbnRcbiAqIEBleHRlbmRzIHtDb21wb25lbnQ8VFByb3BzLCBUTW9kZWw+fVxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1lc3NhZ2UgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VzLlxuICogQHRlbXBsYXRlIFRQcm9wcyBUaGUgdHlwZSBvZiB0aGUgcHJvcHMuXG4gKi9cbmFic3RyYWN0IGNsYXNzIEVsbUNvbXBvbmVudDxUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVFByb3BzPiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxUUHJvcHM+IHtcblx0cHJpdmF0ZSBpbml0Q29tbWFuZHM6IE51bGxhYmxlPChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdPiB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSByZWFkb25seSBjb21wb25lbnROYW1lOiBzdHJpbmc7XG5cdHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBUTWVzc2FnZVtdID0gW107XG5cdHByaXZhdGUgcnVubmluZyA9IGZhbHNlO1xuXHRwcml2YXRlIG1vdW50ZWQgPSBmYWxzZTtcblx0cHJpdmF0ZSBjdXJyZW50TW9kZWw6IEltbXV0YWJsZTxUTW9kZWw+O1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEVsbUNvbXBvbmVudC5cblx0ICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudC5cblx0ICogQHBhcmFtIHsoKSA9PiBUTW9kZWx9IGluaXQgVGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tcG9uZW50LlxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IFRQcm9wcywgaW5pdDogSW5pdEZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sIG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKHByb3BzKTtcblxuXHRcdGNvbnN0IGZha2VPcHRpb25zID0gZ2V0RmFrZU9wdGlvbnNPbmNlPFRNb2RlbCwgVE1lc3NhZ2U+KCk7XG5cblx0XHRpZiAoZmFrZU9wdGlvbnM/LmRpc3BhdGNoKSB7XG5cdFx0XHR0aGlzLmRpc3BhdGNoID0gZmFrZU9wdGlvbnMuZGlzcGF0Y2g7XG5cdFx0fVxuXG5cdFx0Y29uc3QgW21vZGVsLCAuLi5jb21tYW5kc10gPSBmYWtlT3B0aW9ucz8ubW9kZWwgPyBbZmFrZU9wdGlvbnMubW9kZWwgYXMgVE1vZGVsXSA6IGluaXQodGhpcy5wcm9wcyk7XG5cblx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiSW5pdGlhbCBtb2RlbCBmb3JcIiwgbmFtZSwgbW9kZWwpO1xuXG5cdFx0dGhpcy5jb21wb25lbnROYW1lID0gbmFtZTtcblx0XHR0aGlzLmN1cnJlbnRNb2RlbCA9IGNhc3RJbW11dGFibGUoZnJlZXplKG1vZGVsLCB0cnVlKSk7XG5cdFx0dGhpcy5pbml0Q29tbWFuZHMgPSBjb21tYW5kcztcblx0fVxuXG5cdC8qKlxuXHQgKiBJcyBjYWxsZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGxvYWRlZC5cblx0ICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcblx0XHR0aGlzLm1vdW50ZWQgPSB0cnVlO1xuXG5cdFx0aWYgKHRoaXMuaW5pdENvbW1hbmRzKSB7XG5cdFx0XHRleGVjQ21kKHRoaXMuZGlzcGF0Y2gsIC4uLnRoaXMuaW5pdENvbW1hbmRzKTtcblx0XHRcdHRoaXMuaW5pdENvbW1hbmRzID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSXMgY2FsbGVkIGJlZm9yZSB1bmxvYWRpbmcgdGhlIGNvbXBvbmVudC5cblx0ICogV2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIGhhcyB0byBiZSBjYWxsZWQuXG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcblx0XHR0aGlzLm1vdW50ZWQgPSBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBjdXJyZW50IG1vZGVsLlxuXHQgKiBAcmVhZG9ubHlcblx0ICogQHR5cGUge1JlYWRvbmx5PFRNb2RlbD59XG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby11bnVzZWQtY2xhc3MtY29tcG9uZW50LW1ldGhvZHMgLS0gV2UgbmVlZCBpdCBpbnRlcm5hbGx5LlxuXHRwdWJsaWMgZ2V0IG1vZGVsKCk6IEltbXV0YWJsZTxUTW9kZWw+IHtcblx0XHRyZXR1cm4gdGhpcy5jdXJyZW50TW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGF0Y2hlcyBhIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBkaXNwYXRjaC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGRpc3BhdGNoID0gKG1zZzogVE1lc3NhZ2UpOiB2b2lkID0+IHtcblx0XHRpZiAodGhpcy5ydW5uaW5nKSB7XG5cdFx0XHR0aGlzLmJ1ZmZlci5wdXNoKG1zZyk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnJ1bm5pbmcgPSB0cnVlO1xuXG5cdFx0bGV0IG5leHRNc2c6IFRNZXNzYWdlIHwgdW5kZWZpbmVkID0gbXNnO1xuXHRcdGxldCBtb2RpZmllZCA9IGZhbHNlO1xuXG5cdFx0ZG8ge1xuXHRcdFx0Y29uc3QgY3VycmVudE1lc3NhZ2UgPSBuZXh0TXNnO1xuXG5cdFx0XHRsb2dNZXNzYWdlKHRoaXMuY29tcG9uZW50TmFtZSwgY3VycmVudE1lc3NhZ2UpO1xuXG5cdFx0XHRjb25zdCBbZGVmZXIsIGdldERlZmVycmVkXSA9IGNyZWF0ZURlZmVyPFRNb2RlbCwgVE1lc3NhZ2U+KCk7XG5cdFx0XHRjb25zdCBjYWxsQmFzZSA9IGNyZWF0ZUNhbGxCYXNlKGN1cnJlbnRNZXNzYWdlLCB0aGlzLmN1cnJlbnRNb2RlbCwgdGhpcy5wcm9wcywgeyBkZWZlciB9KTtcblxuXHRcdFx0Y29uc3QgW2RyYWZ0Rm4sIC4uLmNvbW1hbmRzXSA9IHRoaXMudXBkYXRlKHRoaXMuY3VycmVudE1vZGVsLCBjdXJyZW50TWVzc2FnZSwgdGhpcy5wcm9wcywgeyBkZWZlciwgY2FsbEJhc2UgfSk7XG5cblx0XHRcdGNvbnN0IFtkZWZlcnJlZERyYWZ0RnVuY3Rpb25zLCBkZWZlcnJlZENvbW1hbmRzXSA9IGdldERlZmVycmVkKCk7XG5cblx0XHRcdGZvciAoY29uc3QgZGVmZXJyZWREcmFmdEZuIG9mIGRlZmVycmVkRHJhZnRGdW5jdGlvbnMpIHtcblx0XHRcdFx0dGhpcy5jdXJyZW50TW9kZWwgPSBwcm9kdWNlKHRoaXMuY3VycmVudE1vZGVsLCBkZWZlcnJlZERyYWZ0Rm4pO1xuXG5cdFx0XHRcdG1vZGlmaWVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRyYWZ0Rm4pIHtcblx0XHRcdFx0dGhpcy5jdXJyZW50TW9kZWwgPSBwcm9kdWNlKHRoaXMuY3VycmVudE1vZGVsLCBkcmFmdEZuKTtcblxuXHRcdFx0XHRtb2RpZmllZCA9IHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdGV4ZWNDbWQodGhpcy5kaXNwYXRjaCwgLi4uY29tbWFuZHMsIC4uLmRlZmVycmVkQ29tbWFuZHMpO1xuXG5cdFx0XHRuZXh0TXNnID0gdGhpcy5idWZmZXIuc2hpZnQoKTtcblx0XHR9IHdoaWxlIChuZXh0TXNnKTtcblxuXHRcdHRoaXMucnVubmluZyA9IGZhbHNlO1xuXG5cdFx0aWYgKHRoaXMubW91bnRlZCAmJiBtb2RpZmllZCkge1xuXHRcdFx0U2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIlVwZGF0ZSBtb2RlbCBmb3JcIiwgdGhpcy5jb21wb25lbnROYW1lLCB0aGlzLmN1cnJlbnRNb2RlbCk7XG5cdFx0XHR0aGlzLmZvcmNlVXBkYXRlKCk7XG5cdFx0fVxuXHR9O1xuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0byBtb2RpZnkgdGhlIG1vZGVsIGJhc2VkIG9uIGEgbWVzc2FnZS5cblx0ICogQHBhcmFtIHtUTW9kZWx9IG1vZGVsIFRoZSBjdXJyZW50IG1vZGVsLlxuXHQgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIG1lc3NhZ2UgdG8gcHJvY2Vzcy5cblx0ICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBvZiB0aGUgY29tcG9uZW50LlxuXHQgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIHVwZGF0ZSBmdW5jdGlvbi5cblx0ICogQHJldHVybnMgVGhlIG5ldyBtb2RlbCAoY2FuIGFsc28gYmUgYW4gZW1wdHkgb2JqZWN0IHt9KSBhbmQgYW4gb3B0aW9uYWwgbmV3IG1lc3NhZ2UgdG8gZGlzcGF0Y2guXG5cdCAqIEBhYnN0cmFjdFxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgYWJzdHJhY3QgdXBkYXRlOiBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+O1xufVxuXG5leHBvcnQgeyBFbG1Db21wb25lbnQgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBQTRDLFNBQUFFLHVCQUFBTSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSxRQUFBQyxDQUFBLHNDQUFBRCxPQUFBLHdCQUFBRSxNQUFBLHVCQUFBQSxNQUFBLENB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
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Immutable } from "immer";
|
|
2
|
+
import type { Cmd, Message, SubscriptionResult } from "../Types";
|
|
3
|
+
type DraftModelFunction<TModel> = (draft: TModel) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Type for the return value of the `update` function.
|
|
6
|
+
*/
|
|
7
|
+
type UpdateReturnType<TModel, TMessage> = [DraftModelFunction<TModel> | null | undefined, ...(Cmd<TMessage> | undefined)[]] | [];
|
|
8
|
+
type DeferFunction<TModel, TMessage> = (draftFn: DraftModelFunction<TModel> | null | undefined, ...commands: (Cmd<TMessage> | undefined)[]) => void;
|
|
9
|
+
type CallBaseFunction<TModel, TProps, TMessage> = (fn: (msg: TMessage, model: Immutable<TModel>, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, Message>) => UpdateReturnType<TModel, TMessage>;
|
|
10
|
+
type UpdateMapFunction<TProps, TModel, TMessage> = (msg: TMessage, model: Immutable<TModel>, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
|
|
11
|
+
interface UpdateFunctionOptions<TProps, TModel, TMessage> {
|
|
12
|
+
defer: DeferFunction<TModel, TMessage>;
|
|
13
|
+
callBase: CallBaseFunction<TModel, TProps, TMessage>;
|
|
14
|
+
}
|
|
15
|
+
type UpdateFunction<TProps, TModel, TMessage extends Message> = (model: Immutable<TModel>, msg: TMessage, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
|
|
16
|
+
/**
|
|
17
|
+
* Type for mapping messages to functions.
|
|
18
|
+
* Use this type to create your update logic for the useElmish hook.
|
|
19
|
+
*/
|
|
20
|
+
type UpdateMap<TProps, TModel, TMessage extends Message> = {
|
|
21
|
+
[TMessageName in TMessage["name"]]: (msg: TMessage & {
|
|
22
|
+
name: TMessageName;
|
|
23
|
+
}, model: Immutable<TModel>, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage & {
|
|
24
|
+
name: TMessageName;
|
|
25
|
+
}>) => UpdateReturnType<TModel, TMessage>;
|
|
26
|
+
};
|
|
27
|
+
type Subscription<TProps, TModel, TMessage> = (model: Immutable<TModel>, props: TProps) => SubscriptionResult<TMessage>;
|
|
28
|
+
export type { CallBaseFunction, DeferFunction, DraftModelFunction, Subscription, UpdateFunction, UpdateFunctionOptions, UpdateMap, UpdateMapFunction, UpdateReturnType, };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltbXV0YWJsZS9UeXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEltbXV0YWJsZSB9IGZyb20gXCJpbW1lclwiO1xuaW1wb3J0IHR5cGUgeyBDbWQsIE1lc3NhZ2UsIFN1YnNjcmlwdGlvblJlc3VsdCB9IGZyb20gXCIuLi9UeXBlc1wiO1xuXG50eXBlIERyYWZ0TW9kZWxGdW5jdGlvbjxUTW9kZWw+ID0gKGRyYWZ0OiBUTW9kZWwpID0+IHZvaWQ7XG5cbi8qKlxuICogVHlwZSBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYHVwZGF0ZWAgZnVuY3Rpb24uXG4gKi9cbnR5cGUgVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiA9IFtEcmFmdE1vZGVsRnVuY3Rpb248VE1vZGVsPiB8IG51bGwgfCB1bmRlZmluZWQsIC4uLihDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdXSB8IFtdO1xuXG50eXBlIERlZmVyRnVuY3Rpb248VE1vZGVsLCBUTWVzc2FnZT4gPSAoXG5cdGRyYWZ0Rm46IERyYWZ0TW9kZWxGdW5jdGlvbjxUTW9kZWw+IHwgbnVsbCB8IHVuZGVmaW5lZCxcblx0Li4uY29tbWFuZHM6IChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdXG4pID0+IHZvaWQ7XG50eXBlIENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRNZXNzYWdlPiA9IChcblx0Zm46IChcblx0XHRtc2c6IFRNZXNzYWdlLFxuXHRcdG1vZGVsOiBJbW11dGFibGU8VE1vZGVsPixcblx0XHRwcm9wczogVFByb3BzLFxuXHRcdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuXHQpID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBNZXNzYWdlPixcbikgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPjtcblxudHlwZSBVcGRhdGVNYXBGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+ID0gKFxuXHRtc2c6IFRNZXNzYWdlLFxuXHRtb2RlbDogSW1tdXRhYmxlPFRNb2RlbD4sXG5cdHByb3BzOiBUUHJvcHMsXG5cdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuKSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG5pbnRlcmZhY2UgVXBkYXRlRnVuY3Rpb25PcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4ge1xuXHRkZWZlcjogRGVmZXJGdW5jdGlvbjxUTW9kZWwsIFRNZXNzYWdlPjtcblx0Y2FsbEJhc2U6IENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRNZXNzYWdlPjtcbn1cblxudHlwZSBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiA9IChcblx0bW9kZWw6IEltbXV0YWJsZTxUTW9kZWw+LFxuXHRtc2c6IFRNZXNzYWdlLFxuXHRwcm9wczogVFByb3BzLFxuXHRvcHRpb25zOiBVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPixcbikgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPjtcblxuLyoqXG4gKiBUeXBlIGZvciBtYXBwaW5nIG1lc3NhZ2VzIHRvIGZ1bmN0aW9ucy5cbiAqIFVzZSB0aGlzIHR5cGUgdG8gY3JlYXRlIHlvdXIgdXBkYXRlIGxvZ2ljIGZvciB0aGUgdXNlRWxtaXNoIGhvb2suXG4gKi9cbnR5cGUgVXBkYXRlTWFwPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+ID0ge1xuXHRbVE1lc3NhZ2VOYW1lIGluIFRNZXNzYWdlW1wibmFtZVwiXV06IChcblx0XHRtc2c6IFRNZXNzYWdlICYgeyBuYW1lOiBUTWVzc2FnZU5hbWUgfSxcblx0XHRtb2RlbDogSW1tdXRhYmxlPFRNb2RlbD4sXG5cdFx0cHJvcHM6IFRQcm9wcyxcblx0XHRvcHRpb25zOiBVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlICYgeyBuYW1lOiBUTWVzc2FnZU5hbWUgfT4sXG5cdCkgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPjtcbn07XG5cbnR5cGUgU3Vic2NyaXB0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4gPSAobW9kZWw6IEltbXV0YWJsZTxUTW9kZWw+LCBwcm9wczogVFByb3BzKSA9PiBTdWJzY3JpcHRpb25SZXN1bHQ8VE1lc3NhZ2U+O1xuXG5leHBvcnQgdHlwZSB7XG5cdENhbGxCYXNlRnVuY3Rpb24sXG5cdERlZmVyRnVuY3Rpb24sXG5cdERyYWZ0TW9kZWxGdW5jdGlvbixcblx0U3Vic2NyaXB0aW9uLFxuXHRVcGRhdGVGdW5jdGlvbixcblx0VXBkYXRlRnVuY3Rpb25PcHRpb25zLFxuXHRVcGRhdGVNYXAsXG5cdFVwZGF0ZU1hcEZ1bmN0aW9uLFxuXHRVcGRhdGVSZXR1cm5UeXBlLFxufTtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Immutable } from "immer";
|
|
2
|
+
import type { Message } from "../Types";
|
|
3
|
+
import type { CallBaseFunction, UpdateFunctionOptions } from "./Types";
|
|
4
|
+
declare function createCallBase<TProps, TModel, TMessage extends Message>(msg: TMessage, model: Immutable<TModel>, props: TProps, options: Omit<UpdateFunctionOptions<TProps, TModel, TMessage>, "callBase">): CallBaseFunction<TModel, TProps, TMessage>;
|
|
5
|
+
export { createCallBase };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createCallBase = createCallBase;
|
|
7
|
+
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); }
|
|
8
|
+
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; }
|
|
9
|
+
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; }
|
|
10
|
+
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; }
|
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
12
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
13
|
+
function createCallBase(msg, model, props, options) {
|
|
14
|
+
var _callBase = function callBase(fn) {
|
|
15
|
+
return (
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- The current TMessage must be extended from Message
|
|
17
|
+
fn(msg, model, props, _objectSpread(_objectSpread({}, options), {}, {
|
|
18
|
+
callBase: _callBase
|
|
19
|
+
}))
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
return _callBase;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDYWxsQmFzZSIsIm1zZyIsIm1vZGVsIiwicHJvcHMiLCJvcHRpb25zIiwiY2FsbEJhc2UiLCJmbiIsIl9vYmplY3RTcHJlYWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1tdXRhYmxlL2NyZWF0ZUNhbGxCYXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW1tdXRhYmxlIH0gZnJvbSBcImltbWVyXCI7XG5pbXBvcnQgdHlwZSB7IE1lc3NhZ2UgfSBmcm9tIFwiLi4vVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQ2FsbEJhc2VGdW5jdGlvbiwgVXBkYXRlRnVuY3Rpb25PcHRpb25zLCBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi4vVHlwZXNcIjtcblxuZnVuY3Rpb24gY3JlYXRlQ2FsbEJhc2U8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4oXG5cdG1zZzogVE1lc3NhZ2UsXG5cdG1vZGVsOiBJbW11dGFibGU8VE1vZGVsPixcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogT21pdDxVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiwgXCJjYWxsQmFzZVwiPixcbik6IENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRNZXNzYWdlPiB7XG5cdGNvbnN0IGNhbGxCYXNlOiBDYWxsQmFzZUZ1bmN0aW9uPFRNb2RlbCwgVFByb3BzLCBUTWVzc2FnZT4gPSAoZm4pID0+XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtdHlwZS1hc3NlcnRpb24gLS0gVGhlIGN1cnJlbnQgVE1lc3NhZ2UgbXVzdCBiZSBleHRlbmRlZCBmcm9tIE1lc3NhZ2Vcblx0XHRmbihtc2csIG1vZGVsLCBwcm9wcywgeyAuLi5vcHRpb25zLCBjYWxsQmFzZSB9KSBhcyBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG5cdHJldHVybiBjYWxsQmFzZTtcbn1cblxuZXhwb3J0IHsgY3JlYXRlQ2FsbEJhc2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBSUEsU0FBU0EsY0FBY0EsQ0FDdEJDLEdBQWEsRUFDYkMsS0FBd0IsRUFDeEJDLEtBQWEsRUFDYkMsT0FBMEUsRUFDN0I7RUFDN0MsSUFBTUMsU0FBb0QsR0FBRyxTQUF2REEsUUFBb0RBLENBQUlDLEVBQUU7SUFBQTtNQUMvRDtNQUNBQSxFQUFFLENBQUNMLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxLQUFLLEVBQUFJLGFBQUEsQ0FBQUEsYUFBQSxLQUFPSCxPQUFPO1FBQUVDLFFBQVEsRUFBUkE7TUFBUSxFQUFFO0lBQUM7RUFBQSxDQUFzQztFQUV0RixPQUFPQSxTQUFRO0FBQ2hCIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Cmd, Message } from "../Types";
|
|
2
|
+
import type { DeferFunction, DraftModelFunction } from "./Types";
|
|
3
|
+
declare function createDefer<TModel, TMessage extends Message>(): [
|
|
4
|
+
DeferFunction<TModel, TMessage>,
|
|
5
|
+
() => [DraftModelFunction<TModel>[], (Cmd<TMessage> | undefined)[]]
|
|
6
|
+
];
|
|
7
|
+
export { createDefer };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createDefer = createDefer;
|
|
7
|
+
function createDefer() {
|
|
8
|
+
var draftFunctions = [];
|
|
9
|
+
var deferredCommands = [];
|
|
10
|
+
var defer = function defer(tempDraftFn) {
|
|
11
|
+
if (tempDraftFn) {
|
|
12
|
+
draftFunctions.push(tempDraftFn);
|
|
13
|
+
}
|
|
14
|
+
for (var _len = arguments.length, tempDeferredCommands = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
15
|
+
tempDeferredCommands[_key - 1] = arguments[_key];
|
|
16
|
+
}
|
|
17
|
+
deferredCommands.push.apply(deferredCommands, tempDeferredCommands);
|
|
18
|
+
};
|
|
19
|
+
return [defer, function () {
|
|
20
|
+
return [draftFunctions, deferredCommands];
|
|
21
|
+
}];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVEZWZlciIsImRyYWZ0RnVuY3Rpb25zIiwiZGVmZXJyZWRDb21tYW5kcyIsImRlZmVyIiwidGVtcERyYWZ0Rm4iLCJwdXNoIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInRlbXBEZWZlcnJlZENvbW1hbmRzIiwiQXJyYXkiLCJfa2V5IiwiYXBwbHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1tdXRhYmxlL2NyZWF0ZURlZmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ21kLCBNZXNzYWdlIH0gZnJvbSBcIi4uL1R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IERlZmVyRnVuY3Rpb24sIERyYWZ0TW9kZWxGdW5jdGlvbiB9IGZyb20gXCIuL1R5cGVzXCI7XG5cbmZ1bmN0aW9uIGNyZWF0ZURlZmVyPFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPigpOiBbXG5cdERlZmVyRnVuY3Rpb248VE1vZGVsLCBUTWVzc2FnZT4sXG5cdCgpID0+IFtEcmFmdE1vZGVsRnVuY3Rpb248VE1vZGVsPltdLCAoQ21kPFRNZXNzYWdlPiB8IHVuZGVmaW5lZClbXV0sXG5dIHtcblx0Y29uc3QgZHJhZnRGdW5jdGlvbnM6IERyYWZ0TW9kZWxGdW5jdGlvbjxUTW9kZWw+W10gPSBbXTtcblx0Y29uc3QgZGVmZXJyZWRDb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQpW10gPSBbXTtcblxuXHRjb25zdCBkZWZlcjogRGVmZXJGdW5jdGlvbjxUTW9kZWwsIFRNZXNzYWdlPiA9ICh0ZW1wRHJhZnRGbiwgLi4udGVtcERlZmVycmVkQ29tbWFuZHMpID0+IHtcblx0XHRpZiAodGVtcERyYWZ0Rm4pIHtcblx0XHRcdGRyYWZ0RnVuY3Rpb25zLnB1c2godGVtcERyYWZ0Rm4pO1xuXHRcdH1cblxuXHRcdGRlZmVycmVkQ29tbWFuZHMucHVzaCguLi50ZW1wRGVmZXJyZWRDb21tYW5kcyk7XG5cdH07XG5cblx0cmV0dXJuIFtkZWZlciwgKCkgPT4gW2RyYWZ0RnVuY3Rpb25zLCBkZWZlcnJlZENvbW1hbmRzXV07XG59XG5cbmV4cG9ydCB7IGNyZWF0ZURlZmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLFNBQVNBLFdBQVdBLENBQUEsRUFHbEI7RUFDRCxJQUFNQyxjQUE0QyxHQUFHLEVBQUU7RUFDdkQsSUFBTUMsZ0JBQStDLEdBQUcsRUFBRTtFQUUxRCxJQUFNQyxLQUFzQyxHQUFHLFNBQXpDQSxLQUFzQ0EsQ0FBSUMsV0FBVyxFQUE4QjtJQUN4RixJQUFJQSxXQUFXLEVBQUU7TUFDaEJILGNBQWMsQ0FBQ0ksSUFBSSxDQUFDRCxXQUFXLENBQUM7SUFDakM7SUFBQyxTQUFBRSxJQUFBLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxFQUg4REMsb0JBQW9CLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxPQUFBQSxJQUFBLFdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7TUFBcEJGLG9CQUFvQixDQUFBRSxJQUFBLFFBQUFKLFNBQUEsQ0FBQUksSUFBQTtJQUFBO0lBS25GVCxnQkFBZ0IsQ0FBQ0csSUFBSSxDQUFBTyxLQUFBLENBQXJCVixnQkFBZ0IsRUFBU08sb0JBQW9CLENBQUM7RUFDL0MsQ0FBQztFQUVELE9BQU8sQ0FBQ04sS0FBSyxFQUFFO0lBQUEsT0FBTSxDQUFDRixjQUFjLEVBQUVDLGdCQUFnQixDQUFDO0VBQUEsRUFBQztBQUN6RCIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { cmd } from "../cmd";
|
|
2
|
+
export { errorHandler, errorMsg, handleError, type ErrorMessage } from "../ErrorHandling";
|
|
3
|
+
export { init, type ElmOptions, type Logger } from "../Init";
|
|
4
|
+
export { mergeSubscriptions } from "../mergeSubscriptions";
|
|
5
|
+
export type { Cmd, Dispatch, InitResult, Message, SubscriptionResult, } from "../Types";
|
|
6
|
+
export type { UpdateFunctionOptions, UpdateMap, UpdateReturnType, } from "./Types";
|
|
7
|
+
export { useElmish, type UseElmishOptions } from "./useElmish";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "cmd", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _cmd.cmd;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "errorHandler", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _ErrorHandling.errorHandler;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "errorMsg", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _ErrorHandling.errorMsg;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "handleError", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _ErrorHandling.handleError;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "init", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function get() {
|
|
33
|
+
return _Init.init;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "mergeSubscriptions", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _mergeSubscriptions.mergeSubscriptions;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "useElmish", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _useElmish.useElmish;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
var _cmd = require("../cmd");
|
|
49
|
+
var _ErrorHandling = require("../ErrorHandling");
|
|
50
|
+
var _Init = require("../Init");
|
|
51
|
+
var _mergeSubscriptions = require("../mergeSubscriptions");
|
|
52
|
+
var _useElmish = require("./useElmish");
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY21kIiwicmVxdWlyZSIsIl9FcnJvckhhbmRsaW5nIiwiX0luaXQiLCJfbWVyZ2VTdWJzY3JpcHRpb25zIiwiX3VzZUVsbWlzaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbW11dGFibGUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgY21kIH0gZnJvbSBcIi4uL2NtZFwiO1xuZXhwb3J0IHsgZXJyb3JIYW5kbGVyLCBlcnJvck1zZywgaGFuZGxlRXJyb3IsIHR5cGUgRXJyb3JNZXNzYWdlIH0gZnJvbSBcIi4uL0Vycm9ySGFuZGxpbmdcIjtcbmV4cG9ydCB7IGluaXQsIHR5cGUgRWxtT3B0aW9ucywgdHlwZSBMb2dnZXIgfSBmcm9tIFwiLi4vSW5pdFwiO1xuZXhwb3J0IHsgbWVyZ2VTdWJzY3JpcHRpb25zIH0gZnJvbSBcIi4uL21lcmdlU3Vic2NyaXB0aW9uc1wiO1xuZXhwb3J0IHR5cGUge1xuXHRDbWQsXG5cdERpc3BhdGNoLFxuXHRJbml0UmVzdWx0LFxuXHRNZXNzYWdlLFxuXHRTdWJzY3JpcHRpb25SZXN1bHQsXG59IGZyb20gXCIuLi9UeXBlc1wiO1xuZXhwb3J0IHR5cGUge1xuXHRVcGRhdGVGdW5jdGlvbk9wdGlvbnMsXG5cdFVwZGF0ZU1hcCxcblx0VXBkYXRlUmV0dXJuVHlwZSxcbn0gZnJvbSBcIi4vVHlwZXNcIjtcbmV4cG9ydCB7IHVzZUVsbWlzaCwgdHlwZSBVc2VFbG1pc2hPcHRpb25zIH0gZnJvbSBcIi4vdXNlRWxtaXNoXCI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUgsT0FBQTtBQWFBLElBQUFJLFVBQUEsR0FBQUosT0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type Immutable } from "immer";
|
|
2
|
+
import { type Dispatch, type InitFunction, type Message } from "../Types";
|
|
3
|
+
import type { Subscription, UpdateFunction, UpdateFunctionOptions, UpdateMap, UpdateReturnType } from "./Types";
|
|
4
|
+
/**
|
|
5
|
+
* Options for the `useElmish` hook.
|
|
6
|
+
* @interface UseElmishOptions
|
|
7
|
+
* @template TProps The type of the props.
|
|
8
|
+
* @template TModel The type of the model.
|
|
9
|
+
* @template TMessage The type of the messages discriminated union.
|
|
10
|
+
*/
|
|
11
|
+
interface UseElmishOptions<TProps, TModel, TMessage extends Message> {
|
|
12
|
+
/**
|
|
13
|
+
* The name of the component. This is used for logging only.
|
|
14
|
+
* @type {string}
|
|
15
|
+
*/
|
|
16
|
+
name: string;
|
|
17
|
+
/**
|
|
18
|
+
* The props passed to the component.
|
|
19
|
+
* @type {TProps}
|
|
20
|
+
*/
|
|
21
|
+
props: TProps;
|
|
22
|
+
/**
|
|
23
|
+
* The function to initialize the components model. This function is only called once.
|
|
24
|
+
* @type {InitFunction<TProps, TModel, TMessage>}
|
|
25
|
+
*/
|
|
26
|
+
init: InitFunction<TProps, TModel, TMessage>;
|
|
27
|
+
/**
|
|
28
|
+
* The `update` function or update map object.
|
|
29
|
+
* @type {(UpdateFunction<TProps, TModel, TMessage> | UpdateMap<TProps, TModel, TMessage>)}
|
|
30
|
+
*/
|
|
31
|
+
update: UpdateFunction<TProps, TModel, TMessage> | UpdateMap<TProps, TModel, TMessage>;
|
|
32
|
+
/**
|
|
33
|
+
* The optional `subscription` function. This function is only called once.
|
|
34
|
+
* @type {(UpdateFunction<TProps, TModel, TMessage> | UpdateMap<TProps, TModel, TMessage>)}
|
|
35
|
+
*/
|
|
36
|
+
subscription?: Subscription<TProps, TModel, TMessage>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Hook to use the Elm architecture pattern in a function component.
|
|
40
|
+
* @param {UseElmishOptions} options The options passed the the hook.
|
|
41
|
+
* @returns A tuple containing the current model and the dispatcher.
|
|
42
|
+
* @example
|
|
43
|
+
* const [model, dispatch] = useElmish({ props, init, update, name: "MyComponent" });
|
|
44
|
+
*/
|
|
45
|
+
declare function useElmish<TProps, TModel, TMessage extends Message>({ name, props, init, update, subscription, }: UseElmishOptions<TProps, TModel, TMessage>): [Immutable<TModel>, Dispatch<TMessage>];
|
|
46
|
+
declare function callUpdate<TProps, TModel, TMessage extends Message>(update: UpdateFunction<TProps, TModel, TMessage> | UpdateMap<TProps, TModel, TMessage>, msg: TMessage, model: Immutable<TModel>, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>): UpdateReturnType<TModel, TMessage>;
|
|
47
|
+
declare function callUpdateMap<TProps, TModel, TMessage extends Message>(updateMap: UpdateMap<TProps, TModel, TMessage>, msg: TMessage, model: Immutable<TModel>, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>): UpdateReturnType<TModel, TMessage>;
|
|
48
|
+
export type { UseElmishOptions };
|
|
49
|
+
export { callUpdate, callUpdateMap, useElmish };
|