@needle-tools/engine 2.35.3-pre → 2.35.5-pre

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 (63) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/needle-engine.d.ts +58 -34
  3. package/dist/needle-engine.js +394 -343
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +96 -45
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/api.d.ts +3 -0
  8. package/lib/engine/api.js +3 -0
  9. package/lib/engine/api.js.map +1 -1
  10. package/lib/engine/debug/debug.d.ts +3 -0
  11. package/lib/engine/debug/debug.js +8 -0
  12. package/lib/engine/debug/debug.js.map +1 -0
  13. package/lib/engine/debug/debug_overlay.d.ts +7 -0
  14. package/lib/engine/debug/debug_overlay.js +202 -0
  15. package/lib/engine/debug/debug_overlay.js.map +1 -0
  16. package/lib/engine/engine.js +1 -1
  17. package/lib/engine/engine.js.map +1 -1
  18. package/lib/engine/engine_element_loading.js +19 -8
  19. package/lib/engine/engine_element_loading.js.map +1 -1
  20. package/lib/engine/engine_networking.js +4 -0
  21. package/lib/engine/engine_networking.js.map +1 -1
  22. package/lib/engine/engine_networking_utils.d.ts +1 -0
  23. package/lib/engine/engine_networking_utils.js +3 -0
  24. package/lib/engine/engine_networking_utils.js.map +1 -1
  25. package/lib/engine/engine_serialization_core.js +35 -0
  26. package/lib/engine/engine_serialization_core.js.map +1 -1
  27. package/lib/engine/engine_types.d.ts +5 -1
  28. package/lib/engine/engine_types.js.map +1 -1
  29. package/lib/engine/extensions/NEEDLE_render_objects.d.ts +2 -2
  30. package/lib/engine/extensions/NEEDLE_render_objects.js +2 -2
  31. package/lib/engine/extensions/NEEDLE_render_objects.js.map +1 -1
  32. package/lib/engine-components/AudioSource.d.ts +1 -1
  33. package/lib/engine-components/AudioSource.js +2 -2
  34. package/lib/engine-components/AudioSource.js.map +1 -1
  35. package/lib/engine-components/Component.js +4 -2
  36. package/lib/engine-components/Component.js.map +1 -1
  37. package/lib/engine-components/Renderer.d.ts +8 -3
  38. package/lib/engine-components/Renderer.js +9 -1
  39. package/lib/engine-components/Renderer.js.map +1 -1
  40. package/lib/engine-components/WebXRController.js +6 -2
  41. package/lib/engine-components/WebXRController.js.map +1 -1
  42. package/lib/engine-components/js-extensions/ExtensionUtils.js +1 -1
  43. package/lib/engine-components/js-extensions/ExtensionUtils.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/engine/api.ts +3 -0
  46. package/src/engine/debug/debug.ts +9 -0
  47. package/src/engine/debug/debug_overlay.ts +217 -0
  48. package/src/engine/engine.ts +1 -1
  49. package/src/engine/engine_element_loading.ts +20 -9
  50. package/src/engine/engine_networking.ts +7 -3
  51. package/src/engine/engine_networking_utils.ts +4 -0
  52. package/src/engine/engine_serialization_core.ts +34 -0
  53. package/src/engine/engine_types.ts +6 -1
  54. package/src/engine/extensions/NEEDLE_render_objects.ts +4 -4
  55. package/src/engine-components/AudioSource.ts +3 -3
  56. package/src/engine-components/Component.ts +4 -2
  57. package/src/engine-components/Renderer.ts +737 -724
  58. package/src/engine-components/WebXRController.ts +6 -2
  59. package/src/engine-components/js-extensions/ExtensionUtils.ts +1 -1
  60. package/lib/engine/debug/error_overlay.d.ts +0 -1
  61. package/lib/engine/debug/error_overlay.js +0 -114
  62. package/lib/engine/debug/error_overlay.js.map +0 -1
  63. package/src/engine/debug/error_overlay.ts +0 -126
@@ -13,7 +13,7 @@ import * as utils from "../engine/engine_three_utils"
13
13
  import { Interactable, UsageMarker } from "./Interactable";
14
14
  import { InstancingUtil } from "../engine/engine_instancing";
15
15
  import { Rigidbody } from "./RigidBody";
16
- import { delay, getParam } from "../engine/engine_utils";
16
+ import { delay, getParam, getPath } from "../engine/engine_utils";
17
17
  import { UIRaycastUtils } from "./ui/RaycastUtils";
