{"version":3,"sources":["jsdelivr-header.js","/npm/@composi/merge-objects@1.3.4/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,OCGO,SAAS,gBAAgB,GAK9B,MAAM,QAAQ,EAJS,KAKlB,EAAQ,QAAQ,KACmB,iBAA5B,EANW,IAOlB,EAAQ,QAAwB,KACG,iBAA5B,EARW,IASlB,EAAQ,QARA,IASR,EAVkB,aAUiB,KACnC,EAAQ,QAAQ,IAAI,MACpB,EAZkB,aAYiB,KACnC,EAAQ,QAAQ,IAAI,MACpB,EAdkB,aAciB,SACnC,EAAQ,QAAQ,EAfE,KAgBlB,EAhBkB,aAgBiB,SACnC,EAAQ,QAAQ,EAjBE,KAkBlB,EAAQ,QAAQ,CAAC,GAQtB,MAAM,EAAc,CAAC,EAAQ,EAAO,IAAI,UACtC,OAAO,KAAY,GAEhB,GACA,EAAK,IAAI,IAET,EAAK,IAAI,IAET,MACD,MAAM,EAAS,aAAkB,MAC5B,IAAI,KAAK,IACT,aAAkB,QAClB,IAAI,OAAO,EAAO,OAAQ,EAAO,QACjC,aAAkB,KAClB,IAAI,IAAI,IAAI,KACZ,aAAkB,KAClB,IAAI,IAAI,IAAI,KACZ,EAAO,aACP,IAAI,EAAO,aACX,OAAO,OAAO,MAInB,OAFA,EAAK,IAAI,EAAQ,GAEV,aAAkB,KACpB,IAAI,IAAI,IAAI,KACZ,aAAkB,KAClB,IAAI,IAAI,IAAI,KACZ,aAAkB,SAClB,GACA,aAAkB,SAClB,GACA,OAAO,OACR,KACG,OAAO,KAAK,GAAQ,KAAI,IAAO,CAChC,CAAC,GAAM,EAAY,EAAO,GAAM,OAKxC,EA/BG,GAkCL,OAAO,MAAM,QAAQ,EApEE,KAqElB,EAAQ,QAAO,CAAC,EAAG,IAAM,MAAM,UAAU,OAAO,EAAG,EAAY,OAC/D,EAtEkB,aAsEiB,KACnC,EAAQ,QAAO,CAAC,EAAG,IAAM,IAAI,IAAI,IACb,KACC,EAAY,QAEjC,EA3EkB,aA2EiB,KACnC,EAAQ,QAAO,CAAC,EAAG,IAAM,IAAI,IAAI,IACb,KACC,EAAY,QAEjC,EAhFkB,aAgFiB,SACnC,EAAQ,QAAO,GAAK,KACpB,EAlFkB,aAkFiB,SACnC,EAAQ,QAAO,GAAK,KACe,iBAA5B,EApFW,IAqFlB,EAAQ,QAAO,CAAC,EAAG,IAAM,OAAO,OAAO,EAAG,EAAY,OACnB,iBAA5B,EAtFW,IAuFlB,EArFmB,IAsFgB,iBAA5B,EAxFW,IAyFlB,EAvFmB,EAwF1B,QAIO,MAAM,YAAc,GAAU,aAAa,UAC3C,MAAM,MAAQ,GAAU,aAAa","file":"/npm/@composi/merge-objects@1.3.4/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@composi/merge-objects@1.3.4/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * Combine two objects, merging the second into the first. Any properties already existing in the first will be replaced by those of the second. Any properties in the second not in the first will be added to it.\n * This does a deep clone. Sub arrays will be cloned. If arrays consist of objects, those will be cloned. Functions will also be cloned. This also support Maps and Sets.\n * Passing in just one object will return a deep clone of it.\n *\n * @param {Object.<string, any>[]} objects One or more objects to use for merging.\n * @return {Object.<string, any>} Object.<string, any>\n */\n\nexport function mergeObjects(...objects) {\n  const FIRST_ARGUMENT = 0\n  const ZERO = 0\n  const SECOND_ARGUMENT = 1\n  // Add empty array or object to arguments to ensure unique clone:\n  Array.isArray(objects[FIRST_ARGUMENT])\n    && objects.unshift([])\n    || typeof objects[FIRST_ARGUMENT] === 'string'\n    && objects.unshift(/** @type {*} */(''))\n    || typeof objects[FIRST_ARGUMENT] === 'number'\n    && objects.unshift(/** @type {*} */(ZERO))\n    || objects[FIRST_ARGUMENT] instanceof Set\n    && objects.unshift(new Set())\n    || objects[FIRST_ARGUMENT] instanceof Map\n    && objects.unshift(new Map())\n    || objects[FIRST_ARGUMENT] instanceof WeakSet\n    && objects.unshift(objects[FIRST_ARGUMENT])\n    || objects[FIRST_ARGUMENT] instanceof WeakMap\n    && objects.unshift(objects[FIRST_ARGUMENT])\n    || objects.unshift({})\n\n  /**\n   * Create a clone of an object or array.\n   * @param {*} object The object to clone.\n   * @return {Object<string, any>} Object<string, any>\n   */\n\n  const createClone = (object, hash = new WeakMap()) =>\n    Object(object) !== object\n    // Deal with primitive types:\n    && object\n    || hash.has(object)\n    // Deal with cyclic references:\n    && hash.get(object)\n    // Test for other objects:\n    || (() => {\n      const result = object instanceof Date\n        && new Date(object)\n        || object instanceof RegExp\n        && new RegExp(object.source, object.flags)\n        || object instanceof Set\n        && new Set([...object])\n        || object instanceof Map\n        && new Map([...object])\n        || object.constructor\n        && new object.constructor()\n        || Object.create(null)\n\n      hash.set(object, result)\n\n      return object instanceof Set\n        && new Set([...object])\n        || object instanceof Map\n        && new Map([...object])\n        || object instanceof WeakSet\n        && object\n        || object instanceof WeakMap\n        && object\n        || Object.assign(\n          result,\n          ...Object.keys(object).map(key => ({\n            [key]: createClone(object[key], hash)\n          })\n          )\n        )\n    }\n    )()\n\n  // Return cloned copy of merged objects:\n  return Array.isArray(objects[FIRST_ARGUMENT])\n    && objects.reduce((a, b) => Array.prototype.concat(a, createClone(b)))\n    || objects[FIRST_ARGUMENT] instanceof Set\n    && objects.reduce((a, b) => new Set([\n      .../** @type {Set} */(a),\n      .../** @type {Set} */(createClone(b))\n    ]))\n    || objects[FIRST_ARGUMENT] instanceof Map\n    && objects.reduce((a, b) => new Map([\n      .../** @type {Map} */(a),\n      .../** @type {Map} */(createClone(b))\n    ]))\n    || objects[FIRST_ARGUMENT] instanceof WeakSet\n    && objects.reduce(a => a)\n    || objects[FIRST_ARGUMENT] instanceof WeakMap\n    && objects.reduce(a => a)\n    || typeof objects[FIRST_ARGUMENT] === 'object'\n    && objects.reduce((a, b) => Object.assign(a, createClone(b)))\n    || typeof objects[FIRST_ARGUMENT] === 'string'\n    && objects[SECOND_ARGUMENT]\n    || typeof objects[FIRST_ARGUMENT] === 'number'\n    && objects[SECOND_ARGUMENT]\n}\n\n\n\nexport const cloneObject = object => mergeObjects(object)\nexport const clone = object => mergeObjects(object)\n"]}