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.
Files changed (49) hide show
  1. package/README.md +54 -7
  2. package/dist/ElmComponent.js +3 -5
  3. package/dist/Types.d.ts +14 -6
  4. package/dist/Types.js +35 -1
  5. package/dist/createCallBase.d.ts +1 -2
  6. package/dist/createCallBase.js +1 -1
  7. package/dist/immutable/ElmComponent.d.ts +67 -0
  8. package/dist/immutable/ElmComponent.js +198 -0
  9. package/dist/immutable/Types.d.ts +28 -0
  10. package/dist/immutable/Types.js +6 -0
  11. package/dist/immutable/createCallBase.d.ts +5 -0
  12. package/dist/immutable/createCallBase.js +24 -0
  13. package/dist/immutable/createDefer.d.ts +7 -0
  14. package/dist/immutable/createDefer.js +23 -0
  15. package/dist/immutable/index.d.ts +7 -0
  16. package/dist/immutable/index.js +53 -0
  17. package/dist/immutable/useElmish.d.ts +49 -0
  18. package/dist/immutable/useElmish.js +219 -0
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.js +1 -1
  21. package/dist/mergeSubscriptions.d.ts +1 -2
  22. package/dist/mergeSubscriptions.js +3 -3
  23. package/dist/{Testing → testing}/createModelAndProps.js +1 -1
  24. package/dist/{Testing → testing}/createUpdateArgsFactory.js +1 -1
  25. package/dist/{Testing → testing}/execCmd.js +1 -1
  26. package/dist/testing/execCmd.spec.d.ts +1 -0
  27. package/dist/{Testing → testing}/execSubscription.d.ts +1 -2
  28. package/dist/testing/execSubscription.js +51 -0
  29. package/dist/{Testing → testing}/getCreateUpdateArgs.js +1 -1
  30. package/dist/testing/getUpdateFn.js +111 -0
  31. package/dist/{Testing → testing}/index.js +1 -1
  32. package/dist/{Testing → testing}/initAndExecCmd.js +1 -1
  33. package/dist/{Testing → testing}/renderWithModel.js +1 -1
  34. package/dist/testing/renderWithModel.spec.d.ts +1 -0
  35. package/dist/useElmish.d.ts +6 -15
  36. package/dist/useElmish.js +5 -15
  37. package/package.json +6 -2
  38. package/dist/Testing/execSubscription.js +0 -51
  39. package/dist/Testing/getUpdateFn.js +0 -114
  40. /package/dist/{Testing/execCmd.spec.d.ts → immutable/ElmComponent.spec.d.ts} +0 -0
  41. /package/dist/{Testing/renderWithModel.spec.d.ts → immutable/useElmish.spec.d.ts} +0 -0
  42. /package/dist/{Testing → testing}/createModelAndProps.d.ts +0 -0
  43. /package/dist/{Testing → testing}/createUpdateArgsFactory.d.ts +0 -0
  44. /package/dist/{Testing → testing}/execCmd.d.ts +0 -0
  45. /package/dist/{Testing → testing}/getCreateUpdateArgs.d.ts +0 -0
  46. /package/dist/{Testing → testing}/getUpdateFn.d.ts +0 -0
  47. /package/dist/{Testing → testing}/index.d.ts +0 -0
  48. /package/dist/{Testing → testing}/initAndExecCmd.d.ts +0 -0
  49. /package/dist/{Testing → testing}/renderWithModel.d.ts +0 -0
