@x-viewer/ui 0.9.0 → 0.10.1

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.
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
1
  # ui
2
2
 
3
- This is the ui package of reusable crucial pieces of code for x-viewer.
3
+ UI component package providing reusable interface elements for x-viewer applications. Includes base panels, popup panels, tooltips, and internationalization support.
package/dist/index.esm.js CHANGED
@@ -1,26 +1,26 @@
1
1
  /**
2
- * @x-viewer/ui v0.9.0 build Mon Dec 29 2025
2
+ * @x-viewer/ui v0.10.1 build Fri Jan 23 2026
3
3
  * undefined
4
- * Copyright 2025 x-viewer
5
- * @license MIT
4
+ * Copyright 2026 x-viewer
5
+ * @license UNLICENSED
6
6
  */
7
7
  import { THREE } from '@x-viewer/core';
8
8
 
9
- function styleInject(_0x4db7cb,_0x1539a0){if(_0x1539a0===void 0x0)_0x1539a0={};var _0x24697b=_0x1539a0['insertAt'];if(!_0x4db7cb||typeof document==='undefined')return;var _0x1e36e9=document['head']||document['getElementsByTagName']('head')[0x0],_0x5e77a7=document['createElement']('style');_0x5e77a7['type']='text/css',_0x24697b==='top'?_0x1e36e9['firstChild']?_0x1e36e9['insertBefore'](_0x5e77a7,_0x1e36e9['firstChild']):_0x1e36e9['appendChild'](_0x5e77a7):_0x1e36e9['appendChild'](_0x5e77a7),_0x5e77a7['styleSheet']?_0x5e77a7['styleSheet']['cssText']=_0x4db7cb:_0x5e77a7['appendChild'](document['createTextNode'](_0x4db7cb));}
9
+ function styleInject(_0x1dd3c6,_0xaccb50){if(_0xaccb50===void 0x0)_0xaccb50={};var _0x1b1ef1=_0xaccb50['insertAt'];if(!_0x1dd3c6||typeof document==='undefined')return;var _0x118001=document['head']||document['getElementsByTagName']('head')[0x0],_0x2af4d8=document['createElement']('style');_0x2af4d8['type']='text/css',_0x1b1ef1==='top'?_0x118001['firstChild']?_0x118001['insertBefore'](_0x2af4d8,_0x118001['firstChild']):_0x118001['appendChild'](_0x2af4d8):_0x118001['appendChild'](_0x2af4d8),_0x2af4d8['styleSheet']?_0x2af4d8['styleSheet']['cssText']=_0x1dd3c6:_0x2af4d8['appendChild'](document['createTextNode'](_0x1dd3c6));}
10
10
 
11
- var css_248z$2 = ".base-panel{background-color:hsla(0,0%,100%,.9);border-radius:4px;box-shadow:1px 3px 10px 0 rgba(0,0,0,.4);color:#000;height:350px;max-height:90%;max-width:50%;min-height:40px;min-width:200px;overflow:hidden;position:absolute;resize:both;right:20px;top:30px;user-select:none;width:330px;z-index:2}.base-panel ::-webkit-scrollbar{width:6px}.base-panel ::-webkit-scrollbar-track{background:#e1e1e1;border-radius:1px}.base-panel ::-webkit-scrollbar-thumb{background:#888;border-radius:1px}.base-panel ::-webkit-scrollbar-thumb:hover{background:#555}.base-panel:hover{background-color:hsla(0,0%,100%,.95)}.base-panel input{background-color:#fff;border:1px solid #d9d9d9;box-shadow:0 2px 0 rgba(0,0,0,.02);color:rgba(0,0,0,.88);height:auto;padding:0 2px;transition:all .2s cubic-bezier(.645,.045,.355,1)}.base-panel input:hover{border-color:#4096ff;color:#4096ff}.base-panel input[type=button]{cursor:pointer;height:auto;padding:1px 10px;text-align:center;user-select:none;white-space:nowrap}.base-panel input[type=button]:hover{border-color:#4096ff;color:#4096ff;z-index:2}.base-panel input[type=text]{padding:0 2px}.base-panel input[type=color]{background-color:transparent;border:0;height:16px;overflow:hidden;padding:0;width:30px}.base-panel select{background-color:#fff;border:1px solid #d9d9d9;box-shadow:0 2px 0 rgba(0,0,0,.02);color:rgba(0,0,0,.88);cursor:pointer;height:auto;padding:1px 10px;text-align:center;transition:all .2s cubic-bezier(.645,.045,.355,1);user-select:none;white-space:nowrap}.base-panel select:hover{border-color:#4096ff;color:#4096ff;z-index:2}.base-panel ::-webkit-color-swatch{height:16px;margin-top:-5px;position:relative;width:40px}.base-panel .header{align-items:center;background-color:rgba(0,0,0,.133);border-bottom:1px solid #ccc;cursor:move;display:flex;font-size:16px;height:40px;padding-left:12px;width:100%}.base-panel .header .expander{cursor:pointer;font-family:cursive;opacity:.7;padding:10px;position:absolute;right:40px;transform:rotate(-90deg);-webkit-transform:rotate(-90deg);transition:transform .05s ease;-moz-transition:transform .05s ease;-webkit-transition:transform .05s ease;vertical-align:middle}.base-panel .header .expander:hover{opacity:1}.base-panel .header .expander-collapsed{transform:rotate(90deg);-webkit-transform:rotate(90deg)}.base-panel .header .close{cursor:pointer;opacity:.7;padding:10px;position:absolute;right:8px}.base-panel .header .close:hover{opacity:1}.base-panel .content{height:calc(100% - 40px);overflow-x:hidden;overflow-y:auto;padding:5px}.base-panel .content .color-input{border:1px solid gray;cursor:pointer;font-size:0;height:20px;width:20px}.base-panel .content .color-input:hover{border:1px solid blue}";
11
+ var css_248z$2 = ".base-panel{background-color:hsla(0,0%,100%,.9);border-radius:4px;box-shadow:1px 3px 10px 0 rgba(0,0,0,.4);color:#000;height:350px;max-height:90%;max-width:50%;min-height:40px;min-width:200px;overflow:hidden;position:absolute;resize:both;right:20px;top:30px;user-select:none;width:330px;z-index:2}.base-panel ::-webkit-scrollbar{width:6px}.base-panel ::-webkit-scrollbar-track{background:#e1e1e1;border-radius:1px}.base-panel ::-webkit-scrollbar-thumb{background:#888;border-radius:1px}.base-panel ::-webkit-scrollbar-thumb:hover{background:#555}.base-panel:hover{background-color:hsla(0,0%,100%,.95)}.base-panel input{background-color:#fff;border:1px solid #d9d9d9;box-shadow:0 2px 0 rgba(0,0,0,.02);color:rgba(0,0,0,.88);height:auto;padding:0 2px;transition:all .2s cubic-bezier(.645,.045,.355,1)}.base-panel input:hover{border-color:#4096ff;color:#4096ff}.base-panel input[type=button]{cursor:pointer;height:auto;padding:1px 10px;text-align:center;user-select:none;white-space:nowrap}.base-panel input[type=button]:hover{border-color:#4096ff;color:#4096ff;z-index:2}.base-panel input[type=text]{padding:0 2px}.base-panel input[type=color]{background-color:transparent;border:0;height:16px;overflow:hidden;padding:0;width:30px}.base-panel select{background-color:#fff;border:1px solid #d9d9d9;box-shadow:0 2px 0 rgba(0,0,0,.02);color:rgba(0,0,0,.88);cursor:pointer;height:auto;padding:1px 10px;text-align:center;transition:all .2s cubic-bezier(.645,.045,.355,1);user-select:none;white-space:nowrap}.base-panel select:hover{border-color:#4096ff;color:#4096ff;z-index:2}.base-panel ::-webkit-color-swatch{height:16px;margin-top:-5px;position:relative;width:40px}.base-panel .header{align-items:center;background-color:rgba(0,0,0,.133);border-bottom:1px solid #ccc;cursor:move;display:flex;font-size:16px;height:40px;padding-left:12px;width:100%}.base-panel .header .expander{align-items:center;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;line-height:1;opacity:.7;padding:10px;position:absolute;right:36px;transform-origin:center center;-webkit-transform-origin:center center;transition:transform .05s ease;-moz-transition:transform .05s ease;-webkit-transition:transform .05s ease}.base-panel .header .expander:hover{opacity:1}.base-panel .header .expander svg{display:block;height:16px;width:16px}.base-panel .header .expander-collapsed{transform:rotate(180deg);-webkit-transform:rotate(180deg)}.base-panel .header .close{cursor:pointer;opacity:.7;padding:10px;position:absolute;right:8px}.base-panel .header .close:hover{opacity:1}.base-panel .content{height:calc(100% - 40px);overflow-x:hidden;overflow-y:auto;padding:5px}.base-panel .content .color-input{border:1px solid gray;cursor:pointer;font-size:0;height:20px;width:20px}.base-panel .content .color-input:hover{border:1px solid blue}";
12
12
  styleInject(css_248z$2);
13
13
 
14
14
  var css_248z$1 = ".pop-panel{background:#fff;border-radius:4px;box-shadow:0 12px 48px 16px rgba(0,0,0,.03),0 9px 28px 0 rgba(0,0,0,.05),0 6px 16px -8px rgba(0,0,0,.08);color:#333;left:calc(90% - 160px);position:absolute;top:calc(70% - 100px);width:160px;z-index:99999999}.pop-panel .pop-panel-header{border-bottom:1px solid #efefef;color:#333;cursor:move;font-size:16px;font-weight:bolder;padding:16px 24px 8px;user-select:none}.pop-panel .pop-panel-body{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:16px 24px}.pop-panel .pop-panel-body .pop-panel-item{cursor:pointer;display:inline-block;font-size:16px;margin-right:16px}.pop-panel .pop-panel-body .pop-panel-item .x-viewer-iconfont{font-size:24px}.pop-panel .pop-panel-body .pop-panel-item:last-child{margin-right:0}.pop-panel .pop-panel-body .pop-panel-item.active,.pop-panel .pop-panel-body .pop-panel-item:hover{color:#2c7be5}.pop-panel .pop-panel-body .pop-panel-item.disable{color:#999;cursor:not-allowed}";
15
15
  styleInject(css_248z$1);
16
16
 
