UNPKG

2.55 kBJavaScriptView Raw
1'use strict';
2
3var _createClass = (function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8
9var _assocPath = require('ramda/src/assocPath');
10
11var _assocPath2 = _interopRequireDefault(_assocPath);
12
13var _clone = require('./utils/clone');
14
15var _clone2 = _interopRequireDefault(_clone);
16
17var _path = require('ramda/src/path');
18
19var _path2 = _interopRequireDefault(_path);
20
21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
23function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; }
24
25function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26
27var Map = (function () {
28 function Map(obj) {
29 _classCallCheck(this, Map);
30
31 if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') {
32 throw new TypeError(obj, 'is not an object');
33 }
34
35 this.obj = obj;
36 this['@@Plait/Map'] = 1;
37 }
38
39 _createClass(Map, [{
40 key: 'clone',
41 value: function clone() {
42 return new Map(this.toObject());
43 }
44 }, {
45 key: 'toObject',
46 value: function toObject() {
47 return (0, _clone2.default)(this.obj);
48 }
49 }, {
50 key: 'set',
51 value: function set(prop, val) {
52 var obj = this.toObject();
53
54 obj[prop] = val;
55
56 return new Map(obj);
57 }
58 }, {
59 key: 'get',
60 value: function get(prop) {
61 var obj = this.toObject();
62
63 return obj[prop];
64 }
65 }, {
66 key: 'update',
67 value: function update(prop, updater) {
68 return this.set(prop, updater(this.get(prop)));
69 }
70 }, {
71 key: 'setIn',
72 value: function setIn(propPath, val) {
73 var obj = (0, _assocPath2.default)(propPath, val, this.obj);
74
75 return new Map(obj);
76 }
77 }, {
78 key: 'getIn',
79 value: function getIn(propPath) {
80 return (0, _path2.default)(propPath, this.obj);
81 }
82 }]);
83
84 return Map;
85})();
86
87exports.default = Map;
\No newline at end of file