@x-viewer/ui 0.10.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.10.0 build Tue Dec 30 2025
2
+ * @x-viewer/ui v0.10.1 build Fri Jan 23 2026
3
3
  * undefined
4
- * Copyright 2025 x-viewer
4
+ * Copyright 2026 x-viewer
5
5
  * @license UNLICENSED
6
6
  */
7
7
  import { THREE } from '@x-viewer/core';
8
8
 
9
- function styleInject(_0x57d28f,_0x26928a){if(_0x26928a===void 0x0)_0x26928a={};var _0x13a1f1=_0x26928a['insertAt'];if(!_0x57d28f||typeof document==='undefined')return;var _0x559f30=document['head']||document['getElementsByTagName']('head')[0x0],_0x48891f=document['createElement']('style');_0x48891f['type']='text/css',_0x13a1f1==='top'?_0x559f30['firstChild']?_0x559f30['insertBefore'](_0x48891f,_0x559f30['firstChild']):_0x559f30['appendChild'](_0x48891f):_0x559f30['appendChild'](_0x48891f),_0x48891f['styleSheet']?_0x48891f['styleSheet']['cssText']=_0x57d28f:_0x48891f['appendChild'](document['createTextNode'](_0x57d28f));}
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(_0x52c1bb){this['mouseDownPositionX']=-0x1,this['mouseDownPositionY']=-0x1,this['originalPanelHeight']=-0x1,this['onHide']=()=>{var _0x3e6293;this['setVisible'](![]),(_0x3e6293=this['onClose'])===null||_0x3e6293===void 0x0?void 0x0:_0x3e6293['call'](this);},this['onPointerDown']=_0x4eb842=>{_0x4eb842['target']['classList']['contains']('draggable')&&_0x4eb842['button']===0x0&&(this['mouseDownPositionX']=_0x4eb842['x'],this['mouseDownPositionY']=_0x4eb842['y'],document['addEventListener']('pointermove',this['onPointerMove']),document['addEventListener']('pointerup',this['onPointerUp']));},this['onPointerMove']=_0x2edc98=>{const _0x3081d2=this['root'],_0x103410=_0x2edc98['x']-this['mouseDownPositionX'],_0x24d39f=_0x2edc98['y']-this['mouseDownPositionY'],_0x3c94ea=this['getPanelTransform']();let _0xbdfb1f=_0x3081d2['offsetLeft']+_0x3c94ea['x']+_0x103410,_0x1bf925=_0x3081d2['offsetTop']+_0x3c94ea['y']+_0x24d39f;const _0x1d4825=this['viewportContainer'];if(_0x1d4825){const _0x3e2b8f=_0x1d4825['clientLeft']+_0x1d4825['clientWidth'],_0x281354=_0x1d4825['clientTop']+_0x1d4825['clientHeight'];_0xbdfb1f<0x0&&(_0xbdfb1f=0x0),_0xbdfb1f>0x0&&_0xbdfb1f+_0x3081d2['clientWidth']>_0x3e2b8f&&(_0x103410>0x0&&(_0xbdfb1f=_0x3081d2['offsetLeft']+_0x3c94ea['x'])),_0x1bf925<0x0&&(_0x1bf925=0x0),_0x1bf925>0x0&&_0x1bf925+_0x3081d2['clientHeight']>_0x281354&&(_0x24d39f>0x0&&(_0x1bf925=_0x3081d2['offsetTop']+_0x3c94ea['y']));}_0x3081d2['style']['left']=_0xbdfb1f-_0x3c94ea['x']+'px',_0x3081d2['style']['top']=_0x1bf925-_0x3c94ea['y']+'px',this['mouseDownPositionX']=_0x2edc98['x'],this['mouseDownPositionY']=_0x2edc98['y'];},this['onPointerUp']=()=>{document['removeEventListener']('pointermove',this['onPointerMove']),document['removeEventListener']('pointerup',this['onPointerUp']);};const {container:_0x3e3bbc,title:_0x45460a,cssClass:_0x51444b,onClose:_0x5ae38c,viewportContainer:_0x59cd0}=_0x52c1bb;this['root']=document['createElement']('div'),this['root']['classList']['add']('base-panel');_0x51444b&&this['root']['classList']['add'](_0x51444b);this['header']=document['createElement']('div'),this['header']['classList']['add']('header','draggable');const _0x5aad2a=document['createElement']('span');_0x5aad2a['innerText']=_0x45460a,_0x5aad2a['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'](_0x5aad2a),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']),_0x3e3bbc['appendChild'](this['root']),this['header']['addEventListener']('pointerdown',this['onPointerDown']),this['collapseBtn']['addEventListener']('click',_0x2c5257=>{_0x2c5257['stopPropagation']();const _0x2bdc87=this['originalPanelHeight']>0x0;_0x2bdc87?(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']),_0x5ae38c&&(this['onClose']=_0x5ae38c),_0x59cd0&&(this['viewportContainer']=_0x59cd0);}['setVisible'](_0x36962d){this['root']['style']['display']=_0x36962d?'':'none';}['isVisible'](){return this['root']['style']['display']!=='none';}['setTitle'](_0x45e166){this['header']['querySelector']('span.draggable')['innerText']=_0x45e166;}['setContent'](_0x32ea13){this['content']['innerHTML']=_0x32ea13;}['destroy'](){this['header']['removeEventListener']('pointerdown',this['onPointerDown']),this['closeBtn']['removeEventListener']('click',this['onHide']);}['getPanelTransform'](){const _0x24df09=window['getComputedStyle'](this['root']);let _0xd58b26=0x0,_0x1fbca5=0x0;const _0xb98e20=_0x24df09['transform'];if(_0xb98e20&&_0xb98e20['startsWith']('matrix')){const _0x2ca4ff=_0xb98e20['match'](/matrix\([^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+),[^\d\-]*([\d\.\-]+)\)/);_0x2ca4ff&&(_0xd58b26=parseFloat(_0x2ca4ff[0x5]),_0x1fbca5=parseFloat(_0x2ca4ff[0x6]));}else {if(_0xb98e20&&_0xb98e20['startsWith']('translate')){const _0x529a7f=_0xb98e20['match'](/translate\(([\d\.\-]+)px,\s*([\d\.\-]+)px\)/);_0x529a7f&&(_0xd58b26=parseFloat(_0x529a7f[0x1]),_0x1fbca5=parseFloat(_0x529a7f[0x2]));}}return new THREE['Vector2'](_0xd58b26,_0x1fbca5);}}
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(_0x2d2cd3,_0x54f79a,_0x226850=document['body']){this['container']=_0x226850,this['isFollowing']=![],this['diffX']=0x0,this['diffY']=0x0,this['start']=_0x544090=>{this['isFollowing']=!![],this['diffX']=_0x544090['clientX']-this['element']['offsetLeft'],this['diffY']=_0x544090['clientY']-this['element']['offsetTop'];},this['stop']=()=>{this['isFollowing']=![];},this['follow']=_0x576b94=>{if(!this['isFollowing'])return;const _0x32f9da=_0x576b94['clientX']-this['diffX'],_0x4a5202=_0x576b94['clientY']-this['diffY'];this['element']['style']['left']=_0x32f9da+'px',this['element']['style']['top']=_0x4a5202+'px';},this['element']=document['createElement']('div'),this['element']['id']=_0x2d2cd3,this['element']['classList']['add']('pop-panel');const _0x9ca904=document['createElement']('div');_0x9ca904['classList']['add']('pop-panel-header'),_0x9ca904['append'](_0x54f79a),this['element']['appendChild'](_0x9ca904),this['header']=_0x9ca904;const _0x23e76c=document['createElement']('div');_0x23e76c['classList']['add']('pop-panel-body'),this['element']['appendChild'](_0x23e76c),this['body']=_0x23e76c,_0x9ca904['addEventListener']('mousedown',this['start']),_0x9ca904['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(_0x1b9671,_0x4c4cca,_0x4e1c81){this['follow']=_0x5f4e99=>{this['node']['style']['left']=_0x5f4e99['offsetX']+0xf+'px',this['node']['style']['top']=_0x5f4e99['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']=_0x1b9671,_0x4c4cca&&this['node']['append'](_0x4c4cca),this['childNode']=document['createElement']('div'),this['target']=_0x4e1c81===null||_0x4e1c81===void 0x0?void 0x0:_0x4e1c81['target'],this['parentNode']=(_0x4e1c81===null||_0x4e1c81===void 0x0?void 0x0:_0x4e1c81['parentNode'])||document['body'],(_0x4e1c81===null||_0x4e1c81===void 0x0?void 0x0:_0x4e1c81['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']),!(_0x4e1c81===null||_0x4e1c81===void 0x0?void 0x0:_0x4e1c81['showOnCreate'])&&this['node']['setAttribute']('hidden','');}['setContent'](_0x42405b){this['node']['textContent']&&(this['node']['textContent']=null);for(let _0x41ddf1=0x0;_0x41ddf1<this['node']['children']['length'];++_0x41ddf1){const _0x5536a2=this['node']['children'][_0x41ddf1];this['node']['removeChild'](_0x5536a2);}this['node']['append'](_0x42405b),this['node']['appendChild'](this['childNode']);}['updateChildContent'](_0x2ad865){this['childNode']['textContent']&&(this['childNode']['textContent']=null);for(let _0x1dc1e3=0x0;_0x1dc1e3<this['node']['children']['length'];++_0x1dc1e3){const _0x373668=this['node']['children'][_0x1dc1e3];this['node']['removeChild'](_0x373668);}this['childNode']['append'](_0x2ad865);}}
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,7 +1,7 @@
1
1
  {
2
2
  "name": "@x-viewer/ui",
3
- "version": "0.10.0",
4
- "description": "The first typescript example for the Monorepo example",
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
5
  "author": "x-viewer",
6
6
  "license": "UNLICENSED",
7
7
  "keywords": [