{"version":3,"sources":["jsdelivr-header.js","/npm/aframe-atlas-uvs-component@3.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,IAAI,IAAM,CACR,IAAI,MAAM,QACV,IAAI,MAAM,QACV,IAAI,MAAM,QACV,IAAI,MAAM,SA8EZ,SAAS,WAAY,EAAK,EAAQ,EAAW,GAC3C,MAAM,EAAc,EAAI,EAClB,EAAY,EAAI,EAWtB,OARA,IAAI,GAAG,IAAI,EAAc,EACd,EAAY,EAAM,GAC7B,IAAI,GAAG,IAAI,EAAc,EACd,EAAY,GACvB,IAAI,GAAG,IAAI,EAAc,EAAS,EACvB,EAAY,GACvB,IAAI,GAAG,IAAI,EAAc,EAAS,EACvB,EAAY,EAAM,GACtB,GACT,CAtFA,OAAO,kBAAkB,YAAa,CACpC,aAAc,CAAC,YAEf,OAAQ,CACN,aAAc,CAAC,KAAM,MAAO,QAAS,GACrC,UAAW,CAAC,KAAM,MAAO,QAAS,GAClC,OAAQ,CAAC,KAAM,MAAO,QAAS,GAC/B,IAAK,CAAC,KAAM,MAAO,QAAS,IAG9B,OAAQ,WACN,MAAM,EAAO,KAAK,KACZ,EAAM,WAAW,EAAK,IAAM,EAAG,EAAK,OAAS,EAAG,EAAK,UAAW,EAAK,cAErE,EAAW,KAAK,GAAG,YAAY,QAAQ,SAE7C,IAAI,EAAe,IAAI,aAAa,CAAC,EAAI,GAAG,EAAG,EAAI,GAAG,EAAG,EAAI,GAAG,EAAG,EAAI,GAAG,EAAG,EAAI,GAAG,EAAG,EAAI,GAAG,EAAG,EAAI,GAAG,EAAG,EAAI,GAAG,IAClH,EAAS,aAAa,KAAM,IAAI,MAAM,gBAAgB,EAAc,IACpE,EAAS,eAAgB,CAC3B,IAGF,OAAO,kBAAkB,wBAAyB,CAChD,OAAQ,CACN,SAAU,CAAC,QAAS,gBACpB,aAAc,CAAC,QAAS,MACxB,YAAa,CAAC,QAAS,MACvB,MAAO,CAAC,SAAS,GACjB,WAAY,CAAC,QAAS,GACtB,QAAS,CAAC,QAAS,IAGrB,UAAU,EAEV,KAAM,WACJ,MAAM,EAAS,KAAK,OAAS,SAAS,cAAc,UACpD,EAAO,GAAK,KAAK,KAAK,SACtB,EAAO,OAAS,KAAK,KAAK,aAC1B,EAAO,MAAQ,KAAK,KAAK,YACzB,KAAK,IAAM,EAAO,WAAW,MAC7B,SAAS,KAAK,YAAY,GAEtB,KAAK,KAAK,QACZ,EAAO,MAAM,KAAO,EACpB,EAAO,MAAM,IAAM,EACnB,EAAO,MAAM,SAAW,QACxB,EAAO,MAAM,OAAS,WAE1B,EAEA,YAAa,SAAU,EAAO,EAAK,EAAQ,EAAO,GAChD,MAAM,EAAS,KAAK,OACd,EAAO,KAAK,KAEb,EAAM,WACT,EAAM,OAAS,KAAQ,KAAK,YAAY,EAAO,EAAK,EAAO,GAG7D,MAAM,EAAa,GAAW,EAAO,OAAS,EAAK,QAC7C,EAAY,GAAU,EAAO,MAAQ,EAAK,WAMhD,OAHA,KAAK,IAAI,UAAU,EAAO,EAAY,EAAK,EAAY,EAAQ,EAAW,GAGnE,WAAW,EAAK,EAAQ,EAAK,QAAS,EAAK,WACpD,IAqBF,OAAO,QAAQ,WAAa","file":"/npm/aframe-atlas-uvs-component@3.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/aframe-atlas-uvs-component@3.0.0/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","// For aux use.\r\nvar uvs = [\r\n  new THREE.Vector2(),\r\n  new THREE.Vector2(),\r\n  new THREE.Vector2(),\r\n  new THREE.Vector2()\r\n];\r\n\r\n/**\r\n * 1-indexed.\r\n */\r\nAFRAME.registerComponent('atlas-uvs', {\r\n  dependencies: ['geometry'],\r\n\r\n  schema: {\r\n    totalColumns: {type: 'int', default: 1},\r\n    totalRows: {type: 'int', default: 1},\r\n    column: {type: 'int', default: 1},\r\n    row: {type: 'int', default: 1}\r\n  },\r\n\r\n  update: function () {\r\n    const data = this.data;\r\n    const uvs = getGridUvs(data.row - 1, data.column - 1, data.totalRows, data.totalColumns);\r\n\r\n    const geometry = this.el.getObject3D('mesh').geometry;\r\n\r\n    var float32Array = new Float32Array([uvs[0].x, uvs[0].y, uvs[3].x, uvs[3].y, uvs[1].x, uvs[1].y, uvs[2].x, uvs[2].y]);\r\n    geometry.setAttribute('uv', new THREE.BufferAttribute(float32Array, 2));\r\n    geometry.uvsNeedUpdate = true;\r\n  }\r\n});\r\n\r\nAFRAME.registerComponent('dynamic-texture-atlas', {\r\n  schema: {\r\n    canvasId: {default: 'dynamicAtlas'},\r\n    canvasHeight: {default: 1024},\r\n    canvasWidth: {default: 1024},\r\n    debug: {default: false},\r\n    numColumns: {default: 8},\r\n    numRows: {default: 8}\r\n  },\r\n\r\n  multiple: true,\r\n\r\n  init: function () {\r\n    const canvas = this.canvas = document.createElement('canvas');\r\n    canvas.id = this.data.canvasId;\r\n    canvas.height = this.data.canvasHeight;\r\n    canvas.width = this.data.canvasWidth;\r\n    this.ctx = canvas.getContext('2d');\r\n    document.body.appendChild(canvas);\r\n\r\n    if (this.data.debug) {\r\n      canvas.style.left = 0;\r\n      canvas.style.top = 0;\r\n      canvas.style.position = 'fixed';\r\n      canvas.style.zIndex = 9999999999;\r\n    }\r\n  },\r\n\r\n  drawTexture: function (image, row, column, width, height) {\r\n    const canvas = this.canvas;\r\n    const data = this.data;\r\n\r\n    if (!image.complete) {\r\n      image.onload = () => { this.drawTexture(image, row, column); }\r\n    }\r\n\r\n    const gridHeight = height || (canvas.height / data.numRows);\r\n    const gridWidth = width || (canvas.width / data.numColumns);\r\n\r\n    // image, dx, dy, dwidth, dheight\r\n    this.ctx.drawImage(image, gridWidth * row, gridWidth * column, gridWidth, gridHeight);\r\n\r\n    // Return UVs.\r\n    return getGridUvs(row, column, data.numRows, data.numColumns);\r\n  }\r\n});\r\n\r\n/**\r\n * Return UVs for an texture within an atlas, given the row and column info.\r\n */\r\nfunction getGridUvs (row, column, totalRows, totalColumns) {\r\n  const columnWidth = 1 / totalColumns;\r\n  const rowHeight = 1 / totalRows;\r\n\r\n  // create a Map called `uvs` to hold the 4 UV pairs\r\n  uvs[0].set(columnWidth * column,\r\n             rowHeight * row + rowHeight);\r\n  uvs[1].set(columnWidth * column,\r\n             rowHeight * row);\r\n  uvs[2].set(columnWidth * column + columnWidth,\r\n             rowHeight * row);\r\n  uvs[3].set(columnWidth * column + columnWidth,\r\n             rowHeight * row + rowHeight);\r\n  return uvs;\r\n}\r\nmodule.exports.getGridUvs = getGridUvs;\r\n"]}