{"version":3,"names":["maybeUnpackString","value","guid","s4","Math","floor","random","toString","substring","abstract","Error","compareKeyLocations","a","b","keyLocationsAreEqual","stringInsert","baseString","insertString","index","slice","stringRemove","startIndex","endIndex","normalizePath","path","split","reduce","acc","part","pop","push","join","deepCopy","obj","HTMLElement","cloneNode","clone","JSON","parse","stringify","e","console","warn","Object","assign"],"sources":["utils.js"],"sourcesContent":["export const maybeUnpackString = (value) => {\n  if(!value) {\n    return value;\n  }\n  \n  if(typeof(value) === \"string\") {\n    return value;\n  } else if (typeof(value.value) === \"string\") {\n    return value.value;\n  }\n  \n  return null;\n}\n\nexport const guid = () => {\n  // from https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n  function s4() {\n    return Math.floor((1 + Math.random()) * 0x10000)\n      .toString(16)\n      .substring(1);\n  }\n  return  s4() + '_' + s4() + '_' + s4();\n}\n\nexport const abstract = () => {\n  throw Error(\"This function is abstract\");\n}\n\nexport const compareKeyLocations = (a, b) => {\n  return a[0] - b[0] ? a[0] - b[0] :\n         a[1] - b[1] ? a[1] - b[1] :\n         a[2] - b[2] ? a[2] - b[2] :\n         a[3] - b[3] ? a[3] - b[3] :\n         0;\n}\n\nexport const keyLocationsAreEqual = (a, b) => {\n  return compareKeyLocations(a, b) === 0;\n}\n\nexport const stringInsert = (baseString, insertString, index) => {\n  return baseString.slice(0, index) + insertString + baseString.slice(index);\n}\n\nexport const stringRemove = (baseString, startIndex, endIndex) => {\n  return baseString.slice(0, startIndex) + baseString.slice(endIndex);\n}\n\nexport const normalizePath = (path) => \n  path.split(\"/\")\n      .reduce((acc, part) => {\n        if(part === \"..\") {\n          acc.pop();\n        } else if(part !== \".\") {\n          acc.push(part);\n        }\n        return acc;\n      }, [])\n      .join(\"/\")\n\nexport const deepCopy = (obj) => {\n  try {\n    if(obj instanceof HTMLElement) {\n      /*probe:*/return/*{}*/ obj.cloneNode(true);\n    } else if(obj && obj.clone) {\n      // (A) #TODO this is not a deep copy... \n      return obj.clone() // why not....        \n    } else {\n      // (C) only this is a deep copy, but besides very simple objects... this will break... \n        // and this will really consume a lot of data if you probe a very big object\n      /*probe:*/return/*{}*/ JSON.parse(JSON.stringify(obj));\n    }\n  } catch(e) {\n    // (B) this is not a deep copy either\n    console.warn(\"Could not deeply clone object\", obj);\n    /*probe:*/return/*{}*/ Object.assign({}, obj);\n  }\n}"],"mappings":"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"}