@loaders.gl/i3s 3.1.0-alpha.5 → 3.1.0-beta.7

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.
Files changed (94) hide show
  1. package/dist/bundle.d.ts +1 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +10364 -0
  4. package/dist/es5/i3s-attribute-loader.js +1 -1
  5. package/dist/es5/i3s-attribute-loader.js.map +1 -1
  6. package/dist/es5/i3s-building-scene-layer-loader.js +1 -1
  7. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -1
  8. package/dist/es5/i3s-content-loader.js +1 -1
  9. package/dist/es5/i3s-content-loader.js.map +1 -1
  10. package/dist/es5/i3s-loader.js +1 -1
  11. package/dist/es5/i3s-loader.js.map +1 -1
  12. package/dist/es5/i3s-node-page-loader.js +1 -1
  13. package/dist/es5/i3s-node-page-loader.js.map +1 -1
  14. package/dist/es5/lib/parsers/constants.js +61 -25
  15. package/dist/es5/lib/parsers/constants.js.map +1 -1
  16. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +42 -36
  17. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  18. package/dist/es5/lib/utils/url-utils.js.map +1 -1
  19. package/dist/es5/types.js +19 -0
  20. package/dist/es5/types.js.map +1 -1
  21. package/dist/esm/i3s-attribute-loader.js +1 -1
  22. package/dist/esm/i3s-attribute-loader.js.map +1 -1
  23. package/dist/esm/i3s-building-scene-layer-loader.js +1 -1
  24. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -1
  25. package/dist/esm/i3s-content-loader.js +1 -1
  26. package/dist/esm/i3s-content-loader.js.map +1 -1
  27. package/dist/esm/i3s-loader.js +1 -1
  28. package/dist/esm/i3s-loader.js.map +1 -1
  29. package/dist/esm/i3s-node-page-loader.js +1 -1
  30. package/dist/esm/i3s-node-page-loader.js.map +1 -1
  31. package/dist/esm/lib/parsers/constants.js +54 -22
  32. package/dist/esm/lib/parsers/constants.js.map +1 -1
  33. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +41 -37
  34. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  35. package/dist/esm/lib/utils/url-utils.js.map +1 -1
  36. package/dist/esm/types.js +13 -1
  37. package/dist/esm/types.js.map +1 -1
  38. package/dist/i3s-attribute-loader.d.ts +1 -0
  39. package/dist/i3s-attribute-loader.d.ts.map +1 -0
  40. package/dist/i3s-attribute-loader.js +177 -0
  41. package/dist/i3s-building-scene-layer-loader.d.ts +1 -0
  42. package/dist/i3s-building-scene-layer-loader.d.ts.map +1 -0
  43. package/dist/i3s-building-scene-layer-loader.js +26 -0
  44. package/dist/i3s-content-loader.d.ts +1 -0
  45. package/dist/i3s-content-loader.d.ts.map +1 -0
  46. package/dist/i3s-content-loader.js +28 -0
  47. package/dist/i3s-content-worker.js +7657 -2
  48. package/dist/i3s-loader.d.ts +1 -0
  49. package/dist/i3s-loader.d.ts.map +1 -0
  50. package/dist/i3s-loader.js +100 -0
  51. package/dist/i3s-node-page-loader.d.ts +1 -0
  52. package/dist/i3s-node-page-loader.d.ts.map +1 -0
  53. package/dist/i3s-node-page-loader.js +26 -0
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +14 -0
  57. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +1 -0
  58. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -0
  59. package/dist/lib/helpers/i3s-nodepages-tiles.js +231 -0
  60. package/dist/lib/parsers/constants.d.ts +34 -27
  61. package/dist/lib/parsers/constants.d.ts.map +1 -0
  62. package/dist/lib/parsers/constants.js +107 -0
  63. package/dist/lib/parsers/parse-i3s-attribute.d.ts +2 -1
  64. package/dist/lib/parsers/parse-i3s-attribute.d.ts.map +1 -0
  65. package/dist/lib/parsers/parse-i3s-attribute.js +98 -0
  66. package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts +1 -0
  67. package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts.map +1 -0
  68. package/dist/lib/parsers/parse-i3s-building-scene-layer.js +46 -0
  69. package/dist/lib/parsers/parse-i3s-tile-content.d.ts +2 -1
  70. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -0
  71. package/dist/lib/parsers/parse-i3s-tile-content.js +508 -0
  72. package/dist/lib/parsers/parse-i3s.d.ts +1 -0
  73. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -0
  74. package/dist/lib/parsers/parse-i3s.js +84 -0
  75. package/dist/lib/utils/convert-i3s-obb-to-mbs.d.ts +1 -0
  76. package/dist/lib/utils/convert-i3s-obb-to-mbs.d.ts.map +1 -0
  77. package/dist/lib/utils/convert-i3s-obb-to-mbs.js +20 -0
  78. package/dist/lib/utils/url-utils.d.ts +2 -1
  79. package/dist/lib/utils/url-utils.d.ts.map +1 -0
  80. package/dist/lib/utils/url-utils.js +44 -0
  81. package/dist/types.d.ts +98 -13
  82. package/dist/types.d.ts.map +1 -0
  83. package/dist/types.js +15 -0
  84. package/dist/workers/i3s-content-worker.d.ts +1 -0
  85. package/dist/workers/i3s-content-worker.d.ts.map +1 -0
  86. package/dist/workers/i3s-content-worker.js +5 -0
  87. package/package.json +11 -12
  88. package/src/lib/parsers/constants.ts +69 -36
  89. package/src/lib/parsers/parse-i3s-tile-content.ts +110 -85
  90. package/src/lib/utils/url-utils.ts +1 -1
  91. package/src/types.ts +153 -22
  92. package/dist/dist.min.js +0 -2
  93. package/dist/dist.min.js.map +0 -1
  94. package/dist/i3s-content-worker.js.map +0 -1
@@ -12,7 +12,7 @@ var _parseI3sAttribute = require("./lib/parsers/parse-i3s-attribute");
12
12
 
13
13
  var _urlUtils = require("./lib/utils/url-utils");
14
14
 
15
- const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'latest';
15
+ const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'latest';
16
16
  const EMPTY_VALUE = '';
17
17
  const REJECTED_STATUS = 'rejected';
18
18
  const I3SAttributeLoader = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-attribute-loader.ts"],"names":["VERSION","EMPTY_VALUE","REJECTED_STATUS","I3SAttributeLoader","name","id","module","version","mimeTypes","parse","extensions","options","binary","data","loadFeatureAttributes","tile","featureId","attributeStorageInfo","attributeUrls","tilesetFields","getAttributesData","attributes","attributeLoadPromises","index","length","url","i3s","token","attributeName","attributeType","getAttributeValueType","loadOptions","promise","push","Promise","allSettled","error","generateAttributesByFeatureId","tileset","header","fields","attribute","hasOwnProperty","attributeValues","valueType","getFeatureIdsAttributeName","objectIdsAttribute","find","includes","objectIdsAttributeName","objectIds","value","attributeIndex","indexOf","getFeatureAttributesByIndex","featureIdIndex","attributesObject","codedValues","getAttributeCodedValues","getAttributeByIndexAndAttributeName","formatAttributeValue","attributeField","field","alias","domain","attributesName","attributeObject","status","String","replace","trim","codeValue","codedValue","code","Number"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load} from '@loaders.gl/core';\nimport {parseI3STileAttribute} from './lib/parsers/parse-i3s-attribute';\nimport {getUrlWithToken} from './lib/utils/url-utils';\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';\nconst EMPTY_VALUE = '';\nconst REJECTED_STATUS = 'rejected';\n/**\n * Loader for I3S attributes\n */\nexport const I3SAttributeLoader: LoaderWithParser = {\n name: 'I3S Attribute',\n id: 'i3s-attribute',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/binary'],\n parse,\n extensions: ['bin'],\n options: {},\n binary: true\n};\n\nasync function parse(data, options) {\n data = parseI3STileAttribute(data, options);\n return data;\n}\n\n/**\n * Load attributes based on feature id\n * @param {Object} tile\n * @param {number} featureId\n * @param {Object} options\n * @returns {Promise}\n */\n// eslint-disable-next-line complexity\nexport async function loadFeatureAttributes(tile, featureId, options = {}) {\n const {attributeStorageInfo, attributeUrls, tilesetFields} = getAttributesData(tile);\n\n if (!attributeStorageInfo || !attributeUrls || !featureId) {\n return null;\n }\n\n let attributes: object[] = [];\n const attributeLoadPromises: Promise<object>[] = [];\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n // @ts-ignore\n const url = getUrlWithToken(attributeUrls[index], options.i3s?.token);\n const attributeName = attributeStorageInfo[index].name;\n const attributeType = getAttributeValueType(attributeStorageInfo[index]);\n const loadOptions = {...options, attributeName, attributeType};\n const promise = load(url, I3SAttributeLoader, loadOptions);\n\n attributeLoadPromises.push(promise);\n }\n try {\n attributes = await Promise.allSettled(attributeLoadPromises);\n } catch (error) {\n // do nothing\n }\n\n if (!attributes.length) {\n return null;\n }\n\n return generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields);\n}\n\n/**\n * Gets attributes data from tile.\n * @param tile \n * @returns \n */\nfunction getAttributesData(tile) {\n const attributeStorageInfo = tile.tileset?.tileset?.attributeStorageInfo;\n const attributeUrls = tile.header?.attributeUrls;\n const tilesetFields = tile.tileset?.tileset?.fields || [];\n\n return {attributeStorageInfo, attributeUrls, tilesetFields};\n}\n\n/**\n * Get attribute value type based on property names\n * @param {Object} attribute\n * @returns {String}\n */\nfunction getAttributeValueType(attribute) {\n if (attribute.hasOwnProperty('objectIds')) {\n return 'Oid32';\n } else if (attribute.hasOwnProperty('attributeValues')) {\n return attribute.attributeValues.valueType;\n }\n return '';\n}\n\n/**\n * Find in attributeStorageInfo attribute name responsible for feature ids list.\n * @param attributeStorageInfo \n * @returns Feature ids attribute name\n */\nfunction getFeatureIdsAttributeName(attributeStorageInfo) {\n const objectIdsAttribute = attributeStorageInfo.find(attribute => attribute.name.includes('OBJECTID'));\n\n return objectIdsAttribute?.name;\n}\n\n/**\n * Generates mapping featureId to feature attributes\n * @param {Array} attributes\n * @param {Object} attributeStorageInfo\n * @param {number} featureId\n * @returns {Object}\n */\nfunction generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields) {\n const objectIdsAttributeName = getFeatureIdsAttributeName(attributeStorageInfo);\n const objectIds = attributes.find((attribute) => attribute.value[objectIdsAttributeName]);\n\n if (!objectIds) {\n return null;\n }\n\n const attributeIndex = objectIds.value[objectIdsAttributeName].indexOf(featureId);\n\n if (attributeIndex < 0) {\n return null;\n }\n\n return getFeatureAttributesByIndex(attributes, attributeIndex, attributeStorageInfo, tilesetFields);\n}\n\n/**\n * Generates attribute object for feature mapping by feature id\n * @param {Array} attributes\n * @param {Number} featureIdIndex\n * @param {Object} attributeStorageInfo\n * @returns {Object}\n */\nfunction getFeatureAttributesByIndex(attributes, featureIdIndex, attributeStorageInfo, tilesetFields) {\n const attributesObject = {};\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n const attributeName = attributeStorageInfo[index].name;\n const codedValues = getAttributeCodedValues(attributeName, tilesetFields);\n const attribute = getAttributeByIndexAndAttributeName(attributes, index, attributeName);\n attributesObject[attributeName] = formatAttributeValue(attribute, featureIdIndex, codedValues);\n }\n\n return attributesObject;\n}\n\n/**\n * Get coded values list from tileset.\n * @param attributeName \n * @param tilesetFields \n */\nfunction getAttributeCodedValues(attributeName, tilesetFields) {\n const attributeField = tilesetFields\n .find(field => field.name === attributeName || field.alias === attributeName);\n\n return attributeField?.domain?.codedValues || [];\n}\n\n/**\n * Return attribute value if it presents in atrributes list\n * @param {array} attributes\n * @param {number} index\n * @param {string} attributesName\n */\nfunction getAttributeByIndexAndAttributeName(attributes, index, attributesName) {\n const attributeObject = attributes[index];\n\n if (attributeObject.status === REJECTED_STATUS) {\n return null;\n }\n\n return attributeObject.value[attributesName];\n}\n\n/**\n * Do formatting of attribute values or return empty string.\n * @param {Array} attribute\n * @param {Number} featureIdIndex\n * @returns {String}\n */\nfunction formatAttributeValue(attribute, featureIdIndex, codedValues) {\n let value = EMPTY_VALUE;\n\n if (attribute && (featureIdIndex in attribute)) {\n // eslint-disable-next-line no-control-regex\n value = String(attribute[featureIdIndex]).replace(/\\u0000|NaN/g, '').trim();\n }\n\n // Check if coded values are existed. If so we use them.\n if (codedValues.length) {\n const codeValue = codedValues.find(codedValue => codedValue.code === Number(value));\n value = codeValue?.name || EMPTY_VALUE;\n }\n\n return value;\n}\n"],"file":"i3s-attribute-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-attribute-loader.ts"],"names":["VERSION","EMPTY_VALUE","REJECTED_STATUS","I3SAttributeLoader","name","id","module","version","mimeTypes","parse","extensions","options","binary","data","loadFeatureAttributes","tile","featureId","attributeStorageInfo","attributeUrls","tilesetFields","getAttributesData","attributes","attributeLoadPromises","index","length","url","i3s","token","attributeName","attributeType","getAttributeValueType","loadOptions","promise","push","Promise","allSettled","error","generateAttributesByFeatureId","tileset","header","fields","attribute","hasOwnProperty","attributeValues","valueType","getFeatureIdsAttributeName","objectIdsAttribute","find","includes","objectIdsAttributeName","objectIds","value","attributeIndex","indexOf","getFeatureAttributesByIndex","featureIdIndex","attributesObject","codedValues","getAttributeCodedValues","getAttributeByIndexAndAttributeName","formatAttributeValue","attributeField","field","alias","domain","attributesName","attributeObject","status","String","replace","trim","codeValue","codedValue","code","Number"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load} from '@loaders.gl/core';\nimport {parseI3STileAttribute} from './lib/parsers/parse-i3s-attribute';\nimport {getUrlWithToken} from './lib/utils/url-utils';\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';\nconst EMPTY_VALUE = '';\nconst REJECTED_STATUS = 'rejected';\n/**\n * Loader for I3S attributes\n */\nexport const I3SAttributeLoader: LoaderWithParser = {\n name: 'I3S Attribute',\n id: 'i3s-attribute',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/binary'],\n parse,\n extensions: ['bin'],\n options: {},\n binary: true\n};\n\nasync function parse(data, options) {\n data = parseI3STileAttribute(data, options);\n return data;\n}\n\n/**\n * Load attributes based on feature id\n * @param {Object} tile\n * @param {number} featureId\n * @param {Object} options\n * @returns {Promise}\n */\n// eslint-disable-next-line complexity\nexport async function loadFeatureAttributes(tile, featureId, options = {}) {\n const {attributeStorageInfo, attributeUrls, tilesetFields} = getAttributesData(tile);\n\n if (!attributeStorageInfo || !attributeUrls || !featureId) {\n return null;\n }\n\n let attributes: object[] = [];\n const attributeLoadPromises: Promise<object>[] = [];\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n // @ts-ignore\n const url = getUrlWithToken(attributeUrls[index], options.i3s?.token);\n const attributeName = attributeStorageInfo[index].name;\n const attributeType = getAttributeValueType(attributeStorageInfo[index]);\n const loadOptions = {...options, attributeName, attributeType};\n const promise = load(url, I3SAttributeLoader, loadOptions);\n\n attributeLoadPromises.push(promise);\n }\n try {\n attributes = await Promise.allSettled(attributeLoadPromises);\n } catch (error) {\n // do nothing\n }\n\n if (!attributes.length) {\n return null;\n }\n\n return generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields);\n}\n\n/**\n * Gets attributes data from tile.\n * @param tile \n * @returns \n */\nfunction getAttributesData(tile) {\n const attributeStorageInfo = tile.tileset?.tileset?.attributeStorageInfo;\n const attributeUrls = tile.header?.attributeUrls;\n const tilesetFields = tile.tileset?.tileset?.fields || [];\n\n return {attributeStorageInfo, attributeUrls, tilesetFields};\n}\n\n/**\n * Get attribute value type based on property names\n * @param {Object} attribute\n * @returns {String}\n */\nfunction getAttributeValueType(attribute) {\n if (attribute.hasOwnProperty('objectIds')) {\n return 'Oid32';\n } else if (attribute.hasOwnProperty('attributeValues')) {\n return attribute.attributeValues.valueType;\n }\n return '';\n}\n\n/**\n * Find in attributeStorageInfo attribute name responsible for feature ids list.\n * @param attributeStorageInfo \n * @returns Feature ids attribute name\n */\nfunction getFeatureIdsAttributeName(attributeStorageInfo) {\n const objectIdsAttribute = attributeStorageInfo.find(attribute => attribute.name.includes('OBJECTID'));\n\n return objectIdsAttribute?.name;\n}\n\n/**\n * Generates mapping featureId to feature attributes\n * @param {Array} attributes\n * @param {Object} attributeStorageInfo\n * @param {number} featureId\n * @returns {Object}\n */\nfunction generateAttributesByFeatureId(attributes, attributeStorageInfo, featureId, tilesetFields) {\n const objectIdsAttributeName = getFeatureIdsAttributeName(attributeStorageInfo);\n const objectIds = attributes.find((attribute) => attribute.value[objectIdsAttributeName]);\n\n if (!objectIds) {\n return null;\n }\n\n const attributeIndex = objectIds.value[objectIdsAttributeName].indexOf(featureId);\n\n if (attributeIndex < 0) {\n return null;\n }\n\n return getFeatureAttributesByIndex(attributes, attributeIndex, attributeStorageInfo, tilesetFields);\n}\n\n/**\n * Generates attribute object for feature mapping by feature id\n * @param {Array} attributes\n * @param {Number} featureIdIndex\n * @param {Object} attributeStorageInfo\n * @returns {Object}\n */\nfunction getFeatureAttributesByIndex(attributes, featureIdIndex, attributeStorageInfo, tilesetFields) {\n const attributesObject = {};\n\n for (let index = 0; index < attributeStorageInfo.length; index++) {\n const attributeName = attributeStorageInfo[index].name;\n const codedValues = getAttributeCodedValues(attributeName, tilesetFields);\n const attribute = getAttributeByIndexAndAttributeName(attributes, index, attributeName);\n attributesObject[attributeName] = formatAttributeValue(attribute, featureIdIndex, codedValues);\n }\n\n return attributesObject;\n}\n\n/**\n * Get coded values list from tileset.\n * @param attributeName \n * @param tilesetFields \n */\nfunction getAttributeCodedValues(attributeName, tilesetFields) {\n const attributeField = tilesetFields\n .find(field => field.name === attributeName || field.alias === attributeName);\n\n return attributeField?.domain?.codedValues || [];\n}\n\n/**\n * Return attribute value if it presents in atrributes list\n * @param {array} attributes\n * @param {number} index\n * @param {string} attributesName\n */\nfunction getAttributeByIndexAndAttributeName(attributes, index, attributesName) {\n const attributeObject = attributes[index];\n\n if (attributeObject.status === REJECTED_STATUS) {\n return null;\n }\n\n return attributeObject.value[attributesName];\n}\n\n/**\n * Do formatting of attribute values or return empty string.\n * @param {Array} attribute\n * @param {Number} featureIdIndex\n * @returns {String}\n */\nfunction formatAttributeValue(attribute, featureIdIndex, codedValues) {\n let value = EMPTY_VALUE;\n\n if (attribute && (featureIdIndex in attribute)) {\n // eslint-disable-next-line no-control-regex\n value = String(attribute[featureIdIndex]).replace(/\\u0000|NaN/g, '').trim();\n }\n\n // Check if coded values are existed. If so we use them.\n if (codedValues.length) {\n const codeValue = codedValues.find(codedValue => codedValue.code === Number(value));\n value = codeValue?.name || EMPTY_VALUE;\n }\n\n return value;\n}\n"],"file":"i3s-attribute-loader.js"}