17
- class BasePanel{constructor(_0x1aef33){this['mouseDownPositionX']=-0x1,this['mouseDownPositionY']=-0x1,this['originalPanelHeight']=-0x1,this['onHide']=()=>{var _0xd36a50;this['setVisible'](![]),(_0xd36a50=this['onClose'])===null||_0xd36a50===void 0x0?void 0x0:_0xd36a50['call'](this);},this['onPointerDown']=_0x13cf3b=>{_0x13cf3b['target']['classList']['contains']('draggable')&&_0x13cf3b['button']===0x0&&(this['mouseDownPositionX']=_0x13cf3b['x'],this['mouseDownPositionY']=_0x13cf3b['y'],document['addEventListener']('pointermove',this['onPointerMove']),document['addEventListener']('pointerup',this['onPointerUp']));},this['onPointerMove']=_0x1dd489=>{const _0x53a0d3=this['root'],_0x3fd8e6=_0x1dd489['x']-this['mouseDownPositionX'],_0x4f269e=_0x1dd489['y']-this['mouseDownPositionY'],_0x237f10=this['getPanelTransform']();let _0x58b201=_0x53a0d3['offsetLeft']+_0x237f10['x']+_0x3fd8e6,_0x1f1d92=_0x53a0d3['offsetTop']+_0x237f10['y']+_0x4f269e;const _0x5a17fb=this['viewportContainer'];if(_0x5a17fb){const _0x39a2d3=_0x5a17fb['clientLeft']+_0x5a17fb['clientWidth'],_0x1183df=_0x5a17fb['clientTop']+_0x5a17fb['clientHeight'];_0x58b201<0x0&&(_0x58b201=0x0),_0x58b201>0x0&&_0x58b201+_0x53a0d3['clientWidth']>_0x39a2d3&&(_0x3fd8e6>0x0&&(_0x58b201=_0x53a0d3['offsetLeft']+_0x237f10['x'])),_0x1f1d92<0x0&&(_0x1f1d92=0x0),_0x1f1d92>0x0&&_0x1f1d92+_0x53a0d3['clientHeight']>_0x1183df&&(_0x4f269e>0x0&&(_0x1f1d92=_0x53a0d3['offsetTop']+_0x237f10['y']));}_0x53a0d3['style']['left']=_0x58b201-_0x237f10['x']+'px',_0x53a0d3['style']['top']=_0x1f1d92-_0x237f10['y']+'px',this['mouseDownPositionX']=_0x1dd489['x'],this['mouseDownPositionY']=_0x1dd489['y'];},this['onPointerUp']=()=>{document['removeEventListener']('pointermove',this['onPointerMove']),document['removeEventListener']('pointerup',this['onPointerUp']);};const {container:_0x3dc30a,title:_0x194654,cssClass:_0x1bd888,onClose:_0x1dfa9b,viewportContainer:_0x2c8041}=_0x1aef33;this['root']=document['createElement']('div'),this['root']['classList']['add']('base-panel');_0x1bd888&&this['root']['classList']['add'](_0x1bd888);this['header']=document['createElement']('div'),this['header']['classList']['add']('header','draggable');const _0x4be540=document['createElement']('span');_0x4be540['innerText']=_0x194654,_0x4be540['classList']['add']('draggable'),this['closeBtn']=document['createElement']('span'),this['closeBtn']['classList']['add']('close'),this['closeBtn']['innerHTML']='✕',this['collapseBtn']=document['createElement']('span'),this['collapseBtn']['classList']['add']('expander'),this['collapseBtn']['innerHTML']='>',this['header']['appendChild'](_0x4be540),this['header']['appendChild'](this['collapseBtn']),this['header']['appendChild'](this['closeBtn']),this['root']['appendChild'](this['header']),this['content']=document['createElement']('div'),this['content']['classList']['add']('content'),this['root']['appendChild'](this['content']),_0x3dc30a['appendChild'](this['root']),this['header']['addEventListener']('pointerdown',this['onPointerDown']),this['collapseBtn']['addEventListener']('click',_0x10be4f=>{_0x10be4f['stopPropagation']();const _0x1f256b=this['originalPanelHeight']>0x0;_0x1f256b?(this['collapseBtn']['classList']['remove']('expander-collapsed'),this['root']['style']['height']=this['originalPanelHeight']+'px',this['originalPanelHeight']=-0x1):(this['collapseBtn']['classList']['add']('expander-collapsed'),this['originalPanelHeight']=this['root']['clientHeight'],this['root']['style']['height']='0px');}),this['closeBtn']['addEventListener']('click',this['onHide']),_0x1dfa9b&&(this['onClose']=_0x1dfa9b),_0x2c8041&&(this['viewportContainer']=_0x2c8041);}['setVisible'](_0x17e8a4){this['root']['style']['display']=_0x17e8a4?'':'none';}['isVisible'](){return this['root']['style']['display']!=='none';}['setTitle'](_0x2fdde3){this['header']['querySelector']('span.draggable')['innerText']=_0x2fdde3;}['setContent'](_0x18aba3){this['content']['innerHTML']=_0x18aba3;}['destroy'](){this['header']['removeEventListener']('pointerdown',this['onPointerDown']),this['closeBtn']['removeEventListener']('click',this['onHide']);}['getPanelTransform'](){const _0x213ee1=window['getComputedStyle'](this['root']);let _0x457f6f=0x0,_0x58ba44=0x0;const _0x363532=_0x213ee1['transform'];if(_0x363532&&_0x363532['startsWith']('matrix')){const _0x2b8847=_0x363532['match'](/matrix\([^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+)\)/);_0x2b8847&&(_0x457f6f=parseFloat(_0x2b8847[0x5]),_0x58ba44=parseFloat(_0x2b8847[0x6]));}else {if(_0x363532&&_0x363532['startsWith']('translate')){const _0x4e769c=_0x363532['match'](/translate\(([\d\.\-]+)px,\s*([\d\.\-]+)px\)/);_0x4e769c&&(_0x457f6f=parseFloat(_0x4e769c[0x1]),_0x58ba44=parseFloat(_0x4e769c[0x2]));}}return new THREE['Vector2'](_0x457f6f,_0x58ba44);}}
17
+ class BasePanel{constructor(_0x484b17){this['mouseDownPositionX']=-0x1,this['mouseDownPositionY']=-0x1,this['originalPanelHeight']=-0x1,this['onHide']=()=>{var _0x4576fe;this['setVisible'](![]),(_0x4576fe=this['onClose'])===null||_0x4576fe===void 0x0?void 0x0:_0x4576fe['call'](this);},this['onPointerDown']=_0x1105a7=>{_0x1105a7['target']['classList']['contains']('draggable')&&_0x1105a7['button']===0x0&&(this['mouseDownPositionX']=_0x1105a7['x'],this['mouseDownPositionY']=_0x1105a7['y'],document['addEventListener']('pointermove',this['onPointerMove']),document['addEventListener']('pointerup',this['onPointerUp']));},this['onPointerMove']=_0x2a90ea=>{const _0x4cf8c2=this['root'],_0xd04a60=_0x2a90ea['x']-this['mouseDownPositionX'],_0x21d00b=_0x2a90ea['y']-this['mouseDownPositionY'],_0xeb154f=this['getPanelTransform']();let _0x5f5b8c=_0x4cf8c2['offsetLeft']+_0xeb154f['x']+_0xd04a60,_0x3eda04=_0x4cf8c2['offsetTop']+_0xeb154f['y']+_0x21d00b;const _0x3868f3=this['viewportContainer'];if(_0x3868f3){const _0x119b38=_0x3868f3['clientLeft']+_0x3868f3['clientWidth'],_0x134633=_0x3868f3['clientTop']+_0x3868f3['clientHeight'];_0x5f5b8c<0x0&&(_0x5f5b8c=0x0),_0x5f5b8c>0x0&&_0x5f5b8c+_0x4cf8c2['clientWidth']>_0x119b38&&(_0xd04a60>0x0&&(_0x5f5b8c=_0x4cf8c2['offsetLeft']+_0xeb154f['x'])),_0x3eda04<0x0&&(_0x3eda04=0x0),_0x3eda04>0x0&&_0x3eda04+_0x4cf8c2['clientHeight']>_0x134633&&(_0x21d00b>0x0&&(_0x3eda04=_0x4cf8c2['offsetTop']+_0xeb154f['y']));}_0x4cf8c2['style']['left']=_0x5f5b8c-_0xeb154f['x']+'px',_0x4cf8c2['style']['top']=_0x3eda04-_0xeb154f['y']+'px',this['mouseDownPositionX']=_0x2a90ea['x'],this['mouseDownPositionY']=_0x2a90ea['y'];},this['onPointerUp']=()=>{document['removeEventListener']('pointermove',this['onPointerMove']),document['removeEventListener']('pointerup',this['onPointerUp']);};const {container:_0x195467,title:_0x4cbeae,cssClass:_0x31bb61,onClose:_0x39faf7,viewportContainer:_0x327c8f}=_0x484b17;this['root']=document['createElement']('div'),this['root']['classList']['add']('base-panel');_0x31bb61&&this['root']['classList']['add'](_0x31bb61);this['header']=document['createElement']('div'),this['header']['classList']['add']('header','draggable');const _0x4aab3b=document['createElement']('span');_0x4aab3b['innerText']=_0x4cbeae,_0x4aab3b['classList']['add']('draggable'),this['closeBtn']=document['createElement']('span'),this['closeBtn']['classList']['add']('close'),this['closeBtn']['innerHTML']='✕',this['collapseBtn']=document['createElement']('span'),this['collapseBtn']['classList']['add']('expander'),this['collapseBtn']['innerHTML']='<svg\x20viewBox=\x220\x200\x2024\x2024\x22\x20aria-hidden=\x22true\x22><path\x20d=\x22M6\x2015l6-6\x206\x206\x22\x20fill=\x22none\x22\x20stroke=\x22currentColor\x22\x20stroke-width=\x222\x22/></svg>',this['header']['appendChild'](_0x4aab3b),this['header']['appendChild'](this['collapseBtn']),this['header']['appendChild'](this['closeBtn']),this['root']['appendChild'](this['header']),this['content']=document['createElement']('div'),this['content']['classList']['add']('content'),this['root']['appendChild'](this['content']),_0x195467['appendChild'](this['root']),this['header']['addEventListener']('pointerdown',this['onPointerDown']),this['collapseBtn']['addEventListener']('click',_0xe4b39e=>{_0xe4b39e['stopPropagation']();const _0x22270e=this['originalPanelHeight']>0x0;_0x22270e?(this['collapseBtn']['classList']['remove']('expander-collapsed'),this['root']['style']['height']=this['originalPanelHeight']+'px',this['originalPanelHeight']=-0x1):(this['collapseBtn']['classList']['add']('expander-collapsed'),this['originalPanelHeight']=this['root']['clientHeight'],this['root']['style']['height']='0px');}),this['closeBtn']['addEventListener']('click',this['onHide']),_0x39faf7&&(this['onClose']=_0x39faf7),_0x327c8f&&(this['viewportContainer']=_0x327c8f);}['setVisible'](_0xc48d63){this['root']['style']['display']=_0xc48d63?'':'none';}['isVisible'](){return this['root']['style']['display']!=='none';}['setTitle'](_0x1f911a){this['header']['querySelector']('span.draggable')['innerText']=_0x1f911a;}['setContent'](_0x25f1a6){this['content']['innerHTML']=_0x25f1a6;}['destroy'](){this['header']['removeEventListener']('pointerdown',this['onPointerDown']),this['closeBtn']['removeEventListener']('click',this['onHide']);}['getPanelTransform'](){const _0x3a0aea=window['getComputedStyle'](this['root']);let _0xb69624=0x0,_0x22969c=0x0;const _0x442d56=_0x3a0aea['transform'];if(_0x442d56&&_0x442d56['startsWith']('matrix')){const _0x6f09cd=_0x442d56['match'](/matrix\([^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+)\)/);_0x6f09cd&&(_0xb69624=parseFloat(_0x6f09cd[0x5]),_0x22969c=parseFloat(_0x6f09cd[0x6]));}else {if(_0x442d56&&_0x442d56['startsWith']('translate')){const _0x31c2c4=_0x442d56['match'](/translate\(([\d\.\-]+)px,\s*([\d\.\-]+)px\)/);_0x31c2c4&&(_0xb69624=parseFloat(_0x31c2c4[0x1]),_0x22969c=parseFloat(_0x31c2c4[0x2]));}}return new THREE['Vector2'](_0xb69624,_0x22969c);}}
18
18
 
