@ifiwas/standard-view 2.0.0

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 (134) hide show
  1. package/.prettierignore +67 -0
  2. package/.prettierrc +12 -0
  3. package/CHANGELOG.md +42 -0
  4. package/LICENSE +8 -0
  5. package/README.md +199 -0
  6. package/debug-storybook.log +179 -0
  7. package/declarations.d.ts +17 -0
  8. package/dist/standard-view.es.js +9522 -0
  9. package/dist/standard-view.es.js.map +1 -0
  10. package/dist/standard-view.umd.js +41 -0
  11. package/dist/standard-view.umd.js.map +1 -0
  12. package/fonts/gentilis.bold.typeface.json +1 -0
  13. package/fonts/gentilis.typeface.json +1 -0
  14. package/fonts/helvetiker.bold.typeface.json +1 -0
  15. package/fonts/helvetiker.typeface.json +1 -0
  16. package/fonts/optimer.bold.typeface.json +1 -0
  17. package/fonts/optimer.typeface.json +1 -0
  18. package/images.d.ts +7 -0
  19. package/index.js +10 -0
  20. package/lib/controls/OrbitControls.d.ts +9 -0
  21. package/lib/controls/OrbitControls.js +761 -0
  22. package/lib/controls/index.d.ts +1 -0
  23. package/lib/controls/index.js +18 -0
  24. package/lib/groups/Arrow.d.ts +19 -0
  25. package/lib/groups/Arrow.js +134 -0
  26. package/lib/groups/Axis.d.ts +20 -0
  27. package/lib/groups/Axis.js +147 -0
  28. package/lib/groups/BoundingBox.d.ts +9 -0
  29. package/lib/groups/BoundingBox.js +143 -0
  30. package/lib/groups/Camera.d.ts +32 -0
  31. package/lib/groups/Camera.js +477 -0
  32. package/lib/groups/Capsule.d.ts +9 -0
  33. package/lib/groups/Capsule.js +112 -0
  34. package/lib/groups/FBX.d.ts +9 -0
  35. package/lib/groups/FBX.js +213 -0
  36. package/lib/groups/GLTF.d.ts +9 -0
  37. package/lib/groups/GLTF.js +198 -0
  38. package/lib/groups/Group.d.ts +63 -0
  39. package/lib/groups/Group.js +426 -0
  40. package/lib/groups/OBJ.d.ts +11 -0
  41. package/lib/groups/OBJ.js +252 -0
  42. package/lib/groups/PCD.d.ts +9 -0
  43. package/lib/groups/PCD.js +82 -0
  44. package/lib/groups/Path.d.ts +19 -0
  45. package/lib/groups/Path.js +160 -0
  46. package/lib/groups/index.d.ts +11 -0
  47. package/lib/groups/index.js +91 -0
  48. package/lib/index.d.ts +6 -0
  49. package/lib/index.js +298 -0
  50. package/lib/lights/AmbientLight.d.ts +8 -0
  51. package/lib/lights/AmbientLight.js +37 -0
  52. package/lib/lights/DirectionalLight.d.ts +8 -0
  53. package/lib/lights/DirectionalLight.js +43 -0
  54. package/lib/lights/HemisphereLight.d.ts +13 -0
  55. package/lib/lights/HemisphereLight.js +108 -0
  56. package/lib/lights/LightWithShadows.d.ts +24 -0
  57. package/lib/lights/LightWithShadows.js +188 -0
  58. package/lib/lights/PointLight.d.ts +9 -0
  59. package/lib/lights/PointLight.js +47 -0
  60. package/lib/lights/RectAreaLight.d.ts +13 -0
  61. package/lib/lights/RectAreaLight.js +177 -0
  62. package/lib/lights/SpotLight.d.ts +10 -0
  63. package/lib/lights/SpotLight.js +49 -0
  64. package/lib/lights/index.d.ts +6 -0
  65. package/lib/lights/index.js +48 -0
  66. package/lib/primitives/Box.d.ts +6 -0
  67. package/lib/primitives/Box.js +43 -0
  68. package/lib/primitives/Circle.d.ts +10 -0
  69. package/lib/primitives/Circle.js +85 -0
  70. package/lib/primitives/Cylinder.d.ts +15 -0
  71. package/lib/primitives/Cylinder.js +180 -0
  72. package/lib/primitives/Label.d.ts +18 -0
  73. package/lib/primitives/Label.js +189 -0
  74. package/lib/primitives/Line.d.ts +19 -0
  75. package/lib/primitives/Line.js +173 -0
  76. package/lib/primitives/Mesh.d.ts +72 -0
  77. package/lib/primitives/Mesh.js +642 -0
  78. package/lib/primitives/Plane.d.ts +7 -0
  79. package/lib/primitives/Plane.js +47 -0
  80. package/lib/primitives/Polygon.d.ts +8 -0
  81. package/lib/primitives/Polygon.js +75 -0
  82. package/lib/primitives/Quad.d.ts +9 -0
  83. package/lib/primitives/Quad.js +110 -0
  84. package/lib/primitives/Sphere.d.ts +14 -0
  85. package/lib/primitives/Sphere.js +92 -0
  86. package/lib/primitives/Text.d.ts +20 -0
  87. package/lib/primitives/Text.js +285 -0
  88. package/lib/primitives/Triangle.d.ts +8 -0
  89. package/lib/primitives/Triangle.js +83 -0
  90. package/lib/primitives/index.d.ts +12 -0
  91. package/lib/primitives/index.js +90 -0
  92. package/lib/shaders/index.d.ts +0 -0
  93. package/lib/shaders/index.js +2 -0
  94. package/lib/types/three-jsx.d.js +5 -0
  95. package/lib/utils/constants.js +181 -0
  96. package/lib/utils/events.d.ts +22 -0
  97. package/lib/utils/events.js +98 -0
  98. package/lib/utils/hooks.d.ts +8 -0
  99. package/lib/utils/hooks.js +96 -0
  100. package/lib/utils/index.d.ts +3 -0
  101. package/lib/utils/index.js +110 -0
  102. package/lib/utils/interfaces.d.ts +9 -0
  103. package/lib/utils/interfaces.js +5 -0
  104. package/lib/utils/math.d.ts +12 -0
  105. package/lib/utils/math.js +31 -0
  106. package/lib/utils/performance.d.ts +7 -0
  107. package/lib/utils/performance.js +114 -0
  108. package/lib/utils/styles.js +10 -0
  109. package/lib/utils/util.d.ts +76 -0
  110. package/lib/utils/util.js +290 -0
  111. package/lib/views/ContextBridge.d.ts +23 -0
  112. package/lib/views/ContextBridge.js +98 -0
  113. package/lib/views/SceneCamera.d.ts +7 -0
  114. package/lib/views/SceneCamera.js +52 -0
  115. package/lib/views/SetBackground.d.ts +9 -0
  116. package/lib/views/SetBackground.js +90 -0
  117. package/lib/views/SetControls.d.ts +19 -0
  118. package/lib/views/SetControls.js +173 -0
  119. package/lib/views/SetRenderer.d.ts +25 -0
  120. package/lib/views/SetRenderer.js +66 -0
  121. package/lib/views/SetShadows.d.ts +7 -0
  122. package/lib/views/SetShadows.js +48 -0
  123. package/lib/views/View3D.d.ts +21 -0
  124. package/lib/views/View3D.js +289 -0
  125. package/lib/views/ViewContext.d.ts +23 -0
  126. package/lib/views/ViewContext.js +55 -0
  127. package/lib/views/index.d.ts +2 -0
  128. package/lib/views/index.js +20 -0
  129. package/netlify.toml +15 -0
  130. package/package.json +110 -0
  131. package/tsconfig.json +42 -0
  132. package/tsconfig.prod.json +3 -0
  133. package/tsconfig.test.json +6 -0
  134. package/vite.config.ts +37 -0
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var THREE = _interopRequireWildcard(require("three"));
10
+ var _TextGeometry = require("three/examples/jsm/geometries/TextGeometry.js");
11
+ var _FontLoader = require("three/examples/jsm/loaders/FontLoader.js");
12
+ var _Mesh = _interopRequireDefault(require("./Mesh"));
13
+ var _util = require("../utils/util");
14
+ var _hooks = require("../utils/hooks");
15
+ var _excluded = ["text", "fontName", "fontFile", "size", "depth", "align", "curveSegments", "bevelEnabled", "bevelThickness", "bevelSize", "bevelOffset", "bevelSegments", "billboard", "children"];
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
19
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o("next", 0), o("throw", 1), o("return", 2); } }, _regeneratorDefine2(e, r, n, t); }
20
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
21
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
22
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
24
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
25
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
26
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
27
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
28
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
30
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
31
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
32
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
33
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
34
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; } // Text.tsx
35
+ var useRef = React.useRef,
36
+ useEffect = React.useEffect,
37
+ useMemo = React.useMemo,
38
+ memo = React.memo;
39
+
40
+ // Available Fonts
41
+ var FONT_SOURCE = 'https://raw.githubusercontent.com/mrdoob/three.js/master/examples/fonts/';
42
+ var FONTS = {
43
+ helvetiker: {
44
+ name: 'helvetiker_regular',
45
+ typeface: null,
46
+ threeFont: null
47
+ },
48
+ helvetikerBold: {
49
+ name: 'helvetiker_bold',
50
+ typeface: null,
51
+ threeFont: null
52
+ },
53
+ optimer: {
54
+ name: 'optimer_regular',
55
+ typeface: null,
56
+ threeFont: null
57
+ },
58
+ optimerBold: {
59
+ name: 'optimer_bold',
60
+ typeface: null,
61
+ threeFont: null
62
+ },
63
+ gentilis: {
64
+ name: 'gentilis_regular',
65
+ typeface: null,
66
+ threeFont: null
67
+ },
68
+ gentilisBold: {
69
+ name: 'gentilis_bold',
70
+ typeface: null,
71
+ threeFont: null
72
+ }
73
+ };
74
+ /**
75
+ * getFont
76
+ * Async Font File Fetcher
77
+ * Font is cached and Text component is reloaded after font is acquired.
78
+ */
79
+ function getFont(_x) {
80
+ return _getFont.apply(this, arguments);
81
+ }
82
+ function _getFont() {
83
+ _getFont = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(_ref) {
84
+ var url, cacheFont, loadFont;
85
+ return _regenerator().w(function (_context) {
86
+ while (1) switch (_context.n) {
87
+ case 0:
88
+ url = _ref.url, cacheFont = _ref.cacheFont, loadFont = _ref.loadFont;
89
+ fetch(url).then(function (res) {
90
+ return res.json();
91
+ }).then(function (data) {
92
+ cacheFont(data);
93
+ loadFont();
94
+ })["catch"](function () {
95
+ return console.warn("[Text] Font not found from path: ".concat(url));
96
+ });
97
+ case 1:
98
+ return _context.a(2);
99
+ }
100
+ }, _callee);
101
+ }));
102
+ return _getFont.apply(this, arguments);
103
+ }
104
+ /**
105
+ * Text
106
+ *
107
+ * Text is also composed within a Mesh. The 3D text is actually a set
108
+ * of extrusions handled by @react-three/fiber/three.js's textGeometry.
109
+ * Materials are defaulted to meshBasicMaterials and accept the same
110
+ * properties.
111
+ *
112
+ * Standard View supports loading the default fonts provided in three.js's examples,
113
+ * helvetiker, optimer, and gentilis, as well as their bold version.
114
+ * Passing a string fontName property will automatically load that font.
115
+ * The loading is asynchronous as the font files are fetched from three's git repo.
116
+ *
117
+ * Other typeface.json fonts may also be loaded either from public/assets
118
+ * or from url with fontFile
119
+ *
120
+ * Size is in the same 3D units as for all 3D Objects.
121
+ *
122
+ * @param {TextProps} props
123
+ */
124
+ var Text = function Text(_ref2) {
125
+ var _ref2$text = _ref2.text,
126
+ text = _ref2$text === void 0 ? 'Text' : _ref2$text,
127
+ _ref2$fontName = _ref2.fontName,
128
+ fontName = _ref2$fontName === void 0 ? 'helvetiker' : _ref2$fontName,
129
+ fontFile = _ref2.fontFile,
130
+ _ref2$size = _ref2.size,
131
+ size = _ref2$size === void 0 ? 1 : _ref2$size,
132
+ _ref2$depth = _ref2.depth,
133
+ depth = _ref2$depth === void 0 ? 0.01 : _ref2$depth,
134
+ _ref2$align = _ref2.align,
135
+ align = _ref2$align === void 0 ? 'bottom-left' : _ref2$align,
136
+ _ref2$curveSegments = _ref2.curveSegments,
137
+ curveSegments = _ref2$curveSegments === void 0 ? 12 : _ref2$curveSegments,
138
+ _ref2$bevelEnabled = _ref2.bevelEnabled,
139
+ bevelEnabled = _ref2$bevelEnabled === void 0 ? false : _ref2$bevelEnabled,
140
+ _ref2$bevelThickness = _ref2.bevelThickness,
141
+ bevelThickness = _ref2$bevelThickness === void 0 ? 10 : _ref2$bevelThickness,
142
+ _ref2$bevelSize = _ref2.bevelSize,
143
+ bevelSize = _ref2$bevelSize === void 0 ? 8 : _ref2$bevelSize,
144
+ _ref2$bevelOffset = _ref2.bevelOffset,
145
+ bevelOffset = _ref2$bevelOffset === void 0 ? 0 : _ref2$bevelOffset,
146
+ _ref2$bevelSegments = _ref2.bevelSegments,
147
+ bevelSegments = _ref2$bevelSegments === void 0 ? 3 : _ref2$bevelSegments,
148
+ _ref2$billboard = _ref2.billboard,
149
+ billboard = _ref2$billboard === void 0 ? false : _ref2$billboard,
150
+ children = _ref2.children,
151
+ otherProps = _objectWithoutProperties(_ref2, _excluded);
152
+ // height is deprecated, using depth instead
153
+ var height = otherProps.height;
154
+ if (height) {
155
+ console.warn('[Text] height is deprecated, using depth instead');
156
+ depth = height;
157
+ }
158
+
159
+ // Loaded Flag
160
+ /* eslint-disable-next-line @typescript-eslint/no-unused-vars */
161
+ var _useToggle = (0, _hooks.useToggle)(false),
162
+ _useToggle2 = _slicedToArray(_useToggle, 2),
163
+ _ = _useToggle2[0],
164
+ loadFont = _useToggle2[1];
165
+
166
+ // Font Name or Font File
167
+ var _fontName = useMemo(function updateFontName() {
168
+ // Default Font Name
169
+ var name = 'helvetiker';
170
+ if (fontFile) {
171
+ // Font File
172
+ name = fontFile;
173
+
174
+ // File is not cached
175
+ if (FONTS[name] == null) {
176
+ FONTS[name] = {
177
+ name: name,
178
+ typeface: null,
179
+ threeFont: null
180
+ };
181
+ }
182
+ } else if (Object.keys(FONTS).includes(fontName)) {
183
+ // Font Name
184
+ name = fontName;
185
+ }
186
+ return name;
187
+ }, [fontName, fontFile]);
188
+
189
+ // FONTS cache check
190
+ var _loaded = FONTS[_fontName].typeface != null;
191
+
192
+ // Async Load Font
193
+ if (!_loaded) {
194
+ var url = fontFile || "".concat(FONT_SOURCE).concat(FONTS[_fontName].name, ".typeface.json");
195
+ var cacheFont = function cacheFont(data) {
196
+ FONTS[_fontName].typeface = data;
197
+ };
198
+ getFont({
199
+ url: url,
200
+ cacheFont: cacheFont,
201
+ loadFont: loadFont
202
+ });
203
+ }
204
+
205
+ // Font
206
+ var font = useMemo(function updateFont() {
207
+ // Font Not Yet Loaded
208
+ if (!_loaded) {
209
+ return undefined;
210
+ }
211
+
212
+ // Load threeFont from FONTS cache
213
+ if (FONTS[_fontName].threeFont != null) {
214
+ return FONTS[_fontName].threeFont;
215
+ }
216
+
217
+ // Generate and cache threeFont
218
+ FONTS[_fontName].threeFont = new _FontLoader.Font(FONTS[_fontName].typeface);
219
+ return FONTS[_fontName].threeFont;
220
+ }, [_loaded, _fontName]);
221
+
222
+ // Text Geometry
223
+ var prevAlign = useRef(align);
224
+ var textGeometry = useMemo(function updateTextGeometry() {
225
+ // Font Not Yet Loaded
226
+ if (!_loaded) {
227
+ return undefined;
228
+ }
229
+ var fontParams = {
230
+ font: font,
231
+ size: size,
232
+ depth: depth,
233
+ curveSegments: curveSegments,
234
+ bevelEnabled: bevelEnabled,
235
+ bevelThickness: bevelThickness,
236
+ bevelSize: bevelSize,
237
+ bevelOffset: bevelOffset,
238
+ bevelSegments: bevelSegments
239
+ };
240
+
241
+ // TextBufferGeometry cannot be modified after instantiation
242
+ // Must be recreated
243
+ var geometry = new _TextGeometry.TextGeometry(text, fontParams);
244
+ geometry.computeBoundingBox();
245
+
246
+ // Reset Alignment
247
+ var boundingBox = geometry.boundingBox;
248
+ var max = boundingBox ? boundingBox.max : new THREE.Vector3(0, 0, 0);
249
+ var min = boundingBox ? boundingBox.min : new THREE.Vector3(0, 0, 0);
250
+ var diagonalVec = max.clone().sub(min);
251
+ var diagonal = [diagonalVec.x, diagonalVec.y, diagonalVec.z];
252
+ var alignmentOffset = (0, _util.getAlignmentOffset)('bottom-left', prevAlign.current, diagonal);
253
+
254
+ // @ts-ignore:TS2556 // spread
255
+ geometry.translate.apply(geometry, _toConsumableArray(alignmentOffset));
256
+ return geometry;
257
+ }, [_loaded, text, font, size, depth, curveSegments, bevelEnabled, bevelThickness, bevelSize, bevelOffset, bevelSegments]);
258
+
259
+ // Align
260
+ useEffect(function updateAlignment() {
261
+ // Font Not Yet Loaded
262
+ if (!_loaded || textGeometry === undefined) {
263
+ return;
264
+ }
265
+ var boundingBox = textGeometry.boundingBox;
266
+ var max = boundingBox ? boundingBox.max : new THREE.Vector3(0, 0, 0);
267
+ var min = boundingBox ? boundingBox.min : new THREE.Vector3(0, 0, 0);
268
+ var diagonalVec = max.clone().sub(min);
269
+ var diagonal = [diagonalVec.x, diagonalVec.y, diagonalVec.z];
270
+
271
+ // Align
272
+ var alignmentOffset = (0, _util.getAlignmentOffset)(prevAlign.current, align, diagonal);
273
+ // @ts-ignore:TS2556 // spread
274
+ textGeometry.translate.apply(textGeometry, _toConsumableArray(alignmentOffset));
275
+ prevAlign.current = align;
276
+ }, [_loaded, textGeometry, align]);
277
+ return /*#__PURE__*/React.createElement(_Mesh["default"], _extends({
278
+ visible: _loaded,
279
+ geometry: textGeometry,
280
+ animation: billboard ? _util.billboard : undefined
281
+ }, otherProps), children);
282
+ };
283
+ var TextMemo = memo(Text);
284
+ TextMemo.displayName = 'Text';
285
+ var _default = exports["default"] = TextMemo;
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import { MeshProps } from "./Mesh";
3
+ interface TriangleProps extends MeshProps {
4
+ points?: Array<Array<number>>;
5
+ indices?: Array<Array<number>>;
6
+ }
7
+ declare const TriangleMemo: React.NamedExoticComponent<TriangleProps>;
8
+ export default TriangleMemo;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var THREE = _interopRequireWildcard(require("three"));
10
+ var _Mesh = _interopRequireDefault(require("./Mesh"));
11
+ var _excluded = ["points", "indices", "side", "children"]; // Triangle.tsx
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
14
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
15
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
16
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
18
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
19
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
20
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
21
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
22
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
23
+ var useRef = React.useRef,
24
+ useEffect = React.useEffect,
25
+ memo = React.memo;
26
+ /**
27
+ * Triangle
28
+ *
29
+ * In Standard View, Triangle actually composes a THREE.BufferGeometry.
30
+ * By default the indices assume the order of the points passed in,
31
+ * however, particular indices may also be provided. The BufferGeometry
32
+ * can also handle more than 3 vertices and virtually any polygon may be
33
+ * constructed by providing all the vertices and sets of triangle indices.
34
+ * Like most other 3D objects, this is also composed with Mesh and so all
35
+ * Mesh properties may be applied.
36
+ *
37
+ * @param {TriangleProps} props
38
+ */
39
+ var Triangle = function Triangle(_ref) {
40
+ var _ref$points = _ref.points,
41
+ points = _ref$points === void 0 ? [[0, 0, 0], [1, 0, 0], [0, 1, 0]] : _ref$points,
42
+ _ref$indices = _ref.indices,
43
+ indices = _ref$indices === void 0 ? [[0, 1, 2]] : _ref$indices,
44
+ _ref$side = _ref.side,
45
+ side = _ref$side === void 0 ? "double" : _ref$side,
46
+ children = _ref.children,
47
+ otherProps = _objectWithoutProperties(_ref, _excluded);
48
+ // Buffer Geometry of Triangles
49
+ var geometry = useRef(new THREE.BufferGeometry());
50
+ useEffect(function updateVertices() {
51
+ var vertices = [];
52
+ // @ts-ignore:T2345 // spread
53
+ points.map(function (point) {
54
+ return vertices.push.apply(vertices, _toConsumableArray(point));
55
+ });
56
+
57
+ // Remove Old Points
58
+ geometry.current.deleteAttribute("position");
59
+ // Add New Points
60
+ geometry.current.setAttribute("position", new THREE.BufferAttribute(new Float32Array(vertices), 3));
61
+ }, [geometry, points]);
62
+
63
+ // Indices are triplets indicating the index of vertices
64
+ // that make a triangle.
65
+ // Format Indices into One Array of [t1,t1,t1, t2,t2,t2 ...]
66
+ useEffect(function updateIndices() {
67
+ var _indices = [];
68
+ // @ts-ignore:T2345 // spread
69
+ indices.map(function (triangle) {
70
+ return _indices.push.apply(_indices, _toConsumableArray(triangle));
71
+ });
72
+
73
+ // Replace Indices
74
+ geometry.current.setIndex(new THREE.BufferAttribute(new Uint32Array(_indices), 1));
75
+ }, [geometry, indices]);
76
+ return /*#__PURE__*/React.createElement(_Mesh["default"], _extends({
77
+ geometry: geometry.current,
78
+ side: side
79
+ }, otherProps), children);
80
+ };
81
+ var TriangleMemo = memo(Triangle);
82
+ TriangleMemo.displayName = "Triangle";
83
+ var _default = exports["default"] = TriangleMemo;
@@ -0,0 +1,12 @@
1
+ export { default as Box } from "./Box";
2
+ export { default as Circle } from "./Circle";
3
+ export { default as Cylinder } from "./Cylinder";
4
+ export { default as Label } from "./Label";
5
+ export { default as Line } from "./Line";
6
+ export { default as Mesh } from "./Mesh";
7
+ export { default as Plane } from "./Plane";
8
+ export { default as Quad } from "./Quad";
9
+ export { default as Sphere } from "./Sphere";
10
+ export { default as Text } from "./Text";
11
+ export { default as Triangle } from "./Triangle";
12
+ export { default as Polygon } from "./Polygon";
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Box", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Box["default"];
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Circle", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _Circle["default"];
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "Cylinder", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _Cylinder["default"];
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Label", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _Label["default"];
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "Line", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _Line["default"];
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "Mesh", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _Mesh["default"];
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "Plane", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _Plane["default"];
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "Polygon", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _Polygon["default"];
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "Quad", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _Quad["default"];
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "Sphere", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _Sphere["default"];
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "Text", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _Text["default"];
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "Triangle", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _Triangle["default"];
76
+ }
77
+ });
78
+ var _Box = _interopRequireDefault(require("./Box"));
79
+ var _Circle = _interopRequireDefault(require("./Circle"));
80
+ var _Cylinder = _interopRequireDefault(require("./Cylinder"));
81
+ var _Label = _interopRequireDefault(require("./Label"));
82
+ var _Line = _interopRequireDefault(require("./Line"));
83
+ var _Mesh = _interopRequireDefault(require("./Mesh"));
84
+ var _Plane = _interopRequireDefault(require("./Plane"));
85
+ var _Quad = _interopRequireDefault(require("./Quad"));
86
+ var _Sphere = _interopRequireDefault(require("./Sphere"));
87
+ var _Text = _interopRequireDefault(require("./Text"));
88
+ var _Triangle = _interopRequireDefault(require("./Triangle"));
89
+ var _Polygon = _interopRequireDefault(require("./Polygon"));
90
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
File without changes
@@ -0,0 +1,2 @@
1
+ // shaders/index.tsx
2
+ "use strict";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });