SingleInstanceStateController.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. Object.defineProperty(exports, "__esModule", {
  2. value: true
  3. });
  4. exports.clearAllState = clearAllState;
  5. exports.commitServerChanges = commitServerChanges;
  6. exports.duplicateState = duplicateState;
  7. exports.enqueueTask = enqueueTask;
  8. exports.estimateAttribute = estimateAttribute;
  9. exports.estimateAttributes = estimateAttributes;
  10. exports.getObjectCache = getObjectCache;
  11. exports.getPendingOps = getPendingOps;
  12. exports.getServerData = getServerData;
  13. exports.getState = getState;
  14. exports.initializeState = initializeState;
  15. exports.mergeFirstPendingState = mergeFirstPendingState;
  16. exports.popPendingState = popPendingState;
  17. exports.pushPendingState = pushPendingState;
  18. exports.removeState = removeState;
  19. exports.setPendingOp = setPendingOp;
  20. exports.setServerData = setServerData;
  21. var ObjectStateMutations = _interopRequireWildcard(require("./ObjectStateMutations"));
  22. function _getRequireWildcardCache(nodeInterop) {
  23. if (typeof WeakMap !== "function") return null;
  24. var cacheBabelInterop = new WeakMap();
  25. var cacheNodeInterop = new WeakMap();
  26. return (_getRequireWildcardCache = function (nodeInterop) {
  27. return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
  28. })(nodeInterop);
  29. }
  30. function _interopRequireWildcard(obj, nodeInterop) {
  31. if (!nodeInterop && obj && obj.__esModule) {
  32. return obj;
  33. }
  34. if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
  35. return {
  36. default: obj
  37. };
  38. }
  39. var cache = _getRequireWildcardCache(nodeInterop);
  40. if (cache && cache.has(obj)) {
  41. return cache.get(obj);
  42. }
  43. var newObj = {};
  44. var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
  45. for (var key in obj) {
  46. if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
  47. var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
  48. if (desc && (desc.get || desc.set)) {
  49. Object.defineProperty(newObj, key, desc);
  50. } else {
  51. newObj[key] = obj[key];
  52. }
  53. }
  54. }
  55. newObj.default = obj;
  56. if (cache) {
  57. cache.set(obj, newObj);
  58. }
  59. return newObj;
  60. }
  61. var objectState = {};
  62. function getState(obj) {
  63. var classData = objectState[obj.className];
  64. if (classData) {
  65. return classData[obj.id] || null;
  66. }
  67. return null;
  68. }
  69. function initializeState(obj, initial) {
  70. var state = getState(obj);
  71. if (state) {
  72. return state;
  73. }
  74. if (!objectState[obj.className]) {
  75. objectState[obj.className] = {};
  76. }
  77. if (!initial) {
  78. initial = ObjectStateMutations.defaultState();
  79. }
  80. state = objectState[obj.className][obj.id] = initial;
  81. return state;
  82. }
  83. function removeState(obj) {
  84. var state = getState(obj);
  85. if (state === null) {
  86. return null;
  87. }
  88. delete objectState[obj.className][obj.id];
  89. return state;
  90. }
  91. function getServerData(obj) {
  92. var state = getState(obj);
  93. if (state) {
  94. return state.serverData;
  95. }
  96. return {};
  97. }
  98. function setServerData(obj, attributes) {
  99. var serverData = initializeState(obj).serverData;
  100. ObjectStateMutations.setServerData(serverData, attributes);
  101. }
  102. function getPendingOps(obj) {
  103. var state = getState(obj);
  104. if (state) {
  105. return state.pendingOps;
  106. }
  107. return [{}];
  108. }
  109. function setPendingOp(obj, attr, op) {
  110. var pendingOps = initializeState(obj).pendingOps;
  111. ObjectStateMutations.setPendingOp(pendingOps, attr, op);
  112. }
  113. function pushPendingState(obj) {
  114. var pendingOps = initializeState(obj).pendingOps;
  115. ObjectStateMutations.pushPendingState(pendingOps);
  116. }
  117. function popPendingState(obj) {
  118. var pendingOps = initializeState(obj).pendingOps;
  119. return ObjectStateMutations.popPendingState(pendingOps);
  120. }
  121. function mergeFirstPendingState(obj) {
  122. var pendingOps = getPendingOps(obj);
  123. ObjectStateMutations.mergeFirstPendingState(pendingOps);
  124. }
  125. function getObjectCache(obj) {
  126. var state = getState(obj);
  127. if (state) {
  128. return state.objectCache;
  129. }
  130. return {};
  131. }
  132. function estimateAttribute(obj, attr) {
  133. var serverData = getServerData(obj);
  134. var pendingOps = getPendingOps(obj);
  135. return ObjectStateMutations.estimateAttribute(serverData, pendingOps, obj.className, obj.id, attr);
  136. }
  137. function estimateAttributes(obj) {
  138. var serverData = getServerData(obj);
  139. var pendingOps = getPendingOps(obj);
  140. return ObjectStateMutations.estimateAttributes(serverData, pendingOps, obj.className, obj.id);
  141. }
  142. function commitServerChanges(obj, changes) {
  143. var state = initializeState(obj);
  144. ObjectStateMutations.commitServerChanges(state.serverData, state.objectCache, changes);
  145. }
  146. function enqueueTask(obj, task) {
  147. var state = initializeState(obj);
  148. return state.tasks.enqueue(task);
  149. }
  150. function clearAllState() {
  151. objectState = {};
  152. }
  153. function duplicateState(source, dest) {
  154. dest.id = source.id;
  155. }