UNPKG

mcuistore

Version:

This is a repository for storing the UI components for SCBT project. The following are the setup steps to setup.

51 lines (45 loc) 1.99 kB
ko.utils.domData = new (function () { var uniqueId = 0; var dataStoreKeyExpandoPropertyName = "__ko__" + (new Date).getTime(); var dataStore = {}; function getAll(node, createIfNotFound) { var dataStoreKey = node[dataStoreKeyExpandoPropertyName]; var hasExistingDataStore = dataStoreKey && (dataStoreKey !== "null") && dataStore[dataStoreKey]; if (!hasExistingDataStore) { if (!createIfNotFound) return undefined; dataStoreKey = node[dataStoreKeyExpandoPropertyName] = "ko" + uniqueId++; dataStore[dataStoreKey] = {}; } return dataStore[dataStoreKey]; } return { get: function (node, key) { var allDataForNode = getAll(node, false); return allDataForNode === undefined ? undefined : allDataForNode[key]; }, set: function (node, key, value) { if (value === undefined) { // Make sure we don't actually create a new domData key if we are actually deleting a value if (getAll(node, false) === undefined) return; } var allDataForNode = getAll(node, true); allDataForNode[key] = value; }, clear: function (node) { var dataStoreKey = node[dataStoreKeyExpandoPropertyName]; if (dataStoreKey) { delete dataStore[dataStoreKey]; node[dataStoreKeyExpandoPropertyName] = null; return true; // Exposing "did clean" flag purely so specs can infer whether things have been cleaned up as intended } return false; }, nextKey: function () { return (uniqueId++) + dataStoreKeyExpandoPropertyName; } }; })(); ko.exportSymbol('utils.domData', ko.utils.domData); ko.exportSymbol('utils.domData.clear', ko.utils.domData.clear); // Exporting only so specs can clear up after themselves fully