@loaders.gl/obj 3.4.13 → 3.4.15

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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var moduleExports = require('./index');
3
+ const moduleExports = require('./index');
4
4
  globalThis.loaders = globalThis.loaders || {};
5
5
  module.exports = Object.assign(globalThis.loaders, moduleExports);
6
6
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
1
+ {"version":3,"file":"bundle.js","names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"sources":["../../src/bundle.ts"],"sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"mappings":";;AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAS,CAAC;AACxCC,UAAU,CAACC,OAAO,GAAGD,UAAU,CAACC,OAAO,IAAI,CAAC,CAAC;AAC7CC,MAAM,CAACC,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACL,UAAU,CAACC,OAAO,EAAEH,aAAa,CAAC"}
package/dist/es5/index.js CHANGED
@@ -1,74 +1,34 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.OBJLoader = exports.MTLLoader = void 0;
8
7
  Object.defineProperty(exports, "OBJWorkerLoader", {
9
8
  enumerable: true,
10
- get: function get() {
9
+ get: function () {
11
10
  return _objLoader.OBJLoader;
12
11
  }
13
12
  });
14
13
  exports._typecheckOBJLoader = exports._typecheckMTLLoader = void 0;
15
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
16
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
14
  var _parseObj = require("./lib/parse-obj");
19
15
  var _parseMtl = require("./lib/parse-mtl");
20
16
  var _objLoader = require("./obj-loader");
21
17
  var _mtlLoader = require("./mtl-loader");
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
- var OBJLoader = _objectSpread(_objectSpread({}, _objLoader.OBJLoader), {}, {
25
- parse: function () {
26
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
27
- return _regenerator.default.wrap(function _callee$(_context) {
28
- while (1) switch (_context.prev = _context.next) {
29
- case 0:
30
- return _context.abrupt("return", (0, _parseObj.parseOBJ)(new TextDecoder().decode(arrayBuffer), options));
31
- case 1:
32
- case "end":
33
- return _context.stop();
34
- }
35
- }, _callee);
36
- }));
37
- function parse(_x, _x2) {
38
- return _parse.apply(this, arguments);
39
- }
40
- return parse;
41
- }(),
42
- parseTextSync: function parseTextSync(text, options) {
43
- return (0, _parseObj.parseOBJ)(text, options);
44
- }
45
- });
18
+ const OBJLoader = {
19
+ ..._objLoader.OBJLoader,
20
+ parse: async (arrayBuffer, options) => (0, _parseObj.parseOBJ)(new TextDecoder().decode(arrayBuffer), options),
21
+ parseTextSync: (text, options) => (0, _parseObj.parseOBJ)(text, options)
22
+ };
46
23
  exports.OBJLoader = OBJLoader;
47
- var MTLLoader = _objectSpread(_objectSpread({}, _mtlLoader.MTLLoader), {}, {
48
- parse: function () {
49
- var _parse2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(arrayBuffer, options) {
50
- return _regenerator.default.wrap(function _callee2$(_context2) {
51
- while (1) switch (_context2.prev = _context2.next) {
52
- case 0:
53
- return _context2.abrupt("return", (0, _parseMtl.parseMTL)(new TextDecoder().decode(arrayBuffer), options === null || options === void 0 ? void 0 : options.mtl));
54
- case 1:
55
- case "end":
56
- return _context2.stop();
57
- }
58
- }, _callee2);
59
- }));
60
- function parse(_x3, _x4) {
61
- return _parse2.apply(this, arguments);
62
- }
63
- return parse;
64
- }(),
65
- parseTextSync: function parseTextSync(text, options) {
66
- return (0, _parseMtl.parseMTL)(text, options === null || options === void 0 ? void 0 : options.mtl);
67
- }
68
- });
24
+ const MTLLoader = {
25
+ ..._mtlLoader.MTLLoader,
26
+ parse: async (arrayBuffer, options) => (0, _parseMtl.parseMTL)(new TextDecoder().decode(arrayBuffer), options === null || options === void 0 ? void 0 : options.mtl),
27
+ parseTextSync: (text, options) => (0, _parseMtl.parseMTL)(text, options === null || options === void 0 ? void 0 : options.mtl)
28
+ };
69
29
  exports.MTLLoader = MTLLoader;
70
- var _typecheckOBJLoader = OBJLoader;
30
+ const _typecheckOBJLoader = OBJLoader;
71
31
  exports._typecheckOBJLoader = _typecheckOBJLoader;
72
- var _typecheckMTLLoader = MTLLoader;
32
+ const _typecheckMTLLoader = MTLLoader;
73
33
  exports._typecheckMTLLoader = _typecheckMTLLoader;
74
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_parseObj","require","_parseMtl","_objLoader","_mtlLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","OBJLoader","OBJWorkerLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","parseOBJ","TextDecoder","decode","stop","_x","_x2","parseTextSync","text","exports","MTLLoader","MTLWorkerLoader","_parse2","_callee2","_callee2$","_context2","parseMTL","mtl","_x3","_x4","_typecheckOBJLoader","_typecheckMTLLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parseOBJ} from './lib/parse-obj';\nimport {parseMTL} from './lib/parse-mtl';\nimport type {OBJLoaderOptions} from './obj-loader';\nimport {OBJLoader as OBJWorkerLoader} from './obj-loader';\nimport type {MTLLoaderOptions} from './mtl-loader';\nimport {MTLLoader as MTLWorkerLoader} from './mtl-loader';\n\n// OBJLoader\n\nexport {OBJWorkerLoader};\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};\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};\n\nexport const _typecheckOBJLoader: LoaderWithParser = OBJLoader;\nexport const _typecheckMTLLoader: LoaderWithParser = MTLLoader;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_parseObj","require","_parseMtl","_objLoader","_mtlLoader","OBJLoader","OBJWorkerLoader","parse","arrayBuffer","options","parseOBJ","TextDecoder","decode","parseTextSync","text","exports","MTLLoader","MTLWorkerLoader","parseMTL","mtl","_typecheckOBJLoader","_typecheckMTLLoader"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {parseOBJ} from './lib/parse-obj';\nimport {parseMTL} from './lib/parse-mtl';\nimport type {OBJLoaderOptions} from './obj-loader';\nimport {OBJLoader as OBJWorkerLoader} from './obj-loader';\nimport type {MTLLoaderOptions} from './mtl-loader';\nimport {MTLLoader as MTLWorkerLoader} from './mtl-loader';\n\n// OBJLoader\n\nexport {OBJWorkerLoader};\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};\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};\n\nexport const _typecheckOBJLoader: LoaderWithParser = OBJLoader;\nexport const _typecheckMTLLoader: LoaderWithParser = MTLLoader;\n"],"mappings":";;;;;;;;;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAEA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AASO,MAAMI,SAAS,GAAG;EACvB,GAAGC,oBAAe;EAClBC,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEC,OAA0B,KAChE,IAAAC,kBAAQ,EAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACJ,WAAW,CAAC,EAAEC,OAAO,CAAC;EAC1DI,aAAa,EAAEA,CAACC,IAAY,EAAEL,OAA0B,KAAK,IAAAC,kBAAQ,EAACI,IAAI,EAAEL,OAAO;AACrF,CAAC;AAACM,OAAA,CAAAV,SAAA,GAAAA,SAAA;AAOK,MAAMW,SAAS,GAAG;EACvB,GAAGC,oBAAe;EAClBV,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEC,OAA0B,KAChE,IAAAS,kBAAQ,EAAC,IAAIP,WAAW,CAAC,CAAC,CAACC,MAAM,CAACJ,WAAW,CAAC,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEU,GAAG,CAAC;EAC/DN,aAAa,EAAEA,CAACC,IAAY,EAAEL,OAA0B,KAAK,IAAAS,kBAAQ,EAACJ,IAAI,EAAEL,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEU,GAAG;AAC1F,CAAC;AAACJ,OAAA,CAAAC,SAAA,GAAAA,SAAA;AAEK,MAAMI,mBAAqC,GAAGf,SAAS;AAACU,OAAA,CAAAK,mBAAA,GAAAA,mBAAA;AACxD,MAAMC,mBAAqC,GAAGL,SAAS;AAACD,OAAA,CAAAM,mBAAA,GAAAA,mBAAA"}
@@ -6,31 +6,31 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getOBJSchema = getOBJSchema;
7
7
  var _schema = require("@loaders.gl/schema");