@@ -7,7 +7,7 @@ exports.I3SBuildingSceneLayerLoader = void 0;
7
7
 
8
8
  var _parseI3sBuildingSceneLayer = require("./lib/parsers/parse-i3s-building-scene-layer");
9
9
 
10
- const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'beta';
10
+ const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'beta';
11
11
  const I3SBuildingSceneLayerLoader = {
12
12
  name: 'I3S Building Scene Layer',
13
13
  id: 'i3s-building-scene-layer',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-building-scene-layer-loader.ts"],"names":["VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error"],"mappings":";;;;;;;AAGA;;AAKA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAIO,MAAMC,2BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,0BADqD;AAE3DC,EAAAA,EAAE,EAAE,0BAFuD;AAG3DC,EAAAA,MAAM,EAAE,KAHmD;AAI3DC,EAAAA,OAAO,EAAEL,OAJkD;AAK3DM,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALgD;AAM3DC,EAAAA,KAN2D;AAO3DC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP+C;AAQ3DC,EAAAA,OAAO,EAAE;AARkD,CAAtD;;;AAWP,eAAeF,KAAf,CACEG,IADF,EAEED,OAFF,EAGEE,OAHF,EAIsC;AACpC,MAAI,EAACA,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEC,GAAV,CAAJ,EAAmB;AACjB,UAAM,IAAIC,KAAJ,CAAU,qBAAV,CAAN;AACD;;AAED,SAAO,yDAAwBH,IAAxB,EAA8BC,OAAO,CAACC,GAAtC,CAAP;AACD","sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {BuildingSceneLayerTileset} from './types';\n\nimport {parseBuildingSceneLayer} from './lib/parsers/parse-i3s-building-scene-layer';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Building Scene Layer\n */\nexport const I3SBuildingSceneLayerLoader: LoaderWithParser = {\n name: 'I3S Building Scene Layer',\n id: 'i3s-building-scene-layer',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(\n data: ArrayBuffer,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<BuildingSceneLayerTileset> {\n if (!context?.url) {\n throw new Error('Url is not provided');\n }\n\n return parseBuildingSceneLayer(data, context.url);\n}\n"],"file":"i3s-building-scene-layer-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-building-scene-layer-loader.ts"],"names":["VERSION","I3SBuildingSceneLayerLoader","name","id","module","version","mimeTypes","parse","extensions","options","data","context","url","Error"],"mappings":";;;;;;;AAGA;;AAKA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,MAAnE;AAIO,MAAMC,2BAA6C,GAAG;AAC3DC,EAAAA,IAAI,EAAE,0BADqD;AAE3DC,EAAAA,EAAE,EAAE,0BAFuD;AAG3DC,EAAAA,MAAM,EAAE,KAHmD;AAI3DC,EAAAA,OAAO,EAAEL,OAJkD;AAK3DM,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALgD;AAM3DC,EAAAA,KAN2D;AAO3DC,EAAAA,UAAU,EAAE,CAAC,MAAD,CAP+C;AAQ3DC,EAAAA,OAAO,EAAE;AARkD,CAAtD;;;AAWP,eAAeF,KAAf,CACEG,IADF,EAEED,OAFF,EAGEE,OAHF,EAIsC;AACpC,MAAI,EAACA,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEC,GAAV,CAAJ,EAAmB;AACjB,UAAM,IAAIC,KAAJ,CAAU,qBAAV,CAAN;AACD;;AAED,SAAO,yDAAwBH,IAAxB,EAA8BC,OAAO,CAACC,GAAtC,CAAP;AACD","sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport type {BuildingSceneLayerTileset} from './types';\n\nimport {parseBuildingSceneLayer} from './lib/parsers/parse-i3s-building-scene-layer';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Building Scene Layer\n */\nexport const I3SBuildingSceneLayerLoader: LoaderWithParser = {\n name: 'I3S Building Scene Layer',\n id: 'i3s-building-scene-layer',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(\n data: ArrayBuffer,\n options?: LoaderOptions,\n context?: LoaderContext\n): Promise<BuildingSceneLayerTileset> {\n if (!context?.url) {\n throw new Error('Url is not provided');\n }\n\n return parseBuildingSceneLayer(data, context.url);\n}\n"],"file":"i3s-building-scene-layer-loader.js"}
@@ -7,7 +7,7 @@ exports.I3SContentLoader = void 0;
7
7
 
8
8
  var _parseI3sTileContent = require("./lib/parsers/parse-i3s-tile-content");
9
9
 
10
- const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'beta';
10
+ const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'beta';
11
11
  const I3SContentLoader = {
12
12
  name: 'I3S Content (Indexed Scene Layers)',
13
13
  id: 'i3s-content',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-content-loader.ts"],"names":["VERSION","I3SContentLoader","name","id","module","worker","version","mimeTypes","parse","extensions","options","data","context","tile","tileset","i3s","content"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,MAAnE;AAIO,MAAMC,gBAAkC,GAAG;AAChDC,EAAAA,IAAI,EAAE,oCAD0C;AAEhDC,EAAAA,EAAE,EAAE,aAF4C;AAGhDC,EAAAA,MAAM,EAAE,KAHwC;AAIhDC,EAAAA,MAAM,EAAE,IAJwC;AAKhDC,EAAAA,OAAO,EAAEN,OALuC;AAMhDO,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANqC;AAOhDC,EAAAA,KAPgD;AAQhDC,EAAAA,UAAU,EAAE,CAAC,KAAD,CARoC;AAShDC,EAAAA,OAAO,EAAE;AACP,mBAAe;AADR;AATuC,CAA3C;;;AAcP,eAAeF,KAAf,CAAqBG,IAArB,EAA2BD,OAA3B,EAAoDE,OAApD,EAA6E;AAC3E,QAAM;AAACC,IAAAA,IAAD;AAAOC,IAAAA;AAAP,MAAkB,CAAAJ,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEK,GAAT,KAAgB,EAAxC;AACA,QAAM,8CAAoBJ,IAApB,EAA0BE,IAA1B,EAAgCC,OAAhC,EAAyCJ,OAAzC,EAAkDE,OAAlD,CAAN;AACA,SAAOC,IAAI,CAACG,OAAZ;AACD","sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {parseI3STileContent} from './lib/parsers/parse-i3s-tile-content';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SContentLoader: LoaderWithParser = {\n name: 'I3S Content (Indexed Scene Layers)',\n id: 'i3s-content',\n module: 'i3s',\n worker: true,\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse,\n extensions: ['bin'],\n options: {\n 'i3s-content': {}\n }\n};\n\nasync function parse(data, options?: LoaderOptions, context?: LoaderContext) {\n const {tile, tileset} = options?.i3s || {};\n await parseI3STileContent(data, tile, tileset, options, context);\n return tile.content;\n}\n"],"file":"i3s-content-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-content-loader.ts"],"names":["VERSION","I3SContentLoader","name","id","module","worker","version","mimeTypes","parse","extensions","options","data","context","tile","tileset","i3s","content"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,MAAnE;AAIO,MAAMC,gBAAkC,GAAG;AAChDC,EAAAA,IAAI,EAAE,oCAD0C;AAEhDC,EAAAA,EAAE,EAAE,aAF4C;AAGhDC,EAAAA,MAAM,EAAE,KAHwC;AAIhDC,EAAAA,MAAM,EAAE,IAJwC;AAKhDC,EAAAA,OAAO,EAAEN,OALuC;AAMhDO,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANqC;AAOhDC,EAAAA,KAPgD;AAQhDC,EAAAA,UAAU,EAAE,CAAC,KAAD,CARoC;AAShDC,EAAAA,OAAO,EAAE;AACP,mBAAe;AADR;AATuC,CAA3C;;;AAcP,eAAeF,KAAf,CAAqBG,IAArB,EAA2BD,OAA3B,EAAoDE,OAApD,EAA6E;AAC3E,QAAM;AAACC,IAAAA,IAAD;AAAOC,IAAAA;AAAP,MAAkB,CAAAJ,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAEK,GAAT,KAAgB,EAAxC;AACA,QAAM,8CAAoBJ,IAApB,EAA0BE,IAA1B,EAAgCC,OAAhC,EAAyCJ,OAAzC,EAAkDE,OAAlD,CAAN;AACA,SAAOC,IAAI,CAACG,OAAZ;AACD","sourcesContent":["import type {LoaderWithParser, LoaderOptions, LoaderContext} from '@loaders.gl/loader-utils';\nimport {parseI3STileContent} from './lib/parsers/parse-i3s-tile-content';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\n\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'beta';\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SContentLoader: LoaderWithParser = {\n name: 'I3S Content (Indexed Scene Layers)',\n id: 'i3s-content',\n module: 'i3s',\n worker: true,\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse,\n extensions: ['bin'],\n options: {\n 'i3s-content': {}\n }\n};\n\nasync function parse(data, options?: LoaderOptions, context?: LoaderContext) {\n const {tile, tileset} = options?.i3s || {};\n await parseI3STileContent(data, tile, tileset, options, context);\n return tile.content;\n}\n"],"file":"i3s-content-loader.js"}
@@ -13,7 +13,7 @@ var _parseI3s = require("./lib/parsers/parse-i3s");
13
13
 
14
14
  var _constants = require("./lib/parsers/constants");
15
15
 
16
- const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'latest';
16
+ const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'latest';
17
17
  const TILESET_REGEX = /layers\/[0-9]+$/;
18
18
  const TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
19
19
  const SLPK_HEX = '504b0304';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-loader.ts"],"names":["VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","I3SLoader","name","id","module","version","mimeTypes","parse","parseI3S","extensions","options","i3s","loadContent","token","isTileset","isTileHeader","tile","tileset","useDracoGeometry","useCompressedTextures","decodeTextures","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","contentUrl","parseTileContent","arrayBuffer","I3SContentLoader","tilesetJson","JSON","TextDecoder","decode","loader","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load, parse} from '@loaders.gl/core';\nimport {I3SContentLoader} from './i3s-content-loader';\nimport {normalizeTileData, normalizeTilesetData} from './lib/parsers/parse-i3s';\nimport {COORDINATE_SYSTEM} from './lib/parsers/constants';\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\nconst TILESET_REGEX = /layers\\/[0-9]+$/;\nconst TILE_HEADER_REGEX = /nodes\\/([0-9-]+|root)$/;\nconst SLPK_HEX = '504b0304';\n\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SLoader: LoaderWithParser = {\n name: 'I3S (Indexed Scene Layers)',\n id: 'i3s',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseI3S,\n extensions: ['bin'],\n options: {\n i3s: {\n loadContent: true,\n token: null,\n isTileset: 'auto',\n isTileHeader: 'auto',\n tile: null,\n tileset: null,\n useDracoGeometry: true,\n useCompressedTextures: true,\n decodeTextures: true,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS\n }\n }\n};\n\nasync function parseI3S(data, options, context) {\n const url = context.url;\n options.i3s = options.i3s || {};\n const magicNumber = getMagicNumber(data);\n\n // check if file is slpk\n if (magicNumber === SLPK_HEX) {\n throw new Error('Files with .slpk extention currently are not supported by I3SLoader');\n }\n\n // auto detect file type based on url\n let isTileset;\n if (options.i3s.isTileset === 'auto') {\n isTileset = TILESET_REGEX.test(url);\n } else {\n isTileset = options.i3s.isTileset;\n }\n\n let isTileHeader;\n if (options.isTileHeader === 'auto') {\n isTileHeader = TILE_HEADER_REGEX.test(url);\n } else {\n isTileHeader = options.i3s.isTileHeader;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else if (isTileHeader) {\n data = await parseTile(data, options, context);\n if (options.i3s.loadContent) {\n options.i3s.tile = data;\n await load(data.contentUrl, I3SLoader, options);\n }\n } else {\n data = await parseTileContent(data, options);\n }\n\n return data;\n}\n\nasync function parseTileContent(arrayBuffer, options) {\n return await parse(arrayBuffer, I3SContentLoader, options);\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = I3SLoader;\n await normalizeTilesetData(tilesetJson, options, context);\n\n return tilesetJson;\n}\n\nasync function parseTile(data, options, context) {\n data = JSON.parse(new TextDecoder().decode(data));\n return normalizeTileData(data, options, context);\n}\n\nfunction getMagicNumber(data) {\n if (data instanceof ArrayBuffer) {\n // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system\n return [...new Uint8Array(data, 0, 4)]\n .map((value) => value.toString(16).padStart(2, '0'))\n .join('');\n }\n return null;\n}\n"],"file":"i3s-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-loader.ts"],"names":["VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","I3SLoader","name","id","module","version","mimeTypes","parse","parseI3S","extensions","options","i3s","loadContent","token","isTileset","isTileHeader","tile","tileset","useDracoGeometry","useCompressedTextures","decodeTextures","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","contentUrl","parseTileContent","arrayBuffer","I3SContentLoader","tilesetJson","JSON","TextDecoder","decode","loader","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load, parse} from '@loaders.gl/core';\nimport {I3SContentLoader} from './i3s-content-loader';\nimport {normalizeTileData, normalizeTilesetData} from './lib/parsers/parse-i3s';\nimport {COORDINATE_SYSTEM} from './lib/parsers/constants';\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\nconst TILESET_REGEX = /layers\\/[0-9]+$/;\nconst TILE_HEADER_REGEX = /nodes\\/([0-9-]+|root)$/;\nconst SLPK_HEX = '504b0304';\n\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SLoader: LoaderWithParser = {\n name: 'I3S (Indexed Scene Layers)',\n id: 'i3s',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseI3S,\n extensions: ['bin'],\n options: {\n i3s: {\n loadContent: true,\n token: null,\n isTileset: 'auto',\n isTileHeader: 'auto',\n tile: null,\n tileset: null,\n useDracoGeometry: true,\n useCompressedTextures: true,\n decodeTextures: true,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS\n }\n }\n};\n\nasync function parseI3S(data, options, context) {\n const url = context.url;\n options.i3s = options.i3s || {};\n const magicNumber = getMagicNumber(data);\n\n // check if file is slpk\n if (magicNumber === SLPK_HEX) {\n throw new Error('Files with .slpk extention currently are not supported by I3SLoader');\n }\n\n // auto detect file type based on url\n let isTileset;\n if (options.i3s.isTileset === 'auto') {\n isTileset = TILESET_REGEX.test(url);\n } else {\n isTileset = options.i3s.isTileset;\n }\n\n let isTileHeader;\n if (options.isTileHeader === 'auto') {\n isTileHeader = TILE_HEADER_REGEX.test(url);\n } else {\n isTileHeader = options.i3s.isTileHeader;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else if (isTileHeader) {\n data = await parseTile(data, options, context);\n if (options.i3s.loadContent) {\n options.i3s.tile = data;\n await load(data.contentUrl, I3SLoader, options);\n }\n } else {\n data = await parseTileContent(data, options);\n }\n\n return data;\n}\n\nasync function parseTileContent(arrayBuffer, options) {\n return await parse(arrayBuffer, I3SContentLoader, options);\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = I3SLoader;\n await normalizeTilesetData(tilesetJson, options, context);\n\n return tilesetJson;\n}\n\nasync function parseTile(data, options, context) {\n data = JSON.parse(new TextDecoder().decode(data));\n return normalizeTileData(data, options, context);\n}\n\nfunction getMagicNumber(data) {\n if (data instanceof ArrayBuffer) {\n // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system\n return [...new Uint8Array(data, 0, 4)]\n .map((value) => value.toString(16).padStart(2, '0'))\n .join('');\n }\n return null;\n}\n"],"file":"i3s-loader.js"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.I3SNodePageLoader = void 0;
7
- const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'latest';
7
+ const VERSION = typeof "3.1.0-beta.7" !== 'undefined' ? "3.1.0-beta.7" : 'latest';
8
8
 
9
9
  async function parseNodePage(data) {
10
10
  return JSON.parse(new TextDecoder().decode(data));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i3s-node-page-loader.ts"],"names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"mappings":";;;;;;AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;;AAEA,eAAeC,aAAf,CAA6BC,IAA7B,EAAmC;AACjC,SAAOC,IAAI,CAACC,KAAL,CAAW,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBJ,IAAzB,CAAX,CAAP;AACD;;AAKM,MAAMK,iBAAmC,GAAG;AACjDC,EAAAA,IAAI,EAAE,eAD2C;AAEjDC,EAAAA,EAAE,EAAE,eAF6C;AAGjDC,EAAAA,MAAM,EAAE,KAHyC;AAIjDC,EAAAA,OAAO,EAAEX,OAJwC;AAKjDY,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALsC;AAMjDR,EAAAA,KANiD;AAOjDS,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPqC;AAQjDC,EAAAA,OAAO,EAAE;AARwC,CAA5C;;;AAWP,eAAeV,KAAf,CAAqBF,IAArB,EAA2B;AACzBA,EAAAA,IAAI,GAAGD,aAAa,CAACC,IAAD,CAApB;AACA,SAAOA,IAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\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\nasync function parseNodePage(data) {\n return JSON.parse(new TextDecoder().decode(data));\n}\n\n/**\n * Loader for I3S node pages\n */\nexport const I3SNodePageLoader: LoaderWithParser = {\n name: 'I3S Node Page',\n id: 'i3s-node-page',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(data) {\n data = parseNodePage(data);\n return data;\n}\n"],"file":"i3s-node-page-loader.js"}
1
+ {"version":3,"sources":["../../src/i3s-node-page-loader.ts"],"names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"mappings":";;;;;;AAIA,MAAMA,OAAO,GAAG,0BAAuB,WAAvB,oBAAmD,QAAnE;;AAEA,eAAeC,aAAf,CAA6BC,IAA7B,EAAmC;AACjC,SAAOC,IAAI,CAACC,KAAL,CAAW,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBJ,IAAzB,CAAX,CAAP;AACD;;AAKM,MAAMK,iBAAmC,GAAG;AACjDC,EAAAA,IAAI,EAAE,eAD2C;AAEjDC,EAAAA,EAAE,EAAE,eAF6C;AAGjDC,EAAAA,MAAM,EAAE,KAHyC;AAIjDC,EAAAA,OAAO,EAAEX,OAJwC;AAKjDY,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALsC;AAMjDR,EAAAA,KANiD;AAOjDS,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPqC;AAQjDC,EAAAA,OAAO,EAAE;AARwC,CAA5C;;;AAWP,eAAeV,KAAf,CAAqBF,IAArB,EAA2B;AACzBA,EAAAA,IAAI,GAAGD,aAAa,CAACC,IAAD,CAApB;AACA,SAAOA,IAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\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\nasync function parseNodePage(data) {\n return JSON.parse(new TextDecoder().decode(data));\n}\n\n/**\n * Loader for I3S node pages\n */\nexport const I3SNodePageLoader: LoaderWithParser = {\n name: 'I3S Node Page',\n id: 'i3s-node-page',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(data) {\n data = parseNodePage(data);\n return data;\n}\n"],"file":"i3s-node-page-loader.js"}
@@ -5,18 +5,36 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.COORDINATE_SYSTEM = exports.INT_16_ATTRIBUTE_TYPE = exports.FLOAT_64_TYPE = exports.OBJECT_ID_ATTRIBUTE_TYPE = exports.STRING_ATTRIBUTE_TYPE = exports.SIZEOF = exports.I3S_NAMED_HEADER_ATTRIBUTES = exports.I3S_NAMED_GEOMETRY_ATTRIBUTES = exports.I3S_NAMED_VERTEX_ATTRIBUTES = exports.GL_TYPE_MAP = exports.TYPE_ARRAY_MAP = void 0;
8
+ exports.getConstructorForDataFormat = getConstructorForDataFormat;
9
+ exports.sizeOf = sizeOf;
10
+ exports.COORDINATE_SYSTEM = exports.INT_16_ATTRIBUTE_TYPE = exports.FLOAT_64_TYPE = exports.OBJECT_ID_ATTRIBUTE_TYPE = exports.STRING_ATTRIBUTE_TYPE = exports.I3S_NAMED_HEADER_ATTRIBUTES = exports.I3S_NAMED_GEOMETRY_ATTRIBUTES = exports.I3S_NAMED_VERTEX_ATTRIBUTES = exports.GL_TYPE_MAP = void 0;
9
11
 
10
12
  var _constants = _interopRequireDefault(require("@luma.gl/constants"));
11
13
 
12
- const TYPE_ARRAY_MAP = {
13
- UInt8: Uint8Array,
14
- UInt16: Uint16Array,
15
- UInt32: Uint32Array,
16
- Float32: Float32Array,
17
- UInt64: Float64Array
18
- };
19
- exports.TYPE_ARRAY_MAP = TYPE_ARRAY_MAP;
14
+ var _types = require("../../types");
15
+
16
+ function getConstructorForDataFormat(dataType) {
17
+ switch (dataType) {
18
+ case _types.DATA_TYPE.UInt8:
19
+ return Uint8Array;
20
+
21
+ case _types.DATA_TYPE.UInt16:
22
+ return Uint16Array;
23
+
24
+ case _types.DATA_TYPE.UInt32:
25
+ return Uint32Array;
26
+
27
+ case _types.DATA_TYPE.Float32:
28
+ return Float32Array;
29
+
30
+ case _types.DATA_TYPE.UInt64:
31
+ return Float64Array;
32
+
33
+ default:
34
+ return null;
35
+ }
36
+ }
37
+
20
38
  const GL_TYPE_MAP = {
21
39
  UInt8: _constants.default.UNSIGNED_BYTE,
22
40
  UInt16: _constants.default.UNSIGNED_INT,
@@ -40,19 +58,35 @@ const I3S_NAMED_GEOMETRY_ATTRIBUTES = {
40
58
  };
41
59
  exports.I3S_NAMED_GEOMETRY_ATTRIBUTES = I3S_NAMED_GEOMETRY_ATTRIBUTES;
42
60
  const I3S_NAMED_HEADER_ATTRIBUTES = {
43
- header: 'header',
44
61
  vertexCount: 'vertexCount',
45
62
  featureCount: 'featureCount'
46
63
  };
47
64
  exports.I3S_NAMED_HEADER_ATTRIBUTES = I3S_NAMED_HEADER_ATTRIBUTES;
48
- const SIZEOF = {
49
- UInt8: 1,
50
- UInt16: 2,
51
- UInt32: 4,
52
- Float32: 4,
53
- UInt64: 8
54
- };
55
- exports.SIZEOF = SIZEOF;
65
+
66
+ function sizeOf(dataType) {
67
+ switch (dataType) {
68
+ case _types.DATA_TYPE.UInt8:
69
+ return 1;
70
+
71
+ case _types.DATA_TYPE.UInt16:
72
+ case _types.DATA_TYPE.Int16:
73
+ return 2;
74
+
75
+ case _types.DATA_TYPE.UInt32:
76
+ case _types.DATA_TYPE.Int32:
77
+ case _types.DATA_TYPE.Float32:
78
+ return 4;
79
+
80
+ case _types.DATA_TYPE.UInt64:
81
+ case _types.DATA_TYPE.Int64:
82
+ case _types.DATA_TYPE.Float64:
83
+ return 8;
84
+
85
+ default:
86
+ return NaN;
87
+ }
88
+ }
89
+
56
90
  const STRING_ATTRIBUTE_TYPE = 'String';
57
91
  exports.STRING_ATTRIBUTE_TYPE = STRING_ATTRIBUTE_TYPE;
58
92
  const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';
@@ -61,12 +95,14 @@ const FLOAT_64_TYPE = 'Float64';
61
95
  exports.FLOAT_64_TYPE = FLOAT_64_TYPE;
62
96
  const INT_16_ATTRIBUTE_TYPE = 'Int16';
63
97
  exports.INT_16_ATTRIBUTE_TYPE = INT_16_ATTRIBUTE_TYPE;
64
- const COORDINATE_SYSTEM = {
65
- DEFAULT: -1,
66
- LNGLAT: 1,
67
- METER_OFFSETS: 2,
68
- LNGLAT_OFFSETS: 3,
69
- CARTESIAN: 0
70
- };
98
+ let COORDINATE_SYSTEM;
71
99
  exports.COORDINATE_SYSTEM = COORDINATE_SYSTEM;
100
+
101
+ (function (COORDINATE_SYSTEM) {
102
+ COORDINATE_SYSTEM[COORDINATE_SYSTEM["DEFAULT"] = -1] = "DEFAULT";
103
+ COORDINATE_SYSTEM[COORDINATE_SYSTEM["LNGLAT"] = 1] = "LNGLAT";
104
+ COORDINATE_SYSTEM[COORDINATE_SYSTEM["METER_OFFSETS"] = 2] = "METER_OFFSETS";
105
+ COORDINATE_SYSTEM[COORDINATE_SYSTEM["LNGLAT_OFFSETS"] = 3] = "LNGLAT_OFFSETS";
106
+ COORDINATE_SYSTEM[COORDINATE_SYSTEM["CARTESIAN"] = 0] = "CARTESIAN";
107
+ })(COORDINATE_SYSTEM || (exports.COORDINATE_SYSTEM = COORDINATE_SYSTEM = {}));
72
108
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/constants.ts"],"names":["TYPE_ARRAY_MAP","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","GL_TYPE_MAP","GL","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","I3S_NAMED_VERTEX_ATTRIBUTES","position","normal","uv0","color","region","I3S_NAMED_GEOMETRY_ATTRIBUTES","vertexAttributes","featureAttributeOrder","featureAttributes","I3S_NAMED_HEADER_ATTRIBUTES","header","vertexCount","featureCount","SIZEOF","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","INT_16_ATTRIBUTE_TYPE","COORDINATE_SYSTEM","DEFAULT","LNGLAT","METER_OFFSETS","LNGLAT_OFFSETS","CARTESIAN"],"mappings":";;;;;;;;;AAAA;;AAEO,MAAMA,cAAc,GAAG;AAC5BC,EAAAA,KAAK,EAAEC,UADqB;AAE5BC,EAAAA,MAAM,EAAEC,WAFoB;AAG5BC,EAAAA,MAAM,EAAEC,WAHoB;AAI5BC,EAAAA,OAAO,EAAEC,YAJmB;AAK5BC,EAAAA,MAAM,EAAEC;AALoB,CAAvB;;AAQA,MAAMC,WAAW,GAAG;AACzBV,EAAAA,KAAK,EAAEW,mBAAGC,aADe;AAEzBV,EAAAA,MAAM,EAAES,mBAAGE,YAFc;AAGzBP,EAAAA,OAAO,EAAEK,mBAAGG,KAHa;AAIzBV,EAAAA,MAAM,EAAEO,mBAAGE,YAJc;AAKzBL,EAAAA,MAAM,EAAEG,mBAAGI;AALc,CAApB;;AAQA,MAAMC,2BAA2B,GAAG;AACzCC,EAAAA,QAAQ,EAAE,UAD+B;AAEzCC,EAAAA,MAAM,EAAE,QAFiC;AAGzCC,EAAAA,GAAG,EAAE,KAHoC;AAIzCC,EAAAA,KAAK,EAAE,OAJkC;AAKzCC,EAAAA,MAAM,EAAE;AALiC,CAApC;;AAQA,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,gBAAgB,EAAE,kBADyB;AAE3CC,EAAAA,qBAAqB,EAAE,uBAFoB;AAG3CC,EAAAA,iBAAiB,EAAE;AAHwB,CAAtC;;AAMA,MAAMC,2BAA2B,GAAG;AACzCC,EAAAA,MAAM,EAAE,QADiC;AAEzCC,EAAAA,WAAW,EAAE,aAF4B;AAGzCC,EAAAA,YAAY,EAAE;AAH2B,CAApC;;AAMA,MAAMC,MAAM,GAAG;AACpB9B,EAAAA,KAAK,EAAE,CADa;AAEpBE,EAAAA,MAAM,EAAE,CAFY;AAGpBE,EAAAA,MAAM,EAAE,CAHY;AAIpBE,EAAAA,OAAO,EAAE,CAJW;AAKpBE,EAAAA,MAAM,EAAE;AALY,CAAf;;AAQA,MAAMuB,qBAAqB,GAAG,QAA9B;;AACA,MAAMC,wBAAwB,GAAG,OAAjC;;AACA,MAAMC,aAAa,GAAG,SAAtB;;AACA,MAAMC,qBAAqB,GAAG,OAA9B;;AAIA,MAAMC,iBAAiB,GAAG;AAE/BC,EAAAA,OAAO,EAAE,CAAC,CAFqB;AAK/BC,EAAAA,MAAM,EAAE,CALuB;AAQ/BC,EAAAA,aAAa,EAAE,CARgB;AAa/BC,EAAAA,cAAc,EAAE,CAbe;AAgB/BC,EAAAA,SAAS,EAAE;AAhBoB,CAA1B","sourcesContent":["import GL from '@luma.gl/constants';\n\nexport const TYPE_ARRAY_MAP = {\n UInt8: Uint8Array,\n UInt16: Uint16Array,\n UInt32: Uint32Array,\n Float32: Float32Array,\n UInt64: Float64Array\n};\n\nexport const GL_TYPE_MAP = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n\nexport const I3S_NAMED_VERTEX_ATTRIBUTES = {\n position: 'position',\n normal: 'normal',\n uv0: 'uv0',\n color: 'color',\n region: 'region'\n};\n\nexport const I3S_NAMED_GEOMETRY_ATTRIBUTES = {\n vertexAttributes: 'vertexAttributes',\n featureAttributeOrder: 'featureAttributeOrder',\n featureAttributes: 'featureAttributes'\n};\n\nexport const I3S_NAMED_HEADER_ATTRIBUTES = {\n header: 'header',\n vertexCount: 'vertexCount',\n featureCount: 'featureCount'\n};\n\nexport const SIZEOF = {\n UInt8: 1,\n UInt16: 2,\n UInt32: 4,\n Float32: 4,\n UInt64: 8\n};\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\nexport const INT_16_ATTRIBUTE_TYPE = 'Int16';\n\n// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27\n// Describes the format of positions\nexport const COORDINATE_SYSTEM = {\n // `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n DEFAULT: -1,\n // Positions are interpreted as [lng, lat, elevation]\n // lng lat are degrees, elevation is meters. distances as meters.\n LNGLAT: 1,\n\n // Positions are interpreted as meter offsets, distances as meters\n METER_OFFSETS: 2,\n\n // Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]\n // deltaLng, deltaLat are delta degrees, elevation is meters.\n // distances as meters.\n LNGLAT_OFFSETS: 3,\n\n // Non-geospatial\n CARTESIAN: 0\n};\n"],"file":"constants.js"}
1
+ {"version":3,"sources":["../../../../src/lib/parsers/constants.ts"],"names":["getConstructorForDataFormat","dataType","DATA_TYPE","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","GL_TYPE_MAP","GL","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","I3S_NAMED_VERTEX_ATTRIBUTES","position","normal","uv0","color","region","I3S_NAMED_GEOMETRY_ATTRIBUTES","vertexAttributes","featureAttributeOrder","featureAttributes","I3S_NAMED_HEADER_ATTRIBUTES","vertexCount","featureCount","sizeOf","Int16","Int32","Int64","Float64","NaN","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE","INT_16_ATTRIBUTE_TYPE","COORDINATE_SYSTEM"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEO,SAASA,2BAAT,CAAqCC,QAArC,EAAuD;AAC5D,UAAQA,QAAR;AACE,SAAKC,iBAAUC,KAAf;AACE,aAAOC,UAAP;;AACF,SAAKF,iBAAUG,MAAf;AACE,aAAOC,WAAP;;AACF,SAAKJ,iBAAUK,MAAf;AACE,aAAOC,WAAP;;AACF,SAAKN,iBAAUO,OAAf;AACE,aAAOC,YAAP;;AACF,SAAKR,iBAAUS,MAAf;AACE,aAAOC,YAAP;;AACF;AACE,aAAO,IAAP;AAZJ;AAcD;;AAEM,MAAMC,WAAoC,GAAG;AAClDV,EAAAA,KAAK,EAAEW,mBAAGC,aADwC;AAElDV,EAAAA,MAAM,EAAES,mBAAGE,YAFuC;AAGlDP,EAAAA,OAAO,EAAEK,mBAAGG,KAHsC;AAIlDV,EAAAA,MAAM,EAAEO,mBAAGE,YAJuC;AAKlDL,EAAAA,MAAM,EAAEG,mBAAGI;AALuC,CAA7C;;AAQA,MAAMC,2BAA2B,GAAG;AACzCC,EAAAA,QAAQ,EAAE,UAD+B;AAEzCC,EAAAA,MAAM,EAAE,QAFiC;AAGzCC,EAAAA,GAAG,EAAE,KAHoC;AAIzCC,EAAAA,KAAK,EAAE,OAJkC;AAKzCC,EAAAA,MAAM,EAAE;AALiC,CAApC;;AAQA,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,gBAAgB,EAAE,kBADyB;AAE3CC,EAAAA,qBAAqB,EAAE,uBAFoB;AAG3CC,EAAAA,iBAAiB,EAAE;AAHwB,CAAtC;;AAMA,MAAMC,2BAA2B,GAAG;AAEzCC,EAAAA,WAAW,EAAE,aAF4B;AAGzCC,EAAAA,YAAY,EAAE;AAH2B,CAApC;;;AAUA,SAASC,MAAT,CAAgB/B,QAAhB,EAA0C;AAC/C,UAAQA,QAAR;AACE,SAAKC,iBAAUC,KAAf;AACE,aAAO,CAAP;;AACF,SAAKD,iBAAUG,MAAf;AACA,SAAKH,iBAAU+B,KAAf;AACE,aAAO,CAAP;;AACF,SAAK/B,iBAAUK,MAAf;AACA,SAAKL,iBAAUgC,KAAf;AACA,SAAKhC,iBAAUO,OAAf;AACE,aAAO,CAAP;;AACF,SAAKP,iBAAUS,MAAf;AACA,SAAKT,iBAAUiC,KAAf;AACA,SAAKjC,iBAAUkC,OAAf;AACE,aAAO,CAAP;;AACF;AACE,aAAOC,GAAP;AAfJ;AAiBD;;AAEM,MAAMC,qBAAqB,GAAG,QAA9B;;AACA,MAAMC,wBAAwB,GAAG,OAAjC;;AACA,MAAMC,aAAa,GAAG,SAAtB;;AACA,MAAMC,qBAAqB,GAAG,OAA9B;;IAIKC,iB;;;WAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;AAAAA,EAAAA,iB,CAAAA,iB;GAAAA,iB,iCAAAA,iB","sourcesContent":["import GL from '@luma.gl/constants';\nimport {DATA_TYPE} from '../../types';\n\nexport function getConstructorForDataFormat(dataType: string) {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return Uint8Array;\n case DATA_TYPE.UInt16:\n return Uint16Array;\n case DATA_TYPE.UInt32:\n return Uint32Array;\n case DATA_TYPE.Float32:\n return Float32Array;\n case DATA_TYPE.UInt64:\n return Float64Array;\n default:\n return null;\n }\n}\n\nexport const GL_TYPE_MAP: {[key: string]: number} = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n\nexport const I3S_NAMED_VERTEX_ATTRIBUTES = {\n position: 'position',\n normal: 'normal',\n uv0: 'uv0',\n color: 'color',\n region: 'region'\n};\n\nexport const I3S_NAMED_GEOMETRY_ATTRIBUTES = {\n vertexAttributes: 'vertexAttributes',\n featureAttributeOrder: 'featureAttributeOrder',\n featureAttributes: 'featureAttributes'\n};\n// TODO Remove Named Attributes and replase with Typescipt types\nexport const I3S_NAMED_HEADER_ATTRIBUTES = {\n // header: 'header',\n vertexCount: 'vertexCount',\n featureCount: 'featureCount'\n};\n/**\n * Returns how many bytes a type occupies\n * @param dataType\n * @returns\n */\nexport function sizeOf(dataType: string): number {\n switch (dataType) {\n case DATA_TYPE.UInt8:\n return 1;\n case DATA_TYPE.UInt16:\n case DATA_TYPE.Int16:\n return 2;\n case DATA_TYPE.UInt32:\n case DATA_TYPE.Int32:\n case DATA_TYPE.Float32:\n return 4;\n case DATA_TYPE.UInt64:\n case DATA_TYPE.Int64:\n case DATA_TYPE.Float64:\n return 8;\n default:\n return NaN;\n }\n}\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\nexport const INT_16_ATTRIBUTE_TYPE = 'Int16';\n\n// https://github.com/visgl/deck.gl/blob/9548f43cba2234a1f4877b6b17f6c88eb35b2e08/modules/core/src/lib/constants.js#L27\n// Describes the format of positions\nexport enum COORDINATE_SYSTEM {\n /**\n * `LNGLAT` if rendering into a geospatial viewport, `CARTESIAN` otherwise\n */\n DEFAULT = -1,\n /**\n * Positions are interpreted as [lng, lat, elevation]\n * lng lat are degrees, elevation is meters. distances as meters.\n */\n LNGLAT = 1,\n /**\n * Positions are interpreted as meter offsets, distances as meters\n */\n METER_OFFSETS = 2,\n /**\n * Positions are interpreted as lng lat offsets: [deltaLng, deltaLat, elevation]\n * deltaLng, deltaLat are delta degrees, elevation is meters.\n * distances as meters.\n */\n LNGLAT_OFFSETS = 3,\n /**\n * Non-geospatial\n */\n CARTESIAN = 0\n}\n"],"file":"constants.js"}
@@ -22,26 +22,40 @@ var _urlUtils = require("../utils/url-utils");
22
22
  var _constants = require("./constants");
23
23
 
24
24
  const scratchVector = new _core2.Vector3([0, 0, 0]);
25
- const FORMAT_LOADER_MAP = {
26
- jpeg: _images.ImageLoader,
27
- png: _images.ImageLoader,
28
- 'ktx-etc2': _textures.CompressedTextureLoader,
29
- dds: _textures.CompressedTextureLoader,
30
- ktx2: _textures.BasisLoader
31
- };
25
+
26
+ function getLoaderForTextureFormat(textureFormat) {
27
+ switch (textureFormat) {
28
+ case 'jpeg':
29
+ case 'png':
30
+ return _images.ImageLoader;
31
+
32
+ case 'ktx-etc2':
33
+ case 'dds':
34
+ return _textures.CompressedTextureLoader;
35
+
36
+ case 'ktx2':
37
+ return _textures.BasisLoader;
38
+
39
+ default:
40
+ return null;
41
+ }
42
+ }
43
+
32
44
  const I3S_ATTRIBUTE_TYPE = 'i3s-attribute-type';
33
45
 
34
46
  async function parseI3STileContent(arrayBuffer, tile, tileset, options, context) {
35
47
  tile.content = tile.content || {};
36
48
  tile.content.featureIds = tile.content.featureIds || null;
37
- tile.content.featureData = constructFeatureDataStruct(tile, tileset);
49
+ tile.content.featureData = constructFeatureDataStruct(tileset);
38
50
  tile.content.attributes = {};
39
51
 
40
52
  if (tile.textureUrl) {
41
53
  var _options$i3s;
42
54
 
43
55
  const url = (0, _urlUtils.getUrlWithToken)(tile.textureUrl, options === null || options === void 0 ? void 0 : (_options$i3s = options.i3s) === null || _options$i3s === void 0 ? void 0 : _options$i3s.token);
44
- const loader = FORMAT_LOADER_MAP[tile.textureFormat] || _images.ImageLoader;
56
+
57
+ const loader = getLoaderForTextureFormat(tile.textureFormat) || _images.ImageLoader;
58
+
45
59
  const response = await fetch(url);
46
60
  const arrayBuffer = await response.arrayBuffer();
47
61
 
@@ -79,10 +93,10 @@ async function parseI3STileContent(arrayBuffer, tile, tileset, options, context)
79
93
  tile.content.texture = null;
80
94
  }
81
95
 
82
- return await parseI3SNodeGeometry(arrayBuffer, tile, options, context);
96
+ return await parseI3SNodeGeometry(arrayBuffer, tile, options);
83
97
  }
84
98
 
85
- async function parseI3SNodeGeometry(arrayBuffer, tile = {}, options, context) {
99
+ async function parseI3SNodeGeometry(arrayBuffer, tile, options) {
86
100
  var _options$i3s2;
87
101
 
88
102
  if (!tile.content) {
@@ -149,9 +163,7 @@ async function parseI3SNodeGeometry(arrayBuffer, tile = {}, options, context) {
149
163
  }
150
164
 
151
165
  if (!(options !== null && options !== void 0 && (_options$i3s2 = options.i3s) !== null && _options$i3s2 !== void 0 && _options$i3s2.coordinateSystem) || options.i3s.coordinateSystem === _constants.COORDINATE_SYSTEM.METER_OFFSETS) {
152
- const {
153
- enuMatrix
154
- } = parsePositions(attributes.position, tile);
166
+ const enuMatrix = parsePositions(attributes.position, tile);
155
167
  content.modelMatrix = enuMatrix.invert();
156
168
  content.coordinateSystem = _constants.COORDINATE_SYSTEM.METER_OFFSETS;
157
169
  } else {
@@ -217,7 +229,7 @@ function normalizeAttribute(attribute) {
217
229
  return attribute;
218
230
  }
219
231
 
220
- function constructFeatureDataStruct(tile, tileset) {
232
+ function constructFeatureDataStruct(tileset) {
221
233
  const defaultGeometrySchema = tileset.store.defaultGeometrySchema;
222
234
  const featureData = defaultGeometrySchema;
223
235
 
@@ -246,30 +258,26 @@ function constructFeatureDataStruct(tile, tileset) {
246
258
  return featureData;
247
259
  }
248
260
 
249
- function parseHeaders(content, buffer) {
261
+ function parseHeaders(content, arrayBuffer) {
250
262
  let byteOffset = 0;
251
263
  let vertexCount = 0;
252
264
  let featureCount = 0;
253
- const headers = content.featureData[_constants.I3S_NAMED_HEADER_ATTRIBUTES.header];
254
-
255
- for (const header in headers) {
256
- const {
257
- property,
258
- type
259
- } = headers[header];
260
- const TypedArrayTypeHeader = _constants.TYPE_ARRAY_MAP[type];
265
+ content.featureData.header.forEach(({
266
+ property,
267
+ type
268
+ }) => {
269
+ const TypedArrayTypeHeader = (0, _constants.getConstructorForDataFormat)(type);
261
270
 
262
271
  if (property === _constants.I3S_NAMED_HEADER_ATTRIBUTES.vertexCount) {
263
- vertexCount = new TypedArrayTypeHeader(buffer, 0, 4)[0];
264
- byteOffset += _constants.SIZEOF[type];
272
+ vertexCount = new TypedArrayTypeHeader(arrayBuffer, 0, 4)[0];
273
+ byteOffset += (0, _constants.sizeOf)(type);
265
274
  }
266
275
 
267
276
  if (property === _constants.I3S_NAMED_HEADER_ATTRIBUTES.featureCount) {
268
- featureCount = new TypedArrayTypeHeader(buffer, 4, 4)[0];
269
- byteOffset += _constants.SIZEOF[type];
277
+ featureCount = new TypedArrayTypeHeader(arrayBuffer, 4, 4)[0];
278
+ byteOffset += (0, _constants.sizeOf)(type);
270
279
  }
271
- }
272
-
280
+ });
273
281
  return {
274
282
  vertexCount,
275
283
  featureCount,
@@ -296,9 +304,9 @@ function normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, vertexCo
296
304
  let value = [];
297
305
 
298
306
  if (valueType === 'UInt64') {
299
- value = parseUint64Values(buffer, count * valuesPerElement, _constants.SIZEOF[valueType]);
307
+ value = parseUint64Values(buffer, count * valuesPerElement, (0, _constants.sizeOf)(valueType));
300
308
  } else {
301
- const TypedArrayType = _constants.TYPE_ARRAY_MAP[valueType];
309
+ const TypedArrayType = (0, _constants.getConstructorForDataFormat)(valueType);
302
310
  value = new TypedArrayType(buffer, 0, count * valuesPerElement);
303
311
  }
304
312
 
@@ -319,7 +327,7 @@ function normalizeAttributes(arrayBuffer, byteOffset, vertexAttributes, vertexCo
319
327
  default:
320
328
  }
321
329
 
322
- byteOffset = byteOffset + count * valuesPerElement * _constants.SIZEOF[valueType];
330
+ byteOffset = byteOffset + count * valuesPerElement * (0, _constants.sizeOf)(valueType);
323
331
  }
324
332
  }
325
333
 
@@ -358,9 +366,7 @@ function parsePositions(attribute, tile) {
358
366
  _geospatial.Ellipsoid.WGS84.eastNorthUpToFixedFrame(cartesianOrigin, enuMatrix);
359
367
 
360
368
  attribute.value = offsetsToCartesians(value, metadata, cartographicOrigin);
361
- return {
362
- enuMatrix
363
- };
369
+ return enuMatrix;
364
370
  }
365
371
 
366
372
  function offsetsToCartesians(vertices, metadata = {}, cartographicOrigin) {