@os-design/form 1.0.8 → 1.0.10

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 (87) hide show
  1. package/README.md +70 -36
  2. package/dist/cjs/BroadcastObserverManager.js +44 -0
  3. package/dist/cjs/BroadcastObserverManager.js.map +1 -0
  4. package/dist/cjs/{SubscribableData.js → ErrorData.js} +20 -18
  5. package/dist/cjs/ErrorData.js.map +1 -0
  6. package/dist/cjs/ErrorObserverManager.js +64 -0
  7. package/dist/cjs/ErrorObserverManager.js.map +1 -0
  8. package/dist/cjs/Form.js +46 -0
  9. package/dist/cjs/Form.js.map +1 -0
  10. package/dist/cjs/Node.js +60 -0
  11. package/dist/cjs/Node.js.map +1 -0
  12. package/dist/cjs/ValueData.js +55 -0
  13. package/dist/cjs/ValueData.js.map +1 -0
  14. package/dist/cjs/ValueObserverManager.js +124 -0
  15. package/dist/cjs/ValueObserverManager.js.map +1 -0
  16. package/dist/cjs/index.js +115 -106
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/types.js +6 -0
  19. package/dist/cjs/types.js.map +1 -0
  20. package/dist/cjs/useFormContext.js +27 -0
  21. package/dist/cjs/useFormContext.js.map +1 -0
  22. package/dist/cjs/utils/clone.js +1 -1
  23. package/dist/cjs/utils/deleteFromArray.js +17 -0
  24. package/dist/cjs/utils/deleteFromArray.js.map +1 -0
  25. package/dist/cjs/utils/isEqual.js +1 -1
  26. package/dist/cjs/utils/path.js +53 -0
  27. package/dist/cjs/utils/path.js.map +1 -0
  28. package/dist/esm/BroadcastObserverManager.js +18 -0
  29. package/dist/esm/BroadcastObserverManager.js.map +1 -0
  30. package/dist/esm/ErrorData.js +20 -0
  31. package/dist/esm/ErrorData.js.map +1 -0
  32. package/dist/esm/ErrorObserverManager.js +26 -0
  33. package/dist/esm/ErrorObserverManager.js.map +1 -0
  34. package/dist/esm/Form.js +26 -0
  35. package/dist/esm/Form.js.map +1 -0
  36. package/dist/esm/Node.js +31 -0
  37. package/dist/esm/Node.js.map +1 -0
  38. package/dist/esm/ValueData.js +21 -0
  39. package/dist/esm/ValueData.js.map +1 -0
  40. package/dist/esm/ValueObserverManager.js +67 -0
  41. package/dist/esm/ValueObserverManager.js.map +1 -0
  42. package/dist/esm/index.js +44 -66
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/types.js +2 -0
  45. package/dist/esm/types.js.map +1 -0
  46. package/dist/esm/useFormContext.js +17 -0
  47. package/dist/esm/useFormContext.js.map +1 -0
  48. package/dist/esm/utils/deleteFromArray.js +8 -0
  49. package/dist/esm/utils/deleteFromArray.js.map +1 -0
  50. package/dist/esm/utils/path.js +31 -0
  51. package/dist/esm/utils/path.js.map +1 -0
  52. package/dist/types/BroadcastObserverManager.d.ts +10 -0
  53. package/dist/types/BroadcastObserverManager.d.ts.map +1 -0
  54. package/dist/types/ErrorData.d.ts +11 -0
  55. package/dist/types/ErrorData.d.ts.map +1 -0
  56. package/dist/types/ErrorObserverManager.d.ts +12 -0
  57. package/dist/types/ErrorObserverManager.d.ts.map +1 -0
  58. package/dist/types/Form.d.ts +12 -0
  59. package/dist/types/Form.d.ts.map +1 -0
  60. package/dist/types/Node.d.ts +15 -0
  61. package/dist/types/Node.d.ts.map +1 -0
  62. package/dist/types/ValueData.d.ts +11 -0
  63. package/dist/types/ValueData.d.ts.map +1 -0
  64. package/dist/types/ValueObserverManager.d.ts +13 -0
  65. package/dist/types/ValueObserverManager.d.ts.map +1 -0
  66. package/dist/types/index.d.ts +32 -46
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/types.d.ts +15 -0
  69. package/dist/types/types.d.ts.map +1 -0
  70. package/dist/types/useFormContext.d.ts +11 -0
  71. package/dist/types/useFormContext.d.ts.map +1 -0
  72. package/dist/types/utils/deleteFromArray.d.ts +3 -0
  73. package/dist/types/utils/deleteFromArray.d.ts.map +1 -0
  74. package/dist/types/utils/path.d.ts +5 -0
  75. package/dist/types/utils/path.d.ts.map +1 -0
  76. package/package.json +3 -3
  77. package/dist/cjs/SubscribableData.js.map +0 -1
  78. package/dist/cjs/SubscriptionManager.js +0 -83
  79. package/dist/cjs/SubscriptionManager.js.map +0 -1
  80. package/dist/esm/SubscribableData.js +0 -23
  81. package/dist/esm/SubscribableData.js.map +0 -1
  82. package/dist/esm/SubscriptionManager.js +0 -46
  83. package/dist/esm/SubscriptionManager.js.map +0 -1
  84. package/dist/types/SubscribableData.d.ts +0 -11
  85. package/dist/types/SubscribableData.d.ts.map +0 -1
  86. package/dist/types/SubscriptionManager.d.ts +0 -19
  87. package/dist/types/SubscriptionManager.d.ts.map +0 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@ Create forms in React and React Native much faster and easier.
