@vertexvis/viewer 0.13.1 → 0.13.2-canary.2
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/dist/cjs/{browser.esm-31b03292.js → browser.esm-c51162f8.js} +1 -1
- package/dist/cjs/{bundle.esm-dc0a8361.js → bundle.esm-1b8b1f36.js} +34 -0
- package/dist/cjs/{config-90ee43d5.js → config-91efd353.js} +2 -2
- package/dist/cjs/{cursors-ad2fd395.js → cursors-14827f58.js} +1 -1
- package/dist/cjs/{dom-dd265f48.js → dom-c697cf99.js} +1 -1
- package/dist/cjs/{entities-aa59890e.js → entities-0829b4a4.js} +3 -3
- package/dist/cjs/index.cjs.js +13 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{mapper-f6e6cafe.js → mapper-67af470b.js} +2 -2
- package/dist/cjs/{markup-fb1553b1.js → markup-835f2e83.js} +2 -2
- package/dist/cjs/{measurement-aba1e0e8.js → measurement-8e0ce89a.js} +2 -2
- package/dist/cjs/{model-4ec0c36e.js → model-78241d4f.js} +1 -1
- package/dist/cjs/{overlays-40c6cbc7.js → overlays-06786e52.js} +2 -2
- package/dist/cjs/{png-decoder-27d25eed.js → png-decoder-01b76242.js} +1 -1
- package/dist/cjs/{results-bc325974.js → results-7a694238.js} +1 -1
- package/dist/cjs/{scene-d420fd26.js → scene-23535fc0.js} +176 -85
- package/dist/cjs/{streamAttributes-d6236448.js → streamAttributes-f13c1a96.js} +1431 -41
- package/dist/cjs/{utils-f80be307.js → utils-4a02e54b.js} +1 -1
- package/dist/cjs/{utils-545b1865.js → utils-5cc32a26.js} +1 -1
- package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +11 -11
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +6 -6
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +10 -10
- package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +5 -5
- package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +8 -8
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer.cjs.entry.js +198 -79
- package/dist/cjs/viewer.cjs.js +1 -1
- package/dist/cjs/{viewport-8c39089f.js → viewport-052809c7.js} +1 -1
- package/dist/collection/components/viewer/viewer.js +68 -4
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +3 -3
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +3 -3
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +3 -3
- package/dist/collection/index.js +2 -2
- package/dist/collection/lib/errors.js +8 -1
- package/dist/collection/lib/interactions/index.js +3 -1
- package/dist/collection/lib/interactions/interactionApi.js +4 -25
- package/dist/collection/lib/interactions/interactionApiOrthographic.js +50 -0
- package/dist/collection/lib/interactions/interactionApiPerspective.js +50 -0
- package/dist/collection/lib/mappers/frameStreaming.js +27 -5
- package/dist/collection/lib/rendering/matrices.js +13 -4
- package/dist/collection/lib/scenes/__mocks__/mocks.js +2 -2
- package/dist/collection/lib/scenes/camera.js +149 -77
- package/dist/collection/lib/scenes/mapper.js +3 -2
- package/dist/collection/lib/scenes/scene.js +23 -9
- package/dist/collection/lib/types/clippingPlanes.js +54 -17
- package/dist/collection/lib/types/depthBuffer.js +1 -1
- package/dist/collection/lib/types/frame.js +88 -23
- package/dist/collection/lib/types/frameCamera.js +81 -6
- package/dist/collection/lib/types/viewport.js +1 -1
- package/dist/collection/testing/fixtures.js +23 -10
- package/dist/collection/testing/viewer.js +5 -3
- package/dist/custom-elements/index.js +1821 -194
- package/dist/esm/{browser.esm-59e914f6.js → browser.esm-48f051a3.js} +1 -1
- package/dist/esm/{bundle.esm-d899b2d5.js → bundle.esm-df3a8a42.js} +35 -1
- package/dist/esm/{config-604c644e.js → config-3a5d3ea3.js} +2 -2
- package/dist/esm/{cursors-a7ec4adb.js → cursors-45f23dfe.js} +1 -1
- package/dist/esm/{dom-780d25be.js → dom-18d9ac79.js} +1 -1
- package/dist/esm/{entities-759d97cd.js → entities-60dfd79d.js} +3 -3
- package/dist/esm/index.js +12 -12
- package/dist/esm/index.mjs +12 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loader.mjs +1 -1
- package/dist/esm/{mapper-4b815e31.js → mapper-adf23dc4.js} +2 -2
- package/dist/esm/{markup-1d177b4a.js → markup-accb6b5c.js} +2 -2
- package/dist/esm/{measurement-12cdbf5c.js → measurement-6cd457a6.js} +2 -2
- package/dist/esm/{model-e5a4f00f.js → model-4982c15d.js} +1 -1
- package/dist/esm/{overlays-1919b192.js → overlays-1783a61a.js} +2 -2
- package/dist/esm/{png-decoder-3f1fa486.js → png-decoder-f35def4c.js} +1 -1
- package/dist/esm/{results-994bdb50.js → results-93d45acc.js} +1 -1
- package/dist/esm/{scene-2c2460d5.js → scene-2d8bdccc.js} +176 -85
- package/dist/esm/{streamAttributes-d623bb60.js → streamAttributes-87a3605c.js} +1426 -43
- package/dist/esm/{utils-5e57bf24.js → utils-9f4b25ec.js} +1 -1
- package/dist/esm/{utils-83a19677.js → utils-ed2346c0.js} +1 -1
- package/dist/esm/vertex-scene-tree-search_3.entry.js +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +4 -4
- package/dist/esm/vertex-viewer-dom-element_3.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
- package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup.entry.js +4 -4
- package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
- package/dist/esm/vertex-viewer-measurement-distance.entry.js +11 -11
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +6 -6
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +10 -10
- package/dist/esm/vertex-viewer-measurement-tool.entry.js +5 -5
- package/dist/esm/vertex-viewer-measurements.entry.js +8 -8
- package/dist/esm/vertex-viewer-view-cube.entry.js +3 -3
- package/dist/esm/vertex-viewer.entry.js +198 -79
- package/dist/esm/viewer.js +1 -1
- package/dist/esm/{viewport-01c886ea.js → viewport-6d4c0af0.js} +1 -1
- package/dist/types/components/viewer/viewer.d.ts +8 -0
- package/dist/types/components/viewer-dom-renderer/renderer2d.d.ts +2 -2
- package/dist/types/components/viewer-dom-renderer/renderer3d.d.ts +3 -3
- package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/utils.d.ts +2 -2
- package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +2 -2
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +2 -2
- package/dist/types/components.d.ts +15 -7
- package/dist/types/index.d.ts +1 -1
- package/dist/types/lib/errors.d.ts +3 -0
- package/dist/types/lib/interactions/index.d.ts +2 -0
- package/dist/types/lib/interactions/interactionApi.d.ts +20 -21
- package/dist/types/lib/interactions/interactionApiOrthographic.d.ts +21 -0
- package/dist/types/lib/interactions/interactionApiPerspective.d.ts +21 -0
- package/dist/types/lib/mappers/frameStreaming.d.ts +2 -0
- package/dist/types/lib/scenes/__mocks__/mocks.d.ts +2 -2
- package/dist/types/lib/scenes/camera.d.ts +100 -37
- package/dist/types/lib/scenes/scene.d.ts +1 -1
- package/dist/types/lib/types/clippingPlanes.d.ts +3 -1
- package/dist/types/lib/types/depthBuffer.d.ts +4 -4
- package/dist/types/lib/types/frame.d.ts +54 -11
- package/dist/types/lib/types/frameCamera.d.ts +21 -2
- package/dist/types/lib/types/viewport.d.ts +2 -3
- package/dist/types/testing/fixtures.d.ts +4 -2
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/{p-3f6ac74f.js → p-014561cd.js} +1 -1
- package/dist/viewer/p-121f2b40.js +18 -0
- package/dist/viewer/p-18ec4fed.js +4 -0
- package/dist/viewer/{p-e2297df2.entry.js → p-1acd0e56.entry.js} +1 -1
- package/dist/viewer/{p-da2f4a56.js → p-25dfee48.js} +1 -1
- package/dist/viewer/p-2e75198d.js +4 -0
- package/dist/viewer/p-38c06c25.js +4 -0
- package/dist/viewer/{p-67446e35.js → p-463151e0.js} +1 -1
- package/dist/viewer/{p-301660cf.js → p-546ae240.js} +1 -1
- package/dist/viewer/{p-d00e9203.js → p-6120a219.js} +1 -1
- package/dist/viewer/p-61db972b.js +4 -0
- package/dist/viewer/{p-a0df0e0c.js → p-6d9d3553.js} +1 -1
- package/dist/viewer/{p-f8d01b8a.entry.js → p-7c5bee8e.entry.js} +1 -1
- package/dist/viewer/{p-8decee06.entry.js → p-8de749a5.entry.js} +1 -1
- package/dist/viewer/{p-081e6873.js → p-8df35eee.js} +1 -1
- package/dist/viewer/{p-671c113c.entry.js → p-923b616f.entry.js} +1 -1
- package/dist/viewer/p-9b1ecc71.js +4 -0
- package/dist/viewer/{p-3810c24d.js → p-9fd5fc8e.js} +1 -1
- package/dist/viewer/p-b2d4c0cf.entry.js +4 -0
- package/dist/viewer/{p-364ce21c.js → p-b8bc15ec.js} +1 -1
- package/dist/viewer/{p-439220c6.js → p-b8f027eb.js} +1 -1
- package/dist/viewer/p-bc7f0ad6.entry.js +4 -0
- package/dist/viewer/{p-2cefb1b0.js → p-ce0fe8be.js} +1 -1
- package/dist/viewer/p-d939ecd3.entry.js +4 -0
- package/dist/viewer/{p-25eaab00.entry.js → p-de7eecce.entry.js} +1 -1
- package/dist/viewer/{p-4985fad5.js → p-e3fff448.js} +1 -1
- package/dist/viewer/{p-6e80f8b0.entry.js → p-e4934f47.entry.js} +1 -1
- package/dist/viewer/{p-df292b56.entry.js → p-e8f6cba6.entry.js} +1 -1
- package/dist/viewer/{p-353cfc7a.entry.js → p-ee86bed2.entry.js} +1 -1
- package/dist/viewer/{p-c62cb926.entry.js → p-f359a9ac.entry.js} +1 -1
- package/dist/viewer/{p-e07377fa.entry.js → p-fa7f2d0c.entry.js} +1 -1
- package/dist/viewer/{p-915d95ad.entry.js → p-ffde162f.entry.js} +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +8 -8
- package/dist/viewer/p-085e908a.js +0 -4
- package/dist/viewer/p-0aba71fd.js +0 -18
- package/dist/viewer/p-423410be.js +0 -4
- package/dist/viewer/p-432267bc.entry.js +0 -4
- package/dist/viewer/p-7cad9bf4.js +0 -4
- package/dist/viewer/p-d90f2f6d.entry.js +0 -4
- package/dist/viewer/p-f755af5a.entry.js +0 -4
- package/dist/viewer/p-f7cb7e59.js +0 -4
- package/dist/viewer/p-fe11d694.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**!
|
|
2
2
|
* Copyright (c) 2022 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as t,c as i,h as s,H as e,g as n}from"./p-cafa57a6.js";import{c as r}from"./p-f482325b.js";import{d as o,r as h}from"./p-fad9693e.js";import{e as l,p as a}from"./p-0aba71fd.js";import{a as c}from"./p-76c414a4.js";import"./p-112455b1.js";let d=class{constructor(s){t(this,s),this.search=i(this,"search",7),this.debounce=250,this.disabled=!1,this.placeholder=void 0,this.value="",this.focused=!1,this.handleTextInput=t=>{this.value=t.target.value,this.search.emit(this.value)},this.handleTextFocus=()=>{this.focused=!0},this.handleTextBlur=()=>{this.focused=!1},this.handleClear=t=>{t.preventDefault(),this.value="",this.search.emit(this.value),this.setFocus()}}async setFocus(){var t,i;"function"==typeof(null===(t=this.inputEl)||void 0===t?void 0:t.focus)&&(null===(i=this.inputEl)||void 0===i||i.focus())}componentDidLoad(){this.handleDebounceChanged()}render(){return s(e,null,s("div",{class:"root"},s("div",{class:"overlay icon icon-search"},s("slot",{name:"search-icon"},s("vertex-viewer-icon",{name:"search",size:"sm"}))),s("input",{class:r("input",{background:this.focused||this.value.length>0}),type:"text",ref:t=>this.inputEl=t,placeholder:this.placeholder,disabled:this.disabled,value:this.value,onInput:this.handleTextInput,onFocus:this.handleTextFocus,onBlur:this.handleTextBlur}),s("div",{class:r("overlay overlay-clear",{show:this.value.length>0})},s("button",{class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},s("slot",{name:"clear-icon"},s("vertex-viewer-icon",{name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){this.search=o(this.search,this.debounce)}};function u(t){return t.toLowerCase()}d.style="button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{--scene-tree-search-search-icon-offset:8px;--scene-tree-search-clear-button-offset:8px;--scene-tree-search-input-padding:0.5rem 32px;--scene-tree-search-input-border:none;--scene-tree-search-input-border-radius:0.25rem;--scene-tree-search-input-background:none;--scene-tree-search-focused-input-background:var(--neutral-200);--scene-tree-search-focused-input-outline:none;display:block;width:100%;font-size:0.875rem}.root{width:100%;position:relative}.input{background:var(--scene-tree-search-input-background);border:var(--scene-tree-search-input-border);border-radius:var(--scene-tree-search-input-border-radius);box-sizing:border-box;font-size:inherit;padding:var(--scene-tree-search-input-padding);outline:none;width:100%}.input.background{background:var(--scene-tree-search-focused-input-background);outline:var(--scene-tree-search-focused-input-outline)}.overlay{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.overlay-clear{display:none;right:var(--scene-tree-search-clear-button-offset)}.overlay-clear.show{display:flex}.icon{color:var(--neutral-700)}.icon-search{position:absolute;left:var(--scene-tree-search-search-icon-offset);pointer-events:none}.clear-btn{display:flex;align-items:center;justify-content:center;pointer-events:initial;cursor:pointer}.clear-btn:hover{color:var(--neutral-800)}.clear-btn:disabled{pointer-events:none;opacity:0.5}";var v=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],p=/[^A-Z0-9]+/gi;function f(t,i,s){return i instanceof RegExp?t.replace(i,s):i.reduce((function(t,i){return t.replace(i,s)}),t)}function m(t,i){var s=t.charAt(0),e=t.substr(1).toLowerCase();return i>0&&s>="0"&&s<="9"?"_"+s+e:""+s.toUpperCase()+e}function b(t,i){return 0===i?t.toLowerCase():m(t,i)}function g(t,i){return void 0===i&&(i={}),function(t,i){return void 0===i&&(i={}),function(t,i){void 0===i&&(i={});for(var s=i.splitRegexp,e=i.stripRegexp,n=void 0===e?p:e,r=i.transform,o=void 0===r?u:r,h=i.delimiter,l=void 0===h?" ":h,a=f(f(t,void 0===s?v:s,"$1\0$2"),n,"\0"),c=0,d=a.length;"\0"===a.charAt(c);)c++;for(;"\0"===a.charAt(d-1);)d--;return a.slice(c,d).split("\0").map(o).join(l)}(t,l({delimiter:"",transform:m},i))}(t,l({transform:b},i))}const w=/{{(.+)}}/;class y{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((i=>i.bind(t)))}}class x{constructor(t,i){this.node=t,this.expr=i}}class z extends x{constructor(t,i){super(t,i)}bind(t){const i=C(t,this.expr);i!==this.node.textContent&&(this.node.textContent=i)}}class $ extends x{constructor(t,i,s){super(t,i),this.attr=s}bind(t){const i=C(t,this.expr);this.node.getAttribute(this.attr)!==i&&this.node.setAttribute(this.attr,i)}}class D extends x{constructor(t,i,s){super(t,i),this.prop=s}bind(t){const i=function(t,i){const s=j(i);return null!=s?E(t,s,!0):i}(t,this.expr);this.node[this.prop]!==i&&(this.node[this.prop]=i)}}class k extends x{constructor(t,i,s){super(t,i),this.eventName=s}bind(t){var i;const s=j(this.expr);if(null!=s){null===(i=this.disposable)||void 0===i||i.dispose();const e=E(t,s,!0);this.node.addEventListener(this.eventName,e),this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,e)}}}}}function M(t){const i=[];if(t.nodeType===Node.ELEMENT_NODE){const s=t;Array.from(s.attributes).filter((t=>w.test(t.value))).forEach((t=>{if(t.name.startsWith("event:")){const e=g(t.name.replace("event:",""));i.push(new k(s,t.value,e))}else if(t.name.startsWith("attr:"))i.push(new $(s,t.value,t.name.replace("attr:","")));else if(t.name.startsWith("prop:")){const e=g(t.name.replace("prop:",""));i.push(new D(s,t.value,e))}}))}else t.nodeType===Node.TEXT_NODE&&null!=t.textContent&&w.test(t.textContent)&&i.push(new z(t,t.textContent));for(let s=0;s<t.childNodes.length;s++)i.push(...M(t.childNodes[s]));return i}function j(t){const i=w.exec(t);return null!=i?i[1]:void 0}function C(t,i){const s=j(i);if(null!=s){const e=E(t,s,!0);return i.replace(`{{${s}}}`,null==e?void 0:e.toString())}return i}function E(t,i,s=!1){const[e,...n]=i.split(".");if(s&&0===n.length)return t;if(s&&n.length>0)return E(t,n.join("."),!1);{const i=t[e];return n.length>0?E(i,n.join("."),!1):i}}class L{constructor(t,i){this.container=t,this.elementFactory=i,this.instanceMap=new Map,this.elements=[]}swapHeadToTail(t){const i=this.elements.splice(0,t);return this.elements.splice(this.elements.length,0,...i),this.elements.concat()}swapTailToHead(t){const i=this.elements.splice(-t,t);return this.elements.splice(0,0,...i),this.elements.concat()}updateElements(t){const i=t-this.elements.length;if(i>0)for(let t=0;t<i;t++)this.createElement();else for(let t=0;t<-i;t++)this.deleteElement();return this.elements.concat()}updateData(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i),n=t(s);null==e||e.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t,this.updateElements(0)}iterateElements(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);if(null==e)throw new Error("Binding not found for element.");t(i,e.bindings,s)}))}createElement(){const t=this.elementFactory();return this.elements.push(t.element),this.instanceMap.set(t.element,t),this.container.append(t.element),t}deleteElement(){const t=this.elements.pop();null!=t&&(this.instanceMap.delete(t),t.remove())}}function R(t){const i=t.content.cloneNode(!0);return{element:i.firstElementChild,bindings:new y(M(i))}}let T=class{constructor(s){t(this,s),this.layoutRendered=i(this,"layoutRendered",7),this.rows=[],this.totalRows=0,this.rowHeight=24,this.overScanCount=25,this.layoutOffset=0,this.scrollOffset=0,this.viewportStartIndex=0,this.viewportEndIndex=0,this.columnGridLayout="1fr",this.columnGridFixedLayout="",this.isComputingCellHeight=!0,this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]},this.lastStartIndex=0,this.columnElements=[],this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1,i=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex,this.iterateColumns(((s,e,n)=>{e.updateElements(t),i>0?e.swapHeadToTail(i):e.swapTailToHead(-i),s.style.minHeight=this.rowHeight*this.totalRows+"px";const r=0===n?t=>`calc(${t} * 0.5rem)`:()=>"0";e.iterateElements(((t,i,s)=>{const e=this.stateMap.viewportRows[s];null!=e&&this.updateCell(e,t,i,s,r)}))}))},this.updateCell=(t,i,s,e,n)=>{i.style.position="absolute",i.style.top=(this.viewportStartIndex+e)*this.rowHeight+"px",i.style.boxSizing="border-box",i.style.height=`${this.rowHeight}px`,i.style.width="100%",i.style.paddingLeft=n(t.node.depth),i.tree=this.tree,i.node=t.node,i.hoveredNodeId=this.hoveredNodeId,s.bind(t)},this.updateLayoutPosition=()=>{h((()=>{var t;null!=this.tableElement&&(this.layoutOffset=null!==(t=this.tableElement.getBoundingClientRect().top)&&void 0!==t?t:0)}))},this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((i=>i*t)))},this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((i=>i/t)))},this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100}));const t=this.getLayoutWidth();null!=t&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t})))},this.updateColumnElements=()=>{this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column")),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)}))},this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const i={index:0,node:{id:{hex:""},name:"Dummy row",expanded:!1,selected:!1,visible:!1,partiallyVisible:!1,isLeaf:!1,depth:0,columnsList:[],filterHit:!1},metadata:{},data:{}},{bindings:s,element:e}=this.createColumnCellInstance(this.columnElements[0]);s.bind(i),e.style.visibility="hidden",null===(t=this.columnElements[0])||void 0===t||t.appendChild(e),"function"==typeof e.componentOnReady&&await e.componentOnReady();let n=e.clientHeight,r=0;for(;0===n&&r<10;)n=await new Promise((t=>{setTimeout((()=>t(e.getBoundingClientRect().height)),5)})),r+=1;this.rowHeight=null!=n?n:this.rowHeight,e.remove(),this.isComputingCellHeight=!1}},this.computeHeaderHeight=()=>{var t;null==this.stateMap.headerHeight&&(this.stateMap.headerHeight=null===(t=this.headerElement)||void 0===t?void 0:t.getBoundingClientRect().height,this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`))},this.computeColumnGridLayout=()=>{0===this.stateMap.columnWidths.length&&(this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100})));const t=this.getLayoutWidth();null!=t&&0===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t}))),this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,i)=>`${t} ${i}px`),"")} 1fr`,this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,i)=>`${t} ${i}px`),"")}`},this.handleCellHover=t=>{var i,s,e;this.hoveredNodeId=null===(e=null===(s=null===(i=t.detail)||void 0===i?void 0:i.node)||void 0===s?void 0:s.id)||void 0===e?void 0:e.hex},this.bindHeaderData=()=>{null==this.stateMap.headerInstances&&(this.stateMap.headerInstances=this.columnElements.map(((t,i)=>{var s;const e=this.createHeaderInstance(t);return null!=e&&(e.element.style.paddingRight=i===this.columnElements.length-1?"0":"var(--scene-tree-table-column-gap)",e.element.slot="header",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element)),e})).filter((t=>null!=t))),null==this.stateMap.headerDividerInstances&&(this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,i)=>{var s;const e=this.createDividerInstance();return e.element.slot="divider",e.element.style.position="absolute",e.element.style.right="0",e.element.style.pointerEvents="auto",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element),e})))},this.rebindHeaderData=()=>{var t,i;this.removeDividerDragListeners(),null===(t=this.stateMap.headerInstances)||void 0===t||t.forEach((t=>t.element.remove())),null===(i=this.stateMap.headerDividerInstances)||void 0===i||i.forEach((t=>t.element.remove())),this.stateMap.headerInstances=void 0,this.stateMap.headerDividerInstances=void 0,this.bindHeaderData(),this.addDividerDragListeners()},this.createDividerPointerDownHandler=t=>i=>{var s,e;i.preventDefault(),i.stopPropagation(),this.lastDividerPointerPosition=a.create(Math.floor(i.clientX),Math.floor(i.clientY)),this.resizingColumnIndex=t,null===(e=null===(s=this.stateMap.headerDividerInstances)||void 0===s?void 0:s[t])||void 0===e||e.element.classList.add("dragging"),window.addEventListener("pointermove",this.handleDividerPointerMove),window.addEventListener("pointerup",this.handleDividerPointerUp)},this.handleDividerPointerMove=t=>{const i=a.create(Math.floor(t.clientX),Math.floor(t.clientY));if(null!=this.lastDividerPointerPosition&&null!=this.resizingColumnIndex){const t=a.subtract(this.lastDividerPointerPosition,i);Math.abs(t.x)>=1&&this.isValidResize(t,this.resizingColumnIndex)&&(this.stateMap.columnWidths[this.resizingColumnIndex]-=t.x,this.resizingColumnIndex+1<this.stateMap.columnWidths.length&&(this.stateMap.columnWidths[this.resizingColumnIndex+1]+=t.x),this.lastDividerPointerPosition=i,this.computeColumnGridLayout())}},this.handleDividerPointerUp=()=>{var t,i;null!=this.resizingColumnIndex&&(null===(i=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t[this.resizingColumnIndex])||void 0===i||i.element.classList.remove("dragging")),this.lastDividerPointerPosition=void 0,this.resizingColumnIndex=void 0,this.recomputeColumnPercentages(),window.removeEventListener("pointermove",this.handleDividerPointerMove),window.removeEventListener("pointerup",this.handleDividerPointerUp)},this.isValidResize=(t,i)=>{var s,e,n,r;const o=this.columnElements[i],h=this.columnElements[i+1],l=this.stateMap.columnWidths[i],a=this.stateMap.columnWidths[i+1],c=null!==(s=o.minWidth)&&void 0!==s?s:0,d=null!==(e=o.maxWidth)&&void 0!==e?e:Number.MAX_SAFE_INTEGER,u=null!==(n=h.minWidth)&&void 0!==n?n:0,v=null!==(r=h.maxWidth)&&void 0!==r?r:Number.MAX_SAFE_INTEGER;return l-t.x>c&&l-t.x<d&&(null==h||a+t.x>u&&a+t.x<v)},this.handleScrollChanged=t=>{this.scrollOffset=t.target.scrollTop,this.computeAndUpdateViewportRows()}}componentWillLoad(){this.updateColumnElements(),this.createPools(),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)})),this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=void 0,this.computeHeaderHeight()})),this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition(),this.clearLayoutHeight(),this.clearLayoutWidth(),this.recomputeColumnWidths(),this.computeColumnGridLayout()}))}componentDidLoad(){var t,i,s;this.computeColumnGridLayout(),this.ensureDividerTemplateDefined(),this.computeCellHeight(),this.computeHeaderHeight(),this.computeInitialColumnWidths(),this.rebindHeaderData(),null===(t=this.tableElement)||void 0===t||t.addEventListener("scroll",this.handleScrollChanged,{passive:!0}),null!=this.headerElement&&(null===(i=this.headerResizeObserver)||void 0===i||i.observe(this.headerElement)),null===(s=this.resizeObserver)||void 0===s||s.observe(this.hostEl)}async componentWillRender(){await this.computeAndUpdateViewportRows()}componentDidRender(){this.layoutColumns(),this.layoutRendered.emit()}disconnectedCallback(){var t,i,s;this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),null===(t=this.tableElement)||void 0===t||t.removeEventListener("scroll",this.handleScrollChanged),this.removeDividerDragListeners(),null===(i=this.headerResizeObserver)||void 0===i||i.disconnect(),null===(s=this.resizeObserver)||void 0===s||s.disconnect(),this.stateMap.columnWidths=[],this.stateMap.columnWidthPercentages=[]}async scrollToPosition(t,i){null!=this.tableElement&&function(t,i,s){t.scrollTo(Object.assign({top:i},s))}(this.tableElement,t,i)}render(){return s(e,null,s("div",{class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},s("slot",{name:"header"})),s("div",{class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},s("slot",{onSlotchange:()=>{this.ensureDividerTemplateDefined(),this.updateColumnElements(),this.recreateColumnPools(),this.computeInitialColumnWidths(),this.rebindHeaderData(),this.computeColumnGridLayout()}})),s("div",{class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},s("slot",{name:"divider"})),null!=this.resizingColumnIndex&&s("div",{class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();if(null!=t){const i=Math.ceil(t/this.rowHeight),s=Math.floor(this.scrollOffset/this.rowHeight),e=s+i,n=Math.max(0,s-this.overScanCount),r=Math.min(this.totalRows-1,e+this.overScanCount),o=this.getViewportRows(n,r);this.viewportStartIndex=n,this.viewportEndIndex=r,this.stateMap.viewportRows=o}}async computeAndUpdateViewportRows(){var t;this.computeViewportRows(),(null===(t=this.controller)||void 0===t?void 0:t.isConnected)&&await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}createPools(){null==this.stateMap.columnElementPools&&(this.stateMap.columnElementPools=this.columnElements.reduce(((t,i)=>t.set(i,new L(i,(()=>this.createColumnCellInstance(i))))),new WeakMap))}recreateColumnPools(){this.columnElements.forEach((t=>{var i,s,e;null==(null===(i=this.stateMap.columnElementPools)||void 0===i?void 0:i.get(t))?null===(s=this.stateMap.columnElementPools)||void 0===s||s.set(t,new L(t,(()=>this.createColumnCellInstance(t)))):null===(e=this.stateMap.columnElementPools.get(t))||void 0===e||e.updateElementFactory((()=>this.createColumnCellInstance(t)))}))}iterateColumns(t){this.columnElements.forEach(((i,s)=>{var e;const n=null===(e=this.stateMap.columnElementPools)||void 0===e?void 0:e.get(i);if(null==n)throw new Error("Cannot find pool for column");t(i,n,s)}))}ensureDividerTemplateDefined(){if(null==this.hostEl.querySelector('template[slot="divider"]')){const t=document.createElement("template");t.slot="divider",t.innerHTML='\n <vertex-scene-tree-table-resize-divider slot="divider">\n </vertex-scene-tree-table-resize-divider>\n ',this.hostEl.appendChild(t)}}createHeaderInstance(t){const i=t.querySelector('template[slot="header"]');if(null!=i)return R(i)}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(null!=t)return R(t);throw new Error("Table is missing divider template element")}createColumnCellInstance(t){const i=t.querySelector('template:not([slot="header"])');if(null!=i)return R(i);throw new Error("Column is missing cell template element")}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t.map(((t,i)=>{const s=this.createDividerPointerDownHandler(i);return t.element.addEventListener("pointerdown",s),s}))}removeDividerDragListeners(){var t;if(null!=this.stateMap.headerDividerListeners){const i=this.stateMap.headerDividerListeners;null===(t=this.stateMap.headerDividerInstances)||void 0===t||t.forEach(((t,s)=>{const e=i[s];null!=e&&t.element.removeEventListener("pointerdown",e)})),this.stateMap.headerDividerListeners=void 0}}getViewportRows(t,i){return this.rows.slice(t,i+1).map((t=>null!=t?this.populateRowData(t):t))}populateRowData(t){var i;if(null!=this.rowData&&null!=t){const s=(null===(i=this.rowData)||void 0===i?void 0:i.call(this,t))||{};return Object.assign(Object.assign({},t),{data:s})}return t}getLayoutHeight(){return null==this.layoutHeight&&null!=this.tableElement&&(this.layoutHeight=c(this.tableElement)),this.layoutHeight}getLayoutWidth(){return null==this.layoutWidth&&(this.layoutWidth=this.hostEl.clientWidth),this.layoutWidth}clearLayoutHeight(){this.layoutHeight=void 0}clearLayoutWidth(){this.layoutWidth=void 0}get hostEl(){return n(this)}};T.style=":host{position:relative;display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;font-size:0.825rem;--scene-tree-table-row-padding:2px 0px;--scene-tree-table-column-gap:0.5rem;--scene-tree-table-column-resize-cursor:col-resize}.header{position:relative;display:grid;width:100%;border-bottom:var(--scene-tree-toolbar-separator)}.table{position:relative;display:grid;width:100%;height:100%;overflow:auto}.resize-overlay{position:absolute;top:0;cursor:var(--scene-tree-table-column-resize-cursor);z-index:1000;width:100%;height:100%}.divider-overlay{position:absolute;top:0;display:grid;pointer-events:none;z-index:2000;width:100%;height:100%}";let _=class{constructor(i){t(this,i)}render(){return s(e,null,s("div",{class:"content"},s("slot",{name:"before"})),s("div",{class:"content content-primary"},s("slot",null)),s("div",{class:"content"},s("slot",{name:"after"})))}};_.style=":host{--scene-tree-toolbar-content-gap:8px;display:flex;padding:0.5rem}.content{display:flex;align-items:center}.content-primary{width:100%}::slotted(:not(:first-child)){margin-left:var(--scene-tree-toolbar-content-gap)}";export{d as vertex_scene_tree_search,T as vertex_scene_tree_table_layout,_ as vertex_scene_tree_toolbar}
|
|
4
|
+
import{r as t,c as i,h as s,H as e,g as n}from"./p-cafa57a6.js";import{c as r}from"./p-f482325b.js";import{d as o,r as h}from"./p-fad9693e.js";import{e as l,p as a}from"./p-121f2b40.js";import{a as c}from"./p-76c414a4.js";import"./p-112455b1.js";let d=class{constructor(s){t(this,s),this.search=i(this,"search",7),this.debounce=250,this.disabled=!1,this.placeholder=void 0,this.value="",this.focused=!1,this.handleTextInput=t=>{this.value=t.target.value,this.search.emit(this.value)},this.handleTextFocus=()=>{this.focused=!0},this.handleTextBlur=()=>{this.focused=!1},this.handleClear=t=>{t.preventDefault(),this.value="",this.search.emit(this.value),this.setFocus()}}async setFocus(){var t,i;"function"==typeof(null===(t=this.inputEl)||void 0===t?void 0:t.focus)&&(null===(i=this.inputEl)||void 0===i||i.focus())}componentDidLoad(){this.handleDebounceChanged()}render(){return s(e,null,s("div",{class:"root"},s("div",{class:"overlay icon icon-search"},s("slot",{name:"search-icon"},s("vertex-viewer-icon",{name:"search",size:"sm"}))),s("input",{class:r("input",{background:this.focused||this.value.length>0}),type:"text",ref:t=>this.inputEl=t,placeholder:this.placeholder,disabled:this.disabled,value:this.value,onInput:this.handleTextInput,onFocus:this.handleTextFocus,onBlur:this.handleTextBlur}),s("div",{class:r("overlay overlay-clear",{show:this.value.length>0})},s("button",{class:"clear-btn icon",tabIndex:-1,onMouseDown:this.handleClear,disabled:this.disabled},s("slot",{name:"clear-icon"},s("vertex-viewer-icon",{name:"close-circle",size:"sm"}))))))}handleDebounceChanged(){this.search=o(this.search,this.debounce)}};function u(t){return t.toLowerCase()}d.style="button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{--scene-tree-search-search-icon-offset:8px;--scene-tree-search-clear-button-offset:8px;--scene-tree-search-input-padding:0.5rem 32px;--scene-tree-search-input-border:none;--scene-tree-search-input-border-radius:0.25rem;--scene-tree-search-input-background:none;--scene-tree-search-focused-input-background:var(--neutral-200);--scene-tree-search-focused-input-outline:none;display:block;width:100%;font-size:0.875rem}.root{width:100%;position:relative}.input{background:var(--scene-tree-search-input-background);border:var(--scene-tree-search-input-border);border-radius:var(--scene-tree-search-input-border-radius);box-sizing:border-box;font-size:inherit;padding:var(--scene-tree-search-input-padding);outline:none;width:100%}.input.background{background:var(--scene-tree-search-focused-input-background);outline:var(--scene-tree-search-focused-input-outline)}.overlay{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.overlay-clear{display:none;right:var(--scene-tree-search-clear-button-offset)}.overlay-clear.show{display:flex}.icon{color:var(--neutral-700)}.icon-search{position:absolute;left:var(--scene-tree-search-search-icon-offset);pointer-events:none}.clear-btn{display:flex;align-items:center;justify-content:center;pointer-events:initial;cursor:pointer}.clear-btn:hover{color:var(--neutral-800)}.clear-btn:disabled{pointer-events:none;opacity:0.5}";var v=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],p=/[^A-Z0-9]+/gi;function f(t,i,s){return i instanceof RegExp?t.replace(i,s):i.reduce((function(t,i){return t.replace(i,s)}),t)}function m(t,i){var s=t.charAt(0),e=t.substr(1).toLowerCase();return i>0&&s>="0"&&s<="9"?"_"+s+e:""+s.toUpperCase()+e}function b(t,i){return 0===i?t.toLowerCase():m(t,i)}function g(t,i){return void 0===i&&(i={}),function(t,i){return void 0===i&&(i={}),function(t,i){void 0===i&&(i={});for(var s=i.splitRegexp,e=i.stripRegexp,n=void 0===e?p:e,r=i.transform,o=void 0===r?u:r,h=i.delimiter,l=void 0===h?" ":h,a=f(f(t,void 0===s?v:s,"$1\0$2"),n,"\0"),c=0,d=a.length;"\0"===a.charAt(c);)c++;for(;"\0"===a.charAt(d-1);)d--;return a.slice(c,d).split("\0").map(o).join(l)}(t,l({delimiter:"",transform:m},i))}(t,l({transform:b},i))}const w=/{{(.+)}}/;class y{constructor(t){this.bindings=t}bind(t){this.bindings.forEach((i=>i.bind(t)))}}class x{constructor(t,i){this.node=t,this.expr=i}}class z extends x{constructor(t,i){super(t,i)}bind(t){const i=C(t,this.expr);i!==this.node.textContent&&(this.node.textContent=i)}}class $ extends x{constructor(t,i,s){super(t,i),this.attr=s}bind(t){const i=C(t,this.expr);this.node.getAttribute(this.attr)!==i&&this.node.setAttribute(this.attr,i)}}class D extends x{constructor(t,i,s){super(t,i),this.prop=s}bind(t){const i=function(t,i){const s=j(i);return null!=s?E(t,s,!0):i}(t,this.expr);this.node[this.prop]!==i&&(this.node[this.prop]=i)}}class k extends x{constructor(t,i,s){super(t,i),this.eventName=s}bind(t){var i;const s=j(this.expr);if(null!=s){null===(i=this.disposable)||void 0===i||i.dispose();const e=E(t,s,!0);this.node.addEventListener(this.eventName,e),this.disposable={dispose:()=>{this.node.removeEventListener(this.eventName,e)}}}}}function M(t){const i=[];if(t.nodeType===Node.ELEMENT_NODE){const s=t;Array.from(s.attributes).filter((t=>w.test(t.value))).forEach((t=>{if(t.name.startsWith("event:")){const e=g(t.name.replace("event:",""));i.push(new k(s,t.value,e))}else if(t.name.startsWith("attr:"))i.push(new $(s,t.value,t.name.replace("attr:","")));else if(t.name.startsWith("prop:")){const e=g(t.name.replace("prop:",""));i.push(new D(s,t.value,e))}}))}else t.nodeType===Node.TEXT_NODE&&null!=t.textContent&&w.test(t.textContent)&&i.push(new z(t,t.textContent));for(let s=0;s<t.childNodes.length;s++)i.push(...M(t.childNodes[s]));return i}function j(t){const i=w.exec(t);return null!=i?i[1]:void 0}function C(t,i){const s=j(i);if(null!=s){const e=E(t,s,!0);return i.replace(`{{${s}}}`,null==e?void 0:e.toString())}return i}function E(t,i,s=!1){const[e,...n]=i.split(".");if(s&&0===n.length)return t;if(s&&n.length>0)return E(t,n.join("."),!1);{const i=t[e];return n.length>0?E(i,n.join("."),!1):i}}class L{constructor(t,i){this.container=t,this.elementFactory=i,this.instanceMap=new Map,this.elements=[]}swapHeadToTail(t){const i=this.elements.splice(0,t);return this.elements.splice(this.elements.length,0,...i),this.elements.concat()}swapTailToHead(t){const i=this.elements.splice(-t,t);return this.elements.splice(0,0,...i),this.elements.concat()}updateElements(t){const i=t-this.elements.length;if(i>0)for(let t=0;t<i;t++)this.createElement();else for(let t=0;t<-i;t++)this.deleteElement();return this.elements.concat()}updateData(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i),n=t(s);null==e||e.bindings.bind(n)}))}updateElementFactory(t){this.elementFactory=t,this.updateElements(0)}iterateElements(t){this.elements.forEach(((i,s)=>{const e=this.instanceMap.get(i);if(null==e)throw new Error("Binding not found for element.");t(i,e.bindings,s)}))}createElement(){const t=this.elementFactory();return this.elements.push(t.element),this.instanceMap.set(t.element,t),this.container.append(t.element),t}deleteElement(){const t=this.elements.pop();null!=t&&(this.instanceMap.delete(t),t.remove())}}function R(t){const i=t.content.cloneNode(!0);return{element:i.firstElementChild,bindings:new y(M(i))}}let T=class{constructor(s){t(this,s),this.layoutRendered=i(this,"layoutRendered",7),this.rows=[],this.totalRows=0,this.rowHeight=24,this.overScanCount=25,this.layoutOffset=0,this.scrollOffset=0,this.viewportStartIndex=0,this.viewportEndIndex=0,this.columnGridLayout="1fr",this.columnGridFixedLayout="",this.isComputingCellHeight=!0,this.stateMap={viewportRows:[],columnWidths:[],columnWidthPercentages:[]},this.lastStartIndex=0,this.columnElements=[],this.layoutColumns=()=>{const t=this.viewportEndIndex-this.viewportStartIndex+1,i=this.viewportStartIndex-this.lastStartIndex;this.lastStartIndex=this.viewportStartIndex,this.iterateColumns(((s,e,n)=>{e.updateElements(t),i>0?e.swapHeadToTail(i):e.swapTailToHead(-i),s.style.minHeight=this.rowHeight*this.totalRows+"px";const r=0===n?t=>`calc(${t} * 0.5rem)`:()=>"0";e.iterateElements(((t,i,s)=>{const e=this.stateMap.viewportRows[s];null!=e&&this.updateCell(e,t,i,s,r)}))}))},this.updateCell=(t,i,s,e,n)=>{i.style.position="absolute",i.style.top=(this.viewportStartIndex+e)*this.rowHeight+"px",i.style.boxSizing="border-box",i.style.height=`${this.rowHeight}px`,i.style.width="100%",i.style.paddingLeft=n(t.node.depth),i.tree=this.tree,i.node=t.node,i.hoveredNodeId=this.hoveredNodeId,s.bind(t)},this.updateLayoutPosition=()=>{h((()=>{var t;null!=this.tableElement&&(this.layoutOffset=null!==(t=this.tableElement.getBoundingClientRect().top)&&void 0!==t?t:0)}))},this.recomputeColumnWidths=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidths=this.stateMap.columnWidthPercentages.map((i=>i*t)))},this.recomputeColumnPercentages=()=>{const t=this.getLayoutWidth();null!=t&&this.stateMap.columnWidths.length===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.stateMap.columnWidths.map((i=>i/t)))},this.computeInitialColumnWidths=()=>{this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100}));const t=this.getLayoutWidth();null!=t&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t})))},this.updateColumnElements=()=>{this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),this.columnElements=Array.from(this.hostEl.querySelectorAll("vertex-scene-tree-table-column")),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)}))},this.computeCellHeight=async()=>{var t;if(this.isComputingCellHeight&&this.columnElements.length>0){const i={index:0,node:{id:{hex:""},name:"Dummy row",expanded:!1,selected:!1,visible:!1,partiallyVisible:!1,isLeaf:!1,depth:0,columnsList:[],filterHit:!1},metadata:{},data:{}},{bindings:s,element:e}=this.createColumnCellInstance(this.columnElements[0]);s.bind(i),e.style.visibility="hidden",null===(t=this.columnElements[0])||void 0===t||t.appendChild(e),"function"==typeof e.componentOnReady&&await e.componentOnReady();let n=e.clientHeight,r=0;for(;0===n&&r<10;)n=await new Promise((t=>{setTimeout((()=>t(e.getBoundingClientRect().height)),5)})),r+=1;this.rowHeight=null!=n?n:this.rowHeight,e.remove(),this.isComputingCellHeight=!1}},this.computeHeaderHeight=()=>{var t;null==this.stateMap.headerHeight&&(this.stateMap.headerHeight=null===(t=this.headerElement)||void 0===t?void 0:t.getBoundingClientRect().height,this.hostEl.style.setProperty("--header-height",`${this.stateMap.headerHeight}px`))},this.computeColumnGridLayout=()=>{0===this.stateMap.columnWidths.length&&(this.stateMap.columnWidths=this.columnElements.map((t=>{var i;return null!==(i=t.initialWidth)&&void 0!==i?i:100})));const t=this.getLayoutWidth();null!=t&&0===this.stateMap.columnWidthPercentages.length&&(this.stateMap.columnWidthPercentages=this.columnElements.map((i=>{var s;return(null!==(s=i.initialWidth)&&void 0!==s?s:100)/t}))),this.columnGridLayout=`${this.stateMap.columnWidths.slice(0,-1).reduce(((t,i)=>`${t} ${i}px`),"")} 1fr`,this.columnGridFixedLayout=`${this.stateMap.columnWidths.reduce(((t,i)=>`${t} ${i}px`),"")}`},this.handleCellHover=t=>{var i,s,e;this.hoveredNodeId=null===(e=null===(s=null===(i=t.detail)||void 0===i?void 0:i.node)||void 0===s?void 0:s.id)||void 0===e?void 0:e.hex},this.bindHeaderData=()=>{null==this.stateMap.headerInstances&&(this.stateMap.headerInstances=this.columnElements.map(((t,i)=>{var s;const e=this.createHeaderInstance(t);return null!=e&&(e.element.style.paddingRight=i===this.columnElements.length-1?"0":"var(--scene-tree-table-column-gap)",e.element.slot="header",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element)),e})).filter((t=>null!=t))),null==this.stateMap.headerDividerInstances&&(this.stateMap.headerDividerInstances=this.columnElements.slice(0,-1).map(((t,i)=>{var s;const e=this.createDividerInstance();return e.element.slot="divider",e.element.style.position="absolute",e.element.style.right="0",e.element.style.pointerEvents="auto",e.element.style.gridColumnStart=`${i+1}`,e.element.style.gridColumnEnd=`${i+2}`,null===(s=this.hostEl)||void 0===s||s.appendChild(e.element),e})))},this.rebindHeaderData=()=>{var t,i;this.removeDividerDragListeners(),null===(t=this.stateMap.headerInstances)||void 0===t||t.forEach((t=>t.element.remove())),null===(i=this.stateMap.headerDividerInstances)||void 0===i||i.forEach((t=>t.element.remove())),this.stateMap.headerInstances=void 0,this.stateMap.headerDividerInstances=void 0,this.bindHeaderData(),this.addDividerDragListeners()},this.createDividerPointerDownHandler=t=>i=>{var s,e;i.preventDefault(),i.stopPropagation(),this.lastDividerPointerPosition=a.create(Math.floor(i.clientX),Math.floor(i.clientY)),this.resizingColumnIndex=t,null===(e=null===(s=this.stateMap.headerDividerInstances)||void 0===s?void 0:s[t])||void 0===e||e.element.classList.add("dragging"),window.addEventListener("pointermove",this.handleDividerPointerMove),window.addEventListener("pointerup",this.handleDividerPointerUp)},this.handleDividerPointerMove=t=>{const i=a.create(Math.floor(t.clientX),Math.floor(t.clientY));if(null!=this.lastDividerPointerPosition&&null!=this.resizingColumnIndex){const t=a.subtract(this.lastDividerPointerPosition,i);Math.abs(t.x)>=1&&this.isValidResize(t,this.resizingColumnIndex)&&(this.stateMap.columnWidths[this.resizingColumnIndex]-=t.x,this.resizingColumnIndex+1<this.stateMap.columnWidths.length&&(this.stateMap.columnWidths[this.resizingColumnIndex+1]+=t.x),this.lastDividerPointerPosition=i,this.computeColumnGridLayout())}},this.handleDividerPointerUp=()=>{var t,i;null!=this.resizingColumnIndex&&(null===(i=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t[this.resizingColumnIndex])||void 0===i||i.element.classList.remove("dragging")),this.lastDividerPointerPosition=void 0,this.resizingColumnIndex=void 0,this.recomputeColumnPercentages(),window.removeEventListener("pointermove",this.handleDividerPointerMove),window.removeEventListener("pointerup",this.handleDividerPointerUp)},this.isValidResize=(t,i)=>{var s,e,n,r;const o=this.columnElements[i],h=this.columnElements[i+1],l=this.stateMap.columnWidths[i],a=this.stateMap.columnWidths[i+1],c=null!==(s=o.minWidth)&&void 0!==s?s:0,d=null!==(e=o.maxWidth)&&void 0!==e?e:Number.MAX_SAFE_INTEGER,u=null!==(n=h.minWidth)&&void 0!==n?n:0,v=null!==(r=h.maxWidth)&&void 0!==r?r:Number.MAX_SAFE_INTEGER;return l-t.x>c&&l-t.x<d&&(null==h||a+t.x>u&&a+t.x<v)},this.handleScrollChanged=t=>{this.scrollOffset=t.target.scrollTop,this.computeAndUpdateViewportRows()}}componentWillLoad(){this.updateColumnElements(),this.createPools(),this.columnElements.forEach((t=>{t.addEventListener("hovered",this.handleCellHover)})),this.headerResizeObserver=new ResizeObserver((()=>{this.stateMap.headerHeight=void 0,this.computeHeaderHeight()})),this.resizeObserver=new ResizeObserver((()=>{this.updateLayoutPosition(),this.clearLayoutHeight(),this.clearLayoutWidth(),this.recomputeColumnWidths(),this.computeColumnGridLayout()}))}componentDidLoad(){var t,i,s;this.computeColumnGridLayout(),this.ensureDividerTemplateDefined(),this.computeCellHeight(),this.computeHeaderHeight(),this.computeInitialColumnWidths(),this.rebindHeaderData(),null===(t=this.tableElement)||void 0===t||t.addEventListener("scroll",this.handleScrollChanged,{passive:!0}),null!=this.headerElement&&(null===(i=this.headerResizeObserver)||void 0===i||i.observe(this.headerElement)),null===(s=this.resizeObserver)||void 0===s||s.observe(this.hostEl)}async componentWillRender(){await this.computeAndUpdateViewportRows()}componentDidRender(){this.layoutColumns(),this.layoutRendered.emit()}disconnectedCallback(){var t,i,s;this.columnElements.forEach((t=>{t.removeEventListener("hovered",this.handleCellHover)})),null===(t=this.tableElement)||void 0===t||t.removeEventListener("scroll",this.handleScrollChanged),this.removeDividerDragListeners(),null===(i=this.headerResizeObserver)||void 0===i||i.disconnect(),null===(s=this.resizeObserver)||void 0===s||s.disconnect(),this.stateMap.columnWidths=[],this.stateMap.columnWidthPercentages=[]}async scrollToPosition(t,i){null!=this.tableElement&&function(t,i,s){t.scrollTo(Object.assign({top:i},s))}(this.tableElement,t,i)}render(){return s(e,null,s("div",{class:"header",ref:t=>this.headerElement=t,style:{gridTemplateColumns:this.columnGridFixedLayout,display:this.columnElements.length<=1?"none":"grid"}},s("slot",{name:"header"})),s("div",{class:"table",ref:t=>this.tableElement=t,style:{gridTemplateColumns:this.columnGridLayout}},s("slot",{onSlotchange:()=>{this.ensureDividerTemplateDefined(),this.updateColumnElements(),this.recreateColumnPools(),this.computeInitialColumnWidths(),this.rebindHeaderData(),this.computeColumnGridLayout()}})),s("div",{class:"divider-overlay",style:{gridTemplateColumns:this.columnGridFixedLayout}},s("slot",{name:"divider"})),null!=this.resizingColumnIndex&&s("div",{class:"resize-overlay"}))}computeViewportRows(){const t=this.getLayoutHeight();if(null!=t){const i=Math.ceil(t/this.rowHeight),s=Math.floor(this.scrollOffset/this.rowHeight),e=s+i,n=Math.max(0,s-this.overScanCount),r=Math.min(this.totalRows-1,e+this.overScanCount),o=this.getViewportRows(n,r);this.viewportStartIndex=n,this.viewportEndIndex=r,this.stateMap.viewportRows=o}}async computeAndUpdateViewportRows(){var t;this.computeViewportRows(),(null===(t=this.controller)||void 0===t?void 0:t.isConnected)&&await this.controller.updateActiveRowRange(this.viewportStartIndex,this.viewportEndIndex)}createPools(){null==this.stateMap.columnElementPools&&(this.stateMap.columnElementPools=this.columnElements.reduce(((t,i)=>t.set(i,new L(i,(()=>this.createColumnCellInstance(i))))),new WeakMap))}recreateColumnPools(){this.columnElements.forEach((t=>{var i,s,e;null==(null===(i=this.stateMap.columnElementPools)||void 0===i?void 0:i.get(t))?null===(s=this.stateMap.columnElementPools)||void 0===s||s.set(t,new L(t,(()=>this.createColumnCellInstance(t)))):null===(e=this.stateMap.columnElementPools.get(t))||void 0===e||e.updateElementFactory((()=>this.createColumnCellInstance(t)))}))}iterateColumns(t){this.columnElements.forEach(((i,s)=>{var e;const n=null===(e=this.stateMap.columnElementPools)||void 0===e?void 0:e.get(i);if(null==n)throw new Error("Cannot find pool for column");t(i,n,s)}))}ensureDividerTemplateDefined(){if(null==this.hostEl.querySelector('template[slot="divider"]')){const t=document.createElement("template");t.slot="divider",t.innerHTML='\n <vertex-scene-tree-table-resize-divider slot="divider">\n </vertex-scene-tree-table-resize-divider>\n ',this.hostEl.appendChild(t)}}createHeaderInstance(t){const i=t.querySelector('template[slot="header"]');if(null!=i)return R(i)}createDividerInstance(){const t=this.hostEl.querySelector('template[slot="divider"]');if(null!=t)return R(t);throw new Error("Table is missing divider template element")}createColumnCellInstance(t){const i=t.querySelector('template:not([slot="header"])');if(null!=i)return R(i);throw new Error("Column is missing cell template element")}addDividerDragListeners(){var t;this.stateMap.headerDividerListeners=null===(t=this.stateMap.headerDividerInstances)||void 0===t?void 0:t.map(((t,i)=>{const s=this.createDividerPointerDownHandler(i);return t.element.addEventListener("pointerdown",s),s}))}removeDividerDragListeners(){var t;if(null!=this.stateMap.headerDividerListeners){const i=this.stateMap.headerDividerListeners;null===(t=this.stateMap.headerDividerInstances)||void 0===t||t.forEach(((t,s)=>{const e=i[s];null!=e&&t.element.removeEventListener("pointerdown",e)})),this.stateMap.headerDividerListeners=void 0}}getViewportRows(t,i){return this.rows.slice(t,i+1).map((t=>null!=t?this.populateRowData(t):t))}populateRowData(t){var i;if(null!=this.rowData&&null!=t){const s=(null===(i=this.rowData)||void 0===i?void 0:i.call(this,t))||{};return Object.assign(Object.assign({},t),{data:s})}return t}getLayoutHeight(){return null==this.layoutHeight&&null!=this.tableElement&&(this.layoutHeight=c(this.tableElement)),this.layoutHeight}getLayoutWidth(){return null==this.layoutWidth&&(this.layoutWidth=this.hostEl.clientWidth),this.layoutWidth}clearLayoutHeight(){this.layoutHeight=void 0}clearLayoutWidth(){this.layoutWidth=void 0}get hostEl(){return n(this)}};T.style=":host{position:relative;display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden;font-size:0.825rem;--scene-tree-table-row-padding:2px 0px;--scene-tree-table-column-gap:0.5rem;--scene-tree-table-column-resize-cursor:col-resize}.header{position:relative;display:grid;width:100%;border-bottom:var(--scene-tree-toolbar-separator)}.table{position:relative;display:grid;width:100%;height:100%;overflow:auto}.resize-overlay{position:absolute;top:0;cursor:var(--scene-tree-table-column-resize-cursor);z-index:1000;width:100%;height:100%}.divider-overlay{position:absolute;top:0;display:grid;pointer-events:none;z-index:2000;width:100%;height:100%}";let _=class{constructor(i){t(this,i)}render(){return s(e,null,s("div",{class:"content"},s("slot",{name:"before"})),s("div",{class:"content content-primary"},s("slot",null)),s("div",{class:"content"},s("slot",{name:"after"})))}};_.style=":host{--scene-tree-toolbar-content-gap:8px;display:flex;padding:0.5rem}.content{display:flex;align-items:center}.content-primary{width:100%}::slotted(:not(:first-child)){margin-left:var(--scene-tree-toolbar-content-gap)}";export{d as vertex_scene_tree_search,T as vertex_scene_tree_table_layout,_ as vertex_scene_tree_toolbar}
|