19
- class PopPanel{constructor(_0x3ada3f,_0x523971,_0x17bda9=document['body']){this['container']=_0x17bda9,this['isFollowing']=![],this['diffX']=0x0,this['diffY']=0x0,this['start']=_0x783b2a=>{this['isFollowing']=!![],this['diffX']=_0x783b2a['clientX']-this['element']['offsetLeft'],this['diffY']=_0x783b2a['clientY']-this['element']['offsetTop'];},this['stop']=()=>{this['isFollowing']=![];},this['follow']=_0x425996=>{if(!this['isFollowing'])return;const _0x164158=_0x425996['clientX']-this['diffX'],_0x3eef96=_0x425996['clientY']-this['diffY'];this['element']['style']['left']=_0x164158+'px',this['element']['style']['top']=_0x3eef96+'px';},this['element']=document['createElement']('div'),this['element']['id']=_0x3ada3f,this['element']['classList']['add']('pop-panel');const _0x1546ce=document['createElement']('div');_0x1546ce['classList']['add']('pop-panel-header'),_0x1546ce['append'](_0x523971),this['element']['appendChild'](_0x1546ce),this['header']=_0x1546ce;const _0x36a60a=document['createElement']('div');_0x36a60a['classList']['add']('pop-panel-body'),this['element']['appendChild'](_0x36a60a),this['body']=_0x36a60a,_0x1546ce['addEventListener']('mousedown',this['start']),_0x1546ce['addEventListener']('mouseup',this['stop']),document['body']['addEventListener']('mousemove',this['follow']),this['container']['appendChild'](this['element']);}['destroy'](){document['body']['removeEventListener']('mousemove',this['follow']),this['element']['removeEventListener']('mousedown',this['start']),this['element']['removeEventListener']('mouseup',this['stop']),this['element']['remove']();}}
19
+ class PopPanel{constructor(_0x29f262,_0x532c84,_0x117dea=document['body']){this['container']=_0x117dea,this['isFollowing']=![],this['diffX']=0x0,this['diffY']=0x0,this['start']=_0x40f38e=>{this['isFollowing']=!![],this['diffX']=_0x40f38e['clientX']-this['element']['offsetLeft'],this['diffY']=_0x40f38e['clientY']-this['element']['offsetTop'];},this['stop']=()=>{this['isFollowing']=![];},this['follow']=_0xd85c6c=>{if(!this['isFollowing'])return;const _0x31042e=_0xd85c6c['clientX']-this['diffX'],_0x449fde=_0xd85c6c['clientY']-this['diffY'];this['element']['style']['left']=_0x31042e+'px',this['element']['style']['top']=_0x449fde+'px';},this['element']=document['createElement']('div'),this['element']['id']=_0x29f262,this['element']['classList']['add']('pop-panel');const _0x56c8d1=document['createElement']('div');_0x56c8d1['classList']['add']('pop-panel-header'),_0x56c8d1['append'](_0x532c84),this['element']['appendChild'](_0x56c8d1),this['header']=_0x56c8d1;const _0x42f7f2=document['createElement']('div');_0x42f7f2['classList']['add']('pop-panel-body'),this['element']['appendChild'](_0x42f7f2),this['body']=_0x42f7f2,_0x56c8d1['addEventListener']('mousedown',this['start']),_0x56c8d1['addEventListener']('mouseup',this['stop']),document['body']['addEventListener']('mousemove',this['follow']),this['container']['appendChild'](this['element']);}['destroy'](){document['body']['removeEventListener']('mousemove',this['follow']),this['element']['removeEventListener']('mousedown',this['start']),this['element']['removeEventListener']('mouseup',this['stop']),this['element']['remove']();}}
20
20
 
