{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-pipes-and-filters/src/client/container-scoped-d3.js"],"names":["proceed","layer","cop","window","refineObject","d3","select","name","rest","ScopedD3","currentBody","withLayers","D3ScopedDocument","json","url","match","currentBaseURL","text","lively","components","prototypes","clear","getContentRoot","innerHTML","appendScript","scriptElement","src","setPath","appendHtml","content","updateCurrentBodyAndURLFrom","container","getURL","replace","beGlobal","document","querySelector","s","querySelectorAll","__proto__","toString"],"mappings":"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","file":"container-scoped-d3.js","sourcesContent":["/*\n * A COP Layer that adapts D3 and Lively Containers to display D3 examples inline\n *\n */\n\n/* globals d3,ScopedD3,D3ScopedDocument */\nimport {proceed, layer}  from \"src/client/ContextJS/src/contextjs.js\"\nimport * as cop  from \"src/client/ContextJS/src/contextjs.js\"\n\nlayer(window, \"ScopedD3\").refineObject(d3, {\n  select(name, ...rest) {\n    // console.log(\"select \" + name)\n    if (ScopedD3.currentBody && name == \"body\")\n      return proceed(ScopedD3.currentBody);\n    return cop.withLayers([D3ScopedDocument], () => proceed(name, ...rest))\n  },\n  json(url, ...rest) {\n    url = \"\" + url\n    // console.log(\"json url: \" + url)\n    if (!url.match(/^((https?:\\/\\/)|\\/)/)) {\n      url =  ScopedD3.currentBaseURL + \"/\" + url\n      // console.log(\"json adapt url: \" + url)\n    }\n    return proceed(url, ...rest)\n  },\n  text(url, ...rest) {\n    url = \"\" + url\n    // console.log(\"text url: \" + url)\n    if (!url.match(/^((https?:\\/\\/)|\\/)/)) {\n      url =  ScopedD3.currentBaseURL + \"/\" + url\n      // console.log(\"text adapt url: \" + url)\n    }\n    return proceed(url, ...rest)\n  }\n}).refineObject(lively.components.prototypes['lively-container'], {\n  clear() {\n    this.getContentRoot().innerHTML = null;\n    proceed()\n  },\n  appendScript(scriptElement) {\n    if (scriptElement.src && scriptElement.src.match(/d3\\.v3(\\.min)?\\.js/)) {\n      // console.log(\"ignore D3\")\n      return\n    }\n    if (scriptElement.src && scriptElement.src.match(/cola(\\.min)?\\.js/)) {\n      // console.log(\"ignore cola\")\n      return\n    }\n    return proceed(scriptElement)\n  },\n  setPath(...rest) {\n    ScopedD3.currentBody = null\n    return proceed(...rest)\n  },\n  appendHtml(content) {\n    // console.log(\"append html \" + this)\n    if (content.match(/<script src=\".*d3\\.v3(.min)?\\.js\".*>/)) {\n      ScopedD3.updateCurrentBodyAndURLFrom(this)\n      // console.log(\"SCOPE D3: \" +ScopedD3.currentBody)\n    }\n    return proceed(content)\n  },\n  getContentRoot() {\n    // console.log(\"get content root\")\n    if (ScopedD3.currentBody)\n      return ScopedD3.currentBody\n    else\n      return proceed()\n  }\n})\n\nScopedD3.updateCurrentBodyAndURLFrom = function (container) {\n  ScopedD3.currentBody = container.getContentRoot();\n  ScopedD3.currentBaseURL = (\"\"+ container.getURL()).replace(/[^/]*$/,\"\")\n}\n\nScopedD3.beGlobal()\n\nlayer(window, \"D3ScopedDocument\").refineObject(document, {\n  querySelector(s, ...rest) {\n    // console.log(\"query selector \" + s)\n    if (ScopedD3.currentBody)\n      return ScopedD3.currentBody.querySelector(s, ...rest)\n    return proceed(s, ...rest)\n  },\n  querySelectorAll(s, ...rest) {\n    // console.log(\"query selectorAll \" + s)\n    if (ScopedD3.currentBody)\n      return ScopedD3.currentBody.querySelectorAll(s, ...rest)\n    return proceed(s, ...rest)\n  }\n})\n\nlayer(window, \"PrettyPrint\").refineObject([].__proto__, {\n  toString() {\n    return \"[\" + proceed() + \"]\"\n  }\n})\n"]}