senangwebs-aframe-editor 1.6.9 → 1.6.14

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 (43) hide show
  1. package/dist/sw-webverse.js +1823 -1168
  2. package/dist/sw-webverse.js.map +1 -1
  3. package/dist/sw-webverse.min.js +4532 -4125
  4. package/dist/sw-webverse.min.js.LICENSE.txt +0 -2
  5. package/dist/sw-webverse.min.js.map +1 -1
  6. package/examples/360video.html +1 -1
  7. package/examples/colors.html +1 -1
  8. package/examples/controllers.html +1 -1
  9. package/examples/embedded-zoom.html +1 -1
  10. package/examples/embedded.html +1 -1
  11. package/examples/index-aframe.html +1 -1
  12. package/examples/index.html +52 -71
  13. package/examples/supercraft.html +1 -1
  14. package/package.json +1 -1
  15. package/src/components/ErrorBoundary.js +43 -0
  16. package/src/components/Main.js +248 -243
  17. package/src/components/components/CommonComponents.js +117 -160
  18. package/src/components/components/Component.js +1 -3
  19. package/src/components/components/Sidebar.js +10 -9
  20. package/src/components/icons/BackViewIcon.js +25 -27
  21. package/src/components/icons/BottomViewIcon.js +24 -26
  22. package/src/components/icons/FrontViewIcon.js +21 -23
  23. package/src/components/icons/LeftViewIcon.js +22 -24
  24. package/src/components/icons/PerspectiveIcon.js +21 -23
  25. package/src/components/icons/RightViewIcon.js +22 -24
  26. package/src/components/icons/TopViewIcon.js +22 -24
  27. package/src/components/modals/ModalPrimitive.js +111 -112
  28. package/src/components/modals/ModalTextures.js +452 -430
  29. package/src/components/scenegraph/Entity.js +3 -1
  30. package/src/components/scenegraph/SceneGraph.js +545 -488
  31. package/src/components/scenegraph/Toolbar.js +3 -10
  32. package/src/components/widgets/TextureWidget.js +10 -5
  33. package/src/components/widgets/Vec2Widget.js +56 -55
  34. package/src/components/widgets/Vec3Widget.js +59 -58
  35. package/src/components/widgets/Vec4Widget.js +62 -61
  36. package/src/index.js +102 -2
  37. package/src/lib/assetsLoader.js +106 -43
  38. package/src/lib/assetsUtils.js +23 -2
  39. package/src/lib/raycaster.js +140 -129
  40. package/src/lib/utils.js +119 -118
  41. package/src/lib/viewport.js +1 -1
  42. package/src/style/index.styl +53 -0
  43. package/src/style/textureModal.styl +334 -220
