@revolist/revogrid 4.23.23 → 4.24.0

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.
@@ -616,7 +616,7 @@ class GridResizeService {
616
616
  }
617
617
  }
618
618
 
619
- const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
619
+ const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
620
620
 
621
621
  const RevogrViewportScroll = class {
622
622
  constructor(hostRef) {
@@ -19,6 +19,7 @@ revogr-viewport-scroll {
19
19
  /* Hide scrollbar for Chrome, Safari and Opera */
20
20
  overflow-x: auto;
21
21
  overflow-y: hidden;
22
+ overscroll-behavior-x: contain;
22
23
  position: relative;
23
24
  z-index: 1;
24
25
  height: 100%;
@@ -614,7 +614,7 @@ class GridResizeService {
614
614
  }
615
615
  }
616
616
 
617
- const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
617
+ const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
618
618
 
619
619
  const RevogrViewportScroll = class {
620
620
  constructor(hostRef) {
@@ -614,7 +614,7 @@ class GridResizeService {
614
614
  }
615
615
  }
616
616
 
617
- const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
617
+ const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
618
618
 
619
619
  const RevogrViewportScroll = class {
620
620
  constructor(hostRef) {
package/hydrate/index.js CHANGED
@@ -22000,7 +22000,7 @@ class GridResizeService {
22000
22000
  }
22001
22001
  }
22002
22002
 
22003
- const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
22003
+ const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
22004
22004
 
22005
22005
  /**
22006
22006
  * Viewport scroll component for RevoGrid
package/hydrate/index.mjs CHANGED
@@ -21998,7 +21998,7 @@ class GridResizeService {
21998
21998
  }
21999
21999
  }
22000
22000
 
22001
- const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
22001
+ const revogrViewportScrollStyleCss = () => `.rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}`;
22002
22002
 
22003
22003
  /**
22004
22004
  * Viewport scroll component for RevoGrid
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revolist/revogrid",
3
- "version": "4.23.23",
3
+ "version": "4.24.0",
4
4
  "type": "module",
5
5
  "description": "Virtual reactive data grid spreadsheet component - RevoGrid.",
6
6
  "license": "MIT",
@@ -108,6 +108,7 @@
108
108
  "@angular/core": "^20.3.0",
109
109
  "@playwright/test": "^1.58.2",
110
110
  "@revolist/stencil-angular-output": "^1.1.3",
111
+ "@revolist/stencil-dash-output-target": "^1.0.4",
111
112
  "@revolist/stencil-vue2-output-target": "^0.0.6",
112
113
  "@revolist/svelte-output-target": "0.0.7",
113
114
  "@stencil/angular-output-target": "1.3.0",
package/readme.md CHANGED
@@ -288,7 +288,7 @@ yarn add @revolist/revogrid;
288
288
 
289
289
  ## Framework
290
290
 
291
- In `<revo-grid />` we have developed a sophisticated Continuous Delivery (CD) system powered by GitHub Actions. This advanced system automatically builds and delivers grid versions across multiple frameworks, including React, Angular, Svelte, Vue 2, and Vue 3, with full type support. This ensures continuous version delivery, providing the latest grid enhancements and upgrades across all supported frameworks ✨. In the future (version 5), we are planning to switch to monorepo based development.
291
+ In `<revo-grid />` we have developed a sophisticated Continuous Delivery (CD) system powered by GitHub Actions. This advanced system automatically builds and delivers grid versions across multiple frameworks, including React, Angular, Svelte, Vue 2, Vue 3, and Plotly Dash for Python, with full type support. This ensures continuous version delivery, providing the latest grid enhancements and upgrades across all supported frameworks ✨. In the future (version 5), we are planning to switch to monorepo-based development.
292
292
 
293
293
 
294
294
 
@@ -296,6 +296,7 @@ In `<revo-grid />` we have developed a sophisticated Continuous Delivery (CD) sy
296
296
  - [![React](./assets/react.svg) React](https://rv-grid.com/guide/react/)
297
297
  - [![Angular](./assets/angular.svg) Angular](https://rv-grid.com/guide/angular/)
298
298
  - [![Svelte](./assets/svelte.svg) Svelte](https://rv-grid.com/guide/svelte/)
299
+ - [![Python](./assets/python.svg) Dash / Python](https://rv-grid.com/guide/dash/)
299
300
  - [![JavaScript](./assets/js.svg) JavaScript](https://rv-grid.com/guide/)
300
301
 
301
302
  ## Basic Usage
@@ -351,6 +352,7 @@ grid.source = [{ name: 'New Item' }];
351
352
  - [![React](./assets/react.svg) React](https://rv-grid.com/guide/react/)
352
353
  - [![Angular](./assets/angular.svg) Angular](https://rv-grid.com/guide/angular/)
353
354
  - [![Svelte](./assets/svelte.svg) Svelte](https://rv-grid.com/guide/svelte/)
355
+ - [![Python](./assets/python.svg) Dash / Python](https://rv-grid.com/guide/dash/)
354
356
  - [![JavaScript](./assets/js.svg) JavaScript](https://rv-grid.com/guide/)
355
357
 
356
358
  ## Versions
@@ -411,8 +413,8 @@ Thank you for supporting RevoGrid! 🙏
411
413
 
412
414
  ## Testing
413
415
 
414
- [![Unit Tests](https://github.com/revolist/revogrid/actions/workflows/ci-unit.yml/badge.svg?branch=main)](https://github.com/revolist/revogrid/actions/workflows/ci-unit.yml)
415
- [![E2E Tests](https://github.com/revolist/revogrid/actions/workflows/ci-e2e.yml/badge.svg?branch=main)](https://github.com/revolist/revogrid/actions/workflows/ci-e2e.yml)
416
+ [![Unit Tests](https://github.com/revolist/revogrid/actions/workflows/unit.yml/badge.svg?branch=main)](https://github.com/revolist/revogrid/actions/workflows/unit.yml)
417
+ [![E2E Tests](https://github.com/revolist/revogrid/actions/workflows/e2e.yml/badge.svg?branch=main)](https://github.com/revolist/revogrid/actions/workflows/e2e.yml)
416
418
 
417
419
  RevoGrid is thoroughly tested to ensure reliability and stability.
418
420
 
@@ -464,4 +466,3 @@ By getting involved, you'll have the opportunity to enhance your skills, gain va
464
466
  MIT
465
467
 
466
468
  ---
467
-
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import{proxyCustomElement as t,HTMLElement as i,createEvent as e,h as o,Host as l,transformTag as r}from"@stencil/core/internal/client";import{t as s}from"./throttle.js";import{L as n,a as c,b as a}from"./local.scroll.timer.js";const h="header",d="footer",v="content",w="data";function u(t,i){return{x:t.viewports[t.colType].store.get("realCount"),y:t.viewports[i].store.get("realCount")}}function p(t,i,e,o){return{colData:t.colStore,viewportCol:t.viewports[t.colType].store,viewportRow:t.viewports[i].store,lastCell:u(t,i),slot:e,type:i,canDrag:!o,position:t.position,dataStore:t.rowStores[i].store,dimensionCol:t.dimensions[t.colType].store,dimensionRow:t.dimensions[i].store,style:o?{height:`${t.dimensions[i].store.get("realSize")}px`}:void 0}}class g{constructor(t,i,e){this.resize=i,this.resizeObserver=null,this.previousSize={width:0,height:0},this.apply=s((t=>{var i;const e={width:t.width,height:t.height};null===(i=this.resize)||void 0===i||i.call(this,e,this.previousSize),this.previousSize=e}),40,{leading:!1,trailing:!0});const o=[];e.forEach((t=>{t&&o.push(t)})),this.init(t,o)}init(t,i=[]){const e=this.resizeObserver=new ResizeObserver((i=>{i.length&&this.apply(i[0].target===t?i[0].contentRect:t.getBoundingClientRect())}));e.observe(t),i.forEach((t=>{e.observe(t)}))}destroy(){var t;this.apply.cancel(),null===(t=this.resizeObserver)||void 0===t||t.disconnect(),this.resizeObserver=null}}const f=t(class extends i{constructor(t){super(),!1!==t&&this.__registerHost(),this.scrollViewport=e(this,"scrollviewport",7),this.resizeViewport=e(this,"resizeviewport",7),this.scrollchange=e(this,"scrollchange",7),this.silentScroll=e(this,"scrollviewportsilent",7),this.contentWidth=0,this.contentHeight=0,this.noHorizontalScrollTransfer=!1}async setScroll(t){var i;this.localScrollTimer.latestScrollUpdate(t.dimension),null===(i=this.localScrollService)||void 0===i||i.setScroll(t)}async changeScroll(t,i=!1){var e,o,l,r;if(!i){if(t.delta){let i=0;switch(t.dimension){case"rgCol":i=this.horizontalScroll.scrollLeft;break;case"rgRow":i=null!==(o=null===(e=this.verticalScroll)||void 0===e?void 0:e.scrollTop)&&void 0!==o?o:0}return null!==(r=null===(l=this.localScrollService)||void 0===l?void 0:l.setScrollByDelta(t,i))&&void 0!==r?r:t}return t}t.coordinate&&this.verticalScroll&&"rgRow"===t.dimension&&(this.verticalScroll.style.transform=`translateY(${-1*t.coordinate}px)`)}mousewheelVertical({detail:t}){this.verticalMouseWheel(t)}mousewheelHorizontal({detail:t}){this.horizontalMouseWheel(t)}scrollApply({detail:{type:t,coordinate:i}}){this.applyOnScroll(t,i,!0)}connectedCallback(){this.verticalMouseWheel=this.onVerticalMouseWheel.bind(this,"rgRow","deltaY"),this.horizontalMouseWheel=this.onHorizontalMouseWheel.bind(this,"rgCol","deltaX"),this.localScrollTimer=new n("ontouchstart"in document.documentElement?0:10),this.localScrollService=new c({runScroll:t=>this.scrollViewport.emit(t),applyScroll:t=>{switch(this.localScrollTimer.setCoordinate(t),t.dimension){case"rgCol":this.horizontalScroll.scrollLeft=t.coordinate;break;case"rgRow":this.verticalScroll&&(this.verticalScroll.scrollTop=t.coordinate,this.verticalScroll.style.transform&&(this.verticalScroll.style.transform=""))}}})}componentDidLoad(){this.resizeService=new g(this.horizontalScroll,(t=>{var i,e,o,l,r,s,n,c;const a={};let h=t.height||0;h&&(h-=(null!==(e=null===(i=this.header)||void 0===i?void 0:i.clientHeight)&&void 0!==e?e:0)+(null!==(l=null===(o=this.footer)||void 0===o?void 0:o.clientHeight)&&void 0!==l?l:0)),a.rgRow={size:h,contentSize:this.contentHeight,scroll:null!==(s=null===(r=this.verticalScroll)||void 0===r?void 0:r.scrollTop)&&void 0!==s?s:0,noScroll:!1};const d=t.width||0;a.rgCol={size:d,contentSize:this.contentWidth,scroll:this.horizontalScroll.scrollLeft,noScroll:"rgCol"!==this.colType},this.setScrollParams({rgRow:h,rgCol:d});const v=["rgCol","rgRow"];for(const t of v){const i=a[t];i&&(this.resizeViewport.emit({dimension:t,size:i.size,rowHeader:this.rowHeader}),i.noScroll||(null===(n=this.localScrollService)||void 0===n||n.scroll(null!==(c=i.scroll)&&void 0!==c?c:0,t,!0),this.setScrollVisibility(t,i.size,i.contentSize)))}}),[this.footer,this.header])}setScrollVisibility(t,i,e){const o=i<e;let l;switch(t){case"rgCol":l=this.horizontalScroll;break;case"rgRow":l=this.verticalScroll}o?null==l||l.classList.add(`scroll-${t}`):null==l||l.classList.remove(`scroll-${t}`),this.scrollchange.emit({type:t,hasScroll:o})}disconnectedCallback(){var t;null===(t=this.resizeService)||void 0===t||t.destroy()}async componentDidRender(){var t,i,e,o;this.setScrollParams({rgRow:null!==(i=null===(t=this.verticalScroll)||void 0===t?void 0:t.clientHeight)&&void 0!==i?i:0,rgCol:this.horizontalScroll.clientWidth}),this.setScrollVisibility("rgRow",null!==(o=null===(e=this.verticalScroll)||void 0===e?void 0:e.clientHeight)&&void 0!==o?o:0,this.contentHeight),this.setScrollVisibility("rgCol",this.horizontalScroll.clientWidth,this.contentWidth)}setScrollParams(t){this.localScrollService.setParams({contentSize:this.contentHeight,clientSize:t.rgRow,virtualSize:0},"rgRow"),this.localScrollService.setParams({contentSize:this.contentWidth,clientSize:t.rgCol,virtualSize:0},"rgCol")}render(){var t,i;const e=null!==(i=null===(t=this.verticalScroll)||void 0===t?void 0:t.clientHeight)&&void 0!==i?i:0,r=this.contentHeight<e?Math.max(this.contentHeight,0):a(this.contentHeight,e),s=a(this.contentWidth,0);return o(l,{key:"3dd9d29cf26743d7aa4995f51180d56008526e54",onWheel:this.horizontalMouseWheel,onScroll:t=>this.applyScroll("rgCol",t)},o("div",{key:"af75428e845044c33eba2fecd1ec04a9177b9b5c",class:"inner-content-table",style:{width:`${s}px`}},o("div",{key:"a0149f597588371e1fafe69efc3bd4411379a017",class:"header-wrapper",ref:t=>this.header=t},o("slot",{key:"e5d2570bf93897cd97ef702141c83bb8c0e13ee2",name:h})),o("div",{key:"d1388ff0d721dd8ce925b934bb2128fddc1ac17b",class:"vertical-inner",ref:t=>this.verticalScroll=t,onWheel:this.verticalMouseWheel,onScroll:t=>this.applyScroll("rgRow",t)},o("div",{key:"a306ff56f62279402e2a881a081e3224341d5bdf",class:"content-wrapper",style:{height:`${r}px`}},o("slot",{key:"898bda8e9429da06c9ff2bd41626ac27f3cde3cc",name:v}))),o("div",{key:"5e9eba1edd5fca07a964971054a7900e4dd84099",class:"footer-wrapper",ref:t=>this.footer=t},o("slot",{key:"f233ad1c23b3f692c45e1db235cfef4704a80726",name:d}))))}async applyScroll(t,e){if(!(e.target instanceof i))return;let o=0;switch(t){case"rgCol":o=e.target.scrollLeft;break;case"rgRow":o=e.target.scrollTop}o<0?this.silentScroll.emit({dimension:t,coordinate:o}):this.applyOnScroll(t,o)}applyOnScroll(t,i,e=!1){const o=()=>{var o;null===(o=this.localScrollService)||void 0===o||o.scroll(i,t,void 0,void 0,e),this.localScrollTimer.setCoordinateFromScroll({dimension:t,coordinate:i})};this.localScrollTimer.isReady(t,i)?o():this.localScrollTimer.throttleLastScrollUpdate(t,i,(()=>o()))}onVerticalMouseWheel(t,i,e){var o,l,r,s,n,c,a,h;const d=null!==(l=null===(o=this.verticalScroll)||void 0===o?void 0:o.scrollTop)&&void 0!==l?l:0;d+(null!==(s=null===(r=this.verticalScroll)||void 0===r?void 0:r.clientHeight)&&void 0!==s?s:0)>=(null!==(c=null===(n=this.verticalScroll)||void 0===n?void 0:n.scrollHeight)&&void 0!==c?c:0)&&e.deltaY>0||0===d&&e.deltaY<0||null===(a=e.preventDefault)||void 0===a||a.call(e),null===(h=this.localScrollService)||void 0===h||h.scroll(d+e[i],t,void 0,e[i]),this.localScrollTimer.latestScrollUpdate(t)}onHorizontalMouseWheel(t,i,e){var o,l,r,s;if(!e.deltaX)return;const{scrollLeft:n,scrollWidth:c,clientWidth:a}=this.horizontalScroll,h=n+a>=c&&e.deltaX>0,d=0===n&&e.deltaX<0;if(this.noHorizontalScrollTransfer){if(!h&&!d){const r=n+e[i];null===(o=e.preventDefault)||void 0===o||o.call(e),this.horizontalScroll.scrollLeft=r,null===(l=this.localScrollService)||void 0===l||l.scroll(this.horizontalScroll.scrollLeft,t,void 0,e[i]),this.localScrollTimer.latestScrollUpdate(t)}}else h||d||null===(r=e.preventDefault)||void 0===r||r.call(e),null===(s=this.localScrollService)||void 0===s||s.scroll(n+e[i],t,void 0,e[i]),this.localScrollTimer.latestScrollUpdate(t)}get horizontalScroll(){return this}static get style(){return".rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}"}},[260,"revogr-viewport-scroll",{rowHeader:[4,"row-header"],contentWidth:[2,"content-width"],contentHeight:[2,"content-height"],colType:[1,"col-type"],noHorizontalScrollTransfer:[4,"no-horizontal-scroll-transfer"],setScroll:[64],changeScroll:[64],applyScroll:[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]]);function y(){"undefined"!=typeof customElements&&["revogr-viewport-scroll"].forEach((t=>{"revogr-viewport-scroll"===t&&(customElements.get(r(t))||customElements.define(r(t),f))}))}export{v as C,w as D,d as F,h as H,f as R,y as d,p as v}
4
+ import{proxyCustomElement as i,HTMLElement as t,createEvent as e,h as o,Host as l,transformTag as r}from"@stencil/core/internal/client";import{t as s}from"./throttle.js";import{L as n,a as c,b as a}from"./local.scroll.timer.js";const h="header",d="footer",v="content",w="data";function u(i,t){return{x:i.viewports[i.colType].store.get("realCount"),y:i.viewports[t].store.get("realCount")}}function p(i,t,e,o){return{colData:i.colStore,viewportCol:i.viewports[i.colType].store,viewportRow:i.viewports[t].store,lastCell:u(i,t),slot:e,type:t,canDrag:!o,position:i.position,dataStore:i.rowStores[t].store,dimensionCol:i.dimensions[i.colType].store,dimensionRow:i.dimensions[t].store,style:o?{height:`${i.dimensions[t].store.get("realSize")}px`}:void 0}}class g{constructor(i,t,e){this.resize=t,this.resizeObserver=null,this.previousSize={width:0,height:0},this.apply=s((i=>{var t;const e={width:i.width,height:i.height};null===(t=this.resize)||void 0===t||t.call(this,e,this.previousSize),this.previousSize=e}),40,{leading:!1,trailing:!0});const o=[];e.forEach((i=>{i&&o.push(i)})),this.init(i,o)}init(i,t=[]){const e=this.resizeObserver=new ResizeObserver((t=>{t.length&&this.apply(t[0].target===i?t[0].contentRect:i.getBoundingClientRect())}));e.observe(i),t.forEach((i=>{e.observe(i)}))}destroy(){var i;this.apply.cancel(),null===(i=this.resizeObserver)||void 0===i||i.disconnect(),this.resizeObserver=null}}const f=i(class extends t{constructor(i){super(),!1!==i&&this.__registerHost(),this.scrollViewport=e(this,"scrollviewport",7),this.resizeViewport=e(this,"resizeviewport",7),this.scrollchange=e(this,"scrollchange",7),this.silentScroll=e(this,"scrollviewportsilent",7),this.contentWidth=0,this.contentHeight=0,this.noHorizontalScrollTransfer=!1}async setScroll(i){var t;this.localScrollTimer.latestScrollUpdate(i.dimension),null===(t=this.localScrollService)||void 0===t||t.setScroll(i)}async changeScroll(i,t=!1){var e,o,l,r;if(!t){if(i.delta){let t=0;switch(i.dimension){case"rgCol":t=this.horizontalScroll.scrollLeft;break;case"rgRow":t=null!==(o=null===(e=this.verticalScroll)||void 0===e?void 0:e.scrollTop)&&void 0!==o?o:0}return null!==(r=null===(l=this.localScrollService)||void 0===l?void 0:l.setScrollByDelta(i,t))&&void 0!==r?r:i}return i}i.coordinate&&this.verticalScroll&&"rgRow"===i.dimension&&(this.verticalScroll.style.transform=`translateY(${-1*i.coordinate}px)`)}mousewheelVertical({detail:i}){this.verticalMouseWheel(i)}mousewheelHorizontal({detail:i}){this.horizontalMouseWheel(i)}scrollApply({detail:{type:i,coordinate:t}}){this.applyOnScroll(i,t,!0)}connectedCallback(){this.verticalMouseWheel=this.onVerticalMouseWheel.bind(this,"rgRow","deltaY"),this.horizontalMouseWheel=this.onHorizontalMouseWheel.bind(this,"rgCol","deltaX"),this.localScrollTimer=new n("ontouchstart"in document.documentElement?0:10),this.localScrollService=new c({runScroll:i=>this.scrollViewport.emit(i),applyScroll:i=>{switch(this.localScrollTimer.setCoordinate(i),i.dimension){case"rgCol":this.horizontalScroll.scrollLeft=i.coordinate;break;case"rgRow":this.verticalScroll&&(this.verticalScroll.scrollTop=i.coordinate,this.verticalScroll.style.transform&&(this.verticalScroll.style.transform=""))}}})}componentDidLoad(){this.resizeService=new g(this.horizontalScroll,(i=>{var t,e,o,l,r,s,n,c;const a={};let h=i.height||0;h&&(h-=(null!==(e=null===(t=this.header)||void 0===t?void 0:t.clientHeight)&&void 0!==e?e:0)+(null!==(l=null===(o=this.footer)||void 0===o?void 0:o.clientHeight)&&void 0!==l?l:0)),a.rgRow={size:h,contentSize:this.contentHeight,scroll:null!==(s=null===(r=this.verticalScroll)||void 0===r?void 0:r.scrollTop)&&void 0!==s?s:0,noScroll:!1};const d=i.width||0;a.rgCol={size:d,contentSize:this.contentWidth,scroll:this.horizontalScroll.scrollLeft,noScroll:"rgCol"!==this.colType},this.setScrollParams({rgRow:h,rgCol:d});const v=["rgCol","rgRow"];for(const i of v){const t=a[i];t&&(this.resizeViewport.emit({dimension:i,size:t.size,rowHeader:this.rowHeader}),t.noScroll||(null===(n=this.localScrollService)||void 0===n||n.scroll(null!==(c=t.scroll)&&void 0!==c?c:0,i,!0),this.setScrollVisibility(i,t.size,t.contentSize)))}}),[this.footer,this.header])}setScrollVisibility(i,t,e){const o=t<e;let l;switch(i){case"rgCol":l=this.horizontalScroll;break;case"rgRow":l=this.verticalScroll}o?null==l||l.classList.add(`scroll-${i}`):null==l||l.classList.remove(`scroll-${i}`),this.scrollchange.emit({type:i,hasScroll:o})}disconnectedCallback(){var i;null===(i=this.resizeService)||void 0===i||i.destroy()}async componentDidRender(){var i,t,e,o;this.setScrollParams({rgRow:null!==(t=null===(i=this.verticalScroll)||void 0===i?void 0:i.clientHeight)&&void 0!==t?t:0,rgCol:this.horizontalScroll.clientWidth}),this.setScrollVisibility("rgRow",null!==(o=null===(e=this.verticalScroll)||void 0===e?void 0:e.clientHeight)&&void 0!==o?o:0,this.contentHeight),this.setScrollVisibility("rgCol",this.horizontalScroll.clientWidth,this.contentWidth)}setScrollParams(i){this.localScrollService.setParams({contentSize:this.contentHeight,clientSize:i.rgRow,virtualSize:0},"rgRow"),this.localScrollService.setParams({contentSize:this.contentWidth,clientSize:i.rgCol,virtualSize:0},"rgCol")}render(){var i,t;const e=null!==(t=null===(i=this.verticalScroll)||void 0===i?void 0:i.clientHeight)&&void 0!==t?t:0,r=this.contentHeight<e?Math.max(this.contentHeight,0):a(this.contentHeight,e),s=a(this.contentWidth,0);return o(l,{key:"3dd9d29cf26743d7aa4995f51180d56008526e54",onWheel:this.horizontalMouseWheel,onScroll:i=>this.applyScroll("rgCol",i)},o("div",{key:"af75428e845044c33eba2fecd1ec04a9177b9b5c",class:"inner-content-table",style:{width:`${s}px`}},o("div",{key:"a0149f597588371e1fafe69efc3bd4411379a017",class:"header-wrapper",ref:i=>this.header=i},o("slot",{key:"e5d2570bf93897cd97ef702141c83bb8c0e13ee2",name:h})),o("div",{key:"d1388ff0d721dd8ce925b934bb2128fddc1ac17b",class:"vertical-inner",ref:i=>this.verticalScroll=i,onWheel:this.verticalMouseWheel,onScroll:i=>this.applyScroll("rgRow",i)},o("div",{key:"a306ff56f62279402e2a881a081e3224341d5bdf",class:"content-wrapper",style:{height:`${r}px`}},o("slot",{key:"898bda8e9429da06c9ff2bd41626ac27f3cde3cc",name:v}))),o("div",{key:"5e9eba1edd5fca07a964971054a7900e4dd84099",class:"footer-wrapper",ref:i=>this.footer=i},o("slot",{key:"f233ad1c23b3f692c45e1db235cfef4704a80726",name:d}))))}async applyScroll(i,e){if(!(e.target instanceof t))return;let o=0;switch(i){case"rgCol":o=e.target.scrollLeft;break;case"rgRow":o=e.target.scrollTop}o<0?this.silentScroll.emit({dimension:i,coordinate:o}):this.applyOnScroll(i,o)}applyOnScroll(i,t,e=!1){const o=()=>{var o;null===(o=this.localScrollService)||void 0===o||o.scroll(t,i,void 0,void 0,e),this.localScrollTimer.setCoordinateFromScroll({dimension:i,coordinate:t})};this.localScrollTimer.isReady(i,t)?o():this.localScrollTimer.throttleLastScrollUpdate(i,t,(()=>o()))}onVerticalMouseWheel(i,t,e){var o,l,r,s,n,c,a,h;const d=null!==(l=null===(o=this.verticalScroll)||void 0===o?void 0:o.scrollTop)&&void 0!==l?l:0;d+(null!==(s=null===(r=this.verticalScroll)||void 0===r?void 0:r.clientHeight)&&void 0!==s?s:0)>=(null!==(c=null===(n=this.verticalScroll)||void 0===n?void 0:n.scrollHeight)&&void 0!==c?c:0)&&e.deltaY>0||0===d&&e.deltaY<0||null===(a=e.preventDefault)||void 0===a||a.call(e),null===(h=this.localScrollService)||void 0===h||h.scroll(d+e[t],i,void 0,e[t]),this.localScrollTimer.latestScrollUpdate(i)}onHorizontalMouseWheel(i,t,e){var o,l,r,s;if(!e.deltaX)return;const{scrollLeft:n,scrollWidth:c,clientWidth:a}=this.horizontalScroll,h=n+a>=c&&e.deltaX>0,d=0===n&&e.deltaX<0;if(this.noHorizontalScrollTransfer){if(!h&&!d){const r=n+e[t];null===(o=e.preventDefault)||void 0===o||o.call(e),this.horizontalScroll.scrollLeft=r,null===(l=this.localScrollService)||void 0===l||l.scroll(this.horizontalScroll.scrollLeft,i,void 0,e[t]),this.localScrollTimer.latestScrollUpdate(i)}}else h||d||null===(r=e.preventDefault)||void 0===r||r.call(e),null===(s=this.localScrollService)||void 0===s||s.scroll(n+e[t],i,void 0,e[t]),this.localScrollTimer.latestScrollUpdate(i)}get horizontalScroll(){return this}static get style(){return".rowHeaders{z-index:2;font-size:10px;display:flex;height:100%}.rowHeaders revogr-data .rgCell{text-align:center}.rowHeaders .rgCell{padding:0 1em !important;min-width:100%}revogr-viewport-scroll{-ms-overflow-style:none;scrollbar-width:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;position:relative;z-index:1;height:100%}revogr-viewport-scroll::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll.colPinStart,revogr-viewport-scroll.colPinEnd{z-index:2}revogr-viewport-scroll.colPinEnd:has(.active){overflow:visible}revogr-viewport-scroll.rgCol{flex-grow:1}revogr-viewport-scroll .content-wrapper{overflow:hidden}revogr-viewport-scroll .inner-content-table{display:flex;flex-direction:column;max-height:100%;width:100%;min-width:100%;position:relative;z-index:0}revogr-viewport-scroll .vertical-inner{overflow-y:auto;position:relative;width:100%;flex-grow:1;outline:none;-ms-overflow-style:none;scrollbar-width:none;}revogr-viewport-scroll .vertical-inner::-webkit-scrollbar{display:none;-webkit-appearance:none}revogr-viewport-scroll .vertical-inner revogr-data,revogr-viewport-scroll .vertical-inner revogr-overlay-selection{height:100%}"}},[260,"revogr-viewport-scroll",{rowHeader:[4,"row-header"],contentWidth:[2,"content-width"],contentHeight:[2,"content-height"],colType:[1,"col-type"],noHorizontalScrollTransfer:[4,"no-horizontal-scroll-transfer"],setScroll:[64],changeScroll:[64],applyScroll:[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]]);function y(){"undefined"!=typeof customElements&&["revogr-viewport-scroll"].forEach((i=>{"revogr-viewport-scroll"===i&&(customElements.get(r(i))||customElements.define(r(i),f))}))}export{v as C,w as D,d as F,h as H,f as R,y as d,p as v}