import { Intent } from '@blueprintjs/core'; import { Cache, Layers, Object3D } from 'three'; import { HostApplicationServices } from './ApplicationServices/HostApplicationServices'; import { ErrorMonitoring, ReportError } from './Common/ErrorMonitoring'; import { LogEnable, ReportErrorWrap } from './Common/Log'; import { copyTextToClipboard } from './Common/Utils'; import { userConfig } from './Editor/UserConfig'; import { LoadDefaultExr, LoadMetalEnv } from './Loader/EnvLoader'; import { AppToaster } from './UI/Components/Toaster'; import './UI/Css/blue.less'; import './UI/Css/golden.less'; import './UI/Css/style.less'; import './UI/Css/switchTheme.less'; import { WebCAD } from './UI/Layout/ApplicationLayout'; Cache.enabled = true; //禁止用户选中 document.addEventListener("selectionchange", () => { let s = document.getSelection(); if (s.anchorNode !== s.focusNode) s.empty(); else if (s.rangeCount > 0) { let range = s.getRangeAt(0); if (range.startContainer.nodeName === "#text" && s.focusNode.parentElement.contentEditable !== "true" && s.focusNode.parentElement.parentElement.contentEditable !== "true") //#IZM3T s.empty(); } }); document.body.className = " light-golden"; //禁止右键 document.oncontextmenu = () => false; //取消浏览器默认拖拽行为 document.ondragleave = e => e.preventDefault(); document.ondragenter = e => e.preventDefault(); document.ondragover = e => e.preventDefault(); //屏蔽浏览器页面缩放 document.addEventListener('wheel', (e: WheelEvent) => { if (e.ctrlKey) { e.returnValue = false; e.preventDefault(); e.stopPropagation(); } }, { passive: false }); document.addEventListener("keydown", (e: KeyboardEvent) => { if (e.ctrlKey) { if (e.key === "-" || e.key === "=") { e.returnValue = false; e.preventDefault(); e.stopPropagation(); } } }), { passive: false }; //接受所有输入框的快捷键(因为我们的输入框不多,如果输入框要避免响应,那么必须监听键盘按下事件,并且阻止默认和防止冒泡) // hotkeys.filter = e => true;//我们将在inputhint中修改这个 window.onload = function () { let el = document.getElementById("loader-wrapper"); el.remove(); function isWebGLAvailable() { try { var canvas = document.createElement('canvas'); return !!(globalThis.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'))); } catch (e) { return false; } } const { detect } = require('detect-browser'); function CheckVer() { try { const browser = detect(); if (browser.name === "chrome" || browser.name === "edge-chromium") { let ver = parseInt(browser.version.split(".")[0]); return ver > 85; } } catch (error) { } return false; } if (!isWebGLAvailable() || !CheckVer()) { document.body.innerText = "您的浏览器版本过低!"; document.body.style.cssText = ` text-align: center; display: flex; align-items: center; justify-content: center; font-size: 30px; flex-direction: column; `; let herfEl = document.createElement("a"); herfEl.innerText = "点击下载谷歌浏览器!"; let linkUrl = "https://www.google.cn/chrome/"; herfEl.href = linkUrl; document.body.append(herfEl); window.open(linkUrl); return; } if (window.location.hostname === "t.cfcad.cn") AppToaster.show({ message: "这个环境仅供测试使用!!!请勿在生产中使用这个地址,否则将产生错误图纸或者无法打开的图纸!!!(本地址仅供测试账号使用,数据随时清空)", timeout: 15000, intent: Intent.WARNING, }); else if (window.location.pathname === "/dev/") AppToaster.show({ message: "这个环境仅供测试使用!!!请勿在生产中使用这个地址,否则将产生错误图纸或者无法打开的图纸!!!", timeout: 15000, intent: Intent.WARNING, }); else if (window.location.hostname === "localhost") ReportErrorWrap.IsProduction = false; else ReportErrorWrap.IsProduction = true; Object3D.DefaultMatrixAutoUpdate = false; Layers.prototype.test = (layers) => true; new ErrorMonitoring(); LogEnable.Display = true; ReportErrorWrap.ReportError = ReportError; HostApplicationServices.LoadDefaultExr = LoadDefaultExr; HostApplicationServices.LoadMetalEnv = LoadMetalEnv; HostApplicationServices.ProxyObject = userConfig; new WebCAD(); LoadDefaultExr(); }; globalThis["copy"] = (text: string) => { console.log("你有2秒的时间让页面聚焦,否则将无法拷贝!"); setTimeout(async () => { await copyTextToClipboard(text); console.log("拷贝成功!"); }, 2000); };