@@ -1,18 +1,6 @@
1
1
  /******/ (() => {
2
2
  // webpackBootstrap
3
3
  /******/ var __webpack_modules__ = {
4
- /***/ './assets/gltf.svg':
5
- /*!*************************!*\
6
- !*** ./assets/gltf.svg ***!
7
- \*************************/
8
- /***/ (module) => {
9
- 'use strict';
10
- module.exports =
11
- 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8IS0tIENyZWF0ZWQgd2l0aCBJbmtzY2FwZSAoaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvKSAtLT4NCjxzdmcgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIiB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIgd2lkdGg9Ijg2MS45NTM5OCIgaGVpZ2h0PSI0NTEuOTk5MDIiIHZpZXdCb3g9IjAgMCAyMjguMDU4NjYgMTE5LjU5MTQiIHZlcnNpb249IjEuMSIgaWQ9InN2ZzEwNDAiIGlua3NjYXBlOnZlcnNpb249IjAuOTIuMCByMTUyOTkiIHNvZGlwb2RpOmRvY25hbWU9ImdpdGYuc3ZnIj4NCiAgPGRlZnMgaWQ9ImRlZnMxMDM0Ii8+DQogIDxzb2RpcG9kaTpuYW1lZHZpZXcgaWQ9ImJhc2UiIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgYm9yZGVyY29sb3I9IiM2NjY2NjYiIGJvcmRlcm9wYWNpdHk9IjEuMCIgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIgaW5rc2NhcGU6em9vbT0iMC40NzQ4MjQ2NCIgaW5rc2NhcGU6Y3g9IjMzMS45MDc4MyIgaW5rc2NhcGU6Y3k9IjQ0My41NzEzNSIgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIiBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiIHNob3dncmlkPSJmYWxzZSIgZml0LW1hcmdpbi10b3A9IjAiIGZpdC1tYXJnaW4tbGVmdD0iMCIgZml0LW1hcmdpbi1yaWdodD0iMCIgZml0LW1hcmdpbi1ib3R0b209IjAiIHVuaXRzPSJweCIgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxMjgwIiBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI3NDQiIGlua3NjYXBlOndpbmRvdy14PSItNCIgaW5rc2NhcGU6d2luZG93LXk9Ii00IiBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIi8+DQogIDxtZXRhZGF0YSBpZD0ibWV0YWRhdGExMDM3Ij4NCiAgICA8cmRmOlJERj4NCiAgICAgIDxjYzpXb3JrIHJkZjphYm91dD0iIj4NCiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+DQogICAgICAgIDxkYzp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiLz4NCiAgICAgICAgPGRjOnRpdGxlLz4NCiAgICAgIDwvY2M6V29yaz4NCiAgICA8L3JkZjpSREY+DQogIDwvbWV0YWRhdGE+DQogIDxnIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIiBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIiBpZD0ibGF5ZXIxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcuMTgyNzIsLTIxNS43NjUyNCkiPg0KICAgIDxnIGlkPSJnMTMyNyIgdHJhbnNmb3JtPSJtYXRyaXgoMC4yNjQ1ODMzMywwLDAsMC4yNjQ1ODMzMywtMS45MDc3NjIxLDIwOS40MTUyNCkiPg0KICAgICAgPGcgaWQ9ImcxMjk5Ij4NCgk8ZyBpZD0iZzEyODUiPg0KCQk8cGF0aCBpZD0icGF0aDEyODEiIGQ9Im0gNDE5LjY3MSw0MDMuNzI3IGMgMTQuNzU3LC0xNi41NTQgMjIuNTYxLC00MC43MzUgMjIuNTYxLC03My4zMTYgViAxNDguMzcgaCAtMzEuMTc0IHYgMjguNDggaCAtMC4zODUgYyAtNS45MDUsLTExLjAyOSAtMTQuMTEzLC0xOS4zMDMgLTI0LjYzMSwtMjQuODIzIC0xMC41MjQsLTUuNTE1IC0yMi4wNjksLTguMjc1IC0zNC42MzcsLTguMjc1IC0xNy4xOTMsMCAtMzEuNjkxLDMuMjcxIC00My40OSw5LjgxNCAtMTEuODA0LDYuNTQzIC0yMS4yOTksMTQuOTUgLTI4LjQ3OSwyNS4yMDkgLTcuMTg3LDEwLjI2NCAtMTIuMzE1LDIxLjU1MiAtMTUuMzk1LDMzLjg2OCAtMy4wNzksMTIuMzE1IC00LjYxOCwyNC4zNzggLTQuNjE4LDM2LjE3NyAwLDEzLjYwMyAxLjg1OCwyNi40OTYgNS41ODEsMzguNjc5IDMuNzE2LDEyLjE5IDkuMjk2LDIyLjkgMTYuNzQxLDMyLjEzNyA3LjQzOSw5LjIzNiAxNi42NzUsMTYuNTQ4IDI3LjcxLDIxLjkzNiAxMS4wMzUsNS4zODggMjMuOTk0LDguMDgyIDM4Ljg3Nyw4LjA4MiA2LjE1OCwwIDEyLjM3NiwtMC43NjkgMTguNjY1LC0yLjMwOSA2LjI5MSwtMS41MzkgMTIuMTksLTMuNzgyIDE3LjcxLC02LjczNSA1LjUxNCwtMi45NDYgMTAuNDUyLC02LjY2OSAxNC44MTcsLTExLjE2IDQuMzYsLTQuNDg3IDcuOTUsLTkuODEzIDEwLjc3NiwtMTUuOTcyIGggMC43NTcgdiAxMy4wODQgYyAwLDExLjI5MyAtMS4wOTQsMjEuNTUzIC0zLjI3MiwzMC43OSAtMi4xODIsOS4yMzcgLTUuNzEyLDE3LjEyNyAtMTAuNTgzLDIzLjY2OCAtNC44NzcsNi41NDMgLTExLjAzNSwxMS42NzIgLTE4LjQ3NCwxNS4zOTUgLTcuNDQ1LDMuNzE3IC0xNi41NDksNS41ODEgLTI3LjMyNSw1LjU4MSAtNS4zODksMCAtMTEuMDM1LC0wLjU3OSAtMTYuOTM1LC0xLjczMiAtMi4xMywtMC40MTYgLTQuMiwtMC45MjggLTYuMjExLC0xLjUzIC0yLjE4OCwtMC43NzIgLTQuMzU4LC0xLjU1NyAtNi41MSwtMi4zNTYgLTAuMiwtMC4wODUgLTAuMzk5LC0wLjE3MiAtMC41OTgsLTAuMjU5IHYgMC4wMzYgQyAyMzYuNjIyLDM2NC41ODMgMTgwLjk5MiwzMTAuOTA5IDE4MC45OTIsMjUwLjAwMyBjIDAsLTk3LjE0NyAxNDEuNTIzLC0xNzUuODk5IDMxNi4xLC0xNzUuODk5IDk3LjI1MywwIDE4NC40NTEsMjIuMTUgMjQyLjQzNiw2MC41OTMgQyA2NzYuMjQsNzAuMjgzIDU2Mi43NTcsMjUuMDIyIDQzMy4wMDUsMjUgMjM0LjI4MiwyNC45NjUgNzMuMTcsMTI1LjY3NCA3My4xNTMsMjQ5LjkzOCBjIC0wLjAxMiw4NC44MjEgNzUuMDQyLDE1OC42OTcgMTg1Ljg5MywxOTcuMDU4IDg4LjkxOSwzLjA0NCAxMzQuMDQ4LC0xMy40NTkgMTYwLjYyNSwtNDMuMjY5IHogTSA0MDYuMjQ4LDI3MS41MjYgYyAtMi4xODIsOS4yMzYgLTUuNTgsMTcuNTEyIC0xMC4xOTksMjQuODIzIC00LjYxNyw3LjMxNCAtMTAuNzE1LDEzLjIxOSAtMTguMjgsMTcuNzAzIC03LjU3MSw0LjQ5MyAtMTYuNzQyLDYuNzM1IC0yNy41MTcsNi43MzUgLTEwLjc3NywwIC0xOS43NjEsLTIuMjQyIC0yNi45NDEsLTYuNzM1IC03LjE4NiwtNC40ODQgLTEyLjk1OSwtMTAuMzkgLTE3LjMxOSwtMTcuNzAzIC00LjM2NiwtNy4zMTEgLTcuNDQ0LC0xNS40NTQgLTkuMjM3LC0yNC40MzkgLTEuNzk3LC04Ljk3OCAtMi42OTQsLTE3Ljk1NiAtMi42OTQsLTI2Ljk0IDAsLTkuNDg5IDEuMDg4LC0xOC42IDMuMjcxLC0yNy4zMjYgMi4xNzgsLTguNzE5IDUuNjQxLC0xNi40MTcgMTAuMzkyLC0yMy4wOTIgNC43NDUsLTYuNjY5IDEwLjgzNywtMTEuOTkxIDE4LjI4MSwtMTUuOTcyIDcuNDM5LC0zLjk3NSAxNi40MTcsLTUuOTY1IDI2Ljk0MSwtNS45NjUgMTAuMjU5LDAgMTguOTg0LDIuMDU3IDI2LjE3LDYuMTU4IDcuMTgsNC4xMDcgMTMuMDE5LDkuNTYxIDE3LjUxMSwxNi4zNTYgNC40ODYsNi44MDEgNy43NTgsMTQuNDMyIDkuODE0LDIyLjg5OSAyLjA1MSw4LjQ2NyAzLjA3OSwxNy4wNjYgMy4wNzksMjUuNzg2IDAsOS4yMzggLTEuMDk1LDE4LjQ3NSAtMy4yNzIsMjcuNzEyIHoiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHN0eWxlPSJmaWxsOiNmYWZhZmEiLz4NCg0KCQk8cGF0aCBpZD0icGF0aDEyODMiIGQ9Im0gNDM0Ljg0OSw0MjIuNDg1IGMgLTE4Ljg1NCwxNy4xMTMgLTUyLjUzMiwzNi42NDcgLTk4LjM5Nyw0NC4zMTYgMzAuNzA3LDUuMzM5IDYzLjA2NSw4LjE5NCA5Ni40OSw4LjE5OCAxMjkuMjM2LDAuMDI1IDI0Mi40MjUsLTQ1LjA5MSAzMDUuODgxLC0xMDkuMDU1IC01Ny45ODQsMzguMjA2IC0xNDQuODMsNTkuOTUxIC0yNDEuNzI4LDU5Ljk1MSAtMjMuMDE4LDAuMDAyIC00MC42MjYsLTAuODA5IC02Mi4yNDYsLTMuNDEgeiIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc3R5bGU9ImZpbGw6I2ZhZmFmYSIvPg0KDQoJPC9nPg0KDQoJPGcgaWQ9ImcxMjk1Ij4NCgkJPGcgaWQ9ImcxMjg5Ij4NCgkJCTxwYXRoIGlkPSJwYXRoMTI4NyIgZD0iTSA2MzMuODQsMzQ3LjkwOCBIIDU4Ni44NzUgViAxODkuNzA1IGggLTU4LjkyMiB2IC00MC4yMzQgaCAxNjQuODEgdiA0MC4yMzQgSCA2MzMuODQgWiIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc3R5bGU9ImZpbGw6I2ZhZmFmYSIvPg0KDQoJCTwvZz4NCg0KCQk8ZyBpZD0iZzEyOTMiPg0KCQkJPHBhdGggaWQ9InBhdGgxMjkxIiBkPSJNIDc2NC4xNzMsMzQ3LjkwOCBIIDcxNy4yMDYgViAxNDkuNDcxIGggMTQ0Ljk4OCB2IDQwLjIzNCBoIC05OC4wMjEgdiAzNy4xMjggaCA4NS44MDMgdiA0MC4yMzMgaCAtODUuODAzIHoiIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIHN0eWxlPSJmaWxsOiNmYWZhZmEiLz4NCg0KCQk8L2c+DQoNCgk8L2c+DQoNCgk8cGF0aCBpZD0icGF0aDEyOTciIGQ9Im0gNDY5LjU1NCwxMDAuMDMxIGggMzIuNzE0IHYgMjQ3LjMxMyBoIC0zMi43MTQgeiIgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgc3R5bGU9ImZpbGw6I2ZhZmFmYSIvPg0KDQo8L2c+DQogICAgICA8ZyBpZD0iZzEzMDUiPg0KCTxwb2x5Z29uIGlkPSJwb2x5Z29uMTMwMSIgcG9pbnRzPSI4OTUuNDM1LDE1NS4yODkgODk1LjQzNSwxNzQuNCA4ODkuMDE3LDE3NC40IDg4OS4wMTcsMTU1LjI4OSA4ODEuNjcsMTU1LjI4OSA4ODEuNjcsMTQ5Ljc2OSA5MDIuNzgyLDE0OS43NjkgOTAyLjc4MiwxNTUuMjg5IDkwMi43ODMsMTU1LjI4OSAiIHN0eWxlPSJmaWxsOiNmYWZhZmEiLz4NCg0KCTxwb2x5Z29uIGlkPSJwb2x5Z29uMTMwMyIgcG9pbnRzPSI5MTkuNDExLDE2Ni4xOSA5MjMuNjU0LDE0OS43NjkgOTMzLjEwNywxNDkuNzY5IDkzMy4xMDcsMTc0LjQgOTI3LjA2OSwxNzQuNCA5MjcuMDY5LDE1NS43MDMgOTI3LjAwMSwxNTUuNzAzIDkyMS44MjYsMTc0LjQgOTE2LjkyOSwxNzQuNCA5MTEuNzUyLDE1NS43MDMgOTExLjY4MywxNTUuNzAzIDkxMS42ODMsMTc0LjQgOTA1LjY0NywxNzQuNCA5MDUuNjQ3LDE0OS43NjkgOTE1LjEsMTQ5Ljc2OSA5MTkuMzQyLDE2Ni4xOSAiIHN0eWxlPSJmaWxsOiNmYWZhZmEiLz4NCg0KPC9nPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+DQo=';
12
-
13
- /***/
14
- },
15
-
16
4
  /***/ './node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js':
17
5
  /*!*********************************************************************!*\
18
6
  !*** ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js ***!
@@ -35119,81 +35107,6 @@ styleSheet.flush()
35119
35107
  /***/
35120
35108
  },
35121
35109
 
35122
- /***/ './node_modules/clipboard-copy/index.js':
35123
- /*!**********************************************!*\
35124
- !*** ./node_modules/clipboard-copy/index.js ***!
35125
- \**********************************************/
35126
- /***/ (module) => {
35127
- /*! clipboard-copy. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
35128
- /* global DOMException */
35129
-
35130
- module.exports = clipboardCopy;
35131
-
35132
- function makeError() {
35133
- return new DOMException(
35134
- 'The request is not allowed',
35135
- 'NotAllowedError'
35136
- );
35137
- }
35138
-
35139
- async function copyClipboardApi(text) {
35140
- // Use the Async Clipboard API when available. Requires a secure browsing
35141
- // context (i.e. HTTPS)
35142
- if (!navigator.clipboard) {
35143
- throw makeError();
35144
- }
35145
- return navigator.clipboard.writeText(text);
35146
- }
35147
-
35148
- async function copyExecCommand(text) {
35149
- // Put the text to copy into a <span>
35150
- const span = document.createElement('span');
35151
- span.textContent = text;
35152
-
35153
- // Preserve consecutive spaces and newlines
35154
- span.style.whiteSpace = 'pre';
35155
- span.style.webkitUserSelect = 'auto';
35156
- span.style.userSelect = 'all';
35157
-
35158
- // Add the <span> to the page
35159
- document.body.appendChild(span);
35160
-
35161
- // Make a selection object representing the range of text selected by the user
35162
- const selection = window.getSelection();
35163
- const range = window.document.createRange();
35164
- selection.removeAllRanges();
35165
- range.selectNode(span);
35166
- selection.addRange(range);
35167
-
35168
- // Copy text to the clipboard
35169
- let success = false;
35170
- try {
35171
- success = window.document.execCommand('copy');
35172
- } finally {
35173
- // Cleanup
35174
- selection.removeAllRanges();
35175
- window.document.body.removeChild(span);
35176
- }
35177
-
35178
- if (!success) throw makeError();
35179
- }
35180
-
35181
- async function clipboardCopy(text) {
35182
- try {
35183
- await copyClipboardApi(text);
35184
- } catch (err) {
35185
- // ...Otherwise, use document.execCommand() fallback
35186
- try {
35187
- await copyExecCommand(text);
35188
- } catch (err2) {
35189
- throw err2 || err || makeError();
35190
- }
35191
- }
35192
- }
35193
-
35194
- /***/
35195
- },
35196
-
35197
35110
  /***/ './node_modules/clsx/dist/clsx.mjs':
35198
35111
  /*!*****************************************!*\
35199
35112
  !*** ./node_modules/clsx/dist/clsx.mjs ***!
@@ -36005,64 +35918,151 @@ body.aframe-inspector-opened {
36005
35918
  padding: 16px;
36006
35919
  height: inherit;
36007
35920
  }
35921
+ #aframeInspector .modal-body::-webkit-scrollbar {
35922
+ width: 8px;
35923
+ height: 8px;
35924
+ }
35925
+ #aframeInspector .modal-body::-webkit-scrollbar-track {
35926
+ background: #18181b;
35927
+ border-radius: 4px;
35928
+ }
35929
+ #aframeInspector .modal-body::-webkit-scrollbar-thumb {
35930
+ background: #3f3f46;
35931
+ border-radius: 4px;
35932
+ -webkit-transition: background 0.2s ease;
35933
+ transition: background 0.2s ease;
35934
+ }
35935
+ #aframeInspector .modal-body::-webkit-scrollbar-thumb:hover {
35936
+ background: #52525b;
35937
+ }
35938
+ #aframeInspector .modal-body::-webkit-scrollbar-corner {
35939
+ background: #18181b;
35940
+ }
36008
35941
  #aframeInspector .modal-footer {
36009
35942
  color: #fff;
36010
35943
  padding: 2px 16px;
36011
35944
  }
36012
35945
  #aframeInspector .gallery {
36013
- background: #232323;
36014
35946
  display: flex;
36015
35947
  flex-wrap: wrap;
36016
- margin: 15px auto 0;
36017
35948
  overflow: auto;
36018
- padding: 15px 3px 3px;
35949
+ gap: 12px;
35950
+ padding: 2px;
36019
35951
  }
36020
- #aframeInspector .newimage .gallery {
36021
- padding: 8px;
35952
+ #aframeInspector .newimage .gallery,
35953
+ #aframeInspector .texture-toolbar {
35954
+ display: flex;
35955
+ align-items: center;
35956
+ gap: 12px;
35957
+ margin-bottom: 12px;
35958
+ max-height: 65vh;
35959
+ }
35960
+ #aframeInspector .url-input-group {
35961
+ flex: 1;
35962
+ display: flex;
35963
+ gap: 8px;
35964
+ align-items: center;
36022
35965
  }
36023
- #aframeInspector .gallery li {
35966
+ #aframeInspector .url-input-group .imageUrl {
35967
+ flex: 1;
35968
+ height: 32px;
35969
+ padding: 0 12px;
35970
+ border-radius: 8px;
35971
+ border: none;
35972
+ background: #232323;
35973
+ color: #0f9;
35974
+ font-size: 13px;
35975
+ }
35976
+ #aframeInspector .url-input-group .imageUrl::-moz-placeholder {
35977
+ color: #666;
35978
+ }
35979
+ #aframeInspector .url-input-group .imageUrl::placeholder {
35980
+ color: #666;
35981
+ }
35982
+ #aframeInspector .url-input-group .load-url-btn {
35983
+ height: 32px;
35984
+ padding: 0 16px;
35985
+ white-space: nowrap;
35986
+ font-size: 12px;
35987
+ }
35988
+ #aframeInspector .registry-section {
35989
+ margin-bottom: 12px;
35990
+ }
35991
+ #aframeInspector .section-label {
35992
+ display: block;
35993
+ margin-bottom: 8px;
35994
+ color: #888;
35995
+ font-size: 13px;
35996
+ }
35997
+ #aframeInspector .gallery-item {
36024
35998
  border-radius: 8px;
36025
35999
  box-shadow: 0 0 6px rgba(0,0,0,0.6);
36026
36000
  cursor: pointer;
36027
- margin: 8px;
36028
36001
  overflow: hidden;
36029
36002
  width: 155px;
36003
+ transition: box-shadow 0.15s ease;
36030
36004
  }
36031
- #aframeInspector .gallery li.selected,
36032
- #aframeInspector .gallery li:hover {
36005
+ #aframeInspector .gallery-item.selected,
36006
+ #aframeInspector .gallery-item:hover {
36033
36007
  box-shadow: 0 0 0 2px #0f9;
36034
36008
  }
36035
- #aframeInspector .gallery li .detail {
36009
+ #aframeInspector .gallery-item .detail {
36036
36010
  background-color: #323232;
36037
36011
  margin: 0;
36038
36012
  min-height: 60px;
36039
36013
  padding: 4px 8px 8px 8px;
36040
36014
  }
36041
36015
  #aframeInspector .preview {
36042
- padding: 10px;
36043
- width: 150px;
36016
+ width: 250px;
36017
+ }
36018
+ #aframeInspector .preview label {
36019
+ color: #888;
36020
+ font-size: 12px;
36021
+ display: block;
36022
+ margin-bottom: 4px;
36044
36023
  }
36045
36024
  #aframeInspector .preview input {
36046
36025
  display: block;
36047
- margin: 8px 0;
36048
- width: 144px;
36026
+ margin: 0 0 12px 0;
36027
+ height: 24px;
36028
+ width: 230px;
36029
+ border-radius: 8px;
36030
+ }
36031
+ #aframeInspector .preview img {
36032
+ border-radius: 8px;
36033
+ margin-bottom: 8px;
36049
36034
  }
36050
36035
  #aframeInspector .preview button {
36051
- width: 155px;
36036
+ width: 242px;
36037
+ margin-top: 8px;
36038
+ }
36039
+ #aframeInspector .preview button:hover {
36040
+ background-color: #0f9;
36041
+ color: #000;
36042
+ }
36043
+ #aframeInspector .preview .detail {
36044
+ margin-bottom: 8px;
36052
36045
  }
36053
36046
  #aframeInspector .preview .detail .title {
36054
36047
  color: #fff;
36055
- display: inline-block;
36056
- max-width: 155px;
36048
+ display: block;
36049
+ max-width: 230px;
36057
36050
  overflow: hidden;
36058
36051
  text-overflow: ellipsis;
36059
36052
  white-space: nowrap;
36053
+ font-size: 13px;
36054
+ }
36055
+ #aframeInspector .preview .detail .dimensions {
36056
+ color: #888;
36057
+ font-size: 12px;
36058
+ display: block;
36059
+ margin-top: 4px;
36060
36060
  }
36061
- #aframeInspector .gallery li.selected .detail,
36062
- #aframeInspector .gallery li:hover .detail {
36061
+ #aframeInspector .gallery-item.selected .detail,
36062
+ #aframeInspector .gallery-item:hover .detail {
36063
36063
  background-color: #444;
36064
36064
  }
36065
- #aframeInspector .gallery li .detail span {
36065
+ #aframeInspector .gallery-item .detail span {
36066
36066
  color: #777;
36067
36067
  display: block;
36068
36068
  margin-top: 4px;
@@ -36071,13 +36071,25 @@ body.aframe-inspector-opened {
36071
36071
  white-space: nowrap;
36072
36072
  width: 140px;
36073
36073
  }
36074
- #aframeInspector .gallery li.selected .detail span,
36075
- #aframeInspector .gallery li:hover .detail span {
36074
+ #aframeInspector .gallery-item.selected .detail span,
36075
+ #aframeInspector .gallery-item:hover .detail span {
36076
36076
  color: #888;
36077
36077
  }
36078
- #aframeInspector .gallery li .detail span.title {
36078
+ #aframeInspector .gallery-item .detail span.title {
36079
36079
  color: #fff !important;
36080
36080
  }
36081
+ #aframeInspector .gallery .loading-indicator {
36082
+ background: transparent;
36083
+ box-shadow: none;
36084
+ color: #888;
36085
+ display: flex;
36086
+ align-items: center;
36087
+ justify-content: center;
36088
+ width: 100%;
36089
+ padding: 40px 20px;
36090
+ font-size: 14px;
36091
+ animation: pulse 1.5s ease-in-out infinite;
36092
+ }
36081
36093
  #aframeInspector .modal button {
36082
36094
  -webkit-appearance: none;
36083
36095
  -moz-appearance: none;
@@ -36102,6 +36114,11 @@ body.aframe-inspector-opened {
36102
36114
  font-weight: 500;
36103
36115
  padding: 8px 16px;
36104
36116
  text-transform: capitalize;
36117
+ transition: all 0.2s ease-in-out;
36118
+ }
36119
+ #aframeInspector .modal button:hover {
36120
+ background-color: #0f9;
36121
+ color: #000;
36105
36122
  }
36106
36123
  #aframeInspector .modal buttonhover,
36107
36124
  #aframeInspector .modal button.hover {
@@ -36118,15 +36135,13 @@ body.aframe-inspector-opened {
36118
36135
  cursor: none;
36119
36136
  }
36120
36137
  #aframeInspector .newimage {
36121
- background-color: #323232;
36122
36138
  color: #a3a3a3;
36123
36139
  display: flex;
36140
+ gap: 24px;
36124
36141
  font-size: 14px;
36125
36142
  justify-content: space-between;
36126
- margin-top: 16px;
36127
36143
  overflow: auto;
36128
- padding: 8px;
36129
- border-radius: 8px;
36144
+ max-height: 74vh;
36130
36145
  }
36131
36146
  #aframeInspector .newimage input {
36132
36147
  color: #0f9;
@@ -36143,16 +36158,22 @@ body.aframe-inspector-opened {
36143
36158
  }
36144
36159
  #aframeInspector .assets.search {
36145
36160
  position: relative;
36146
- margin-top: 10px;
36147
- width: 200px;
36161
+ margin-top: 8px;
36162
+ width: 100%;
36148
36163
  }
36149
36164
  #aframeInspector .assets.search svg {
36150
36165
  position: absolute;
36151
- right: 0px;
36152
- top: 5px;
36166
+ right: 10px;
36167
+ top: 8px;
36168
+ }
36169
+ #aframeInspector .assets.search input {
36170
+ width: calc(100% - 12px);
36171
+ height: 20px;
36172
+ padding: 5px;
36173
+ border-radius: 8px;
36153
36174
  }
36154
36175
  #aframeInspector .new_asset_options {
36155
- margin: 10px;
36176
+ width: 100%;
36156
36177
  }
36157
36178
  #aframeInspector .new_asset_options > ul {
36158
36179
  margin-left: 10px;
@@ -36164,12 +36185,22 @@ body.aframe-inspector-opened {
36164
36185
  #aframeInspector .new_asset_options .imageUrl {
36165
36186
  margin-left: 5px;
36166
36187
  width: 350px;
36188
+ height: 24px;
36189
+ border-radius: 8px;
36167
36190
  }
36168
36191
  #aframeInspector .texture canvas {
36169
36192
  border: 1px solid rgba(255,255,255,0.15);
36170
36193
  border-radius: 8px;
36171
36194
  cursor: pointer;
36172
36195
  }
36196
+ @keyframes pulse {
36197
+ 0%, 100% {
36198
+ opacity: 0.5;
36199
+ }
36200
+ 50% {
36201
+ opacity: 1;
36202
+ }
36203
+ }
36173
36204
  #aframeInspector svg:not(:root).svg-inline--fa,
36174
36205
  #aframeInspector svg:not(:host).svg-inline--fa {
36175
36206
  overflow: visible;
@@ -36538,6 +36569,59 @@ body.aframe-inspector-opened {
36538
36569
  #aframeInspector .modal-close-button:hover {
36539
36570
  background-color: #888;
36540
36571
  }
36572
+ #aframeInspector .error-boundary {
36573
+ position: fixed;
36574
+ top: 0;
36575
+ left: 0;
36576
+ width: 100%;
36577
+ height: 100%;
36578
+ display: flex;
36579
+ align-items: center;
36580
+ justify-content: center;
36581
+ background: rgba(0,0,0,0.9);
36582
+ z-index: 9999;
36583
+ pointer-events: all;
36584
+ }
36585
+ #aframeInspector .error-boundary .error-content {
36586
+ background: #1e1e1e;
36587
+ border: 1px solid #f44;
36588
+ border-radius: 8px;
36589
+ padding: 24px 32px;
36590
+ max-width: 500px;
36591
+ text-align: center;
36592
+ }
36593
+ #aframeInspector .error-boundary .error-content h2 {
36594
+ color: #f44;
36595
+ margin: 0 0 16px 0;
36596
+ font-size: 18px;
36597
+ }
36598
+ #aframeInspector .error-boundary .error-content p {
36599
+ color: #a3a3a3;
36600
+ margin: 0 0 16px 0;
36601
+ }
36602
+ #aframeInspector .error-boundary .error-content pre {
36603
+ background: #0d0d0d;
36604
+ color: #ff6b6b;
36605
+ padding: 12px;
36606
+ border-radius: 4px;
36607
+ font-size: 12px;
36608
+ overflow-x: auto;
36609
+ text-align: left;
36610
+ margin: 0 0 16px 0;
36611
+ }
36612
+ #aframeInspector .error-boundary .error-content button {
36613
+ background: #0f9;
36614
+ color: #000;
36615
+ border: none;
36616
+ padding: 10px 24px;
36617
+ border-radius: 4px;
36618
+ cursor: pointer;
36619
+ font-weight: 500;
36620
+ font-size: 14px;
36621
+ }
36622
+ #aframeInspector .error-boundary .error-content button:hover {
36623
+ background: #00cc7a;
36624
+ }
36541
36625
  #aframeInspector .Select,
36542
36626
  #aframeInspector code,
36543
36627
  #aframeInspector pre,
@@ -36904,16 +36988,16 @@ body.aframe-inspector-opened {
36904
36988
  ],
36905
36989
  names: [],
36906
36990
  mappings:
36907
- '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',
36991
+ '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',
36908
36992
  sourcesContent: [
36909
36993
  '$primary=#00FF99\n$primaryhover=lighten(#00FF99, 35%)\n\n$bg=#18181B\n$bgdark=#09090B\n$bglight=#18181B\n$bglighter=lighten(#18181B, 10%)\n\n$red=#00FF99\n$green=#22D3EE\n$orange=#d66853\n\n$black=#222\n$gray=#262626\n$grayalt=#323232\n$grayhover=#444\n\n$lightgray=#AAA\n$white=#A3A3A3\n\n$normalfont=system-ui, BlinkMacSystemFont, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif\n$monospace=system-ui, BlinkMacSystemFont, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif\n\nmedia--1024() {\n @media (min-width: 1024px) {\n {block}\n }\n}\n\n/* CSS rules from the original FontAwesomeIcon component */\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n',
36910
- "@import './lib';\r\n\r\nbody.aframe-inspector-opened,\r\n.toggle-edit\r\n font-family BlinkMacSystemFont, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif\r\n\r\n.wf-roboto-n4-active body.aframe-inspector-opened,\r\n.wf-roboto-n4-active .toggle-edit\r\n font-family BlinkMacSystemFont, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif\r\n\r\nbody.aframe-inspector-opened\r\n background $bgdark\r\n color #fff\r\n font-size 12px\r\n margin 0\r\n overflow hidden\r\n\r\n#aframeInspector\r\n @import './scenegraph';\r\n @import './components';\r\n @import './entity';\r\n @import './help';\r\n @import './select';\r\n @import './textureModal';\r\n @import './viewport';\r\n @import './widgets';\r\n @import './primitiveModal';\r\n\r\n .Select,\r\n code,\r\n pre,\r\n input,\r\n textarea,\r\n select\r\n font-family $monospace\r\n font-size 14px\r\n\r\n .wf-robotomono-n4-active .Select,\r\n .wf-robotomono-n4-active code,\r\n .wf-robotomono-n4-active pre,\r\n .wf-robotomono-n4-active input,\r\n .wf-robotomono-n4-active textarea,\r\n .wf-robotomono-n4-active select\r\n font-family Roboto Mono, Consolas, Andale Mono, Monaco, Courier New, monospace\r\n\r\n hr\r\n border 0\r\n border-top 1px solid #ccc\r\n\r\n a\r\n cursor pointer\r\n\r\n button\r\n position relative\r\n\r\n code\r\n font-family Consolas, Andale Mono, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace\r\n\r\n textarea\r\n tab-size 4\r\n white-space pre\r\n word-wrap normal\r\n\r\n textarea.success\r\n border-color #8b8 !important\r\n\r\n textarea.fail\r\n background-color rgba(255, 0, 0, 0.05)\r\n border-color #f00 !important\r\n\r\n textarea,\r\n input\r\n outline none /* osx */\r\n\r\n .gltfIcon img\r\n box-sizing content-box\r\n display inline\r\n height 20px\r\n left 5px\r\n padding 0 5px\r\n position relative\r\n top 4px\r\n vertical-align baseline\r\n width 20px\r\n\r\n #sidebar,\r\n #scenegraph,\r\n .panel\r\n cursor default\r\n user-select none\r\n\r\n #sceneActions\r\n display flex\r\n flex-direction row\r\n position absolute\r\n bottom 0\r\n z-index 40\r\n width calc(20rem - 48px)\r\n height 48px\r\n background $bg\r\n padding-left 48px\r\n\r\n #sceneActions .sceneActionsTitle\r\n letter-spacing 0.1em\r\n line-height 1rem\r\n font-size 0.75rem\r\n padding 0.25rem\r\n text-align center\r\n background #303032\r\n color #989899\r\n font-weight 500\r\n\r\n #sceneActions .sceneActionsButton\r\n display flex\r\n\r\n .toggle-edit\r\n background-color $bg\r\n box-sizing content-box\r\n color white\r\n font-size 12px\r\n left 0px\r\n bottom 0px\r\n line-height normal\r\n margin 0\r\n position absolute\r\n text-align center\r\n text-decoration none\r\n width 48px\r\n height 48px\r\n display flex\r\n align-items center\r\n justify-content center\r\n z-index 40\r\n\r\n .toggle-edit:hover\r\n background-color #141417\r\n color white\r\n\r\n svg\r\n color $red\r\n\r\n .toggle-save,\r\n .toggle-live\r\n background-color $bg\r\n color white\r\n height 40px\r\n display flex\r\n align-items center\r\n justify-content center\r\n border 0\r\n font-size 16px\r\n font-weight 500\r\n cursor pointer\r\n\r\n .toggle-save:hover,\r\n .toggle-live:hover\r\n background-color $bgdark\r\n\r\n #saveSceneBtn\r\n width 10rem\r\n\r\n #liveSceneBtn\r\n width 10rem\r\n\r\n input\r\n border 1px solid #555\r\n color #fff\r\n\r\n input,\r\n .texture canvas\r\n transition 0.1s background-color ease-in-out, 0.1s border-color ease-in-out, 0.1s color ease-in-out\r\n\r\n input[type=text],\r\n input[type=number],\r\n input.string,\r\n input.number\r\n min-height 14px\r\n outline none\r\n\r\n input[type=\"checkbox\"]\r\n appearance auto\r\n cursor pointer\r\n margin 0\r\n height 18px\r\n width 18px\r\n\r\n input[type=\"checkbox\"]:focus\r\n box-shadow none\r\n\r\n input.number\r\n border 0\r\n color white !important\r\n cursor col-resize\r\n font-size 14px\r\n padding 2px\r\n\r\n input.stringfocus,\r\n input.numberfocus\r\n border 1px solid #00FF99\r\n color #fff\r\n cursor auto\r\n\r\n input.error\r\n border 1px solid #a00\r\n\r\n #sidebar\r\n background $bg\r\n width 100%\r\n flex-grow 1\r\n overflow-y auto\r\n\r\n #sidebar *\r\n vertical-align middle\r\n\r\n input,\r\n textarea,\r\n select\r\n background $black\r\n border 1px solid transparent\r\n color #888\r\n\r\n select\r\n background $bglighter\r\n\r\n input[type=color]\r\n background-color #333\r\n border 1px solid #111\r\n height 28px\r\n cursor pointer\r\n\r\n input[type=color]\r\n cursor pointer\r\n height 25px\r\n padding 0\r\n width 50px\r\n\r\n /* Note these vendor-prefixed selectors cannot be grouped! */\r\n input[type=color]-webkit-color-swatch\r\n border 0 /* To remove the gray border. */\r\n\r\n input[type=color]-webkit-color-swatch-wrapper\r\n padding 0 /* To remove the inner padding. */\r\n\r\n input[type=color]-moz-color-swatch\r\n border 0\r\n\r\n input[type=color]-moz-focus-inner\r\n border 0 /* To remove the inner border (specific to Firefox). */\r\n padding 0\r\n\r\n .hidden\r\n visibility hidden\r\n\r\n a.button\r\n color #A3A3A3\r\n font-size 16px\r\n margin-left 8px\r\n display flex\r\n align-items center\r\n justify-content center\r\n text-decoration none\r\n\r\n a.buttonhover\r\n color #00FF99\r\n\r\n @keyframes animateopacity\r\n from { opacity: 0 }\r\n to { opacity: 1 }\r\n\r\n .hide\r\n display none\r\n\r\n .a-canvas.state-dragging\r\n cursor grabbing\r\n\r\n #rightPanel\r\n top 0\r\n width 20rem\r\n display flex\r\n flex-direction column\r\n height calc(100vh - 48px)\r\n\r\n #actionBar\r\n width 100vw\r\n height 48px\r\n background $bg\r\n bottom 0\r\n position absolute\r\n\r\n #sw-info\r\n display flex\r\n flex-direction column\r\n justify-content center\r\n align-items end\r\n width max-content\r\n height 100%\r\n padding 0 10px\r\n margin-left auto\r\n color $lightgray\r\n\r\n #inspectorContainer\r\n display flex\r\n justify-content space-between\r\n left 0\r\n height 100%\r\n pointer-events none\r\n position fixed\r\n top 0\r\n width 100%\r\n z-index 20\r\n\r\n #scenegraph,\r\n #viewportBar,\r\n #actionBar,\r\n #leftPanel,\r\n #rightPanel\r\n pointer-events all\r\n\r\n .aframe-inspector-opened a-scene .a-canvas\r\n background-color #191919\r\n z-index 9999\r\n\r\n .toggle-sidebar\r\n align-items center\r\n display flex\r\n height 100%\r\n position absolute\r\n z-index 40\r\n\r\n a\r\n background-color #262626\r\n color #A3A3A3\r\n padding 5px\r\n z-index 40\r\n\r\n a.hover\r\n background-color #007370\r\n color #fff\r\n\r\n .toggle-sidebar.left\r\n top 0\r\n left 0\r\n\r\n .toggle-sidebar.right\r\n top 0\r\n right 0\r\n\r\n#rightPanel ::-webkit-scrollbar\r\n#leftPanel ::-webkit-scrollbar {\r\n width: 8px;\r\n height: 8px;\r\n}\r\n\r\n#rightPanel ::-webkit-scrollbar-track\r\n#leftPanel ::-webkit-scrollbar-track {\r\n background: #18181B;\r\n}\r\n\r\n#rightPanel ::-webkit-scrollbar-thumb\r\n#leftPanel ::-webkit-scrollbar-thumb {\r\n background: rgba(0, 0, 0, 0.5);\r\n border-radius: 0;\r\n}\r\n\r\n#rightPanel ::-webkit-scrollbar-thumb:hover\r\n#leftPanel ::-webkit-scrollbar-thumb:hover {\r\n background: rgba(0, 0, 0, 0.75);\r\n}\r\n",
36994
+ "@import './lib';\r\n\r\nbody.aframe-inspector-opened,\r\n.toggle-edit\r\n font-family BlinkMacSystemFont, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif\r\n\r\n.wf-roboto-n4-active body.aframe-inspector-opened,\r\n.wf-roboto-n4-active .toggle-edit\r\n font-family BlinkMacSystemFont, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif\r\n\r\nbody.aframe-inspector-opened\r\n background $bgdark\r\n color #fff\r\n font-size 12px\r\n margin 0\r\n overflow hidden\r\n\r\n#aframeInspector\r\n @import './scenegraph';\r\n @import './components';\r\n @import './entity';\r\n @import './help';\r\n @import './select';\r\n @import './textureModal';\r\n @import './viewport';\r\n @import './widgets';\r\n @import './primitiveModal';\r\n\r\n .error-boundary\r\n position fixed\r\n top 0\r\n left 0\r\n width 100%\r\n height 100%\r\n display flex\r\n align-items center\r\n justify-content center\r\n background rgba(0, 0, 0, 0.9)\r\n z-index 9999\r\n pointer-events all\r\n\r\n .error-content\r\n background #1e1e1e\r\n border 1px solid #ff4444\r\n border-radius 8px\r\n padding 24px 32px\r\n max-width 500px\r\n text-align center\r\n\r\n h2\r\n color #ff4444\r\n margin 0 0 16px 0\r\n font-size 18px\r\n\r\n p\r\n color #a3a3a3\r\n margin 0 0 16px 0\r\n\r\n pre\r\n background #0d0d0d\r\n color #ff6b6b\r\n padding 12px\r\n border-radius 4px\r\n font-size 12px\r\n overflow-x auto\r\n text-align left\r\n margin 0 0 16px 0\r\n\r\n button\r\n background #00ff99\r\n color #000\r\n border none\r\n padding 10px 24px\r\n border-radius 4px\r\n cursor pointer\r\n font-weight 500\r\n font-size 14px\r\n\r\n &:hover\r\n background #00cc7a\r\n\r\n .Select,\r\n code,\r\n pre,\r\n input,\r\n textarea,\r\n select\r\n font-family $monospace\r\n font-size 14px\r\n\r\n .wf-robotomono-n4-active .Select,\r\n .wf-robotomono-n4-active code,\r\n .wf-robotomono-n4-active pre,\r\n .wf-robotomono-n4-active input,\r\n .wf-robotomono-n4-active textarea,\r\n .wf-robotomono-n4-active select\r\n font-family Roboto Mono, Consolas, Andale Mono, Monaco, Courier New, monospace\r\n\r\n hr\r\n border 0\r\n border-top 1px solid #ccc\r\n\r\n a\r\n cursor pointer\r\n\r\n button\r\n position relative\r\n\r\n code\r\n font-family Consolas, Andale Mono, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace\r\n\r\n textarea\r\n tab-size 4\r\n white-space pre\r\n word-wrap normal\r\n\r\n textarea.success\r\n border-color #8b8 !important\r\n\r\n textarea.fail\r\n background-color rgba(255, 0, 0, 0.05)\r\n border-color #f00 !important\r\n\r\n textarea,\r\n input\r\n outline none /* osx */\r\n\r\n .gltfIcon img\r\n box-sizing content-box\r\n display inline\r\n height 20px\r\n left 5px\r\n padding 0 5px\r\n position relative\r\n top 4px\r\n vertical-align baseline\r\n width 20px\r\n\r\n #sidebar,\r\n #scenegraph,\r\n .panel\r\n cursor default\r\n user-select none\r\n\r\n #sceneActions\r\n display flex\r\n flex-direction row\r\n position absolute\r\n bottom 0\r\n z-index 40\r\n width calc(20rem - 48px)\r\n height 48px\r\n background $bg\r\n padding-left 48px\r\n\r\n #sceneActions .sceneActionsTitle\r\n letter-spacing 0.1em\r\n line-height 1rem\r\n font-size 0.75rem\r\n padding 0.25rem\r\n text-align center\r\n background #303032\r\n color #989899\r\n font-weight 500\r\n\r\n #sceneActions .sceneActionsButton\r\n display flex\r\n\r\n .toggle-edit\r\n background-color $bg\r\n box-sizing content-box\r\n color white\r\n font-size 12px\r\n left 0px\r\n bottom 0px\r\n line-height normal\r\n margin 0\r\n position absolute\r\n text-align center\r\n text-decoration none\r\n width 48px\r\n height 48px\r\n display flex\r\n align-items center\r\n justify-content center\r\n z-index 40\r\n\r\n .toggle-edit:hover\r\n background-color #141417\r\n color white\r\n\r\n svg\r\n color $red\r\n\r\n .toggle-save,\r\n .toggle-live\r\n background-color $bg\r\n color white\r\n height 40px\r\n display flex\r\n align-items center\r\n justify-content center\r\n border 0\r\n font-size 16px\r\n font-weight 500\r\n cursor pointer\r\n\r\n .toggle-save:hover,\r\n .toggle-live:hover\r\n background-color $bgdark\r\n\r\n #saveSceneBtn\r\n width 10rem\r\n\r\n #liveSceneBtn\r\n width 10rem\r\n\r\n input\r\n border 1px solid #555\r\n color #fff\r\n\r\n input,\r\n .texture canvas\r\n transition 0.1s background-color ease-in-out, 0.1s border-color ease-in-out, 0.1s color ease-in-out\r\n\r\n input[type=text],\r\n input[type=number],\r\n input.string,\r\n input.number\r\n min-height 14px\r\n outline none\r\n\r\n input[type=\"checkbox\"]\r\n appearance auto\r\n cursor pointer\r\n margin 0\r\n height 18px\r\n width 18px\r\n\r\n input[type=\"checkbox\"]:focus\r\n box-shadow none\r\n\r\n input.number\r\n border 0\r\n color white !important\r\n cursor col-resize\r\n font-size 14px\r\n padding 2px\r\n\r\n input.stringfocus,\r\n input.numberfocus\r\n border 1px solid #00FF99\r\n color #fff\r\n cursor auto\r\n\r\n input.error\r\n border 1px solid #a00\r\n\r\n #sidebar\r\n background $bg\r\n width 100%\r\n flex-grow 1\r\n overflow-y auto\r\n\r\n #sidebar *\r\n vertical-align middle\r\n\r\n input,\r\n textarea,\r\n select\r\n background $black\r\n border 1px solid transparent\r\n color #888\r\n\r\n select\r\n background $bglighter\r\n\r\n input[type=color]\r\n background-color #333\r\n border 1px solid #111\r\n height 28px\r\n cursor pointer\r\n\r\n input[type=color]\r\n cursor pointer\r\n height 25px\r\n padding 0\r\n width 50px\r\n\r\n /* Note these vendor-prefixed selectors cannot be grouped! */\r\n input[type=color]-webkit-color-swatch\r\n border 0 /* To remove the gray border. */\r\n\r\n input[type=color]-webkit-color-swatch-wrapper\r\n padding 0 /* To remove the inner padding. */\r\n\r\n input[type=color]-moz-color-swatch\r\n border 0\r\n\r\n input[type=color]-moz-focus-inner\r\n border 0 /* To remove the inner border (specific to Firefox). */\r\n padding 0\r\n\r\n .hidden\r\n visibility hidden\r\n\r\n a.button\r\n color #A3A3A3\r\n font-size 16px\r\n margin-left 8px\r\n display flex\r\n align-items center\r\n justify-content center\r\n text-decoration none\r\n\r\n a.buttonhover\r\n color #00FF99\r\n\r\n @keyframes animateopacity\r\n from { opacity: 0 }\r\n to { opacity: 1 }\r\n\r\n .hide\r\n display none\r\n\r\n .a-canvas.state-dragging\r\n cursor grabbing\r\n\r\n #rightPanel\r\n top 0\r\n width 20rem\r\n display flex\r\n flex-direction column\r\n height calc(100vh - 48px)\r\n\r\n #actionBar\r\n width 100vw\r\n height 48px\r\n background $bg\r\n bottom 0\r\n position absolute\r\n\r\n #sw-info\r\n display flex\r\n flex-direction column\r\n justify-content center\r\n align-items end\r\n width max-content\r\n height 100%\r\n padding 0 10px\r\n margin-left auto\r\n color $lightgray\r\n\r\n #inspectorContainer\r\n display flex\r\n justify-content space-between\r\n left 0\r\n height 100%\r\n pointer-events none\r\n position fixed\r\n top 0\r\n width 100%\r\n z-index 20\r\n\r\n #scenegraph,\r\n #viewportBar,\r\n #actionBar,\r\n #leftPanel,\r\n #rightPanel\r\n pointer-events all\r\n\r\n .aframe-inspector-opened a-scene .a-canvas\r\n background-color #191919\r\n z-index 9999\r\n\r\n .toggle-sidebar\r\n align-items center\r\n display flex\r\n height 100%\r\n position absolute\r\n z-index 40\r\n\r\n a\r\n background-color #262626\r\n color #A3A3A3\r\n padding 5px\r\n z-index 40\r\n\r\n a.hover\r\n background-color #007370\r\n color #fff\r\n\r\n .toggle-sidebar.left\r\n top 0\r\n left 0\r\n\r\n .toggle-sidebar.right\r\n top 0\r\n right 0\r\n\r\n#rightPanel ::-webkit-scrollbar\r\n#leftPanel ::-webkit-scrollbar {\r\n width: 8px;\r\n height: 8px;\r\n}\r\n\r\n#rightPanel ::-webkit-scrollbar-track\r\n#leftPanel ::-webkit-scrollbar-track {\r\n background: #18181B;\r\n}\r\n\r\n#rightPanel ::-webkit-scrollbar-thumb\r\n#leftPanel ::-webkit-scrollbar-thumb {\r\n background: rgba(0, 0, 0, 0.5);\r\n border-radius: 0;\r\n}\r\n\r\n#rightPanel ::-webkit-scrollbar-thumb:hover\r\n#leftPanel ::-webkit-scrollbar-thumb:hover {\r\n background: rgba(0, 0, 0, 0.75);\r\n}\r\n",
36911
36995
  "@import './lib';\r\n\r\n#toolbar\r\n background-color $bgdark\r\n\r\n .toolbarActions\r\n padding 0\r\n height 48px\r\n display grid\r\n grid-template-columns repeat(2, minmax(0, 1fr))\r\n\r\n a.button\r\n display flex\r\n justify-content center\r\n align-items center\r\n flex-direction column\r\n margin 0\r\n\r\n svg\r\n color inherit\r\n\r\n span\r\n font-size 12px\r\n\r\n a.button:hover\r\n color $primary\r\n\r\n a.disabled\r\n color #666\r\n cursor default\r\n\r\n#leftPanel\r\n display flex\r\n flex-direction column\r\n width 20rem\r\n height calc(100vh - 48px)\r\n\r\n.scenegraph-menubar\r\n display flex\r\n height 40px\r\n width 100%\r\n justify-content space-between\r\n background-color $bg\r\n \r\n#githubLink\r\n display flex\r\n align-items center\r\n gap 8px\r\n font-size 14px\r\n height 100%\r\n width 320px\r\n color $lightgray\r\n padding 0 10px\r\n text-decoration none\r\n\r\n svg\r\n height 18px\r\n\r\n#githubLink:hover\r\n color $primary\r\n\r\n svg\r\n color $primary\r\n \r\n#scenegraph\r\n background $bg\r\n border-top 1px solid #111\r\n display flex\r\n flex-direction column\r\n overflow auto\r\n width 100%\r\n height calc(100vh - 40px)\r\n\r\n .entity\r\n background $bg\r\n cursor pointer\r\n display flex\r\n justify-content space-between\r\n padding 10px\r\n white-space nowrap\r\n\r\n &:hover\r\n background $bgdark\r\n\r\n &.active\r\n background-color #09090B\r\n color #fff\r\n .component:hover\r\n color rgba(0, 0, 0, 0.5)\r\n .entityActions\r\n display flex\r\n\r\n &.novisible\r\n &.active\r\n span,\r\n svg,\r\n .collapsespace,\r\n .id\r\n color #999\r\n\r\n &:not(.active)\r\n span,\r\n svg,\r\n .collapsespace,\r\n .id\r\n color #626262\r\n\r\n &.drag-before\r\n border-top 2px solid $primary\r\n\r\n &.drag-after\r\n border-bottom 2px solid $primary\r\n\r\n &.drag-inside\r\n background-color $primary\r\n color $bgdark\r\n\r\n .component:hover\r\n color rgba(0, 0, 0, 0.5)\r\n\r\n .entityIcons\r\n margin-left 2px\r\n\r\n .entityActions\r\n display none\r\n margin 0 4px\r\n\r\n .button\r\n color #fff\r\n font-size 12px\r\n margin-left 6px\r\n\r\n svg\r\n color #CCC\r\n\r\n .entityActions svg:hover\r\n color $primary\r\n\r\n .active svg\r\n color #FAFAFA\r\n\r\n .id\r\n color #ccc\r\n\r\n .option.active .id\r\n color #fff\r\n\r\n .collapsespace\r\n color #eee\r\n display inline-block\r\n text-align center\r\n width 14px\r\n margin-left 8px\r\n\r\n .fa-eye\r\n color #bbb\r\n\r\n .icons a.button\r\n color #fff\r\n\r\n .search\r\n padding 0px\r\n font-size 16px\r\n position relative\r\n overflow hidden\r\n\r\n input\r\n color $white\r\n background $bg\r\n border-radius 0px\r\n border-bottom 1px solid $bgdark\r\n height 40px\r\n text-indent 10px\r\n width 100%\r\n\r\n svg\r\n position absolute\r\n right 12px\r\n top 12px\r\n\r\n .outliner\r\n background $bg\r\n color $white\r\n cursor default\r\n flex 1 1 auto\r\n font-size 14px\r\n line-height normal\r\n outline none\r\n overflow-y auto\r\n padding 0px\r\n width 100%\r\n\r\n.scenegraph-bottom\r\n background-color #323232\r\n border-top 1px solid #111\r\n bottom 10\r\n height 40px\r\n left 0\r\n z-index 100\r\n\r\n a\r\n float right\r\n margin 10px\r\n",
36912
36996
  '@import \'./lib\';\n\npropertyRowDefined() {\n .propertyRowDefined {\n {block}\n }\n}\n\n.sidebar-header\n height 16px\n font-weight 600\n color white\n\n.componentHeader.title\n height 40px\n width 100%\n display flex\n align-items center\n justify-content space-between\n background-color $bg\n\n h3\n margin 0px auto 0px 15px\n font-size 14px\n font-family ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n\n a\n width 40px\n height 40px\n display flex\n align-items center\n justify-content center\n font-size 16px\n cursor pointer\n\n.components\n background-color $bg\n color #A3A3A3\n overflow auto\n width 100%\n\ndiv.vec2,\ndiv.vec3,\ndiv.vec4\n display flex\n gap 4px\n\n.vec2 input.number,\n.vec3 input.number\n width 50px\n\n.vec4 input.number\n width 34px\n\n.collapsible-header\n align-items center\n display flex\n justify-content space-between\n .entityPrint\n color #fff\n\n.collapsible-content\n padding 5px 0\n display flex\n flex-direction column\n gap 8px\n\n.componentTitle span\n max-width 200px\n overflow hidden\n text-overflow ellipsis\n text-transform uppercase\n white-space nowrap\n color #fff\n font-weight 600\n vertical-align bottom !important\n display flex\n\n.collapsible .static\n background $bglight\n border-bottom 2px solid $bg\n box-sizing content-box\n cursor pointer\n padding 12px 10px\n vertical-align bottom\n font-size 12px\n &:hover\n background $bglighter\n/*\n.collapsible\n &.collapsed\n background-color $grayalt\n .static,\n .componentHeaderActions\n color #dedede\n &:hover\n background-color $grayhover\n*/\n.collapsible .menu\n text-align right\n\n.collapsible .menuafter\n color #bbb\n content \'\\2807\'\n font-size 12px\n padding 5px\n text-align right\n\n.collapsible .static\n margin 0\n\n.collapsible .static .collapse-button\n border 6px solid transparent\n float left\n height 0\n margin-right 10px\n margin-left 2px\n width 0\n\n.collapsible.collapsed .static .collapse-button\n border-left-color $white\n margin-top 4px\n\n.collapsible:not(.collapsed) .static .collapse-button\n border-top-color $white\n margin-top 7px\n\n.propertyRow\n display flex\n flex-direction column\n font-size 12px\n min-height 30px\n padding 2px 15px\n\n .text\n cursor default\n display inline-block\n overflow hidden\n padding-bottom 4px\n text-overflow ellipsis\n vertical-align middle\n width 180px\n text-transform capitalize\n\n .map_value\n margin 0 0 0 5px\n width 68px\n\n .Select-control\n font-size 11px\n height 24px\n\n .Select-placeholder,\n .Select--single > .Select-control .Select-value\n line-height 19px\n\n .Select-input\n height 22px\n\n input[type=text],\n input[type=number],\n input.string,\n input.number\n background $bgdark\n border-radius 8px\n color white\n min-height 32px\n padding-bottom 1px\n padding-left 8px\n padding-right 8px\n padding-top 1px\n &:last-child\n padding-right 0\n\n input.string\n padding-left 8px\n box-sizing border-box\n width 100%\n\n input[type=text]:focus,\n input.string:focus\n box-shadow none\n\n .color_value\n margin 0 0 0 5px\n width 68px\n letter-spacing 1px\n\n.propertyRowDefined .text\n color $red\n font-weight 500\n\n.components *\n vertical-align middle\n\nspan.subcomponent\n color #999\n float none !important\n margin-left 10px\n vertical-align top !important\n\na.help-link\n opacity 0.4\n\na.help-linkhover\n opacity 1\n\n#addComponentContainer\n align-items center\n display flex\n flex-direction column\n justify-content center\n padding 20px 10px\n background $bgdark\n\n #addComponent\n text-align left\n width 200px\n .select__control\n background #161616\n height 35px\n color $primary\n .option\n display flex\n justify-content space-between\n span\n color $primary\n\n #addComponentHeader\n font-size 15px\n margin 5px 0 10px 0\n\n input[type=text]:focus\n box-shadow none\n\n.Select-menu-outer .is-focused span\n color #fff\n\n.component-title\n align-items center\n display flex\n\n#componentEntityHeader\n .collapsible-header\n position relative\n .collapse-button\n display none\n .static\n height 14px\n background $bgdark\n .entityPrint\n font-size 14px\n padding-left 5px\n .entityName\n max-width 160px\n top 0\n .entityIcons\n color #FAFAFA\n\n#mixinSelect\n width 100%\n\n.propertyRow .texture\n display flex\n gap 4px\n input\n margin-left 0\n\n#componentEntityHeader .gltfIcon img\n top 0\n\nsvg\n color $white\n &:hover\n color $primary\n',
36913
36997
  '@import \'./lib\';\n\n.entityPrint\n font-family $normalfont\n line-height 1.15em\n\n.entityName\n display inline-block\n overflow hidden\n position relative\n text-overflow ellipsis\n top 3px\n white-space nowrap\n\n[data-entity-name-type="id"]\n color $red\n\n[data-entity-name-type="class"]\n color $green\n\n[data-entity-name-type="mixin"]\n color $orange\n',
36914
36998
  '.help-lists\r\n display flex\r\n justify-content space-around\r\n\r\n.help-list\r\n list-style none\r\n margin 0\r\n padding 0 0 10px\r\n width 350px\r\n\r\n.help-list li\r\n margin-right 40px\r\n\r\n.help-key-unit\r\n line-height 1.8\r\n margin-right 2em\r\n padding 5px 0\r\n\r\n.help-key\r\n bottom 2px\r\n margin-right 4px\r\n min-width 60px\r\n position relative\r\n\r\n.help-key span\r\n background-color #2e2e2e\r\n background-repeat repeat-x\r\n border 1px solid #666\r\n border-radius 3px\r\n box-shadow 0 0 5px #000\r\n color #999\r\n display inline-block\r\n font-size 12px\r\n padding 0 8px\r\n text-align center\r\n\r\n.help-key-def\r\n color #bbb\r\n display inline-block\r\n margin-left 1em\r\n',
36915
36999
  "@import './lib';\n\n.select__control\n border 0\n border-radius 8px\n cursor pointer\n min-height 32px\n font-family $monospace\n font-size 14px\n\n.select__indicator\n height 26px\n\n.select__indicator-separator\n display none\n\n.select__input\n min-height auto !important\n\n.select__control,\n.select__menu\n background $bgdark\n\n.select__option\n padding 5px 10px\n\n.select__placeholder,\n.select__menu\n color $white\n\n.select__single-value\n color white\n\n.select__control--is-focused\n box-shadow none !important\n\n.select__option\n cursor pointer\n\n.select__clear-indicator\n display none\n\n.select__label\n font-size 14px\n\n.select__option--is-focused\n background $bg\n\n.select__value-container\n height 32px\n position static\n &.select__value-container--is-multi\n height auto\n padding 6px\n\n.select__dropdown-indicator\n padding 3px 8px\n\n.select__multi-value\n background $bg\n color $primary\n\n.select__multi-value__label\n color $primary\n\n.select__value-container--is-multi > :last-child\n display none\n\n.select__multi-value__remove:hover\n color #fff\n background $bg\n",
36916
- '.modal\n animation animateopacity 0.2s ease-out\n display flex\n height 100%\n left 0\n overflow auto\n position fixed\n top 0\n width 100%\n z-index 9999999999\n backdrop-filter blur(4px)\n background-color rgba(0, 0, 0, .5)\n\n.modal h3\n font-size 16px\n font-weight 500\n margin 0.6em 0\n\n#textureModal .modal-content\n height calc(100% - 96px)\n max-width calc(100% - 96px)\n border-radius 8px\n\n.modal-content\n animation animatetop 0.2s ease-out\n animation-duration 0.2s\n animation-name animatetop\n background-color #18181B\n margin auto\n overflow hidden\n padding 0\n\n.close\n color #ffffff80\n float right\n font-size 24px\n font-weight bold\n\n &:hover\n cursor pointer\n color #ffffff\n\n.closehover,\n.closefocus\n color #08f\n cursor pointer\n text-decoration none\n\n.modal-header\n color white\n padding 2px 16px\n\n.modal-body\n overflow auto\n padding 16px\n height inherit\n\n.modal-footer\n color white\n padding 2px 16px\n\n/* Gallery */\n.gallery\n background #232323\n display flex\n flex-wrap wrap\n margin 15px auto 0\n overflow auto\n padding 15px 3px 3px\n\n.newimage .gallery\n padding 8px\n\n.gallery li\n border-radius 8px\n box-shadow 0 0 6px rgba(0, 0, 0, 0.6)\n cursor pointer\n margin 8px\n overflow hidden\n width 155px\n\n.gallery li.selected,\n.gallery li:hover\n box-shadow 0 0 0 2px #00ff99\n\n.gallery li .detail\n background-color #323232\n margin 0\n min-height 60px\n padding 4px 8px 8px 8px\n\n.preview\n padding 10px\n width 150px\n\n.preview input\n display block\n margin 8px 0\n width 144px\n\n.preview button\n width 155px\n\n.preview .detail .title\n color #fff\n display inline-block\n max-width 155px\n overflow hidden\n text-overflow ellipsis\n white-space nowrap\n\n.gallery li.selected .detail,\n.gallery li:hover .detail\n background-color #444\n\n.gallery li .detail span\n color #777\n display block\n margin-top 4px\n overflow hidden\n text-overflow ellipsis\n white-space nowrap\n width 140px\n\n.gallery li.selected .detail span,\n.gallery li:hover .detail span\n color #888\n\n.gallery li .detail span.title\n color #fff !important\n\n.modal button\n appearance none\n border-radius 0\n box-shadow none\n cursor pointer\n display inline-block\n font-size 12px\n line-height 1.8\n margin 0 0 0 0\n padding 5px 10px\n\n.modal buttonfocus\n outline none\n\n.modal button\n background-color #09090b\n border none\n color #fff\n border-radius 8px\n font-weight 500\n padding 8px 16px\n text-transform capitalize\n\n.modal buttonhover,\n.modal button.hover\n background-color #346392\n text-shadow -1px 1px #27496d\n\n.modal buttonactive,\n.modal button.active\n background-color #27496d\n text-shadow -1px 1px #193047\n\n.modal buttondisabled\n background-color #888\n cursor none\n\n.newimage\n background-color #323232\n color #A3A3A3\n display flex\n font-size 14px\n justify-content space-between\n margin-top 16px\n overflow auto\n padding 8px\n border-radius 8px\n\n.newimage input\n color #00ff99\n padding 3px 5px\n\n.texture canvas + input\n margin-left 5px\n\n.texture svg\n padding-right 5px\n\n.uploader-normal-button .hidden\n display none\n\n.assets.search\n position relative\n margin-top 10px\n width 200px\n\n.assets.search svg\n position absolute\n right 0px\n top 5px\n\n.new_asset_options\n margin 10px\n\n.new_asset_options > ul\n margin-left 10px\n padding 5px\n\n.new_asset_options > ul > li\n padding 10px 0\n\n.new_asset_options .imageUrl\n margin-left 5px\n width 350px\n\n.texture canvas\n border 1px solid rgba(255, 255, 255, .15)\n border-radius 8px\n cursor pointer\n',
37000
+ '.modal\r\n animation animateopacity 0.2s ease-out\r\n display flex\r\n height 100%\r\n left 0\r\n overflow auto\r\n position fixed\r\n top 0\r\n width 100%\r\n z-index 9999999999\r\n backdrop-filter blur(4px)\r\n background-color rgba(0, 0, 0, .5)\r\n\r\n.modal h3\r\n font-size 16px\r\n font-weight 500\r\n margin 0.6em 0\r\n\r\n#textureModal .modal-content\r\n height calc(100% - 96px)\r\n max-width calc(100% - 96px)\r\n border-radius 8px\r\n\r\n.modal-content\r\n animation animatetop 0.2s ease-out\r\n animation-duration 0.2s\r\n animation-name animatetop\r\n background-color #18181B\r\n margin auto\r\n overflow hidden\r\n padding 0\r\n\r\n.close\r\n color #ffffff80\r\n float right\r\n font-size 24px\r\n font-weight bold\r\n\r\n &:hover\r\n cursor pointer\r\n color #ffffff\r\n\r\n.closehover,\r\n.closefocus\r\n color #08f\r\n cursor pointer\r\n text-decoration none\r\n\r\n.modal-header\r\n color white\r\n padding 2px 16px\r\n\r\n.modal-body\r\n overflow auto\r\n padding 16px\r\n height inherit\r\n\r\n &::-webkit-scrollbar\r\n width 8px\r\n height 8px\r\n\r\n &::-webkit-scrollbar-track\r\n background #18181B\r\n border-radius 4px\r\n\r\n &::-webkit-scrollbar-thumb\r\n background #3f3f46\r\n border-radius 4px\r\n transition background 0.2s ease\r\n\r\n &::-webkit-scrollbar-thumb:hover\r\n background #52525b\r\n\r\n &::-webkit-scrollbar-corner\r\n background #18181B\r\n\r\n.modal-footer\r\n color white\r\n padding 2px 16px\r\n\r\n/* Gallery */\r\n.gallery\r\n display flex\r\n flex-wrap wrap\r\n overflow auto\r\n gap 12px\r\n padding 2px\r\n\r\n.newimage .gallery\r\n\r\n/* Toolbar */\r\n.texture-toolbar\r\n display flex\r\n align-items center\r\n gap 12px\r\n margin-bottom 12px\r\n max-height 65vh\r\n\r\n.url-input-group\r\n flex 1\r\n display flex\r\n gap 8px\r\n align-items center\r\n\r\n.url-input-group .imageUrl\r\n flex 1\r\n height 32px\r\n padding 0 12px\r\n border-radius 8px\r\n border none\r\n background #232323\r\n color #00ff99\r\n font-size 13px\r\n\r\n.url-input-group .imageUrl::placeholder\r\n color #666\r\n\r\n.url-input-group .load-url-btn\r\n height 32px\r\n padding 0 16px\r\n white-space nowrap\r\n font-size 12px\r\n\r\n.registry-section\r\n margin-bottom 12px\r\n\r\n.section-label\r\n display block\r\n margin-bottom 8px\r\n color #888\r\n font-size 13px\r\n\r\n.gallery-item\r\n border-radius 8px\r\n box-shadow 0 0 6px rgba(0, 0, 0, 0.6)\r\n cursor pointer\r\n overflow hidden\r\n width 155px\r\n transition box-shadow 0.15s ease\r\n\r\n.gallery-item.selected,\r\n.gallery-item:hover\r\n box-shadow 0 0 0 2px #00ff99\r\n\r\n.gallery-item .detail\r\n background-color #323232\r\n margin 0\r\n min-height 60px\r\n padding 4px 8px 8px 8px\r\n\r\n.preview\r\n width 250px\r\n\r\n.preview label\r\n color #888\r\n font-size 12px\r\n display block\r\n margin-bottom 4px\r\n\r\n.preview input\r\n display block\r\n margin 0 0 12px 0\r\n height 24px\r\n width 230px\r\n border-radius 8px\r\n\r\n.preview img\r\n border-radius 8px\r\n margin-bottom 8px\r\n\r\n.preview button\r\n width 242px\r\n margin-top 8px\r\n\r\n.preview button:hover\r\n background-color #00ff99\r\n color #000\r\n\r\n.preview .detail\r\n margin-bottom 8px\r\n\r\n.preview .detail .title\r\n color #fff\r\n display block\r\n max-width 230px\r\n overflow hidden\r\n text-overflow ellipsis\r\n white-space nowrap\r\n font-size 13px\r\n\r\n.preview .detail .dimensions\r\n color #888\r\n font-size 12px\r\n display block\r\n margin-top 4px\r\n\r\n.gallery-item.selected .detail,\r\n.gallery-item:hover .detail\r\n background-color #444\r\n\r\n.gallery-item .detail span\r\n color #777\r\n display block\r\n margin-top 4px\r\n overflow hidden\r\n text-overflow ellipsis\r\n white-space nowrap\r\n width 140px\r\n\r\n.gallery-item.selected .detail span,\r\n.gallery-item:hover .detail span\r\n color #888\r\n\r\n.gallery-item .detail span.title\r\n color #fff !important\r\n\r\n.gallery .loading-indicator\r\n background transparent\r\n box-shadow none\r\n color #888\r\n display flex\r\n align-items center\r\n justify-content center\r\n width 100%\r\n padding 40px 20px\r\n font-size 14px\r\n animation pulse 1.5s ease-in-out infinite\r\n\r\n@keyframes pulse\r\n 0%, 100%\r\n opacity 0.5\r\n 50%\r\n opacity 1\r\n\r\n.modal button\r\n appearance none\r\n border-radius 0\r\n box-shadow none\r\n cursor pointer\r\n display inline-block\r\n font-size 12px\r\n line-height 1.8\r\n margin 0 0 0 0\r\n padding 5px 10px\r\n\r\n.modal buttonfocus\r\n outline none\r\n\r\n.modal button\r\n background-color #09090b\r\n border none\r\n color #fff\r\n border-radius 8px\r\n font-weight 500\r\n padding 8px 16px\r\n text-transform capitalize\r\n transition all 0.2s ease-in-out\r\n\r\n.modal button:hover\r\n background-color #00ff99\r\n color #000\r\n\r\n.modal buttonhover,\r\n.modal button.hover\r\n background-color #346392\r\n text-shadow -1px 1px #27496d\r\n\r\n.modal buttonactive,\r\n.modal button.active\r\n background-color #27496d\r\n text-shadow -1px 1px #193047\r\n\r\n.modal buttondisabled\r\n background-color #888\r\n cursor none\r\n\r\n.newimage\r\n color #A3A3A3\r\n display flex\r\n gap 24px\r\n font-size 14px\r\n justify-content space-between\r\n overflow auto\r\n max-height 74vh\r\n\r\n.newimage input\r\n color #00ff99\r\n padding 3px 5px\r\n\r\n.texture canvas + input\r\n margin-left 5px\r\n\r\n.texture svg\r\n padding-right 5px\r\n\r\n.uploader-normal-button .hidden\r\n display none\r\n\r\n.assets.search\r\n position relative\r\n margin-top 8px\r\n width 100%\r\n\r\n.assets.search svg\r\n position absolute\r\n right 10px\r\n top 8px\r\n\r\n.assets.search input\r\n width calc(100% - 12px)\r\n height 20px\r\n padding 5px\r\n border-radius 8px\r\n\r\n.new_asset_options\r\n width 100%\r\n\r\n.new_asset_options > ul\r\n margin-left 10px\r\n padding 5px\r\n\r\n.new_asset_options > ul > li\r\n padding 10px 0\r\n\r\n.new_asset_options .imageUrl\r\n margin-left 5px\r\n width 350px\r\n height 24px\r\n border-radius 8px\r\n\r\n.texture canvas\r\n border 1px solid rgba(255, 255, 255, .15)\r\n border-radius 8px\r\n cursor pointer\r\n',
36917
37001
  "@import './lib';\n\n#viewportBar\n align-items center\n color $white\n position absolute\n top 0\n left 50%\n transform translateX(-50%)\n flex-grow 2\n display flex\n height 40px\n font-size 14px\n justify-content space-between\n margin 8px auto\n width auto\n background $bg\n border-radius 8px\n\n .viewportHud-menubar\n display flex\n height 40px\n width 240px\n align-items center\n justify-content flex-end\n\n#viewportHud\n padding 0px 4px\n margin 0 4px\n background $bgdark\n overflow-x auto\n overflow-y hidden\n height 30px\n width 230px\n border-radius 8px\n display flex!important\n align-items center\n justify-content end\n\n p\n margin 0\n font-size 14px\n\n#pageToolbar\n display flex\n align-items center\n height 48px\n\n .button\n width 48px\n height 48px\n border 0\n background none\n font-size 16px\n cursor pointer\n\n .button:hover\n background #141417\n\n svg\n color $primary\n\n.toolbarButtons\n display flex\n align-items center\n height 40px\n\n *\n margin-left 0 !important\n vertical-align middle\n height 48px\n display flex\n align-items center\n\n a.button\n & svg\n padding 12px\n\n &:not(.active) svg:hover\n background-color #141417\n\n .active svg\n background-color #141417!important\n color $primary\n\n .active:hover svg\n color #fff !important\n\n.local-transform\n padding-left 10px\n padding-right 20px\n\n.local-transform label\n color $lightgray\n padding-left 8px\n font-size 14px\n\n.local-transform a.button\n padding-top 0\n\n#cameraSelect\n cursor pointer\n width 120px\n .select__dropdown-indicator\n padding-left 3px\n padding-right 3px\n\n#cameraToolbar\n align-items center\n height 40px\n padding 0 5px\n display flex\n\n #cameraSelect\n width 160px // Adjust width to accommodate icon + text\n .select__control\n background-color $bgdark\n border none\n min-height 30px // Adjust height\n height 30px\n box-shadow none\n &:hover\n border-color $grey\n .select__value-container\n padding 0 4px\n .select__single-value\n color $white\n display flex\n align-items center\n svg\n margin-right 8px\n width 16px\n height 16px\n .select__indicator-separator\n display none\n .select__dropdown-indicator\n padding 4px\n color $grey\n &:hover\n color $white\n .select__menu\n background-color $bgdark\n .select__option\n background-color $bgdark\n color $white\n display flex\n align-items center\n svg\n margin-right 8px\n width 24px\n height 24px\n &:hover\n background-color #141417\n color $primary\n svg\n fill $primary\n &--is-focused\n background-color #141417 // Keep focus style consistent with hover\n &--is-selected\n background-color $bgdark // Keep selected background subtle if needed\n color $primary\n svg\n fill $primary\n\n#viewportHud\n display none\n +media--1024()\n display block\n",
36918
37002
  "@import './lib';\n\n.Select-control\n background-color #222 !important\n border none\n border-radius 0\n color $primary\n font-family $monosapce\n\n.Select-menu-outer\n border none\n\n.Select-menu-outer .is-focused\n background-color $primary !important\n color $white\n\n.Select-option\n background-color #222 !important\n\n.select-widget\n display inline-block\n width 100%\n border-radius 8px\n\n.Select-placeholder,\n.Select--single > .Select-control .Select-value\n color $primary !important\n\n.Select-value-label\n color $primary !important\n\n/* Dropdown menu */\n.dropbtn\n border none\n color $white\n cursor pointer\n\n.dropdown\n display inline-block\n position relative\n\n.dropdown-content\n background-color #f9f9f9\n box-shadow 0 8px 16px 0 rgba(0, 0, 0, 0.2)\n display none\n left 8px\n min-width 38px\n position absolute\n z-index 999\n\n.dropdown-content a\n background-color #232323\n color #7d7d7d\n display block\n padding 10px 14px\n text-decoration none\n\n.dropdown-content a:hover\n background-color #007370\n color $white\n\n.dropdownhover .dropdown-content\n display block\n\n.dropdownhover .dropbtn\n color $primary\n\n.color-widget\n display flex\n justify-content space-between\n align-items center\n",
36919
37003
  '.modal-overlay\n position fixed\n top 0\n left 0\n right 0\n bottom 0\n backdrop-filter blur(4px)\n background-color rgba(0, 0, 0, .5)\n display flex\n justify-content center\n align-items center\n z-index 1000 /* Ensure modal is on top */\n\n.modal-content\n color #eee /* Light text */\n border-radius 8px\n min-width 300px\n max-width 600px\n width 100%\n box-shadow 0 4px 15px rgba(0, 0, 0, 0.2)\n\n#primitive-modal .modal-header\n display flex\n justify-content space-between\n align-items center\n\n.modal-body\n display flex\n flex-direction column\n\n#primitive-modal h3\n text-align center\n color #fff\n font-size 16px\n font-weight 500\n margin 0.6em 0\n\n.primitive-grid\n display grid\n grid-template-columns repeat(auto-fit, minmax(100px, 1fr)) /* Responsive grid */\n gap 16px\n\n.primitive-button\n background-color #09090B\n color white\n padding 8px\n border-radius 8px\n cursor pointer\n transition background-color 0.2s ease, transform 0.1s ease\n text-align center\n aspect-ratio 1\n border none\n display flex\n flex-direction column\n gap 8px\n justify-content center\n align-items center\n\n svg\n width 48px\n height 48px\n margin 4px auto\n color red\n opacity .4\n\n.primitive-button:hover\n border 1px solid #00FF99\n\n svg\n opacity 1\n\n\n.primitive-button:active\n border 1px solid #00FF99\n\n svg\n opacity 1\n\n.modal-close-button\n background-color #777 /* Different color for cancel */\n color #eee\n border 1px solid #999\n padding 8px 15px\n border-radius 4px\n cursor pointer\n transition background-color 0.2s ease\n align-self flex-end /* Position cancel button to the right */\n\n.modal-close-button:hover\n background-color #888\n'
@@ -95007,7 +95091,7 @@ object-assign
95007
95091
  /***/ (module) => {
95008
95092
  'use strict';
95009
95093
  module.exports = /*#__PURE__*/ JSON.parse(
95010
- '{"name":"senangwebs-aframe-editor","version":"1.6.9","description":"A fork of A-Frame Inspector designed to be use as visual editor used in SenangWebs.","main":"dist/aframe-inspector.min.js","scripts":{"build":"webpack --progress","deploy":"npm run ghpages","dist":"npm run dist:max && npm run dist:min","dist:max":"npm run build","dist:min":"cross-env MINIFY=true npm run build","ghpages":"npm run preghpages && ghpages -p gh-pages","lint":"npm run lintfile src/","lint:css":"stylelint src/css/main.css","lintfile":"eslint","preghpages":"npm run dist && shx rm -rf gh-pages && shx mkdir gh-pages && shx cp -r assets dist examples index.html gh-pages && shx sed -i http://localhost:3333 .. gh-pages/examples/index.html","prepare":"husky install","prepublish":"npm run dist","prettier":"prettier --write \'src/**/*.js\'","start":"webpack serve --progress -d eval-source-map","test":"jest --watch","test:ci":"jest"},"repository":"aframevr/aframe-inspector","license":"MIT","dependencies":{"@fortawesome/free-solid-svg-icons":"^6.5.1","@fortawesome/free-brands-svg-icons":"^6.5.1","clipboard-copy":"^4.0.1","clsx":"^2.1.0","lodash.debounce":"^4.0.8","prop-types":"^15.8.1","react":"^18.2.0","react-dom":"^18.2.0","react-select":"^5.8.0","three":"0.168.0"},"devDependencies":{"@babel/core":"^7.24.0","@babel/eslint-parser":"^7.23.10","@babel/preset-env":"^7.24.0","@babel/preset-react":"^7.23.3","autoprefixer":"^10.4.17","babel-jest":"^29.7.0","babel-loader":"^9.1.3","cross-env":"^7.0.3","css-loader":"^6.10.0","eslint":"^8.57.0","eslint-config-standard":"^17.1.0","eslint-plugin-react":"^7.33.2","ghpages":"0.0.10","husky":"^8.0.1","jest":"^29.7.0","lint-staged":"^13.0.3","postcss-loader":"^8.1.1","prettier":"^3.2.5","react-test-renderer":"^18.2.0","shx":"^0.3.4","style-loader":"^3.3.4","stylelint":"^16.2.1","stylelint-config-standard":"^36.0.0","stylelint-order":"^6.0.4","stylus":"^0.62.0","stylus-loader":"^8.1.0","webpack":"^5.91.0","webpack-cli":"^5.1.4","webpack-dev-server":"^5.0.4"},"keywords":["3d","aframe","editor","inspector","three.js","tool","unity","vr","virtualreality","webvr","wysiwyg"],"lint-staged":{"*.js":"prettier --write"}}'
95094
+ '{"name":"senangwebs-aframe-editor","version":"1.6.14","description":"A fork of A-Frame Inspector designed to be use as visual editor used in SenangWebs.","main":"dist/aframe-inspector.min.js","scripts":{"build":"webpack --progress","deploy":"npm run ghpages","dist":"npm run dist:max && npm run dist:min","dist:max":"npm run build","dist:min":"cross-env MINIFY=true npm run build","ghpages":"npm run preghpages && ghpages -p gh-pages","lint":"npm run lintfile src/","lint:css":"stylelint src/css/main.css","lintfile":"eslint","preghpages":"npm run dist && shx rm -rf gh-pages && shx mkdir gh-pages && shx cp -r assets dist examples index.html gh-pages && shx sed -i http://localhost:3333 .. gh-pages/examples/index.html","prepare":"husky install","prepublish":"npm run dist","prettier":"prettier --write \'src/**/*.js\'","start":"webpack serve --progress -d eval-source-map","test":"jest --watch","test:ci":"jest"},"repository":"aframevr/aframe-inspector","license":"MIT","dependencies":{"@fortawesome/free-solid-svg-icons":"^6.5.1","@fortawesome/free-brands-svg-icons":"^6.5.1","clipboard-copy":"^4.0.1","clsx":"^2.1.0","lodash.debounce":"^4.0.8","prop-types":"^15.8.1","react":"^18.2.0","react-dom":"^18.2.0","react-select":"^5.8.0","three":"0.168.0"},"devDependencies":{"@babel/core":"^7.24.0","@babel/eslint-parser":"^7.23.10","@babel/preset-env":"^7.24.0","@babel/preset-react":"^7.23.3","autoprefixer":"^10.4.17","babel-jest":"^29.7.0","babel-loader":"^9.1.3","cross-env":"^7.0.3","css-loader":"^6.10.0","eslint":"^8.57.0","eslint-config-standard":"^17.1.0","eslint-plugin-react":"^7.33.2","ghpages":"0.0.10","husky":"^8.0.1","jest":"^29.7.0","lint-staged":"^13.0.3","postcss-loader":"^8.1.1","prettier":"^3.2.5","react-test-renderer":"^18.2.0","shx":"^0.3.4","style-loader":"^3.3.4","stylelint":"^16.2.1","stylelint-config-standard":"^36.0.0","stylelint-order":"^6.0.4","stylus":"^0.62.0","stylus-loader":"^8.1.0","webpack":"^5.91.0","webpack-cli":"^5.1.4","webpack-dev-server":"^5.0.4"},"keywords":["3d","aframe","editor","inspector","three.js","tool","unity","vr","virtualreality","webvr","wysiwyg"],"lint-staged":{"*.js":"prettier --write"}}'
95011
95095
  );
95012
95096
 
95013
95097
  /***/
@@ -95846,6 +95930,283 @@ object-assign
95846
95930
  /***/
95847
95931
  },
95848
95932
 
95933
+ /***/ './src/components/ErrorBoundary.js':
95934
+ /*!*****************************************!*\
95935
+ !*** ./src/components/ErrorBoundary.js ***!
95936
+ \*****************************************/
95937
+ /***/ (
95938
+ __unused_webpack_module,
95939
+ __webpack_exports__,
95940
+ __webpack_require__
95941
+ ) => {
95942
+ 'use strict';
95943
+ __webpack_require__.r(__webpack_exports__);
95944
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
95945
+ /* harmony export */ default: () => /* binding */ ErrorBoundary
95946
+ /* harmony export */
95947
+ });
95948
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
95949
+ __webpack_require__(/*! react */ './node_modules/react/index.js');
95950
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
95951
+ /*#__PURE__*/ __webpack_require__.n(
95952
+ react__WEBPACK_IMPORTED_MODULE_0__
95953
+ );
95954
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ =
95955
+ __webpack_require__(
95956
+ /*! prop-types */ './node_modules/prop-types/index.js'
95957
+ );
95958
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default =
95959
+ /*#__PURE__*/ __webpack_require__.n(
95960
+ prop_types__WEBPACK_IMPORTED_MODULE_2__
95961
+ );
95962
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
95963
+ __webpack_require__(
95964
+ /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
95965
+ );
95966
+ function _typeof(o) {
95967
+ '@babel/helpers - typeof';
95968
+ return (
95969
+ (_typeof =
95970
+ 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator
95971
+ ? function (o) {
95972
+ return typeof o;
95973
+ }
95974
+ : function (o) {
95975
+ return o &&
95976
+ 'function' == typeof Symbol &&
95977
+ o.constructor === Symbol &&
95978
+ o !== Symbol.prototype
95979
+ ? 'symbol'
95980
+ : typeof o;
95981
+ }),
95982
+ _typeof(o)
95983
+ );
95984
+ }
95985
+ function _classCallCheck(a, n) {
95986
+ if (!(a instanceof n))
95987
+ throw new TypeError('Cannot call a class as a function');
95988
+ }
95989
+ function _defineProperties(e, r) {
95990
+ for (var t = 0; t < r.length; t++) {
95991
+ var o = r[t];
95992
+ (o.enumerable = o.enumerable || !1),
95993
+ (o.configurable = !0),
95994
+ 'value' in o && (o.writable = !0),
95995
+ Object.defineProperty(e, _toPropertyKey(o.key), o);
95996
+ }
95997
+ }
95998
+ function _createClass(e, r, t) {
95999
+ return (
96000
+ r && _defineProperties(e.prototype, r),
96001
+ t && _defineProperties(e, t),
96002
+ Object.defineProperty(e, 'prototype', { writable: !1 }),
96003
+ e
96004
+ );
96005
+ }
96006
+ function _callSuper(t, o, e) {
96007
+ return (
96008
+ (o = _getPrototypeOf(o)),
96009
+ _possibleConstructorReturn(
96010
+ t,
96011
+ _isNativeReflectConstruct()
96012
+ ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor)
96013
+ : o.apply(t, e)
96014
+ )
96015
+ );
96016
+ }
96017
+ function _possibleConstructorReturn(t, e) {
96018
+ if (e && ('object' == _typeof(e) || 'function' == typeof e)) return e;
96019
+ if (void 0 !== e)
96020
+ throw new TypeError(
96021
+ 'Derived constructors may only return object or undefined'
96022
+ );
96023
+ return _assertThisInitialized(t);
96024
+ }
96025
+ function _assertThisInitialized(e) {
96026
+ if (void 0 === e)
96027
+ throw new ReferenceError(
96028
+ "this hasn't been initialised - super() hasn't been called"
96029
+ );
96030
+ return e;
96031
+ }
96032
+ function _isNativeReflectConstruct() {
96033
+ try {
96034
+ var t = !Boolean.prototype.valueOf.call(
96035
+ Reflect.construct(Boolean, [], function () {})
96036
+ );
96037
+ } catch (t) {}
96038
+ return (_isNativeReflectConstruct =
96039
+ function _isNativeReflectConstruct() {
96040
+ return !!t;
96041
+ })();
96042
+ }
96043
+ function _getPrototypeOf(t) {
96044
+ return (
96045
+ (_getPrototypeOf = Object.setPrototypeOf
96046
+ ? Object.getPrototypeOf.bind()
96047
+ : function (t) {
96048
+ return t.__proto__ || Object.getPrototypeOf(t);
96049
+ }),
96050
+ _getPrototypeOf(t)
96051
+ );
96052
+ }
96053
+ function _inherits(t, e) {
96054
+ if ('function' != typeof e && null !== e)
96055
+ throw new TypeError(
96056
+ 'Super expression must either be null or a function'
96057
+ );
96058
+ (t.prototype = Object.create(e && e.prototype, {
96059
+ constructor: { value: t, writable: !0, configurable: !0 }
96060
+ })),
96061
+ Object.defineProperty(t, 'prototype', { writable: !1 }),
96062
+ e && _setPrototypeOf(t, e);
96063
+ }
96064
+ function _setPrototypeOf(t, e) {
96065
+ return (
96066
+ (_setPrototypeOf = Object.setPrototypeOf
96067
+ ? Object.setPrototypeOf.bind()
96068
+ : function (t, e) {
96069
+ return (t.__proto__ = e), t;
96070
+ }),
96071
+ _setPrototypeOf(t, e)
96072
+ );
96073
+ }
96074
+ function _defineProperty(e, r, t) {
96075
+ return (
96076
+ (r = _toPropertyKey(r)) in e
96077
+ ? Object.defineProperty(e, r, {
96078
+ value: t,
96079
+ enumerable: !0,
96080
+ configurable: !0,
96081
+ writable: !0
96082
+ })
96083
+ : (e[r] = t),
96084
+ e
96085
+ );
96086
+ }
96087
+ function _toPropertyKey(t) {
96088
+ var i = _toPrimitive(t, 'string');
96089
+ return 'symbol' == _typeof(i) ? i : i + '';
96090
+ }
96091
+ function _toPrimitive(t, r) {
96092
+ if ('object' != _typeof(t) || !t) return t;
96093
+ var e = t[Symbol.toPrimitive];
96094
+ if (void 0 !== e) {
96095
+ var i = e.call(t, r || 'default');
96096
+ if ('object' != _typeof(i)) return i;
96097
+ throw new TypeError('@@toPrimitive must return a primitive value.');
96098
+ }
96099
+ return ('string' === r ? String : Number)(t);
96100
+ }
96101
+
96102
+ var ErrorBoundary = /*#__PURE__*/ (function (_React$Component) {
96103
+ function ErrorBoundary(props) {
96104
+ var _this;
96105
+ _classCallCheck(this, ErrorBoundary);
96106
+ _this = _callSuper(this, ErrorBoundary, [props]);
96107
+ _defineProperty(_this, 'handleRetry', function () {
96108
+ _this.setState({
96109
+ hasError: false,
96110
+ error: null
96111
+ });
96112
+ });
96113
+ _this.state = {
96114
+ hasError: false,
96115
+ error: null
96116
+ };
96117
+ return _this;
96118
+ }
96119
+ _inherits(ErrorBoundary, _React$Component);
96120
+ return _createClass(
96121
+ ErrorBoundary,
96122
+ [
96123
+ {
96124
+ key: 'componentDidCatch',
96125
+ value: function componentDidCatch(error, errorInfo) {
96126
+ console.error(
96127
+ '[A-Frame Inspector] Error caught by boundary:',
96128
+ error
96129
+ );
96130
+ console.error('Component stack:', errorInfo.componentStack);
96131
+ }
96132
+ },
96133
+ {
96134
+ key: 'render',
96135
+ value: function render() {
96136
+ if (this.state.hasError) {
96137
+ var _this$state$error;
96138
+ return /*#__PURE__*/ (0,
96139
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('div', {
96140
+ className: 'error-boundary',
96141
+ children: /*#__PURE__*/ (0,
96142
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
96143
+ 'div',
96144
+ {
96145
+ className: 'error-content',
96146
+ children: [
96147
+ /*#__PURE__*/ (0,
96148
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(
96149
+ 'h2',
96150
+ {
96151
+ children: 'Something went wrong'
96152
+ }
96153
+ ),
96154
+ /*#__PURE__*/ (0,
96155
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(
96156
+ 'p',
96157
+ {
96158
+ children: 'The inspector encountered an error.'
96159
+ }
96160
+ ),
96161
+ /*#__PURE__*/ (0,
96162
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(
96163
+ 'pre',
96164
+ {
96165
+ children:
96166
+ (_this$state$error = this.state.error) ===
96167
+ null || _this$state$error === void 0
96168
+ ? void 0
96169
+ : _this$state$error.message
96170
+ }
96171
+ ),
96172
+ /*#__PURE__*/ (0,
96173
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(
96174
+ 'button',
96175
+ {
96176
+ onClick: this.handleRetry,
96177
+ children: 'Try Again'
96178
+ }
96179
+ )
96180
+ ]
96181
+ }
96182
+ )
96183
+ });
96184
+ }
96185
+ return this.props.children;
96186
+ }
96187
+ }
96188
+ ],
96189
+ [
96190
+ {
96191
+ key: 'getDerivedStateFromError',
96192
+ value: function getDerivedStateFromError(error) {
96193
+ return {
96194
+ hasError: true,
96195
+ error: error
96196
+ };
96197
+ }
96198
+ }
96199
+ ]
96200
+ );
96201
+ })(react__WEBPACK_IMPORTED_MODULE_0___default().Component);
96202
+ _defineProperty(ErrorBoundary, 'propTypes', {
96203
+ children:
96204
+ prop_types__WEBPACK_IMPORTED_MODULE_2___default().node.isRequired
96205
+ });
96206
+
96207
+ /***/
96208
+ },
96209
+
95849
96210
  /***/ './src/components/Main.js':
95850
96211
  /*!********************************!*\
95851
96212
  !*** ./src/components/Main.js ***!
@@ -96091,6 +96452,46 @@ object-assign
96091
96452
  var _this;
96092
96453
  _classCallCheck(this, Main);
96093
96454
  _this = _callSuper(this, Main, [props]);
96455
+ _defineProperty(
96456
+ _this,
96457
+ 'handleOpenTexturesModal',
96458
+ function (selectedTexture, textureOnClose) {
96459
+ _this.setState({
96460
+ selectedTexture: selectedTexture,
96461
+ isModalTexturesOpen: true,
96462
+ textureOnClose: textureOnClose
96463
+ });
96464
+ }
96465
+ );
96466
+ _defineProperty(_this, 'handleEntitySelect', function (entity) {
96467
+ // Set the selected entity and ensure the attributes sidebar is visible
96468
+ _this.setState({
96469
+ entity: entity,
96470
+ visible: _objectSpread(
96471
+ _objectSpread({}, _this.state.visible),
96472
+ {},
96473
+ {
96474
+ attributes: true
96475
+ }
96476
+ )
96477
+ });
96478
+ });
96479
+ _defineProperty(_this, 'handleInspectorToggle', function (enabled) {
96480
+ _this.setState({
96481
+ inspectorEnabled: enabled
96482
+ });
96483
+ });
96484
+ _defineProperty(_this, 'handleSceneReload', function (newSceneEl) {
96485
+ _this.setState({
96486
+ entity: null,
96487
+ sceneEl: newSceneEl
96488
+ });
96489
+ });
96490
+ _defineProperty(_this, 'handleOpenHelpModal', function () {
96491
+ _this.setState({
96492
+ isHelpOpen: true
96493
+ });
96494
+ });
96094
96495
  _defineProperty(_this, 'handleClose', function () {
96095
96496
  _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].emit(
96096
96497
  'togglesidebar',
@@ -96185,48 +96586,50 @@ object-assign
96185
96586
  {
96186
96587
  key: 'componentDidMount',
96187
96588
  value: function componentDidMount() {
96188
- var _this2 = this;
96189
96589
  _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
96190
96590
  'opentexturesmodal',
96191
- function (selectedTexture, textureOnClose) {
96192
- this.setState({
96193
- selectedTexture: selectedTexture,
96194
- isModalTexturesOpen: true,
96195
- textureOnClose: textureOnClose
96196
- });
96197
- }.bind(this)
96591
+ this.handleOpenTexturesModal
96198
96592
  );
96199
96593
  _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
96200
96594
  'entityselect',
96201
- function (entity) {
96202
- // Set the selected entity and ensure the attributes sidebar is visible
96203
- _this2.setState({
96204
- entity: entity,
96205
- visible: _objectSpread(
96206
- _objectSpread({}, _this2.state.visible),
96207
- {},
96208
- {
96209
- attributes: true
96210
- }
96211
- )
96212
- });
96213
- }
96595
+ this.handleEntitySelect
96214
96596
  );
96215
96597
  _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
96216
96598
  'inspectortoggle',
96217
- function (enabled) {
96218
- _this2.setState({
96219
- inspectorEnabled: enabled
96220
- });
96221
- }
96599
+ this.handleInspectorToggle
96222
96600
  );
96223
96601
  _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
96224
96602
  'openhelpmodal',
96225
- function () {
96226
- _this2.setState({
96227
- isHelpOpen: true
96228
- });
96229
- }
96603
+ this.handleOpenHelpModal
96604
+ );
96605
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
96606
+ 'scenereload',
96607
+ this.handleSceneReload
96608
+ );
96609
+ }
96610
+ },
96611
+ {
96612
+ key: 'componentWillUnmount',
96613
+ value: function componentWillUnmount() {
96614
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
96615
+ 'opentexturesmodal',
96616
+ this.handleOpenTexturesModal
96617
+ );
96618
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
96619
+ 'entityselect',
96620
+ this.handleEntitySelect
96621
+ );
96622
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
96623
+ 'inspectortoggle',
96624
+ this.handleInspectorToggle
96625
+ );
96626
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
96627
+ 'openhelpmodal',
96628
+ this.handleOpenHelpModal
96629
+ );
96630
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
96631
+ 'scenereload',
96632
+ this.handleSceneReload
96230
96633
  );
96231
96634
  }
96232
96635
  },
@@ -96268,8 +96671,6 @@ object-assign
96268
96671
  key: 'render',
96269
96672
  value: function render() {
96270
96673
  var scene = this.state.sceneEl;
96271
- // Simplified toggle button text logic
96272
- var buttonText = this.state.inspectorEnabled ? 'Show' : 'Edit';
96273
96674
  return /*#__PURE__*/ (0,
96274
96675
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)('div', {
96275
96676
  children: [
@@ -96884,65 +97285,45 @@ object-assign
96884
97285
  /*#__PURE__*/ __webpack_require__.n(
96885
97286
  react__WEBPACK_IMPORTED_MODULE_0__
96886
97287
  );
96887
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15__ =
97288
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ =
96888
97289
  __webpack_require__(
96889
97290
  /*! prop-types */ './node_modules/prop-types/index.js'
96890
97291
  );
96891
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15___default =
97292
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default =
96892
97293
  /*#__PURE__*/ __webpack_require__.n(
96893
- prop_types__WEBPACK_IMPORTED_MODULE_15__
97294
+ prop_types__WEBPACK_IMPORTED_MODULE_11__
96894
97295
  );
96895
- /* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_14__ =
96896
- __webpack_require__(
96897
- /*! @fortawesome/free-solid-svg-icons */ './node_modules/@fortawesome/free-solid-svg-icons/index.mjs'
96898
- );
96899
- /* harmony import */ var _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__ =
96900
- __webpack_require__(
96901
- /*! ../AwesomeIcon */ './src/components/AwesomeIcon.js'
96902
- );
96903
- /* harmony import */ var _widgets__WEBPACK_IMPORTED_MODULE_2__ =
97296
+ /* harmony import */ var _widgets__WEBPACK_IMPORTED_MODULE_1__ =
96904
97297
  __webpack_require__(
96905
97298
  /*! ../widgets */ './src/components/widgets/index.js'
96906
97299
  );
96907
- /* harmony import */ var _DefaultComponents__WEBPACK_IMPORTED_MODULE_3__ =
97300
+ /* harmony import */ var _DefaultComponents__WEBPACK_IMPORTED_MODULE_2__ =
96908
97301
  __webpack_require__(
96909
97302
  /*! ./DefaultComponents */ './src/components/components/DefaultComponents.js'
96910
97303
  );
96911
- /* harmony import */ var _PropertyRow__WEBPACK_IMPORTED_MODULE_4__ =
97304
+ /* harmony import */ var _PropertyRow__WEBPACK_IMPORTED_MODULE_3__ =
96912
97305
  __webpack_require__(
96913
97306
  /*! ./PropertyRow */ './src/components/components/PropertyRow.js'
96914
97307
  );
96915
- /* harmony import */ var _Collapsible__WEBPACK_IMPORTED_MODULE_5__ =
97308
+ /* harmony import */ var _Collapsible__WEBPACK_IMPORTED_MODULE_4__ =
96916
97309
  __webpack_require__(
96917
97310
  /*! ../Collapsible */ './src/components/Collapsible.js'
96918
97311
  );
96919
- /* harmony import */ var _Mixins__WEBPACK_IMPORTED_MODULE_6__ =
97312
+ /* harmony import */ var _Mixins__WEBPACK_IMPORTED_MODULE_5__ =
96920
97313
  __webpack_require__(
96921
97314
  /*! ./Mixins */ './src/components/components/Mixins.js'
96922
97315
  );
96923
- /* harmony import */ var _lib_entity__WEBPACK_IMPORTED_MODULE_7__ =
97316
+ /* harmony import */ var _lib_entity__WEBPACK_IMPORTED_MODULE_6__ =
96924
97317
  __webpack_require__(/*! ../../lib/entity */ './src/lib/entity.js');
96925
- /* harmony import */ var _EntityRepresentation__WEBPACK_IMPORTED_MODULE_8__ =
97318
+ /* harmony import */ var _EntityRepresentation__WEBPACK_IMPORTED_MODULE_7__ =
96926
97319
  __webpack_require__(
96927
97320
  /*! ../EntityRepresentation */ './src/components/EntityRepresentation.js'
96928
97321
  );
96929
- /* harmony import */ var _lib_Events__WEBPACK_IMPORTED_MODULE_9__ =
97322
+ /* harmony import */ var _lib_Events__WEBPACK_IMPORTED_MODULE_8__ =
96930
97323
  __webpack_require__(/*! ../../lib/Events */ './src/lib/Events.js');
96931
- /* harmony import */ var clipboard_copy__WEBPACK_IMPORTED_MODULE_10__ =
96932
- __webpack_require__(
96933
- /*! clipboard-copy */ './node_modules/clipboard-copy/index.js'
96934
- );
96935
- /* harmony import */ var clipboard_copy__WEBPACK_IMPORTED_MODULE_10___default =
96936
- /*#__PURE__*/ __webpack_require__.n(
96937
- clipboard_copy__WEBPACK_IMPORTED_MODULE_10__
96938
- );
96939
- /* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_11__ =
97324
+ /* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_9__ =
96940
97325
  __webpack_require__(/*! ../../lib/utils */ './src/lib/utils.js');
96941
- /* harmony import */ var _assets_gltf_svg__WEBPACK_IMPORTED_MODULE_12__ =
96942
- __webpack_require__(
96943
- /*! ../../../assets/gltf.svg */ './assets/gltf.svg'
96944
- );
96945
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ =
97326
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ =
96946
97327
  __webpack_require__(
96947
97328
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
96948
97329
  );
@@ -97088,7 +97469,7 @@ object-assign
97088
97469
  var entity = AFRAME.INSPECTOR.selectedEntity;
97089
97470
  if (entity.id !== value) {
97090
97471
  entity.id = value;
97091
- _lib_Events__WEBPACK_IMPORTED_MODULE_9__['default'].emit(
97472
+ _lib_Events__WEBPACK_IMPORTED_MODULE_8__['default'].emit(
97092
97473
  'entityidchange',
97093
97474
  entity
97094
97475
  );
@@ -97105,14 +97486,14 @@ object-assign
97105
97486
  key: 'componentDidMount',
97106
97487
  value: function componentDidMount() {
97107
97488
  var _this = this;
97108
- _lib_Events__WEBPACK_IMPORTED_MODULE_9__['default'].on(
97489
+ _lib_Events__WEBPACK_IMPORTED_MODULE_8__['default'].on(
97109
97490
  'entityupdate',
97110
97491
  function (detail) {
97111
97492
  if (detail.entity !== _this.props.entity) {
97112
97493
  return;
97113
97494
  }
97114
97495
  if (
97115
- _DefaultComponents__WEBPACK_IMPORTED_MODULE_3__[
97496
+ _DefaultComponents__WEBPACK_IMPORTED_MODULE_2__[
97116
97497
  'default'
97117
97498
  ].indexOf(detail.component) !== -1 ||
97118
97499
  detail.component === 'mixin'
@@ -97139,11 +97520,11 @@ object-assign
97139
97520
  };
97140
97521
  }
97141
97522
  return /*#__PURE__*/ (0,
97142
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97143
- _PropertyRow__WEBPACK_IMPORTED_MODULE_4__['default'],
97523
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97524
+ _PropertyRow__WEBPACK_IMPORTED_MODULE_3__['default'],
97144
97525
  {
97145
97526
  onChange:
97146
- _lib_entity__WEBPACK_IMPORTED_MODULE_7__.updateEntity,
97527
+ _lib_entity__WEBPACK_IMPORTED_MODULE_6__.updateEntity,
97147
97528
  name: componentName,
97148
97529
  showHelp: true,
97149
97530
  schema: schema,
@@ -97168,7 +97549,7 @@ object-assign
97168
97549
  var blob = new Blob([buffer], {
97169
97550
  type: 'application/octet-stream'
97170
97551
  });
97171
- (0, _lib_utils__WEBPACK_IMPORTED_MODULE_11__.saveBlob)(
97552
+ (0, _lib_utils__WEBPACK_IMPORTED_MODULE_9__.saveBlob)(
97172
97553
  blob,
97173
97554
  (entity.id || 'entity') + '.glb'
97174
97555
  );
@@ -97185,47 +97566,29 @@ object-assign
97185
97566
  {
97186
97567
  key: 'render',
97187
97568
  value: function render() {
97188
- var _this2 = this;
97189
97569
  var entity = this.props.entity;
97190
97570
  if (!entity) {
97191
97571
  return /*#__PURE__*/ (0,
97192
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97572
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97193
97573
  'div',
97194
97574
  {}
97195
97575
  );
97196
97576
  }
97197
- var entityButtons = /*#__PURE__*/ (0,
97198
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)('div', {
97199
- children: /*#__PURE__*/ (0,
97200
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)('a', {
97201
- title: 'Close components',
97202
- onClick: function onClick(event) {
97203
- _this2.handleClose();
97204
- },
97205
- children: /*#__PURE__*/ (0,
97206
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97207
- _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__.AwesomeIcon,
97208
- {
97209
- icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_14__.faTimes
97210
- }
97211
- )
97212
- })
97213
- });
97214
97577
  return /*#__PURE__*/ (0,
97215
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(
97216
- _Collapsible__WEBPACK_IMPORTED_MODULE_5__['default'],
97578
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(
97579
+ _Collapsible__WEBPACK_IMPORTED_MODULE_4__['default'],
97217
97580
  {
97218
97581
  id: 'componentEntityHeader',
97219
97582
  className: 'commonComponents',
97220
97583
  children: [
97221
97584
  /*#__PURE__*/ (0,
97222
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97585
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97223
97586
  'div',
97224
97587
  {
97225
97588
  className: 'collapsible-header sidebar-header',
97226
97589
  children: /*#__PURE__*/ (0,
97227
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97228
- _EntityRepresentation__WEBPACK_IMPORTED_MODULE_8__[
97590
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97591
+ _EntityRepresentation__WEBPACK_IMPORTED_MODULE_7__[
97229
97592
  'default'
97230
97593
  ],
97231
97594
  {
@@ -97235,19 +97598,19 @@ object-assign
97235
97598
  }
97236
97599
  ),
97237
97600
  /*#__PURE__*/ (0,
97238
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(
97601
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(
97239
97602
  'div',
97240
97603
  {
97241
97604
  className: 'collapsible-content',
97242
97605
  children: [
97243
97606
  /*#__PURE__*/ (0,
97244
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(
97607
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(
97245
97608
  'div',
97246
97609
  {
97247
97610
  className: 'propertyRow',
97248
97611
  children: [
97249
97612
  /*#__PURE__*/ (0,
97250
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97613
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97251
97614
  'label',
97252
97615
  {
97253
97616
  htmlFor: 'id',
@@ -97256,8 +97619,8 @@ object-assign
97256
97619
  }
97257
97620
  ),
97258
97621
  /*#__PURE__*/ (0,
97259
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97260
- _widgets__WEBPACK_IMPORTED_MODULE_2__.InputWidget,
97622
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97623
+ _widgets__WEBPACK_IMPORTED_MODULE_1__.InputWidget,
97261
97624
  {
97262
97625
  onChange: changeId,
97263
97626
  entity: entity,
@@ -97269,13 +97632,13 @@ object-assign
97269
97632
  }
97270
97633
  ),
97271
97634
  /*#__PURE__*/ (0,
97272
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(
97635
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(
97273
97636
  'div',
97274
97637
  {
97275
97638
  className: 'propertyRow',
97276
97639
  children: [
97277
97640
  /*#__PURE__*/ (0,
97278
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97641
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97279
97642
  'label',
97280
97643
  {
97281
97644
  className: 'text',
@@ -97283,7 +97646,7 @@ object-assign
97283
97646
  }
97284
97647
  ),
97285
97648
  /*#__PURE__*/ (0,
97286
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97649
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97287
97650
  'span',
97288
97651
  {
97289
97652
  children: entity.getAttribute('class')
@@ -97294,8 +97657,8 @@ object-assign
97294
97657
  ),
97295
97658
  this.renderCommonAttributes(),
97296
97659
  /*#__PURE__*/ (0,
97297
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(
97298
- _Mixins__WEBPACK_IMPORTED_MODULE_6__['default'],
97660
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
97661
+ _Mixins__WEBPACK_IMPORTED_MODULE_5__['default'],
97299
97662
  {
97300
97663
  entity: entity
97301
97664
  }
@@ -97311,7 +97674,7 @@ object-assign
97311
97674
  ]);
97312
97675
  })(react__WEBPACK_IMPORTED_MODULE_0___default().Component);
97313
97676
  _defineProperty(CommonComponents, 'propTypes', {
97314
- entity: prop_types__WEBPACK_IMPORTED_MODULE_15___default().object
97677
+ entity: prop_types__WEBPACK_IMPORTED_MODULE_11___default().object
97315
97678
  });
97316
97679
 
97317
97680
  /***/
@@ -97338,15 +97701,15 @@ object-assign
97338
97701
  /*#__PURE__*/ __webpack_require__.n(
97339
97702
  react__WEBPACK_IMPORTED_MODULE_0__
97340
97703
  );
97341
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ =
97704
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ =
97342
97705
  __webpack_require__(
97343
97706
  /*! prop-types */ './node_modules/prop-types/index.js'
97344
97707
  );
97345
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default =
97708
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default =
97346
97709
  /*#__PURE__*/ __webpack_require__.n(
97347
- prop_types__WEBPACK_IMPORTED_MODULE_9__
97710
+ prop_types__WEBPACK_IMPORTED_MODULE_7__
97348
97711
  );
97349
- /* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_8__ =
97712
+ /* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__ =
97350
97713
  __webpack_require__(
97351
97714
  /*! @fortawesome/free-solid-svg-icons */ './node_modules/@fortawesome/free-solid-svg-icons/index.mjs'
97352
97715
  );
@@ -97362,19 +97725,9 @@ object-assign
97362
97725
  __webpack_require__(
97363
97726
  /*! ../Collapsible */ './src/components/Collapsible.js'
97364
97727
  );
97365
- /* harmony import */ var clipboard_copy__WEBPACK_IMPORTED_MODULE_4__ =
97366
- __webpack_require__(
97367
- /*! clipboard-copy */ './node_modules/clipboard-copy/index.js'
97368
- );
97369
- /* harmony import */ var clipboard_copy__WEBPACK_IMPORTED_MODULE_4___default =
97370
- /*#__PURE__*/ __webpack_require__.n(
97371
- clipboard_copy__WEBPACK_IMPORTED_MODULE_4__
97372
- );
97373
- /* harmony import */ var _lib_entity__WEBPACK_IMPORTED_MODULE_5__ =
97374
- __webpack_require__(/*! ../../lib/entity */ './src/lib/entity.js');
97375
- /* harmony import */ var _lib_Events__WEBPACK_IMPORTED_MODULE_6__ =
97728
+ /* harmony import */ var _lib_Events__WEBPACK_IMPORTED_MODULE_4__ =
97376
97729
  __webpack_require__(/*! ../../lib/Events */ './src/lib/Events.js');
97377
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ =
97730
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ =
97378
97731
  __webpack_require__(
97379
97732
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
97380
97733
  );
@@ -97535,7 +97888,7 @@ object-assign
97535
97888
  )
97536
97889
  ) {
97537
97890
  _this.props.entity.removeAttribute(componentName);
97538
- _lib_Events__WEBPACK_IMPORTED_MODULE_6__['default'].emit(
97891
+ _lib_Events__WEBPACK_IMPORTED_MODULE_4__['default'].emit(
97539
97892
  'componentremove',
97540
97893
  {
97541
97894
  entity: _this.props.entity,
@@ -97554,7 +97907,7 @@ object-assign
97554
97907
  var schema =
97555
97908
  AFRAME.components[componentName.split('__')[0]].schema;
97556
97909
  return /*#__PURE__*/ (0,
97557
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
97910
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97558
97911
  _PropertyRow__WEBPACK_IMPORTED_MODULE_2__['default'],
97559
97912
  {
97560
97913
  name: componentName,
@@ -97571,7 +97924,7 @@ object-assign
97571
97924
  .sort()
97572
97925
  .map(function (propertyName) {
97573
97926
  return /*#__PURE__*/ (0,
97574
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
97927
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97575
97928
  _PropertyRow__WEBPACK_IMPORTED_MODULE_2__['default'],
97576
97929
  {
97577
97930
  name: propertyName,
@@ -97599,7 +97952,7 @@ object-assign
97599
97952
  key: 'componentDidMount',
97600
97953
  value: function componentDidMount() {
97601
97954
  var _this2 = this;
97602
- _lib_Events__WEBPACK_IMPORTED_MODULE_6__['default'].on(
97955
+ _lib_Events__WEBPACK_IMPORTED_MODULE_4__['default'].on(
97603
97956
  'entityupdate',
97604
97957
  function (detail) {
97605
97958
  if (detail.entity !== _this2.props.entity) {
@@ -97625,25 +97978,25 @@ object-assign
97625
97978
  );
97626
97979
  }
97627
97980
  return /*#__PURE__*/ (0,
97628
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(
97981
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
97629
97982
  _Collapsible__WEBPACK_IMPORTED_MODULE_3__['default'],
97630
97983
  {
97631
97984
  collapsed: this.props.isCollapsed,
97632
97985
  children: [
97633
97986
  /*#__PURE__*/ (0,
97634
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(
97987
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
97635
97988
  'div',
97636
97989
  {
97637
97990
  className: 'componentHeader collapsible-header',
97638
97991
  children: [
97639
97992
  /*#__PURE__*/ (0,
97640
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
97993
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97641
97994
  'span',
97642
97995
  {
97643
97996
  className: 'componentTitle',
97644
97997
  title: subComponentName || componentName,
97645
97998
  children: /*#__PURE__*/ (0,
97646
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
97999
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97647
98000
  'span',
97648
98001
  {
97649
98002
  children:
@@ -97653,22 +98006,22 @@ object-assign
97653
98006
  }
97654
98007
  ),
97655
98008
  /*#__PURE__*/ (0,
97656
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
98009
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97657
98010
  'div',
97658
98011
  {
97659
98012
  className: 'componentHeaderActions',
97660
98013
  children: /*#__PURE__*/ (0,
97661
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
98014
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97662
98015
  'a',
97663
98016
  {
97664
98017
  title: 'Remove component',
97665
98018
  className: 'button',
97666
98019
  onClick: this.removeComponent,
97667
98020
  children: /*#__PURE__*/ (0,
97668
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
98021
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97669
98022
  _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__.AwesomeIcon,
97670
98023
  {
97671
- icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_8__.faTrashAlt
98024
+ icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__.faTrashAlt
97672
98025
  }
97673
98026
  )
97674
98027
  }
@@ -97679,7 +98032,7 @@ object-assign
97679
98032
  }
97680
98033
  ),
97681
98034
  /*#__PURE__*/ (0,
97682
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
98035
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
97683
98036
  'div',
97684
98037
  {
97685
98038
  className: 'collapsible-content',
@@ -97713,10 +98066,10 @@ object-assign
97713
98066
  );
97714
98067
  })(react__WEBPACK_IMPORTED_MODULE_0___default().Component);
97715
98068
  _defineProperty(Component, 'propTypes', {
97716
- component: prop_types__WEBPACK_IMPORTED_MODULE_9___default().any,
97717
- entity: prop_types__WEBPACK_IMPORTED_MODULE_9___default().object,
97718
- isCollapsed: prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool,
97719
- name: prop_types__WEBPACK_IMPORTED_MODULE_9___default().string
98069
+ component: prop_types__WEBPACK_IMPORTED_MODULE_7___default().any,
98070
+ entity: prop_types__WEBPACK_IMPORTED_MODULE_7___default().object,
98071
+ isCollapsed: prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool,
98072
+ name: prop_types__WEBPACK_IMPORTED_MODULE_7___default().string
97720
98073
  });
97721
98074
 
97722
98075
  /***/
@@ -98847,29 +99200,21 @@ object-assign
98847
99200
  /*#__PURE__*/ __webpack_require__.n(
98848
99201
  react__WEBPACK_IMPORTED_MODULE_0__
98849
99202
  );
98850
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ =
99203
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ =
98851
99204
  __webpack_require__(
98852
99205
  /*! prop-types */ './node_modules/prop-types/index.js'
98853
99206
  );
98854
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default =
99207
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default =
98855
99208
  /*#__PURE__*/ __webpack_require__.n(
98856
- prop_types__WEBPACK_IMPORTED_MODULE_6__
98857
- );
98858
- /* harmony import */ var _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__ =
98859
- __webpack_require__(
98860
- /*! ../AwesomeIcon */ './src/components/AwesomeIcon.js'
99209
+ prop_types__WEBPACK_IMPORTED_MODULE_4__
98861
99210
  );
98862
- /* harmony import */ var _ComponentsContainer__WEBPACK_IMPORTED_MODULE_2__ =
99211
+ /* harmony import */ var _ComponentsContainer__WEBPACK_IMPORTED_MODULE_1__ =
98863
99212
  __webpack_require__(
98864
99213
  /*! ./ComponentsContainer */ './src/components/components/ComponentsContainer.js'
98865
99214
  );
98866
- /* harmony import */ var _EntityRepresentation__WEBPACK_IMPORTED_MODULE_3__ =
98867
- __webpack_require__(
98868
- /*! ../EntityRepresentation */ './src/components/EntityRepresentation.js'
98869
- );
98870
- /* harmony import */ var _lib_Events__WEBPACK_IMPORTED_MODULE_4__ =
99215
+ /* harmony import */ var _lib_Events__WEBPACK_IMPORTED_MODULE_2__ =
98871
99216
  __webpack_require__(/*! ../../lib/Events */ './src/lib/Events.js');
98872
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ =
99217
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ =
98873
99218
  __webpack_require__(
98874
99219
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
98875
99220
  );
@@ -99009,20 +99354,21 @@ object-assign
99009
99354
  return ('string' === r ? String : Number)(t);
99010
99355
  }
99011
99356
 
99012
- // Assuming AwesomeIcon is in the parent directory
99013
-
99014
99357
  var Sidebar = /*#__PURE__*/ (function (_React$Component) {
99015
99358
  function Sidebar(props) {
99016
99359
  var _this;
99017
99360
  _classCallCheck(this, Sidebar);
99018
99361
  _this = _callSuper(this, Sidebar, [props]);
99362
+ _defineProperty(_this, 'handleComponentChange', function () {
99363
+ _this.forceUpdate();
99364
+ });
99019
99365
  _defineProperty(_this, 'handleToggle', function () {
99020
99366
  _this.setState({
99021
99367
  open: !_this.state.open
99022
99368
  });
99023
99369
  });
99024
99370
  _defineProperty(_this, 'handleClose', function () {
99025
- _lib_Events__WEBPACK_IMPORTED_MODULE_4__['default'].emit(
99371
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].emit(
99026
99372
  'togglesidebar',
99027
99373
  {
99028
99374
  which: 'attributes'
@@ -99039,18 +99385,26 @@ object-assign
99039
99385
  {
99040
99386
  key: 'componentDidMount',
99041
99387
  value: function componentDidMount() {
99042
- var _this2 = this;
99043
- _lib_Events__WEBPACK_IMPORTED_MODULE_4__['default'].on(
99388
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
99044
99389
  'componentremove',
99045
- function (event) {
99046
- _this2.forceUpdate();
99047
- }
99390
+ this.handleComponentChange
99048
99391
  );
99049
- _lib_Events__WEBPACK_IMPORTED_MODULE_4__['default'].on(
99392
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
99050
99393
  'componentadd',
99051
- function (event) {
99052
- _this2.forceUpdate();
99053
- }
99394
+ this.handleComponentChange
99395
+ );
99396
+ }
99397
+ },
99398
+ {
99399
+ key: 'componentWillUnmount',
99400
+ value: function componentWillUnmount() {
99401
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
99402
+ 'componentremove',
99403
+ this.handleComponentChange
99404
+ );
99405
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
99406
+ 'componentadd',
99407
+ this.handleComponentChange
99054
99408
  );
99055
99409
  }
99056
99410
  },
@@ -99061,11 +99415,11 @@ object-assign
99061
99415
  var visible = this.props.visible;
99062
99416
  if (entity && visible) {
99063
99417
  return /*#__PURE__*/ (0,
99064
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)('div', {
99418
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)('div', {
99065
99419
  id: 'sidebar',
99066
99420
  children: /*#__PURE__*/ (0,
99067
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
99068
- _ComponentsContainer__WEBPACK_IMPORTED_MODULE_2__[
99421
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(
99422
+ _ComponentsContainer__WEBPACK_IMPORTED_MODULE_1__[
99069
99423
  'default'
99070
99424
  ],
99071
99425
  {
@@ -99075,7 +99429,7 @@ object-assign
99075
99429
  });
99076
99430
  } else {
99077
99431
  return /*#__PURE__*/ (0,
99078
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
99432
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(
99079
99433
  'div',
99080
99434
  {}
99081
99435
  );
@@ -99085,8 +99439,8 @@ object-assign
99085
99439
  ]);
99086
99440
  })(react__WEBPACK_IMPORTED_MODULE_0___default().Component);
99087
99441
  _defineProperty(Sidebar, 'propTypes', {
99088
- entity: prop_types__WEBPACK_IMPORTED_MODULE_6___default().object,
99089
- visible: prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool
99442
+ entity: prop_types__WEBPACK_IMPORTED_MODULE_4___default().object,
99443
+ visible: prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool
99090
99444
  });
99091
99445
 
99092
99446
  /***/
@@ -99107,13 +99461,7 @@ object-assign
99107
99461
  /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__
99108
99462
  /* harmony export */
99109
99463
  });
99110
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
99111
- __webpack_require__(/*! react */ './node_modules/react/index.js');
99112
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
99113
- /*#__PURE__*/ __webpack_require__.n(
99114
- react__WEBPACK_IMPORTED_MODULE_0__
99115
- );
99116
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
99464
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
99117
99465
  __webpack_require__(
99118
99466
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
99119
99467
  );
@@ -99200,7 +99548,7 @@ object-assign
99200
99548
 
99201
99549
  var BackViewIcon = function BackViewIcon(props) {
99202
99550
  return /*#__PURE__*/ (0,
99203
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
99551
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
99204
99552
  'svg',
99205
99553
  _objectSpread(
99206
99554
  _objectSpread(
@@ -99218,38 +99566,38 @@ object-assign
99218
99566
  {
99219
99567
  children: [
99220
99568
  /*#__PURE__*/ (0,
99221
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99569
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99222
99570
  d: 'M 10 2 L 24 2 L 24 16 L 10 16 Z',
99223
99571
  fill: '#00ff99'
99224
99572
  }),
99225
99573
  ' ',
99226
99574
  /*#__PURE__*/ (0,
99227
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99575
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99228
99576
  d: 'M 5 5 L 10 2'
99229
99577
  }),
99230
99578
  ' ',
99231
99579
  /*#__PURE__*/ (0,
99232
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99580
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99233
99581
  d: 'M 5 5 L 5 19'
99234
99582
  }),
99235
99583
  ' ',
99236
99584
  /*#__PURE__*/ (0,
99237
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99585
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99238
99586
  d: 'M 5 19 L 10 16'
99239
99587
  }),
99240
99588
  ' ',
99241
99589
  /*#__PURE__*/ (0,
99242
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99590
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99243
99591
  d: 'M 19 5 L 24 2'
99244
99592
  }),
99245
99593
  ' ',
99246
99594
  /*#__PURE__*/ (0,
99247
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99595
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99248
99596
  d: 'M 19 5 L 19 19'
99249
99597
  }),
99250
99598
  ' ',
99251
99599
  /*#__PURE__*/ (0,
99252
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99600
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99253
99601
  d: 'M 19 19 L 24 16'
99254
99602
  }),
99255
99603
  ' '
@@ -99279,13 +99627,7 @@ object-assign
99279
99627
  /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__
99280
99628
  /* harmony export */
99281
99629
  });
99282
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
99283
- __webpack_require__(/*! react */ './node_modules/react/index.js');
99284
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
99285
- /*#__PURE__*/ __webpack_require__.n(
99286
- react__WEBPACK_IMPORTED_MODULE_0__
99287
- );
99288
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
99630
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
99289
99631
  __webpack_require__(
99290
99632
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
99291
99633
  );
@@ -99372,7 +99714,7 @@ object-assign
99372
99714
 
99373
99715
  var BottomViewIcon = function BottomViewIcon(props) {
99374
99716
  return /*#__PURE__*/ (0,
99375
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
99717
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
99376
99718
  'svg',
99377
99719
  _objectSpread(
99378
99720
  _objectSpread(
@@ -99390,32 +99732,32 @@ object-assign
99390
99732
  {
99391
99733
  children: [
99392
99734
  /*#__PURE__*/ (0,
99393
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99735
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99394
99736
  d: 'M 5 5 L 19 5 L 19 19 L 5 19 Z'
99395
99737
  }),
99396
99738
  ' ',
99397
99739
  /*#__PURE__*/ (0,
99398
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99740
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99399
99741
  d: 'M 5 5 L 10 2 L 24 2 L 19 5'
99400
99742
  }),
99401
99743
  ' ',
99402
99744
  /*#__PURE__*/ (0,
99403
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99745
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99404
99746
  d: 'M 19 5 L 24 2 L 24 16 L 19 19'
99405
99747
  }),
99406
99748
  ' ',
99407
99749
  /*#__PURE__*/ (0,
99408
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99750
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99409
99751
  d: 'M 5 19 L 10 16 L 10 2'
99410
99752
  }),
99411
99753
  ' ',
99412
99754
  /*#__PURE__*/ (0,
99413
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99755
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99414
99756
  d: 'M 10 16 L 24 16'
99415
99757
  }),
99416
99758
  ' ',
99417
99759
  /*#__PURE__*/ (0,
99418
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99760
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99419
99761
  d: 'M 5 19 L 19 19 L 24 16 L 10 16 Z',
99420
99762
  fill: '#00ff99'
99421
99763
  })
@@ -99445,13 +99787,7 @@ object-assign
99445
99787
  /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__
99446
99788
  /* harmony export */
99447
99789
  });
99448
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
99449
- __webpack_require__(/*! react */ './node_modules/react/index.js');
99450
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
99451
- /*#__PURE__*/ __webpack_require__.n(
99452
- react__WEBPACK_IMPORTED_MODULE_0__
99453
- );
99454
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
99790
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
99455
99791
  __webpack_require__(
99456
99792
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
99457
99793
  );
@@ -99538,7 +99874,7 @@ object-assign
99538
99874
 
99539
99875
  var FrontViewIcon = function FrontViewIcon(props) {
99540
99876
  return /*#__PURE__*/ (0,
99541
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
99877
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
99542
99878
  'svg',
99543
99879
  _objectSpread(
99544
99880
  _objectSpread(
@@ -99556,28 +99892,28 @@ object-assign
99556
99892
  {
99557
99893
  children: [
99558
99894
  /*#__PURE__*/ (0,
99559
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99895
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99560
99896
  d: 'M 5 5 L 19 5 L 19 19 L 5 19 Z',
99561
99897
  fill: '#00ff99'
99562
99898
  }),
99563
99899
  ' ',
99564
99900
  /*#__PURE__*/ (0,
99565
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99901
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99566
99902
  d: 'M 5 5 L 10 2 L 24 2 L 19 5'
99567
99903
  }),
99568
99904
  ' ',
99569
99905
  /*#__PURE__*/ (0,
99570
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99906
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99571
99907
  d: 'M 19 5 L 24 2 L 24 16 L 19 19'
99572
99908
  }),
99573
99909
  ' ',
99574
99910
  /*#__PURE__*/ (0,
99575
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99911
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99576
99912
  d: 'M 5 19 L 10 16 L 10 2'
99577
99913
  }),
99578
99914
  ' ',
99579
99915
  /*#__PURE__*/ (0,
99580
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
99916
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99581
99917
  d: 'M 10 16 L 24 16'
99582
99918
  }),
99583
99919
  ' '
@@ -99607,13 +99943,7 @@ object-assign
99607
99943
  /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__
99608
99944
  /* harmony export */
99609
99945
  });
99610
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
99611
- __webpack_require__(/*! react */ './node_modules/react/index.js');
99612
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
99613
- /*#__PURE__*/ __webpack_require__.n(
99614
- react__WEBPACK_IMPORTED_MODULE_0__
99615
- );
99616
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
99946
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
99617
99947
  __webpack_require__(
99618
99948
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
99619
99949
  );
@@ -99700,7 +100030,7 @@ object-assign
99700
100030
 
99701
100031
  var LeftViewIcon = function LeftViewIcon(props) {
99702
100032
  return /*#__PURE__*/ (0,
99703
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
100033
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
99704
100034
  'svg',
99705
100035
  _objectSpread(
99706
100036
  _objectSpread(
@@ -99718,32 +100048,32 @@ object-assign
99718
100048
  {
99719
100049
  children: [
99720
100050
  /*#__PURE__*/ (0,
99721
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100051
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99722
100052
  d: 'M 5 5 L 19 5 L 19 19 L 5 19 Z'
99723
100053
  }),
99724
100054
  ' ',
99725
100055
  /*#__PURE__*/ (0,
99726
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100056
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99727
100057
  d: 'M 5 5 L 10 2 L 24 2 L 19 5'
99728
100058
  }),
99729
100059
  ' ',
99730
100060
  /*#__PURE__*/ (0,
99731
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100061
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99732
100062
  d: 'M 19 5 L 24 2 L 24 16 L 19 19'
99733
100063
  }),
99734
100064
  ' ',
99735
100065
  /*#__PURE__*/ (0,
99736
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100066
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99737
100067
  d: 'M 5 19 L 10 16 L 10 2'
99738
100068
  }),
99739
100069
  ' ',
99740
100070
  /*#__PURE__*/ (0,
99741
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100071
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99742
100072
  d: 'M 10 16 L 24 16'
99743
100073
  }),
99744
100074
  ' ',
99745
100075
  /*#__PURE__*/ (0,
99746
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100076
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99747
100077
  d: 'M 5 5 L 10 2 L 10 16 L 5 19 Z',
99748
100078
  fill: '#00ff99'
99749
100079
  })
@@ -99773,13 +100103,7 @@ object-assign
99773
100103
  /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__
99774
100104
  /* harmony export */
99775
100105
  });
99776
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
99777
- __webpack_require__(/*! react */ './node_modules/react/index.js');
99778
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
99779
- /*#__PURE__*/ __webpack_require__.n(
99780
- react__WEBPACK_IMPORTED_MODULE_0__
99781
- );
99782
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
100106
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
99783
100107
  __webpack_require__(
99784
100108
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
99785
100109
  );
@@ -99866,7 +100190,7 @@ object-assign
99866
100190
 
99867
100191
  var PerspectiveIcon = function PerspectiveIcon(props) {
99868
100192
  return /*#__PURE__*/ (0,
99869
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
100193
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
99870
100194
  'svg',
99871
100195
  _objectSpread(
99872
100196
  _objectSpread(
@@ -99884,17 +100208,17 @@ object-assign
99884
100208
  {
99885
100209
  children: [
99886
100210
  /*#__PURE__*/ (0,
99887
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100211
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99888
100212
  d: 'M 5 5 L 19 5 L 19 19 L 5 19 Z'
99889
100213
  }),
99890
100214
  ' ',
99891
100215
  /*#__PURE__*/ (0,
99892
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100216
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99893
100217
  d: 'M 5 5 L 10 2 L 24 2 L 19 5'
99894
100218
  }),
99895
100219
  ' ',
99896
100220
  /*#__PURE__*/ (0,
99897
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100221
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
99898
100222
  d: 'M 19 5 L 24 2 L 24 16 L 19 19'
99899
100223
  }),
99900
100224
  ' '
@@ -99988,13 +100312,7 @@ object-assign
99988
100312
  /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__
99989
100313
  /* harmony export */
99990
100314
  });
99991
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
99992
- __webpack_require__(/*! react */ './node_modules/react/index.js');
99993
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
99994
- /*#__PURE__*/ __webpack_require__.n(
99995
- react__WEBPACK_IMPORTED_MODULE_0__
99996
- );
99997
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
100315
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
99998
100316
  __webpack_require__(
99999
100317
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
100000
100318
  );
@@ -100081,7 +100399,7 @@ object-assign
100081
100399
 
100082
100400
  var RightViewIcon = function RightViewIcon(props) {
100083
100401
  return /*#__PURE__*/ (0,
100084
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
100402
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
100085
100403
  'svg',
100086
100404
  _objectSpread(
100087
100405
  _objectSpread(
@@ -100099,32 +100417,32 @@ object-assign
100099
100417
  {
100100
100418
  children: [
100101
100419
  /*#__PURE__*/ (0,
100102
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100420
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100103
100421
  d: 'M 5 5 L 19 5 L 19 19 L 5 19 Z'
100104
100422
  }),
100105
100423
  ' ',
100106
100424
  /*#__PURE__*/ (0,
100107
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100425
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100108
100426
  d: 'M 5 5 L 10 2 L 24 2 L 19 5'
100109
100427
  }),
100110
100428
  ' ',
100111
100429
  /*#__PURE__*/ (0,
100112
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100430
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100113
100431
  d: 'M 19 5 L 24 2 L 24 16 L 19 19'
100114
100432
  }),
100115
100433
  ' ',
100116
100434
  /*#__PURE__*/ (0,
100117
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100435
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100118
100436
  d: 'M 5 19 L 10 16 L 10 2'
100119
100437
  }),
100120
100438
  ' ',
100121
100439
  /*#__PURE__*/ (0,
100122
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100440
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100123
100441
  d: 'M 10 16 L 24 16'
100124
100442
  }),
100125
100443
  ' ',
100126
100444
  /*#__PURE__*/ (0,
100127
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100445
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100128
100446
  d: 'M 19 5 L 24 2 L 24 16 L 19 19 Z',
100129
100447
  fill: '#00ff99'
100130
100448
  })
@@ -100154,13 +100472,7 @@ object-assign
100154
100472
  /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__
100155
100473
  /* harmony export */
100156
100474
  });
100157
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
100158
- __webpack_require__(/*! react */ './node_modules/react/index.js');
100159
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
100160
- /*#__PURE__*/ __webpack_require__.n(
100161
- react__WEBPACK_IMPORTED_MODULE_0__
100162
- );
100163
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
100475
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
100164
100476
  __webpack_require__(
100165
100477
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
100166
100478
  );
@@ -100247,7 +100559,7 @@ object-assign
100247
100559
 
100248
100560
  var TopViewIcon = function TopViewIcon(props) {
100249
100561
  return /*#__PURE__*/ (0,
100250
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
100562
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
100251
100563
  'svg',
100252
100564
  _objectSpread(
100253
100565
  _objectSpread(
@@ -100265,32 +100577,32 @@ object-assign
100265
100577
  {
100266
100578
  children: [
100267
100579
  /*#__PURE__*/ (0,
100268
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100580
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100269
100581
  d: 'M 5 5 L 19 5 L 19 19 L 5 19 Z'
100270
100582
  }),
100271
100583
  ' ',
100272
100584
  /*#__PURE__*/ (0,
100273
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100585
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100274
100586
  d: 'M 5 5 L 10 2 L 24 2 L 19 5'
100275
100587
  }),
100276
100588
  ' ',
100277
100589
  /*#__PURE__*/ (0,
100278
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100590
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100279
100591
  d: 'M 19 5 L 24 2 L 24 16 L 19 19'
100280
100592
  }),
100281
100593
  ' ',
100282
100594
  /*#__PURE__*/ (0,
100283
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100595
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100284
100596
  d: 'M 5 19 L 10 16 L 10 2'
100285
100597
  }),
100286
100598
  ' ',
100287
100599
  /*#__PURE__*/ (0,
100288
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100600
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100289
100601
  d: 'M 10 16 L 24 16'
100290
100602
  }),
100291
100603
  ' ',
100292
100604
  /*#__PURE__*/ (0,
100293
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('path', {
100605
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)('path', {
100294
100606
  d: 'M 5 5 L 10 2 L 24 2 L 19 5 Z',
100295
100607
  fill: '#00ff99'
100296
100608
  })
@@ -101050,25 +101362,19 @@ object-assign
101050
101362
  /* harmony export */ default: () => /* binding */ ModalPrimitive
101051
101363
  /* harmony export */
101052
101364
  });
101053
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ =
101054
- __webpack_require__(/*! react */ './node_modules/react/index.js');
101055
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default =
101056
- /*#__PURE__*/ __webpack_require__.n(
101057
- react__WEBPACK_IMPORTED_MODULE_0__
101058
- );
101059
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ =
101365
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ =
101060
101366
  __webpack_require__(
101061
101367
  /*! prop-types */ './node_modules/prop-types/index.js'
101062
101368
  );
101063
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default =
101369
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default =
101064
101370
  /*#__PURE__*/ __webpack_require__.n(
101065
- prop_types__WEBPACK_IMPORTED_MODULE_3__
101371
+ prop_types__WEBPACK_IMPORTED_MODULE_2__
101066
101372
  );
101067
- /* harmony import */ var _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__ =
101373
+ /* harmony import */ var _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__ =
101068
101374
  __webpack_require__(
101069
101375
  /*! ../icons/Primitives */ './src/components/icons/Primitives.js'
101070
101376
  );
101071
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ =
101377
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ =
101072
101378
  __webpack_require__(
101073
101379
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
101074
101380
  );
@@ -101077,58 +101383,58 @@ object-assign
101077
101383
  {
101078
101384
  type: 'a-box',
101079
101385
  label: 'Box',
101080
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default'].BOX
101386
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default'].BOX
101081
101387
  },
101082
101388
  {
101083
101389
  type: 'a-sphere',
101084
101390
  label: 'Sphere',
101085
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default']
101391
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default']
101086
101392
  .SPHERE
101087
101393
  },
101088
101394
  {
101089
101395
  type: 'a-cylinder',
101090
101396
  label: 'Cylinder',
101091
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default']
101397
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default']
101092
101398
  .CYLINDER
101093
101399
  },
101094
101400
  {
101095
101401
  type: 'a-cone',
101096
101402
  label: 'Cone',
101097
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default'].CONE
101403
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default'].CONE
101098
101404
  },
101099
101405
  {
101100
101406
  type: 'a-torus',
101101
101407
  label: 'Torus',
101102
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default']
101408
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default']
101103
101409
  .TORUS
101104
101410
  },
101105
101411
  {
101106
101412
  type: 'a-plane',
101107
101413
  label: 'Plane',
101108
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default']
101414
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default']
101109
101415
  .PLANE
101110
101416
  },
101111
101417
  {
101112
101418
  type: 'a-image',
101113
101419
  label: 'Image',
101114
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default']
101420
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default']
101115
101421
  .IMAGE
101116
101422
  },
101117
101423
  {
101118
101424
  type: 'a-text',
101119
101425
  label: 'Text',
101120
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default'].TEXT
101426
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default'].TEXT
101121
101427
  },
101122
101428
  {
101123
101429
  type: 'a-light',
101124
101430
  label: 'Light',
101125
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default']
101431
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default']
101126
101432
  .LIGHT
101127
101433
  },
101128
101434
  {
101129
101435
  type: 'a-entity',
101130
101436
  label: 'Empty Entity',
101131
- icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_1__['default']
101437
+ icon: _icons_Primitives__WEBPACK_IMPORTED_MODULE_0__['default']
101132
101438
  .EMPTY
101133
101439
  }
101134
101440
  ];
@@ -101148,25 +101454,25 @@ object-assign
101148
101454
  e.stopPropagation();
101149
101455
  };
101150
101456
  return /*#__PURE__*/ (0,
101151
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)('div', {
101457
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('div', {
101152
101458
  className: 'modal-overlay',
101153
101459
  onClick: onClose,
101154
101460
  children: /*#__PURE__*/ (0,
101155
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)('div', {
101461
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)('div', {
101156
101462
  className: 'modal-content',
101157
101463
  id: 'primitive-modal',
101158
101464
  onClick: handleModalContentClick,
101159
101465
  children: [
101160
101466
  /*#__PURE__*/ (0,
101161
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)('div', {
101467
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)('div', {
101162
101468
  className: 'modal-header',
101163
101469
  children: [
101164
101470
  /*#__PURE__*/ (0,
101165
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)('h3', {
101471
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('h3', {
101166
101472
  children: 'Select Primitive'
101167
101473
  }),
101168
101474
  /*#__PURE__*/ (0,
101169
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(
101475
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(
101170
101476
  'span',
101171
101477
  {
101172
101478
  className: 'close',
@@ -101177,14 +101483,14 @@ object-assign
101177
101483
  ]
101178
101484
  }),
101179
101485
  /*#__PURE__*/ (0,
101180
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)('div', {
101486
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('div', {
101181
101487
  className: 'modal-body',
101182
101488
  children: /*#__PURE__*/ (0,
101183
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)('div', {
101489
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)('div', {
101184
101490
  className: 'primitive-grid',
101185
101491
  children: PRIMITIVES.map(function (primitive) {
101186
101492
  return /*#__PURE__*/ (0,
101187
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(
101493
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(
101188
101494
  'button',
101189
101495
  {
101190
101496
  className: 'primitive-button',
@@ -101195,7 +101501,7 @@ object-assign
101195
101501
  children: [
101196
101502
  typeof primitive.icon === 'string'
101197
101503
  ? /*#__PURE__*/ (0,
101198
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(
101504
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(
101199
101505
  'div',
101200
101506
  {
101201
101507
  style: {
@@ -101223,11 +101529,11 @@ object-assign
101223
101529
  }
101224
101530
  ModalPrimitive.propTypes = {
101225
101531
  isOpen:
101226
- prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool.isRequired,
101532
+ prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool.isRequired,
101227
101533
  onClose:
101228
- prop_types__WEBPACK_IMPORTED_MODULE_3___default().func.isRequired,
101534
+ prop_types__WEBPACK_IMPORTED_MODULE_2___default().func.isRequired,
101229
101535
  onSelectPrimitive:
101230
- prop_types__WEBPACK_IMPORTED_MODULE_3___default().func.isRequired
101536
+ prop_types__WEBPACK_IMPORTED_MODULE_2___default().func.isRequired
101231
101537
  };
101232
101538
 
101233
101539
  /***/
@@ -101254,15 +101560,15 @@ object-assign
101254
101560
  /*#__PURE__*/ __webpack_require__.n(
101255
101561
  react__WEBPACK_IMPORTED_MODULE_0__
101256
101562
  );
101257
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ =
101563
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ =
101258
101564
  __webpack_require__(
101259
101565
  /*! prop-types */ './node_modules/prop-types/index.js'
101260
101566
  );
101261
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default =
101567
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default =
101262
101568
  /*#__PURE__*/ __webpack_require__.n(
101263
- prop_types__WEBPACK_IMPORTED_MODULE_7__
101569
+ prop_types__WEBPACK_IMPORTED_MODULE_6__
101264
101570
  );
101265
- /* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__ =
101571
+ /* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__ =
101266
101572
  __webpack_require__(
101267
101573
  /*! @fortawesome/free-solid-svg-icons */ './node_modules/@fortawesome/free-solid-svg-icons/index.mjs'
101268
101574
  );
@@ -101303,6 +101609,83 @@ object-assign
101303
101609
  _typeof(o)
101304
101610
  );
101305
101611
  }
101612
+ function _toConsumableArray(r) {
101613
+ return (
101614
+ _arrayWithoutHoles(r) ||
101615
+ _iterableToArray(r) ||
101616
+ _unsupportedIterableToArray(r) ||
101617
+ _nonIterableSpread()
101618
+ );
101619
+ }
101620
+ function _nonIterableSpread() {
101621
+ throw new TypeError(
101622
+ 'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'
101623
+ );
101624
+ }
101625
+ function _unsupportedIterableToArray(r, a) {
101626
+ if (r) {
101627
+ if ('string' == typeof r) return _arrayLikeToArray(r, a);
101628
+ var t = {}.toString.call(r).slice(8, -1);
101629
+ return (
101630
+ 'Object' === t && r.constructor && (t = r.constructor.name),
101631
+ 'Map' === t || 'Set' === t
101632
+ ? Array.from(r)
101633
+ : 'Arguments' === t ||
101634
+ /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
101635
+ ? _arrayLikeToArray(r, a)
101636
+ : void 0
101637
+ );
101638
+ }
101639
+ }
101640
+ function _iterableToArray(r) {
101641
+ if (
101642
+ ('undefined' != typeof Symbol && null != r[Symbol.iterator]) ||
101643
+ null != r['@@iterator']
101644
+ )
101645
+ return Array.from(r);
101646
+ }
101647
+ function _arrayWithoutHoles(r) {
101648
+ if (Array.isArray(r)) return _arrayLikeToArray(r);
101649
+ }
101650
+ function _arrayLikeToArray(r, a) {
101651
+ (null == a || a > r.length) && (a = r.length);
101652
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
101653
+ return n;
101654
+ }
101655
+ function ownKeys(e, r) {
101656
+ var t = Object.keys(e);
101657
+ if (Object.getOwnPropertySymbols) {
101658
+ var o = Object.getOwnPropertySymbols(e);
101659
+ r &&
101660
+ (o = o.filter(function (r) {
101661
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
101662
+ })),
101663
+ t.push.apply(t, o);
101664
+ }
101665
+ return t;
101666
+ }
101667
+ function _objectSpread(e) {
101668
+ for (var r = 1; r < arguments.length; r++) {
101669
+ var t = null != arguments[r] ? arguments[r] : {};
101670
+ r % 2
101671
+ ? ownKeys(Object(t), !0).forEach(function (r) {
101672
+ _defineProperty(e, r, t[r]);
101673
+ })
101674
+ : Object.getOwnPropertyDescriptors
101675
+ ? Object.defineProperties(
101676
+ e,
101677
+ Object.getOwnPropertyDescriptors(t)
101678
+ )
101679
+ : ownKeys(Object(t)).forEach(function (r) {
101680
+ Object.defineProperty(
101681
+ e,
101682
+ r,
101683
+ Object.getOwnPropertyDescriptor(t, r)
101684
+ );
101685
+ });
101686
+ }
101687
+ return e;
101688
+ }
101306
101689
  function _classCallCheck(a, n) {
101307
101690
  if (!(a instanceof n))
101308
101691
  throw new TypeError('Cannot call a class as a function');
@@ -101420,24 +101803,21 @@ object-assign
101420
101803
  return ('string' === r ? String : Number)(t);
101421
101804
  }
101422
101805
 
101423
- function getFilename(url) {
101806
+ // Regex compiled once for performance
101807
+
101808
+ var VALID_ID_REGEX = /^[A-Za-z]+[\w-]*$/;
101809
+ var getFilename = function getFilename(url) {
101424
101810
  var converted =
101425
101811
  arguments.length > 1 && arguments[1] !== undefined
101426
101812
  ? arguments[1]
101427
101813
  : false;
101428
101814
  var filename = url.split('/').pop();
101429
- if (converted) {
101430
- filename = getValidId(filename);
101431
- }
101432
- return filename;
101433
- }
101434
- function isValidId(id) {
101435
- // The correct re should include : and . but A-frame seems to fail while accessing them
101436
- var re = /^[A-Za-z]+[\w-]*$/;
101437
- return re.test(id);
101438
- }
101439
- function getValidId(name) {
101440
- // info.name.replace(/\.[^/.]+$/, '').replace(/\s+/g, '')
101815
+ return converted ? getValidId(filename) : filename;
101816
+ };
101817
+ var isValidId = function isValidId(id) {
101818
+ return VALID_ID_REGEX.test(id);
101819
+ };
101820
+ var getValidId = function getValidId(name) {
101441
101821
  return name
101442
101822
  .split('.')
101443
101823
  .shift()
@@ -101445,57 +101825,205 @@ object-assign
101445
101825
  .replace(/^\d+\s*/, '')
101446
101826
  .replace(/[\W]/, '')
101447
101827
  .toLowerCase();
101448
- }
101828
+ };
101829
+
101830
+ // Default preview state - reusable constant
101831
+ var DEFAULT_PREVIEW = {
101832
+ width: 0,
101833
+ height: 0,
101834
+ src: 'https://use.senangwebs.com/img/app_icon.png',
101835
+ id: '',
101836
+ name: '',
101837
+ filename: '',
101838
+ type: '',
101839
+ value: '',
101840
+ loaded: false
101841
+ };
101842
+
101843
+ // Reusable ImageItem component to prevent repeated JSX
101844
+ var ImageItem =
101845
+ /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().memo(
101846
+ function (_ref) {
101847
+ var image = _ref.image,
101848
+ onClick = _ref.onClick,
101849
+ isSelected = _ref.isSelected;
101850
+ return /*#__PURE__*/ (0,
101851
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)('div', {
101852
+ onClick: onClick,
101853
+ className: 'gallery-item'.concat(isSelected ? ' selected' : ''),
101854
+ children: [
101855
+ /*#__PURE__*/ (0,
101856
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)('img', {
101857
+ width: '155px',
101858
+ height: '155px',
101859
+ src: image.src,
101860
+ alt: image.name
101861
+ }),
101862
+ /*#__PURE__*/ (0,
101863
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)('div', {
101864
+ className: 'detail',
101865
+ children: [
101866
+ /*#__PURE__*/ (0,
101867
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101868
+ 'span',
101869
+ {
101870
+ className: 'title',
101871
+ children: image.name
101872
+ }
101873
+ ),
101874
+ /*#__PURE__*/ (0,
101875
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101876
+ 'span',
101877
+ {
101878
+ children: getFilename(image.src)
101879
+ }
101880
+ ),
101881
+ /*#__PURE__*/ (0,
101882
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101883
+ 'span',
101884
+ {
101885
+ children: [image.width, ' x ', image.height]
101886
+ }
101887
+ )
101888
+ ]
101889
+ })
101890
+ ]
101891
+ });
101892
+ }
101893
+ );
101894
+ ImageItem.displayName = 'ImageItem';
101895
+ ImageItem.propTypes = {
101896
+ image: prop_types__WEBPACK_IMPORTED_MODULE_6___default().shape({
101897
+ src: prop_types__WEBPACK_IMPORTED_MODULE_6___default().string
101898
+ .isRequired,
101899
+ name: prop_types__WEBPACK_IMPORTED_MODULE_6___default().string
101900
+ .isRequired,
101901
+ width: prop_types__WEBPACK_IMPORTED_MODULE_6___default().number,
101902
+ height: prop_types__WEBPACK_IMPORTED_MODULE_6___default().number
101903
+ }).isRequired,
101904
+ onClick:
101905
+ prop_types__WEBPACK_IMPORTED_MODULE_6___default().func.isRequired,
101906
+ isSelected: prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool
101907
+ };
101449
101908
  var ModalTextures = /*#__PURE__*/ (function (_React$Component) {
101450
- function ModalTextures(props) {
101909
+ function ModalTextures() {
101451
101910
  var _this;
101452
101911
  _classCallCheck(this, ModalTextures);
101453
- _this = _callSuper(this, ModalTextures, [props]);
101454
- _defineProperty(_this, 'onClose', function (value) {
101455
- if (_this.props.onClose) {
101456
- _this.props.onClose();
101457
- }
101912
+ for (
101913
+ var _len = arguments.length, args = new Array(_len), _key = 0;
101914
+ _key < _len;
101915
+ _key++
101916
+ ) {
101917
+ args[_key] = arguments[_key];
101918
+ }
101919
+ _this = _callSuper(this, ModalTextures, [].concat(args));
101920
+ _defineProperty(_this, 'state', {
101921
+ filterText: '',
101922
+ assetsImages: [],
101923
+ registryImages: [],
101924
+ addNewDialogOpened: false,
101925
+ newUrl: '',
101926
+ isLoading: false,
101927
+ isGalleryLoading: false,
101928
+ preview: _objectSpread({}, DEFAULT_PREVIEW)
101458
101929
  });
101459
- _defineProperty(_this, 'selectTexture', function (value) {
101460
- if (_this.props.onClose) {
101461
- _this.props.onClose(value);
101462
- }
101930
+ _defineProperty(
101931
+ _this,
101932
+ 'imageName',
101933
+ /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createRef()
101934
+ );
101935
+ _defineProperty(
101936
+ _this,
101937
+ 'previewImg',
101938
+ /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createRef()
101939
+ );
101940
+ _defineProperty(_this, 'handleAssetsImagesLoad', function () {
101941
+ _this.generateFromRegistry();
101942
+ });
101943
+ _defineProperty(_this, 'onClose', function () {
101944
+ var _this$props$onClose, _this$props;
101945
+ (_this$props$onClose = (_this$props = _this.props).onClose) ===
101946
+ null ||
101947
+ _this$props$onClose === void 0 ||
101948
+ _this$props$onClose.call(_this$props);
101949
+ });
101950
+ _defineProperty(_this, 'selectTexture', function (image) {
101951
+ var _this$props$onClose2, _this$props2;
101952
+ (_this$props$onClose2 = (_this$props2 = _this.props).onClose) ===
101953
+ null ||
101954
+ _this$props$onClose2 === void 0 ||
101955
+ _this$props$onClose2.call(_this$props2, image);
101463
101956
  });
101464
101957
  _defineProperty(_this, 'generateFromRegistry', function () {
101465
- var self = _this;
101466
- AFRAME.INSPECTOR.assetsLoader.images.forEach(
101467
- function (imageData) {
101468
- var image = new Image();
101469
- image.addEventListener('load', function () {
101470
- self.state.registryImages.push({
101471
- id: imageData.id,
101472
- src: imageData.fullPath,
101473
- width: imageData.width,
101474
- height: imageData.height,
101475
- name: imageData.id,
101476
- type: 'registry',
101477
- tags: imageData.tags,
101478
- value: 'url(' + imageData.fullPath + ')'
101479
- });
101480
- self.setState({
101481
- registryImages: self.state.registryImages.slice()
101482
- });
101958
+ var images = AFRAME.INSPECTOR.assetsLoader.images;
101959
+ var newImages = [];
101960
+ var loadedCount = 0;
101961
+ if (images.length === 0) {
101962
+ _this.setState({
101963
+ registryImages: [],
101964
+ isGalleryLoading: false
101965
+ });
101966
+ return;
101967
+ }
101968
+ _this.setState({
101969
+ isGalleryLoading: true
101970
+ });
101971
+ var checkAllLoaded = function checkAllLoaded() {
101972
+ loadedCount++;
101973
+ // Update state when all images are processed (loaded or errored)
101974
+ if (loadedCount === images.length) {
101975
+ _this.setState({
101976
+ registryImages: newImages,
101977
+ isGalleryLoading: false
101483
101978
  });
101484
- image.src = imageData.fullThumbPath;
101485
101979
  }
101486
- );
101980
+ };
101981
+ images.forEach(function (imageData) {
101982
+ var image = new Image();
101983
+ image.onload = function () {
101984
+ newImages.push({
101985
+ id: imageData.id,
101986
+ src: imageData.fullPath,
101987
+ width: imageData.width,
101988
+ height: imageData.height,
101989
+ name: imageData.id,
101990
+ type: 'registry',
101991
+ tags: imageData.tags,
101992
+ value: 'url('.concat(imageData.fullPath, ')')
101993
+ });
101994
+ checkAllLoaded();
101995
+ };
101996
+ image.onerror = function () {
101997
+ console.warn(
101998
+ 'Failed to load registry image: '.concat(
101999
+ imageData.fullThumbPath
102000
+ )
102001
+ );
102002
+ checkAllLoaded();
102003
+ };
102004
+ image.src = imageData.fullThumbPath;
102005
+ });
101487
102006
  });
101488
102007
  _defineProperty(_this, 'generateFromAssets', function () {
101489
- _this.setState({
101490
- assetsImages: []
101491
- });
101492
- var self = _this;
101493
- Array.prototype.slice
101494
- .call(document.querySelectorAll('a-assets img'))
101495
- .forEach(function (asset) {
101496
- var image = new Image();
101497
- image.addEventListener('load', function () {
101498
- self.state.assetsImages.push({
102008
+ var assets = Array.from(
102009
+ document.querySelectorAll('a-assets img')
102010
+ );
102011
+ var newImages = [];
102012
+ var seenIds = new Set();
102013
+ var loadedCount = 0;
102014
+ if (assets.length === 0) {
102015
+ _this.setState({
102016
+ assetsImages: []
102017
+ });
102018
+ return;
102019
+ }
102020
+ assets.forEach(function (asset) {
102021
+ var image = new Image();
102022
+ image.onload = function () {
102023
+ // Prevent duplicates
102024
+ if (!seenIds.has(asset.id)) {
102025
+ seenIds.add(asset.id);
102026
+ newImages.push({
101499
102027
  id: asset.id,
101500
102028
  src: image.src,
101501
102029
  width: image.width,
@@ -101504,38 +102032,49 @@ object-assign
101504
102032
  type: 'asset',
101505
102033
  value: '#' + asset.id
101506
102034
  });
101507
- self.setState({
101508
- assetsImages: self.state.assetsImages
102035
+ }
102036
+ loadedCount++;
102037
+ // Batch update when all images are loaded
102038
+ if (loadedCount === assets.length) {
102039
+ _this.setState({
102040
+ assetsImages: newImages
101509
102041
  });
101510
- });
101511
- image.src = asset.src;
101512
- });
102042
+ }
102043
+ };
102044
+ image.src = asset.src;
102045
+ });
101513
102046
  });
101514
102047
  _defineProperty(_this, 'onNewUrl', function (event) {
101515
- if (event.keyCode !== 13) {
101516
- return;
101517
- }
101518
- var self = _this;
101519
- function onImageLoaded(img) {
101520
- var src = self.preview.current.src;
101521
- self.setState({
102048
+ if (event.keyCode !== 13) return;
102049
+ _this.loadImageFromUrl();
102050
+ });
102051
+ _defineProperty(_this, 'loadImageFromUrl', function () {
102052
+ var _this$imageName$curre;
102053
+ var url = _this.state.newUrl;
102054
+ if (!url) return;
102055
+ var previewEl = _this.previewImg.current;
102056
+ var _handleLoad = function handleLoad() {
102057
+ var src = previewEl.src;
102058
+ _this.setState({
101522
102059
  preview: {
101523
- width: self.preview.current.naturalWidth,
101524
- height: self.preview.current.naturalHeight,
102060
+ width: previewEl.naturalWidth,
102061
+ height: previewEl.naturalHeight,
101525
102062
  src: src,
101526
102063
  id: '',
101527
102064
  name: getFilename(src, true),
101528
102065
  filename: getFilename(src),
101529
102066
  type: 'new',
101530
102067
  loaded: true,
101531
- value: 'url(' + src + ')'
102068
+ value: 'url('.concat(src, ')')
101532
102069
  }
101533
102070
  });
101534
- self.preview.current.removeEventListener('load', onImageLoaded);
101535
- }
101536
- _this.preview.current.addEventListener('load', onImageLoaded);
101537
- _this.preview.current.src = event.target.value;
101538
- _this.imageName.current.focus();
102071
+ previewEl.removeEventListener('load', _handleLoad);
102072
+ };
102073
+ previewEl.addEventListener('load', _handleLoad);
102074
+ previewEl.src = url;
102075
+ (_this$imageName$curre = _this.imageName.current) === null ||
102076
+ _this$imageName$curre === void 0 ||
102077
+ _this$imageName$curre.focus();
101539
102078
  });
101540
102079
  _defineProperty(_this, 'onNameKeyUp', function (event) {
101541
102080
  if (event.keyCode === 13 && _this.isValidAsset()) {
@@ -101543,15 +102082,29 @@ object-assign
101543
102082
  }
101544
102083
  });
101545
102084
  _defineProperty(_this, 'onNameChanged', function (event) {
101546
- var state = _this.state.preview;
101547
- state.name = event.target.value;
101548
- _this.setState({
101549
- preview: state
102085
+ _this.setState(function (prevState) {
102086
+ return {
102087
+ preview: _objectSpread(
102088
+ _objectSpread({}, prevState.preview),
102089
+ {},
102090
+ {
102091
+ name: event.target.value
102092
+ }
102093
+ )
102094
+ };
101550
102095
  });
101551
102096
  });
101552
102097
  _defineProperty(_this, 'toggleNewDialog', function () {
102098
+ _this.setState(function (prevState) {
102099
+ return {
102100
+ addNewDialogOpened: !prevState.addNewDialogOpened
102101
+ };
102102
+ });
102103
+ });
102104
+ _defineProperty(_this, 'clear', function () {
101553
102105
  _this.setState({
101554
- addNewDialogOpened: !_this.state.addNewDialogOpened
102106
+ preview: _objectSpread({}, DEFAULT_PREVIEW),
102107
+ newUrl: ''
101555
102108
  });
101556
102109
  });
101557
102110
  _defineProperty(_this, 'onUrlChange', function (e) {
@@ -101559,19 +102112,27 @@ object-assign
101559
102112
  newUrl: e.target.value
101560
102113
  });
101561
102114
  });
102115
+ _defineProperty(_this, 'isValidAsset', function () {
102116
+ var preview = _this.state.preview;
102117
+ return preview.loaded && isValidId(preview.name);
102118
+ });
101562
102119
  _defineProperty(_this, 'addNewAsset', function () {
101563
- var self = _this;
102120
+ _this.setState({
102121
+ isLoading: true
102122
+ });
102123
+ var preview = _this.state.preview;
101564
102124
  (0, _lib_assetsUtils__WEBPACK_IMPORTED_MODULE_4__.insertNewAsset)(
101565
102125
  'img',
101566
- _this.state.preview.name,
101567
- _this.state.preview.src,
102126
+ preview.name,
102127
+ preview.src,
101568
102128
  true,
101569
102129
  function () {
101570
- self.generateFromAssets();
101571
- self.setState({
101572
- addNewDialogOpened: false
102130
+ _this.generateFromAssets();
102131
+ _this.setState({
102132
+ addNewDialogOpened: false,
102133
+ isLoading: false
101573
102134
  });
101574
- self.clear();
102135
+ _this.clear();
101575
102136
  }
101576
102137
  );
101577
102138
  });
@@ -101580,630 +102141,407 @@ object-assign
101580
102141
  filterText: e.target.value
101581
102142
  });
101582
102143
  });
101583
- _this.state = {
101584
- filterText: '',
101585
- isOpen: _this.props.isOpen,
101586
- loadedTextures: [],
101587
- assetsImages: [],
101588
- registryImages: [],
101589
- addNewDialogOpened: false,
101590
- newUrl: '',
101591
- preview: {
101592
- width: 0,
101593
- height: 0,
101594
- src: '',
101595
- id: '',
101596
- name: '',
101597
- filename: '',
101598
- type: '',
101599
- value: '',
101600
- loaded: false
101601
- }
101602
- };
101603
- _this.imageName =
101604
- /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createRef();
101605
- _this.preview =
101606
- /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createRef();
101607
- _this.registryGallery =
101608
- /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createRef();
102144
+ _defineProperty(_this, 'selectRegistryImage', function (image) {
102145
+ var _this$imageName$curre2;
102146
+ _this.setState({
102147
+ preview: {
102148
+ width: image.width,
102149
+ height: image.height,
102150
+ src: image.src,
102151
+ id: '',
102152
+ name: getFilename(image.name, true),
102153
+ filename: getFilename(image.src),
102154
+ type: 'registry',
102155
+ loaded: true,
102156
+ value: 'url('.concat(image.src, ')')
102157
+ }
102158
+ });
102159
+ (_this$imageName$curre2 = _this.imageName.current) === null ||
102160
+ _this$imageName$curre2 === void 0 ||
102161
+ _this$imageName$curre2.focus();
102162
+ });
102163
+ _defineProperty(_this, 'getFilteredRegistryImages', function () {
102164
+ var filterText = _this.state.filterText.toUpperCase();
102165
+ if (!filterText) return _this.state.registryImages;
102166
+ return _this.state.registryImages.filter(function (image) {
102167
+ return (
102168
+ image.id.toUpperCase().includes(filterText) ||
102169
+ image.name.toUpperCase().includes(filterText) ||
102170
+ image.tags.includes(filterText)
102171
+ );
102172
+ });
102173
+ });
102174
+ _defineProperty(_this, 'getSortedAssetImages', function () {
102175
+ return _toConsumableArray(_this.state.assetsImages).sort(
102176
+ function (a, b) {
102177
+ return a.id.localeCompare(b.id);
102178
+ }
102179
+ );
102180
+ });
101609
102181
  return _this;
101610
102182
  }
101611
102183
  _inherits(ModalTextures, _React$Component);
101612
- return _createClass(
101613
- ModalTextures,
101614
- [
101615
- {
101616
- key: 'componentDidMount',
101617
- value: function componentDidMount() {
101618
- var _this2 = this;
101619
- _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
101620
- 'assetsimagesload',
101621
- function (images) {
101622
- _this2.generateFromRegistry();
101623
- }
101624
- );
101625
- this.generateFromAssets();
101626
- }
101627
- },
101628
- {
101629
- key: 'componentDidUpdate',
101630
- value: function componentDidUpdate(prevProps) {
101631
- if (
101632
- this.state.isOpen &&
101633
- !AFRAME.INSPECTOR.assetsLoader.hasLoaded
101634
- ) {
101635
- AFRAME.INSPECTOR.assetsLoader.load();
101636
- }
101637
- if (
101638
- this.state.isOpen &&
101639
- this.state.isOpen !== prevProps.isOpen
101640
- ) {
101641
- this.generateFromAssets();
101642
- }
101643
- }
101644
- },
101645
- {
101646
- key: 'clear',
101647
- value: function clear() {
101648
- this.setState({
101649
- preview: {
101650
- width: 0,
101651
- height: 0,
101652
- src: '',
101653
- id: '',
101654
- filename: '',
101655
- name: '',
101656
- type: '',
101657
- loaded: false,
101658
- value: ''
101659
- },
101660
- newUrl: ''
101661
- });
102184
+ return _createClass(ModalTextures, [
102185
+ {
102186
+ key: 'componentDidMount',
102187
+ value: function componentDidMount() {
102188
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].on(
102189
+ 'assetsimagesload',
102190
+ this.handleAssetsImagesLoad
102191
+ );
102192
+ this.generateFromAssets();
102193
+ }
102194
+ },
102195
+ {
102196
+ key: 'componentWillUnmount',
102197
+ value: function componentWillUnmount() {
102198
+ _lib_Events__WEBPACK_IMPORTED_MODULE_2__['default'].off(
102199
+ 'assetsimagesload',
102200
+ this.handleAssetsImagesLoad
102201
+ );
102202
+ }
102203
+ },
102204
+ {
102205
+ key: 'componentDidUpdate',
102206
+ value: function componentDidUpdate(prevProps) {
102207
+ var isOpen = this.props.isOpen;
102208
+ if (isOpen && !AFRAME.INSPECTOR.assetsLoader.hasLoaded) {
102209
+ AFRAME.INSPECTOR.assetsLoader.load();
101662
102210
  }
101663
- },
101664
- {
101665
- key: 'isValidAsset',
101666
- value: function isValidAsset() {
101667
- var validUrl = isValidId(this.state.preview.name);
101668
- var validAsset = this.state.preview.loaded && validUrl;
101669
- return validAsset;
102211
+ if (isOpen && isOpen !== prevProps.isOpen) {
102212
+ this.generateFromAssets();
101670
102213
  }
101671
- },
101672
- {
101673
- key: 'renderRegistryImages',
101674
- value: function renderRegistryImages() {
101675
- var self = this;
101676
- var selectSample = function selectSample(image) {
101677
- self.setState({
101678
- preview: {
101679
- width: image.width,
101680
- height: image.height,
101681
- src: image.src,
101682
- id: '',
101683
- name: getFilename(image.name, true),
101684
- filename: getFilename(image.src),
101685
- type: 'registry',
101686
- loaded: true,
101687
- value: 'url(' + image.src + ')'
101688
- }
101689
- });
101690
- self.imageName.current.focus();
101691
- };
101692
- var filterText = this.state.filterText.toUpperCase();
101693
- return this.state.registryImages
101694
- .filter(function (image) {
101695
- return (
101696
- image.id.toUpperCase().indexOf(filterText) > -1 ||
101697
- image.name.toUpperCase().indexOf(filterText) > -1 ||
101698
- image.tags.indexOf(filterText) > -1
101699
- );
101700
- })
101701
- .map(function (image) {
101702
- var imageClick = selectSample.bind(this, image);
101703
- return /*#__PURE__*/ (0,
102214
+ }
102215
+ },
102216
+ {
102217
+ key: 'render',
102218
+ value: function render() {
102219
+ var _this2 = this;
102220
+ var _this$props3 = this.props,
102221
+ isOpen = _this$props3.isOpen,
102222
+ selectedTexture = _this$props3.selectedTexture;
102223
+ var _this$state = this.state,
102224
+ preview = _this$state.preview,
102225
+ addNewDialogOpened = _this$state.addNewDialogOpened,
102226
+ newUrl = _this$state.newUrl,
102227
+ filterText = _this$state.filterText,
102228
+ isLoading = _this$state.isLoading;
102229
+ var validUrl = isValidId(preview.name);
102230
+ var validAsset = this.isValidAsset();
102231
+ var addNewAssetButton = addNewDialogOpened
102232
+ ? 'BACK'
102233
+ : 'LOAD TEXTURE';
102234
+ return /*#__PURE__*/ (0,
102235
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102236
+ _Modal__WEBPACK_IMPORTED_MODULE_3__['default'],
102237
+ {
102238
+ id: 'textureModal',
102239
+ title: 'Textures',
102240
+ isOpen: isOpen,
102241
+ onClose: this.onClose,
102242
+ closeOnClickOutside: false,
102243
+ children: [
102244
+ /*#__PURE__*/ (0,
101704
102245
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101705
- 'li',
102246
+ 'div',
101706
102247
  {
101707
- onClick: imageClick,
102248
+ className: 'texture-toolbar',
101708
102249
  children: [
101709
102250
  /*#__PURE__*/ (0,
101710
102251
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101711
- 'img',
102252
+ 'button',
101712
102253
  {
101713
- width: '155px',
101714
- height: '155px',
101715
- src: image.src
102254
+ onClick: this.toggleNewDialog,
102255
+ children: addNewAssetButton
101716
102256
  }
101717
102257
  ),
101718
- /*#__PURE__*/ (0,
101719
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101720
- 'div',
101721
- {
101722
- className: 'detail',
101723
- children: [
101724
- /*#__PURE__*/ (0,
101725
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101726
- 'span',
101727
- {
101728
- className: 'title',
101729
- children: image.name
101730
- }
101731
- ),
101732
- /*#__PURE__*/ (0,
101733
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101734
- 'span',
101735
- {
101736
- children: getFilename(image.src)
101737
- }
101738
- ),
101739
- /*#__PURE__*/ (0,
101740
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101741
- 'span',
101742
- {
101743
- children: [
101744
- image.width,
101745
- ' x ',
101746
- image.height
101747
- ]
101748
- }
101749
- )
101750
- ]
101751
- }
101752
- )
102258
+ addNewDialogOpened &&
102259
+ /*#__PURE__*/ (0,
102260
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102261
+ 'div',
102262
+ {
102263
+ className: 'url-input-group',
102264
+ children: [
102265
+ /*#__PURE__*/ (0,
102266
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102267
+ 'input',
102268
+ {
102269
+ type: 'text',
102270
+ className: 'imageUrl',
102271
+ placeholder: 'Paste image URL',
102272
+ value: newUrl,
102273
+ onChange: this.onUrlChange,
102274
+ onKeyUp: this.onNewUrl
102275
+ }
102276
+ ),
102277
+ /*#__PURE__*/ (0,
102278
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102279
+ 'button',
102280
+ {
102281
+ className: 'load-url-btn',
102282
+ onClick: this.loadImageFromUrl,
102283
+ disabled: !newUrl,
102284
+ children: 'LOAD'
102285
+ }
102286
+ )
102287
+ ]
102288
+ }
102289
+ )
101753
102290
  ]
101754
- },
101755
- image.src
101756
- );
101757
- });
101758
- }
101759
- },
101760
- {
101761
- key: 'render',
101762
- value: function render() {
101763
- var isOpen = this.state.isOpen;
101764
- var loadedTextures = this.state.loadedTextures;
101765
- var preview = this.state.preview;
101766
- var validUrl = isValidId(this.state.preview.name);
101767
- var validAsset = this.isValidAsset();
101768
- var addNewAssetButton = this.state.addNewDialogOpened
101769
- ? 'BACK'
101770
- : 'LOAD TEXTURE';
101771
- return /*#__PURE__*/ (0,
101772
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101773
- _Modal__WEBPACK_IMPORTED_MODULE_3__['default'],
101774
- {
101775
- id: 'textureModal',
101776
- title: 'Textures',
101777
- isOpen: isOpen,
101778
- onClose: this.onClose,
101779
- closeOnClickOutside: false,
101780
- children: [
101781
- /*#__PURE__*/ (0,
101782
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101783
- 'button',
101784
- {
101785
- onClick: this.toggleNewDialog,
101786
- children: addNewAssetButton
101787
- }
101788
- ),
101789
- /*#__PURE__*/ (0,
101790
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101791
- 'div',
101792
- {
101793
- className: this.state.addNewDialogOpened
101794
- ? ''
101795
- : 'hide',
101796
- children: /*#__PURE__*/ (0,
101797
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101798
- 'div',
101799
- {
101800
- className: 'newimage',
101801
- children: [
101802
- /*#__PURE__*/ (0,
101803
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101804
- 'div',
101805
- {
101806
- className: 'new_asset_options',
101807
- children: [
101808
- /*#__PURE__*/ (0,
101809
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101810
- 'span',
101811
- {
101812
- children:
101813
- 'Load a new texture from one of these sources:'
101814
- }
101815
- ),
101816
- /*#__PURE__*/ (0,
101817
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101818
- 'ul',
101819
- {
101820
- children: [
101821
- /*#__PURE__*/ (0,
101822
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101823
- 'li',
101824
- {
101825
- children: [
101826
- /*#__PURE__*/ (0,
101827
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101828
- 'span',
101829
- {
101830
- children:
101831
- 'From URL (and press Enter):'
101832
- }
101833
- ),
101834
- ' ',
101835
- /*#__PURE__*/ (0,
101836
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101837
- 'input',
101838
- {
101839
- type: 'text',
101840
- className: 'imageUrl',
101841
- value:
101842
- this.state.newUrl,
101843
- onChange:
101844
- this.onUrlChange,
101845
- onKeyUp: this.onNewUrl
101846
- }
101847
- )
101848
- ]
101849
- }
101850
- ),
101851
- /*#__PURE__*/ (0,
101852
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101853
- 'li',
101854
- {
101855
- children: [
101856
- /*#__PURE__*/ (0,
101857
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101858
- 'span',
101859
- {
101860
- children:
101861
- 'From assets registry: '
101862
- }
101863
- ),
101864
- /*#__PURE__*/ (0,
101865
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101866
- 'div',
101867
- {
101868
- className:
101869
- 'assets search',
101870
- children: [
101871
- /*#__PURE__*/ (0,
101872
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101873
- 'input',
101874
- {
101875
- placeholder:
101876
- 'Filter...',
101877
- value:
101878
- this.state
101879
- .filterText,
101880
- onChange:
101881
- this
101882
- .onChangeFilter
101883
- }
101884
- ),
101885
- /*#__PURE__*/ (0,
101886
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101887
- _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__.AwesomeIcon,
101888
- {
101889
- icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__.faSearch
101890
- }
101891
- )
101892
- ]
101893
- }
101894
- ),
101895
- /*#__PURE__*/ (0,
101896
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101897
- 'ul',
101898
- {
101899
- ref: this
101900
- .registryGallery,
101901
- className: 'gallery',
101902
- children:
101903
- this.renderRegistryImages()
101904
- }
101905
- )
101906
- ]
101907
- }
101908
- )
101909
- ]
101910
- }
101911
- )
101912
- ]
101913
- }
101914
- ),
101915
- /*#__PURE__*/ (0,
101916
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101917
- 'div',
101918
- {
101919
- className: 'preview',
101920
- children: [
101921
- 'Name:',
101922
- ' ',
101923
- /*#__PURE__*/ (0,
101924
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101925
- 'input',
101926
- {
101927
- ref: this.imageName,
101928
- className:
101929
- this.state.preview.name.length >
101930
- 0 && !validUrl
101931
- ? 'error'
101932
- : '',
101933
- type: 'text',
101934
- value: this.state.preview.name,
101935
- onChange: this.onNameChanged,
101936
- onKeyUp: this.onNameKeyUp
101937
- }
101938
- ),
101939
- /*#__PURE__*/ (0,
101940
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101941
- 'img',
101942
- {
101943
- ref: this.preview,
101944
- width: '155px',
101945
- height: '155px',
101946
- src: preview.src
101947
- }
101948
- ),
101949
- this.state.preview.loaded
101950
- ? /*#__PURE__*/ (0,
102291
+ }
102292
+ ),
102293
+ /*#__PURE__*/ (0,
102294
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102295
+ 'div',
102296
+ {
102297
+ className: addNewDialogOpened ? '' : 'hide',
102298
+ children: /*#__PURE__*/ (0,
102299
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102300
+ 'div',
102301
+ {
102302
+ className: 'newimage',
102303
+ children: [
102304
+ /*#__PURE__*/ (0,
102305
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102306
+ 'div',
102307
+ {
102308
+ className: 'new_asset_options',
102309
+ children: [
102310
+ /*#__PURE__*/ (0,
102311
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102312
+ 'div',
102313
+ {
102314
+ className: 'registry-section',
102315
+ children: [
102316
+ /*#__PURE__*/ (0,
102317
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102318
+ 'span',
102319
+ {
102320
+ className: 'section-label',
102321
+ children:
102322
+ 'Select from assets registry:'
102323
+ }
102324
+ ),
102325
+ /*#__PURE__*/ (0,
101951
102326
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101952
102327
  'div',
101953
102328
  {
101954
- className: 'detail',
102329
+ className: 'assets search',
101955
102330
  children: [
101956
102331
  /*#__PURE__*/ (0,
101957
102332
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101958
- 'span',
102333
+ 'input',
101959
102334
  {
101960
- className: 'title',
101961
- title: preview.filename,
101962
- children: preview.filename
102335
+ placeholder:
102336
+ 'Filter textures...',
102337
+ value: filterText,
102338
+ onChange:
102339
+ this.onChangeFilter
101963
102340
  }
101964
102341
  ),
101965
102342
  /*#__PURE__*/ (0,
101966
102343
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101967
- 'br',
101968
- {}
101969
- ),
101970
- /*#__PURE__*/ (0,
101971
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
101972
- 'span',
102344
+ _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__.AwesomeIcon,
101973
102345
  {
101974
- children: [
101975
- preview.width,
101976
- ' x ',
101977
- preview.height
101978
- ]
102346
+ icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_7__.faSearch
101979
102347
  }
101980
102348
  )
101981
102349
  ]
101982
102350
  }
101983
102351
  )
101984
- : /*#__PURE__*/ (0,
101985
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101986
- 'span',
101987
- {}
101988
- ),
101989
- /*#__PURE__*/ (0,
101990
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101991
- 'br',
101992
- {}
101993
- ),
102352
+ ]
102353
+ }
102354
+ ),
102355
+ /*#__PURE__*/ (0,
102356
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102357
+ 'div',
102358
+ {
102359
+ className: 'gallery',
102360
+ children: this.state.isGalleryLoading
102361
+ ? /*#__PURE__*/ (0,
102362
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102363
+ 'div',
102364
+ {
102365
+ className:
102366
+ 'loading-indicator',
102367
+ children:
102368
+ 'Loading textures...'
102369
+ }
102370
+ )
102371
+ : this.getFilteredRegistryImages().map(
102372
+ function (image) {
102373
+ return /*#__PURE__*/ (0,
102374
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102375
+ ImageItem,
102376
+ {
102377
+ image: image,
102378
+ onClick:
102379
+ function onClick() {
102380
+ return _this2.selectRegistryImage(
102381
+ image
102382
+ );
102383
+ }
102384
+ },
102385
+ image.src
102386
+ );
102387
+ }
102388
+ )
102389
+ }
102390
+ )
102391
+ ]
102392
+ }
102393
+ ),
102394
+ /*#__PURE__*/ (0,
102395
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102396
+ 'div',
102397
+ {
102398
+ className: 'preview',
102399
+ children: [
102400
+ /*#__PURE__*/ (0,
102401
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102402
+ 'span',
102403
+ {
102404
+ className: 'section-label',
102405
+ children: 'Name:'
102406
+ }
102407
+ ),
102408
+ /*#__PURE__*/ (0,
102409
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102410
+ 'input',
102411
+ {
102412
+ ref: this.imageName,
102413
+ className:
102414
+ preview.name.length > 0 && !validUrl
102415
+ ? 'error'
102416
+ : '',
102417
+ type: 'text',
102418
+ placeholder: 'Enter texture name',
102419
+ value: preview.name,
102420
+ onChange: this.onNameChanged,
102421
+ onKeyUp: this.onNameKeyUp
102422
+ }
102423
+ ),
102424
+ /*#__PURE__*/ (0,
102425
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102426
+ 'img',
102427
+ {
102428
+ ref: this.previewImg,
102429
+ width: '242px',
102430
+ height: '242px',
102431
+ src: preview.src,
102432
+ alt: 'Preview'
102433
+ }
102434
+ ),
102435
+ preview.loaded &&
101994
102436
  /*#__PURE__*/ (0,
101995
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
101996
- 'button',
101997
- {
101998
- disabled: !validAsset,
101999
- onClick: this.addNewAsset,
102000
- children: 'LOAD THIS TEXTURE'
102001
- }
102002
- )
102003
- ]
102004
- }
102005
- )
102006
- ]
102007
- }
102008
- )
102009
- }
102010
- ),
102011
- /*#__PURE__*/ (0,
102012
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102013
- 'div',
102014
- {
102015
- className: this.state.addNewDialogOpened
102016
- ? 'hide'
102017
- : '',
102018
- children: /*#__PURE__*/ (0,
102019
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102020
- 'ul',
102021
- {
102022
- className: 'gallery',
102023
- children: [
102024
- this.state.assetsImages
102025
- .sort(function (a, b) {
102026
- return a.id > b.id;
102027
- })
102028
- .map(
102029
- function (image) {
102030
- var textureClick =
102031
- this.selectTexture.bind(this, image);
102032
- var selectedClass =
102033
- this.props.selectedTexture ===
102034
- '#' + image.id
102035
- ? 'selected'
102036
- : '';
102037
- return /*#__PURE__*/ (0,
102038
102437
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102039
- 'li',
102438
+ 'div',
102040
102439
  {
102041
- onClick: textureClick,
102042
- className: selectedClass,
102440
+ className: 'detail',
102043
102441
  children: [
102044
102442
  /*#__PURE__*/ (0,
102045
102443
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102046
- 'img',
102444
+ 'span',
102047
102445
  {
102048
- width: '155px',
102049
- height: '155px',
102050
- src: image.src
102446
+ className: 'title',
102447
+ title: preview.filename,
102448
+ children: preview.filename
102051
102449
  }
102052
102450
  ),
102053
102451
  /*#__PURE__*/ (0,
102054
102452
  react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102055
- 'div',
102453
+ 'span',
102056
102454
  {
102057
- className: 'detail',
102455
+ className: 'dimensions',
102058
102456
  children: [
102059
- /*#__PURE__*/ (0,
102060
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102061
- 'span',
102062
- {
102063
- className: 'title',
102064
- children: image.name
102065
- }
102066
- ),
102067
- /*#__PURE__*/ (0,
102068
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102069
- 'span',
102070
- {
102071
- children: getFilename(
102072
- image.src
102073
- )
102074
- }
102075
- ),
102076
- /*#__PURE__*/ (0,
102077
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102078
- 'span',
102079
- {
102080
- children: [
102081
- image.width,
102082
- ' x ',
102083
- image.height
102084
- ]
102085
- }
102086
- )
102457
+ preview.width,
102458
+ ' x ',
102459
+ preview.height
102087
102460
  ]
102088
102461
  }
102089
102462
  )
102090
102463
  ]
102091
- },
102092
- image.id
102093
- );
102094
- }.bind(this)
102095
- ),
102096
- loadedTextures.map(function (texture) {
102097
- var image = texture.image;
102098
- var textureClick = this.selectTexture.bind(
102099
- this,
102100
- texture
102101
- );
102464
+ }
102465
+ ),
102466
+ /*#__PURE__*/ (0,
102467
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102468
+ 'button',
102469
+ {
102470
+ disabled: !validAsset || isLoading,
102471
+ onClick: this.addNewAsset,
102472
+ children: isLoading
102473
+ ? 'LOADING...'
102474
+ : 'LOAD THIS TEXTURE'
102475
+ }
102476
+ )
102477
+ ]
102478
+ }
102479
+ )
102480
+ ]
102481
+ }
102482
+ )
102483
+ }
102484
+ ),
102485
+ /*#__PURE__*/ (0,
102486
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102487
+ 'div',
102488
+ {
102489
+ className: addNewDialogOpened ? 'hide' : '',
102490
+ children: [
102491
+ /*#__PURE__*/ (0,
102492
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102493
+ 'div',
102494
+ {
102495
+ children: /*#__PURE__*/ (0,
102496
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102497
+ 'span',
102498
+ {
102499
+ className: 'section-label',
102500
+ children:
102501
+ 'Following are assets loaded in this project:'
102502
+ }
102503
+ )
102504
+ }
102505
+ ),
102506
+ /*#__PURE__*/ (0,
102507
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102508
+ 'div',
102509
+ {
102510
+ className: 'gallery',
102511
+ children: this.getSortedAssetImages().map(
102512
+ function (image) {
102102
102513
  return /*#__PURE__*/ (0,
102103
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102104
- 'li',
102514
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102515
+ ImageItem,
102105
102516
  {
102106
- onClick: textureClick,
102107
- children: [
102108
- /*#__PURE__*/ (0,
102109
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102110
- 'img',
102111
- {
102112
- width: '155px',
102113
- height: '155px',
102114
- src: image.src
102115
- }
102116
- ),
102117
- /*#__PURE__*/ (0,
102118
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102119
- 'div',
102120
- {
102121
- className: 'detail',
102122
- children: [
102123
- /*#__PURE__*/ (0,
102124
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102125
- 'span',
102126
- {
102127
- className: 'title',
102128
- children: 'Name:'
102129
- }
102130
- ),
102131
- ' ',
102132
- /*#__PURE__*/ (0,
102133
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102134
- 'span',
102135
- {
102136
- children: image.name
102137
- }
102138
- ),
102139
- /*#__PURE__*/ (0,
102140
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102141
- 'span',
102142
- {
102143
- className: 'title',
102144
- children: 'Filename:'
102145
- }
102146
- ),
102147
- ' ',
102148
- /*#__PURE__*/ (0,
102149
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
102150
- 'span',
102151
- {
102152
- children: getFilename(
102153
- image.src
102154
- )
102155
- }
102156
- ),
102157
- /*#__PURE__*/ (0,
102158
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
102159
- 'span',
102160
- {
102161
- children: [
102162
- image.width,
102163
- ' x ',
102164
- image.height
102165
- ]
102166
- }
102167
- )
102168
- ]
102169
- }
102170
- )
102171
- ]
102517
+ image: image,
102518
+ onClick: function onClick() {
102519
+ return _this2.selectTexture(image);
102520
+ },
102521
+ isSelected:
102522
+ selectedTexture === '#' + image.id
102172
102523
  },
102173
- texture.uuid
102524
+ image.id
102174
102525
  );
102175
- })
102176
- ]
102526
+ }
102527
+ )
102177
102528
  }
102178
102529
  )
102179
- }
102180
- )
102181
- ]
102182
- }
102183
- );
102184
- }
102185
- }
102186
- ],
102187
- [
102188
- {
102189
- key: 'getDerivedStateFromProps',
102190
- value: function getDerivedStateFromProps(props, state) {
102191
- if (state.isOpen !== props.isOpen) {
102192
- return {
102193
- isOpen: props.isOpen
102194
- };
102530
+ ]
102531
+ }
102532
+ )
102533
+ ]
102195
102534
  }
102196
- return null;
102197
- }
102535
+ );
102198
102536
  }
102199
- ]
102200
- );
102537
+ }
102538
+ ]);
102201
102539
  })(react__WEBPACK_IMPORTED_MODULE_0___default().Component);
102202
102540
  _defineProperty(ModalTextures, 'propTypes', {
102203
- isOpen: prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool,
102204
- onClose: prop_types__WEBPACK_IMPORTED_MODULE_7___default().func,
102541
+ isOpen: prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool,
102542
+ onClose: prop_types__WEBPACK_IMPORTED_MODULE_6___default().func,
102205
102543
  selectedTexture:
102206
- prop_types__WEBPACK_IMPORTED_MODULE_7___default().string
102544
+ prop_types__WEBPACK_IMPORTED_MODULE_6___default().string
102207
102545
  });
102208
102546
 
102209
102547
  /***/
@@ -102653,7 +102991,9 @@ object-assign
102653
102991
  isSelected: prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool,
102654
102992
  selectEntity: prop_types__WEBPACK_IMPORTED_MODULE_8___default().func,
102655
102993
  toggleExpandedCollapsed:
102656
- prop_types__WEBPACK_IMPORTED_MODULE_8___default().func
102994
+ prop_types__WEBPACK_IMPORTED_MODULE_8___default().func,
102995
+ onDragStart: prop_types__WEBPACK_IMPORTED_MODULE_8___default().func,
102996
+ onDrop: prop_types__WEBPACK_IMPORTED_MODULE_8___default().func
102657
102997
  });
102658
102998
 
102659
102999
  /***/
@@ -102898,6 +103238,11 @@ object-assign
102898
103238
  var _this;
102899
103239
  _classCallCheck(this, SceneGraph);
102900
103240
  _this = _callSuper(this, SceneGraph, [props]);
103241
+ _defineProperty(_this, 'handleEntityUpdate', function (detail) {
103242
+ if (detail.component === 'mixin') {
103243
+ _this.rebuildEntityOptions();
103244
+ }
103245
+ });
102901
103246
  _defineProperty(_this, 'selectEntity', function (entity) {
102902
103247
  var found = false;
102903
103248
  for (var i = 0; i < _this.state.filteredEntities.length; i++) {
@@ -103019,7 +103364,7 @@ object-assign
103019
103364
  if (!curr) {
103020
103365
  return false;
103021
103366
  }
103022
- while (curr !== undefined && curr.isEntity) {
103367
+ while (curr != null && curr.isEntity) {
103023
103368
  if (!_this.isExpanded(curr)) {
103024
103369
  return false;
103025
103370
  }
@@ -103041,7 +103386,7 @@ object-assign
103041
103386
  _defineProperty(_this, 'expandToRoot', function (x) {
103042
103387
  // Expand element all the way to the scene element
103043
103388
  var curr = x.parentNode;
103044
- while (curr !== undefined && curr.isEntity) {
103389
+ while (curr != null && curr.isEntity) {
103045
103390
  _this.state.expandedElements.set(curr, true);
103046
103391
  curr = curr.parentNode;
103047
103392
  }
@@ -103287,7 +103632,6 @@ object-assign
103287
103632
  {
103288
103633
  key: 'componentDidMount',
103289
103634
  value: function componentDidMount() {
103290
- var _this2 = this;
103291
103635
  this.rebuildEntityOptions();
103292
103636
  _lib_Events__WEBPACK_IMPORTED_MODULE_5__['default'].on(
103293
103637
  'entityidchange',
@@ -103303,11 +103647,7 @@ object-assign
103303
103647
  );
103304
103648
  _lib_Events__WEBPACK_IMPORTED_MODULE_5__['default'].on(
103305
103649
  'entityupdate',
103306
- function (detail) {
103307
- if (detail.component === 'mixin') {
103308
- _this2.rebuildEntityOptions();
103309
- }
103310
- }
103650
+ this.handleEntityUpdate
103311
103651
  );
103312
103652
 
103313
103653
  // Listen for DOM changes to keep Scenegraph in sync
@@ -103322,23 +103662,83 @@ object-assign
103322
103662
  );
103323
103663
  }
103324
103664
  }
103325
-
103326
- /**
103327
- * Selected entity updated from somewhere else in the app.
103328
- */
103329
103665
  },
103330
103666
  {
103331
- key: 'componentDidUpdate',
103332
- value: function componentDidUpdate(prevProps) {
103333
- if (prevProps.selectedEntity !== this.props.selectedEntity) {
103334
- this.selectEntity(this.props.selectedEntity);
103667
+ key: 'componentWillUnmount',
103668
+ value: function componentWillUnmount() {
103669
+ _lib_Events__WEBPACK_IMPORTED_MODULE_5__['default'].off(
103670
+ 'entityidchange',
103671
+ this.rebuildEntityOptions
103672
+ );
103673
+ _lib_Events__WEBPACK_IMPORTED_MODULE_5__['default'].off(
103674
+ 'entitycreated',
103675
+ this.rebuildEntityOptions
103676
+ );
103677
+ _lib_Events__WEBPACK_IMPORTED_MODULE_5__['default'].off(
103678
+ 'entityclone',
103679
+ this.rebuildEntityOptions
103680
+ );
103681
+ _lib_Events__WEBPACK_IMPORTED_MODULE_5__['default'].off(
103682
+ 'entityupdate',
103683
+ this.handleEntityUpdate
103684
+ );
103685
+ if (this.props.scene) {
103686
+ this.props.scene.removeEventListener(
103687
+ 'child-attached',
103688
+ this.rebuildEntityOptions
103689
+ );
103690
+ this.props.scene.removeEventListener(
103691
+ 'child-detached',
103692
+ this.rebuildEntityOptions
103693
+ );
103335
103694
  }
103336
103695
  }
103337
103696
  },
103697
+ {
103698
+ key: 'componentDidUpdate',
103699
+ value:
103700
+ /**
103701
+ * Selected entity or scene updated from somewhere else in the app.
103702
+ */
103703
+ function componentDidUpdate(prevProps) {
103704
+ if (prevProps.selectedEntity !== this.props.selectedEntity) {
103705
+ this.selectEntity(this.props.selectedEntity);
103706
+ }
103707
+
103708
+ // Scene element was replaced — re-attach DOM listeners.
103709
+ if (prevProps.scene !== this.props.scene) {
103710
+ if (prevProps.scene) {
103711
+ prevProps.scene.removeEventListener(
103712
+ 'child-attached',
103713
+ this.rebuildEntityOptions
103714
+ );
103715
+ prevProps.scene.removeEventListener(
103716
+ 'child-detached',
103717
+ this.rebuildEntityOptions
103718
+ );
103719
+ }
103720
+ if (this.props.scene) {
103721
+ this.props.scene.addEventListener(
103722
+ 'child-attached',
103723
+ this.rebuildEntityOptions
103724
+ );
103725
+ this.props.scene.addEventListener(
103726
+ 'child-detached',
103727
+ this.rebuildEntityOptions
103728
+ );
103729
+ }
103730
+ // Reset expanded state with new scene root.
103731
+ this.setState({
103732
+ expandedElements: new WeakMap([[this.props.scene, true]])
103733
+ });
103734
+ this.rebuildEntityOptions();
103735
+ }
103736
+ }
103737
+ },
103338
103738
  {
103339
103739
  key: 'getFilteredEntities',
103340
103740
  value: function getFilteredEntities(filter, entities) {
103341
- var _this3 = this;
103741
+ var _this2 = this;
103342
103742
  entities = entities || this.state.entities;
103343
103743
  if (!filter) {
103344
103744
  return entities;
@@ -103346,7 +103746,7 @@ object-assign
103346
103746
  return entities.filter(function (entityOption) {
103347
103747
  return filterEntity(
103348
103748
  entityOption.entity,
103349
- filter || _this3.state.filter
103749
+ filter || _this2.state.filter
103350
103750
  );
103351
103751
  });
103352
103752
  }
@@ -103461,15 +103861,23 @@ object-assign
103461
103861
  return true;
103462
103862
  }
103463
103863
 
103464
- // Check if the ID, tagName, class, selector includes the filter.
103864
+ // Check if the ID, tagName, class includes the filter.
103465
103865
  if (
103466
103866
  entity.id.toUpperCase().indexOf(filter.toUpperCase()) !== -1 ||
103467
103867
  entity.tagName.toUpperCase().indexOf(filter.toUpperCase()) !== -1 ||
103468
- entity.classList.contains(filter) ||
103469
- entity.matches(filter)
103868
+ entity.classList.contains(filter)
103470
103869
  ) {
103471
103870
  return true;
103472
103871
  }
103872
+
103873
+ // Try CSS selector match - wrapped in try-catch since invalid selectors throw
103874
+ try {
103875
+ if (entity.matches(filter)) {
103876
+ return true;
103877
+ }
103878
+ } catch (e) {
103879
+ // Invalid CSS selector, ignore
103880
+ }
103473
103881
  return false;
103474
103882
  }
103475
103883
 
@@ -103497,7 +103905,7 @@ object-assign
103497
103905
  /*#__PURE__*/ __webpack_require__.n(
103498
103906
  react__WEBPACK_IMPORTED_MODULE_0__
103499
103907
  );
103500
- /* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_5__ =
103908
+ /* harmony import */ var _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__ =
103501
103909
  __webpack_require__(
103502
103910
  /*! @fortawesome/free-solid-svg-icons */ './node_modules/@fortawesome/free-solid-svg-icons/index.mjs'
103503
103911
  );
@@ -103507,11 +103915,13 @@ object-assign
103507
103915
  );
103508
103916
  /* harmony import */ var _lib_Events__WEBPACK_IMPORTED_MODULE_2__ =
103509
103917
  __webpack_require__(/*! ../../lib/Events */ './src/lib/Events.js');
103510
- /* harmony import */ var _modals_ModalPrimitive__WEBPACK_IMPORTED_MODULE_3__ =
103918
+ /* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_3__ =
103919
+ __webpack_require__(/*! ../../lib/utils */ './src/lib/utils.js');
103920
+ /* harmony import */ var _modals_ModalPrimitive__WEBPACK_IMPORTED_MODULE_4__ =
103511
103921
  __webpack_require__(
103512
103922
  /*! ../modals/ModalPrimitive */ './src/components/modals/ModalPrimitive.js'
103513
103923
  );
103514
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ =
103924
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ =
103515
103925
  __webpack_require__(
103516
103926
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
103517
103927
  );
@@ -103651,8 +104061,6 @@ object-assign
103651
104061
  return ('string' === r ? String : Number)(t);
103652
104062
  }
103653
104063
 
103654
- // Import the new modal component
103655
-
103656
104064
  function filterHelpers(scene, visible) {
103657
104065
  scene.traverse(function (o) {
103658
104066
  if (o.userData.source === 'INSPECTOR') {
@@ -103748,7 +104156,10 @@ object-assign
103748
104156
  var blob = new Blob([buffer], {
103749
104157
  type: 'application/octet-stream'
103750
104158
  });
103751
- saveBlob(blob, sceneName + '.glb');
104159
+ (0, _lib_utils__WEBPACK_IMPORTED_MODULE_3__.saveBlob)(
104160
+ blob,
104161
+ sceneName + '.glb'
104162
+ );
103752
104163
  },
103753
104164
  function (error) {
103754
104165
  console.error(error);
@@ -103765,17 +104176,17 @@ object-assign
103765
104176
  // const watcherTitle = 'Write changes with aframe-watcher.'; // Keep or remove as needed
103766
104177
 
103767
104178
  return /*#__PURE__*/ (0,
103768
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)('div', {
104179
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)('div', {
103769
104180
  id: 'toolbar',
103770
104181
  children: [
103771
104182
  /*#__PURE__*/ (0,
103772
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(
104183
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
103773
104184
  'div',
103774
104185
  {
103775
104186
  className: 'toolbarActions',
103776
104187
  children: [
103777
104188
  /*#__PURE__*/ (0,
103778
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(
104189
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
103779
104190
  'a',
103780
104191
  {
103781
104192
  className: 'button',
@@ -103783,14 +104194,14 @@ object-assign
103783
104194
  onClick: this.toggleAddEntityModal, // Changed onClick handler
103784
104195
  children: [
103785
104196
  /*#__PURE__*/ (0,
103786
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
104197
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
103787
104198
  _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__.AwesomeIcon,
103788
104199
  {
103789
- icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_5__.faPlus
104200
+ icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__.faPlus
103790
104201
  }
103791
104202
  ),
103792
104203
  /*#__PURE__*/ (0,
103793
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
104204
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
103794
104205
  'span',
103795
104206
  {
103796
104207
  children: 'Add Entity'
@@ -103800,7 +104211,7 @@ object-assign
103800
104211
  }
103801
104212
  ),
103802
104213
  /*#__PURE__*/ (0,
103803
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
104214
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
103804
104215
  'a',
103805
104216
  {
103806
104217
  id: 'playPauseScene',
@@ -103811,19 +104222,19 @@ object-assign
103811
104222
  onClick: this.toggleScenePlaying,
103812
104223
  children: this.state.isPlaying
103813
104224
  ? /*#__PURE__*/ (0,
103814
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(
103815
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment,
104225
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
104226
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment,
103816
104227
  {
103817
104228
  children: [
103818
104229
  /*#__PURE__*/ (0,
103819
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
104230
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
103820
104231
  _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__.AwesomeIcon,
103821
104232
  {
103822
- icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_5__.faPause
104233
+ icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__.faPause
103823
104234
  }
103824
104235
  ),
103825
104236
  /*#__PURE__*/ (0,
103826
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
104237
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
103827
104238
  'span',
103828
104239
  {
103829
104240
  children: 'Pause Scene'
@@ -103833,19 +104244,19 @@ object-assign
103833
104244
  }
103834
104245
  )
103835
104246
  : /*#__PURE__*/ (0,
103836
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(
103837
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment,
104247
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(
104248
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment,
103838
104249
  {
103839
104250
  children: [
103840
104251
  /*#__PURE__*/ (0,
103841
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
104252
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
103842
104253
  _AwesomeIcon__WEBPACK_IMPORTED_MODULE_1__.AwesomeIcon,
103843
104254
  {
103844
- icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_5__.faPlay
104255
+ icon: _fortawesome_free_solid_svg_icons__WEBPACK_IMPORTED_MODULE_6__.faPlay
103845
104256
  }
103846
104257
  ),
103847
104258
  /*#__PURE__*/ (0,
103848
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
104259
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
103849
104260
  'span',
103850
104261
  {
103851
104262
  children: 'Play Scene'
@@ -103861,8 +104272,8 @@ object-assign
103861
104272
  ),
103862
104273
  this.state.isAddEntityModalOpen &&
103863
104274
  /*#__PURE__*/ (0,
103864
- react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(
103865
- _modals_ModalPrimitive__WEBPACK_IMPORTED_MODULE_3__[
104275
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(
104276
+ _modals_ModalPrimitive__WEBPACK_IMPORTED_MODULE_4__[
103866
104277
  'default'
103867
104278
  ],
103868
104279
  {
@@ -106424,10 +106835,19 @@ object-assign
106424
106835
  var assetId = insertOrGetImageAsset(image.src);
106425
106836
  value = '#' + assetId;
106426
106837
  }
106838
+
106839
+ // Only call onChange - it will update the entity which triggers
106840
+ // componentDidUpdate to sync our state. Don't call setValue here
106841
+ // as that would cause duplicate state updates and potential loops.
106427
106842
  if (_this.props.onChange) {
106428
106843
  _this.props.onChange(_this.props.name, value);
106429
106844
  }
106430
- _this.setValue(value);
106845
+
106846
+ // Update local state directly without triggering the full setValue flow
106847
+ // to update the preview immediately
106848
+ _this.setState({
106849
+ value: value
106850
+ });
106431
106851
  }
106432
106852
  );
106433
106853
  });
@@ -106449,6 +106869,7 @@ object-assign
106449
106869
  {
106450
106870
  key: 'componentDidUpdate',
106451
106871
  value: function componentDidUpdate(prevProps) {
106872
+ var _component$attrValue;
106452
106873
  var component =
106453
106874
  this.props.entity.components[this.props.componentname];
106454
106875
  if (!component) {
@@ -106456,11 +106877,14 @@ object-assign
106456
106877
  }
106457
106878
  // component.attrValue may be undefined if component is from a mixin
106458
106879
  var newValue =
106459
- component.attrValue && component.attrValue[this.props.name];
106880
+ (_component$attrValue = component.attrValue) === null ||
106881
+ _component$attrValue === void 0
106882
+ ? void 0
106883
+ : _component$attrValue[this.props.name];
106460
106884
 
106461
- // This will be triggered typically when the element is changed directly with element.setAttribute
106462
- // Compare with prevProps.value instead of this.state.value to avoid infinite loops
106463
- if (newValue && newValue !== prevProps.value) {
106885
+ // Only update if the new value differs from our current state
106886
+ // This prevents infinite loops when setValue triggers re-renders
106887
+ if (newValue && newValue !== this.state.value) {
106464
106888
  this.setValue(newValue);
106465
106889
  }
106466
106890
  }
@@ -106845,17 +107269,18 @@ object-assign
106845
107269
  return _createClass(Vec2Widget, [
106846
107270
  {
106847
107271
  key: 'componentDidUpdate',
106848
- value: function componentDidUpdate() {
106849
- var props = this.props;
107272
+ value: function componentDidUpdate(prevProps) {
107273
+ // Only update state if props.value actually changed from parent
107274
+ // Comparing to this.state would cause infinite loops when value objects are recreated
106850
107275
  if (
106851
107276
  !(0, _lib_utils__WEBPACK_IMPORTED_MODULE_2__.areVectorsEqual)(
106852
- props.value,
106853
- this.state
107277
+ this.props.value,
107278
+ prevProps.value
106854
107279
  )
106855
107280
  ) {
106856
107281
  this.setState({
106857
- x: props.value.x,
106858
- y: props.value.y
107282
+ x: this.props.value.x,
107283
+ y: this.props.value.y
106859
107284
  });
106860
107285
  }
106861
107286
  }
@@ -107147,18 +107572,19 @@ object-assign
107147
107572
  return _createClass(Vec3Widget, [
107148
107573
  {
107149
107574
  key: 'componentDidUpdate',
107150
- value: function componentDidUpdate() {
107151
- var props = this.props;
107575
+ value: function componentDidUpdate(prevProps) {
107576
+ // Only update state if props.value actually changed from parent
107577
+ // Comparing to this.state would cause infinite loops when value objects are recreated
107152
107578
  if (
107153
107579
  !(0, _lib_utils__WEBPACK_IMPORTED_MODULE_2__.areVectorsEqual)(
107154
- props.value,
107155
- this.state
107580
+ this.props.value,
107581
+ prevProps.value
107156
107582
  )
107157
107583
  ) {
107158
107584
  this.setState({
107159
- x: props.value.x,
107160
- y: props.value.y,
107161
- z: props.value.z
107585
+ x: this.props.value.x,
107586
+ y: this.props.value.y,
107587
+ z: this.props.value.z
107162
107588
  });
107163
107589
  }
107164
107590
  }
@@ -107462,19 +107888,20 @@ object-assign
107462
107888
  return _createClass(Vec4Widget, [
107463
107889
  {
107464
107890
  key: 'componentDidUpdate',
107465
- value: function componentDidUpdate() {
107466
- var props = this.props;
107891
+ value: function componentDidUpdate(prevProps) {
107892
+ // Only update state if props.value actually changed from parent
107893
+ // Comparing to this.state would cause infinite loops when value objects are recreated
107467
107894
  if (
107468
107895
  !(0, _lib_utils__WEBPACK_IMPORTED_MODULE_2__.areVectorsEqual)(
107469
- props.value,
107470
- this.state
107896
+ this.props.value,
107897
+ prevProps.value
107471
107898
  )
107472
107899
  ) {
107473
107900
  this.setState({
107474
- x: props.value.x,
107475
- y: props.value.y,
107476
- z: props.value.z,
107477
- w: props.value.w
107901
+ x: this.props.value.x,
107902
+ y: this.props.value.y,
107903
+ z: this.props.value.z,
107904
+ w: this.props.value.w
107478
107905
  });
107479
107906
  }
107480
107907
  }
@@ -109628,6 +110055,7 @@ object-assign
109628
110055
  var assetsRelativeUrl = {
109629
110056
  images: 'dist/images.json'
109630
110057
  };
110058
+ var collectionAssetsRoot = window.COLLECTION_ASSETS_ROOT;
109631
110059
 
109632
110060
  /**
109633
110061
  * Asynchronously load and register components from the registry.
@@ -109642,6 +110070,10 @@ object-assign
109642
110070
  */
109643
110071
  load: function load() {
109644
110072
  var _this = this;
110073
+ if (collectionAssetsRoot) {
110074
+ this.loadCollection();
110075
+ return;
110076
+ }
109645
110077
  var xhr = new XMLHttpRequest();
109646
110078
  var url = assetsBaseUrl + assetsRelativeUrl.images;
109647
110079
 
@@ -109668,6 +110100,64 @@ object-assign
109668
110100
  };
109669
110101
  xhr.send();
109670
110102
  this.hasLoaded = true;
110103
+ },
110104
+ /**
110105
+ * XHR the collection assets JSON.
110106
+ */
110107
+ loadCollection: function loadCollection() {
110108
+ var _this2 = this;
110109
+ if (!collectionAssetsRoot) return;
110110
+ var xhr = new XMLHttpRequest();
110111
+ xhr.open('GET', collectionAssetsRoot);
110112
+ xhr.onload = function () {
110113
+ try {
110114
+ var data = JSON.parse(xhr.responseText);
110115
+ if (Array.isArray(data)) {
110116
+ // Clear all existing assets including those loaded from load()
110117
+ _this2.images = [];
110118
+ data.forEach(function (item) {
110119
+ // Extract filename from URL to use as ID
110120
+ var filename = item.src.split('/').pop() || '';
110121
+ var id =
110122
+ filename
110123
+ .split('.')
110124
+ .shift()
110125
+ .replace(/\s/, '-')
110126
+ .replace(/^\d+\s*/, '')
110127
+ .replace(/[\W]/, '')
110128
+ .toLowerCase() ||
110129
+ 'img' + Math.floor(Math.random() * 10000);
110130
+ var isDuplicate = _this2.images.some(
110131
+ function (existingImage) {
110132
+ return (
110133
+ existingImage.id === id ||
110134
+ existingImage.fullPath === item.src
110135
+ );
110136
+ }
110137
+ );
110138
+ if (!isDuplicate) {
110139
+ _this2.images.push({
110140
+ id: id,
110141
+ fullPath: item.src,
110142
+ fullThumbPath: item.src,
110143
+ tags: []
110144
+ });
110145
+ }
110146
+ });
110147
+ _Events__WEBPACK_IMPORTED_MODULE_0__['default'].emit(
110148
+ 'assetsimagesload',
110149
+ _this2.images
110150
+ );
110151
+ }
110152
+ } catch (e) {
110153
+ console.error('Error parsing collection file.', e);
110154
+ }
110155
+ };
110156
+ xhr.onerror = function () {
110157
+ console.error('Error loading collection file.');
110158
+ };
110159
+ xhr.send();
110160
+ this.hasLoaded = true;
109671
110161
  }
109672
110162
  };
109673
110163
 
@@ -109695,7 +110185,8 @@ object-assign
109695
110185
  id,
109696
110186
  src,
109697
110187
  anonymousCrossOrigin,
109698
- onLoadedCallback
110188
+ onLoadedCallback,
110189
+ onErrorCallback
109699
110190
  ) {
109700
110191
  var element = null;
109701
110192
  switch (type) {
@@ -109716,7 +110207,26 @@ object-assign
109716
110207
  onLoadedCallback();
109717
110208
  }
109718
110209
  };
109719
- document.getElementsByTagName('a-assets')[0].appendChild(element);
110210
+ element.onerror = function (error) {
110211
+ console.warn('Failed to load asset: '.concat(src), error);
110212
+ if (onErrorCallback) {
110213
+ onErrorCallback(error);
110214
+ }
110215
+ };
110216
+
110217
+ // Get or create the a-assets container
110218
+ var assetsContainer = document.querySelector('a-assets');
110219
+ if (!assetsContainer) {
110220
+ assetsContainer = document.createElement('a-assets');
110221
+ var scene = document.querySelector('a-scene');
110222
+ if (scene) {
110223
+ scene.insertBefore(assetsContainer, scene.firstChild);
110224
+ } else {
110225
+ console.warn('No a-scene found to insert a-assets');
110226
+ return;
110227
+ }
110228
+ }
110229
+ assetsContainer.appendChild(element);
109720
110230
  }
109721
110231
  }
109722
110232
 
@@ -110697,6 +111207,20 @@ object-assign
110697
111207
  'dblclick',
110698
111208
  onDoubleClick
110699
111209
  );
111210
+ },
111211
+ destroy: function destroy() {
111212
+ mouseCursor.removeEventListener('click', handleClick);
111213
+ mouseCursor.removeEventListener('mouseenter', onMouseEnter);
111214
+ mouseCursor.removeEventListener('mouseleave', onMouseLeave);
111215
+ inspector.container.removeEventListener('mousedown', onMouseDown);
111216
+ inspector.container.removeEventListener('mouseup', onMouseUp);
111217
+ inspector.container.removeEventListener(
111218
+ 'dblclick',
111219
+ onDoubleClick
111220
+ );
111221
+ if (mouseCursor.parentNode) {
111222
+ mouseCursor.parentNode.removeChild(mouseCursor);
111223
+ }
110700
111224
  }
110701
111225
  };
110702
111226
  }
@@ -111138,6 +111662,7 @@ object-assign
111138
111662
  // Expect v1 and v2 to take format {x: number, y: number, z: number, w:number}
111139
111663
  // Smaller vectors (ie. vec2) should work as well since their z & w vals will be the same (undefined)
111140
111664
  function areVectorsEqual(v1, v2) {
111665
+ if (!v1 || !v2) return v1 === v2;
111141
111666
  return (
111142
111667
  Object.is(v1.x, v2.x) &&
111143
111668
  Object.is(v1.y, v2.y) &&
@@ -111282,10 +111807,16 @@ object-assign
111282
111807
  _Events__WEBPACK_IMPORTED_MODULE_3__['default'].on(
111283
111808
  'entityupdate',
111284
111809
  function (detail) {
111810
+ var _inspector$selectedEn;
111285
111811
  var object = detail.entity.object3D;
111286
111812
  if (
111287
111813
  inspector.selected === object &&
111288
- inspector.selectedEntity.object3DMap.mesh
111814
+ (_inspector$selectedEn = inspector.selectedEntity) !== null &&
111815
+ _inspector$selectedEn !== void 0 &&
111816
+ (_inspector$selectedEn = _inspector$selectedEn.object3DMap) !==
111817
+ null &&
111818
+ _inspector$selectedEn !== void 0 &&
111819
+ _inspector$selectedEn.mesh
111289
111820
  ) {
111290
111821
  selectionBox.setFromObject(inspector.selected);
111291
111822
  }
@@ -111759,19 +112290,23 @@ object-assign
111759
112290
  );
111760
112291
  /* harmony import */ var _lib_shortcuts__WEBPACK_IMPORTED_MODULE_4__ =
111761
112292
  __webpack_require__(/*! ./lib/shortcuts */ './src/lib/shortcuts.js');
111762
- /* harmony import */ var _components_Main__WEBPACK_IMPORTED_MODULE_5__ =
112293
+ /* harmony import */ var _components_ErrorBoundary__WEBPACK_IMPORTED_MODULE_5__ =
112294
+ __webpack_require__(
112295
+ /*! ./components/ErrorBoundary */ './src/components/ErrorBoundary.js'
112296
+ );
112297
+ /* harmony import */ var _components_Main__WEBPACK_IMPORTED_MODULE_6__ =
111763
112298
  __webpack_require__(/*! ./components/Main */ './src/components/Main.js');
111764
- /* harmony import */ var _lib_cameras__WEBPACK_IMPORTED_MODULE_6__ =
112299
+ /* harmony import */ var _lib_cameras__WEBPACK_IMPORTED_MODULE_7__ =
111765
112300
  __webpack_require__(/*! ./lib/cameras */ './src/lib/cameras.js');
111766
- /* harmony import */ var _lib_entity__WEBPACK_IMPORTED_MODULE_7__ =
112301
+ /* harmony import */ var _lib_entity__WEBPACK_IMPORTED_MODULE_8__ =
111767
112302
  __webpack_require__(/*! ./lib/entity */ './src/lib/entity.js');
111768
- /* harmony import */ var three_addons_exporters_GLTFExporter__WEBPACK_IMPORTED_MODULE_10__ =
112303
+ /* harmony import */ var three_addons_exporters_GLTFExporter__WEBPACK_IMPORTED_MODULE_11__ =
111769
112304
  __webpack_require__(
111770
112305
  /*! three/addons/exporters/GLTFExporter */ './node_modules/three/examples/jsm/exporters/GLTFExporter.js'
111771
112306
  );
111772
- /* harmony import */ var _style_index_styl__WEBPACK_IMPORTED_MODULE_8__ =
112307
+ /* harmony import */ var _style_index_styl__WEBPACK_IMPORTED_MODULE_9__ =
111773
112308
  __webpack_require__(/*! ./style/index.styl */ './src/style/index.styl');
111774
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ =
112309
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ =
111775
112310
  __webpack_require__(
111776
112311
  /*! react/jsx-runtime */ './node_modules/react/jsx-runtime.js'
111777
112312
  );
@@ -111781,7 +112316,7 @@ object-assign
111781
112316
  this.assetsLoader =
111782
112317
  new _lib_assetsLoader__WEBPACK_IMPORTED_MODULE_3__.AssetsLoader();
111783
112318
  this.exporters = {
111784
- gltf: new three_addons_exporters_GLTFExporter__WEBPACK_IMPORTED_MODULE_10__.GLTFExporter()
112319
+ gltf: new three_addons_exporters_GLTFExporter__WEBPACK_IMPORTED_MODULE_11__.GLTFExporter()
111785
112320
  };
111786
112321
  this.history = __webpack_require__(
111787
112322
  /*! ./lib/history */ './src/lib/history.js'
@@ -111826,7 +112361,7 @@ object-assign
111826
112361
  return;
111827
112362
  }
111828
112363
  this.container = document.querySelector('.a-canvas');
111829
- (0, _lib_cameras__WEBPACK_IMPORTED_MODULE_6__.initCameras)(this);
112364
+ (0, _lib_cameras__WEBPACK_IMPORTED_MODULE_7__.initCameras)(this);
111830
112365
  this.initUI();
111831
112366
  },
111832
112367
  initUI: function initUI() {
@@ -111843,9 +112378,16 @@ object-assign
111843
112378
  var root = (0,
111844
112379
  react_dom_client__WEBPACK_IMPORTED_MODULE_0__.createRoot)(div);
111845
112380
  root.render(
111846
- /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(
111847
- _components_Main__WEBPACK_IMPORTED_MODULE_5__['default'],
111848
- {}
112381
+ /*#__PURE__*/ (0,
112382
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
112383
+ _components_ErrorBoundary__WEBPACK_IMPORTED_MODULE_5__['default'],
112384
+ {
112385
+ children: /*#__PURE__*/ (0,
112386
+ react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(
112387
+ _components_Main__WEBPACK_IMPORTED_MODULE_6__['default'],
112388
+ {}
112389
+ )
112390
+ }
111849
112391
  )
111850
112392
  );
111851
112393
  this.scene = this.sceneEl.object3D;
@@ -111907,7 +112449,7 @@ object-assign
111907
112449
  delete _this4.helpers[node.uuid];
111908
112450
  _lib_Events__WEBPACK_IMPORTED_MODULE_1__['default'].emit(
111909
112451
  'helperremove',
111910
- _this4.helpers[node.uuid]
112452
+ helper
111911
112453
  );
111912
112454
  }
111913
112455
  });
@@ -111969,7 +112511,7 @@ object-assign
111969
112511
  _lib_Events__WEBPACK_IMPORTED_MODULE_1__['default'].on(
111970
112512
  'entitycreate',
111971
112513
  function (definition) {
111972
- (0, _lib_entity__WEBPACK_IMPORTED_MODULE_7__.createEntity)(
112514
+ (0, _lib_entity__WEBPACK_IMPORTED_MODULE_8__.createEntity)(
111973
112515
  definition,
111974
112516
  function (entity) {
111975
112517
  _this6.selectEntity(entity);
@@ -112057,6 +112599,119 @@ object-assign
112057
112599
  }
112058
112600
  this.isFirstOpen = false;
112059
112601
  },
112602
+ /**
112603
+ * Reload the inspector UI to reflect current scene HTML.
112604
+ * Call this after programmatically modifying the scene DOM.
112605
+ */
112606
+ reload: function reload() {
112607
+ var _this7 = this;
112608
+ // Deselect current entity.
112609
+ this.selectEntity(null);
112610
+
112611
+ // Clear all existing helpers.
112612
+ for (var id in this.helpers) {
112613
+ var helper = this.helpers[id];
112614
+ this.sceneHelpers.remove(helper);
112615
+ if (helper.dispose) {
112616
+ helper.dispose();
112617
+ }
112618
+ }
112619
+ this.helpers = {};
112620
+
112621
+ // Remove old sceneHelpers from old scene.
112622
+ if (this.scene && this.sceneHelpers.parent) {
112623
+ this.scene.remove(this.sceneHelpers);
112624
+ }
112625
+
112626
+ // Poll for new scene to register in AFRAME.scenes.
112627
+ var _waitForScene = function waitForScene() {
112628
+ var newSceneEl = AFRAME.scenes[0];
112629
+ if (!newSceneEl) {
112630
+ setTimeout(_waitForScene, 100);
112631
+ return;
112632
+ }
112633
+ _this7.sceneEl = newSceneEl;
112634
+ var _onReady = function onReady() {
112635
+ // Wait for camera too.
112636
+ if (!_this7.sceneEl.camera) {
112637
+ _this7.sceneEl.addEventListener(
112638
+ 'camera-set-active',
112639
+ function () {
112640
+ return _onReady();
112641
+ },
112642
+ {
112643
+ once: true
112644
+ }
112645
+ );
112646
+ return;
112647
+ }
112648
+
112649
+ // Re-acquire container (new scene creates new canvas).
112650
+ _this7.container = document.querySelector('.a-canvas');
112651
+
112652
+ // Re-init cameras for new scene.
112653
+ (0, _lib_cameras__WEBPACK_IMPORTED_MODULE_7__.initCameras)(_this7);
112654
+
112655
+ // Refresh scene object3D reference.
112656
+ _this7.scene = _this7.sceneEl.object3D;
112657
+
112658
+ // Re-create sceneHelpers in new scene.
112659
+ _this7.sceneHelpers = new THREE.Scene();
112660
+ _this7.sceneHelpers.userData.source = 'INSPECTOR';
112661
+ _this7.sceneHelpers.visible = true;
112662
+ _this7.scene.add(_this7.sceneHelpers);
112663
+
112664
+ // Re-init viewport (transform controls, editor controls, raycaster).
112665
+ _this7.viewport =
112666
+ new _lib_viewport__WEBPACK_IMPORTED_MODULE_2__.Viewport(_this7);
112667
+
112668
+ // Rebuild helpers from new entities.
112669
+ _this7.sceneEl.object3D.traverse(function (node) {
112670
+ _this7.addHelper(node);
112671
+ });
112672
+
112673
+ // Notify React components to update scene reference.
112674
+ _lib_Events__WEBPACK_IMPORTED_MODULE_1__['default'].emit(
112675
+ 'scenereload',
112676
+ _this7.sceneEl
112677
+ );
112678
+
112679
+ // Notify React components to rebuild scenegraph.
112680
+ _lib_Events__WEBPACK_IMPORTED_MODULE_1__['default'].emit(
112681
+ 'entitycreated'
112682
+ );
112683
+
112684
+ // Enter inspector edit mode on new scene.
112685
+ _this7.opened = true;
112686
+ _lib_Events__WEBPACK_IMPORTED_MODULE_1__['default'].emit(
112687
+ 'inspectortoggle',
112688
+ true
112689
+ );
112690
+ document.body.classList.add('aframe-inspector-opened');
112691
+ _this7.sceneEl.resize();
112692
+ _this7.sceneEl.pause();
112693
+ _this7.sceneEl.isPlaying = true;
112694
+ _this7.cursor.play();
112695
+ _lib_shortcuts__WEBPACK_IMPORTED_MODULE_4__.Shortcuts.enable();
112696
+ };
112697
+ if (_this7.sceneEl.hasLoaded) {
112698
+ _onReady();
112699
+ } else {
112700
+ _this7.sceneEl.addEventListener(
112701
+ 'loaded',
112702
+ function () {
112703
+ return _onReady();
112704
+ },
112705
+ {
112706
+ once: true
112707
+ }
112708
+ );
112709
+ }
112710
+ };
112711
+
112712
+ // Start polling (small delay to let DOM settle after replaceWith).
112713
+ setTimeout(_waitForScene, 50);
112714
+ },
112060
112715
  /**
112061
112716
  * Closes the editor and gives the control back to the scene
112062
112717
  * @return {[type]} [description]