8
8
  function getOBJSchema(attributes) {
9
- var metadata = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10
- var metadataMap;
11
- for (var key in metadata) {
9
+ let metadata = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10
+ let metadataMap;
11
+ for (const key in metadata) {
12
12
  metadataMap = metadataMap || new Map();
13
13
  if (key !== 'value') {
14
14
  metadataMap.set(key, JSON.stringify(metadata[key]));
15
15
  }
16
16
  }
17
- var fields = [];
18
- for (var attributeName in attributes) {
19
- var attribute = attributes[attributeName];
20
- var field = getArrowFieldFromAttribute(attributeName, attribute);
17
+ const fields = [];
18
+ for (const attributeName in attributes) {
19
+ const attribute = attributes[attributeName];
20
+ const field = getArrowFieldFromAttribute(attributeName, attribute);
21
21
  fields.push(field);
22
22
  }
23
23
  return new _schema.Schema(fields, metadataMap);
24
24
  }
25
25
  function getArrowFieldFromAttribute(attributeName, attribute) {
26
- var metadataMap = new Map();
27
- for (var key in attribute) {
26
+ const metadataMap = new Map();
27
+ for (const key in attribute) {
28
28
  if (key !== 'value') {
29
29
  metadataMap.set(key, JSON.stringify(attribute[key]));
30
30
  }
31
31
  }
32
- var type = (0, _schema.getArrowTypeFromTypedArray)(attribute.value);
33
- var isSingleValue = !('size' in attribute) || attribute.size === 1;
32
+ const type = (0, _schema.getArrowTypeFromTypedArray)(attribute.value);
33
+ const isSingleValue = !('size' in attribute) || attribute.size === 1;
34
34
  return isSingleValue ? new _schema.Field(attributeName, type, false, metadataMap) : new _schema.Field(attributeName, new _schema.FixedSizeList(attribute.size, new _schema.Field('value', type)), false, metadataMap);
35
35
  }
36
36
  //# sourceMappingURL=get-obj-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-obj-schema.js","names":["_schema","require","getOBJSchema","attributes","metadata","arguments","length","undefined","metadataMap","key","Map","set","JSON","stringify","fields","attributeName","attribute","field","getArrowFieldFromAttribute","push","Schema","type","getArrowTypeFromTypedArray","value","isSingleValue","size","Field","FixedSizeList"],"sources":["../../../src/lib/get-obj-schema.ts"],"sourcesContent":["import {Schema, Field, FixedSizeList, getArrowTypeFromTypedArray} from '@loaders.gl/schema';\n\nexport function getOBJSchema(attributes, metadata = {}) {\n let metadataMap;\n for (const key in metadata) {\n metadataMap = metadataMap || new Map();\n if (key !== 'value') {\n metadataMap.set(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 = getArrowFieldFromAttribute(attributeName, attribute);\n fields.push(field);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction getArrowFieldFromAttribute(attributeName, attribute) {\n const metadataMap = new Map();\n for (const key in attribute) {\n if (key !== 'value') {\n metadataMap.set(key, JSON.stringify(attribute[key]));\n }\n }\n\n const type = getArrowTypeFromTypedArray(attribute.value);\n const isSingleValue = !('size' in attribute) || attribute.size === 1;\n return isSingleValue\n ? new Field(attributeName, type, false, metadataMap)\n : new Field(\n attributeName,\n new FixedSizeList(attribute.size, new Field('value', type)),\n false,\n metadataMap\n );\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,SAASC,YAAYA,CAACC,UAAU,EAAiB;EAAA,IAAfC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACpD,IAAIG,WAAW;EACf,KAAK,IAAMC,GAAG,IAAIL,QAAQ,EAAE;IAC1BI,WAAW,GAAGA,WAAW,IAAI,IAAIE,GAAG,CAAC,CAAC;IACtC,IAAID,GAAG,KAAK,OAAO,EAAE;MACnBD,WAAW,CAACG,GAAG,CAACF,GAAG,EAAEG,IAAI,CAACC,SAAS,CAACT,QAAQ,CAACK,GAAG,CAAC,CAAC,CAAC;IACrD;EACF;EAEA,IAAMK,MAAe,GAAG,EAAE;EAC1B,KAAK,IAAMC,aAAa,IAAIZ,UAAU,EAAE;IACtC,IAAMa,SAAS,GAAGb,UAAU,CAACY,aAAa,CAAC;IAC3C,IAAME,KAAK,GAAGC,0BAA0B,CAACH,aAAa,EAAEC,SAAS,CAAC;IAClEF,MAAM,CAACK,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,OAAO,IAAIG,cAAM,CAACN,MAAM,EAAEN,WAAW,CAAC;AACxC;AAEA,SAASU,0BAA0BA,CAACH,aAAa,EAAEC,SAAS,EAAE;EAC5D,IAAMR,WAAW,GAAG,IAAIE,GAAG,CAAC,CAAC;EAC7B,KAAK,IAAMD,GAAG,IAAIO,SAAS,EAAE;IAC3B,IAAIP,GAAG,KAAK,OAAO,EAAE;MACnBD,WAAW,CAACG,GAAG,CAACF,GAAG,EAAEG,IAAI,CAACC,SAAS,CAACG,SAAS,CAACP,GAAG,CAAC,CAAC,CAAC;IACtD;EACF;EAEA,IAAMY,IAAI,GAAG,IAAAC,kCAA0B,EAACN,SAAS,CAACO,KAAK,CAAC;EACxD,IAAMC,aAAa,GAAG,EAAE,MAAM,IAAIR,SAAS,CAAC,IAAIA,SAAS,CAACS,IAAI,KAAK,CAAC;EACpE,OAAOD,aAAa,GAChB,IAAIE,aAAK,CAACX,aAAa,EAAEM,IAAI,EAAE,KAAK,EAAEb,WAAW,CAAC,GAClD,IAAIkB,aAAK,CACTX,aAAa,EACb,IAAIY,qBAAa,CAACX,SAAS,CAACS,IAAI,EAAE,IAAIC,aAAK,CAAC,OAAO,EAAEL,IAAI,CAAC,CAAC,EAC3D,KAAK,EACLb,WACF,CAAC;AACL"}
1
+ {"version":3,"file":"get-obj-schema.js","names":["_schema","require","getOBJSchema","attributes","metadata","arguments","length","undefined","metadataMap","key","Map","set","JSON","stringify","fields","attributeName","attribute","field","getArrowFieldFromAttribute","push","Schema","type","getArrowTypeFromTypedArray","value","isSingleValue","size","Field","FixedSizeList"],"sources":["../../../src/lib/get-obj-schema.ts"],"sourcesContent":["import {Schema, Field, FixedSizeList, getArrowTypeFromTypedArray} from '@loaders.gl/schema';\n\nexport function getOBJSchema(attributes, metadata = {}) {\n let metadataMap;\n for (const key in metadata) {\n metadataMap = metadataMap || new Map();\n if (key !== 'value') {\n metadataMap.set(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 = getArrowFieldFromAttribute(attributeName, attribute);\n fields.push(field);\n }\n return new Schema(fields, metadataMap);\n}\n\nfunction getArrowFieldFromAttribute(attributeName, attribute) {\n const metadataMap = new Map();\n for (const key in attribute) {\n if (key !== 'value') {\n metadataMap.set(key, JSON.stringify(attribute[key]));\n }\n }\n\n const type = getArrowTypeFromTypedArray(attribute.value);\n const isSingleValue = !('size' in attribute) || attribute.size === 1;\n return isSingleValue\n ? new Field(attributeName, type, false, metadataMap)\n : new Field(\n attributeName,\n new FixedSizeList(attribute.size, new Field('value', type)),\n false,\n metadataMap\n );\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,SAASC,YAAYA,CAACC,UAAU,EAAiB;EAAA,IAAfC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EACpD,IAAIG,WAAW;EACf,KAAK,MAAMC,GAAG,IAAIL,QAAQ,EAAE;IAC1BI,WAAW,GAAGA,WAAW,IAAI,IAAIE,GAAG,CAAC,CAAC;IACtC,IAAID,GAAG,KAAK,OAAO,EAAE;MACnBD,WAAW,CAACG,GAAG,CAACF,GAAG,EAAEG,IAAI,CAACC,SAAS,CAACT,QAAQ,CAACK,GAAG,CAAC,CAAC,CAAC;IACrD;EACF;EAEA,MAAMK,MAAe,GAAG,EAAE;EAC1B,KAAK,MAAMC,aAAa,IAAIZ,UAAU,EAAE;IACtC,MAAMa,SAAS,GAAGb,UAAU,CAACY,aAAa,CAAC;IAC3C,MAAME,KAAK,GAAGC,0BAA0B,CAACH,aAAa,EAAEC,SAAS,CAAC;IAClEF,MAAM,CAACK,IAAI,CAACF,KAAK,CAAC;EACpB;EACA,OAAO,IAAIG,cAAM,CAACN,MAAM,EAAEN,WAAW,CAAC;AACxC;AAEA,SAASU,0BAA0BA,CAACH,aAAa,EAAEC,SAAS,EAAE;EAC5D,MAAMR,WAAW,GAAG,IAAIE,GAAG,CAAC,CAAC;EAC7B,KAAK,MAAMD,GAAG,IAAIO,SAAS,EAAE;IAC3B,IAAIP,GAAG,KAAK,OAAO,EAAE;MACnBD,WAAW,CAACG,GAAG,CAACF,GAAG,EAAEG,IAAI,CAACC,SAAS,CAACG,SAAS,CAACP,GAAG,CAAC,CAAC,CAAC;IACtD;EACF;EAEA,MAAMY,IAAI,GAAG,IAAAC,kCAA0B,EAACN,SAAS,CAACO,KAAK,CAAC;EACxD,MAAMC,aAAa,GAAG,EAAE,MAAM,IAAIR,SAAS,CAAC,IAAIA,SAAS,CAACS,IAAI,KAAK,CAAC;EACpE,OAAOD,aAAa,GAChB,IAAIE,aAAK,CAACX,aAAa,EAAEM,IAAI,EAAE,KAAK,EAAEb,WAAW,CAAC,GAClD,IAAIkB,aAAK,CACTX,aAAa,EACb,IAAIY,qBAAa,CAACX,SAAS,CAACS,IAAI,EAAE,IAAIC,aAAK,CAAC,OAAO,EAAEL,IAAI,CAAC,CAAC,EAC3D,KAAK,EACLb,WACF,CAAC;AACL"}
@@ -4,83 +4,71 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.parseMTL = parseMTL;
7
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
8
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
10
- var DELIMITER_PATTERN = /\s+/;
7
+ const DELIMITER_PATTERN = /\s+/;
11
8
  function parseMTL(text, options) {
12
- var materials = [];
13
- var currentMaterial = {
9
+ const materials = [];
10
+ let currentMaterial = {
14
11
  name: 'placeholder'
15
12
  };
16
- var lines = text.split('\n');
17
- var _iterator = _createForOfIteratorHelper(lines),
18
- _step;
19
- try {
20
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
21
- var line = _step.value;
22
- line = line.trim();
23
- if (line.length === 0 || line.charAt(0) === '#') {
24
- continue;
25
- }
26
- var pos = line.indexOf(' ');
27
- var key = pos >= 0 ? line.substring(0, pos) : line;
28
- key = key.toLowerCase();
29
- var value = pos >= 0 ? line.substring(pos + 1) : '';
30
- value = value.trim();
31
- switch (key) {
32
- case 'newmtl':
33
- currentMaterial = {
34
- name: value
35
- };
36
- materials.push(currentMaterial);
37
- break;
38
- case 'ka':
39
- currentMaterial.ambientColor = parseColor(value);
40
- break;
41
- case 'kd':
42
- currentMaterial.diffuseColor = parseColor(value);
43
- break;
44
- case 'map_kd':
45
- currentMaterial.diffuseTextureUrl = value;
46
- break;
47
- case 'ks':
48
- currentMaterial.specularColor = parseColor(value);
49
- break;
50
- case 'map_ks':
51
- currentMaterial.specularTextureUrl = value;
52
- break;
53
- case 'ke':
54
- currentMaterial.emissiveColor = parseColor(value);
55
- break;
56
- case 'map_ke':
57
- currentMaterial.emissiveTextureUrl = value;
58
- break;
59
- case 'ns':
60
- currentMaterial.shininess = parseFloat(value);
61
- break;
62
- case 'map_ns':
63
- break;
64
- case 'ni':
65
- currentMaterial.refraction = parseFloat(value);
66
- break;
67
- case 'illum':
68
- currentMaterial.illumination = parseFloat(value);
69
- break;
70
- default:
71
- break;
72
- }
13
+ const lines = text.split('\n');
14
+ for (let line of lines) {
15
+ line = line.trim();
16
+ if (line.length === 0 || line.charAt(0) === '#') {
17
+ continue;
18
+ }
19
+ const pos = line.indexOf(' ');
20
+ let key = pos >= 0 ? line.substring(0, pos) : line;
21
+ key = key.toLowerCase();
22
+ let value = pos >= 0 ? line.substring(pos + 1) : '';
23
+ value = value.trim();
24
+ switch (key) {
25
+ case 'newmtl':
26
+ currentMaterial = {
27
+ name: value
28
+ };
29
+ materials.push(currentMaterial);
30
+ break;
31
+ case 'ka':
32
+ currentMaterial.ambientColor = parseColor(value);
33
+ break;
34
+ case 'kd':
35
+ currentMaterial.diffuseColor = parseColor(value);
36
+ break;
37
+ case 'map_kd':
38
+ currentMaterial.diffuseTextureUrl = value;
39
+ break;
40
+ case 'ks':
41
+ currentMaterial.specularColor = parseColor(value);
42
+ break;
43
+ case 'map_ks':
44
+ currentMaterial.specularTextureUrl = value;
45
+ break;
46
+ case 'ke':
47
+ currentMaterial.emissiveColor = parseColor(value);
48
+ break;
49
+ case 'map_ke':
50
+ currentMaterial.emissiveTextureUrl = value;
51
+ break;
52
+ case 'ns':
53
+ currentMaterial.shininess = parseFloat(value);
54
+ break;
55
+ case 'map_ns':
56
+ break;
57
+ case 'ni':
58
+ currentMaterial.refraction = parseFloat(value);
59
+ break;
60
+ case 'illum':
61
+ currentMaterial.illumination = parseFloat(value);
62
+ break;
63
+ default:
64
+ break;
73
65
  }
74
- } catch (err) {
75
- _iterator.e(err);
76
- } finally {
77
- _iterator.f();
78
66
  }
79
67
  return materials;
80
68
  }
81
69
  function parseColor(value, options) {
82
- var rgb = value.split(DELIMITER_PATTERN, 3);
83
- var color = [parseFloat(rgb[0]), parseFloat(rgb[1]), parseFloat(rgb[2])];
70
+ const rgb = value.split(DELIMITER_PATTERN, 3);
71
+ const color = [parseFloat(rgb[0]), parseFloat(rgb[1]), parseFloat(rgb[2])];
84
72
  return color;
85
73
  }
86
74
  //# sourceMappingURL=parse-mtl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-mtl.js","names":["DELIMITER_PATTERN","parseMTL","text","options","materials","currentMaterial","name","lines","split","_iterator","_createForOfIteratorHelper","_step","s","n","done","line","value","trim","length","charAt","pos","indexOf","key","substring","toLowerCase","push","ambientColor","parseColor","diffuseColor","diffuseTextureUrl","specularColor","specularTextureUrl","emissiveColor","emissiveTextureUrl","shininess","parseFloat","refraction","illumination","err","e","f","rgb","color"],"sources":["../../../src/lib/parse-mtl.ts"],"sourcesContent":["// loaders.gl, MIT license\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"],"mappings":"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"}
1
+ {"version":3,"file":"parse-mtl.js","names":["DELIMITER_PATTERN","parseMTL","text","options","materials","currentMaterial","name","lines","split","line","trim","length","charAt","pos","indexOf","key","substring","toLowerCase","value","push","ambientColor","parseColor","diffuseColor","diffuseTextureUrl","specularColor","specularTextureUrl","emissiveColor","emissiveTextureUrl","shininess","parseFloat","refraction","illumination","rgb","color"],"sources":["../../../src/lib/parse-mtl.ts"],"sourcesContent":["// loaders.gl, MIT license\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"],"mappings":";;;;;;AAqBA,MAAMA,iBAAiB,GAAG,KAAK;AAuBxB,SAASC,QAAQA,CAACC,IAAY,EAAEC,OAAyB,EAAiB;EAE/E,MAAMC,SAAwB,GAAG,EAAE;EAEnC,IAAIC,eAA4B,GAAG;IAACC,IAAI,EAAE;EAAa,CAAC;EAExD,MAAMC,KAAK,GAAGL,IAAI,CAACM,KAAK,CAAC,IAAI,CAAC;EAC9B,KAAK,IAAIC,IAAI,IAAIF,KAAK,EAAE;IACtBE,IAAI,GAAGA,IAAI,CAACC,IAAI,CAAC,CAAC;IAElB,IAAID,IAAI,CAACE,MAAM,KAAK,CAAC,IAAIF,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MAE/C;IACF;IAEA,MAAMC,GAAG,GAAGJ,IAAI,CAACK,OAAO,CAAC,GAAG,CAAC;IAE7B,IAAIC,GAAG,GAAGF,GAAG,IAAI,CAAC,GAAGJ,IAAI,CAACO,SAAS,CAAC,CAAC,EAAEH,GAAG,CAAC,GAAGJ,IAAI;IAClDM,GAAG,GAAGA,GAAG,CAACE,WAAW,CAAC,CAAC;IAEvB,IAAIC,KAAK,GAAGL,GAAG,IAAI,CAAC,GAAGJ,IAAI,CAACO,SAAS,CAACH,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;IACnDK,KAAK,GAAGA,KAAK,CAACR,IAAI,CAAC,CAAC;IAEpB,QAAQK,GAAG;MACT,KAAK,QAAQ;QAEXV,eAAe,GAAG;UAACC,IAAI,EAAEY;QAAK,CAAC;QAE/Bd,SAAS,CAACe,IAAI,CAACd,eAAe,CAAC;QAC/B;MAEF,KAAK,IAAI;QACPA,eAAe,CAACe,YAAY,GAAGC,UAAU,CAACH,KAAK,CAAC;QAChD;MAEF,KAAK,IAAI;QAEPb,eAAe,CAACiB,YAAY,GAAGD,UAAU,CAACH,KAAK,CAAC;QAChD;MACF,KAAK,QAAQ;QAEXb,eAAe,CAACkB,iBAAiB,GAAGL,KAAK;QAEzC;MAEF,KAAK,IAAI;QAEPb,eAAe,CAACmB,aAAa,GAAGH,UAAU,CAACH,KAAK,CAAC;QACjD;MACF,KAAK,QAAQ;QAEXb,eAAe,CAACoB,kBAAkB,GAAGP,KAAK;QAE1C;MAEF,KAAK,IAAI;QAEPb,eAAe,CAACqB,aAAa,GAAGL,UAAU,CAACH,KAAK,CAAC;QACjD;MACF,KAAK,QAAQ;QAEXb,eAAe,CAACsB,kBAAkB,GAAGT,KAAK;QAE1C;MAEF,KAAK,IAAI;QAGPb,eAAe,CAACuB,SAAS,GAAGC,UAAU,CAACX,KAAK,CAAC;QAC7C;MACF,KAAK,QAAQ;QAIX;MACF,KAAK,IAAI;QACPb,eAAe,CAACyB,UAAU,GAAGD,UAAU,CAACX,KAAK,CAAC;QAC9C;MACF,KAAK,OAAO;QACVb,eAAe,CAAC0B,YAAY,GAAGF,UAAU,CAACX,KAAK,CAAC;QAChD;MAEF;QAEE;IAmCJ;EACF;EAEA,OAAOd,SAAS;AAClB;AAEA,SAASiB,UAAUA,CAACH,KAAa,EAAEf,OAAyB,EAA4B;EACtF,MAAM6B,GAAG,GAAGd,KAAK,CAACV,KAAK,CAACR,iBAAiB,EAAE,CAAC,CAAC;EAC7C,MAAMiC,KAA+B,GAAG,CACtCJ,UAAU,CAACG,GAAG,CAAC,CAAC,CAAC,CAAC,EAClBH,UAAU,CAACG,GAAG,CAAC,CAAC,CAAC,CAAC,EAClBH,UAAU,CAACG,GAAG,CAAC,CAAC,CAAC,CAAC,CACnB;EAYD,OAAOC,KAAK;AACd"}