18
18
  import { RaycastResult } from "cannon-es";
19
19
 
@@ -79,7 +79,9 @@ export class WebXRController extends Behaviour {
79
79
  ctrl.controllerGrip.add(ctrl.controllerModel);
80
80
 
81
81
  ctrl.hand = context.renderer.xr.getHand(index);
82
- ctrl.hand.add(new OculusHandModel(ctrl.hand));
82
+ const hand = new OculusHandModel(ctrl.hand);
83
+ hand["path"] = "/" + getPath(owner.sourceId, "/assets/");
84
+ ctrl.hand.add(hand);
83
85
  ctrl.hand.traverse(x => x.layers.set(2));
84
86
 
85
87
  ctrl.handPointerModel = new OculusHandPointerModel(ctrl.hand, ctrl.controller);
@@ -800,6 +802,8 @@ export class AttachedObject {
800
802
  console.warn("Prevented taking object that is not interactable", candidate);
801
803
  return null;
802
804
  }
805
+ else candidate = interactable.gameObject;
806
+
803
807
 
804
808
  let objectToAttach = candidate;
805
809
  const sync = GameObject.getComponentInParent(candidate, SyncedTransform);
@@ -20,7 +20,7 @@ export function applyPrototypeExtensions<T>(obj: any, prototype : Constructor<T>
20
20
  }
21
21
 
22
22
  export function registerPrototypeExtensions<T>(type: Constructor<T>) {
23
- console.log("Register", type.prototype.constructor.name);
23
+ // console.log("Register", type.prototype.constructor.name);
24
24
  const handler = createPrototypeExtensionHandler(type.prototype);
25
25
  handlers.set(type, handler);
26
26
  }
@@ -1 +0,0 @@
1
- export declare function makeErrorsVisibleForDevelopment(): void;
@@ -1,114 +0,0 @@
1
- import { getParam } from "../engine_utils";
2
- import { isLocalNetwork } from "../engine_networking_utils";
3
- import { Context } from "../engine_setup";
4
- import { arContainerClassName } from "../engine_element_overlay";
5
- const debug = getParam("debugdebug");
6
- const hide = getParam("noerrors");
7
- const errorContainer = new Map();
8
- const locationRegex = new RegExp(" at .+\/(.+?\.ts)", "g");
9
- var LogType;
10
- (function (LogType) {
11
- LogType[LogType["Log"] = 0] = "Log";
12
- LogType[LogType["Warn"] = 1] = "Warn";
13
- LogType[LogType["Error"] = 2] = "Error";
14
- })(LogType || (LogType = {}));
15
- export function makeErrorsVisibleForDevelopment() {
16
- if (hide)
17
- return;
18
- if (isLocalNetwork()) {
19
- if (debug)
20
- console.log(window.location.hostname);
21
- const error = console.error;
22
- console.error = (...args) => {
23
- error.apply(console, args);
24
- handleLog(LogType.Error, args, null, null);
25
- };
26
- window.addEventListener("error", (event) => {
27
- if (!event)
28
- return;
29
- handleLog(LogType.Error, event.error, event.filename, event.lineno);
30
- });
31
- }
32
- }
33
- function handleLog(type, message, _file, _line) {
34
- const context = Context.Current;
35
- if (type === LogType.Error) {
36
- const domElement = context?.domElement ?? document.querySelector("needle-engine");
37
- if (!domElement)
38
- return;
39
- if (Array.isArray(message)) {
40
- message = message.join(" ");
41
- }
42
- appendErrorMessageToDomElement(domElement, message);
43
- }
44
- }
45
- function getLocation(err) {
46
- const location = err.stack;
47
- console.log(location);
48
- if (location) {
49
- locationRegex.exec(location);
50
- const match = locationRegex.exec(location);
51
- return match ? match[1] : "";
52
- }
53
- return "";
54
- }
55
- function getErrorContainer(domElement) {
56
- if (errorContainer.has(domElement)) {
57
- return errorContainer.get(domElement);
58
- }
59
- else {
60
- const container = document.createElement("div");
61
- container.classList.add(arContainerClassName);
62
- container.classList.add("desktop");
63
- container.style.position = "absolute";
64
- container.style.top = "0";
65
- container.style.left = "0";
66
- container.style.margin = "5px";
67
- container.style.width = "calc(100% - 10px)";
68
- container.style.zIndex = "1000";
69
- container.style.pointerEvents = "none";
70
- container.style.display = "flex";
71
- container.style.alignItems = "end";
72
- container.style.flexDirection = "column";
73
- container.style.color = "white";
74
- container.style.overflow = "auto";
75
- domElement.appendChild(container);
76
- errorContainer.set(domElement, container);
77
- return container;
78
- }
79
- }
80
- function appendErrorMessageToDomElement(element, msg, location) {
81
- const container = getErrorContainer(element);
82
- if (container.childElementCount >= 5) {
83
- return;
84
- }
85
- const errorElement = document.createElement("div");
86
- container.appendChild(errorElement);
87
- errorElement.style.display = "flex";
88
- errorElement.style.alignItems = "start";
89
- errorElement.style.flexDirection = "row";
90
- // errorElement.style.justifyContent = "space-between";
91
- // errorElement.style.width = "100%";
92
- errorElement.style.padding = ".2em";
93
- errorElement.style.backgroundColor = "rgba(0,0,0,1)";
94
- errorElement.style.marginBottom = "2px";
95
- errorElement.style.borderRadius = "8px";
96
- errorElement.style.color = "#ff5555";
97
- errorElement.style.fontWeight = "bold";
98
- errorElement.title = "Open developer console to debug";
99
- errorElement.style.pointerEvents = "all";
100
- errorElement.style.userSelect = "text";
101
- const messageElement = document.createElement("div");
102
- const locationElement = document.createElement("div");
103
- errorElement.appendChild(messageElement);
104
- errorElement.appendChild(locationElement);
105
- if (msg.length > 200) {
106
- msg = msg.substring(0, 200) + "...";
107
- }
108
- messageElement.innerText = msg; // "Javascript error: please open the browser developer console to debug";// + msg;
109
- locationElement.innerText = location || "";
110
- setTimeout(() => {
111
- container.removeChild(errorElement);
112
- }, 10000);
113
- }
114
- //# sourceMappingURL=error_overlay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error_overlay.js","sourceRoot":"","sources":["../../../../engine/debug/error_overlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAElC,MAAM,cAAc,GAAkC,IAAI,GAAG,EAAE,CAAC;AAChE,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;AAE9D,IAAK,OAIJ;AAJD,WAAK,OAAO;IACR,mCAAG,CAAA;IACH,qCAAI,CAAA;IACJ,uCAAK,CAAA;AACT,CAAC,EAJI,OAAO,KAAP,OAAO,QAIX;AAED,MAAM,UAAU,+BAA+B;IAC3C,IAAI,IAAI;QAAE,OAAO;IACjB,IAAI,cAAc,EAAE,EAAE;QAClB,IAAI,KAAK;YACL,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;YAC/B,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3B,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;KACN;AACL,CAAC;AAID,SAAS,SAAS,CAAC,IAAa,EAAE,OAAuB,EAAE,KAAoB,EAAE,KAAoB;IAEjG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;QACxB,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAClF,IAAG,CAAC,UAAU;YAAE,OAAO;QACvB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;QACD,8BAA8B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;KACvD;AACL,CAAC;AAID,SAAS,WAAW,CAAC,GAAU;IAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,IAAI,QAAQ,EAAE;QACV,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAID,SAAS,iBAAiB,CAAC,UAAuB;IAC9C,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QAChC,OAAO,cAAc,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;KAC1C;SAAM;QACH,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC9C,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAC1B,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QAC3B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QAC/B,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,mBAAmB,CAAC;QAC5C,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QACvC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;QACnC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;QACzC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QAClC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAGD,SAAS,8BAA8B,CAAC,OAAoB,EAAE,GAAW,EAAE,QAAiB;IACxF,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,SAAS,CAAC,iBAAiB,IAAI,CAAC,EAAE;QAClC,OAAO;KACV;IACD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACnD,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACpC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACpC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;IACxC,YAAY,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;IACzC,uDAAuD;IACvD,qCAAqC;IACrC,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IACpC,YAAY,CAAC,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC;IACrD,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACxC,YAAY,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IACxC,YAAY,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACrC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IACvC,YAAY,CAAC,KAAK,GAAG,iCAAiC,CAAC;IACvD,YAAY,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;IACzC,YAAY,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAEvC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,YAAY,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACzC,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;QAClB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;KACvC;IACD,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC,CAAA,mFAAmF;IAClH,eAAe,CAAC,SAAS,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC3C,UAAU,CAAC,GAAG,EAAE;QACZ,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC,EAAE,KAAK,CAAC,CAAC;AACd,CAAC"}
@@ -1,126 +0,0 @@
1
- import { getParam } from "../engine_utils";
2
- import { isLocalNetwork } from "../engine_networking_utils";
3
- import { Context } from "../engine_setup";
4
- import { arContainerClassName } from "../engine_element_overlay";
5
-
6
- const debug = getParam("debugdebug");
7
- const hide = getParam("noerrors");
8
-
9
- const errorContainer: Map<HTMLElement, HTMLElement> = new Map();
10
- const locationRegex = new RegExp(" at .+\/(.+?\.ts)", "g");
11
-
12
- enum LogType {
13
- Log,
14
- Warn,
15
- Error
16
- }
17
-
18
- export function makeErrorsVisibleForDevelopment() {
19
- if (hide) return;
20
- if (isLocalNetwork()) {
21
- if (debug)
22
- console.log(window.location.hostname);
23
- const error = console.error;
24
- console.error = (...args: any[]) => {
25
- error.apply(console, args);
26
- handleLog(LogType.Error, args, null, null);
27
- };
28
-
29
- window.addEventListener("error", (event) => {
30
- if (!event) return;
31
- handleLog(LogType.Error, event.error, event.filename, event.lineno);
32
- });
33
- }
34
- }
35
-
36
-
37
-
38
- function handleLog(type: LogType, message: string | any[], _file: string | null, _line: number | null) {
39
-
40
- const context = Context.Current;
41
- if (type === LogType.Error) {
42
- const domElement = context?.domElement ?? document.querySelector("needle-engine");
43
- if(!domElement) return;
44
- if (Array.isArray(message)) {
45
- message = message.join(" ");
46
- }
47
- appendErrorMessageToDomElement(domElement, message);
48
- }
49
- }
50
-
51
-
52
-
53
- function getLocation(err: Error): string {
54
- const location = err.stack;
55
- console.log(location);
56
- if (location) {
57
- locationRegex.exec(location);
58
- const match = locationRegex.exec(location);
59
- return match ? match[1] : "";
60
- }
61
- return "";
62
- }
63
-
64
-
65
-
66
- function getErrorContainer(domElement: HTMLElement): HTMLElement {
67
- if (errorContainer.has(domElement)) {
68
- return errorContainer.get(domElement)!;
69
- } else {
70
- const container = document.createElement("div");
71
- container.classList.add(arContainerClassName);
72
- container.classList.add("desktop");
73
- container.style.position = "absolute";
74
- container.style.top = "0";
75
- container.style.left = "0";
76
- container.style.margin = "5px";
77
- container.style.width = "calc(100% - 10px)";
78
- container.style.zIndex = "1000";
79
- container.style.pointerEvents = "none";
80
- container.style.display = "flex";
81
- container.style.alignItems = "end";
82
- container.style.flexDirection = "column";
83
- container.style.color = "white";
84
- container.style.overflow = "auto";
85
- domElement.appendChild(container);
86
- errorContainer.set(domElement, container);
87
- return container;
88
- }
89
- }
90
-
91
-
92
- function appendErrorMessageToDomElement(element: HTMLElement, msg: string, location?: string) {
93
- const container = getErrorContainer(element);
94
- if (container.childElementCount >= 5) {
95
- return;
96
- }
97
- const errorElement = document.createElement("div");
98
- container.appendChild(errorElement);
99
- errorElement.style.display = "flex";
100
- errorElement.style.alignItems = "start";
101
- errorElement.style.flexDirection = "row";
102
- // errorElement.style.justifyContent = "space-between";
103
- // errorElement.style.width = "100%";
104
- errorElement.style.padding = ".2em";
105
- errorElement.style.backgroundColor = "rgba(0,0,0,1)";
106
- errorElement.style.marginBottom = "2px";
107
- errorElement.style.borderRadius = "8px";
108
- errorElement.style.color = "#ff5555";
109
- errorElement.style.fontWeight = "bold";
110
- errorElement.title = "Open developer console to debug";
111
- errorElement.style.pointerEvents = "all";
112
- errorElement.style.userSelect = "text";
113
-
114
- const messageElement = document.createElement("div");
115
- const locationElement = document.createElement("div");
116
- errorElement.appendChild(messageElement);
117
- errorElement.appendChild(locationElement);
118
- if (msg.length > 200) {
119
- msg = msg.substring(0, 200) + "...";
120
- }
121
- messageElement.innerText = msg;// "Javascript error: please open the browser developer console to debug";// + msg;
122
- locationElement.innerText = location || "";
123
- setTimeout(() => {
124
- container.removeChild(errorElement);
125
- }, 10000);
126
- }