{
  "version": 3,
  "sources": ["../src/index.ts", "../src/obj-format.ts", "../src/lib/parse-obj.ts", "../src/lib/parse-obj-meshes.ts", "../src/lib/get-obj-schema.ts", "../src/obj-loader.ts", "../src/obj-arrow-loader.ts", "../src/mtl-format.ts", "../src/lib/parse-mtl.ts", "../src/mtl-loader.ts"],
  "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n// OBJLoader\n\nexport {OBJFormat} from './obj-format';\nexport type {OBJLoaderOptions} from './obj-loader';\nexport {OBJWorkerLoader, OBJLoader} from './obj-loader';\nexport {OBJArrowLoader} from './obj-arrow-loader';\n\n// MTLLoader\n\nexport {MTLFormat} from './mtl-format';\nexport type {MTLLoaderOptions} from './mtl-loader';\nexport {MTLWorkerLoader, MTLLoader} from './mtl-loader';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Format} from '@loaders.gl/loader-utils';\n\n/**\n * The OBJ geometry format\n */\nexport const OBJFormat = {\n  name: 'OBJ',\n  id: 'obj',\n  module: 'obj',\n  extensions: ['obj'],\n  mimeTypes: ['text/plain']\n} as const satisfies Format;\n", "import type {Mesh, MeshAttributes} from '@loaders.gl/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/schema-utils';\nimport {parseOBJMeshes} from './parse-obj-meshes';\nimport {getOBJSchema} from './get-obj-schema';\n\nexport function parseOBJ(text: string, options?): Mesh {\n  const {meshes} = parseOBJMeshes(text);\n\n  // @ts-expect-error\n  const vertexCount = meshes.reduce((s, mesh) => s + mesh.header.vertexCount, 0);\n  // TODO - render objects separately\n  const attributes = mergeAttributes(meshes, vertexCount);\n\n  const header = {\n    vertexCount,\n    // @ts-ignore Need to export Attributes type\n    boundingBox: getMeshBoundingBox(attributes)\n  };\n\n  const schema = getOBJSchema(attributes, {\n    mode: 4,\n    boundingBox: header.boundingBox\n  });\n\n  return {\n    // Data return by this loader implementation\n    loaderData: {\n      header: {}\n    },\n\n    // Normalised data\n    schema,\n    header,\n    mode: 4, // TRIANGLES\n    topology: 'point-list',\n\n    attributes\n  };\n}\n\n// eslint-disable-next-line max-statements\nfunction mergeAttributes(meshes, vertexCount): MeshAttributes {\n  const positions = new Float32Array(vertexCount * 3);\n  let normals;\n  let colors;\n  let uvs;\n  let i = 0;\n\n  for (const mesh of meshes) {\n    const {POSITION, NORMAL, COLOR_0, TEXCOORD_0} = mesh.attributes;\n\n    positions.set(POSITION.value, i * 3);\n\n    if (NORMAL) {\n      normals = normals || new Float32Array(vertexCount * 3);\n      normals.set(NORMAL.value, i * 3);\n    }\n    if (COLOR_0) {\n      colors = colors || new Float32Array(vertexCount * 3);\n      colors.set(COLOR_0.value, i * 3);\n    }\n    if (TEXCOORD_0) {\n      uvs = uvs || new Float32Array(vertexCount * 2);\n      uvs.set(TEXCOORD_0.value, i * 2);\n    }\n\n    i += POSITION.value.length / 3;\n  }\n\n  const attributes: MeshAttributes = {};\n  attributes.POSITION = {value: positions, size: 3};\n\n  if (normals) {\n    attributes.NORMAL = {value: normals, size: 3};\n  }\n  if (colors) {\n    attributes.COLOR_0 = {value: colors, size: 3};\n  }\n  if (uvs) {\n    attributes.TEXCOORD_0 = {value: uvs, size: 2};\n  }\n\n  return attributes;\n}\n", "// OBJ Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author mrdoob / http://mrdoob.com/\n\n// @ts-nocheck\n\n// o object_name | g group_name\nconst OBJECT_RE = /^[og]\\s*(.+)?/;\n// mtllib file_reference\nconst MATERIAL_RE = /^mtllib /;\n// usemtl material_name\nconst MATERIAL_USE_RE = /^usemtl /;\n\nclass MeshMaterial {\n  constructor({index, name = '', mtllib, smooth, groupStart}) {\n    this.index = index;\n    this.name = name;\n    this.mtllib = mtllib;\n    this.smooth = smooth;\n    this.groupStart = groupStart;\n    this.groupEnd = -1;\n    this.groupCount = -1;\n    this.inherited = false;\n  }\n\n  clone(index = this.index) {\n    return new MeshMaterial({\n      index,\n      name: this.name,\n      mtllib: this.mtllib,\n      smooth: this.smooth,\n      groupStart: 0\n    });\n  }\n}\n\nclass MeshObject {\n  constructor(name = '') {\n    this.name = name;\n\n    this.geometry = {\n      vertices: [],\n      normals: [],\n      colors: [],\n      uvs: []\n    };\n\n    this.materials = [];\n    this.smooth = true;\n\n    this.fromDeclaration = null;\n  }\n\n  startMaterial(name, libraries) {\n    const previous = this._finalize(false);\n\n    // New usemtl declaration overwrites an inherited material, except if faces were declared\n    // after the material, then it must be preserved for proper MultiMaterial continuation.\n    if (previous && (previous.inherited || previous.groupCount <= 0)) {\n      this.materials.splice(previous.index, 1);\n    }\n\n    const material = new MeshMaterial({\n      index: this.materials.length,\n      name,\n      mtllib:\n        Array.isArray(libraries) && libraries.length > 0 ? libraries[libraries.length - 1] : '',\n      smooth: previous !== undefined ? previous.smooth : this.smooth,\n      groupStart: previous !== undefined ? previous.groupEnd : 0\n    });\n\n    this.materials.push(material);\n\n    return material;\n  }\n\n  currentMaterial() {\n    if (this.materials.length > 0) {\n      return this.materials[this.materials.length - 1];\n    }\n\n    return undefined;\n  }\n\n  _finalize(end) {\n    const lastMultiMaterial = this.currentMaterial();\n    if (lastMultiMaterial && lastMultiMaterial.groupEnd === -1) {\n      lastMultiMaterial.groupEnd = this.geometry.vertices.length / 3;\n      lastMultiMaterial.groupCount = lastMultiMaterial.groupEnd - lastMultiMaterial.groupStart;\n      lastMultiMaterial.inherited = false;\n    }\n\n    // Ignore objects tail materials if no face declarations followed them before a new o/g started.\n    if (end && this.materials.length > 1) {\n      for (let mi = this.materials.length - 1; mi >= 0; mi--) {\n        if (this.materials[mi].groupCount <= 0) {\n          this.materials.splice(mi, 1);\n        }\n      }\n    }\n\n    // Guarantee at least one empty material, this makes the creation later more straight forward.\n    if (end && this.materials.length === 0) {\n      this.materials.push({\n        name: '',\n        smooth: this.smooth\n      });\n    }\n\n    return lastMultiMaterial;\n  }\n}\n\nclass ParserState {\n  constructor() {\n    this.objects = [];\n    this.object = null;\n\n    this.vertices = [];\n    this.normals = [];\n    this.colors = [];\n    this.uvs = [];\n\n    this.materialLibraries = [];\n\n    this.startObject('', false);\n  }\n\n  startObject(name, fromDeclaration = true) {\n    // If the current object (initial from reset) is not from a g/o declaration in the parsed\n    // file. We need to use it for the first parsed g/o to keep things in sync.\n    if (this.object && !this.object.fromDeclaration) {\n      this.object.name = name;\n      this.object.fromDeclaration = fromDeclaration;\n      return;\n    }\n\n    const previousMaterial =\n      this.object && typeof this.object.currentMaterial === 'function'\n        ? this.object.currentMaterial()\n        : undefined;\n\n    if (this.object && typeof this.object._finalize === 'function') {\n      this.object._finalize(true);\n    }\n\n    this.object = new MeshObject(name);\n    this.object.fromDeclaration = fromDeclaration;\n\n    // Inherit previous objects material.\n    // Spec tells us that a declared material must be set to all objects until a new material is declared.\n    // If a usemtl declaration is encountered while this new object is being parsed, it will\n    // overwrite the inherited material. Exception being that there was already face declarations\n    // to the inherited material, then it will be preserved for proper MultiMaterial continuation.\n    if (previousMaterial && previousMaterial.name && typeof previousMaterial.clone === 'function') {\n      const declared = previousMaterial.clone(0);\n      declared.inherited = true;\n      this.object.materials.push(declared);\n    }\n\n    this.objects.push(this.object);\n  }\n\n  finalize() {\n    if (this.object && typeof this.object._finalize === 'function') {\n      this.object._finalize(true);\n    }\n  }\n\n  parseVertexIndex(value, len) {\n    const index = parseInt(value);\n    return (index >= 0 ? index - 1 : index + len / 3) * 3;\n  }\n\n  parseNormalIndex(value, len) {\n    const index = parseInt(value);\n    return (index >= 0 ? index - 1 : index + len / 3) * 3;\n  }\n\n  parseUVIndex(value, len) {\n    const index = parseInt(value);\n    return (index >= 0 ? index - 1 : index + len / 2) * 2;\n  }\n\n  addVertex(a, b, c) {\n    const src = this.vertices;\n    const dst = this.object.geometry.vertices;\n\n    dst.push(src[a + 0], src[a + 1], src[a + 2]);\n    dst.push(src[b + 0], src[b + 1], src[b + 2]);\n    dst.push(src[c + 0], src[c + 1], src[c + 2]);\n  }\n\n  addVertexPoint(a) {\n    const src = this.vertices;\n    const dst = this.object.geometry.vertices;\n\n    dst.push(src[a + 0], src[a + 1], src[a + 2]);\n  }\n\n  addVertexLine(a) {\n    const src = this.vertices;\n    const dst = this.object.geometry.vertices;\n\n    dst.push(src[a + 0], src[a + 1], src[a + 2]);\n  }\n\n  addNormal(a, b, c) {\n    const src = this.normals;\n    const dst = this.object.geometry.normals;\n\n    dst.push(src[a + 0], src[a + 1], src[a + 2]);\n    dst.push(src[b + 0], src[b + 1], src[b + 2]);\n    dst.push(src[c + 0], src[c + 1], src[c + 2]);\n  }\n\n  addColor(a, b, c) {\n    const src = this.colors;\n    const dst = this.object.geometry.colors;\n\n    dst.push(src[a + 0], src[a + 1], src[a + 2]);\n    dst.push(src[b + 0], src[b + 1], src[b + 2]);\n    dst.push(src[c + 0], src[c + 1], src[c + 2]);\n  }\n\n  addUV(a, b, c) {\n    const src = this.uvs;\n    const dst = this.object.geometry.uvs;\n\n    dst.push(src[a + 0], src[a + 1]);\n    dst.push(src[b + 0], src[b + 1]);\n    dst.push(src[c + 0], src[c + 1]);\n  }\n\n  addUVLine(a) {\n    const src = this.uvs;\n    const dst = this.object.geometry.uvs;\n\n    dst.push(src[a + 0], src[a + 1]);\n  }\n\n  // eslint-disable-next-line max-params\n  addFace(a, b, c, ua, ub, uc, na, nb, nc) {\n    const vLen = this.vertices.length;\n\n    let ia = this.parseVertexIndex(a, vLen);\n    let ib = this.parseVertexIndex(b, vLen);\n    let ic = this.parseVertexIndex(c, vLen);\n\n    this.addVertex(ia, ib, ic);\n\n    if (ua !== undefined && ua !== '') {\n      const uvLen = this.uvs.length;\n      ia = this.parseUVIndex(ua, uvLen);\n      ib = this.parseUVIndex(ub, uvLen);\n      ic = this.parseUVIndex(uc, uvLen);\n      this.addUV(ia, ib, ic);\n    }\n\n    if (na !== undefined && na !== '') {\n      // Normals are many times the same. If so, skip function call and parseInt.\n      const nLen = this.normals.length;\n      ia = this.parseNormalIndex(na, nLen);\n\n      ib = na === nb ? ia : this.parseNormalIndex(nb, nLen);\n      ic = na === nc ? ia : this.parseNormalIndex(nc, nLen);\n\n      this.addNormal(ia, ib, ic);\n    }\n\n    if (this.colors.length > 0) {\n      this.addColor(ia, ib, ic);\n    }\n  }\n\n  addPointGeometry(vertices) {\n    this.object.geometry.type = 'Points';\n\n    const vLen = this.vertices.length;\n\n    for (const vertex of vertices) {\n      this.addVertexPoint(this.parseVertexIndex(vertex, vLen));\n    }\n  }\n\n  addLineGeometry(vertices, uvs) {\n    this.object.geometry.type = 'Line';\n\n    const vLen = this.vertices.length;\n    const uvLen = this.uvs.length;\n\n    for (const vertex of vertices) {\n      this.addVertexLine(this.parseVertexIndex(vertex, vLen));\n    }\n\n    for (const uv of uvs) {\n      this.addUVLine(this.parseUVIndex(uv, uvLen));\n    }\n  }\n}\n\n// eslint-disable-next-line max-statements, complexity\nexport function parseOBJMeshes(text) {\n  const state = new ParserState();\n\n  if (text.indexOf('\\r\\n') !== -1) {\n    // This is faster than String.split with regex that splits on both\n    text = text.replace(/\\r\\n/g, '\\n');\n  }\n\n  if (text.indexOf('\\\\\\n') !== -1) {\n    // join lines separated by a line continuation character (\\)\n    text = text.replace(/\\\\\\n/g, '');\n  }\n\n  const lines = text.split('\\n');\n  let line = '';\n  let lineFirstChar = '';\n  let lineLength = 0;\n  let result = [];\n\n  // Faster to just trim left side of the line. Use if available.\n  const trimLeft = typeof ''.trimLeft === 'function';\n\n  /* eslint-disable no-continue, max-depth */\n  for (let i = 0, l = lines.length; i < l; i++) {\n    line = lines[i];\n    line = trimLeft ? line.trimLeft() : line.trim();\n    lineLength = line.length;\n\n    if (lineLength === 0) continue;\n\n    lineFirstChar = line.charAt(0);\n\n    // @todo invoke passed in handler if any\n    if (lineFirstChar === '#') continue;\n\n    if (lineFirstChar === 'v') {\n      const data = line.split(/\\s+/);\n\n      switch (data[0]) {\n        case 'v':\n          state.vertices.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));\n          if (data.length >= 7) {\n            state.colors.push(parseFloat(data[4]), parseFloat(data[5]), parseFloat(data[6]));\n          }\n          break;\n        case 'vn':\n          state.normals.push(parseFloat(data[1]), parseFloat(data[2]), parseFloat(data[3]));\n          break;\n        case 'vt':\n          state.uvs.push(parseFloat(data[1]), parseFloat(data[2]));\n          break;\n        default:\n      }\n    } else if (lineFirstChar === 'f') {\n      const lineData = line.substr(1).trim();\n      const vertexData = lineData.split(/\\s+/);\n      const faceVertices = [];\n\n      // Parse the face vertex data into an easy to work with format\n\n      for (let j = 0, jl = vertexData.length; j < jl; j++) {\n        const vertex = vertexData[j];\n\n        if (vertex.length > 0) {\n          const vertexParts = vertex.split('/');\n          faceVertices.push(vertexParts);\n        }\n      }\n\n      // Draw an edge between the first vertex and all subsequent vertices to form an n-gon\n\n      const v1 = faceVertices[0];\n\n      for (let j = 1, jl = faceVertices.length - 1; j < jl; j++) {\n        const v2 = faceVertices[j];\n        const v3 = faceVertices[j + 1];\n\n        state.addFace(v1[0], v2[0], v3[0], v1[1], v2[1], v3[1], v1[2], v2[2], v3[2]);\n      }\n    } else if (lineFirstChar === 'l') {\n      const lineParts = line.substring(1).trim().split(' ');\n      let lineVertices;\n      const lineUVs = [];\n\n      if (line.indexOf('/') === -1) {\n        lineVertices = lineParts;\n      } else {\n        lineVertices = [];\n        for (let li = 0, llen = lineParts.length; li < llen; li++) {\n          const parts = lineParts[li].split('/');\n\n          if (parts[0] !== '') lineVertices.push(parts[0]);\n          if (parts[1] !== '') lineUVs.push(parts[1]);\n        }\n      }\n      state.addLineGeometry(lineVertices, lineUVs);\n    } else if (lineFirstChar === 'p') {\n      const lineData = line.substr(1).trim();\n      const pointData = lineData.split(' ');\n\n      state.addPointGeometry(pointData);\n    } else if ((result = OBJECT_RE.exec(line)) !== null) {\n      // o object_name\n      // or\n      // g group_name\n\n      // WORKAROUND: https://bugs.chromium.org/p/v8/issues/detail?id=2869\n      // var name = result[ 0 ].substr( 1 ).trim();\n      const name = (' ' + result[0].substr(1).trim()).substr(1); // eslint-disable-line\n\n      state.startObject(name);\n    } else if (MATERIAL_USE_RE.test(line)) {\n      // material\n\n      state.object.startMaterial(line.substring(7).trim(), state.materialLibraries);\n    } else if (MATERIAL_RE.test(line)) {\n      // mtl file\n\n      state.materialLibraries.push(line.substring(7).trim());\n    } else if (lineFirstChar === 's') {\n      result = line.split(' ');\n\n      // smooth shading\n\n      // @todo Handle files that have varying smooth values for a set of faces inside one geometry,\n      // but does not define a usemtl for each face set.\n      // This should be detected and a dummy material created (later MultiMaterial and geometry groups).\n      // This requires some care to not create extra material on each smooth value for \"normal\" obj files.\n      // where explicit usemtl defines geometry groups.\n      // Example asset: examples/models/obj/cerberus/Cerberus.obj\n\n      /*\n       * http://paulbourke.net/dataformats/obj/\n       * or\n       * http://www.cs.utah.edu/~boulos/cs3505/obj_spec.pdf\n       *\n       * From chapter \"Grouping\" Syntax explanation \"s group_number\":\n       * \"group_number is the smoothing group number. To turn off smoothing groups, use a value of 0 or off.\n       * Polygonal elements use group numbers to put elements in different smoothing groups. For free-form\n       * surfaces, smoothing groups are either turned on or off; there is no difference between values greater\n       * than 0.\"\n       */\n      if (result.length > 1) {\n        const value = result[1].trim().toLowerCase();\n        state.object.smooth = value !== '0' && value !== 'off';\n      } else {\n        // ZBrush can produce \"s\" lines #11707\n        state.object.smooth = true;\n      }\n      const material = state.object.currentMaterial();\n      if (material) material.smooth = state.object.smooth;\n    } else {\n      // Handle null terminated files without exception\n      if (line === '\\0') continue;\n\n      throw new Error(`Unexpected line: \"${line}\"`);\n    }\n  }\n\n  state.finalize();\n\n  const meshes = [];\n  const materials = [];\n\n  for (const object of state.objects) {\n    const {geometry} = object;\n\n    // Skip o/g line declarations that did not follow with any faces\n    if (geometry.vertices.length === 0) continue;\n\n    const mesh = {\n      header: {\n        vertexCount: geometry.vertices.length / 3\n      },\n      attributes: {}\n    };\n\n    switch (geometry.type) {\n      case 'Points':\n        mesh.mode = 0; // GL.POINTS\n        break;\n      case 'Line':\n        mesh.mode = 1; // GL.LINES\n        break;\n      default:\n        mesh.mode = 4; // GL.TRIANGLES\n        break;\n    }\n\n    mesh.attributes.POSITION = {value: new Float32Array(geometry.vertices), size: 3};\n\n    if (geometry.normals.length > 0) {\n      mesh.attributes.NORMAL = {value: new Float32Array(geometry.normals), size: 3};\n    }\n\n    if (geometry.colors.length > 0) {\n      mesh.attributes.COLOR_0 = {value: new Float32Array(geometry.colors), size: 3};\n    }\n\n    if (geometry.uvs.length > 0) {\n      mesh.attributes.TEXCOORD_0 = {value: new Float32Array(geometry.uvs), size: 2};\n    }\n\n    // Create materials\n    mesh.materials = [];\n    for (const sourceMaterial of object.materials) {\n      // TODO - support full spec\n      const _material = {\n        name: sourceMaterial.name,\n        flatShading: !sourceMaterial.smooth\n      };\n      mesh.materials.push(_material);\n      materials.push(_material);\n    }\n\n    mesh.name = object.name;\n    meshes.push(mesh);\n  }\n\n  return {meshes, materials};\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Schema, SchemaMetadata, Field, MeshAttribute} from '@loaders.gl/schema';\nimport {getDataTypeFromArray} from '@loaders.gl/schema-utils';\n\n/** Get Mesh Schema */\nexport function getOBJSchema(\n  attributes: Record<string, MeshAttribute>,\n  metadata: Record<string, unknown> = {}\n): Schema {\n  const stringMetadata: SchemaMetadata = {};\n  for (const key in metadata) {\n    if (key !== 'value') {\n      stringMetadata[key] = JSON.stringify(metadata[key]);\n    }\n  }\n\n  const fields: Field[] = [];\n  for (const attributeName in attributes) {\n    const attribute = attributes[attributeName];\n    const field = getFieldFromAttribute(attributeName, attribute);\n    fields.push(field);\n  }\n\n  return {fields, metadata: stringMetadata};\n}\n\n/** Get a Field describing the column from an OBJ attribute */\nfunction getFieldFromAttribute(name: string, attribute: MeshAttribute): Field {\n  const metadata: Record<string, string> = {};\n  for (const key in attribute) {\n    if (key !== 'value') {\n      metadata[key] = JSON.stringify(attribute[key]);\n    }\n  }\n\n  let {type} = getDataTypeFromArray(attribute.value);\n  const isSingleValue = attribute.size === 1 || attribute.size === undefined;\n  if (!isSingleValue) {\n    type = {type: 'fixed-size-list', listSize: attribute.size, children: [{name: 'values', type}]};\n  }\n  return {name, type, nullable: false, metadata};\n}\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {Mesh} from '@loaders.gl/schema';\nimport {OBJFormat} from './obj-format';\nimport {parseOBJ} from './lib/parse-obj';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type OBJLoaderOptions = LoaderOptions & {\n  obj?: {\n    /** Override the URL to the worker bundle (by default loads from unpkg.com) */\n    workerUrl?: string;\n  };\n};\n\n/**\n * Worker loader for the OBJ geometry format\n */\nexport const OBJWorkerLoader = {\n  ...OBJFormat,\n\n  dataType: null as unknown as Mesh,\n  batchType: null as never,\n  version: VERSION,\n  worker: true,\n  testText: testOBJFile,\n  options: {\n    obj: {}\n  }\n} as const satisfies Loader<Mesh, never, OBJLoaderOptions>;\n\nfunction testOBJFile(text: string): boolean {\n  // TODO - There could be comment line first\n  return text[0] === 'v';\n}\n\n// OBJLoader\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJLoader = {\n  ...OBJWorkerLoader,\n  parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n    parseOBJ(new TextDecoder().decode(arrayBuffer), options),\n  parseTextSync: (text: string, options?: OBJLoaderOptions) => parseOBJ(text, options)\n} as const satisfies LoaderWithParser<Mesh, never, OBJLoaderOptions>;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {ArrowTable} from '@loaders.gl/schema';\n\nimport {OBJLoaderOptions, OBJWorkerLoader} from './obj-loader';\nimport {convertMeshToTable} from '@loaders.gl/schema-utils';\nimport {parseOBJ} from './lib/parse-obj';\n\n/**\n * Worker loader for OBJ - Point Cloud Data\n */\nexport const OBJArrowLoader = {\n  ...OBJWorkerLoader,\n  dataType: null as unknown as ArrowTable,\n  batchType: null as never,\n  worker: false,\n  parse: async (arrayBuffer: ArrayBuffer) => {\n    const text = new TextDecoder().decode(arrayBuffer);\n    const mesh = parseOBJ(text);\n    const arrowTable = convertMeshToTable(mesh, 'arrow-table');\n    return arrowTable;\n  }\n} as const satisfies LoaderWithParser<ArrowTable, never, OBJLoaderOptions>;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Format} from '@loaders.gl/loader-utils';\n\n/**\n * The MTL material format\n * A Wavefront .mtl file specifying materials\n */\nexport const MTLFormat = {\n  name: 'MTL',\n  id: 'mtl',\n  module: 'mtl',\n  extensions: ['mtl'],\n  mimeTypes: ['text/plain']\n} as const satisfies Format;\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Forked from THREE.js under MIT license\n// https://github.com/mrdoob/three.js/blob/master/examples/jsm/loaders/MTLLoader.js\n\n// import type {DiffuseMaterial} from '@loaders.gl/schema';\n\nexport type MTLMaterial = {\n  name: string;\n  ambientColor?: [number, number, number];\n  diffuseColor?: [number, number, number];\n  specularColor?: [number, number, number];\n  emissiveColor?: [number, number, number];\n  // specular?: number;\n  shininess?: number;\n  refraction?: number;\n  illumination?: number;\n  diffuseTextureUrl?: string;\n  emissiveTextureUrl?: string;\n  specularTextureUrl?: string;\n};\n\nconst DELIMITER_PATTERN = /\\s+/;\n\n/**\n * Set of options on how to construct materials\n * @param normalizeRGB: RGBs need to be normalized to 0-1 from 0-255 (Default: false, assumed to be already normalized)\n * @param ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's Default: false\n * @param baseUrl - Url relative to which textures are loaded\n */\nexport type ParseMTLOptions = {\n  normalizeRGB?: boolean;\n  ignoreZeroRGBs?: boolean;\n  baseUrl?: string;\n};\n\n/**\n * Parses a MTL file.\n * Parses a Wavefront .mtl file specifying materials\n * http://paulbourke.net/dataformats/mtl/\n * https://www.loc.gov/preservation/digital/formats/fdd/fdd000508.shtml\n *\n * @param  text - Content of MTL file\n */\n// eslint-disable-next-line complexity\nexport function parseMTL(text: string, options?: ParseMTLOptions): MTLMaterial[] {\n  // const materialsInfo: Record<string, MTLMaterial> = {};\n  const materials: MTLMaterial[] = [];\n\n  let currentMaterial: MTLMaterial = {name: 'placeholder'};\n\n  const lines = text.split('\\n');\n  for (let line of lines) {\n    line = line.trim();\n\n    if (line.length === 0 || line.charAt(0) === '#') {\n      // Blank line or comment ignore\n      continue; // eslint-disable-line no-continue\n    }\n\n    const pos = line.indexOf(' ');\n\n    let key = pos >= 0 ? line.substring(0, pos) : line;\n    key = key.toLowerCase();\n\n    let value = pos >= 0 ? line.substring(pos + 1) : '';\n    value = value.trim();\n\n    switch (key) {\n      case 'newmtl':\n        // New material\n        currentMaterial = {name: value};\n        // insert into map\n        materials.push(currentMaterial);\n        break;\n\n      case 'ka': // Ka\n        currentMaterial.ambientColor = parseColor(value);\n        break;\n\n      case 'kd':\n        // Kd: Diffuse color (color under white light) using RGB values\n        currentMaterial.diffuseColor = parseColor(value);\n        break;\n      case 'map_kd':\n        // Diffuse texture map\n        currentMaterial.diffuseTextureUrl = value;\n        //         setMapForType('map', value);\n        break;\n\n      case 'ks':\n        // Specular color (color when light is reflected from shiny surface) using RGB values\n        currentMaterial.specularColor = parseColor(value);\n        break;\n      case 'map_ks':\n        // Specular map\n        currentMaterial.specularTextureUrl = value;\n        // setMapForType('specularMap', value);\n        break;\n\n      case 'ke':\n        // Emissive using RGB values\n        currentMaterial.emissiveColor = parseColor(value);\n        break;\n      case 'map_ke':\n        // Emissive map\n        currentMaterial.emissiveTextureUrl = value;\n        // setMapForType('emissiveMap', value);\n        break;\n\n      case 'ns':\n        // Ns is material specular exponent (defines the focus of the specular highlight)\n        // A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.\n        currentMaterial.shininess = parseFloat(value);\n        break;\n      case 'map_ns':\n        // Ns is material specular exponent\n        // TODO?\n        // currentMaterial.shininessMap = parseFloat(value);\n        break;\n      case 'ni':\n        currentMaterial.refraction = parseFloat(value);\n        break;\n      case 'illum':\n        currentMaterial.illumination = parseFloat(value);\n        break;\n\n      default:\n        // log unknown message?\n        break;\n\n      /*\n      case 'norm':\n        setMapForType('normalMap', value);\n        break;\n\n      case 'map_bump':\n      case 'bump':\n        // Bump texture map\n        setMapForType('bumpMap', value);\n        break;\n\n      case 'd':\n        n = parseFloat(value);\n        if (n < 1) {\n          params.opacity = n;\n          params.transparent = true;\n        }\n        break;\n\n      case 'map_d':\n        // Alpha map\n        setMapForType('alphaMap', value);\n        params.transparent = true;\n        break;\n\n      case 'tr':\n        n = parseFloat(value);\n        if (this.options && this.options.invertTrProperty) n = 1 - n;\n        if (n > 0) {\n          params.opacity = 1 - n;\n          params.transparent = true;\n        }\n      */\n    }\n  }\n\n  return materials;\n}\n\nfunction parseColor(value: string, options?: ParseMTLOptions): [number, number, number] {\n  const rgb = value.split(DELIMITER_PATTERN, 3);\n  const color: [number, number, number] = [\n    parseFloat(rgb[0]),\n    parseFloat(rgb[1]),\n    parseFloat(rgb[2])\n  ];\n  // TODO auto detect big values?\n  // if (this.options && this.options.normalizeRGB) {\n  //   value = [ value[ 0 ] / 255, value[ 1 ] / 255, value[ 2 ] / 255 ];\n  // }\n\n  // if (this.options && this.options.ignoreZeroRGBs) {\n  //   if (value[ 0 ] === 0 && value[ 1 ] === 0 && value[ 2 ] === 0) {\n  //     // ignore\n  //     save = false;\n  //   }\n  // }\n  return color;\n}\n\n/* TODO parse url options\nfunction parseTexture(value, matParams) {\n  const texParams = {\n    scale: new Vector2(1, 1),\n    offset: new Vector2(0, 0)\n  };\n\n  const items = value.split(/\\s+/);\n  let pos;\n\n  pos = items.indexOf('-bm');\n  if (pos >= 0) {\n    matParams.bumpScale = parseFloat(items[ pos + 1 ]);\n    items.splice(pos, 2);\n  }\n\n  pos = items.indexOf('-s');\n  if (pos >= 0) {\n    texParams.scale.set(parseFloat(items[ pos + 1 ]), parseFloat(items[ pos + 2 ]));\n    items.splice(pos, 4); // we expect 3 parameters here!\n\n  }\n\n  pos = items.indexOf('-o');\n\n  if (pos >= 0) {\n    texParams.offset.set(parseFloat(items[ pos + 1 ]), parseFloat(items[ pos + 2 ]));\n    items.splice(pos, 4); // we expect 3 parameters here!\n  }\n\n  texParams.url = items.join(' ').trim();\n  return texParams;\n}\n\n *function resolveURL(baseUrl, url) {\n * baseUrl?: string;\n    // Absolute URL\n    if (/^https?:\\/\\//i.test(url)) return url;\n    return baseUrl + url;\n  }\n\n  function setMapForType(mapType, value) {\n    if (params[ mapType ]) return; // Keep the first encountered texture\n\n    const texParams = scope.getTextureParams(value, params);\n    const map = scope.loadTexture(resolveURL(scope.baseUrl, texParams.url));\n\n    map.repeat.copy(texParams.scale);\n    map.offset.copy(texParams.offset);\n\n    map.wrapS = scope.wrap;\n    map.wrapT = scope.wrap;\n\n    params[ mapType ] = map;\n  }\n*/\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {MTLMaterial, ParseMTLOptions} from './lib/parse-mtl';\nimport {parseMTL} from './lib/parse-mtl';\nimport {MTLFormat} from './mtl-format';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type MTLLoaderOptions = LoaderOptions & {\n  mtl?: ParseMTLOptions;\n};\n\n/**\n * Loader for the MTL material format\n * Parses a Wavefront .mtl file specifying materials\n */\nexport const MTLWorkerLoader = {\n  ...MTLFormat,\n\n  dataType: null as unknown as MTLMaterial[],\n  batchType: null as never,\n\n  version: VERSION,\n  worker: true,\n  testText: (text: string): boolean => text.includes('newmtl'),\n  options: {\n    mtl: {}\n  }\n} as const satisfies Loader<MTLMaterial[], never, LoaderOptions>;\n\n// MTLLoader\n\n/**\n * Loader for the MTL material format\n */\nexport const MTLLoader = {\n  ...MTLWorkerLoader,\n  parse: async (arrayBuffer: ArrayBuffer, options?: MTLLoaderOptions) =>\n    parseMTL(new TextDecoder().decode(arrayBuffer), options?.mtl),\n  parseTextSync: (text: string, options?: MTLLoaderOptions) => parseMTL(text, options?.mtl)\n} as const satisfies LoaderWithParser<MTLMaterial[], never, MTLLoaderOptions>;\n"],
  "mappings": "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",
  "names": ["import_schema_utils", "import_schema_utils", "VERSION"]
}
