UNPKG

svogv

Version:

A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.

79 lines 8.18 kB
/** * @ignore */ Object.same = function (source, target) { if (source === target) { return true; } if (!(source instanceof Object) || !(target instanceof Object)) { return false; } // if they are not strictly equal, they both need to be Objects for (const prop in source) { if (!source.hasOwnProperty(prop)) { continue; } if (source[prop] === undefined || source[prop] === null || source[prop] === '') { continue; } if (typeof source[prop] === 'object' && Object.same(source[prop], target[prop])) { continue; } if (typeof source[prop] === 'string' && target[prop].startsWith(source[prop])) { continue; } if (source[prop] === target[prop]) { continue; } return false; } return true; }; /** * @ignore */ Object.equals = function (x, y) { if (x === y) { return true; } // if both x and y are null or undefined and exactly the same if (!(x instanceof Object) || !(y instanceof Object)) { return false; } // if they are not strictly equal, they both need to be Objects if (x.constructor !== y.constructor) { return false; } // they must have the exact same prototype chain, the closest we can do is // test there constructor. for (const p in x) { if (!x.hasOwnProperty(p)) { continue; } // other properties were tested using x.constructor === y.constructor if (!y.hasOwnProperty(p)) { return false; } // allows to compare x[ p ] and y[ p ] when set to undefined if (x[p] === y[p]) { continue; } // if they have the same strict value or identity then they are equal if (typeof (x[p]) !== 'object') { return false; } // Numbers, Strings, Functions, Booleans must be strictly equal if (!Object.equals(x[p], y[p])) { return false; } // Objects and Arrays must be tested recursively } for (const p in y) { if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) { return false; } // allows x[ p ] to be set to undefined } return true; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWV4dGVuc2lvbnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvc3ZvZ3Yvc3JjLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL29iamVjdC1leHRlbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQUksR0FBRyxVQUFVLE1BQU0sRUFBRSxNQUFNO0lBQ3BDLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRTtRQUNyQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFZLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLFlBQVksTUFBTSxDQUFDLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztLQUFFO0lBQ2pGLCtEQUErRDtJQUMvRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRTtRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUFFLFNBQVM7U0FBRTtRQUMvQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQUUsU0FBUztTQUFFO1FBQzdGLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQUUsU0FBUztTQUFFO1FBRTlGLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFBRSxTQUFTO1NBQUU7UUFDNUYsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsU0FBUztTQUFFO1FBRWhELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQU0sRUFBRSxDQUFNO0lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFDN0IsNkRBQTZEO0lBRTdELElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLE1BQU0sQ0FBQyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7S0FBRTtJQUN2RSwrREFBK0Q7SUFFL0QsSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztLQUFFO0lBQ3RELDBFQUEwRTtJQUMxRSwwQkFBMEI7SUFFMUIsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFBRSxTQUFTO1NBQUU7UUFDdkMscUVBQXFFO1FBRXJFLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUMzQyw0REFBNEQ7UUFFNUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQUUsU0FBUztTQUFFO1FBQ2hDLHFFQUFxRTtRQUVyRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztTQUFFO1FBQ2pELCtEQUErRDtRQUUvRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztTQUFFO1FBQ2pELGdEQUFnRDtLQUNqRDtJQUVELEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztTQUFFO1FBQ2xFLHVDQUF1QztLQUN4QztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaWdub3JlXG4gKi9cbmRlY2xhcmUgaW50ZXJmYWNlIE9iamVjdENvbnN0cnVjdG9yIHtcbiAgZXF1YWxzKHg6IGFueSwgeTogYW55KTogYm9vbGVhbjtcbiAgc2FtZSh4OiBhbnksIHk6IGFueSk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5PYmplY3Quc2FtZSA9IGZ1bmN0aW9uIChzb3VyY2UsIHRhcmdldCk6IGJvb2xlYW4ge1xuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoIShzb3VyY2UgaW5zdGFuY2VvZiBPYmplY3QpIHx8ICEodGFyZ2V0IGluc3RhbmNlb2YgT2JqZWN0KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgLy8gaWYgdGhleSBhcmUgbm90IHN0cmljdGx5IGVxdWFsLCB0aGV5IGJvdGggbmVlZCB0byBiZSBPYmplY3RzXG4gIGZvciAoY29uc3QgcHJvcCBpbiBzb3VyY2UpIHtcbiAgICBpZiAoIXNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgeyBjb250aW51ZTsgfVxuICAgIGlmIChzb3VyY2VbcHJvcF0gPT09IHVuZGVmaW5lZCB8fCBzb3VyY2VbcHJvcF0gPT09IG51bGwgfHwgc291cmNlW3Byb3BdID09PSAnJykgeyBjb250aW51ZTsgfVxuICAgIGlmICh0eXBlb2Ygc291cmNlW3Byb3BdID09PSAnb2JqZWN0JyAmJiBPYmplY3Quc2FtZShzb3VyY2VbcHJvcF0sIHRhcmdldFtwcm9wXSkpIHsgY29udGludWU7IH1cblxuICAgIGlmICh0eXBlb2Ygc291cmNlW3Byb3BdID09PSAnc3RyaW5nJyAmJiB0YXJnZXRbcHJvcF0uc3RhcnRzV2l0aChzb3VyY2VbcHJvcF0pKSB7IGNvbnRpbnVlOyB9XG4gICAgaWYgKHNvdXJjZVtwcm9wXSA9PT0gdGFyZ2V0W3Byb3BdKSB7IGNvbnRpbnVlOyB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5PYmplY3QuZXF1YWxzID0gZnVuY3Rpb24gKHg6IGFueSwgeTogYW55KTogYm9vbGVhbiB7XG4gIGlmICh4ID09PSB5KSB7IHJldHVybiB0cnVlOyB9XG4gIC8vIGlmIGJvdGggeCBhbmQgeSBhcmUgbnVsbCBvciB1bmRlZmluZWQgYW5kIGV4YWN0bHkgdGhlIHNhbWVcblxuICBpZiAoISh4IGluc3RhbmNlb2YgT2JqZWN0KSB8fCAhKHkgaW5zdGFuY2VvZiBPYmplY3QpKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBpZiB0aGV5IGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwsIHRoZXkgYm90aCBuZWVkIHRvIGJlIE9iamVjdHNcblxuICBpZiAoeC5jb25zdHJ1Y3RvciAhPT0geS5jb25zdHJ1Y3RvcikgeyByZXR1cm4gZmFsc2U7IH1cbiAgLy8gdGhleSBtdXN0IGhhdmUgdGhlIGV4YWN0IHNhbWUgcHJvdG90eXBlIGNoYWluLCB0aGUgY2xvc2VzdCB3ZSBjYW4gZG8gaXNcbiAgLy8gdGVzdCB0aGVyZSBjb25zdHJ1Y3Rvci5cblxuICBmb3IgKGNvbnN0IHAgaW4geCkge1xuICAgIGlmICgheC5oYXNPd25Qcm9wZXJ0eShwKSkgeyBjb250aW51ZTsgfVxuICAgIC8vIG90aGVyIHByb3BlcnRpZXMgd2VyZSB0ZXN0ZWQgdXNpbmcgeC5jb25zdHJ1Y3RvciA9PT0geS5jb25zdHJ1Y3RvclxuXG4gICAgaWYgKCF5Lmhhc093blByb3BlcnR5KHApKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIC8vIGFsbG93cyB0byBjb21wYXJlIHhbIHAgXSBhbmQgeVsgcCBdIHdoZW4gc2V0IHRvIHVuZGVmaW5lZFxuXG4gICAgaWYgKHhbcF0gPT09IHlbcF0pIHsgY29udGludWU7IH1cbiAgICAvLyBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgc3RyaWN0IHZhbHVlIG9yIGlkZW50aXR5IHRoZW4gdGhleSBhcmUgZXF1YWxcblxuICAgIGlmICh0eXBlb2YgKHhbcF0pICE9PSAnb2JqZWN0JykgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAvLyBOdW1iZXJzLCBTdHJpbmdzLCBGdW5jdGlvbnMsIEJvb2xlYW5zIG11c3QgYmUgc3RyaWN0bHkgZXF1YWxcblxuICAgIGlmICghT2JqZWN0LmVxdWFscyh4W3BdLCB5W3BdKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAvLyBPYmplY3RzIGFuZCBBcnJheXMgbXVzdCBiZSB0ZXN0ZWQgcmVjdXJzaXZlbHlcbiAgfVxuXG4gIGZvciAoY29uc3QgcCBpbiB5KSB7XG4gICAgaWYgKHkuaGFzT3duUHJvcGVydHkocCkgJiYgIXguaGFzT3duUHJvcGVydHkocCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgLy8gYWxsb3dzIHhbIHAgXSB0byBiZSBzZXQgdG8gdW5kZWZpbmVkXG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuIl19