UNPKG

@mlightcad/common

Version:

The common package provides shared utilities and base classes that are used across the RealDWG-Web ecosystem. This package contains fundamental components for color management, event handling, logging, performance monitoring, and file loading operations.

2 lines (1 loc) 18.1 kB
(function(a,L){typeof exports=="object"&&typeof module<"u"?L(exports):typeof define=="function"&&define.amd?define(["exports"],L):(a=typeof globalThis<"u"?globalThis:a||self,L(a.common={}))})(this,function(a){"use strict";function L(n,e){for(var t=0;t<e.length;t++){const r=e[t];if(typeof r!="string"&&!Array.isArray(r)){for(const o in r)if(o!=="default"&&!(o in n)){const s=Object.getOwnPropertyDescriptor(r,o);s&&Object.defineProperty(n,o,s.get?s:{enumerable:!0,get:()=>r[o]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}const I={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},M=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215,0];function E(n,e,t){return Math.max(e,Math.min(t,n))}const O=class O{constructor(){this._colorIndex=256,this._color=null,this._colorName=null}get color(){return this._color}set color(e){e==null?this._color=null:(this._color=Math.round(E(e,0,256*256*256-1)),this._colorIndex=this.getColorIndexByValue(this._color),this._colorName=this.getColorNameByValue(this._color))}get hexColor(){if(this._color&&this._color>0&&this._color<=16777215){let e=this._color.toString(16).toUpperCase();for(;e.length<6;)e="0"+e;return`0x${e}`}return""}get cssColor(){return`rgb(${this.red},${this.green},${this.blue})`}get red(){return this.color?this.color>>16&255:null}get green(){return this.color?this.color>>8&255:null}get blue(){return this.color?this.color&255:null}get colorIndex(){return this._colorIndex}set colorIndex(e){e==null?this._colorIndex=null:(this._colorIndex=E(e,0,256),this._color=M[e],this._colorName=this.getColorNameByValue(this._color))}get colorName(){return this._colorName}set colorName(e){if(e){const t=I[e.toLowerCase()];t!==void 0?(this._colorName=e,this._color=t,this._colorIndex=this.getColorIndexByValue(this._color)):console.warn("Unknown color: "+e)}else this._colorName=null}get hasColorName(){return this._colorName==null}get hasColorIndex(){return this._colorIndex==null}get isByLayer(){return this.colorIndex==256}setByLayer(){return this.colorIndex=256,this}get isByBlock(){return this.colorIndex==0}setByBlock(){return this.colorIndex=0,this}setScalar(e){return this.setRGB(e,e,e),this}setRGB(e,t,r){const o=Math.round(E(e,0,255)),s=Math.round(E(t,0,255)),l=Math.round(E(r,0,255));return this.color=(o<<16)+(s<<8)+l,this}setColorName(e){const t=I[e.toLowerCase()];return t!==void 0?this.color=t:console.warn("Unknown color "+e),this}clone(){const e=new O;return e.colorIndex=this.colorIndex,e.color=this.color,e._colorName=this._colorName,this}copy(e){return this.colorIndex=e.colorIndex,this.color=e.color,this._colorName=e._colorName,this}equals(e){return e.color==this.color&&e.colorIndex==this.colorIndex&&e._colorName==this._colorName}toString(){return this.isByLayer?"ByLayer":this.isByBlock?"ByBlock":this.colorName?this.colorName:this.hexColor}getColorNameByValue(e){for(const[t,r]of Object.entries(I))if(r===e)return t;return null}getColorIndexByValue(e){const t=M.length-1;for(let r=1;r<t;++r)if(M[r]===e)return r;return null}};O.NAMES=I;let B=O;const W={get ILLEGAL_PARAMETERS(){return new ReferenceError("Illegal Parameters")},get ZERO_DIVISION(){return new Error("Zero division")},get UNRESOLVED_BOUNDARY_CONFLICT(){return new Error("Unresolved boundary conflict in boolean operation")},get INFINITE_LOOP(){return new Error("Infinite loop")},get CANNOT_INVOKE_ABSTRACT_METHOD(){return new Error("Abstract method cannot be invoked")},get OPERATION_IS_NOT_SUPPORTED(){return new Error("Operation is not supported")},get NOT_IMPLEMENTED(){return new Error("Not implemented yet")}};class Y{constructor(){this._listeners={}}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const r=this._listeners;r[e]===void 0&&(r[e]=[]),r[e].indexOf(t)===-1&&r[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const r=this._listeners;return r[e]!==void 0&&r[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const o=this._listeners[e];if(o!==void 0){const s=o.indexOf(t);s!==-1&&o.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const r=this._listeners[e.type];if(r!==void 0){e.target=this;const o=r.slice(0);for(let s=0,l=o.length;s<l;s++)o[s].call(this,e)}}}class S{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}removeEventListener(e){this.listeners=this.listeners.filter(t=>t!==e)}replaceEventListener(e){this.removeEventListener(e),this.addEventListener(e)}dispatch(e,...t){for(const r of this.listeners)r.call(null,e,...t)}}var Z=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function J(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var U={exports:{}};(function(n){(function(e,t){n.exports?n.exports=t():e.log=t()})(Z,function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),o=["trace","debug","info","warn","error"],s={},l=null;function f(c,u){var i=c[u];if(typeof i.bind=="function")return i.bind(c);try{return Function.prototype.bind.call(i,c)}catch{return function(){return Function.prototype.apply.apply(i,[c,arguments])}}}function y(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function b(c){return c==="debug"&&(c="log"),typeof console===t?!1:c==="trace"&&r?y:console[c]!==void 0?f(console,c):console.log!==void 0?f(console,"log"):e}function m(){for(var c=this.getLevel(),u=0;u<o.length;u++){var i=o[u];this[i]=u<c?e:this.methodFactory(i,c,this.name)}if(this.log=this.debug,typeof console===t&&c<this.levels.SILENT)return"No console available for logging"}function x(c){return function(){typeof console!==t&&(m.call(this),this[c].apply(this,arguments))}}function g(c,u,i){return b(c)||x.apply(this,arguments)}function G(c,u){var i=this,N,R,_,p="loglevel";typeof c=="string"?p+=":"+c:typeof c=="symbol"&&(p=void 0);function se(h){var d=(o[h]||"silent").toUpperCase();if(!(typeof window===t||!p)){try{window.localStorage[p]=d;return}catch{}try{window.document.cookie=encodeURIComponent(p)+"="+d+";"}catch{}}}function H(){var h;if(!(typeof window===t||!p)){try{h=window.localStorage[p]}catch{}if(typeof h===t)try{var d=window.document.cookie,T=encodeURIComponent(p),z=d.indexOf(T+"=");z!==-1&&(h=/^([^;]+)/.exec(d.slice(z+T.length+1))[1])}catch{}return i.levels[h]===void 0&&(h=void 0),h}}function le(){if(!(typeof window===t||!p)){try{window.localStorage.removeItem(p)}catch{}try{window.document.cookie=encodeURIComponent(p)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function k(h){var d=h;if(typeof d=="string"&&i.levels[d.toUpperCase()]!==void 0&&(d=i.levels[d.toUpperCase()]),typeof d=="number"&&d>=0&&d<=i.levels.SILENT)return d;throw new TypeError("log.setLevel() called with invalid level: "+h)}i.name=c,i.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},i.methodFactory=u||g,i.getLevel=function(){return _??R??N},i.setLevel=function(h,d){return _=k(h),d!==!1&&se(_),m.call(i)},i.setDefaultLevel=function(h){R=k(h),H()||i.setLevel(h,!1)},i.resetLevel=function(){_=null,le(),m.call(i)},i.enableAll=function(h){i.setLevel(i.levels.TRACE,h)},i.disableAll=function(h){i.setLevel(i.levels.SILENT,h)},i.rebuild=function(){if(l!==i&&(N=k(l.getLevel())),m.call(i),l===i)for(var h in s)s[h].rebuild()},N=k(l?l.getLevel():"WARN");var K=H();K!=null&&(_=k(K)),m.call(i)}l=new G,l.getLogger=function(u){if(typeof u!="symbol"&&typeof u!="string"||u==="")throw new TypeError("You must supply a name when creating a logger.");var i=s[u];return i||(i=s[u]=new G(u,l.methodFactory)),i};var ie=typeof window!==t?window.log:void 0;return l.noConflict=function(){return typeof window!==t&&window.log===l&&(window.log=ie),l},l.getLoggers=function(){return s},l.default=l,l})})(U);var D=U.exports;const X=L({__proto__:null,default:J(D)},[D]),Q=!0,A=X;A.setLevel("debug");const ee=n=>{try{A.setLevel(n)}catch(e){A.setLevel("error"),A.error(e)}};function C(n){return n===null||typeof n!="object"?n:Array.isArray(n)?[...n]:{...n}}function q(n,...e){for(const t of e)if(t)for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&n[r]===void 0&&(n[r]=t[r]);return n}function F(n,e){return n!=null&&Object.prototype.hasOwnProperty.call(n,e)}function j(n){return n==null?!0:Array.isArray(n)||typeof n=="string"?n.length===0:n instanceof Map||n instanceof Set?n.size===0:typeof n=="object"?Object.keys(n).length===0:!1}function v(n,e){if(n===e)return!0;if(n==null||e==null)return n===e;if(typeof n!=typeof e)return!1;if(typeof n!="object")return n===e;if(Array.isArray(n)!==Array.isArray(e))return!1;if(Array.isArray(n)){if(n.length!==e.length)return!1;for(let o=0;o<n.length;o++)if(!v(n[o],e[o]))return!1;return!0}const t=Object.keys(n),r=Object.keys(e);if(t.length!==r.length)return!1;for(const o of t)if(!Object.prototype.hasOwnProperty.call(e,o)||!v(n[o],e[o]))return!1;return!0}class P{constructor(e,t){this.events={attrChanged:new S,modelChanged:new S},this._changing=!1,this._previousAttributes={},this._pending=!1;const r=e||{};t&&q(r,t),this.attributes=r,this.changed={}}get(e){return this.attributes[e]}set(e,t,r){if(e==null)return this;let o;typeof e=="object"?(o=e,r=t):(o={},o[e]=t),r||(r={});const s=r.unset,l=r.silent,f=[],y=this._changing;this._changing=!0,y||(this._previousAttributes=C(this.attributes),this.changed={});const b=this.attributes,m=this.changed,x=this._previousAttributes;for(const g in o)t=o[g],v(b[g],t)||f.push(g),v(x[g],t)?delete m[g]:m[g]=t,s?delete b[g]:b[g]=t;if(!l){f.length&&(this._pending=r);for(let g=0;g<f.length;g++)this.events.attrChanged.dispatch({object:this,attrName:f[g],attrValue:b[f[g]],options:r})}if(y)return this;if(!l)for(;this._pending;)r=this._pending,this._pending=!1,this.events.modelChanged.dispatch({object:this,options:r});return this._pending=!1,this._changing=!1,this}has(e){return this.get(e)!=null}hasChanged(e){return e==null?!j(this.changed):F(this.changed,e)}changedAttributes(e){if(!e)return this.hasChanged()?C(this.changed):{};const t=this._changing?this._previousAttributes:this.attributes,r={};for(const o in e){const s=e[o];v(t[o],s)||(r[o]=s)}return r}previous(e){return e==null||!this._previousAttributes?null:this._previousAttributes[e]}previousAttributes(){return C(this._previousAttributes)}clone(){const e=C(this.attributes);return new P(e)}}class w{constructor(){this.entries=new Map}static getInstance(){return w.instance||(w.instance=new w),w.instance}collect(e){this.entries.set(e.name,e)}printAll(){for(const[e,t]of this.entries)console.log(`${e}:`),console.log(t.format())}clear(){this.entries.clear()}getAll(){return Array.from(this.entries.values())}getEntry(e){return this.entries.get(e)}remove(e){return this.entries.delete(e)}}class te{static formatBytes(e,t=2){if(e===0)return"0 B";const r=1024,o=Math.max(0,t),s=["B","KB","MB","GB","TB"],l=Math.floor(Math.log(e)/Math.log(r)),f=e/Math.pow(r,l);return`${parseFloat(f.toFixed(o))} ${s[l]}`}}class re{constructor(e){this.name=e}run(e){throw new Error("run() must be implemented by subclass")}}class ne{constructor(){this.tasks=[],this.onProgress=()=>{},this.onComplete=()=>{},this.onError=()=>{}}addTask(e){this.tasks.push(e)}setProgressCallback(e){this.onProgress=e}setCompleteCallback(e){this.onComplete=e}setErrorCallback(e){this.onError=e}async run(e){const t=this.tasks.length;let r=e;for(let o=0;o<t;o++){const s=this.tasks[o];try{r=await new Promise((l,f)=>{setTimeout(async()=>{try{const y=await s.run(r);this.onProgress((o+1)/t,s),l(y)}catch(y){f(y)}},0)})}catch(l){this.onError(l,o,s);return}}this.onComplete(r)}}class V{constructor(e,t,r){this.isLoading=!1,this.itemsLoaded=0,this.itemsTotal=0,this.urlModifier=void 0,this.handlers=[],this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=r}itemStart(e){this.itemsTotal++,this.isLoading===!1&&this.onStart!==void 0&&this.onStart(e,this.itemsLoaded,this.itemsTotal),this.isLoading=!0}itemEnd(e){this.itemsLoaded++,this.onProgress!==void 0&&this.onProgress(e,this.itemsLoaded,this.itemsTotal),this.itemsLoaded===this.itemsTotal&&(this.isLoading=!1,this.onLoad!==void 0&&this.onLoad())}itemError(e){this.onError!==void 0&&this.onError(e)}resolveURL(e){return this.urlModifier?this.urlModifier(e):e}setURLModifier(e){return this.urlModifier=e,this}addHandler(e,t){return this.handlers.push(e,t),this}removeHandler(e){const t=this.handlers.indexOf(e);return t!==-1&&this.handlers.splice(t,2),this}getHandler(e){for(let t=0,r=this.handlers.length;t<r;t+=2){const o=this.handlers[t],s=this.handlers[t+1];if(o.global&&(o.lastIndex=0),o.test(e))return s}return null}}const $=new V;class oe{constructor(e){this.manager=e!==void 0?e:$,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}loadAsync(e,t){return new Promise((r,o)=>{this.load(e,r,t,o)})}parse(e){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}a.AcCmColor=B,a.AcCmErrors=W,a.AcCmEventDispatcher=Y,a.AcCmEventManager=S,a.AcCmLoader=oe,a.AcCmLoadingManager=V,a.AcCmObject=P,a.AcCmPerformanceCollector=w,a.AcCmTask=re,a.AcCmTaskScheduler=ne,a.AcTrStringUtil=te,a.DEBUG_MODE=Q,a.DefaultLoadingManager=$,a.clone=C,a.defaults=q,a.has=F,a.isEmpty=j,a.isEqual=v,a.log=A,a.setLogLevel=ee,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});