6
6
 
7
7
  - 🤓 Rerenders only updated fields, not the whole form.
8
8
  - 📱 Use with any design system or native components. Supports React Native.
9
- - 0️⃣ Tiny size (~1.5 KB). Zero dependencies.
9
+ - 0️⃣ Tiny size (~2 KB). Zero dependencies.
10
10
  - 📙 Lots of useful features.
11
11
 
12
12
  ## Installation
@@ -52,6 +52,54 @@ const Form: React.FC = () => {
52
52
 
53
53
  The `props` is an object that contains 2 properties: `value` and `onChange`, so you can just pass all the properties of this object to your input component for simplicity.
54
54
 
55
+ ## 🙉 Complex form
56
+
57
+ Let's look at another example. We need to add multiple fields with options to the form (e.g. `min` and `max`). These options should be stored in the `options` form property.
58
+
59
+ ```tsx
60
+ interface ComplexFormData {
61
+ name: string;
62
+ options: {
63
+ min: number | null;
64
+ max: number | null;
65
+ };
66
+ }
67
+ ```
68
+
69
+ We can add a `Field` with the name `options` and render 2 fields at once, but in this case, every time one of these options changes, all the option fields will be rerendered. It's not good for performance.
70
+
71
+ To solve this problem and update only those options that have changed, we need to add separate `Field` components and specify the path to the field in the name property. For example, in our case we have to add 2 fields with the following names: `options.min` and `options.max` (the properties are separated by a dot).
72
+
73
+ ```tsx
74
+ const Form: React.FC = () => {
75
+ const { Field, form } = useForm<ComplexFormData>({
76
+ name: '',
77
+ options: { min: null, max: null },
78
+ });
79
+
80
+ const onSubmit = useCallback(() => {
81
+ console.log(form.values.getAll());
82
+ }, []);
83
+
84
+ return (
85
+ <>
86
+ <Field name='name' render={(props) => <Input {...props} />} />
87
+ <Field
88
+ name='options.min'
89
+ render={(props) => <InputNumber {...props} />}
90
+ />
91
+ <Field
92
+ name='options.max'
93
+ render={(props) => <InputNumber {...props} />}
94
+ />
95
+ <Button onClick={onSubmit}>Add</Button>
96
+ </>
97
+ );
98
+ };
99
+ ```
100
+
101
+ The path can also contain an index of array. For example, `options.items.0.status`.
102
+
55
103
  ## ❗ Showing errors
56
104
 
57
105
  If the user entered incorrect values, the form should display errors. To support errors, you need to make 2 steps: pass the errors to the form and display them next to the input components.
@@ -102,7 +150,8 @@ interface FormData {
102
150
 
103
151
  // Component to display errors unrelated to any fields
104
152
  const Error: React.FC = () => {
105
- const error = useError<FormData>('_error');
153
+ const { useError } = useExistingForm<FormData>();
154
+ const error = useError('_error'); // You can use a path (e.g. `options.min`)
106
155
  return error ? <Alert type='error'>{error}</Alert> : null;
107
156
  };
108
157
 
@@ -120,8 +169,8 @@ const Form: React.FC = () => {
120
169
  console.log(form.values.getAll()); // { title: '', content: '' }
121
170
  }, []);
122
171
 
123
- // Wrap your form in a `FormProvider` to pass the `form`
124
- // to the child components (to the `Error` component in our case)
172
+ // Wrap your form in a `FormProvider`
173
+ // to pass the `form` to child components
125
174
  return (
126
175
  <FormProvider form={form}>
127
176
  <>
@@ -271,6 +320,8 @@ const Form: React.FC = () => {
271
320
  };
272
321
  ```
273
322
 
323
+ Note that `modifiedFields` can contain paths (e.g. `options.min`), so the above implementation of `onlyChangedValues` only works for forms without nested data. Create your own implementation if you want to support nested data.
324
+
274
325
  ## ↩️ Resetting a field to its initial value
275
326
 
276
327
  Let's assume the user changed his profile data in the form, but then decided to rollback one of the field values. It would be really cool if the user could just click the button next to the input component and the field value would return to the initial value.
@@ -348,27 +399,18 @@ const Form: React.FC = () => {
348
399
 
349
400
  ## 🎚️ Transforming field values
350
401
 
351
- There are few cases where this is necessary:
352
-
353
- 1. Your input component does not support the field type. For example, you want to enter numbers in the text input that uses the string type.
354
- 2. The value in the store is not equal to the value in the input component. For example, the price is entered in dollars, but you store it in cents.
355
- 3. The value should be post-processed. For example, the email address should always be in lowercase.
356
-
357
- Let's consider the first case. To implement it, you should set 2 transformers:
358
-
359
- - `toValue` - transforms the value before putting it into the input component.
360
- - `fromValue` - transforms the value before calling the onChange event handler.
402
+ The entered value in the field can be transformed. For example, the email address should always be entered in lowercase. To implement it, you should set a transformer to the field. This transformer is called before the `onChange` handler is called. The type of the received and returned value must be the same.
361
403
 
362
404
  ```tsx
363
- interface PersonData {
364
- name: string;
365
- age: number;
405
+ interface SignInData {
406
+ email: string;
407
+ password: string;
366
408
  }
367
409
 
368
410
  const Form: React.FC = () => {
369
- const { Field, form } = useForm<PersonData>({
370
- name: 'Kate',
371
- age: 18,
411
+ const { Field, form } = useForm<SignInData>({
412
+ email: '',
413
+ password: '',
372
414
  });
373
415
 
374
416
  const onSubmit = useCallback(() => {
@@ -377,14 +419,13 @@ const Form: React.FC = () => {
377
419
 
378
420
  return (
379
421
  <>
380
- <Field name='name' render={(props) => <Input {...props} />} />
381
422
  <Field
382
- name='age'
383
- toValue={(value) => value.toString()} // To input component
384
- fromValue={(value) => Number(value)} // From input component
423
+ name='email'
424
+ transformer={(value) => value.toLowerCase()} // Make email in lowercase
385
425
  render={(props) => <Input {...props} />}
386
426
  />
387
- <Button onClick={onSubmit}>Save</Button>
427
+ <Field name='password' render={(props) => <InputPassword {...props} />} />
428
+ <Button onClick={onSubmit}>Sign In</Button>
388
429
  </>
389
430
  );
390
431
  };
@@ -416,6 +457,8 @@ const Form: React.FC = () => {
416
457
  }, []);
417
458
 
418
459
  useTransformer('title', (value) => ({
460
+ // Update any number of fields, not just one.
461
+ // You can use a path (e.g. `'options.min': 0`).
419
462
  metaTitle: `The length of the title is ${value.length}`,
420
463
  }));
421
464
 
@@ -429,15 +472,6 @@ const Form: React.FC = () => {
429
472
  };
430
473
  ```
431
474
 
432
- You can update any number of fields, not just one. For example, every time the title changes, we can set `metaTitle` and `metaDescription` to an empty string.
433
-
434
- ```tsx
435
- useTransformer('title', () => ({
436
- metaTitle: '',
437
- metaDescription: '',
438
- }));
439
- ```
440
-
441
475
  ## 👀 Tracking field changes
442
476
 
443
477
  You can track changes for a specific field using the `useValue` hook.
@@ -460,7 +494,7 @@ const Form: React.FC = () => {
460
494
  console.log(form.values.getAll());
461
495
  }, []);
462
496
 
463
- const title = useValue('title');
497
+ const title = useValue('title'); // You can use a path (e.g. `options.min`)
464
498
 
465
499
  useEffect(() => {
466
500
  // Send a request to the server
@@ -495,7 +529,7 @@ const Form: React.FC = () => {
495
529
  }, []);
496
530
 
497
531
  useEffect(() => {
498
- const subscription = form.values.subscribeToAllFields((name, value) => {
532
+ const subscription = form.values.subscribeToAll((name, value) => {
499
533
  console.log(`${name} = ${value}`);
500
534
  });
501
535
  return () => subscription.unsubscribe();
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _deleteFromArray = _interopRequireDefault(require("./utils/deleteFromArray"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
10
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
12
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
13
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
15
+ var BroadcastObserverManager = /*#__PURE__*/function () {
16
+ function BroadcastObserverManager() {
17
+ _classCallCheck(this, BroadcastObserverManager);
18
+ this.broadcastObservers = void 0;
19
+ this.broadcastObservers = [];
20
+ }
21
+ _createClass(BroadcastObserverManager, [{
22
+ key: "subscribeToAll",
23
+ value: function subscribeToAll(observer) {
24
+ var _this = this;
25
+ this.broadcastObservers.push(observer);
26
+ return {
27
+ unsubscribe: function unsubscribe() {
28
+ return (0, _deleteFromArray["default"])(_this.broadcastObservers, observer);
29
+ }
30
+ };
31
+ }
32
+ }, {
33
+ key: "callBroadcastObservers",
34
+ value: function callBroadcastObservers(name, value) {
35
+ this.broadcastObservers.forEach(function (observer) {
36
+ return observer(name, value);
37
+ });
38
+ }
39
+ }]);
40
+ return BroadcastObserverManager;
41
+ }();
42
+ var _default = BroadcastObserverManager;
43
+ exports["default"] = _default;
44
+ //# sourceMappingURL=BroadcastObserverManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BroadcastObserverManager.js","names":["BroadcastObserverManager","broadcastObservers","observer","push","unsubscribe","deleteFromArray","name","value","forEach"],"sources":["../../src/BroadcastObserverManager.ts"],"sourcesContent":["import { Subscription } from './types';\nimport deleteFromArray from './utils/deleteFromArray';\n\nexport type BroadcastObserver<TName, TValue> = (\n name: TName,\n value: TValue\n) => void;\n\nclass BroadcastObserverManager<TName, TValue> {\n private readonly broadcastObservers: Array<BroadcastObserver<TName, TValue>>;\n\n public constructor() {\n this.broadcastObservers = [];\n }\n\n public subscribeToAll(\n observer: BroadcastObserver<TName, TValue>\n ): Subscription {\n this.broadcastObservers.push(observer);\n return {\n unsubscribe: () => deleteFromArray(this.broadcastObservers, observer),\n };\n }\n\n protected callBroadcastObservers<N extends TName, V extends TValue>(\n name: N,\n value: V\n ): void {\n this.broadcastObservers.forEach((observer) => observer(name, value));\n }\n}\n\nexport default BroadcastObserverManager;\n"],"mappings":";;;;;;AACA;AAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOhDA,wBAAwB;EAG5B,oCAAqB;IAAA;IAAA,KAFJC,kBAAkB;IAGjC,IAAI,CAACA,kBAAkB,GAAG,EAAE;EAC9B;EAAC;IAAA;IAAA,OAED,wBACEC,QAA0C,EAC5B;MAAA;MACd,IAAI,CAACD,kBAAkB,CAACE,IAAI,CAACD,QAAQ,CAAC;MACtC,OAAO;QACLE,WAAW,EAAE;UAAA,OAAM,IAAAC,2BAAe,EAAC,KAAI,CAACJ,kBAAkB,EAAEC,QAAQ,CAAC;QAAA;MACvE,CAAC;IACH;EAAC;IAAA;IAAA,OAED,gCACEI,IAAO,EACPC,KAAQ,EACF;MACN,IAAI,CAACN,kBAAkB,CAACO,OAAO,CAAC,UAACN,QAAQ;QAAA,OAAKA,QAAQ,CAACI,IAAI,EAAEC,KAAK,CAAC;MAAA,EAAC;IACtE;EAAC;EAAA;AAAA;AAAA,eAGYP,wBAAwB;AAAA"}
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = void 0;
8
- var _SubscriptionManager2 = _interopRequireDefault(require("./SubscriptionManager"));
8
+ var _ErrorObserverManager2 = _interopRequireDefault(require("./ErrorObserverManager"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
10
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
11
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
12
12
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
13
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
15
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
14
16
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
15
17
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
@@ -17,36 +19,36 @@ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) ===
17
19
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
18
20
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
19
21
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
20
- var SubscribableData = /*#__PURE__*/function (_SubscriptionManager) {
21
- _inherits(SubscribableData, _SubscriptionManager);
22
- var _super = _createSuper(SubscribableData);
23
- function SubscribableData(data) {
22
+ var ErrorData = /*#__PURE__*/function (_ErrorObserverManager) {
23
+ _inherits(ErrorData, _ErrorObserverManager);
24
+ var _super = _createSuper(ErrorData);
25
+ function ErrorData(errors) {
24
26
  var _this;
25
- _classCallCheck(this, SubscribableData);
27
+ _classCallCheck(this, ErrorData);
26
28
  _this = _super.call(this);
27
- _this.data = void 0;
28
- _this.data = data;
29
+ _this.errors = void 0;
30
+ _this.errors = errors;
29
31
  return _this;
30
32
  }
31
- _createClass(SubscribableData, [{
33
+ _createClass(ErrorData, [{
32
34
  key: "get",
33
35
  value: function get(name) {
34
- return this.data[name];
36
+ return this.errors[name];
35
37
  }
36
38
  }, {
37
39
  key: "getAll",
38
40
  value: function getAll() {
39
- return this.data;
41
+ return this.errors;
40
42
  }
41
43
  }, {
42
44
  key: "set",
43
45
  value: function set(name, value) {
44
- this.data[name] = value;
45
- this.call(name, value);
46
+ this.errors[name] = value;
47
+ this.callObservers(name, value);
46
48
  }
47
49
  }]);
48
- return SubscribableData;
49
- }(_SubscriptionManager2["default"]);
50
- var _default = SubscribableData;
50
+ return ErrorData;
51
+ }(_ErrorObserverManager2["default"]);
52
+ var _default = ErrorData;
51
53
  exports["default"] = _default;
52
- //# sourceMappingURL=SubscribableData.js.map
54
+ //# sourceMappingURL=ErrorData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorData.js","names":["ErrorData","errors","name","value","callObservers","ErrorObserverManager"],"sources":["../../src/ErrorData.ts"],"sourcesContent":["import ErrorObserverManager from './ErrorObserverManager';\nimport { StringMap } from './types';\n\nclass ErrorData<\n TErrors extends StringMap<string | undefined>,\n TName extends keyof TErrors = keyof TErrors\n> extends ErrorObserverManager<TErrors> {\n private readonly errors: TErrors;\n\n public constructor(errors: TErrors) {\n super();\n this.errors = errors;\n }\n\n public get<T extends TName>(name: T): TErrors[T] {\n return this.errors[name];\n }\n\n public getAll(): TErrors {\n return this.errors;\n }\n\n public set<T extends TName>(name: T, value: TErrors[T]): void {\n this.errors[name] = value;\n this.callObservers(name, value);\n }\n}\n\nexport default ErrorData;\n"],"mappings":";;;;;;;AAAA;AAA0D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAGpDA,SAAS;EAAA;EAAA;EAMb,mBAAmBC,MAAe,EAAE;IAAA;IAAA;IAClC;IAAQ,MAHOA,MAAM;IAIrB,MAAKA,MAAM,GAAGA,MAAM;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAc;MAC/C,OAAO,IAAI,CAACD,MAAM,CAACC,IAAI,CAAC;IAC1B;EAAC;IAAA;IAAA,OAED,kBAAyB;MACvB,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAEC,KAAiB,EAAQ;MAC5D,IAAI,CAACF,MAAM,CAACC,IAAI,CAAC,GAAGC,KAAK;MACzB,IAAI,CAACC,aAAa,CAACF,IAAI,EAAEC,KAAK,CAAC;IACjC;EAAC;EAAA;AAAA,EAnBOE,iCAAoB;AAAA,eAsBfL,SAAS;AAAA"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _BroadcastObserverManager = _interopRequireDefault(require("./BroadcastObserverManager"));
9
+ var _deleteFromArray = _interopRequireDefault(require("./utils/deleteFromArray"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
13
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
16
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
17
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
18
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
19
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
20
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
21
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
22
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
23
+ var ErrorObserverManager = /*#__PURE__*/function (_BroadcastObserverMan) {
24
+ _inherits(ErrorObserverManager, _BroadcastObserverMan);
25
+ var _super = _createSuper(ErrorObserverManager);
26
+ function ErrorObserverManager() {
27
+ var _this;
28
+ _classCallCheck(this, ErrorObserverManager);
29
+ _this = _super.call(this);
30
+ _this.observers = void 0;
31
+ _this.observers = {};
32
+ return _this;
33
+ }
34
+ _createClass(ErrorObserverManager, [{
35
+ key: "getObservers",
36
+ value: function getObservers(name) {
37
+ if (!this.observers[name]) this.observers[name] = [];
38
+ return this.observers[name];
39
+ }
40
+ }, {
41
+ key: "subscribe",
42
+ value: function subscribe(name, observer) {
43
+ var observers = this.getObservers(name);
44
+ observers.push(observer);
45
+ return {
46
+ unsubscribe: function unsubscribe() {
47
+ return (0, _deleteFromArray["default"])(observers, observer);
48
+ }
49
+ };
50
+ }
51
+ }, {
52
+ key: "callObservers",
53
+ value: function callObservers(name, value) {
54
+ this.callBroadcastObservers(name, value);
55
+ this.getObservers(name).forEach(function (observer) {
56
+ return observer(value);
57
+ });
58
+ }
59
+ }]);
60
+ return ErrorObserverManager;
61
+ }(_BroadcastObserverManager["default"]);
62
+ var _default = ErrorObserverManager;
63
+ exports["default"] = _default;
64
+ //# sourceMappingURL=ErrorObserverManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorObserverManager.js","names":["ErrorObserverManager","observers","name","observer","getObservers","push","unsubscribe","deleteFromArray","value","callBroadcastObservers","forEach","BroadcastObserverManager"],"sources":["../../src/ErrorObserverManager.ts"],"sourcesContent":["import BroadcastObserverManager from './BroadcastObserverManager';\nimport { Observer, StringMap, Subscription } from './types';\nimport deleteFromArray from './utils/deleteFromArray';\n\nexport type ErrorObserver = Observer<string | undefined>;\n\nclass ErrorObserverManager<\n TErrors extends StringMap<string | undefined>,\n TName extends keyof TErrors = keyof TErrors\n> extends BroadcastObserverManager<TName, string | undefined> {\n private readonly observers: {\n [K in TName]?: ErrorObserver[];\n };\n\n public constructor() {\n super();\n this.observers = {};\n }\n\n private getObservers<T extends TName>(name: T): ErrorObserver[] {\n if (!this.observers[name]) this.observers[name] = [];\n return this.observers[name] as ErrorObserver[];\n }\n\n public subscribe<T extends TName>(\n name: T,\n observer: ErrorObserver\n ): Subscription {\n const observers = this.getObservers(name);\n observers.push(observer);\n return { unsubscribe: () => deleteFromArray(observers, observer) };\n }\n\n protected callObservers<T extends TName>(name: T, value: string | undefined) {\n this.callBroadcastObservers(name, value);\n this.getObservers(name).forEach((observer) => observer(value));\n }\n}\n\nexport default ErrorObserverManager;\n"],"mappings":";;;;;;;AAAA;AAEA;AAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAIhDA,oBAAoB;EAAA;EAAA;EAQxB,gCAAqB;IAAA;IAAA;IACnB;IAAQ,MALOC,SAAS;IAMxB,MAAKA,SAAS,GAAG,CAAC,CAAC;IAAC;EACtB;EAAC;IAAA;IAAA,OAED,sBAAsCC,IAAO,EAAmB;MAC9D,IAAI,CAAC,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC,EAAE,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC,GAAG,EAAE;MACpD,OAAO,IAAI,CAACD,SAAS,CAACC,IAAI,CAAC;IAC7B;EAAC;IAAA;IAAA,OAED,mBACEA,IAAO,EACPC,QAAuB,EACT;MACd,IAAMF,SAAS,GAAG,IAAI,CAACG,YAAY,CAACF,IAAI,CAAC;MACzCD,SAAS,CAACI,IAAI,CAACF,QAAQ,CAAC;MACxB,OAAO;QAAEG,WAAW,EAAE;UAAA,OAAM,IAAAC,2BAAe,EAACN,SAAS,EAAEE,QAAQ,CAAC;QAAA;MAAC,CAAC;IACpE;EAAC;IAAA;IAAA,OAED,uBAAyCD,IAAO,EAAEM,KAAyB,EAAE;MAC3E,IAAI,CAACC,sBAAsB,CAACP,IAAI,EAAEM,KAAK,CAAC;MACxC,IAAI,CAACJ,YAAY,CAACF,IAAI,CAAC,CAACQ,OAAO,CAAC,UAACP,QAAQ;QAAA,OAAKA,QAAQ,CAACK,KAAK,CAAC;MAAA,EAAC;IAChE;EAAC;EAAA;AAAA,EA3BOG,oCAAwB;AAAA,eA8BnBX,oBAAoB;AAAA"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _ErrorData = _interopRequireDefault(require("./ErrorData"));
8
+ var _clone = _interopRequireDefault(require("./utils/clone"));
9
+ var _ValueData = _interopRequireDefault(require("./ValueData"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
14
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
15
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
16
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
17
+ var Form = /*#__PURE__*/function () {
18
+ function Form(initValues) {
19
+ _classCallCheck(this, Form);
20
+ this.initValues = void 0;
21
+ this.values = void 0;
22
+ this.errors = void 0;
23
+ this.initValues = initValues;
24
+ this.values = new _ValueData["default"]((0, _clone["default"])(initValues));
25
+ this.errors = new _ErrorData["default"]({});
26
+ }
27
+ _createClass(Form, [{
28
+ key: "reset",
29
+ value: function reset() {
30
+ var _this = this;
31
+ // Reset values
32
+ Object.keys(this.values.getAll()).forEach(function (name) {
33
+ _this.values.set(name, (0, _clone["default"])(_this.initValues[name]));
34
+ });
35
+
36
+ // Reset errors
37
+ Object.keys(this.errors.getAll()).forEach(function (name) {
38
+ _this.errors.set(name, undefined);
39
+ });
40
+ }
41
+ }]);
42
+ return Form;
43
+ }();
44
+ var _default = Form;
45
+ exports["default"] = _default;
46
+ //# sourceMappingURL=Form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.js","names":["Form","initValues","values","errors","ValueData","clone","ErrorData","Object","keys","getAll","forEach","name","set","undefined"],"sources":["../../src/Form.ts"],"sourcesContent":["import ErrorData from './ErrorData';\nimport { Errors, Path, StringMap } from './types';\nimport clone from './utils/clone';\nimport ValueData from './ValueData';\n\nclass Form<\n TValues extends StringMap = StringMap,\n TErrors extends Errors<TValues> = Errors<TValues>\n> {\n public initValues: TValues;\n\n public readonly values: ValueData<TValues>;\n\n public readonly errors: ErrorData<TErrors>;\n\n public constructor(initValues: TValues) {\n this.initValues = initValues;\n this.values = new ValueData(clone(initValues));\n this.errors = new ErrorData({} as TErrors);\n }\n\n public reset() {\n // Reset values\n Object.keys(this.values.getAll()).forEach((name) => {\n this.values.set(name as Path<TValues>, clone(this.initValues[name]));\n });\n\n // Reset errors\n Object.keys(this.errors.getAll()).forEach((name) => {\n this.errors.set(\n name as keyof TErrors,\n undefined as TErrors[keyof TErrors]\n );\n });\n }\n}\n\nexport default Form;\n"],"mappings":";;;;;;AAAA;AAEA;AACA;AAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAE9BA,IAAI;EAUR,cAAmBC,UAAmB,EAAE;IAAA;IAAA,KANjCA,UAAU;IAAA,KAEDC,MAAM;IAAA,KAENC,MAAM;IAGpB,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,MAAM,GAAG,IAAIE,qBAAS,CAAC,IAAAC,iBAAK,EAACJ,UAAU,CAAC,CAAC;IAC9C,IAAI,CAACE,MAAM,GAAG,IAAIG,qBAAS,CAAC,CAAC,CAAC,CAAY;EAC5C;EAAC;IAAA;IAAA,OAED,iBAAe;MAAA;MACb;MACAC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACN,MAAM,CAACO,MAAM,EAAE,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;QAClD,KAAI,CAACT,MAAM,CAACU,GAAG,CAACD,IAAI,EAAmB,IAAAN,iBAAK,EAAC,KAAI,CAACJ,UAAU,CAACU,IAAI,CAAC,CAAC,CAAC;MACtE,CAAC,CAAC;;MAEF;MACAJ,MAAM,CAACC,IAAI,CAAC,IAAI,CAACL,MAAM,CAACM,MAAM,EAAE,CAAC,CAACC,OAAO,CAAC,UAACC,IAAI,EAAK;QAClD,KAAI,CAACR,MAAM,CAACS,GAAG,CACbD,IAAI,EACJE,SAAS,CACV;MACH,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAAA,eAGYb,IAAI;AAAA"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _deleteFromArray = _interopRequireDefault(require("./utils/deleteFromArray"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
10
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
12
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
13
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
15
+ var Node = /*#__PURE__*/function () {
16
+ function Node() {
17
+ var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
18
+ var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
19
+ _classCallCheck(this, Node);
20
+ this.name = void 0;
21
+ this.parent = void 0;
22
+ this.nodes = void 0;
23
+ this.observers = void 0;
24
+ this.name = name;
25
+ this.parent = parent;
26
+ this.nodes = {};
27
+ this.observers = [];
28
+ }
29
+ _createClass(Node, [{
30
+ key: "getNode",
31
+ value: function getNode(name) {
32
+ return this.nodes[name];
33
+ }
34
+ }, {
35
+ key: "createNode",
36
+ value: function createNode(name) {
37
+ this.nodes[name] = new Node(this, name);
38
+ return this.nodes[name];
39
+ }
40
+ }, {
41
+ key: "deleteNode",
42
+ value: function deleteNode(name) {
43
+ delete this.nodes[name];
44
+ }
45
+ }, {
46
+ key: "addObserver",
47
+ value: function addObserver(observer) {
48
+ this.observers.push(observer);
49
+ }
50
+ }, {
51
+ key: "deleteObserver",
52
+ value: function deleteObserver(observer) {
53
+ (0, _deleteFromArray["default"])(this.observers, observer);
54
+ }
55
+ }]);
56
+ return Node;
57
+ }();
58
+ var _default = Node;
59
+ exports["default"] = _default;
60
+ //# sourceMappingURL=Node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.js","names":["Node","parent","name","nodes","observers","observer","push","deleteFromArray"],"sources":["../../src/Node.ts"],"sourcesContent":["import { Observer } from './types';\nimport deleteFromArray from './utils/deleteFromArray';\n\nclass Node {\n public readonly name: string;\n\n public readonly parent: Node | null;\n\n public readonly nodes: Record<string, Node>;\n\n public readonly observers: Observer[];\n\n public constructor(parent: Node | null = null, name = '') {\n this.name = name;\n this.parent = parent;\n this.nodes = {};\n this.observers = [];\n }\n\n public getNode(name: string): Node | undefined {\n return this.nodes[name];\n }\n\n public createNode(name: string): Node {\n this.nodes[name] = new Node(this, name);\n return this.nodes[name];\n }\n\n public deleteNode(name: string): void {\n delete this.nodes[name];\n }\n\n public addObserver(observer: Observer): void {\n this.observers.push(observer);\n }\n\n public deleteObserver(observer: Observer): void {\n deleteFromArray(this.observers, observer);\n }\n}\n\nexport default Node;\n"],"mappings":";;;;;;AACA;AAAsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEhDA,IAAI;EASR,gBAA0D;IAAA,IAAvCC,MAAmB,uEAAG,IAAI;IAAA,IAAEC,IAAI,uEAAG,EAAE;IAAA;IAAA,KARxCA,IAAI;IAAA,KAEJD,MAAM;IAAA,KAENE,KAAK;IAAA,KAELC,SAAS;IAGvB,IAAI,CAACF,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,KAAK,GAAG,CAAC,CAAC;IACf,IAAI,CAACC,SAAS,GAAG,EAAE;EACrB;EAAC;IAAA;IAAA,OAED,iBAAeF,IAAY,EAAoB;MAC7C,OAAO,IAAI,CAACC,KAAK,CAACD,IAAI,CAAC;IACzB;EAAC;IAAA;IAAA,OAED,oBAAkBA,IAAY,EAAQ;MACpC,IAAI,CAACC,KAAK,CAACD,IAAI,CAAC,GAAG,IAAIF,IAAI,CAAC,IAAI,EAAEE,IAAI,CAAC;MACvC,OAAO,IAAI,CAACC,KAAK,CAACD,IAAI,CAAC;IACzB;EAAC;IAAA;IAAA,OAED,oBAAkBA,IAAY,EAAQ;MACpC,OAAO,IAAI,CAACC,KAAK,CAACD,IAAI,CAAC;IACzB;EAAC;IAAA;IAAA,OAED,qBAAmBG,QAAkB,EAAQ;MAC3C,IAAI,CAACD,SAAS,CAACE,IAAI,CAACD,QAAQ,CAAC;IAC/B;EAAC;IAAA;IAAA,OAED,wBAAsBA,QAAkB,EAAQ;MAC9C,IAAAE,2BAAe,EAAC,IAAI,CAACH,SAAS,EAAEC,QAAQ,CAAC;IAC3C;EAAC;EAAA;AAAA;AAAA,eAGYL,IAAI;AAAA"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _path = require("./utils/path");
9
+ var _ValueObserverManager2 = _interopRequireDefault(require("./ValueObserverManager"));
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
13
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
16
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
17
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
18
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
19
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
20
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
21
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
22
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
23
+ var ValueData = /*#__PURE__*/function (_ValueObserverManager) {
24
+ _inherits(ValueData, _ValueObserverManager);
25
+ var _super = _createSuper(ValueData);
26
+ function ValueData(values) {
27
+ var _this;
28
+ _classCallCheck(this, ValueData);
29
+ _this = _super.call(this);
30
+ _this.values = void 0;
31
+ _this.values = values;
32
+ return _this;
33
+ }
34
+ _createClass(ValueData, [{
35
+ key: "get",
36
+ value: function get(name) {
37
+ return (0, _path.get)(this.values, name);
38
+ }
39
+ }, {
40
+ key: "getAll",
41
+ value: function getAll() {
42
+ return this.values;
43
+ }
44
+ }, {
45
+ key: "set",
46
+ value: function set(name, value) {
47
+ var ok = (0, _path.set)(this.values, name, value);
48
+ if (ok) this.callObservers(name, this.values);
49
+ }
50
+ }]);
51
+ return ValueData;
52
+ }(_ValueObserverManager2["default"]);
53
+ var _default = ValueData;
54
+ exports["default"] = _default;
55
+ //# sourceMappingURL=ValueData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueData.js","names":["ValueData","values","name","get","value","ok","set","callObservers","ValueObserverManager"],"sources":["../../src/ValueData.ts"],"sourcesContent":["import { PathReturn, Path, StringMap } from './types';\nimport { get, set } from './utils/path';\nimport ValueObserverManager from './ValueObserverManager';\n\nclass ValueData<\n TValues extends StringMap,\n TName extends Path<TValues> = Path<TValues>\n> extends ValueObserverManager<TValues> {\n private readonly values: TValues;\n\n public constructor(values: TValues) {\n super();\n this.values = values;\n }\n\n public get<T extends TName>(name: T): PathReturn<TValues, T> {\n return get(this.values, name);\n }\n\n public getAll(): TValues {\n return this.values;\n }\n\n public set<T extends TName>(name: T, value: PathReturn<TValues, T>): void {\n const ok = set(this.values, name, value);\n if (ok) this.callObservers(name, this.values);\n }\n}\n\nexport default ValueData;\n"],"mappings":";;;;;;;AACA;AACA;AAA0D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAEpDA,SAAS;EAAA;EAAA;EAMb,mBAAmBC,MAAe,EAAE;IAAA;IAAA;IAClC;IAAQ,MAHOA,MAAM;IAIrB,MAAKA,MAAM,GAAGA,MAAM;IAAC;EACvB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAA0B;MAC3D,OAAO,IAAAC,SAAG,EAAC,IAAI,CAACF,MAAM,EAAEC,IAAI,CAAC;IAC/B;EAAC;IAAA;IAAA,OAED,kBAAyB;MACvB,OAAO,IAAI,CAACD,MAAM;IACpB;EAAC;IAAA;IAAA,OAED,aAA4BC,IAAO,EAAEE,KAA6B,EAAQ;MACxE,IAAMC,EAAE,GAAG,IAAAC,SAAG,EAAC,IAAI,CAACL,MAAM,EAAEC,IAAI,EAAEE,KAAK,CAAC;MACxC,IAAIC,EAAE,EAAE,IAAI,CAACE,aAAa,CAACL,IAAI,EAAE,IAAI,CAACD,MAAM,CAAC;IAC/C;EAAC;EAAA;AAAA,EAnBOO,iCAAoB;AAAA,eAsBfR,SAAS;AAAA"}