mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-31 21:19:21 +03:00
Bugfix: compose mail select contacts for cc/bcc failed
Cleanup: Inputosaurus and Knockout Change: Knockout domData now uses WeakMap Replaced: Knockout domManipulation with a documentFragment
This commit is contained in:
parent
fe7c7fede4
commit
ebe2c0536f
23 changed files with 410 additions and 889 deletions
47
vendors/knockout/src/utils.domData.js
vendored
47
vendors/knockout/src/utils.domData.js
vendored
|
|
@ -1,42 +1,25 @@
|
|||
|
||||
ko.utils.domData = new (function () {
|
||||
var uniqueId = 0;
|
||||
var dataStoreKeyExpandoPropertyName = "__ko__" + (Date.now());
|
||||
|
||||
var
|
||||
// We considered using WeakMap, but it has a problem in IE 11 and Edge that prevents using
|
||||
// it cross-window, so instead we just store the data directly on the node.
|
||||
// See https://github.com/knockout/knockout/issues/2141
|
||||
getDataForNode = (node, createIfNotFound) => {
|
||||
var dataForNode = node[dataStoreKeyExpandoPropertyName];
|
||||
if (!dataForNode && createIfNotFound) {
|
||||
dataForNode = node[dataStoreKeyExpandoPropertyName] = {};
|
||||
}
|
||||
return dataForNode;
|
||||
},
|
||||
clear = node => {
|
||||
if (node[dataStoreKeyExpandoPropertyName]) {
|
||||
delete node[dataStoreKeyExpandoPropertyName];
|
||||
return true; // Exposing "did clean" flag purely so specs can infer whether things have been cleaned up as intended
|
||||
}
|
||||
return false;
|
||||
};
|
||||
let uniqueId = 0,
|
||||
dataStoreKeyExpandoPropertyName = "__ko__" + (Date.now()),
|
||||
dataStore = new WeakMap();
|
||||
|
||||
return {
|
||||
get: (node, key) => {
|
||||
var dataForNode = getDataForNode(node, false);
|
||||
return dataForNode && dataForNode[key];
|
||||
},
|
||||
get: (node, key) => (dataStore.get(node) || {})[key],
|
||||
set: (node, key, value) => {
|
||||
// Make sure we don't actually create a new domData key if we are actually deleting a value
|
||||
var dataForNode = getDataForNode(node, value !== undefined /* createIfNotFound */);
|
||||
dataForNode && (dataForNode[key] = value);
|
||||
if (dataStore.has(node)) {
|
||||
dataStore.get(node)[key] = value;
|
||||
} else {
|
||||
let dataForNode = {};
|
||||
dataForNode[key] = value;
|
||||
dataStore.set(node, dataForNode);
|
||||
}
|
||||
return value;
|
||||
},
|
||||
getOrSet: (node, key, value) => {
|
||||
var dataForNode = getDataForNode(node, true /* createIfNotFound */);
|
||||
return dataForNode[key] || (dataForNode[key] = value);
|
||||
getOrSet: function(node, key, value) {
|
||||
return this.get(node, key) || this.set(node, key, value);
|
||||
},
|
||||
clear: clear,
|
||||
clear: node => dataStore.delete(node),
|
||||
|
||||
nextKey: () => (uniqueId++) + dataStoreKeyExpandoPropertyName
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue