exploria-ui 2026.9.26 → 2026.10.2

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 (159) hide show
  1. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  2. package/dist/components/data/EMediaViewer/EMediaViewer.d.ts +3 -4
  3. package/dist/components/feedback/EDialog/EDialog.vue.d.ts +15 -9
  4. package/dist/components/feedback/EDrawer/EDrawer.vue.d.ts +3 -4
  5. package/dist/components/feedback/EMessage/EMessage.d.ts +6 -7
  6. package/dist/components/feedback/EMessageBox/EMessageBox.d.ts +47 -20
  7. package/dist/components/feedback/EMessageBox/EMessageBox.vue.d.ts +10 -1
  8. package/dist/components/feedback/ENotification/ENotification.d.ts +3 -4
  9. package/dist/components/feedback/EPopover.vue.d.ts +5 -0
  10. package/dist/components/hooks/useContainer.d.ts +8 -7
  11. package/dist/components/index.d.ts +1 -0
  12. package/dist/components/index.js +59 -55
  13. package/dist/components/navigation/ETabs/ETabs.vue.d.ts +4 -0
  14. package/dist/directives/index.js +3 -3
  15. package/dist/index.css +1 -1
  16. package/dist/node_modules/.pnpm/@intlify_core-base@11.4.10/node_modules/@intlify/core-base/dist/core-base.js +829 -0
  17. package/dist/node_modules/.pnpm/@intlify_message-compiler@11.4.10/node_modules/@intlify/message-compiler/dist/message-compiler.js +775 -0
  18. package/dist/node_modules/.pnpm/@intlify_shared@11.4.10/node_modules/@intlify/shared/dist/shared.js +148 -0
  19. package/dist/node_modules/.pnpm/sortablejs@1.15.7/node_modules/sortablejs/modular/sortable.esm.js +1110 -0
  20. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/controls/OrbitControls.js +439 -0
  21. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/curves/NURBSCurve.js +31 -0
  22. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/curves/NURBSUtils.js +115 -0
  23. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/libs/fflate.module.js +251 -0
  24. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/loaders/FBXLoader.js +1426 -0
  25. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/loaders/FontLoader.js +68 -0
  26. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/loaders/GLTFLoader.js +1340 -0
  27. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +24 -0
  28. package/dist/node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/utils/SkeletonUtils.js +20 -0
  29. package/dist/node_modules/.pnpm/vue-i18n@11.4.10_vue@3.5.41_typescript@5.9.3_/node_modules/vue-i18n/dist/vue-i18n.js +532 -0
  30. package/dist/package.json.js +86 -0
  31. package/dist/src/components/advanced/ERollingFollow/ERollingFollow.vue.js +7 -0
  32. package/dist/src/components/advanced/ERollingFollow/ERollingFollow.vue_vue_type_script_setup_true_lang.js +42 -0
  33. package/dist/src/components/advanced/EVirtualList/EVirtualList.vue.js +7 -0
  34. package/dist/src/components/advanced/EVirtualList/EVirtualList.vue_vue_type_script_setup_true_lang.js +41 -0
  35. package/dist/src/components/advanced/EWatermark/EWatermark.vue.js +7 -0
  36. package/dist/src/components/advanced/EWatermark/EWatermark.vue_vue_type_script_setup_true_lang.js +98 -0
  37. package/dist/src/components/basic/EAvatar/EAvatar.vue.js +7 -0
  38. package/dist/src/components/basic/EAvatar/EAvatar.vue_vue_type_script_setup_true_lang.js +45 -0
  39. package/dist/src/components/basic/EBadge/EBadge.vue.js +7 -0
  40. package/dist/src/components/basic/EBadge/EBadge.vue_vue_type_script_setup_true_lang.js +48 -0
  41. package/dist/src/components/basic/EButton/EButton.vue.js +7 -0
  42. package/dist/src/components/basic/EButton/EButton.vue_vue_type_script_setup_true_lang.js +37 -0
  43. package/dist/src/components/basic/ECard/ECard.vue.js +7 -0
  44. package/dist/src/components/basic/ECard/ECard.vue_vue_type_script_setup_true_lang.js +41 -0
  45. package/dist/src/components/basic/ESvgIcon/ESvgIcon.vue.js +5 -0
  46. package/dist/src/components/basic/ESvgIcon/ESvgIcon.vue_vue_type_script_setup_true_lang.js +11 -0
  47. package/dist/src/components/basic/EUnderLine/EUnderLine.vue.js +11 -0
  48. package/dist/src/components/data/ECalendar.vue.js +7 -0
  49. package/dist/src/components/data/ECalendar.vue_vue_type_script_setup_true_lang.js +109 -0
  50. package/dist/src/components/data/ECarousel/ECarousel.vue.js +7 -0
  51. package/dist/src/components/data/ECarousel/ECarousel.vue_vue_type_script_setup_true_lang.js +165 -0
  52. package/dist/src/components/data/ECarousel/ECarouselItem.vue.js +7 -0
  53. package/dist/src/components/data/ECarousel/ECarouselItem.vue_vue_type_script_setup_true_lang.js +42 -0
  54. package/dist/src/components/data/ECodeCollapse/ECodeCollapse.vue.js +7 -0
  55. package/dist/src/components/data/ECodeCollapse/ECodeCollapse.vue_vue_type_script_setup_true_lang.js +46 -0
  56. package/dist/src/components/data/ECollapse/ECollapse.vue.js +7 -0
  57. package/dist/src/components/data/ECollapse/ECollapse.vue_vue_type_script_setup_true_lang.js +29 -0
  58. package/dist/src/components/data/EImage.vue.js +7 -0
  59. package/dist/src/components/data/EImage.vue_vue_type_script_setup_true_lang.js +31 -0
  60. package/dist/src/components/data/EList.vue.js +7 -0
  61. package/dist/src/components/data/EList.vue_vue_type_script_setup_true_lang.js +52 -0
  62. package/dist/src/components/data/EMediaViewer/EMediaViewer.js +64 -0
  63. package/dist/src/components/data/EMediaViewer/EMediaViewer.vue.js +7 -0
  64. package/dist/src/components/data/EMediaViewer/EMediaViewer.vue_vue_type_script_setup_true_lang.js +210 -0
  65. package/dist/src/components/data/EProgress.vue.js +7 -0
  66. package/dist/src/components/data/EProgress.vue_vue_type_script_setup_true_lang.js +100 -0
  67. package/dist/src/components/data/ERollingPagination.vue.js +7 -0
  68. package/dist/src/components/data/ERollingPagination.vue_vue_type_script_setup_true_lang.js +45 -0
  69. package/dist/src/components/data/ESkeleton/ESkeleton.vue.js +14 -0
  70. package/dist/src/components/data/ESteps/EStepItem.vue.js +7 -0
  71. package/dist/src/components/data/ESteps/EStepItem.vue_vue_type_script_setup_true_lang.js +144 -0
  72. package/dist/src/components/data/ESteps/ESteps.vue.js +7 -0
  73. package/dist/src/components/data/ESteps/ESteps.vue_vue_type_script_setup_true_lang.js +25 -0
  74. package/dist/src/components/data/ETable/ETable.vue.js +7 -0
  75. package/dist/src/components/data/ETable/ETable.vue_vue_type_script_setup_true_lang.js +60 -0
  76. package/dist/src/components/data/ETable/ETableColumn.vue.js +5 -0
  77. package/dist/src/components/data/ETable/ETableColumn.vue_vue_type_script_setup_true_lang.js +23 -0
  78. package/dist/src/components/data/ETable/no_data.svg.js +4 -0
  79. package/dist/src/components/data/ETimeline/ETimeline.vue.js +7 -0
  80. package/dist/src/components/data/ETimeline/ETimeline.vue_vue_type_script_setup_true_lang.js +41 -0
  81. package/dist/src/components/data/ETimeline/ETimelineItem.vue.js +7 -0
  82. package/dist/src/components/data/ETimeline/ETimelineItem.vue_vue_type_script_setup_true_lang.js +44 -0
  83. package/dist/src/components/feedback/EDialog/EDialog.vue.js +7 -0
  84. package/dist/src/components/feedback/EDialog/EDialog.vue_vue_type_script_setup_true_lang.js +237 -0
  85. package/dist/src/components/feedback/EDrawer/EDrawer.vue.js +7 -0
  86. package/dist/src/components/feedback/EDrawer/EDrawer.vue_vue_type_script_setup_true_lang.js +166 -0
  87. package/dist/src/components/feedback/EMessage/EMessage.js +135 -0
  88. package/dist/src/components/feedback/EMessage/EMessage.vue.js +7 -0
  89. package/dist/src/components/feedback/EMessage/EMessage.vue_vue_type_script_setup_true_lang.js +34 -0
  90. package/dist/src/components/feedback/EMessageBox/EMessageBox.js +153 -0
  91. package/dist/src/components/feedback/EMessageBox/EMessageBox.vue.js +7 -0
  92. package/dist/src/components/feedback/EMessageBox/EMessageBox.vue_vue_type_script_setup_true_lang.js +74 -0
  93. package/dist/src/components/feedback/ENotification/ENotification.js +164 -0
  94. package/dist/src/components/feedback/ENotification/ENotification.vue.js +7 -0
  95. package/dist/src/components/feedback/ENotification/ENotification.vue_vue_type_script_setup_true_lang.js +56 -0
  96. package/dist/src/components/feedback/EPopover.vue.js +7 -0
  97. package/dist/src/components/feedback/EPopover.vue_vue_type_script_setup_true_lang.js +111 -0
  98. package/dist/src/components/feedback/ETooltip.vue.js +7 -0
  99. package/dist/src/components/feedback/ETooltip.vue_vue_type_script_setup_true_lang.js +73 -0
  100. package/dist/src/components/form/ECheckbox.vue.js +7 -0
  101. package/dist/src/components/form/ECheckbox.vue_vue_type_script_setup_true_lang.js +36 -0
  102. package/dist/src/components/form/EColorPicker.vue.js +7 -0
  103. package/dist/src/components/form/EColorPicker.vue_vue_type_script_setup_true_lang.js +309 -0
  104. package/dist/src/components/form/EConditionGroup/EConditionGroup.vue.js +7 -0
  105. package/dist/src/components/form/EConditionGroup/EConditionGroup.vue_vue_type_script_setup_true_lang.js +120 -0
  106. package/dist/src/components/form/EFileSelector.vue.js +7 -0
  107. package/dist/src/components/form/EFileSelector.vue_vue_type_script_setup_true_lang.js +58 -0
  108. package/dist/src/components/form/EForm/EForm.vue.js +7 -0
  109. package/dist/src/components/form/EForm/EForm.vue_vue_type_script_setup_true_lang.js +21 -0
  110. package/dist/src/components/form/EForm/EFormItem.vue.js +7 -0
  111. package/dist/src/components/form/EForm/EFormItem.vue_vue_type_script_setup_true_lang.js +44 -0
  112. package/dist/src/components/form/EInput/EInput.vue.js +7 -0
  113. package/dist/src/components/form/EInput/EInput.vue_vue_type_script_setup_true_lang.js +150 -0
  114. package/dist/src/components/form/ERadio.vue.js +7 -0
  115. package/dist/src/components/form/ERadio.vue_vue_type_script_setup_true_lang.js +36 -0
  116. package/dist/src/components/form/ESelect/ESelect.vue.js +8 -0
  117. package/dist/src/components/form/ESelect/ESelect.vue_vue_type_script_setup_true_lang.js +85 -0
  118. package/dist/src/components/form/ESlider.vue.js +7 -0
  119. package/dist/src/components/form/ESlider.vue_vue_type_script_setup_true_lang.js +77 -0
  120. package/dist/src/components/form/ETimePicker.vue.js +7 -0
  121. package/dist/src/components/form/ETimePicker.vue_vue_type_script_setup_true_lang.js +98 -0
  122. package/dist/src/components/geometry/ECube.vue.js +7 -0
  123. package/dist/src/components/geometry/ECube.vue_vue_type_script_setup_true_lang.js +11 -0
  124. package/dist/src/components/hooks/useContainer.js +129 -0
  125. package/dist/src/components/hooks/useLiquidGlass.js +63 -0
  126. package/dist/src/components/hooks/usePosition.js +42 -0
  127. package/dist/src/components/hooks/useZIndex.js +15 -0
  128. package/dist/src/components/layout/EContainerWithScrollbar.vue.js +7 -0
  129. package/dist/src/components/layout/EContainerWithScrollbar.vue_vue_type_script_setup_true_lang.js +27 -0
  130. package/dist/src/components/layout/EDivider.vue.js +5 -0
  131. package/dist/src/components/layout/EDivider.vue_vue_type_script_setup_true_lang.js +38 -0
  132. package/dist/src/components/layout/EScrollX.vue.js +7 -0
  133. package/dist/src/components/layout/EScrollX.vue_vue_type_script_setup_true_lang.js +34 -0
  134. package/dist/src/components/layout/EScrollbar.vue.js +7 -0
  135. package/dist/src/components/layout/EScrollbar.vue_vue_type_script_setup_true_lang.js +67 -0
  136. package/dist/src/components/navigation/EDropdown.vue.js +7 -0
  137. package/dist/src/components/navigation/EDropdown.vue_vue_type_script_setup_true_lang.js +109 -0
  138. package/dist/src/components/navigation/ETabs/ETabPane.vue.js +7 -0
  139. package/dist/src/components/navigation/ETabs/ETabPane.vue_vue_type_script_setup_true_lang.js +21 -0
  140. package/dist/src/components/navigation/ETabs/ETabs.vue.js +7 -0
  141. package/dist/src/components/navigation/ETabs/ETabs.vue_vue_type_script_setup_true_lang.js +104 -0
  142. package/dist/src/directives/EDrag.js +27 -0
  143. package/dist/src/directives/ESizeOb.js +23 -0
  144. package/dist/src/directives/ESlideIn.js +128 -0
  145. package/dist/src/utils/EAnimateCSSUtil.js +13 -0
  146. package/dist/src/utils/EClipboardUtil.js +19 -0
  147. package/dist/src/utils/EDomUtil.js +41 -0
  148. package/dist/src/utils/EEchartsUtil.js +23 -0
  149. package/dist/src/utils/EEventBus.js +16 -0
  150. package/dist/src/utils/EImageUtil.js +26 -0
  151. package/dist/src/utils/EJSONUtil.js +12 -0
  152. package/dist/src/utils/ELocalStorageUtil.js +15 -0
  153. package/dist/src/utils/EMediaQueryUtil.js +28 -0
  154. package/dist/src/utils/EStringUtil.js +11 -0
  155. package/dist/src/utils/EThreeUtil.js +40 -0
  156. package/dist/src/utils/ETimeUtil.js +22 -0
  157. package/dist/src/utils/EUUIDUtil.js +11 -0
  158. package/dist/utils/index.js +13 -13
  159. package/package.json +2 -6
@@ -0,0 +1,1426 @@
1
+ import { unzlibSync as e } from "../libs/fflate.module.js";
2
+ import { NURBSCurve as t } from "../curves/NURBSCurve.js";
3
+ import { AmbientLight as n, AnimationClip as r, Bone as i, BufferGeometry as a, ClampToEdgeWrapping as o, Color as s, ColorManagement as c, DirectionalLight as l, EquirectangularReflectionMapping as u, Euler as d, FileLoader as f, Float32BufferAttribute as p, Group as m, Line as h, LineBasicMaterial as g, Loader as _, LoaderUtils as v, MathUtils as y, Matrix3 as b, Matrix4 as x, Mesh as S, MeshLambertMaterial as C, MeshPhongMaterial as w, NumberKeyframeTrack as T, Object3D as E, PerspectiveCamera as D, PointLight as O, PropertyBinding as k, Quaternion as A, QuaternionKeyframeTrack as ee, RepeatWrapping as j, SRGBColorSpace as M, ShapeUtils as te, Skeleton as ne, SkinnedMesh as re, SpotLight as ie, Texture as ae, TextureLoader as oe, Uint16BufferAttribute as se, Vector2 as ce, Vector3 as N, Vector4 as le, VectorKeyframeTrack as ue } from "three";
4
+ //#region node_modules/.pnpm/three@0.185.1/node_modules/three/examples/jsm/loaders/FBXLoader.js
5
+ var P, F, I, L = class extends _ {
6
+ constructor(e) {
7
+ super(e);
8
+ }
9
+ load(e, t, n, r) {
10
+ let i = this, a = i.path === "" ? v.extractUrlBase(e) : i.path, o = new f(this.manager);
11
+ o.setPath(i.path), o.setResponseType("arraybuffer"), o.setRequestHeader(i.requestHeader), o.setWithCredentials(i.withCredentials), o.load(e, function(n) {
12
+ try {
13
+ t(i.parse(n, a));
14
+ } catch (t) {
15
+ r ? r(t) : console.error(t), i.manager.itemError(e);
16
+ }
17
+ }, n, r);
18
+ }
19
+ parse(e, t) {
20
+ if (de(e)) P = new H().parse(e);
21
+ else {
22
+ let t = $(e);
23
+ if (!fe(t)) throw Error("THREE.FBXLoader: Unknown format.");
24
+ if (G(t) < 7e3) throw Error("THREE.FBXLoader: FBX version not supported, FileVersion: " + G(t));
25
+ P = new V().parse(t);
26
+ }
27
+ return new R(new oe(this.manager).setPath(this.resourcePath || t).setCrossOrigin(this.crossOrigin), this.manager).parse(P);
28
+ }
29
+ }, R = class {
30
+ constructor(e, t) {
31
+ this.textureLoader = e, this.manager = t;
32
+ }
33
+ parse() {
34
+ F = this.parseConnections();
35
+ let e = this.parseImages(), t = this.parseTextures(e), n = this.parseMaterials(t), r = this.parseDeformers(), i = new z().parse(r);
36
+ return this.parseScene(r, i, n), I;
37
+ }
38
+ parseConnections() {
39
+ let e = new Map();
40
+ return "Connections" in P && P.Connections.connections.forEach(function(t) {
41
+ let n = t[0], r = t[1], i = t[2];
42
+ e.has(n) || e.set(n, {
43
+ parents: [],
44
+ children: []
45
+ });
46
+ let a = {
47
+ ID: r,
48
+ relationship: i
49
+ };
50
+ e.get(n).parents.push(a), e.has(r) || e.set(r, {
51
+ parents: [],
52
+ children: []
53
+ });
54
+ let o = {
55
+ ID: n,
56
+ relationship: i
57
+ };
58
+ e.get(r).children.push(o);
59
+ }), e;
60
+ }
61
+ parseImages() {
62
+ let e = {}, t = {};
63
+ if ("Video" in P.Objects) {
64
+ let n = P.Objects.Video;
65
+ for (let r in n) {
66
+ let i = n[r], a = parseInt(r);
67
+ if (e[a] = i.RelativeFilename || i.Filename, "Content" in i) {
68
+ let e = i.Content instanceof ArrayBuffer && i.Content.byteLength > 0, a = typeof i.Content == "string" && i.Content !== "";
69
+ if (e || a) {
70
+ let e = this.parseImage(n[r]);
71
+ t[i.RelativeFilename || i.Filename] = e;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ for (let n in e) {
77
+ let r = e[n];
78
+ e[n] = t[r] === void 0 ? e[n].split("\\").pop() : t[r];
79
+ }
80
+ return e;
81
+ }
82
+ parseImage(e) {
83
+ let t = e.Content, n = e.RelativeFilename || e.Filename, r = n.slice(n.lastIndexOf(".") + 1).toLowerCase(), i;
84
+ switch (r) {
85
+ case "bmp":
86
+ i = "image/bmp";
87
+ break;
88
+ case "jpg":
89
+ case "jpeg":
90
+ i = "image/jpeg";
91
+ break;
92
+ case "png":
93
+ i = "image/png";
94
+ break;
95
+ case "tif":
96
+ i = "image/tiff";
97
+ break;
98
+ case "tga":
99
+ this.manager.getHandler(".tga") === null && console.warn("FBXLoader: TGA loader not found, skipping ", n), i = "image/tga";
100
+ break;
101
+ case "webp":
102
+ i = "image/webp";
103
+ break;
104
+ default:
105
+ console.warn("FBXLoader: Image type \"" + r + "\" is not supported.");
106
+ return;
107
+ }
108
+ if (typeof t == "string") return "data:" + i + ";base64," + t;
109
+ {
110
+ let e = new Uint8Array(t);
111
+ return window.URL.createObjectURL(new Blob([e], { type: i }));
112
+ }
113
+ }
114
+ parseTextures(e) {
115
+ let t = new Map();
116
+ if ("Texture" in P.Objects) {
117
+ let n = P.Objects.Texture;
118
+ for (let r in n) {
119
+ let i = this.parseTexture(n[r], e);
120
+ t.set(parseInt(r), i);
121
+ }
122
+ }
123
+ return t;
124
+ }
125
+ parseTexture(e, t) {
126
+ let n = this.loadTexture(e, t);
127
+ n.ID = e.id, n.name = e.attrName;
128
+ let r = e.WrapModeU, i = e.WrapModeV, a = r === void 0 ? 0 : r.value, s = i === void 0 ? 0 : i.value;
129
+ if (n.wrapS = a === 0 ? j : o, n.wrapT = s === 0 ? j : o, "Scaling" in e) {
130
+ let t = e.Scaling.value;
131
+ n.repeat.x = t[0], n.repeat.y = t[1];
132
+ }
133
+ if ("Translation" in e) {
134
+ let t = e.Translation.value;
135
+ n.offset.x = t[0], n.offset.y = t[1];
136
+ }
137
+ return n;
138
+ }
139
+ loadTexture(e, t) {
140
+ let n = e.FileName.split(".").pop().toLowerCase(), r = this.manager.getHandler(`.${n}`);
141
+ r === null && (r = this.textureLoader);
142
+ let i = r.path;
143
+ i || r.setPath(this.textureLoader.path);
144
+ let a = F.get(e.id).children, o;
145
+ if (a !== void 0 && a.length > 0 && t[a[0].ID] !== void 0 && (o = t[a[0].ID], (o.indexOf("blob:") === 0 || o.indexOf("data:") === 0) && r.setPath(void 0)), o === void 0) return console.warn("FBXLoader: Undefined filename, creating placeholder texture."), new ae();
146
+ let s = r.load(o);
147
+ return r.setPath(i), s;
148
+ }
149
+ parseMaterials(e) {
150
+ let t = new Map();
151
+ if ("Material" in P.Objects) {
152
+ let n = P.Objects.Material;
153
+ for (let r in n) {
154
+ let i = this.parseMaterial(n[r], e);
155
+ i !== null && t.set(parseInt(r), i);
156
+ }
157
+ }
158
+ return t;
159
+ }
160
+ parseMaterial(e, t) {
161
+ let n = e.id, r = e.attrName, i = e.ShadingModel;
162
+ if (typeof i == "object" && (i = i.value), !F.has(n)) return null;
163
+ let a = this.parseParameters(e, t, n), o;
164
+ switch (i.toLowerCase()) {
165
+ case "phong":
166
+ o = new w();
167
+ break;
168
+ case "lambert":
169
+ o = new C();
170
+ break;
171
+ default: console.warn("THREE.FBXLoader: unknown material type \"%s\". Defaulting to MeshPhongMaterial.", i), o = new w();
172
+ }
173
+ return o.setValues(a), o.name = r, o;
174
+ }
175
+ parseParameters(e, t, n) {
176
+ let r = {};
177
+ e.BumpFactor && (r.bumpScale = e.BumpFactor.value), e.Diffuse ? r.color = c.colorSpaceToWorking(new s().fromArray(e.Diffuse.value), M) : e.DiffuseColor && (e.DiffuseColor.type === "Color" || e.DiffuseColor.type === "ColorRGB") && (r.color = c.colorSpaceToWorking(new s().fromArray(e.DiffuseColor.value), M)), e.DisplacementFactor && (r.displacementScale = e.DisplacementFactor.value), e.Emissive ? r.emissive = c.colorSpaceToWorking(new s().fromArray(e.Emissive.value), M) : e.EmissiveColor && (e.EmissiveColor.type === "Color" || e.EmissiveColor.type === "ColorRGB") && (r.emissive = c.colorSpaceToWorking(new s().fromArray(e.EmissiveColor.value), M)), e.EmissiveFactor && (r.emissiveIntensity = parseFloat(e.EmissiveFactor.value)), r.opacity = 1 - (e.TransparencyFactor ? parseFloat(e.TransparencyFactor.value) : 0), (r.opacity === 1 || r.opacity === 0) && (r.opacity = e.Opacity ? parseFloat(e.Opacity.value) : null, r.opacity === null && (r.opacity = 1)), r.opacity < 1 && (r.transparent = !0), e.ReflectionFactor && (r.reflectivity = e.ReflectionFactor.value), e.Shininess && (r.shininess = e.Shininess.value), e.Specular ? r.specular = c.colorSpaceToWorking(new s().fromArray(e.Specular.value), M) : e.SpecularColor && e.SpecularColor.type === "Color" && (r.specular = c.colorSpaceToWorking(new s().fromArray(e.SpecularColor.value), M));
178
+ let i = this;
179
+ return F.get(n).children.forEach(function(e) {
180
+ let n = e.relationship;
181
+ switch (n) {
182
+ case "Bump":
183
+ r.bumpMap = i.getTexture(t, e.ID);
184
+ break;
185
+ case "Maya|TEX_ao_map":
186
+ r.aoMap = i.getTexture(t, e.ID);
187
+ break;
188
+ case "DiffuseColor":
189
+ case "Maya|TEX_color_map":
190
+ r.map = i.getTexture(t, e.ID), r.map !== void 0 && (r.map.colorSpace = M);
191
+ break;
192
+ case "DisplacementColor":
193
+ r.displacementMap = i.getTexture(t, e.ID);
194
+ break;
195
+ case "EmissiveColor":
196
+ r.emissiveMap = i.getTexture(t, e.ID), r.emissiveMap !== void 0 && (r.emissiveMap.colorSpace = M);
197
+ break;
198
+ case "NormalMap":
199
+ case "Maya|TEX_normal_map":
200
+ r.normalMap = i.getTexture(t, e.ID);
201
+ break;
202
+ case "ReflectionColor":
203
+ r.envMap = i.getTexture(t, e.ID), r.envMap !== void 0 && (r.envMap.mapping = u, r.envMap.colorSpace = M);
204
+ break;
205
+ case "SpecularColor":
206
+ r.specularMap = i.getTexture(t, e.ID), r.specularMap !== void 0 && (r.specularMap.colorSpace = M);
207
+ break;
208
+ case "TransparentColor":
209
+ case "TransparencyFactor":
210
+ r.alphaMap = i.getTexture(t, e.ID), r.transparent = !0;
211
+ break;
212
+ default: console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.", n);
213
+ }
214
+ }), r;
215
+ }
216
+ getTexture(e, t) {
217
+ return "LayeredTexture" in P.Objects && t in P.Objects.LayeredTexture && (console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."), t = F.get(t).children[0].ID), e.get(t);
218
+ }
219
+ parseDeformers() {
220
+ let e = {}, t = {};
221
+ if ("Deformer" in P.Objects) {
222
+ let n = P.Objects.Deformer;
223
+ for (let r in n) {
224
+ let i = n[r], a = F.get(parseInt(r));
225
+ if (i.attrType === "Skin") {
226
+ let t = this.parseSkeleton(a, n);
227
+ t.ID = r, a.parents.length > 1 && console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."), t.geometryID = a.parents[0].ID, e[r] = t;
228
+ } else if (i.attrType === "BlendShape") {
229
+ let e = { id: r };
230
+ e.rawTargets = this.parseMorphTargets(a, n), e.id = r, a.parents.length > 1 && console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."), t[r] = e;
231
+ }
232
+ }
233
+ }
234
+ return {
235
+ skeletons: e,
236
+ morphTargets: t
237
+ };
238
+ }
239
+ parseSkeleton(e, t) {
240
+ let n = [];
241
+ return e.children.forEach(function(e) {
242
+ let r = t[e.ID];
243
+ if (r.attrType !== "Cluster") return;
244
+ let i = {
245
+ ID: e.ID,
246
+ indices: [],
247
+ weights: [],
248
+ transformLink: new x().fromArray(r.TransformLink.a)
249
+ };
250
+ "Indexes" in r && (i.indices = r.Indexes.a, i.weights = r.Weights.a), n.push(i);
251
+ }), {
252
+ rawBones: n,
253
+ bones: []
254
+ };
255
+ }
256
+ parseMorphTargets(e, t) {
257
+ let n = [];
258
+ for (let r = 0; r < e.children.length; r++) {
259
+ let i = e.children[r], a = t[i.ID], o = {
260
+ name: a.attrName,
261
+ initialWeight: a.DeformPercent,
262
+ id: a.id,
263
+ fullWeights: a.FullWeights.a
264
+ };
265
+ if (a.attrType !== "BlendShapeChannel") return;
266
+ o.geoID = F.get(parseInt(i.ID)).children.filter(function(e) {
267
+ return e.relationship === void 0;
268
+ })[0].ID, n.push(o);
269
+ }
270
+ return n;
271
+ }
272
+ parseScene(e, t, n) {
273
+ I = new m();
274
+ let r = this.parseModels(e.skeletons, t, n), i = P.Objects.Model, a = this;
275
+ r.forEach(function(e) {
276
+ let t = i[e.ID];
277
+ a.setLookAtProperties(e, t), F.get(e.ID).parents.forEach(function(t) {
278
+ let n = r.get(t.ID);
279
+ n !== void 0 && n.add(e);
280
+ }), e.parent === null && I.add(e);
281
+ }), this.addGlobalSceneSettings(), I.traverse(function(e) {
282
+ if (e.userData.transformData) {
283
+ e.parent && (e.userData.transformData.parentMatrix = e.parent.matrix, e.userData.transformData.parentMatrixWorld = e.parent.matrixWorld);
284
+ let t = X(e.userData.transformData);
285
+ e.applyMatrix4(t), e.updateWorldMatrix();
286
+ }
287
+ });
288
+ let o = this.parsePoseNodes(), s = new Set();
289
+ for (let t in e.skeletons) e.skeletons[t].rawBones.forEach(function(n, r) {
290
+ let i = e.skeletons[t].bones[r];
291
+ i && s.add(i.ID);
292
+ });
293
+ let c = new x();
294
+ I.traverse(function(e) {
295
+ if (e.isBone && e.ID !== void 0 && !s.has(e.ID)) {
296
+ let t = o[e.ID];
297
+ t !== void 0 && (e.parent ? (c.copy(e.parent.matrixWorld).invert(), c.multiply(t)) : c.copy(t), c.decompose(e.position, e.quaternion, e.scale), e.updateMatrix(), e.matrixWorld.copy(t));
298
+ }
299
+ }), this.bindSkeleton(e.skeletons, t, r);
300
+ let l = new B().parse();
301
+ I.children.length === 1 && I.children[0].isGroup && (I.children[0].animations = l, I = I.children[0]), I.animations = l, "GlobalSettings" in P && "UpAxis" in P.GlobalSettings && P.GlobalSettings.UpAxis.value === 2 && (console.warn("THREE.FBXLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted."), I.rotation.set(-Math.PI / 2, 0, 0));
302
+ }
303
+ parseModels(e, t, n) {
304
+ let r = new Map(), a = P.Objects.Model;
305
+ for (let o in a) {
306
+ let s = parseInt(o), c = a[o], l = F.get(s), u = this.buildSkeleton(l, e, s, c.attrName);
307
+ if (!u) {
308
+ switch (c.attrType) {
309
+ case "Camera":
310
+ u = this.createCamera(l);
311
+ break;
312
+ case "Light":
313
+ u = this.createLight(l);
314
+ break;
315
+ case "Mesh":
316
+ u = this.createMesh(l, t, n);
317
+ break;
318
+ case "NurbsCurve":
319
+ u = this.createCurve(l, t);
320
+ break;
321
+ case "LimbNode":
322
+ case "Root":
323
+ u = new i();
324
+ break;
325
+ default: u = new m();
326
+ }
327
+ u.name = c.attrName ? k.sanitizeNodeName(c.attrName) : "", u.userData.originalName = c.attrName, u.ID = s;
328
+ }
329
+ this.getTransformData(u, c), r.set(s, u);
330
+ }
331
+ return r;
332
+ }
333
+ buildSkeleton(e, t, n, r) {
334
+ let a = null;
335
+ return e.parents.forEach(function(e) {
336
+ for (let o in t) {
337
+ let s = t[o];
338
+ s.rawBones.forEach(function(t, o) {
339
+ if (t.ID === e.ID) {
340
+ let e = a;
341
+ a = new i(), a.matrixWorld.copy(t.transformLink), a.name = r ? k.sanitizeNodeName(r) : "", a.userData.originalName = r, a.ID = n, s.bones[o] = a, e !== null && a.add(e);
342
+ }
343
+ });
344
+ }
345
+ }), a;
346
+ }
347
+ createCamera(e) {
348
+ let t, n;
349
+ if (e.children.forEach(function(e) {
350
+ let t = P.Objects.NodeAttribute[e.ID];
351
+ t !== void 0 && (n = t);
352
+ }), n === void 0) t = new E();
353
+ else {
354
+ let e = 0;
355
+ n.CameraProjectionType !== void 0 && n.CameraProjectionType.value === 1 && (e = 1);
356
+ let r = 1;
357
+ n.NearPlane !== void 0 && (r = n.NearPlane.value / 1e3);
358
+ let i = 1e3;
359
+ n.FarPlane !== void 0 && (i = n.FarPlane.value / 1e3);
360
+ let a = window.innerWidth, o = window.innerHeight;
361
+ n.AspectWidth !== void 0 && n.AspectHeight !== void 0 && (a = n.AspectWidth.value, o = n.AspectHeight.value);
362
+ let s = a / o, c = 45;
363
+ n.FieldOfView !== void 0 && (c = n.FieldOfView.value);
364
+ let l = n.FocalLength ? n.FocalLength.value : null;
365
+ switch (e) {
366
+ case 0:
367
+ t = new D(c, s, r, i), l !== null && t.setFocalLength(l);
368
+ break;
369
+ case 1:
370
+ console.warn("THREE.FBXLoader: Orthographic cameras not supported yet."), t = new E();
371
+ break;
372
+ default: console.warn("THREE.FBXLoader: Unknown camera type " + e + "."), t = new E();
373
+ }
374
+ }
375
+ return t;
376
+ }
377
+ createLight(e) {
378
+ let t, n;
379
+ if (e.children.forEach(function(e) {
380
+ let t = P.Objects.NodeAttribute[e.ID];
381
+ t !== void 0 && (n = t);
382
+ }), n === void 0) t = new E();
383
+ else {
384
+ let e;
385
+ e = n.LightType === void 0 ? 0 : n.LightType.value;
386
+ let r = 16777215;
387
+ n.Color !== void 0 && (r = c.colorSpaceToWorking(new s().fromArray(n.Color.value), M));
388
+ let i = n.Intensity === void 0 ? 1 : n.Intensity.value / 100;
389
+ n.CastLightOnObject !== void 0 && n.CastLightOnObject.value === 0 && (i = 0);
390
+ let a = 0;
391
+ switch (n.FarAttenuationEnd !== void 0 && (a = n.EnableFarAttenuation !== void 0 && n.EnableFarAttenuation.value === 0 ? 0 : n.FarAttenuationEnd.value), e) {
392
+ case 0:
393
+ t = new O(r, i, a, 1);
394
+ break;
395
+ case 1:
396
+ t = new l(r, i);
397
+ break;
398
+ case 2:
399
+ let e = Math.PI / 3, o = 0;
400
+ n.OuterAngle === void 0 ? n.InnerAngle !== void 0 && (e = y.degToRad(n.InnerAngle.value)) : (e = y.degToRad(n.OuterAngle.value), n.InnerAngle !== void 0 && (o = 1 - n.InnerAngle.value / n.OuterAngle.value, o = Math.max(0, o))), t = new ie(r, i, a, e, o, 1);
401
+ break;
402
+ default: console.warn("THREE.FBXLoader: Unknown light type " + n.LightType.value + ", defaulting to a PointLight."), t = new O(r, i);
403
+ }
404
+ n.CastShadows !== void 0 && n.CastShadows.value === 1 && (t.castShadow = !0);
405
+ }
406
+ return t;
407
+ }
408
+ createMesh(e, t, n) {
409
+ let r, i = null, a = null, o = [];
410
+ if (e.children.forEach(function(e) {
411
+ t.has(e.ID) && (i = t.get(e.ID)), n.has(e.ID) && o.push(n.get(e.ID));
412
+ }), o.length > 1 ? a = o : o.length > 0 ? a = o[0] : (a = new w({
413
+ name: _.DEFAULT_MATERIAL_NAME,
414
+ color: 13421772
415
+ }), o.push(a)), "color" in i.attributes && o.forEach(function(e) {
416
+ e.vertexColors = !0;
417
+ }), i.groups.length > 0) {
418
+ let e = !1;
419
+ for (let t = 0, n = i.groups.length; t < n; t++) {
420
+ let n = i.groups[t];
421
+ (n.materialIndex < 0 || n.materialIndex >= o.length) && (n.materialIndex = o.length, e = !0);
422
+ }
423
+ if (e) {
424
+ let e = new w();
425
+ o.push(e);
426
+ }
427
+ }
428
+ return i.FBX_Deformer ? (r = new re(i, a), r.normalizeSkinWeights()) : r = new S(i, a), r;
429
+ }
430
+ createCurve(e, t) {
431
+ let n = e.children.reduce(function(e, n) {
432
+ return t.has(n.ID) && (e = t.get(n.ID)), e;
433
+ }, null), r = new g({
434
+ name: _.DEFAULT_MATERIAL_NAME,
435
+ color: 3342591,
436
+ linewidth: 1
437
+ });
438
+ return new h(n, r);
439
+ }
440
+ getTransformData(e, t) {
441
+ let n = {};
442
+ "InheritType" in t && (n.inheritType = parseInt(t.InheritType.value)), n.eulerOrder = "RotationOrder" in t ? Z(t.RotationOrder.value) : Z(0), "Lcl_Translation" in t && (n.translation = t.Lcl_Translation.value), "PreRotation" in t && (n.preRotation = t.PreRotation.value), "Lcl_Rotation" in t && (n.rotation = t.Lcl_Rotation.value), "PostRotation" in t && (n.postRotation = t.PostRotation.value), "Lcl_Scaling" in t && (n.scale = t.Lcl_Scaling.value), "ScalingOffset" in t && (n.scalingOffset = t.ScalingOffset.value), "ScalingPivot" in t && (n.scalingPivot = t.ScalingPivot.value), "RotationOffset" in t && (n.rotationOffset = t.RotationOffset.value), "RotationPivot" in t && (n.rotationPivot = t.RotationPivot.value), e.userData.transformData = n;
443
+ }
444
+ setLookAtProperties(e, t) {
445
+ "LookAtProperty" in t && F.get(e.ID).children.forEach(function(t) {
446
+ if (t.relationship === "LookAtProperty") {
447
+ let n = P.Objects.Model[t.ID];
448
+ if ("Lcl_Translation" in n) {
449
+ let t = n.Lcl_Translation.value;
450
+ e.target === void 0 ? e.lookAt(new N().fromArray(t)) : (e.target.position.fromArray(t), I.add(e.target));
451
+ }
452
+ }
453
+ });
454
+ }
455
+ bindSkeleton(e, t, n) {
456
+ for (let r in e) {
457
+ let i = e[r], a = [];
458
+ for (let e = 0, t = i.bones.length; e < t; e++) {
459
+ let t = new x();
460
+ i.bones[e] && i.rawBones[e] && t.copy(i.rawBones[e].transformLink).invert(), a.push(t);
461
+ }
462
+ F.get(parseInt(i.ID)).parents.forEach(function(e) {
463
+ if (t.has(e.ID)) {
464
+ let t = e.ID;
465
+ F.get(t).parents.forEach(function(e) {
466
+ if (n.has(e.ID)) {
467
+ let t = n.get(e.ID);
468
+ t.updateMatrixWorld(!0), t.bind(new ne(i.bones, a), t.matrixWorld);
469
+ }
470
+ });
471
+ }
472
+ });
473
+ }
474
+ }
475
+ parsePoseNodes() {
476
+ let e = {};
477
+ if ("Pose" in P.Objects) {
478
+ let t = P.Objects.Pose;
479
+ for (let n in t) if (t[n].attrType === "BindPose" && t[n].NbPoseNodes > 0) {
480
+ let r = t[n].PoseNode;
481
+ Array.isArray(r) ? r.forEach(function(t) {
482
+ e[t.Node] = new x().fromArray(t.Matrix.a);
483
+ }) : e[r.Node] = new x().fromArray(r.Matrix.a);
484
+ }
485
+ }
486
+ return e;
487
+ }
488
+ addGlobalSceneSettings() {
489
+ if ("GlobalSettings" in P) {
490
+ if ("AmbientColor" in P.GlobalSettings) {
491
+ let e = P.GlobalSettings.AmbientColor.value, t = e[0], r = e[1], i = e[2];
492
+ if (t !== 0 || r !== 0 || i !== 0) {
493
+ let e = new s().setRGB(t, r, i, M);
494
+ I.add(new n(e, 1));
495
+ }
496
+ }
497
+ "UnitScaleFactor" in P.GlobalSettings && (I.userData.unitScaleFactor = P.GlobalSettings.UnitScaleFactor.value);
498
+ }
499
+ }
500
+ }, z = class {
501
+ constructor() {
502
+ this.negativeMaterialIndices = !1;
503
+ }
504
+ parse(e) {
505
+ let t = new Map();
506
+ if ("Geometry" in P.Objects) {
507
+ let n = P.Objects.Geometry;
508
+ for (let r in n) {
509
+ let i = F.get(parseInt(r)), a = this.parseGeometry(i, n[r], e);
510
+ t.set(parseInt(r), a);
511
+ }
512
+ }
513
+ return this.negativeMaterialIndices === !0 && console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."), t;
514
+ }
515
+ parseGeometry(e, t, n) {
516
+ switch (t.attrType) {
517
+ case "Mesh": return this.parseMeshGeometry(e, t, n);
518
+ case "NurbsCurve": return this.parseNurbsGeometry(t);
519
+ }
520
+ }
521
+ parseMeshGeometry(e, t, n) {
522
+ let r = n.skeletons, i = [], a = e.parents.map(function(e) {
523
+ return P.Objects.Model[e.ID];
524
+ });
525
+ if (a.length === 0) return;
526
+ let o = e.children.reduce(function(e, t) {
527
+ return r[t.ID] !== void 0 && (e = r[t.ID]), e;
528
+ }, null);
529
+ e.children.forEach(function(e) {
530
+ n.morphTargets[e.ID] !== void 0 && i.push(n.morphTargets[e.ID]);
531
+ });
532
+ let s = a[0], c = {};
533
+ "RotationOrder" in s && (c.eulerOrder = Z(s.RotationOrder.value)), "InheritType" in s && (c.inheritType = parseInt(s.InheritType.value)), "GeometricTranslation" in s && (c.translation = s.GeometricTranslation.value), "GeometricRotation" in s && (c.rotation = s.GeometricRotation.value), "GeometricScaling" in s && (c.scale = s.GeometricScaling.value);
534
+ let l = X(c);
535
+ return this.genGeometry(t, o, i, l);
536
+ }
537
+ genGeometry(e, t, n, r) {
538
+ let i = new a();
539
+ e.attrName && (i.name = e.attrName);
540
+ let o = this.parseGeoNode(e, t), s = this.genBuffers(o), c = new p(s.vertex, 3);
541
+ if (c.applyMatrix4(r), i.setAttribute("position", c), s.colors.length > 0 && i.setAttribute("color", new p(s.colors, 3)), t && (i.setAttribute("skinIndex", new se(s.weightsIndices, 4)), i.setAttribute("skinWeight", new p(s.vertexWeights, 4)), i.FBX_Deformer = t), s.normal.length > 0) {
542
+ let e = new b().getNormalMatrix(r), t = new p(s.normal, 3);
543
+ t.applyNormalMatrix(e), i.setAttribute("normal", t);
544
+ }
545
+ if (s.uvs.forEach(function(e, t) {
546
+ let n = t === 0 ? "uv" : `uv${t}`;
547
+ i.setAttribute(n, new p(s.uvs[t], 2));
548
+ }), o.material && o.material.mappingType !== "AllSame") {
549
+ let e = s.materialIndex[0], t = 0;
550
+ if (s.materialIndex.forEach(function(n, r) {
551
+ n !== e && (i.addGroup(t, r - t, e), e = n, t = r);
552
+ }), i.groups.length > 0) {
553
+ let t = i.groups[i.groups.length - 1], n = t.start + t.count;
554
+ n !== s.materialIndex.length && i.addGroup(n, s.materialIndex.length - n, e);
555
+ }
556
+ i.groups.length === 0 && i.addGroup(0, s.materialIndex.length, s.materialIndex[0]);
557
+ }
558
+ return this.addMorphTargets(i, e, n, r), i;
559
+ }
560
+ parseGeoNode(e, t) {
561
+ let n = {};
562
+ if (n.vertexPositions = e.Vertices === void 0 ? [] : e.Vertices.a, n.vertexIndices = e.PolygonVertexIndex === void 0 ? [] : e.PolygonVertexIndex.a, e.LayerElementColor && e.LayerElementColor[0].Colors && (n.color = this.parseVertexColors(e.LayerElementColor[0])), e.LayerElementMaterial && (n.material = this.parseMaterialIndices(e.LayerElementMaterial[0])), e.LayerElementNormal && (n.normal = this.parseNormals(e.LayerElementNormal[0])), e.LayerElementUV) {
563
+ n.uv = [];
564
+ let t = 0;
565
+ for (; e.LayerElementUV[t];) e.LayerElementUV[t].UV && n.uv.push(this.parseUVs(e.LayerElementUV[t])), t++;
566
+ }
567
+ return n.weightTable = {}, t !== null && (n.skeleton = t, t.rawBones.forEach(function(e, t) {
568
+ e.indices.forEach(function(r, i) {
569
+ n.weightTable[r] === void 0 && (n.weightTable[r] = []), n.weightTable[r].push({
570
+ id: t,
571
+ weight: e.weights[i]
572
+ });
573
+ });
574
+ })), n;
575
+ }
576
+ genBuffers(e) {
577
+ let t = {
578
+ vertex: [],
579
+ normal: [],
580
+ colors: [],
581
+ uvs: [],
582
+ materialIndex: [],
583
+ vertexWeights: [],
584
+ weightsIndices: []
585
+ }, n = 0, r = 0, i = !1, a = [], o = [], s = [], c = [], l = [], u = [], d = this;
586
+ return e.vertexIndices.forEach(function(f, p) {
587
+ let m, h = !1;
588
+ f < 0 && (f ^= -1, h = !0);
589
+ let g = [], _ = [];
590
+ if (a.push(f * 3, f * 3 + 1, f * 3 + 2), e.color) {
591
+ let t = q(p, n, f, e.color);
592
+ s.push(t[0], t[1], t[2]);
593
+ }
594
+ if (e.skeleton) {
595
+ if (e.weightTable[f] !== void 0 && e.weightTable[f].forEach(function(e) {
596
+ _.push(e.weight), g.push(e.id);
597
+ }), _.length > 4) {
598
+ i ||= (console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."), !0);
599
+ let e = [
600
+ 0,
601
+ 0,
602
+ 0,
603
+ 0
604
+ ], t = [
605
+ 0,
606
+ 0,
607
+ 0,
608
+ 0
609
+ ];
610
+ _.forEach(function(n, r) {
611
+ let i = n, a = g[r];
612
+ t.forEach(function(t, n, r) {
613
+ if (i > t) {
614
+ r[n] = i, i = t;
615
+ let o = e[n];
616
+ e[n] = a, a = o;
617
+ }
618
+ });
619
+ }), g = e, _ = t;
620
+ }
621
+ for (; _.length < 4;) _.push(0), g.push(0);
622
+ for (let e = 0; e < 4; ++e) l.push(_[e]), u.push(g[e]);
623
+ }
624
+ if (e.normal) {
625
+ let t = q(p, n, f, e.normal);
626
+ o.push(t[0], t[1], t[2]);
627
+ }
628
+ e.material && e.material.mappingType !== "AllSame" && (m = q(p, n, f, e.material)[0], m < 0 && (d.negativeMaterialIndices = !0, m = 0)), e.uv && e.uv.forEach(function(e, t) {
629
+ let r = q(p, n, f, e);
630
+ c[t] === void 0 && (c[t] = []), c[t].push(r[0]), c[t].push(r[1]);
631
+ }), r++, h && (d.genFace(t, e, a, m, o, s, c, l, u, r), n++, r = 0, a = [], o = [], s = [], c = [], l = [], u = []);
632
+ }), t;
633
+ }
634
+ getNormalNewell(e) {
635
+ let t = new N(0, 0, 0);
636
+ for (let n = 0; n < e.length; n++) {
637
+ let r = e[n], i = e[(n + 1) % e.length];
638
+ t.x += (r.y - i.y) * (r.z + i.z), t.y += (r.z - i.z) * (r.x + i.x), t.z += (r.x - i.x) * (r.y + i.y);
639
+ }
640
+ return t.normalize(), t;
641
+ }
642
+ getNormalTangentAndBitangent(e) {
643
+ let t = this.getNormalNewell(e), n = (Math.abs(t.z) > .5 ? new N(0, 1, 0) : new N(0, 0, 1)).cross(t).normalize();
644
+ return {
645
+ normal: t,
646
+ tangent: n,
647
+ bitangent: t.clone().cross(n).normalize()
648
+ };
649
+ }
650
+ flattenVertex(e, t, n) {
651
+ return new ce(e.dot(t), e.dot(n));
652
+ }
653
+ genFace(e, t, n, r, i, a, o, s, c, l) {
654
+ let u;
655
+ if (l > 3) {
656
+ let e = [], r = t.baseVertexPositions || t.vertexPositions;
657
+ for (let t = 0; t < n.length; t += 3) e.push(new N(r[n[t]], r[n[t + 1]], r[n[t + 2]]));
658
+ let { tangent: i, bitangent: a } = this.getNormalTangentAndBitangent(e), o = [];
659
+ for (let t of e) o.push(this.flattenVertex(t, i, a));
660
+ u = te.triangulateShape(o, []);
661
+ } else u = [[
662
+ 0,
663
+ 1,
664
+ 2
665
+ ]];
666
+ for (let [l, d, f] of u) e.vertex.push(t.vertexPositions[n[l * 3]]), e.vertex.push(t.vertexPositions[n[l * 3 + 1]]), e.vertex.push(t.vertexPositions[n[l * 3 + 2]]), e.vertex.push(t.vertexPositions[n[d * 3]]), e.vertex.push(t.vertexPositions[n[d * 3 + 1]]), e.vertex.push(t.vertexPositions[n[d * 3 + 2]]), e.vertex.push(t.vertexPositions[n[f * 3]]), e.vertex.push(t.vertexPositions[n[f * 3 + 1]]), e.vertex.push(t.vertexPositions[n[f * 3 + 2]]), t.skeleton && (e.vertexWeights.push(s[l * 4]), e.vertexWeights.push(s[l * 4 + 1]), e.vertexWeights.push(s[l * 4 + 2]), e.vertexWeights.push(s[l * 4 + 3]), e.vertexWeights.push(s[d * 4]), e.vertexWeights.push(s[d * 4 + 1]), e.vertexWeights.push(s[d * 4 + 2]), e.vertexWeights.push(s[d * 4 + 3]), e.vertexWeights.push(s[f * 4]), e.vertexWeights.push(s[f * 4 + 1]), e.vertexWeights.push(s[f * 4 + 2]), e.vertexWeights.push(s[f * 4 + 3]), e.weightsIndices.push(c[l * 4]), e.weightsIndices.push(c[l * 4 + 1]), e.weightsIndices.push(c[l * 4 + 2]), e.weightsIndices.push(c[l * 4 + 3]), e.weightsIndices.push(c[d * 4]), e.weightsIndices.push(c[d * 4 + 1]), e.weightsIndices.push(c[d * 4 + 2]), e.weightsIndices.push(c[d * 4 + 3]), e.weightsIndices.push(c[f * 4]), e.weightsIndices.push(c[f * 4 + 1]), e.weightsIndices.push(c[f * 4 + 2]), e.weightsIndices.push(c[f * 4 + 3])), t.color && (e.colors.push(a[l * 3]), e.colors.push(a[l * 3 + 1]), e.colors.push(a[l * 3 + 2]), e.colors.push(a[d * 3]), e.colors.push(a[d * 3 + 1]), e.colors.push(a[d * 3 + 2]), e.colors.push(a[f * 3]), e.colors.push(a[f * 3 + 1]), e.colors.push(a[f * 3 + 2])), t.material && t.material.mappingType !== "AllSame" && (e.materialIndex.push(r), e.materialIndex.push(r), e.materialIndex.push(r)), t.normal && (e.normal.push(i[l * 3]), e.normal.push(i[l * 3 + 1]), e.normal.push(i[l * 3 + 2]), e.normal.push(i[d * 3]), e.normal.push(i[d * 3 + 1]), e.normal.push(i[d * 3 + 2]), e.normal.push(i[f * 3]), e.normal.push(i[f * 3 + 1]), e.normal.push(i[f * 3 + 2])), t.uv && t.uv.forEach(function(t, n) {
667
+ e.uvs[n] === void 0 && (e.uvs[n] = []), e.uvs[n].push(o[n][l * 2]), e.uvs[n].push(o[n][l * 2 + 1]), e.uvs[n].push(o[n][d * 2]), e.uvs[n].push(o[n][d * 2 + 1]), e.uvs[n].push(o[n][f * 2]), e.uvs[n].push(o[n][f * 2 + 1]);
668
+ });
669
+ }
670
+ addMorphTargets(e, t, n, r) {
671
+ if (n.length === 0) return;
672
+ e.morphTargetsRelative = !0, e.morphAttributes.position = [];
673
+ let i = r.clone().setPosition(0, 0, 0), a = this;
674
+ n.forEach(function(n) {
675
+ n.rawTargets.forEach(function(n) {
676
+ let r = P.Objects.Geometry[n.geoID];
677
+ r !== void 0 && a.genMorphGeometry(e, t, r, i, n.name);
678
+ });
679
+ });
680
+ }
681
+ genMorphGeometry(e, t, n, r, i) {
682
+ let a = t.Vertices === void 0 ? [] : t.Vertices.a, o = t.PolygonVertexIndex === void 0 ? [] : t.PolygonVertexIndex.a, s = n.Vertices === void 0 ? [] : n.Vertices.a, c = n.Indexes === void 0 ? [] : n.Indexes.a, l = e.attributes.position.count * 3, u = new Float32Array(l);
683
+ for (let e = 0; e < c.length; e++) {
684
+ let t = c[e] * 3;
685
+ u[t] = s[e * 3], u[t + 1] = s[e * 3 + 1], u[t + 2] = s[e * 3 + 2];
686
+ }
687
+ let d = {
688
+ vertexIndices: o,
689
+ vertexPositions: u,
690
+ baseVertexPositions: a
691
+ }, f = this.genBuffers(d), m = new p(f.vertex, 3);
692
+ m.name = i || n.attrName, m.applyMatrix4(r), e.morphAttributes.position.push(m);
693
+ }
694
+ parseNormals(e) {
695
+ let t = e.MappingInformationType, n = e.ReferenceInformationType, r = e.Normals.a, i = [];
696
+ return n === "IndexToDirect" && ("NormalIndex" in e ? i = e.NormalIndex.a : "NormalsIndex" in e && (i = e.NormalsIndex.a)), {
697
+ dataSize: 3,
698
+ buffer: r,
699
+ indices: i,
700
+ mappingType: t,
701
+ referenceType: n
702
+ };
703
+ }
704
+ parseUVs(e) {
705
+ let t = e.MappingInformationType, n = e.ReferenceInformationType, r = e.UV.a, i = [];
706
+ return n === "IndexToDirect" && (i = e.UVIndex.a), {
707
+ dataSize: 2,
708
+ buffer: r,
709
+ indices: i,
710
+ mappingType: t,
711
+ referenceType: n
712
+ };
713
+ }
714
+ parseVertexColors(e) {
715
+ let t = e.MappingInformationType, n = e.ReferenceInformationType, r = e.Colors.a, i = [];
716
+ n === "IndexToDirect" && (i = e.ColorIndex.a);
717
+ for (let e = 0, t = new s(); e < r.length; e += 4) t.fromArray(r, e), c.colorSpaceToWorking(t, M), t.toArray(r, e);
718
+ return {
719
+ dataSize: 4,
720
+ buffer: r,
721
+ indices: i,
722
+ mappingType: t,
723
+ referenceType: n
724
+ };
725
+ }
726
+ parseMaterialIndices(e) {
727
+ let t = e.MappingInformationType, n = e.ReferenceInformationType;
728
+ if (t === "NoMappingInformation") return {
729
+ dataSize: 1,
730
+ buffer: [0],
731
+ indices: [0],
732
+ mappingType: "AllSame",
733
+ referenceType: n
734
+ };
735
+ let r = e.Materials.a, i = [];
736
+ for (let e = 0; e < r.length; ++e) i.push(e);
737
+ return {
738
+ dataSize: 1,
739
+ buffer: r,
740
+ indices: i,
741
+ mappingType: t,
742
+ referenceType: n
743
+ };
744
+ }
745
+ parseNurbsGeometry(e) {
746
+ let n = parseInt(e.Order);
747
+ if (isNaN(n)) return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s", e.Order, e.id), new a();
748
+ let r = n - 1, i = e.KnotVector.a, o = [], s = e.Points.a;
749
+ for (let e = 0, t = s.length; e < t; e += 4) o.push(new le().fromArray(s, e));
750
+ let c, l;
751
+ if (e.Form === "Closed") o.push(o[0]);
752
+ else if (e.Form === "Periodic") {
753
+ c = r, l = i.length - 1 - c;
754
+ for (let e = 0; e < r; ++e) o.push(o[e]);
755
+ }
756
+ let u = new t(r, i, o, c, l).getPoints(o.length * 12);
757
+ return new a().setFromPoints(u);
758
+ }
759
+ }, B = class {
760
+ parse() {
761
+ let e = [], t = this.parseClips();
762
+ if (t !== void 0) for (let n in t) {
763
+ let r = t[n], i = this.addClip(r);
764
+ e.push(i);
765
+ }
766
+ return e;
767
+ }
768
+ parseClips() {
769
+ if (P.Objects.AnimationCurve === void 0) return;
770
+ let e = this.parseAnimationCurveNodes();
771
+ this.parseAnimationCurves(e);
772
+ let t = this.parseAnimationLayers(e);
773
+ return this.parseAnimStacks(t);
774
+ }
775
+ parseAnimationCurveNodes() {
776
+ let e = P.Objects.AnimationCurveNode, t = new Map();
777
+ for (let n in e) {
778
+ let r = e[n];
779
+ if (r.attrName.match(/S|R|T|DeformPercent/) !== null) {
780
+ let e = {
781
+ id: r.id,
782
+ attr: r.attrName,
783
+ curves: {}
784
+ };
785
+ t.set(e.id, e);
786
+ }
787
+ }
788
+ return t;
789
+ }
790
+ parseAnimationCurves(e) {
791
+ let t = P.Objects.AnimationCurve;
792
+ for (let n in t) {
793
+ let r = {
794
+ id: t[n].id,
795
+ times: t[n].KeyTime.a.map(pe),
796
+ values: t[n].KeyValueFloat.a
797
+ }, i = F.get(r.id);
798
+ if (i !== void 0) {
799
+ let t = i.parents[0].ID, n = i.parents[0].relationship;
800
+ n.match(/X/) ? e.get(t).curves.x = r : n.match(/Y/) ? e.get(t).curves.y = r : n.match(/Z/) ? e.get(t).curves.z = r : n.match(/DeformPercent/) && e.has(t) && (e.get(t).curves.morph = r);
801
+ }
802
+ }
803
+ }
804
+ parseAnimationLayers(e) {
805
+ let t = P.Objects.AnimationLayer, n = new Map();
806
+ for (let r in t) {
807
+ let t = [], i = F.get(parseInt(r));
808
+ i !== void 0 && (i.children.forEach(function(n, r) {
809
+ if (e.has(n.ID)) {
810
+ let i = e.get(n.ID);
811
+ if (i.curves.x !== void 0 || i.curves.y !== void 0 || i.curves.z !== void 0) {
812
+ if (t[r] === void 0) {
813
+ let e = F.get(n.ID).parents.filter(function(e) {
814
+ return e.relationship !== void 0;
815
+ });
816
+ if (e.length === 0) return;
817
+ let i = e[0].ID;
818
+ if (i !== void 0) {
819
+ let e = P.Objects.Model[i.toString()];
820
+ if (e === void 0) {
821
+ console.warn("THREE.FBXLoader: Encountered a unused curve.", n);
822
+ return;
823
+ }
824
+ let a = {
825
+ modelName: e.attrName ? k.sanitizeNodeName(e.attrName) : "",
826
+ ID: e.id,
827
+ initialPosition: [
828
+ 0,
829
+ 0,
830
+ 0
831
+ ],
832
+ initialRotation: [
833
+ 0,
834
+ 0,
835
+ 0
836
+ ],
837
+ initialScale: [
838
+ 1,
839
+ 1,
840
+ 1
841
+ ]
842
+ };
843
+ I.traverse(function(t) {
844
+ t.ID === e.id && (a.transform = t.matrix, t.userData.transformData && (a.eulerOrder = t.userData.transformData.eulerOrder, t.userData.transformData.rotation && (a.initialRotation = t.userData.transformData.rotation)));
845
+ }), a.transform ||= new x(), "PreRotation" in e && (a.preRotation = e.PreRotation.value), "PostRotation" in e && (a.postRotation = e.PostRotation.value), t[r] = a;
846
+ }
847
+ }
848
+ t[r] && (t[r][i.attr] = i);
849
+ } else if (i.curves.morph !== void 0) {
850
+ if (t[r] === void 0) {
851
+ let e = F.get(n.ID).parents.filter(function(e) {
852
+ return e.relationship !== void 0;
853
+ });
854
+ if (e.length === 0) return;
855
+ let i = e[0].ID, a = F.get(i).parents[0].ID, o = F.get(a).parents[0].ID, s = F.get(o).parents[0].ID, c = P.Objects.Model[s], l = {
856
+ modelName: c.attrName ? k.sanitizeNodeName(c.attrName) : "",
857
+ morphName: P.Objects.Deformer[i].attrName
858
+ };
859
+ t[r] = l;
860
+ }
861
+ t[r][i.attr] = i;
862
+ }
863
+ }
864
+ }), n.set(parseInt(r), t));
865
+ }
866
+ return n;
867
+ }
868
+ parseAnimStacks(e) {
869
+ let t = P.Objects.AnimationStack, n = {};
870
+ for (let r in t) {
871
+ let i = F.get(parseInt(r)).children;
872
+ i.length > 1 && console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");
873
+ let a = e.get(i[0].ID);
874
+ n[r] = {
875
+ name: t[r].attrName,
876
+ layer: a
877
+ };
878
+ }
879
+ return n;
880
+ }
881
+ addClip(e) {
882
+ let t = [], n = this;
883
+ return e.layer.forEach(function(e) {
884
+ t = t.concat(n.generateTracks(e));
885
+ }), new r(e.name, -1, t);
886
+ }
887
+ generateTracks(e) {
888
+ let t = [], n = new N(), r = new N();
889
+ if (e.transform && e.transform.decompose(n, new A(), r), n = n.toArray(), r = r.toArray(), e.T !== void 0 && Object.keys(e.T.curves).length > 0) {
890
+ let r = this.generateVectorTrack(e.modelName, e.T.curves, n, "position");
891
+ r !== void 0 && t.push(r);
892
+ }
893
+ if (e.R !== void 0 && Object.keys(e.R.curves).length > 0) {
894
+ let n = this.generateRotationTrack(e.modelName, e.R.curves, e.preRotation, e.postRotation, e.eulerOrder, e.initialRotation);
895
+ n !== void 0 && t.push(n);
896
+ }
897
+ if (e.S !== void 0 && Object.keys(e.S.curves).length > 0) {
898
+ let n = this.generateVectorTrack(e.modelName, e.S.curves, r, "scale");
899
+ n !== void 0 && t.push(n);
900
+ }
901
+ if (e.DeformPercent !== void 0) {
902
+ let n = this.generateMorphTrack(e);
903
+ n !== void 0 && t.push(n);
904
+ }
905
+ return t;
906
+ }
907
+ generateVectorTrack(e, t, n, r) {
908
+ let i = this.getTimesForAllAxes(t), a = this.getKeyframeTrackValues(i, t, n);
909
+ return new ue(e + "." + r, i, a);
910
+ }
911
+ generateRotationTrack(e, t, n, r, i, a) {
912
+ let o, s;
913
+ if (t.x !== void 0 || t.y !== void 0 || t.z !== void 0) {
914
+ let e = this.getTimesForAllAxes(t);
915
+ if (e.length > 0) {
916
+ let n = a || [
917
+ 0,
918
+ 0,
919
+ 0
920
+ ], r = this.synchronizeCurve(t.x, e, n[0]), c = this.synchronizeCurve(t.y, e, n[1]), l = this.synchronizeCurve(t.z, e, n[2]), u = this.interpolateRotations(r, c, l, i);
921
+ o = u[0], s = u[1];
922
+ }
923
+ }
924
+ let c = Z(0);
925
+ n !== void 0 && (n = n.map(y.degToRad), n.push(c), n = new d().fromArray(n), n = new A().setFromEuler(n)), r !== void 0 && (r = r.map(y.degToRad), r.push(c), r = new d().fromArray(r), r = new A().setFromEuler(r).invert());
926
+ let l = new A(), u = new d(), f = [];
927
+ if (!(!s || !o)) {
928
+ for (let e = 0; e < s.length; e += 3) u.set(s[e], s[e + 1], s[e + 2], i), l.setFromEuler(u), n !== void 0 && l.premultiply(n), r !== void 0 && l.multiply(r), e > 2 && new A().fromArray(f, (e - 3) / 3 * 4).dot(l) < 0 && l.set(-l.x, -l.y, -l.z, -l.w), l.toArray(f, e / 3 * 4);
929
+ return new ee(e + ".quaternion", o, f);
930
+ }
931
+ }
932
+ generateMorphTrack(e) {
933
+ let t = e.DeformPercent.curves.morph, n = t.values.map(function(e) {
934
+ return e / 100;
935
+ }), r = I.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];
936
+ return new T(e.modelName + ".morphTargetInfluences[" + r + "]", t.times, n);
937
+ }
938
+ getTimesForAllAxes(e) {
939
+ let t = [];
940
+ if (e.x !== void 0 && (t = t.concat(e.x.times)), e.y !== void 0 && (t = t.concat(e.y.times)), e.z !== void 0 && (t = t.concat(e.z.times)), t = t.sort(function(e, t) {
941
+ return e - t;
942
+ }), t.length > 1) {
943
+ let e = 1, n = t[0];
944
+ for (let r = 1; r < t.length; r++) {
945
+ let i = t[r];
946
+ i !== n && (t[e] = i, n = i, e++);
947
+ }
948
+ t = t.slice(0, e);
949
+ }
950
+ return t;
951
+ }
952
+ getKeyframeTrackValues(e, t, n) {
953
+ let r = n, i = [], a = -1, o = -1, s = -1;
954
+ return e.forEach(function(e) {
955
+ if (t.x && (a = t.x.times.indexOf(e)), t.y && (o = t.y.times.indexOf(e)), t.z && (s = t.z.times.indexOf(e)), a !== -1) {
956
+ let e = t.x.values[a];
957
+ i.push(e), r[0] = e;
958
+ } else i.push(r[0]);
959
+ if (o !== -1) {
960
+ let e = t.y.values[o];
961
+ i.push(e), r[1] = e;
962
+ } else i.push(r[1]);
963
+ if (s !== -1) {
964
+ let e = t.z.values[s];
965
+ i.push(e), r[2] = e;
966
+ } else i.push(r[2]);
967
+ }), i;
968
+ }
969
+ synchronizeCurve(e, t, n) {
970
+ if (e === void 0) return {
971
+ times: t,
972
+ values: t.map(() => n)
973
+ };
974
+ if (e.times.length === t.length) return e;
975
+ let r = [];
976
+ for (let i = 0; i < t.length; i++) r.push(this.sampleCurveValue(e, t[i], n));
977
+ return {
978
+ times: t,
979
+ values: r
980
+ };
981
+ }
982
+ sampleCurveValue(e, t, n) {
983
+ let r = e.times, i = e.values;
984
+ if (t <= r[0]) return i[0];
985
+ if (t >= r[r.length - 1]) return i[i.length - 1];
986
+ for (let e = 0; e < r.length - 1; e++) if (t >= r[e] && t <= r[e + 1]) {
987
+ if (r[e] === t) return i[e];
988
+ let n = (t - r[e]) / (r[e + 1] - r[e]);
989
+ return i[e] * (1 - n) + i[e + 1] * n;
990
+ }
991
+ return n;
992
+ }
993
+ interpolateRotations(e, t, n, r) {
994
+ let i = [], a = [];
995
+ i.push(e.times[0]), a.push(y.degToRad(e.values[0])), a.push(y.degToRad(t.values[0])), a.push(y.degToRad(n.values[0]));
996
+ for (let o = 1; o < e.values.length; o++) {
997
+ let s = [
998
+ e.values[o - 1],
999
+ t.values[o - 1],
1000
+ n.values[o - 1]
1001
+ ];
1002
+ if (isNaN(s[0]) || isNaN(s[1]) || isNaN(s[2])) continue;
1003
+ let c = s.map(y.degToRad), l = [
1004
+ e.values[o],
1005
+ t.values[o],
1006
+ n.values[o]
1007
+ ];
1008
+ if (isNaN(l[0]) || isNaN(l[1]) || isNaN(l[2])) continue;
1009
+ let u = l.map(y.degToRad), f = [
1010
+ l[0] - s[0],
1011
+ l[1] - s[1],
1012
+ l[2] - s[2]
1013
+ ], p = [
1014
+ Math.abs(f[0]),
1015
+ Math.abs(f[1]),
1016
+ Math.abs(f[2])
1017
+ ];
1018
+ if (p[0] >= 180 || p[1] >= 180 || p[2] >= 180) {
1019
+ let t = Math.max(...p) / 180, n = new d(...c, r), s = new d(...u, r), l = new A().setFromEuler(n), f = new A().setFromEuler(s);
1020
+ l.dot(f) < 0 && f.set(-f.x, -f.y, -f.z, -f.w);
1021
+ let m = e.times[o - 1], h = e.times[o] - m, g = new A(), _ = new d();
1022
+ for (let e = 0; e < 1; e += 1 / t) g.copy(l.clone().slerp(f.clone(), e)), i.push(m + e * h), _.setFromQuaternion(g, r), a.push(_.x), a.push(_.y), a.push(_.z);
1023
+ } else i.push(e.times[o]), a.push(y.degToRad(e.values[o])), a.push(y.degToRad(t.values[o])), a.push(y.degToRad(n.values[o]));
1024
+ }
1025
+ return [i, a];
1026
+ }
1027
+ }, V = class {
1028
+ getPrevNode() {
1029
+ return this.nodeStack[this.currentIndent - 2];
1030
+ }
1031
+ getCurrentNode() {
1032
+ return this.nodeStack[this.currentIndent - 1];
1033
+ }
1034
+ getCurrentProp() {
1035
+ return this.currentProp;
1036
+ }
1037
+ pushStack(e) {
1038
+ this.nodeStack.push(e), this.currentIndent += 1;
1039
+ }
1040
+ popStack() {
1041
+ this.nodeStack.pop(), --this.currentIndent;
1042
+ }
1043
+ setCurrentProp(e, t) {
1044
+ this.currentProp = e, this.currentPropName = t;
1045
+ }
1046
+ parse(e) {
1047
+ this.currentIndent = 0, this.allNodes = new W(), this.nodeStack = [], this.currentProp = [], this.currentPropName = "";
1048
+ let t = this, n = e.split(/[\r\n]+/);
1049
+ return n.forEach(function(e, r) {
1050
+ let i = e.match(/^[\s\t]*;/), a = e.match(/^[\s\t]*$/);
1051
+ if (i || a) return;
1052
+ let o = e.match("^\\t{" + t.currentIndent + "}(\\w+):(.*){", ""), s = e.match("^\\t{" + t.currentIndent + "}(\\w+):[\\s\\t\\r\\n](.*)"), c = e.match("^\\t{" + (t.currentIndent - 1) + "}}");
1053
+ o ? t.parseNodeBegin(e, o) : s ? t.parseNodeProperty(e, s, n[++r]) : c ? t.popStack() : e.match(/^[^\s\t}]/) && t.parseNodePropertyContinued(e);
1054
+ }), this.allNodes;
1055
+ }
1056
+ parseNodeBegin(e, t) {
1057
+ let n = t[1].trim().replace(/^"/, "").replace(/"$/, ""), r = t[2].split(",").map(function(e) {
1058
+ return e.trim().replace(/^"/, "").replace(/"$/, "");
1059
+ }), i = { name: n }, a = this.parseNodeAttr(r), o = this.getCurrentNode();
1060
+ this.currentIndent === 0 ? this.allNodes.add(n, i) : n in o ? (n === "PoseNode" ? o.PoseNode.push(i) : o[n].id !== void 0 && (o[n] = {}, o[n][o[n].id] = o[n]), a.id !== "" && (o[n][a.id] = i)) : typeof a.id == "number" ? (o[n] = {}, o[n][a.id] = i) : n !== "Properties70" && (o[n] = n === "PoseNode" ? [i] : i), typeof a.id == "number" && (i.id = a.id), a.name !== "" && (i.attrName = a.name), a.type !== "" && (i.attrType = a.type), this.pushStack(i);
1061
+ }
1062
+ parseNodeAttr(e) {
1063
+ let t = e[0];
1064
+ e[0] !== "" && (t = parseInt(e[0]), isNaN(t) && (t = e[0]));
1065
+ let n = "", r = "";
1066
+ return e.length > 1 && (n = e[1].replace(/^(\w+)::/, ""), r = e[2]), {
1067
+ id: t,
1068
+ name: n,
1069
+ type: r
1070
+ };
1071
+ }
1072
+ parseNodeProperty(e, t, n) {
1073
+ let r = t[1].replace(/^"/, "").replace(/"$/, "").trim(), i = t[2].replace(/^"/, "").replace(/"$/, "").trim();
1074
+ r === "Content" && i === "," && (i = n.replace(/"/g, "").replace(/,$/, "").trim());
1075
+ let a = this.getCurrentNode();
1076
+ if (a.name === "Properties70") {
1077
+ this.parseNodeSpecialProperty(e, r, i);
1078
+ return;
1079
+ }
1080
+ if (r === "C") {
1081
+ let e = i.split(",").slice(1), t = parseInt(e[0]), n = parseInt(e[1]), o = i.split(",").slice(3);
1082
+ o = o.map(function(e) {
1083
+ return e.trim().replace(/^"/, "");
1084
+ }), r = "connections", i = [t, n], me(i, o), a[r] === void 0 && (a[r] = []);
1085
+ }
1086
+ r === "Node" && (a.id = i), r in a && Array.isArray(a[r]) ? a[r].push(i) : r === "a" ? a.a = i : a[r] = i, this.setCurrentProp(a, r), r === "a" && i.slice(-1) !== "," && (a.a = Q(i));
1087
+ }
1088
+ parseNodePropertyContinued(e) {
1089
+ let t = this.getCurrentNode();
1090
+ t.a += e, e.slice(-1) !== "," && (t.a = Q(t.a));
1091
+ }
1092
+ parseNodeSpecialProperty(e, t, n) {
1093
+ let r = n.split("\",").map(function(e) {
1094
+ return e.trim().replace(/^\"/, "").replace(/\s/, "_");
1095
+ }), i = r[0], a = r[1], o = r[2], s = r[3], c = r[4];
1096
+ switch (a) {
1097
+ case "int":
1098
+ case "enum":
1099
+ case "bool":
1100
+ case "ULongLong":
1101
+ case "double":
1102
+ case "Number":
1103
+ case "FieldOfView":
1104
+ c = parseFloat(c);
1105
+ break;
1106
+ case "Color":
1107
+ case "ColorRGB":
1108
+ case "Vector3D":
1109
+ case "Lcl_Translation":
1110
+ case "Lcl_Rotation":
1111
+ case "Lcl_Scaling": c = Q(c);
1112
+ }
1113
+ this.getPrevNode()[i] = {
1114
+ type: a,
1115
+ type2: o,
1116
+ flag: s,
1117
+ value: c
1118
+ }, this.setCurrentProp(this.getPrevNode(), i);
1119
+ }
1120
+ }, H = class {
1121
+ parse(e) {
1122
+ let t = new U(e);
1123
+ t.skip(23);
1124
+ let n = t.getUint32();
1125
+ if (n < 6400) throw Error("THREE.FBXLoader: FBX version not supported, FileVersion: " + n);
1126
+ let r = new W();
1127
+ for (; !this.endOfContent(t);) {
1128
+ let e = this.parseNode(t, n);
1129
+ e !== null && r.add(e.name, e);
1130
+ }
1131
+ return r;
1132
+ }
1133
+ endOfContent(e) {
1134
+ return e.size() % 16 == 0 ? (e.getOffset() + 160 + 16 & -16) >= e.size() : e.getOffset() + 160 + 16 >= e.size();
1135
+ }
1136
+ parseNode(e, t) {
1137
+ let n = {}, r = t >= 7500 ? e.getUint64() : e.getUint32(), i = t >= 7500 ? e.getUint64() : e.getUint32();
1138
+ t >= 7500 ? e.getUint64() : e.getUint32();
1139
+ let a = e.getUint8(), o = e.getString(a);
1140
+ if (r === 0) return null;
1141
+ let s = [];
1142
+ for (let t = 0; t < i; t++) s.push(this.parseProperty(e));
1143
+ let c = s.length > 0 ? s[0] : "", l = s.length > 1 ? s[1] : "", u = s.length > 2 ? s[2] : "";
1144
+ for (n.singleProperty = i === 1 && e.getOffset() === r; r > e.getOffset();) {
1145
+ let r = this.parseNode(e, t);
1146
+ r !== null && this.parseSubNode(o, n, r);
1147
+ }
1148
+ return n.propertyList = s, typeof c == "number" && (n.id = c), l !== "" && (n.attrName = l), u !== "" && (n.attrType = u), o !== "" && (n.name = o), n;
1149
+ }
1150
+ parseSubNode(e, t, n) {
1151
+ if (n.singleProperty === !0) {
1152
+ let e = n.propertyList[0];
1153
+ Array.isArray(e) ? (t[n.name] = n, n.a = e) : t[n.name] = e;
1154
+ } else if (e === "Connections" && n.name === "C") {
1155
+ let e = [];
1156
+ n.propertyList.forEach(function(t, n) {
1157
+ n !== 0 && e.push(t);
1158
+ }), t.connections === void 0 && (t.connections = []), t.connections.push(e);
1159
+ } else if (n.name === "Properties70") Object.keys(n).forEach(function(e) {
1160
+ t[e] = n[e];
1161
+ });
1162
+ else if (e === "Properties70" && n.name === "P") {
1163
+ let e = n.propertyList[0], r = n.propertyList[1], i = n.propertyList[2], a = n.propertyList[3], o;
1164
+ e.indexOf("Lcl ") === 0 && (e = e.replace("Lcl ", "Lcl_")), r.indexOf("Lcl ") === 0 && (r = r.replace("Lcl ", "Lcl_")), o = r === "Color" || r === "ColorRGB" || r === "Vector" || r === "Vector3D" || r.indexOf("Lcl_") === 0 ? [
1165
+ n.propertyList[4],
1166
+ n.propertyList[5],
1167
+ n.propertyList[6]
1168
+ ] : n.propertyList[4], t[e] = {
1169
+ type: r,
1170
+ type2: i,
1171
+ flag: a,
1172
+ value: o
1173
+ };
1174
+ } else t[n.name] === void 0 ? typeof n.id == "number" ? (t[n.name] = {}, t[n.name][n.id] = n) : t[n.name] = n : n.name === "PoseNode" ? (Array.isArray(t[n.name]) || (t[n.name] = [t[n.name]]), t[n.name].push(n)) : t[n.name][n.id] === void 0 && (t[n.name][n.id] = n);
1175
+ }
1176
+ parseProperty(t) {
1177
+ let n = t.getString(1), r;
1178
+ switch (n) {
1179
+ case "C": return t.getBoolean();
1180
+ case "D": return t.getFloat64();
1181
+ case "F": return t.getFloat32();
1182
+ case "I": return t.getInt32();
1183
+ case "L": return t.getInt64();
1184
+ case "R": return r = t.getUint32(), t.getArrayBuffer(r);
1185
+ case "S": return r = t.getUint32(), t.getString(r);
1186
+ case "Y": return t.getInt16();
1187
+ case "b":
1188
+ case "c":
1189
+ case "d":
1190
+ case "f":
1191
+ case "i":
1192
+ case "l":
1193
+ let i = t.getUint32(), a = t.getUint32(), o = t.getUint32();
1194
+ if (a === 0) switch (n) {
1195
+ case "b":
1196
+ case "c": return t.getBooleanArray(i);
1197
+ case "d": return t.getFloat64Array(i);
1198
+ case "f": return t.getFloat32Array(i);
1199
+ case "i": return t.getInt32Array(i);
1200
+ case "l": return t.getInt64Array(i);
1201
+ }
1202
+ let s = new U(e(new Uint8Array(t.getArrayBuffer(o))).buffer);
1203
+ switch (n) {
1204
+ case "b":
1205
+ case "c": return s.getBooleanArray(i);
1206
+ case "d": return s.getFloat64Array(i);
1207
+ case "f": return s.getFloat32Array(i);
1208
+ case "i": return s.getInt32Array(i);
1209
+ case "l": return s.getInt64Array(i);
1210
+ }
1211
+ break;
1212
+ default: throw Error("THREE.FBXLoader: Unknown property type " + n);
1213
+ }
1214
+ }
1215
+ }, U = class {
1216
+ constructor(e, t) {
1217
+ this.dv = new DataView(e), this.offset = 0, this.littleEndian = t === void 0 || t, this._textDecoder = new TextDecoder();
1218
+ }
1219
+ getOffset() {
1220
+ return this.offset;
1221
+ }
1222
+ size() {
1223
+ return this.dv.buffer.byteLength;
1224
+ }
1225
+ skip(e) {
1226
+ this.offset += e;
1227
+ }
1228
+ getBoolean() {
1229
+ return (this.getUint8() & 1) == 1;
1230
+ }
1231
+ getBooleanArray(e) {
1232
+ let t = [];
1233
+ for (let n = 0; n < e; n++) t.push(this.getBoolean());
1234
+ return t;
1235
+ }
1236
+ getUint8() {
1237
+ let e = this.dv.getUint8(this.offset);
1238
+ return this.offset += 1, e;
1239
+ }
1240
+ getInt16() {
1241
+ let e = this.dv.getInt16(this.offset, this.littleEndian);
1242
+ return this.offset += 2, e;
1243
+ }
1244
+ getInt32() {
1245
+ let e = this.dv.getInt32(this.offset, this.littleEndian);
1246
+ return this.offset += 4, e;
1247
+ }
1248
+ getInt32Array(e) {
1249
+ let t = [];
1250
+ for (let n = 0; n < e; n++) t.push(this.getInt32());
1251
+ return t;
1252
+ }
1253
+ getUint32() {
1254
+ let e = this.dv.getUint32(this.offset, this.littleEndian);
1255
+ return this.offset += 4, e;
1256
+ }
1257
+ getInt64() {
1258
+ let e, t;
1259
+ return this.littleEndian ? (e = this.getUint32(), t = this.getUint32()) : (t = this.getUint32(), e = this.getUint32()), t & 2147483648 ? (t = ~t & 4294967295, e = ~e & 4294967295, e === 4294967295 && (t = t + 1 & 4294967295), e = e + 1 & 4294967295, -(t * 4294967296 + e)) : t * 4294967296 + e;
1260
+ }
1261
+ getInt64Array(e) {
1262
+ let t = [];
1263
+ for (let n = 0; n < e; n++) t.push(this.getInt64());
1264
+ return t;
1265
+ }
1266
+ getUint64() {
1267
+ let e, t;
1268
+ return this.littleEndian ? (e = this.getUint32(), t = this.getUint32()) : (t = this.getUint32(), e = this.getUint32()), t * 4294967296 + e;
1269
+ }
1270
+ getFloat32() {
1271
+ let e = this.dv.getFloat32(this.offset, this.littleEndian);
1272
+ return this.offset += 4, e;
1273
+ }
1274
+ getFloat32Array(e) {
1275
+ let t = [];
1276
+ for (let n = 0; n < e; n++) t.push(this.getFloat32());
1277
+ return t;
1278
+ }
1279
+ getFloat64() {
1280
+ let e = this.dv.getFloat64(this.offset, this.littleEndian);
1281
+ return this.offset += 8, e;
1282
+ }
1283
+ getFloat64Array(e) {
1284
+ let t = [];
1285
+ for (let n = 0; n < e; n++) t.push(this.getFloat64());
1286
+ return t;
1287
+ }
1288
+ getArrayBuffer(e) {
1289
+ let t = this.dv.buffer.slice(this.offset, this.offset + e);
1290
+ return this.offset += e, t;
1291
+ }
1292
+ getString(e) {
1293
+ let t = this.offset, n = new Uint8Array(this.dv.buffer, t, e);
1294
+ this.skip(e);
1295
+ let r = n.indexOf(0);
1296
+ return r >= 0 && (n = new Uint8Array(this.dv.buffer, t, r)), this._textDecoder.decode(n);
1297
+ }
1298
+ }, W = class {
1299
+ add(e, t) {
1300
+ this[e] = t;
1301
+ }
1302
+ };
1303
+ function de(e) {
1304
+ return e.byteLength >= 21 && $(e, 0, 21) === "Kaydara FBX Binary \0";
1305
+ }
1306
+ function fe(e) {
1307
+ let t = [
1308
+ "K",
1309
+ "a",
1310
+ "y",
1311
+ "d",
1312
+ "a",
1313
+ "r",
1314
+ "a",
1315
+ "\\",
1316
+ "F",
1317
+ "B",
1318
+ "X",
1319
+ "\\",
1320
+ "B",
1321
+ "i",
1322
+ "n",
1323
+ "a",
1324
+ "r",
1325
+ "y",
1326
+ "\\",
1327
+ "\\"
1328
+ ], n = 0;
1329
+ function r(t) {
1330
+ let r = e[t - 1];
1331
+ return e = e.slice(n + t), n++, r;
1332
+ }
1333
+ for (let e = 0; e < t.length; ++e) if (r(1) === t[e]) return !1;
1334
+ return !0;
1335
+ }
1336
+ function G(e) {
1337
+ let t = e.match(/FBXVersion: (\d+)/);
1338
+ if (t) return parseInt(t[1]);
1339
+ throw Error("THREE.FBXLoader: Cannot find the version number for the file given.");
1340
+ }
1341
+ function pe(e) {
1342
+ return e / 46186158e3;
1343
+ }
1344
+ var K = [];
1345
+ function q(e, t, n, r) {
1346
+ let i;
1347
+ switch (r.mappingType) {
1348
+ case "ByPolygonVertex":
1349
+ i = e;
1350
+ break;
1351
+ case "ByPolygon":
1352
+ i = t;
1353
+ break;
1354
+ case "ByVertice":
1355
+ i = n;
1356
+ break;
1357
+ case "AllSame":
1358
+ i = r.indices[0];
1359
+ break;
1360
+ default: console.warn("THREE.FBXLoader: unknown attribute mapping type " + r.mappingType);
1361
+ }
1362
+ r.referenceType === "IndexToDirect" && (i = r.indices[i]);
1363
+ let a = i * r.dataSize, o = a + r.dataSize;
1364
+ return he(K, r.buffer, a, o);
1365
+ }
1366
+ var J = new d(), Y = new N();
1367
+ function X(e) {
1368
+ let t = new x(), n = new x(), r = new x(), i = new x(), a = new x(), o = new x(), s = new x(), c = new x(), l = new x(), u = new x(), d = new x(), f = new x(), p = e.inheritType ? e.inheritType : 0;
1369
+ e.translation && t.setPosition(Y.fromArray(e.translation));
1370
+ let m = Z(0);
1371
+ if (e.preRotation) {
1372
+ let t = e.preRotation.map(y.degToRad);
1373
+ t.push(m), n.makeRotationFromEuler(J.fromArray(t));
1374
+ }
1375
+ if (e.rotation) {
1376
+ let t = e.rotation.map(y.degToRad);
1377
+ t.push(e.eulerOrder || m), r.makeRotationFromEuler(J.fromArray(t));
1378
+ }
1379
+ if (e.postRotation) {
1380
+ let t = e.postRotation.map(y.degToRad);
1381
+ t.push(m), i.makeRotationFromEuler(J.fromArray(t)), i.invert();
1382
+ }
1383
+ e.scale && a.scale(Y.fromArray(e.scale)), e.scalingOffset && s.setPosition(Y.fromArray(e.scalingOffset)), e.scalingPivot && o.setPosition(Y.fromArray(e.scalingPivot)), e.rotationOffset && c.setPosition(Y.fromArray(e.rotationOffset)), e.rotationPivot && l.setPosition(Y.fromArray(e.rotationPivot)), e.parentMatrixWorld && (d.copy(e.parentMatrix), u.copy(e.parentMatrixWorld));
1384
+ let h = n.clone().multiply(r).multiply(i), g = new x();
1385
+ g.extractRotation(u);
1386
+ let _ = new x();
1387
+ _.copyPosition(u);
1388
+ let v = _.clone().invert().multiply(u), b = g.clone().invert().multiply(v), S = a, C = new x();
1389
+ if (p === 0) C.copy(g).multiply(h).multiply(b).multiply(S);
1390
+ else if (p === 1) C.copy(g).multiply(b).multiply(h).multiply(S);
1391
+ else {
1392
+ let e = new x().scale(new N().setFromMatrixScale(d)).clone().invert(), t = b.clone().multiply(e);
1393
+ C.copy(g).multiply(h).multiply(t).multiply(S);
1394
+ }
1395
+ let w = l.clone().invert(), T = o.clone().invert(), E = t.clone().multiply(c).multiply(l).multiply(n).multiply(r).multiply(i).multiply(w).multiply(s).multiply(o).multiply(a).multiply(T), D = new x().copyPosition(E), O = u.clone().multiply(D);
1396
+ return f.copyPosition(O), E = f.clone().multiply(C), E.premultiply(u.invert()), E;
1397
+ }
1398
+ function Z(e) {
1399
+ e ||= 0;
1400
+ let t = [
1401
+ "ZYX",
1402
+ "YZX",
1403
+ "XZY",
1404
+ "ZXY",
1405
+ "YXZ",
1406
+ "XYZ"
1407
+ ];
1408
+ return e === 6 ? (console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."), t[0]) : t[e];
1409
+ }
1410
+ function Q(e) {
1411
+ return e.split(",").map(function(e) {
1412
+ return parseFloat(e);
1413
+ });
1414
+ }
1415
+ function $(e, t, n) {
1416
+ return t === void 0 && (t = 0), n === void 0 && (n = e.byteLength), new TextDecoder().decode(new Uint8Array(e, t, n));
1417
+ }
1418
+ function me(e, t) {
1419
+ for (let n = 0, r = e.length, i = t.length; n < i; n++, r++) e[r] = t[n];
1420
+ }
1421
+ function he(e, t, n, r) {
1422
+ for (let i = n, a = 0; i < r; i++, a++) e[a] = t[i];
1423
+ return e;
1424
+ }
1425
+ //#endregion
1426
+ export { L as FBXLoader };