21
21
  var css_248z = ".follow-tooltip{background:rgba(25,25,25,.3);border-radius:2px;color:hsla(0,0%,100%,.8);font-size:12px;left:-500px;padding:6px;position:absolute;z-index:99999999}";
22
22
  styleInject(css_248z);
23
23
 
24
- class Tooltip{constructor(_0xef7724,_0x1dc1a4,_0x5f3501){this['follow']=_0x493446=>{this['node']['style']['left']=_0x493446['offsetX']+0xf+'px',this['node']['style']['top']=_0x493446['offsetY']-0x1e+'px';},this['show']=()=>this['node']['hasAttribute']('hidden')&&this['node']['removeAttribute']('hidden'),this['hide']=()=>!this['node']['hasAttribute']('hidden')&&this['node']['setAttribute']('hidden',''),this['destroy']=()=>{this['target']?this['target']['removeEventListener']('mousemove',this['follow']):document['removeEventListener']('mousemove',this['follow']),this['parentNode']['removeChild'](this['node']);},this['node']=document['createElement']('div'),this['node']['id']=_0xef7724,_0x1dc1a4&&this['node']['append'](_0x1dc1a4),this['childNode']=document['createElement']('div'),this['target']=_0x5f3501===null||_0x5f3501===void 0x0?void 0x0:_0x5f3501['target'],this['parentNode']=(_0x5f3501===null||_0x5f3501===void 0x0?void 0x0:_0x5f3501['parentNode'])||document['body'],(_0x5f3501===null||_0x5f3501===void 0x0?void 0x0:_0x5f3501['followPointer'])&&(this['node']['classList']['add']('follow-tooltip'),this['target']?this['target']['addEventListener']('mousemove',this['follow']):document['addEventListener']('mousemove',this['follow'])),this['parentNode']['appendChild'](this['node']),!(_0x5f3501===null||_0x5f3501===void 0x0?void 0x0:_0x5f3501['showOnCreate'])&&this['node']['setAttribute']('hidden','');}['setContent'](_0x21a3eb){this['node']['textContent']&&(this['node']['textContent']=null);for(let _0x15b265=0x0;_0x15b265<this['node']['children']['length'];++_0x15b265){const _0x1fe102=this['node']['children'][_0x15b265];this['node']['removeChild'](_0x1fe102);}this['node']['append'](_0x21a3eb),this['node']['appendChild'](this['childNode']);}['updateChildContent'](_0x1ba123){this['childNode']['textContent']&&(this['childNode']['textContent']=null);for(let _0x5cb066=0x0;_0x5cb066<this['node']['children']['length'];++_0x5cb066){const _0xd076e9=this['node']['children'][_0x5cb066];this['node']['removeChild'](_0xd076e9);}this['childNode']['append'](_0x1ba123);}}
24
+ class Tooltip{constructor(_0x46b0c5,_0x472abe,_0x43eb91){this['follow']=_0x3042e8=>{this['node']['style']['left']=_0x3042e8['offsetX']+0xf+'px',this['node']['style']['top']=_0x3042e8['offsetY']-0x1e+'px';},this['show']=()=>this['node']['hasAttribute']('hidden')&&this['node']['removeAttribute']('hidden'),this['hide']=()=>!this['node']['hasAttribute']('hidden')&&this['node']['setAttribute']('hidden',''),this['destroy']=()=>{this['target']?this['target']['removeEventListener']('mousemove',this['follow']):document['removeEventListener']('mousemove',this['follow']),this['parentNode']['removeChild'](this['node']);},this['node']=document['createElement']('div'),this['node']['id']=_0x46b0c5,_0x472abe&&this['node']['append'](_0x472abe),this['childNode']=document['createElement']('div'),this['target']=_0x43eb91===null||_0x43eb91===void 0x0?void 0x0:_0x43eb91['target'],this['parentNode']=(_0x43eb91===null||_0x43eb91===void 0x0?void 0x0:_0x43eb91['parentNode'])||document['body'],(_0x43eb91===null||_0x43eb91===void 0x0?void 0x0:_0x43eb91['followPointer'])&&(this['node']['classList']['add']('follow-tooltip'),this['target']?this['target']['addEventListener']('mousemove',this['follow']):document['addEventListener']('mousemove',this['follow'])),this['parentNode']['appendChild'](this['node']),!(_0x43eb91===null||_0x43eb91===void 0x0?void 0x0:_0x43eb91['showOnCreate'])&&this['node']['setAttribute']('hidden','');}['setContent'](_0x28b558){this['node']['textContent']&&(this['node']['textContent']=null);for(let _0xf0b84f=0x0;_0xf0b84f<this['node']['children']['length'];++_0xf0b84f){const _0x436fb6=this['node']['children'][_0xf0b84f];this['node']['removeChild'](_0x436fb6);}this['node']['append'](_0x28b558),this['node']['appendChild'](this['childNode']);}['updateChildContent'](_0x4f1283){this['childNode']['textContent']&&(this['childNode']['textContent']=null);for(let _0x89d0b2=0x0;_0x89d0b2<this['node']['children']['length'];++_0x89d0b2){const _0x5a5cde=this['node']['children'][_0x89d0b2];this['node']['removeChild'](_0x5a5cde);}this['childNode']['append'](_0x4f1283);}}
25
25
 