package/README.md CHANGED
@@ -17,6 +17,7 @@ This library brings the elmish pattern to react.
17
17
  - [Subscriptions](#subscriptions)
18
18
  - [Working with external sources of events](#working-with-external-sources-of-events)
19
19
  - [Cleanup subscriptions](#cleanup-subscriptions)
20
+ - [Immutability](#immutability)
20
21
  - [Setup](#setup)
21
22
  - [Error handling](#error-handling)
22
23
  - [React life cycle management](#react-life-cycle-management)
@@ -455,6 +456,52 @@ function subscription (model: Model): SubscriptionResult<Message> {
455
456
 
456
457
  The destructor is called when the component is removed from the DOM.
457
458
 
459
+ ## Immutability
460
+
461
+ If you want to use immutable data structures, you can use the imports from "react-elmish/immutable". This version of the `useElmish` hook returns an immutable model.
462
+
463
+ ```tsx
464
+ import { useElmish } from "react-elmish/immutable";
465
+
466
+ function App(props: Props): JSX.Element {
467
+ const [model, dispatch] = useElmish({ props, init, update, name: "App" });
468
+
469
+ model.value = 42; // This will throw an error
470
+
471
+ return (
472
+ // ...
473
+ );
474
+ }
475
+ ```
476
+
477
+ To update your model in the update map or update function, you return a draft function as first value:
478
+
479
+ ```ts
480
+ import { type UpdateMap } from "react-elmish/immutable";
481
+
482
+ const updateMap: UpdateMap<Props, Model, Message> = {
483
+ increment (_msg, model) {
484
+ model.value += 1; // This will throw an error
485
+
486
+ return [(draft) => draft.value += 1];
487
+ },
488
+
489
+ decrement () {
490
+ return [(draft) => draft.value -= 1];
491
+ },
492
+
493
+ commandOnly() {
494
+ // The first value can be null or undefined
495
+ return [null, cmd.ofMsg(Msg.increment())];
496
+ },
497
+
498
+ doNothing() {
499
+ // Return an empty tuple to do nothing
500
+ return [];
501
+ },
502
+ };
503
+ ```
504
+
458
505
  ## Setup
459
506
 
460
507
  **react-elmish** works without a setup. But if you want to use logging or some middleware, you can setup **react-elmish** at the start of your program.
@@ -911,7 +958,7 @@ const subscription = mergeSubscriptions(LoadSettings.subscription, localSubscrip
911
958
 
912
959
  ## Testing
913
960
 
914
- To test your **update** handler you can use some helper functions in `react-elmish/dist/Testing`:
961
+ To test your **update** handler you can use some helper functions in `react-elmish/testing`:
915
962
 
916
963
  | Function | Description |
917
964
  | --- | --- |
@@ -925,7 +972,7 @@ To test your **update** handler you can use some helper functions in `react-elmi
925
972
  ### Testing the init function
926
973
 
927
974
  ```ts
928
- import { initAndExecCmd } from "react-elmish/dist/Testing";
975
+ import { initAndExecCmd } from "react-elmish/testing";
929
976
  import { init, Msg } from "./MyComponent";
930
977
 
931
978
  it("initializes the model correctly", async () => {
@@ -946,7 +993,7 @@ it("initializes the model correctly", async () => {
946
993
  **Note**: When using an `UpdateMap`, you can get an `update` function by calling `getUpdateFn`:
947
994
 
948
995
  ```ts
949
- import { getUpdateFn } from "react-elmish/dist/Testing";
996
+ import { getUpdateFn } from "react-elmish/testing";
950
997
  import { updateMap } from "./MyComponent";
951
998
 
952
999
  const updateFn = getUpdateFn(updateMap);
@@ -958,7 +1005,7 @@ const [model, cmd] = updateFn(msg, model, props);
958
1005
  A simple test:
959
1006
 
960
1007
  ```ts
961
- import { getCreateUpdateArgs, createUpdateArgsFactory, execCmd } from "react-elmish/dist/Testing";
1008
+ import { getCreateUpdateArgs, createUpdateArgsFactory, execCmd } from "react-elmish/testing";
962
1009
  import { init, Msg } from "./MyComponent";
963
1010
 
964
1011
  const createUpdateArgs = getCreateUpdateArgs(init, () => ({ /* initial props */ }));
@@ -991,7 +1038,7 @@ It also resolves for `attempt` functions if the called functions succeed. And it
991
1038
  There is an alternative function `getUpdateAndExecCmdFn` to get the `update` function for an update map, which immediately invokes the command and returns the messages.
992
1039
 
993
1040
  ```ts
994
- import { createUpdateArgs, getUpdateAndExecCmdFn } from "react-elmish/dist/Testing";
1041
+ import { createUpdateArgs, getUpdateAndExecCmdFn } from "react-elmish/testing";
995
1042
 
996
1043
  const updateAndExecCmdFn = getUpdateAndExecCmdFn(updateMap);
997
1044
 
@@ -1018,7 +1065,7 @@ it("returns the correct cmd", async () => {
1018
1065
  It is almost the same as testing the `update` function. You can use the `getCreateModelAndProps` function to create a factory for the model and the props. Then use `execSubscription` to execute the subscriptions:
1019
1066
 
1020
1067
  ```ts
1021
- import { getCreateModelAndProps, execSubscription } from "react-elmish/dist/Testing";
1068
+ import { getCreateModelAndProps, execSubscription } from "react-elmish/testing";
1022
1069
  import { init, Msg, subscription } from "./MyComponent";
1023
1070
 
1024
1071
  const createModelAndProps = getCreateModelAndProps(init, () => ({ /* initial props */ }));
@@ -1045,7 +1092,7 @@ it("dispatches the eventTriggered message", async () => {
1045
1092
  To test UI components with a fake model you can use `renderWithModel` from the Testing namespace. The first parameter is a function to render your component (e.g. with **@testing-library/react**). The second parameter is the fake model. The third parameter is an optional options object, where you can also pass a fake `dispatch` function.
1046
1093
 
1047
1094
  ```tsx
1048
- import { renderWithModel } from "react-elmish/dist/Testing";
1095
+ import { renderWithModel } from "react-elmish/testing";
1049
1096
  import { fireEvent, render, screen } from "@testing-library/react";
1050
1097
 
1051
1098
  it("renders the correct value", () => {
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ElmComponent = void 0;
7
- var _immer = require("immer");
8
7
  var _react = _interopRequireDefault(require("react"));
9
8
  var _Common = require("./Common");
10
9
  var _Init = require("./Init");
@@ -84,15 +83,14 @@ var ElmComponent = exports.ElmComponent = /*#__PURE__*/function (_React$Componen
84
83
  do {
85
84
  var currentMessage = nextMsg;
86
85
  (0, _Common.logMessage)(_this.componentName, currentMessage);
87
- var immutableModel = (0, _immer.castImmutable)((0, _immer.freeze)(_this.currentModel, true));
88
86
  var _createDefer = (0, _createDefer3.createDefer)(),
89
87
  _createDefer2 = _slicedToArray(_createDefer, 2),
90
88
  defer = _createDefer2[0],
91
89
  getDeferred = _createDefer2[1];
92
- var callBase = (0, _createCallBase.createCallBase)(currentMessage, immutableModel, _this.props, {
90
+ var callBase = (0, _createCallBase.createCallBase)(currentMessage, _this.currentModel, _this.props, {
93
91
  defer: defer
94
92
  });
95
- var _this$update = _this.update(immutableModel, currentMessage, _this.props, {
93
+ var _this$update = _this.update(_this.currentModel, currentMessage, _this.props, {
96
94
  defer: defer,
97
95
  callBase: callBase
98
96
  }),
@@ -184,4 +182,4 @@ var ElmComponent = exports.ElmComponent = /*#__PURE__*/function (_React$Componen
184
182
  }
185
183
  }]);
186
184
  }(_react["default"].Component);
187
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW1tZXIiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Db21tb24iLCJfSW5pdCIsIl9jcmVhdGVDYWxsQmFzZSIsIl9jcmVhdGVEZWZlcjMiLCJfZmFrZU9wdGlvbnMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiYSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsInRlc3QiLCJuIiwibCIsImkiLCJ1IiwiZiIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydGllcyIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkVsbUNvbXBvbmVudCIsImV4cG9ydHMiLCJfUmVhY3QkQ29tcG9uZW50IiwicHJvcHMiLCJpbml0IiwiX1NlcnZpY2VzJGxvZ2dlcjIiLCJfdGhpcyIsIm1zZyIsInJ1bm5pbmciLCJidWZmZXIiLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJjdXJyZW50TWVzc2FnZSIsImxvZ01lc3NhZ2UiLCJjb21wb25lbnROYW1lIiwiaW1tdXRhYmxlTW9kZWwiLCJjYXN0SW1tdXRhYmxlIiwiZnJlZXplIiwiY3VycmVudE1vZGVsIiwiX2NyZWF0ZURlZmVyIiwiY3JlYXRlRGVmZXIiLCJfY3JlYXRlRGVmZXIyIiwiZGVmZXIiLCJnZXREZWZlcnJlZCIsImNhbGxCYXNlIiwiY3JlYXRlQ2FsbEJhc2UiLCJfdGhpcyR1cGRhdGUiLCJ1cGRhdGUiLCJfdGhpcyR1cGRhdGUyIiwibW9kZWwiLCJjb21tYW5kcyIsIl9nZXREZWZlcnJlZCIsIl9nZXREZWZlcnJlZDIiLCJkZWZlcnJlZE1vZGVsIiwiZGVmZXJyZWRDb21tYW5kcyIsIm1vZGVsSGFzQ2hhbmdlZCIsImV4ZWNDbWQiLCJkaXNwYXRjaCIsImNvbmNhdCIsInNoaWZ0IiwibW91bnRlZCIsIl9TZXJ2aWNlcyRsb2dnZXIiLCJTZXJ2aWNlcyIsImxvZ2dlciIsImRlYnVnIiwiZm9yY2VVcGRhdGUiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsIl9yZWYiLCJfcmVmMiIsImluaXRDb21tYW5kcyIsImNvbXBvbmVudERpZE1vdW50IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJnZXQiLCJSZWFjdCIsIkNvbXBvbmVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1Db21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FzdEltbXV0YWJsZSwgZnJlZXplIH0gZnJvbSBcImltbWVyXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBleGVjQ21kLCBsb2dNZXNzYWdlLCBtb2RlbEhhc0NoYW5nZWQgfSBmcm9tIFwiLi9Db21tb25cIjtcbmltcG9ydCB7IFNlcnZpY2VzIH0gZnJvbSBcIi4vSW5pdFwiO1xuaW1wb3J0IHR5cGUgeyBDbWQsIEluaXRGdW5jdGlvbiwgTWVzc2FnZSwgTnVsbGFibGUsIFVwZGF0ZUZ1bmN0aW9uIH0gZnJvbSBcIi4vVHlwZXNcIjtcbmltcG9ydCB7IGNyZWF0ZUNhbGxCYXNlIH0gZnJvbSBcIi4vY3JlYXRlQ2FsbEJhc2VcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmVyIH0gZnJvbSBcIi4vY3JlYXRlRGVmZXJcIjtcbmltcG9ydCB7IGdldEZha2VPcHRpb25zT25jZSB9IGZyb20gXCIuL2Zha2VPcHRpb25zXCI7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZm9yIGEgcmVhY3QgY2xhc3MgY29tcG9uZW50IHVzaW5nIHRoZSBFbG1pc2ggcGF0dGVybi5cbiAqIEBleHBvcnRcbiAqIEBhYnN0cmFjdFxuICogQGNsYXNzIEVsbUNvbXBvbmVudFxuICogQGV4dGVuZHMge0NvbXBvbmVudDxUUHJvcHMsIFRNb2RlbD59XG4gKiBAdGVtcGxhdGUgVE1vZGVsIFRoZSB0eXBlIG9mIHRoZSBtb2RlbC5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMuXG4gKiBAdGVtcGxhdGUgVFByb3BzIFRoZSB0eXBlIG9mIHRoZSBwcm9wcy5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgRWxtQ29tcG9uZW50PFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlLCBUUHJvcHM+IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFRQcm9wcz4ge1xuXHRwcml2YXRlIGluaXRDb21tYW5kczogTnVsbGFibGU8KENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQpW10+IHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudE5hbWU6IHN0cmluZztcblx0cHJpdmF0ZSByZWFkb25seSBidWZmZXI6IFRNZXNzYWdlW10gPSBbXTtcblx0cHJpdmF0ZSBydW5uaW5nID0gZmFsc2U7XG5cdHByaXZhdGUgbW91bnRlZCA9IGZhbHNlO1xuXHRwcml2YXRlIGN1cnJlbnRNb2RlbDogVE1vZGVsO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEVsbUNvbXBvbmVudC5cblx0ICogQHBhcmFtIHtUUHJvcHN9IHByb3BzIFRoZSBwcm9wcyBmb3IgdGhlIGNvbXBvbmVudC5cblx0ICogQHBhcmFtIHsoKSA9PiBUTW9kZWx9IGluaXQgVGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tcG9uZW50LlxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IFRQcm9wcywgaW5pdDogSW5pdEZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sIG5hbWU6IHN0cmluZykge1xuXHRcdHN1cGVyKHByb3BzKTtcblxuXHRcdGNvbnN0IGZha2VPcHRpb25zID0gZ2V0RmFrZU9wdGlvbnNPbmNlPFRNb2RlbCwgVE1lc3NhZ2U+KCk7XG5cblx0XHRpZiAoZmFrZU9wdGlvbnM/LmRpc3BhdGNoKSB7XG5cdFx0XHR0aGlzLmRpc3BhdGNoID0gZmFrZU9wdGlvbnMuZGlzcGF0Y2g7XG5cdFx0fVxuXG5cdFx0Y29uc3QgW21vZGVsLCAuLi5jb21tYW5kc10gPSBmYWtlT3B0aW9ucz8ubW9kZWwgPyBbZmFrZU9wdGlvbnMubW9kZWwgYXMgVE1vZGVsXSA6IGluaXQodGhpcy5wcm9wcyk7XG5cblx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiSW5pdGlhbCBtb2RlbCBmb3JcIiwgbmFtZSwgbW9kZWwpO1xuXG5cdFx0dGhpcy5jb21wb25lbnROYW1lID0gbmFtZTtcblx0XHR0aGlzLmN1cnJlbnRNb2RlbCA9IG1vZGVsO1xuXHRcdHRoaXMuaW5pdENvbW1hbmRzID0gY29tbWFuZHM7XG5cdH1cblxuXHQvKipcblx0ICogSXMgY2FsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBsb2FkZWQuXG5cdCAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG5cdFx0dGhpcy5tb3VudGVkID0gdHJ1ZTtcblxuXHRcdGlmICh0aGlzLmluaXRDb21tYW5kcykge1xuXHRcdFx0ZXhlY0NtZCh0aGlzLmRpc3BhdGNoLCAuLi50aGlzLmluaXRDb21tYW5kcyk7XG5cdFx0XHR0aGlzLmluaXRDb21tYW5kcyA9IG51bGw7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIElzIGNhbGxlZCBiZWZvcmUgdW5sb2FkaW5nIHRoZSBjb21wb25lbnQuXG5cdCAqIFdoZW4gaW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kLCB0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBoYXMgdG8gYmUgY2FsbGVkLlxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHRwdWJsaWMgY29tcG9uZW50V2lsbFVubW91bnQoKTogdm9pZCB7XG5cdFx0dGhpcy5tb3VudGVkID0gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgY3VycmVudCBtb2RlbC5cblx0ICogQHJlYWRvbmx5XG5cdCAqIEB0eXBlIHtSZWFkb25seTxUTW9kZWw+fVxuXHQgKiBAbWVtYmVyb2YgRWxtQ29tcG9uZW50XG5cdCAqL1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tdW51c2VkLWNsYXNzLWNvbXBvbmVudC1tZXRob2RzIC0tIFdlIG5lZWQgaXQgaW50ZXJuYWxseS5cblx0cHVibGljIGdldCBtb2RlbCgpOiBSZWFkb25seTxUTW9kZWw+IHtcblx0XHRyZXR1cm4gdGhpcy5jdXJyZW50TW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGF0Y2hlcyBhIG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBkaXNwYXRjaC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IGRpc3BhdGNoID0gKG1zZzogVE1lc3NhZ2UpOiB2b2lkID0+IHtcblx0XHRpZiAodGhpcy5ydW5uaW5nKSB7XG5cdFx0XHR0aGlzLmJ1ZmZlci5wdXNoKG1zZyk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnJ1bm5pbmcgPSB0cnVlO1xuXG5cdFx0bGV0IG5leHRNc2c6IFRNZXNzYWdlIHwgdW5kZWZpbmVkID0gbXNnO1xuXHRcdGxldCBtb2RpZmllZCA9IGZhbHNlO1xuXG5cdFx0ZG8ge1xuXHRcdFx0Y29uc3QgY3VycmVudE1lc3NhZ2UgPSBuZXh0TXNnO1xuXG5cdFx0XHRsb2dNZXNzYWdlKHRoaXMuY29tcG9uZW50TmFtZSwgY3VycmVudE1lc3NhZ2UpO1xuXG5cdFx0XHRjb25zdCBpbW11dGFibGVNb2RlbCA9IGNhc3RJbW11dGFibGUoZnJlZXplKHRoaXMuY3VycmVudE1vZGVsLCB0cnVlKSk7XG5cblx0XHRcdGNvbnN0IFtkZWZlciwgZ2V0RGVmZXJyZWRdID0gY3JlYXRlRGVmZXI8VE1vZGVsLCBUTWVzc2FnZT4oKTtcblx0XHRcdGNvbnN0IGNhbGxCYXNlID0gY3JlYXRlQ2FsbEJhc2UoY3VycmVudE1lc3NhZ2UsIGltbXV0YWJsZU1vZGVsLCB0aGlzLnByb3BzLCB7IGRlZmVyIH0pO1xuXG5cdFx0XHRjb25zdCBbbW9kZWwsIC4uLmNvbW1hbmRzXSA9IHRoaXMudXBkYXRlKGltbXV0YWJsZU1vZGVsLCBjdXJyZW50TWVzc2FnZSwgdGhpcy5wcm9wcywge1xuXHRcdFx0XHRkZWZlcixcblx0XHRcdFx0Y2FsbEJhc2UsXG5cdFx0XHR9KTtcblxuXHRcdFx0Y29uc3QgW2RlZmVycmVkTW9kZWwsIGRlZmVycmVkQ29tbWFuZHNdID0gZ2V0RGVmZXJyZWQoKTtcblxuXHRcdFx0aWYgKG1vZGVsSGFzQ2hhbmdlZCh0aGlzLmN1cnJlbnRNb2RlbCwgeyAuLi5kZWZlcnJlZE1vZGVsLCAuLi5tb2RlbCB9KSkge1xuXHRcdFx0XHR0aGlzLmN1cnJlbnRNb2RlbCA9IHsgLi4udGhpcy5jdXJyZW50TW9kZWwsIC4uLmRlZmVycmVkTW9kZWwsIC4uLm1vZGVsIH07XG5cdFx0XHRcdG1vZGlmaWVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0ZXhlY0NtZCh0aGlzLmRpc3BhdGNoLCAuLi5jb21tYW5kcywgLi4uZGVmZXJyZWRDb21tYW5kcyk7XG5cblx0XHRcdG5leHRNc2cgPSB0aGlzLmJ1ZmZlci5zaGlmdCgpO1xuXHRcdH0gd2hpbGUgKG5leHRNc2cpO1xuXG5cdFx0dGhpcy5ydW5uaW5nID0gZmFsc2U7XG5cblx0XHRpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG5cdFx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiVXBkYXRlIG1vZGVsIGZvclwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIHRoaXMuY3VycmVudE1vZGVsKTtcblx0XHRcdHRoaXMuZm9yY2VVcGRhdGUoKTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgbW9kZWwgYmFzZWQgb24gYSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0ge1RNb2RlbH0gbW9kZWwgVGhlIGN1cnJlbnQgbW9kZWwuXG5cdCAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBwcm9jZXNzLlxuXHQgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgdXBkYXRlIGZ1bmN0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3IG1vZGVsIChjYW4gYWxzbyBiZSBhbiBlbXB0eSBvYmplY3Qge30pIGFuZCBhbiBvcHRpb25hbCBuZXcgbWVzc2FnZSB0byBkaXNwYXRjaC5cblx0ICogQGFic3RyYWN0XG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyBhYnN0cmFjdCB1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT47XG59XG5cbmV4cG9ydCB7IEVsbUNvbXBvbmVudCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxZQUFBLEdBQUFQLE9BQUE7QUFBbUQsU0FBQUUsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLFFBQUFDLENBQUEsc0NBQUFELE9BQUEsd0JBQUFFLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBRixDQUFBLGtCQUFBQSxDQUFB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
185
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Db21tb24iLCJfSW5pdCIsIl9jcmVhdGVDYWxsQmFzZSIsIl9jcmVhdGVEZWZlcjMiLCJfZmFrZU9wdGlvbnMiLCJlIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByb3RvdHlwZSIsIl90b0NvbnN1bWFibGVBcnJheSIsInIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiYSIsInRvU3RyaW5nIiwiY2FsbCIsInNsaWNlIiwibmFtZSIsInRlc3QiLCJuIiwibCIsImkiLCJ1IiwiZiIsIm5leHQiLCJkb25lIiwidmFsdWUiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydGllcyIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwic2V0UHJvdG90eXBlT2YiLCJnZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHMiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIkVsbUNvbXBvbmVudCIsImV4cG9ydHMiLCJfUmVhY3QkQ29tcG9uZW50IiwicHJvcHMiLCJpbml0IiwiX1NlcnZpY2VzJGxvZ2dlcjIiLCJfdGhpcyIsIm1zZyIsInJ1bm5pbmciLCJidWZmZXIiLCJuZXh0TXNnIiwibW9kaWZpZWQiLCJjdXJyZW50TWVzc2FnZSIsImxvZ01lc3NhZ2UiLCJjb21wb25lbnROYW1lIiwiX2NyZWF0ZURlZmVyIiwiY3JlYXRlRGVmZXIiLCJfY3JlYXRlRGVmZXIyIiwiZGVmZXIiLCJnZXREZWZlcnJlZCIsImNhbGxCYXNlIiwiY3JlYXRlQ2FsbEJhc2UiLCJjdXJyZW50TW9kZWwiLCJfdGhpcyR1cGRhdGUiLCJ1cGRhdGUiLCJfdGhpcyR1cGRhdGUyIiwibW9kZWwiLCJjb21tYW5kcyIsIl9nZXREZWZlcnJlZCIsIl9nZXREZWZlcnJlZDIiLCJkZWZlcnJlZE1vZGVsIiwiZGVmZXJyZWRDb21tYW5kcyIsIm1vZGVsSGFzQ2hhbmdlZCIsImV4ZWNDbWQiLCJkaXNwYXRjaCIsImNvbmNhdCIsInNoaWZ0IiwibW91bnRlZCIsIl9TZXJ2aWNlcyRsb2dnZXIiLCJTZXJ2aWNlcyIsImxvZ2dlciIsImRlYnVnIiwiZm9yY2VVcGRhdGUiLCJmYWtlT3B0aW9ucyIsImdldEZha2VPcHRpb25zT25jZSIsIl9yZWYiLCJfcmVmMiIsImluaXRDb21tYW5kcyIsImNvbXBvbmVudERpZE1vdW50IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJnZXQiLCJSZWFjdCIsIkNvbXBvbmVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9FbG1Db21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZXhlY0NtZCwgbG9nTWVzc2FnZSwgbW9kZWxIYXNDaGFuZ2VkIH0gZnJvbSBcIi4vQ29tbW9uXCI7XG5pbXBvcnQgeyBTZXJ2aWNlcyB9IGZyb20gXCIuL0luaXRcIjtcbmltcG9ydCB0eXBlIHsgQ21kLCBJbml0RnVuY3Rpb24sIE1lc3NhZ2UsIE51bGxhYmxlLCBVcGRhdGVGdW5jdGlvbiB9IGZyb20gXCIuL1R5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVDYWxsQmFzZSB9IGZyb20gXCIuL2NyZWF0ZUNhbGxCYXNlXCI7XG5pbXBvcnQgeyBjcmVhdGVEZWZlciB9IGZyb20gXCIuL2NyZWF0ZURlZmVyXCI7XG5pbXBvcnQgeyBnZXRGYWtlT3B0aW9uc09uY2UgfSBmcm9tIFwiLi9mYWtlT3B0aW9uc1wiO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIGZvciBhIHJlYWN0IGNsYXNzIGNvbXBvbmVudCB1c2luZyB0aGUgRWxtaXNoIHBhdHRlcm4uXG4gKiBAZXhwb3J0XG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBFbG1Db21wb25lbnRcbiAqIEBleHRlbmRzIHtDb21wb25lbnQ8VFByb3BzLCBUTW9kZWw+fVxuICogQHRlbXBsYXRlIFRNb2RlbCBUaGUgdHlwZSBvZiB0aGUgbW9kZWwuXG4gKiBAdGVtcGxhdGUgVE1lc3NhZ2UgVGhlIHR5cGUgb2YgdGhlIG1lc3NhZ2VzLlxuICogQHRlbXBsYXRlIFRQcm9wcyBUaGUgdHlwZSBvZiB0aGUgcHJvcHMuXG4gKi9cbmFic3RyYWN0IGNsYXNzIEVsbUNvbXBvbmVudDxUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVFByb3BzPiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxUUHJvcHM+IHtcblx0cHJpdmF0ZSBpbml0Q29tbWFuZHM6IE51bGxhYmxlPChDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdPiB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSByZWFkb25seSBjb21wb25lbnROYW1lOiBzdHJpbmc7XG5cdHByaXZhdGUgcmVhZG9ubHkgYnVmZmVyOiBUTWVzc2FnZVtdID0gW107XG5cdHByaXZhdGUgcnVubmluZyA9IGZhbHNlO1xuXHRwcml2YXRlIG1vdW50ZWQgPSBmYWxzZTtcblx0cHJpdmF0ZSBjdXJyZW50TW9kZWw6IFRNb2RlbDtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBFbG1Db21wb25lbnQuXG5cdCAqIEBwYXJhbSB7VFByb3BzfSBwcm9wcyBUaGUgcHJvcHMgZm9yIHRoZSBjb21wb25lbnQuXG5cdCAqIEBwYXJhbSB7KCkgPT4gVE1vZGVsfSBpbml0IFRoZSBpbml0aWFsaXplciBmdW5jdGlvbi5cblx0ICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBUUHJvcHMsIGluaXQ6IEluaXRGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LCBuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihwcm9wcyk7XG5cblx0XHRjb25zdCBmYWtlT3B0aW9ucyA9IGdldEZha2VPcHRpb25zT25jZTxUTW9kZWwsIFRNZXNzYWdlPigpO1xuXG5cdFx0aWYgKGZha2VPcHRpb25zPy5kaXNwYXRjaCkge1xuXHRcdFx0dGhpcy5kaXNwYXRjaCA9IGZha2VPcHRpb25zLmRpc3BhdGNoO1xuXHRcdH1cblxuXHRcdGNvbnN0IFttb2RlbCwgLi4uY29tbWFuZHNdID0gZmFrZU9wdGlvbnM/Lm1vZGVsID8gW2Zha2VPcHRpb25zLm1vZGVsIGFzIFRNb2RlbF0gOiBpbml0KHRoaXMucHJvcHMpO1xuXG5cdFx0U2VydmljZXMubG9nZ2VyPy5kZWJ1ZyhcIkluaXRpYWwgbW9kZWwgZm9yXCIsIG5hbWUsIG1vZGVsKTtcblxuXHRcdHRoaXMuY29tcG9uZW50TmFtZSA9IG5hbWU7XG5cdFx0dGhpcy5jdXJyZW50TW9kZWwgPSBtb2RlbDtcblx0XHR0aGlzLmluaXRDb21tYW5kcyA9IGNvbW1hbmRzO1xuXHR9XG5cblx0LyoqXG5cdCAqIElzIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbG9hZGVkLlxuXHQgKiBXaGVuIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gaGFzIHRvIGJlIGNhbGxlZC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuXHRcdHRoaXMubW91bnRlZCA9IHRydWU7XG5cblx0XHRpZiAodGhpcy5pbml0Q29tbWFuZHMpIHtcblx0XHRcdGV4ZWNDbWQodGhpcy5kaXNwYXRjaCwgLi4udGhpcy5pbml0Q29tbWFuZHMpO1xuXHRcdFx0dGhpcy5pbml0Q29tbWFuZHMgPSBudWxsO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJcyBjYWxsZWQgYmVmb3JlIHVubG9hZGluZyB0aGUgY29tcG9uZW50LlxuXHQgKiBXaGVuIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gaGFzIHRvIGJlIGNhbGxlZC5cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0cHVibGljIGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuXHRcdHRoaXMubW91bnRlZCA9IGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGN1cnJlbnQgbW9kZWwuXG5cdCAqIEByZWFkb25seVxuXHQgKiBAdHlwZSB7UmVhZG9ubHk8VE1vZGVsPn1cblx0ICogQG1lbWJlcm9mIEVsbUNvbXBvbmVudFxuXHQgKi9cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLXVudXNlZC1jbGFzcy1jb21wb25lbnQtbWV0aG9kcyAtLSBXZSBuZWVkIGl0IGludGVybmFsbHkuXG5cdHB1YmxpYyBnZXQgbW9kZWwoKTogUmVhZG9ubHk8VE1vZGVsPiB7XG5cdFx0cmV0dXJuIHRoaXMuY3VycmVudE1vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc3BhdGNoZXMgYSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0ge1RNZXNzYWdlfSBtc2cgVGhlIG1lc3NhZ2UgdG8gZGlzcGF0Y2guXG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyByZWFkb25seSBkaXNwYXRjaCA9IChtc2c6IFRNZXNzYWdlKTogdm9pZCA9PiB7XG5cdFx0aWYgKHRoaXMucnVubmluZykge1xuXHRcdFx0dGhpcy5idWZmZXIucHVzaChtc2cpO1xuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5ydW5uaW5nID0gdHJ1ZTtcblxuXHRcdGxldCBuZXh0TXNnOiBUTWVzc2FnZSB8IHVuZGVmaW5lZCA9IG1zZztcblx0XHRsZXQgbW9kaWZpZWQgPSBmYWxzZTtcblxuXHRcdGRvIHtcblx0XHRcdGNvbnN0IGN1cnJlbnRNZXNzYWdlID0gbmV4dE1zZztcblxuXHRcdFx0bG9nTWVzc2FnZSh0aGlzLmNvbXBvbmVudE5hbWUsIGN1cnJlbnRNZXNzYWdlKTtcblxuXHRcdFx0Y29uc3QgW2RlZmVyLCBnZXREZWZlcnJlZF0gPSBjcmVhdGVEZWZlcjxUTW9kZWwsIFRNZXNzYWdlPigpO1xuXHRcdFx0Y29uc3QgY2FsbEJhc2UgPSBjcmVhdGVDYWxsQmFzZShjdXJyZW50TWVzc2FnZSwgdGhpcy5jdXJyZW50TW9kZWwsIHRoaXMucHJvcHMsIHsgZGVmZXIgfSk7XG5cblx0XHRcdGNvbnN0IFttb2RlbCwgLi4uY29tbWFuZHNdID0gdGhpcy51cGRhdGUodGhpcy5jdXJyZW50TW9kZWwsIGN1cnJlbnRNZXNzYWdlLCB0aGlzLnByb3BzLCB7IGRlZmVyLCBjYWxsQmFzZSB9KTtcblxuXHRcdFx0Y29uc3QgW2RlZmVycmVkTW9kZWwsIGRlZmVycmVkQ29tbWFuZHNdID0gZ2V0RGVmZXJyZWQoKTtcblxuXHRcdFx0aWYgKG1vZGVsSGFzQ2hhbmdlZCh0aGlzLmN1cnJlbnRNb2RlbCwgeyAuLi5kZWZlcnJlZE1vZGVsLCAuLi5tb2RlbCB9KSkge1xuXHRcdFx0XHR0aGlzLmN1cnJlbnRNb2RlbCA9IHsgLi4udGhpcy5jdXJyZW50TW9kZWwsIC4uLmRlZmVycmVkTW9kZWwsIC4uLm1vZGVsIH07XG5cdFx0XHRcdG1vZGlmaWVkID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0ZXhlY0NtZCh0aGlzLmRpc3BhdGNoLCAuLi5jb21tYW5kcywgLi4uZGVmZXJyZWRDb21tYW5kcyk7XG5cblx0XHRcdG5leHRNc2cgPSB0aGlzLmJ1ZmZlci5zaGlmdCgpO1xuXHRcdH0gd2hpbGUgKG5leHRNc2cpO1xuXG5cdFx0dGhpcy5ydW5uaW5nID0gZmFsc2U7XG5cblx0XHRpZiAodGhpcy5tb3VudGVkICYmIG1vZGlmaWVkKSB7XG5cdFx0XHRTZXJ2aWNlcy5sb2dnZXI/LmRlYnVnKFwiVXBkYXRlIG1vZGVsIGZvclwiLCB0aGlzLmNvbXBvbmVudE5hbWUsIHRoaXMuY3VycmVudE1vZGVsKTtcblx0XHRcdHRoaXMuZm9yY2VVcGRhdGUoKTtcblx0XHR9XG5cdH07XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgbW9kZWwgYmFzZWQgb24gYSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0ge1RNb2RlbH0gbW9kZWwgVGhlIGN1cnJlbnQgbW9kZWwuXG5cdCAqIEBwYXJhbSB7VE1lc3NhZ2V9IG1zZyBUaGUgbWVzc2FnZSB0byBwcm9jZXNzLlxuXHQgKiBAcGFyYW0ge1RQcm9wc30gcHJvcHMgVGhlIHByb3BzIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgdXBkYXRlIGZ1bmN0aW9uLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3IG1vZGVsIChjYW4gYWxzbyBiZSBhbiBlbXB0eSBvYmplY3Qge30pIGFuZCBhbiBvcHRpb25hbCBuZXcgbWVzc2FnZSB0byBkaXNwYXRjaC5cblx0ICogQGFic3RyYWN0XG5cdCAqIEBtZW1iZXJvZiBFbG1Db21wb25lbnRcblx0ICovXG5cdHB1YmxpYyBhYnN0cmFjdCB1cGRhdGU6IFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT47XG59XG5cbmV4cG9ydCB7IEVsbUNvbXBvbmVudCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFFQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFBbUQsU0FBQUQsdUJBQUFPLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLFFBQUFDLENBQUEsc0NBQUFELE9BQUEsd0JBQUFFLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBRixDQUFBLGtCQUFBQSxDQUFBLGdCQUFBQSxDQUFBLFdBQUFBLENBQUEseUJBQUFDLE1BQUEsSUFBQUQsQ0FBQSxDQUFBRyxXQUFBLEtBQUFGLE1BQUEsSUFBQUQsQ0FBQSxLQUFBQyxNQUFBLENBQUFHLFNBQUEscUJBQUFKLENBQUEsS0FBQUQsT0FBQSxDQUFBQyxDQUFBO0FBQUEsU0FBQUssbUJBQUFDLENBQUEsV0FBQUMsa0JBQUEsQ0FBQUQsQ0FBQSxLQUFBRSxnQkFBQSxDQUFBRixDQUFBLEtBQUFHLDJCQUFBLENBQUFILENBQUEs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
package/dist/Types.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type { Immutable } from "immer";
2
1
  type Nullable<TType> = TType | null;
3
2
  interface Message {
4
3
  name: string;
@@ -29,13 +28,13 @@ type InitFunction<TProps, TModel, TMessage> = (props: TProps) => InitResult<TMod
29
28
  */
30
29
  type UpdateReturnType<TModel, TMessage> = [Partial<TModel>, ...(Cmd<TMessage> | undefined)[]];
31
30
  type DeferFunction<TModel, TMessage> = (model: Partial<TModel>, ...commands: (Cmd<TMessage> | undefined)[]) => void;
32
- type CallBaseFunction<TModel, TProps, TMessage extends Message> = (fn: (msg: TMessage, model: Immutable<TModel>, props: TProps, ...args: any[]) => UpdateReturnType<TModel, Message>) => UpdateReturnType<TModel, TMessage>;
33
- type UpdateMapFunction<TProps, TModel, TMessage extends Message> = (msg: TMessage, model: Immutable<TModel>, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
31
+ type CallBaseFunction<TModel, TProps, TMessage extends Message> = (fn: (msg: TMessage, model: TModel, props: TProps, ...args: any[]) => UpdateReturnType<TModel, Message>) => UpdateReturnType<TModel, TMessage>;
32
+ type UpdateMapFunction<TProps, TModel, TMessage extends Message> = (msg: TMessage, model: TModel, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
34
33
  interface UpdateFunctionOptions<TProps, TModel, TMessage extends Message, TSpecificMessage extends Message = TMessage> {
35
34
  defer: DeferFunction<TModel, TMessage>;
36
35
  callBase: CallBaseFunction<TModel, TProps, TSpecificMessage>;
37
36
  }
38
- type UpdateFunction<TProps, TModel, TMessage extends Message> = (model: Immutable<TModel>, msg: TMessage, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
37
+ type UpdateFunction<TProps, TModel, TMessage extends Message> = (model: TModel, msg: TMessage, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage>) => UpdateReturnType<TModel, TMessage>;
39
38
  /**
40
39
  * Type for mapping messages to functions.
41
40
  * Use this type to create your update logic for the useElmish hook.
@@ -43,8 +42,17 @@ type UpdateFunction<TProps, TModel, TMessage extends Message> = (model: Immutabl
43
42
  type UpdateMap<TProps, TModel, TMessage extends Message> = {
44
43
  [TMessageName in TMessage["name"]]: (msg: TMessage & {
45
44
  name: TMessageName;
46
- }, model: Immutable<TModel>, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage, TMessage & {
45
+ }, model: TModel, props: TProps, options: UpdateFunctionOptions<TProps, TModel, TMessage, TMessage & {
47
46
  name: TMessageName;
48
47
  }>) => UpdateReturnType<TModel, TMessage>;
49
48
  };
50
- export type { CallBaseFunction, Cmd, DeferFunction, Dispatch, FallbackHandler, InitFunction, InitResult, Message, MsgSource, Nullable, Sub, UpdateFunction, UpdateFunctionOptions, UpdateMap, UpdateMapFunction, UpdateReturnType, };
49
+ /**
50
+ * The return type of the `subscription` function.
51
+ * @template TMessage The type of the messages discriminated union.
52
+ */
53
+ type SubscriptionResult<TMessage> = [Cmd<TMessage>, (() => void)?] | SubscriptionFunction<TMessage>[];
54
+ type SubscriptionFunction<TMessage> = (dispatch: Dispatch<TMessage>) => (() => void) | undefined;
55
+ type Subscription<TProps, TModel, TMessage> = (model: TModel, props: TProps) => SubscriptionResult<TMessage>;
56
+ declare function subscriptionIsFunctionArray(subscription: SubscriptionResult<unknown>): subscription is SubscriptionFunction<unknown>[];
57
+ export type { CallBaseFunction, Cmd, DeferFunction, Dispatch, FallbackHandler, InitFunction, InitResult, Message, MsgSource, Nullable, Sub, Subscription, SubscriptionFunction, SubscriptionResult, UpdateFunction, UpdateFunctionOptions, UpdateMap, UpdateMapFunction, UpdateReturnType, };
58
+ export { subscriptionIsFunctionArray };
package/dist/Types.js CHANGED
@@ -3,4 +3,38 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL1R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSW1tdXRhYmxlIH0gZnJvbSBcImltbWVyXCI7XG5cbnR5cGUgTnVsbGFibGU8VFR5cGU+ID0gVFR5cGUgfCBudWxsO1xuXG5pbnRlcmZhY2UgTWVzc2FnZSB7XG5cdG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBkaXNwYXRjaCBmdW5jdGlvbi5cbiAqL1xudHlwZSBEaXNwYXRjaDxUTWVzc2FnZT4gPSAobXNnOiBUTWVzc2FnZSkgPT4gdm9pZDtcblxudHlwZSBGYWxsYmFja0hhbmRsZXIgPSAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZDtcbnR5cGUgU3ViPFRNc2c+ID0gKGRpc3BhdGNoOiBEaXNwYXRjaDxUTXNnPiwgZmFsbGJhY2s/OiBGYWxsYmFja0hhbmRsZXIpID0+IHZvaWQ7XG5cbi8qKlxuICogVHlwZSBvZiBhIGNvbW1hbmQuXG4gKi9cbnR5cGUgQ21kPFRNZXNzYWdlPiA9IFN1YjxUTWVzc2FnZT5bXTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgTXNnU291cmNlIHR5cGUuXG4gKi9cbmludGVyZmFjZSBNc2dTb3VyY2U8VFNvdXJjZSBleHRlbmRzIHN0cmluZz4ge1xuXHRzb3VyY2U6IFRTb3VyY2U7XG59XG5cbi8qKlxuICogVGhlIHJldHVybiB0eXBlIG9mIHRoZSBgaW5pdGAgZnVuY3Rpb24uXG4gKi9cbnR5cGUgSW5pdFJlc3VsdDxUTW9kZWwsIFRNZXNzYWdlPiA9IFtUTW9kZWwsIC4uLihDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdXTtcblxudHlwZSBJbml0RnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiA9IChwcm9wczogVFByb3BzKSA9PiBJbml0UmVzdWx0PFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG4vKipcbiAqIFR5cGUgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGB1cGRhdGVgIGZ1bmN0aW9uLlxuICovXG50eXBlIFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT4gPSBbUGFydGlhbDxUTW9kZWw+LCAuLi4oQ21kPFRNZXNzYWdlPiB8IHVuZGVmaW5lZClbXV07XG5cbnR5cGUgRGVmZXJGdW5jdGlvbjxUTW9kZWwsIFRNZXNzYWdlPiA9IChtb2RlbDogUGFydGlhbDxUTW9kZWw+LCAuLi5jb21tYW5kczogKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQpW10pID0+IHZvaWQ7XG50eXBlIENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gPSAoXG5cdGZuOiAoXG5cdFx0bXNnOiBUTWVzc2FnZSxcblx0XHRtb2RlbDogSW1tdXRhYmxlPFRNb2RlbD4sXG5cdFx0cHJvcHM6IFRQcm9wcyxcblx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGFueSBpcyBuZWVkZWQgaGVyZSB0byBhbGxvdyBvcHRpb25zIG9mIGFueSB0eXBlXG5cdFx0Li4uYXJnczogYW55W11cblx0KSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgTWVzc2FnZT4sXG4pID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT47XG5cbnR5cGUgVXBkYXRlTWFwRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gPSAoXG5cdG1zZzogVE1lc3NhZ2UsXG5cdG1vZGVsOiBJbW11dGFibGU8VE1vZGVsPixcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogVXBkYXRlRnVuY3Rpb25PcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG4pID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT47XG5cbmludGVyZmFjZSBVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZSwgVFNwZWNpZmljTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UgPSBUTWVzc2FnZT4ge1xuXHRkZWZlcjogRGVmZXJGdW5jdGlvbjxUTW9kZWwsIFRNZXNzYWdlPjtcblx0Y2FsbEJhc2U6IENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRTcGVjaWZpY01lc3NhZ2U+O1xufVxuXG50eXBlIFVwZGF0ZUZ1bmN0aW9uPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2U+ID0gKFxuXHRtb2RlbDogSW1tdXRhYmxlPFRNb2RlbD4sXG5cdG1zZzogVE1lc3NhZ2UsXG5cdHByb3BzOiBUUHJvcHMsXG5cdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuKSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG4vKipcbiAqIFR5cGUgZm9yIG1hcHBpbmcgbWVzc2FnZXMgdG8gZnVuY3Rpb25zLlxuICogVXNlIHRoaXMgdHlwZSB0byBjcmVhdGUgeW91ciB1cGRhdGUgbG9naWMgZm9yIHRoZSB1c2VFbG1pc2ggaG9vay5cbiAqL1xudHlwZSBVcGRhdGVNYXA8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gPSB7XG5cdFtUTWVzc2FnZU5hbWUgaW4gVE1lc3NhZ2VbXCJuYW1lXCJdXTogKFxuXHRcdG1zZzogVE1lc3NhZ2UgJiB7IG5hbWU6IFRNZXNzYWdlTmFtZSB9LFxuXHRcdG1vZGVsOiBJbW11dGFibGU8VE1vZGVsPixcblx0XHRwcm9wczogVFByb3BzLFxuXHRcdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UsIFRNZXNzYWdlICYgeyBuYW1lOiBUTWVzc2FnZU5hbWUgfT4sXG5cdCkgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPjtcbn07XG5cbmV4cG9ydCB0eXBlIHtcblx0Q2FsbEJhc2VGdW5jdGlvbixcblx0Q21kLFxuXHREZWZlckZ1bmN0aW9uLFxuXHREaXNwYXRjaCxcblx0RmFsbGJhY2tIYW5kbGVyLFxuXHRJbml0RnVuY3Rpb24sXG5cdEluaXRSZXN1bHQsXG5cdE1lc3NhZ2UsXG5cdE1zZ1NvdXJjZSxcblx0TnVsbGFibGUsXG5cdFN1Yixcblx0VXBkYXRlRnVuY3Rpb24sXG5cdFVwZGF0ZUZ1bmN0aW9uT3B0aW9ucyxcblx0VXBkYXRlTWFwLFxuXHRVcGRhdGVNYXBGdW5jdGlvbixcblx0VXBkYXRlUmV0dXJuVHlwZSxcbn07XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
6
+ exports.subscriptionIsFunctionArray = subscriptionIsFunctionArray;
7
+ /**
8
+ * Type of the dispatch function.
9
+ */
10
+
11
+ /**
12
+ * Type of a command.
13
+ */
14
+
15
+ /**
16
+ * Creates a MsgSource type.
17
+ */
18
+
19
+ /**
20
+ * The return type of the `init` function.
21
+ */
22
+
23
+ /**
24
+ * Type for the return value of the `update` function.
25
+ */
26
+
27
+ /**
28
+ * Type for mapping messages to functions.
29
+ * Use this type to create your update logic for the useElmish hook.
30
+ */
31
+
32
+ /**
33
+ * The return type of the `subscription` function.
34
+ * @template TMessage The type of the messages discriminated union.
35
+ */
36
+
37
+ function subscriptionIsFunctionArray(subscription) {
38
+ return typeof subscription[0] === "function";
39
+ }
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdWJzY3JpcHRpb25Jc0Z1bmN0aW9uQXJyYXkiLCJzdWJzY3JpcHRpb24iXSwic291cmNlcyI6WyIuLi9zcmMvVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBOdWxsYWJsZTxUVHlwZT4gPSBUVHlwZSB8IG51bGw7XG5cbmludGVyZmFjZSBNZXNzYWdlIHtcblx0bmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFR5cGUgb2YgdGhlIGRpc3BhdGNoIGZ1bmN0aW9uLlxuICovXG50eXBlIERpc3BhdGNoPFRNZXNzYWdlPiA9IChtc2c6IFRNZXNzYWdlKSA9PiB2b2lkO1xuXG50eXBlIEZhbGxiYWNrSGFuZGxlciA9IChlcnJvcj86IEVycm9yKSA9PiB2b2lkO1xudHlwZSBTdWI8VE1zZz4gPSAoZGlzcGF0Y2g6IERpc3BhdGNoPFRNc2c+LCBmYWxsYmFjaz86IEZhbGxiYWNrSGFuZGxlcikgPT4gdm9pZDtcblxuLyoqXG4gKiBUeXBlIG9mIGEgY29tbWFuZC5cbiAqL1xudHlwZSBDbWQ8VE1lc3NhZ2U+ID0gU3ViPFRNZXNzYWdlPltdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBNc2dTb3VyY2UgdHlwZS5cbiAqL1xuaW50ZXJmYWNlIE1zZ1NvdXJjZTxUU291cmNlIGV4dGVuZHMgc3RyaW5nPiB7XG5cdHNvdXJjZTogVFNvdXJjZTtcbn1cblxuLyoqXG4gKiBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIGBpbml0YCBmdW5jdGlvbi5cbiAqL1xudHlwZSBJbml0UmVzdWx0PFRNb2RlbCwgVE1lc3NhZ2U+ID0gW1RNb2RlbCwgLi4uKENtZDxUTWVzc2FnZT4gfCB1bmRlZmluZWQpW11dO1xuXG50eXBlIEluaXRGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+ID0gKHByb3BzOiBUUHJvcHMpID0+IEluaXRSZXN1bHQ8VE1vZGVsLCBUTWVzc2FnZT47XG5cbi8qKlxuICogVHlwZSBmb3IgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYHVwZGF0ZWAgZnVuY3Rpb24uXG4gKi9cbnR5cGUgVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPiA9IFtQYXJ0aWFsPFRNb2RlbD4sIC4uLihDbWQ8VE1lc3NhZ2U+IHwgdW5kZWZpbmVkKVtdXTtcblxudHlwZSBEZWZlckZ1bmN0aW9uPFRNb2RlbCwgVE1lc3NhZ2U+ID0gKG1vZGVsOiBQYXJ0aWFsPFRNb2RlbD4sIC4uLmNvbW1hbmRzOiAoQ21kPFRNZXNzYWdlPiB8IHVuZGVmaW5lZClbXSkgPT4gdm9pZDtcbnR5cGUgQ2FsbEJhc2VGdW5jdGlvbjxUTW9kZWwsIFRQcm9wcywgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiA9IChcblx0Zm46IChcblx0XHRtc2c6IFRNZXNzYWdlLFxuXHRcdG1vZGVsOiBUTW9kZWwsXG5cdFx0cHJvcHM6IFRQcm9wcyxcblx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGFueSBpcyBuZWVkZWQgaGVyZSB0byBhbGxvdyBvcHRpb25zIG9mIGFueSB0eXBlXG5cdFx0Li4uYXJnczogYW55W11cblx0KSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgTWVzc2FnZT4sXG4pID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT47XG5cbnR5cGUgVXBkYXRlTWFwRnVuY3Rpb248VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4gPSAoXG5cdG1zZzogVE1lc3NhZ2UsXG5cdG1vZGVsOiBUTW9kZWwsXG5cdHByb3BzOiBUUHJvcHMsXG5cdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+LFxuKSA9PiBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG5pbnRlcmZhY2UgVXBkYXRlRnVuY3Rpb25PcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UsIFRTcGVjaWZpY01lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlID0gVE1lc3NhZ2U+IHtcblx0ZGVmZXI6IERlZmVyRnVuY3Rpb248VE1vZGVsLCBUTWVzc2FnZT47XG5cdGNhbGxCYXNlOiBDYWxsQmFzZUZ1bmN0aW9uPFRNb2RlbCwgVFByb3BzLCBUU3BlY2lmaWNNZXNzYWdlPjtcbn1cblxudHlwZSBVcGRhdGVGdW5jdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiA9IChcblx0bW9kZWw6IFRNb2RlbCxcblx0bXNnOiBUTWVzc2FnZSxcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogVXBkYXRlRnVuY3Rpb25PcHRpb25zPFRQcm9wcywgVE1vZGVsLCBUTWVzc2FnZT4sXG4pID0+IFVwZGF0ZVJldHVyblR5cGU8VE1vZGVsLCBUTWVzc2FnZT47XG5cbi8qKlxuICogVHlwZSBmb3IgbWFwcGluZyBtZXNzYWdlcyB0byBmdW5jdGlvbnMuXG4gKiBVc2UgdGhpcyB0eXBlIHRvIGNyZWF0ZSB5b3VyIHVwZGF0ZSBsb2dpYyBmb3IgdGhlIHVzZUVsbWlzaCBob29rLlxuICovXG50eXBlIFVwZGF0ZU1hcDxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPiA9IHtcblx0W1RNZXNzYWdlTmFtZSBpbiBUTWVzc2FnZVtcIm5hbWVcIl1dOiAoXG5cdFx0bXNnOiBUTWVzc2FnZSAmIHsgbmFtZTogVE1lc3NhZ2VOYW1lIH0sXG5cdFx0bW9kZWw6IFRNb2RlbCxcblx0XHRwcm9wczogVFByb3BzLFxuXHRcdG9wdGlvbnM6IFVwZGF0ZUZ1bmN0aW9uT3B0aW9uczxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UsIFRNZXNzYWdlICYgeyBuYW1lOiBUTWVzc2FnZU5hbWUgfT4sXG5cdCkgPT4gVXBkYXRlUmV0dXJuVHlwZTxUTW9kZWwsIFRNZXNzYWdlPjtcbn07XG5cbi8qKlxuICogVGhlIHJldHVybiB0eXBlIG9mIHRoZSBgc3Vic2NyaXB0aW9uYCBmdW5jdGlvbi5cbiAqIEB0ZW1wbGF0ZSBUTWVzc2FnZSBUaGUgdHlwZSBvZiB0aGUgbWVzc2FnZXMgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqL1xudHlwZSBTdWJzY3JpcHRpb25SZXN1bHQ8VE1lc3NhZ2U+ID0gW0NtZDxUTWVzc2FnZT4sICgoKSA9PiB2b2lkKT9dIHwgU3Vic2NyaXB0aW9uRnVuY3Rpb248VE1lc3NhZ2U+W107XG50eXBlIFN1YnNjcmlwdGlvbkZ1bmN0aW9uPFRNZXNzYWdlPiA9IChkaXNwYXRjaDogRGlzcGF0Y2g8VE1lc3NhZ2U+KSA9PiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG50eXBlIFN1YnNjcmlwdGlvbjxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2U+ID0gKG1vZGVsOiBUTW9kZWwsIHByb3BzOiBUUHJvcHMpID0+IFN1YnNjcmlwdGlvblJlc3VsdDxUTWVzc2FnZT47XG5cbmZ1bmN0aW9uIHN1YnNjcmlwdGlvbklzRnVuY3Rpb25BcnJheShzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblJlc3VsdDx1bmtub3duPik6IHN1YnNjcmlwdGlvbiBpcyBTdWJzY3JpcHRpb25GdW5jdGlvbjx1bmtub3duPltdIHtcblx0cmV0dXJuIHR5cGVvZiBzdWJzY3JpcHRpb25bMF0gPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuZXhwb3J0IHR5cGUge1xuXHRDYWxsQmFzZUZ1bmN0aW9uLFxuXHRDbWQsXG5cdERlZmVyRnVuY3Rpb24sXG5cdERpc3BhdGNoLFxuXHRGYWxsYmFja0hhbmRsZXIsXG5cdEluaXRGdW5jdGlvbixcblx0SW5pdFJlc3VsdCxcblx0TWVzc2FnZSxcblx0TXNnU291cmNlLFxuXHROdWxsYWJsZSxcblx0U3ViLFxuXHRTdWJzY3JpcHRpb24sXG5cdFN1YnNjcmlwdGlvbkZ1bmN0aW9uLFxuXHRTdWJzY3JpcHRpb25SZXN1bHQsXG5cdFVwZGF0ZUZ1bmN0aW9uLFxuXHRVcGRhdGVGdW5jdGlvbk9wdGlvbnMsXG5cdFVwZGF0ZU1hcCxcblx0VXBkYXRlTWFwRnVuY3Rpb24sXG5cdFVwZGF0ZVJldHVyblR5cGUsXG59O1xuXG5leHBvcnQgeyBzdWJzY3JpcHRpb25Jc0Z1bmN0aW9uQXJyYXkgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUE7QUFDQTtBQUNBOztBQU1BO0FBQ0E7QUFDQTs7QUFHQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBOztBQUtBO0FBQ0E7QUFDQTs7QUFpQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7O0FBS0EsU0FBU0EsMkJBQTJCQSxDQUFDQyxZQUF5QyxFQUFtRDtFQUNoSSxPQUFPLE9BQU9BLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVO0FBQzdDIiwiaWdub3JlTGlzdCI6W119
@@ -1,4 +1,3 @@
1
- import type { Immutable } from "immer";
2
1
  import type { CallBaseFunction, Message, UpdateFunctionOptions } from "./Types";
3
- 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>;
2
+ declare function createCallBase<TProps, TModel, TMessage extends Message>(msg: TMessage, model: TModel, props: TProps, options: Omit<UpdateFunctionOptions<TProps, TModel, TMessage>, "callBase">): CallBaseFunction<TModel, TProps, TMessage>;
4
3
  export { createCallBase };
@@ -21,4 +21,4 @@ function createCallBase(msg, model, props, options) {
21
21
  };
22
22
  return _callBase;
23
23
  }
24
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDYWxsQmFzZSIsIm1zZyIsIm1vZGVsIiwicHJvcHMiLCJvcHRpb25zIiwiY2FsbEJhc2UiLCJmbiIsIl9vYmplY3RTcHJlYWQiXSwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlQ2FsbEJhc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJbW11dGFibGUgfSBmcm9tIFwiaW1tZXJcIjtcbmltcG9ydCB0eXBlIHsgQ2FsbEJhc2VGdW5jdGlvbiwgTWVzc2FnZSwgVXBkYXRlRnVuY3Rpb25PcHRpb25zLCBVcGRhdGVSZXR1cm5UeXBlIH0gZnJvbSBcIi4vVHlwZXNcIjtcblxuZnVuY3Rpb24gY3JlYXRlQ2FsbEJhc2U8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZT4oXG5cdG1zZzogVE1lc3NhZ2UsXG5cdG1vZGVsOiBJbW11dGFibGU8VE1vZGVsPixcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogT21pdDxVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiwgXCJjYWxsQmFzZVwiPixcbik6IENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRNZXNzYWdlPiB7XG5cdGNvbnN0IGNhbGxCYXNlOiBDYWxsQmFzZUZ1bmN0aW9uPFRNb2RlbCwgVFByb3BzLCBUTWVzc2FnZT4gPSAoZm4pID0+XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtdHlwZS1hc3NlcnRpb24gLS0gVGhlIGN1cnJlbnQgVE1lc3NhZ2UgbXVzdCBiZSBleHRlbmRlZCBmcm9tIE1lc3NhZ2Vcblx0XHRmbihtc2csIG1vZGVsLCBwcm9wcywgeyAuLi5vcHRpb25zLCBjYWxsQmFzZSB9KSBhcyBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG5cdHJldHVybiBjYWxsQmFzZTtcbn1cblxuZXhwb3J0IHsgY3JlYXRlQ2FsbEJhc2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsU0FBU0EsY0FBY0EsQ0FDdEJDLEdBQWEsRUFDYkMsS0FBd0IsRUFDeEJDLEtBQWEsRUFDYkMsT0FBMEUsRUFDN0I7RUFDN0MsSUFBTUMsU0FBb0QsR0FBRyxTQUF2REEsUUFBb0RBLENBQUlDLEVBQUU7SUFBQTtNQUMvRDtNQUNBQSxFQUFFLENBQUNMLEdBQUcsRUFBRUMsS0FBSyxFQUFFQyxLQUFLLEVBQUFJLGFBQUEsQ0FBQUEsYUFBQSxLQUFPSCxPQUFPO1FBQUVDLFFBQVEsRUFBUkE7TUFBUSxFQUFFO0lBQUM7RUFBQSxDQUFzQztFQUV0RixPQUFPQSxTQUFRO0FBQ2hCIiwiaWdub3JlTGlzdCI6W119
24
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDYWxsQmFzZSIsIm1zZyIsIm1vZGVsIiwicHJvcHMiLCJvcHRpb25zIiwiY2FsbEJhc2UiLCJmbiIsIl9vYmplY3RTcHJlYWQiXSwic291cmNlcyI6WyIuLi9zcmMvY3JlYXRlQ2FsbEJhc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWxsQmFzZUZ1bmN0aW9uLCBNZXNzYWdlLCBVcGRhdGVGdW5jdGlvbk9wdGlvbnMsIFVwZGF0ZVJldHVyblR5cGUgfSBmcm9tIFwiLi9UeXBlc1wiO1xuXG5mdW5jdGlvbiBjcmVhdGVDYWxsQmFzZTxUUHJvcHMsIFRNb2RlbCwgVE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlPihcblx0bXNnOiBUTWVzc2FnZSxcblx0bW9kZWw6IFRNb2RlbCxcblx0cHJvcHM6IFRQcm9wcyxcblx0b3B0aW9uczogT21pdDxVcGRhdGVGdW5jdGlvbk9wdGlvbnM8VFByb3BzLCBUTW9kZWwsIFRNZXNzYWdlPiwgXCJjYWxsQmFzZVwiPixcbik6IENhbGxCYXNlRnVuY3Rpb248VE1vZGVsLCBUUHJvcHMsIFRNZXNzYWdlPiB7XG5cdGNvbnN0IGNhbGxCYXNlOiBDYWxsQmFzZUZ1bmN0aW9uPFRNb2RlbCwgVFByb3BzLCBUTWVzc2FnZT4gPSAoZm4pID0+XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtdHlwZS1hc3NlcnRpb24gLS0gVGhlIGN1cnJlbnQgVE1lc3NhZ2UgbXVzdCBiZSBleHRlbmRlZCBmcm9tIE1lc3NhZ2Vcblx0XHRmbihtc2csIG1vZGVsLCBwcm9wcywgeyAuLi5vcHRpb25zLCBjYWxsQmFzZSB9KSBhcyBVcGRhdGVSZXR1cm5UeXBlPFRNb2RlbCwgVE1lc3NhZ2U+O1xuXG5cdHJldHVybiBjYWxsQmFzZTtcbn1cblxuZXhwb3J0IHsgY3JlYXRlQ2FsbEJhc2UgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsY0FBY0EsQ0FDdEJDLEdBQWEsRUFDYkMsS0FBYSxFQUNiQyxLQUFhLEVBQ2JDLE9BQTBFLEVBQzdCO0VBQzdDLElBQU1DLFNBQW9ELEdBQUcsU0FBdkRBLFFBQW9EQSxDQUFJQyxFQUFFO0lBQUE7TUFDL0Q7TUFDQUEsRUFBRSxDQUFDTCxHQUFHLEVBQUVDLEtBQUssRUFBRUMsS0FBSyxFQUFBSSxhQUFBLENBQUFBLGFBQUEsS0FBT0gsT0FBTztRQUFFQyxRQUFRLEVBQVJBO01BQVEsRUFBRTtJQUFDO0VBQUEsQ0FBc0M7RUFFdEYsT0FBT0EsU0FBUTtBQUNoQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,67 @@
1
+ import { type Immutable } from "immer";
2
+ import React from "react";
3
+ import type { InitFunction, Message } from "../Types";
4
+ import type { UpdateFunction } from "./Types";
5
+ /**
6
+ * Abstract class for a react class component using the Elmish pattern.
7
+ * @export
8
+ * @abstract
9
+ * @class ElmComponent
10
+ * @extends {Component<TProps, TModel>}
11
+ * @template TModel The type of the model.
12
+ * @template TMessage The type of the messages.
13
+ * @template TProps The type of the props.
14
+ */
15
+ declare abstract class ElmComponent<TModel, TMessage extends Message, TProps> extends React.Component<TProps> {
16
+ private initCommands;
17
+ private readonly componentName;
18
+ private readonly buffer;
19
+ private running;
20
+ private mounted;
21
+ private currentModel;
22
+ /**
23
+ * Creates an instance of ElmComponent.
24
+ * @param {TProps} props The props for the component.
25
+ * @param {() => TModel} init The initializer function.
26
+ * @param name The name of the component.
27
+ * @memberof ElmComponent
28
+ */
29
+ constructor(props: TProps, init: InitFunction<TProps, TModel, TMessage>, name: string);
30
+ /**
31
+ * Is called when the component is loaded.
32
+ * When implementing this method, the base implementation has to be called.
33
+ * @memberof ElmComponent
34
+ */
35
+ componentDidMount(): void;
36
+ /**
37
+ * Is called before unloading the component.
38
+ * When implementing this method, the base implementation has to be called.
39
+ * @memberof ElmComponent
40
+ */
41
+ componentWillUnmount(): void;
42
+ /**
43
+ * Returns the current model.
44
+ * @readonly
45
+ * @type {Readonly<TModel>}
46
+ * @memberof ElmComponent
47
+ */
48
+ get model(): Immutable<TModel>;
49
+ /**
50
+ * Dispatches a message.
51
+ * @param {TMessage} msg The message to dispatch.
52
+ * @memberof ElmComponent
53
+ */
54
+ readonly dispatch: (msg: TMessage) => void;
55
+ /**
56
+ * Function to modify the model based on a message.
57
+ * @param {TModel} model The current model.
58
+ * @param {TMessage} msg The message to process.
59
+ * @param {TProps} props The props of the component.
60
+ * @param options The options for the update function.
61
+ * @returns The new model (can also be an empty object {}) and an optional new message to dispatch.
62
+ * @abstract
63
+ * @memberof ElmComponent
64
+ */
65
+ abstract update: UpdateFunction<TProps, TModel, TMessage>;
66
+ }
67
+ export { ElmComponent };