@loaders.gl/tile-converter 4.0.0-alpha.12 → 4.0.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports._typecheckI3SAttributesWorker = exports.Tile3dAttributesWorker = void 0;
7
7
  exports.transform3DTilesAttributesOnWorker = transform3DTilesAttributesOnWorker;
8
8
  var _workerUtils = require("@loaders.gl/worker-utils");
9
- var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : 'latest';
9
+ var VERSION = typeof "4.0.0-alpha.13" !== 'undefined' ? "4.0.0-alpha.13" : 'latest';
10
10
  var Tile3dAttributesWorker = {
11
11
  id: '3d-tiles-attributes',
12
12
  name: '3DTiles Attributes Worker',
@@ -14,7 +14,7 @@ var _zip = require("@loaders.gl/zip");
14
14
  var _fileUtils = require("../lib/utils/file-utils");
15
15
  var _path = require("path");
16
16
  var _workerUtils = require("@loaders.gl/worker-utils");
17
- var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : 'beta';
17
+ var VERSION = typeof "4.0.0-alpha.13" !== 'undefined' ? "4.0.0-alpha.13" : 'beta';
18
18
  var PGM_LINK = 'https://raw.githubusercontent.com/visgl/deck.gl-data/master/egm/egm2008-5.zip';
19
19
  var DepsInstaller = function () {
20
20
  function DepsInstaller() {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports._typecheckI3SAttributesWorker = exports.I3SAttributesWorker = void 0;
7
7
  exports.transformI3SAttributesOnWorker = transformI3SAttributesOnWorker;
8
8
  var _workerUtils = require("@loaders.gl/worker-utils");
9
- var VERSION = typeof "4.0.0-alpha.12" !== 'undefined' ? "4.0.0-alpha.12" : 'latest';
9
+ var VERSION = typeof "4.0.0-alpha.13" !== 'undefined' ? "4.0.0-alpha.13" : 'latest';
10
10
  var I3SAttributesWorker = {
11
11
  id: 'i3s-attributes',
12
12
  name: 'I3S Attributes Worker',
@@ -1 +1 @@
1
- {"version":3,"file":"batch-ids-extensions.js","names":["EXT_MESH_FEATURES","EXT_FEATURE_METADATA","handleBatchIdsExtensions","attributes","primitive","images","extensions","_i","_Object$entries","Object","entries","length","_Object$entries$_i","_slicedToArray2","default","extensionName","extensionData","handleExtFeatureMetadataExtension","console","warn","extFeatureMetadata","_extFeatureMetadata$f","_featureIdAttribute$f","_featureIdAttribute$f2","_featureIdAttribute$f3","featureIdAttribute","featureIdAttributes","featureIds","attribute","batchIdsAttribute","value","hasOwnProperty","_attributes$POSITIONS","featuresCount","POSITIONS","generateImplicitFeatureIds","constant","divisor","featureIdTexture","featureIdTextures","_featureIdTexture$fea","_featureIdTexture$fea2","textureAttributeIndex","texture","texCoord","textCoordAttribute","concat","textureCoordinates","generateBatchIdsFromTexture","featureTexture","featureTextures","arguments","undefined","currentValue","devisorCounter","index","push","Array","fill","_featureIdTexture$fea3","_featureIdTexture$fea4","_featureIdTexture$fea5","CHANNELS_MAP","r","g","b","a","textureIndex","featureChannel","channels","image","batchIds","width","height","components","u","v","tx","Math","min","emod","ty","offset","batchId","Uint8Array","data","mimeType","n"],"sources":["../../../../src/i3s-converter/helpers/batch-ids-extensions.ts"],"sourcesContent":["import {GLTFAccessorPostprocessed, GLTFMeshPrimitivePostprocessed} from '@loaders.gl/gltf';\nimport type {NumericArray} from '@loaders.gl/loader-utils';\nimport type {\n GLTF_EXT_feature_metadata_attribute,\n GLTF_EXT_feature_metadata_primitive\n} from '@loaders.gl/gltf';\nimport {TypedArray} from '@math.gl/core';\nimport {TextureImageProperties} from '../../i3s-attributes-worker';\n\nconst EXT_MESH_FEATURES = 'EXT_mesh_features';\nconst EXT_FEATURE_METADATA = 'EXT_feature_metadata';\n\n/**\n * Getting batchIds from 3DTilesNext extensions.\n * @param attributes - gltf accessors\n * @param primitive - gltf primitive data\n * @param images - gltf texture images\n */\nexport function handleBatchIdsExtensions(\n attributes: {\n [key: string]: GLTFAccessorPostprocessed;\n },\n primitive: GLTFMeshPrimitivePostprocessed,\n images: (TextureImageProperties | null)[]\n): NumericArray {\n const extensions = primitive?.extensions;\n\n if (!extensions) {\n return [];\n }\n\n for (const [extensionName, extensionData] of Object.entries(extensions || {})) {\n switch (extensionName) {\n case EXT_FEATURE_METADATA:\n return handleExtFeatureMetadataExtension(\n attributes,\n extensionData as GLTF_EXT_feature_metadata_primitive,\n images\n );\n case EXT_MESH_FEATURES:\n console.warn('EXT_mesh_features extension is not supported yet');\n return [];\n default:\n return [];\n }\n }\n\n return [];\n}\n\n/**\n * Get batchIds from EXT_feature_metadata extension.\n * Docs - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata\n * @param attributes\n * @param extFeatureMetadata\n * @param textures\n */\nfunction handleExtFeatureMetadataExtension(\n attributes: {\n [key: string]: GLTFAccessorPostprocessed;\n },\n extFeatureMetadata: GLTF_EXT_feature_metadata_primitive,\n images: (TextureImageProperties | null)[]\n): NumericArray {\n // Take only first extension object to get batchIds attribute name.\n const featureIdAttribute = extFeatureMetadata?.featureIdAttributes?.[0];\n\n if (featureIdAttribute?.featureIds?.attribute) {\n const batchIdsAttribute = attributes[featureIdAttribute.featureIds.attribute];\n return batchIdsAttribute.value;\n }\n\n if (\n featureIdAttribute?.featureIds?.hasOwnProperty('constant') &&\n featureIdAttribute?.featureIds?.hasOwnProperty('divisor')\n ) {\n const featuresCount = attributes?.POSITIONS?.value.length / 3 || 0;\n return generateImplicitFeatureIds(\n featuresCount,\n featureIdAttribute.featureIds.constant,\n featureIdAttribute.featureIds.divisor\n );\n }\n\n // Take only first extension object to get batchIds attribute name.\n const featureIdTexture =\n extFeatureMetadata?.featureIdTextures && extFeatureMetadata?.featureIdTextures[0];\n\n if (featureIdTexture) {\n const textureAttributeIndex = featureIdTexture?.featureIds?.texture?.texCoord || 0;\n const textCoordAttribute = `TEXCOORD_${textureAttributeIndex}`;\n const textureCoordinates = attributes[textCoordAttribute].value;\n return generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images);\n }\n\n // Take only first extension texture to get batchIds from the root EXT_feature_metadata object.\n const featureTexture =\n extFeatureMetadata?.featureTextures && extFeatureMetadata?.featureTextures[0];\n\n if (featureTexture) {\n const batchIdsAttribute = attributes[featureTexture];\n return batchIdsAttribute.value;\n }\n\n return [];\n}\n\n/**\n * Generates implicit feature ids\n * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#implicit-feature-ids\n * @param featuresCount\n * @param constant\n * @param devisor\n */\nfunction generateImplicitFeatureIds(\n featuresCount: number,\n constant: number = 0,\n divisor: number = 0\n): number[] {\n let featureIds: number[] = [];\n\n if (divisor > 0) {\n let currentValue = constant;\n let devisorCounter = divisor;\n\n for (let index = 0; index < featuresCount; index++) {\n featureIds.push(currentValue);\n\n devisorCounter -= 1;\n\n if (devisorCounter === 0) {\n currentValue++;\n devisorCounter = divisor;\n }\n }\n } else {\n featureIds = Array<number>(featuresCount).fill(constant, 0, featuresCount);\n }\n\n return featureIds;\n}\n\n/**\n * Get batchIds from texture.\n * @param primitive\n * @param featureIdTextures\n */\nfunction generateBatchIdsFromTexture(\n featureIdTexture: GLTF_EXT_feature_metadata_attribute,\n textureCoordinates: TypedArray,\n images: (TextureImageProperties | null)[]\n) {\n if (!images?.length) {\n return [];\n }\n\n const CHANNELS_MAP = {\n r: 0,\n g: 1,\n b: 2,\n a: 3\n };\n\n const textureIndex = featureIdTexture?.featureIds?.texture?.index;\n const featureChannel = featureIdTexture?.featureIds?.channels;\n\n if (!featureChannel || textureIndex === undefined) {\n return [];\n }\n\n const image = images[textureIndex];\n const batchIds: number[] = [];\n const channels = CHANNELS_MAP[featureChannel];\n\n if (image && image?.width && image?.height && image?.components) {\n for (let index = 0; index < textureCoordinates.length; index += 2) {\n const u = textureCoordinates[index];\n const v = textureCoordinates[index + 1];\n\n const tx = Math.min((emod(u) * image.width) | 0, image.width - 1);\n const ty = Math.min((emod(v) * image.height) | 0, image.height - 1);\n\n const offset = (ty * image.width + tx) * image.components + channels;\n const batchId = new Uint8Array(image.data)[offset];\n\n batchIds.push(batchId);\n }\n } else {\n console.warn(`Can't get batch Ids from ${image?.mimeType || ''} compressed texture`);\n }\n\n return batchIds;\n}\n\n/**\n * Handle UVs if they are out of range [0,1].\n * @param n\n * @param m\n */\nfunction emod(n: number): number {\n return ((n % 1) + 1) % 1;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"batch-ids-extensions.js","names":["EXT_MESH_FEATURES","EXT_FEATURE_METADATA","handleBatchIdsExtensions","attributes","primitive","images","extensions","_i","_Object$entries","Object","entries","length","_Object$entries$_i","_slicedToArray2","default","extensionName","extensionData","handleExtFeatureMetadataExtension","console","warn","extFeatureMetadata","_extFeatureMetadata$f","_featureIdAttribute$f","_featureIdAttribute$f2","_featureIdAttribute$f3","featureIdAttribute","featureIdAttributes","featureIds","attribute","batchIdsAttribute","value","hasOwnProperty","_attributes$POSITIONS","featuresCount","POSITIONS","generateImplicitFeatureIds","constant","divisor","featureIdTexture","featureIdTextures","_featureIdTexture$fea","_featureIdTexture$fea2","textureAttributeIndex","texture","texCoord","textCoordAttribute","concat","textureCoordinates","generateBatchIdsFromTexture","featureTexture","featureTextures","arguments","undefined","currentValue","devisorCounter","index","push","Array","fill","_featureIdTexture$fea3","_featureIdTexture$fea4","_featureIdTexture$fea5","CHANNELS_MAP","r","g","b","a","textureIndex","featureChannel","channels","image","batchIds","width","height","components","u","v","tx","Math","min","emod","ty","offset","batchId","Uint8Array","data","mimeType","n"],"sources":["../../../../src/i3s-converter/helpers/batch-ids-extensions.ts"],"sourcesContent":["import {GLTFAccessorPostprocessed, GLTFMeshPrimitivePostprocessed} from '@loaders.gl/gltf';\nimport type {NumericArray} from '@loaders.gl/loader-utils';\nimport type {\n GLTF_EXT_feature_metadata_FeatureIdTexture,\n GLTF_EXT_feature_metadata_Primitive\n} from '@loaders.gl/gltf';\nimport {TypedArray} from '@math.gl/core';\nimport {TextureImageProperties} from '../../i3s-attributes-worker';\n\nconst EXT_MESH_FEATURES = 'EXT_mesh_features';\nconst EXT_FEATURE_METADATA = 'EXT_feature_metadata';\n\n/**\n * Getting batchIds from 3DTilesNext extensions.\n * @param attributes - gltf accessors\n * @param primitive - gltf primitive data\n * @param images - gltf texture images\n */\nexport function handleBatchIdsExtensions(\n attributes: {\n [key: string]: GLTFAccessorPostprocessed;\n },\n primitive: GLTFMeshPrimitivePostprocessed,\n images: (TextureImageProperties | null)[]\n): NumericArray {\n const extensions = primitive?.extensions;\n\n if (!extensions) {\n return [];\n }\n\n for (const [extensionName, extensionData] of Object.entries(extensions || {})) {\n switch (extensionName) {\n case EXT_FEATURE_METADATA:\n return handleExtFeatureMetadataExtension(\n attributes,\n extensionData as GLTF_EXT_feature_metadata_Primitive,\n images\n );\n case EXT_MESH_FEATURES:\n console.warn('EXT_mesh_features extension is not supported yet');\n return [];\n default:\n return [];\n }\n }\n\n return [];\n}\n\n/**\n * Get batchIds from EXT_feature_metadata extension.\n * Docs - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata\n * @param attributes\n * @param extFeatureMetadata\n * @param textures\n */\nfunction handleExtFeatureMetadataExtension(\n attributes: {\n [key: string]: GLTFAccessorPostprocessed;\n },\n extFeatureMetadata: GLTF_EXT_feature_metadata_Primitive,\n images: (TextureImageProperties | null)[]\n): NumericArray {\n // Take only first extension object to get batchIds attribute name.\n const featureIdAttribute = extFeatureMetadata?.featureIdAttributes?.[0];\n\n if (featureIdAttribute?.featureIds?.attribute) {\n const batchIdsAttribute = attributes[featureIdAttribute.featureIds.attribute];\n return batchIdsAttribute.value;\n }\n\n if (\n featureIdAttribute?.featureIds?.hasOwnProperty('constant') &&\n featureIdAttribute?.featureIds?.hasOwnProperty('divisor')\n ) {\n const featuresCount = attributes?.POSITIONS?.value.length / 3 || 0;\n return generateImplicitFeatureIds(\n featuresCount,\n featureIdAttribute.featureIds.constant,\n featureIdAttribute.featureIds.divisor\n );\n }\n\n // Take only first extension object to get batchIds attribute name.\n const featureIdTexture =\n extFeatureMetadata?.featureIdTextures && extFeatureMetadata?.featureIdTextures[0];\n\n if (featureIdTexture) {\n const textureAttributeIndex = featureIdTexture?.featureIds?.texture?.texCoord || 0;\n const textCoordAttribute = `TEXCOORD_${textureAttributeIndex}`;\n const textureCoordinates = attributes[textCoordAttribute].value;\n return generateBatchIdsFromTexture(featureIdTexture, textureCoordinates, images);\n }\n\n // Take only first extension texture to get batchIds from the root EXT_feature_metadata object.\n const featureTexture =\n extFeatureMetadata?.featureTextures && extFeatureMetadata?.featureTextures[0];\n\n if (featureTexture) {\n const batchIdsAttribute = attributes[featureTexture];\n return batchIdsAttribute.value;\n }\n\n return [];\n}\n\n/**\n * Generates implicit feature ids\n * Spec - https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_feature_metadata#implicit-feature-ids\n * @param featuresCount\n * @param constant\n * @param devisor\n */\nfunction generateImplicitFeatureIds(\n featuresCount: number,\n constant: number = 0,\n divisor: number = 0\n): number[] {\n let featureIds: number[] = [];\n\n if (divisor > 0) {\n let currentValue = constant;\n let devisorCounter = divisor;\n\n for (let index = 0; index < featuresCount; index++) {\n featureIds.push(currentValue);\n\n devisorCounter -= 1;\n\n if (devisorCounter === 0) {\n currentValue++;\n devisorCounter = divisor;\n }\n }\n } else {\n featureIds = Array<number>(featuresCount).fill(constant, 0, featuresCount);\n }\n\n return featureIds;\n}\n\n/**\n * Get batchIds from texture.\n * @param primitive\n * @param featureIdTextures\n */\nfunction generateBatchIdsFromTexture(\n featureIdTexture: GLTF_EXT_feature_metadata_FeatureIdTexture,\n textureCoordinates: TypedArray,\n images: (TextureImageProperties | null)[]\n) {\n if (!images?.length) {\n return [];\n }\n\n const CHANNELS_MAP = {\n r: 0,\n g: 1,\n b: 2,\n a: 3\n };\n\n const textureIndex = featureIdTexture?.featureIds?.texture?.index;\n const featureChannel = featureIdTexture?.featureIds?.channels;\n\n if (!featureChannel || textureIndex === undefined) {\n return [];\n }\n\n const image = images[textureIndex];\n const batchIds: number[] = [];\n const channels = CHANNELS_MAP[featureChannel];\n\n if (image && image?.width && image?.height && image?.components) {\n for (let index = 0; index < textureCoordinates.length; index += 2) {\n const u = textureCoordinates[index];\n const v = textureCoordinates[index + 1];\n\n const tx = Math.min((emod(u) * image.width) | 0, image.width - 1);\n const ty = Math.min((emod(v) * image.height) | 0, image.height - 1);\n\n const offset = (ty * image.width + tx) * image.components + channels;\n const batchId = new Uint8Array(image.data)[offset];\n\n batchIds.push(batchId);\n }\n } else {\n console.warn(`Can't get batch Ids from ${image?.mimeType || ''} compressed texture`);\n }\n\n return batchIds;\n}\n\n/**\n * Handle UVs if they are out of range [0,1].\n * @param n\n * @param m\n */\nfunction emod(n: number): number {\n return ((n % 1) + 1) % 1;\n}\n"],"mappings":";;;;;;;;AASA,IAAMA,iBAAiB,GAAG,mBAAmB;AAC7C,IAAMC,oBAAoB,GAAG,sBAAsB;AAQ5C,SAASC,wBAAwBA,CACtCC,UAEC,EACDC,SAAyC,EACzCC,MAAyC,EAC3B;EACd,IAAMC,UAAU,GAAGF,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEE,UAAU;EAExC,IAAI,CAACA,UAAU,EAAE;IACf,OAAO,EAAE;EACX;EAEA,SAAAC,EAAA,MAAAC,eAAA,GAA6CC,MAAM,CAACC,OAAO,CAACJ,UAAU,IAAI,CAAC,CAAC,CAAC,EAAAC,EAAA,GAAAC,eAAA,CAAAG,MAAA,EAAAJ,EAAA,IAAE;IAA1E,IAAAK,kBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAN,eAAA,CAAAD,EAAA;MAAOQ,aAAa,GAAAH,kBAAA;MAAEI,aAAa,GAAAJ,kBAAA;IACtC,QAAQG,aAAa;MACnB,KAAKd,oBAAoB;QACvB,OAAOgB,iCAAiC,CACtCd,UAAU,EACVa,aAAa,EACbX,MACF,CAAC;MACH,KAAKL,iBAAiB;QACpBkB,OAAO,CAACC,IAAI,CAAC,kDAAkD,CAAC;QAChE,OAAO,EAAE;MACX;QACE,OAAO,EAAE;IACb;EACF;EAEA,OAAO,EAAE;AACX;AASA,SAASF,iCAAiCA,CACxCd,UAEC,EACDiB,kBAAuD,EACvDf,MAAyC,EAC3B;EAAA,IAAAgB,qBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EAEd,IAAMC,kBAAkB,GAAGL,kBAAkB,aAAlBA,kBAAkB,wBAAAC,qBAAA,GAAlBD,kBAAkB,CAAEM,mBAAmB,cAAAL,qBAAA,uBAAvCA,qBAAA,CAA0C,CAAC,CAAC;EAEvE,IAAII,kBAAkB,aAAlBA,kBAAkB,gBAAAH,qBAAA,GAAlBG,kBAAkB,CAAEE,UAAU,cAAAL,qBAAA,eAA9BA,qBAAA,CAAgCM,SAAS,EAAE;IAC7C,IAAMC,iBAAiB,GAAG1B,UAAU,CAACsB,kBAAkB,CAACE,UAAU,CAACC,SAAS,CAAC;IAC7E,OAAOC,iBAAiB,CAACC,KAAK;EAChC;EAEA,IACEL,kBAAkB,aAAlBA,kBAAkB,gBAAAF,sBAAA,GAAlBE,kBAAkB,CAAEE,UAAU,cAAAJ,sBAAA,eAA9BA,sBAAA,CAAgCQ,cAAc,CAAC,UAAU,CAAC,IAC1DN,kBAAkB,aAAlBA,kBAAkB,gBAAAD,sBAAA,GAAlBC,kBAAkB,CAAEE,UAAU,cAAAH,sBAAA,eAA9BA,sBAAA,CAAgCO,cAAc,CAAC,SAAS,CAAC,EACzD;IAAA,IAAAC,qBAAA;IACA,IAAMC,aAAa,GAAG,CAAA9B,UAAU,aAAVA,UAAU,wBAAA6B,qBAAA,GAAV7B,UAAU,CAAE+B,SAAS,cAAAF,qBAAA,uBAArBA,qBAAA,CAAuBF,KAAK,CAACnB,MAAM,IAAG,CAAC,IAAI,CAAC;IAClE,OAAOwB,0BAA0B,CAC/BF,aAAa,EACbR,kBAAkB,CAACE,UAAU,CAACS,QAAQ,EACtCX,kBAAkB,CAACE,UAAU,CAACU,OAChC,CAAC;EACH;EAGA,IAAMC,gBAAgB,GACpB,CAAAlB,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAEmB,iBAAiB,MAAInB,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAEmB,iBAAiB,CAAC,CAAC,CAAC;EAEnF,IAAID,gBAAgB,EAAE;IAAA,IAAAE,qBAAA,EAAAC,sBAAA;IACpB,IAAMC,qBAAqB,GAAG,CAAAJ,gBAAgB,aAAhBA,gBAAgB,wBAAAE,qBAAA,GAAhBF,gBAAgB,CAAEX,UAAU,cAAAa,qBAAA,wBAAAC,sBAAA,GAA5BD,qBAAA,CAA8BG,OAAO,cAAAF,sBAAA,uBAArCA,sBAAA,CAAuCG,QAAQ,KAAI,CAAC;IAClF,IAAMC,kBAAkB,eAAAC,MAAA,CAAeJ,qBAAqB,CAAE;IAC9D,IAAMK,kBAAkB,GAAG5C,UAAU,CAAC0C,kBAAkB,CAAC,CAACf,KAAK;IAC/D,OAAOkB,2BAA2B,CAACV,gBAAgB,EAAES,kBAAkB,EAAE1C,MAAM,CAAC;EAClF;EAGA,IAAM4C,cAAc,GAClB,CAAA7B,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE8B,eAAe,MAAI9B,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAE8B,eAAe,CAAC,CAAC,CAAC;EAE/E,IAAID,cAAc,EAAE;IAClB,IAAMpB,kBAAiB,GAAG1B,UAAU,CAAC8C,cAAc,CAAC;IACpD,OAAOpB,kBAAiB,CAACC,KAAK;EAChC;EAEA,OAAO,EAAE;AACX;AASA,SAASK,0BAA0BA,CACjCF,aAAqB,EAGX;EAAA,IAFVG,QAAgB,GAAAe,SAAA,CAAAxC,MAAA,QAAAwC,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC;EAAA,IACpBd,OAAe,GAAAc,SAAA,CAAAxC,MAAA,QAAAwC,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC;EAEnB,IAAIxB,UAAoB,GAAG,EAAE;EAE7B,IAAIU,OAAO,GAAG,CAAC,EAAE;IACf,IAAIgB,YAAY,GAAGjB,QAAQ;IAC3B,IAAIkB,cAAc,GAAGjB,OAAO;IAE5B,KAAK,IAAIkB,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGtB,aAAa,EAAEsB,KAAK,EAAE,EAAE;MAClD5B,UAAU,CAAC6B,IAAI,CAACH,YAAY,CAAC;MAE7BC,cAAc,IAAI,CAAC;MAEnB,IAAIA,cAAc,KAAK,CAAC,EAAE;QACxBD,YAAY,EAAE;QACdC,cAAc,GAAGjB,OAAO;MAC1B;IACF;EACF,CAAC,MAAM;IACLV,UAAU,GAAG8B,KAAK,CAASxB,aAAa,CAAC,CAACyB,IAAI,CAACtB,QAAQ,EAAE,CAAC,EAAEH,aAAa,CAAC;EAC5E;EAEA,OAAON,UAAU;AACnB;AAOA,SAASqB,2BAA2BA,CAClCV,gBAA4D,EAC5DS,kBAA8B,EAC9B1C,MAAyC,EACzC;EAAA,IAAAsD,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EACA,IAAI,EAACxD,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEM,MAAM,GAAE;IACnB,OAAO,EAAE;EACX;EAEA,IAAMmD,YAAY,GAAG;IACnBC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE,CAAC;IACJC,CAAC,EAAE;EACL,CAAC;EAED,IAAMC,YAAY,GAAG7B,gBAAgB,aAAhBA,gBAAgB,wBAAAqB,sBAAA,GAAhBrB,gBAAgB,CAAEX,UAAU,cAAAgC,sBAAA,wBAAAC,sBAAA,GAA5BD,sBAAA,CAA8BhB,OAAO,cAAAiB,sBAAA,uBAArCA,sBAAA,CAAuCL,KAAK;EACjE,IAAMa,cAAc,GAAG9B,gBAAgB,aAAhBA,gBAAgB,wBAAAuB,sBAAA,GAAhBvB,gBAAgB,CAAEX,UAAU,cAAAkC,sBAAA,uBAA5BA,sBAAA,CAA8BQ,QAAQ;EAE7D,IAAI,CAACD,cAAc,IAAID,YAAY,KAAKf,SAAS,EAAE;IACjD,OAAO,EAAE;EACX;EAEA,IAAMkB,KAAK,GAAGjE,MAAM,CAAC8D,YAAY,CAAC;EAClC,IAAMI,QAAkB,GAAG,EAAE;EAC7B,IAAMF,QAAQ,GAAGP,YAAY,CAACM,cAAc,CAAC;EAE7C,IAAIE,KAAK,IAAIA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEE,KAAK,IAAIF,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEG,MAAM,IAAIH,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEI,UAAU,EAAE;IAC/D,KAAK,IAAInB,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGR,kBAAkB,CAACpC,MAAM,EAAE4C,KAAK,IAAI,CAAC,EAAE;MACjE,IAAMoB,CAAC,GAAG5B,kBAAkB,CAACQ,KAAK,CAAC;MACnC,IAAMqB,CAAC,GAAG7B,kBAAkB,CAACQ,KAAK,GAAG,CAAC,CAAC;MAEvC,IAAMsB,EAAE,GAAGC,IAAI,CAACC,GAAG,CAAEC,IAAI,CAACL,CAAC,CAAC,GAAGL,KAAK,CAACE,KAAK,GAAI,CAAC,EAAEF,KAAK,CAACE,KAAK,GAAG,CAAC,CAAC;MACjE,IAAMS,EAAE,GAAGH,IAAI,CAACC,GAAG,CAAEC,IAAI,CAACJ,CAAC,CAAC,GAAGN,KAAK,CAACG,MAAM,GAAI,CAAC,EAAEH,KAAK,CAACG,MAAM,GAAG,CAAC,CAAC;MAEnE,IAAMS,MAAM,GAAG,CAACD,EAAE,GAAGX,KAAK,CAACE,KAAK,GAAGK,EAAE,IAAIP,KAAK,CAACI,UAAU,GAAGL,QAAQ;MACpE,IAAMc,OAAO,GAAG,IAAIC,UAAU,CAACd,KAAK,CAACe,IAAI,CAAC,CAACH,MAAM,CAAC;MAElDX,QAAQ,CAACf,IAAI,CAAC2B,OAAO,CAAC;IACxB;EACF,CAAC,MAAM;IACLjE,OAAO,CAACC,IAAI,6BAAA2B,MAAA,CAA6B,CAAAwB,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEgB,QAAQ,KAAI,EAAE,wBAAqB,CAAC;EACtF;EAEA,OAAOf,QAAQ;AACjB;AAOA,SAASS,IAAIA,CAACO,CAAS,EAAU;EAC/B,OAAO,CAAEA,CAAC,GAAG,CAAC,GAAI,CAAC,IAAI,CAAC;AAC1B"}
@@ -1155,6 +1155,12 @@ function getPropertyTableExtension(tileContent) {
1155
1155
  } finally {
1156
1156
  _iterator5.f();
1157
1157
  }
1158
+ if (!extensionName) {
1159
+ return {
1160
+ extensionName: null,
1161
+ extension: null
1162
+ };
1163
+ }
1158
1164
  var extension = tileContent === null || tileContent === void 0 ? void 0 : (_tileContent$gltf2 = tileContent.gltf) === null || _tileContent$gltf2 === void 0 ? void 0 : (_tileContent$gltf2$ex = _tileContent$gltf2.extensions) === null || _tileContent$gltf2$ex === void 0 ? void 0 : _tileContent$gltf2$ex[extensionName];
1159
1165
  return {
1160
1166
  extensionName: extensionName,