26
26
  export { BasePanel, PopPanel, Tooltip };
package/package.json CHANGED
@@ -1,44 +1,44 @@
1
- {
2
- "name": "@x-viewer/ui",
3
- "version": "0.9.0",
4
- "description": "The first typescript example for the Monorepo example",
5
- "author": "x-viewer",
6
- "license": "MIT",
7
- "keywords": [
8
- "x-viewer",
9
- "BIM",
10
- "ui",
11
- "typescript"
12
- ],
13
- "repository": {
14
- "type": "git"
15
- },
16
- "publishConfig": {
17
- "access": "public",
18
- "registry": "https://registry.npmjs.org/"
19
- },
20
- "files": [
21
- "package.json",
22
- "dist",
23
- "LICENSE",
24
- "README.md"
25
- ],
26
- "type": "module",
27
- "main": "dist/index.esm.js",
28
- "module": "dist/index.esm.js",
29
- "types": "dist/types/index.d.ts",
30
- "dependencies": {
31
- "@x-viewer/core": "^0.9.0"
32
- },
33
- "scripts": {
34
- "build": "pnpm run clean:build && pnpm run data-type && rollup -c --environment BUILD:production",
35
- "clean:build": "rimraf ./dist",
36
- "data-type": "tsc --project tsconfig.bundle.json && tsc-alias -p tsconfig.bundle.json",
37
- "dev": "pnpm run data-type && rollup -c -w",
38
- "lint": "eslint . --ext .js,.ts",
39
- "lint:fix": "pnpm lint --fix",
40
- "format": "prettier --check .",
41
- "format:fix": "prettier --write .",
42
- "lint-staged": "lint-staged"
43
- }
44
- }
1
+ {
2
+ "name": "@x-viewer/ui",
3
+ "version": "0.10.1",
4
+ "description": "UI component package providing reusable interface elements for x-viewer applications. Includes base panels, popup panels, tooltips, and internationalization support.",
5
+ "author": "x-viewer",
6
+ "license": "UNLICENSED",
7
+ "keywords": [
8
+ "x-viewer",
9
+ "BIM",
10
+ "ui",
11
+ "typescript"
12
+ ],
13
+ "repository": {
14
+ "type": "git"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public",
18
+ "registry": "https://registry.npmjs.org/"
19
+ },
20
+ "files": [
21
+ "package.json",
22
+ "dist",
23
+ "LICENSE",
24
+ "README.md"
25
+ ],
26
+ "type": "module",
27
+ "main": "dist/index.esm.js",
28
+ "module": "dist/index.esm.js",
29
+ "types": "dist/types/index.d.ts",
30
+ "scripts": {
31
+ "build": "pnpm run clean:build && pnpm run data-type && rollup -c --environment BUILD:production",
32
+ "clean:build": "rimraf ./dist",
33
+ "data-type": "tsc --project tsconfig.bundle.json && tsc-alias -p tsconfig.bundle.json",
34
+ "dev": "pnpm run data-type && rollup -c -w",
35
+ "lint": "eslint . --ext .js,.ts",
36
+ "lint:fix": "pnpm lint --fix",
37
+ "format": "prettier --check .",
38
+ "format:fix": "prettier --write .",
39
+ "lint-staged": "lint-staged"
40
+ },
41
+ "dependencies": {
42
+ "@x-viewer/core": "workspace:^"
43
+ }
44
+ }