@hpcc-js/dgrid2 0.0.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.
@@ -0,0 +1,3254 @@
1
+ import { publish, HTMLWidget } from '@hpcc-js/common';
2
+
3
+ var PKG_NAME = "@hpcc-js/dgrid2";
4
+ var PKG_VERSION = "0.0.0";
5
+ var BUILD_VERSION = "2.102.11";
6
+
7
+ /*! *****************************************************************************
8
+ Copyright (c) Microsoft Corporation.
9
+
10
+ Permission to use, copy, modify, and/or distribute this software for any
11
+ purpose with or without fee is hereby granted.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
14
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
15
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
16
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
18
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19
+ PERFORMANCE OF THIS SOFTWARE.
20
+ ***************************************************************************** */
21
+ /* global Reflect, Promise */
22
+
23
+ var extendStatics = function(d, b) {
24
+ extendStatics = Object.setPrototypeOf ||
25
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
26
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
27
+ return extendStatics(d, b);
28
+ };
29
+
30
+ function __extends(d, b) {
31
+ if (typeof b !== "function" && b !== null)
32
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
33
+ extendStatics(d, b);
34
+ function __() { this.constructor = d; }
35
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36
+ }
37
+
38
+ function __decorate(decorators, target, key, desc) {
39
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
42
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
43
+ }
44
+
45
+ function __metadata(metadataKey, metadataValue) {
46
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
47
+ }
48
+
49
+ function __spreadArray(to, from, pack) {
50
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
+ if (ar || !(i in from)) {
52
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
+ ar[i] = from[i];
54
+ }
55
+ }
56
+ return to.concat(ar || Array.prototype.slice.call(from));
57
+ }
58
+
59
+ var n,l$1,u$1,t$1,o$2,r$1,f$1,e$2={},c$1=[],s$1=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function a$1(n,l){for(var u in l)n[u]=l[u];return n}function h$1(n){var l=n.parentNode;l&&l.removeChild(n);}function v$1(l,u,i){var t,o,r,f={};for(r in u)"key"==r?t=u[r]:"ref"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),"function"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return y$1(l,f,t,o,null)}function y$1(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u$1:r};return null==r&&null!=l$1.vnode&&l$1.vnode(f),f}function d$1(n){return n.children}function _$1(n,l){this.props=n,this.context=l;}function k$1(n,l){if(null==l)return n.__?k$1(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return "function"==typeof n.type?k$1(n):null}function b$1(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return b$1(n)}}function m$1(n){(!n.__d&&(n.__d=!0)&&t$1.push(n)&&!g$2.__r++||r$1!==l$1.debounceRendering)&&((r$1=l$1.debounceRendering)||o$2)(g$2);}function g$2(){for(var n;g$2.__r=t$1.length;)n=t$1.sort(function(n,l){return n.__v.__b-l.__v.__b}),t$1=[],n.some(function(n){var l,u,i,t,o,r;n.__d&&(o=(t=(l=n).__v).__e,(r=l.__P)&&(u=[],(i=a$1({},t)).__v=t.__v+1,j$2(r,t,i,l.__n,void 0!==r.ownerSVGElement,null!=t.__h?[o]:null,u,null==o?k$1(t):o,t.__h),z$1(u,t),t.__e!=o&&b$1(t)));});}function w$2(n,l,u,i,t,o,r,f,s,a){var h,v,p,_,b,m,g,w=i&&i.__k||c$1,A=w.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(_=u.__k[h]=null==(_=l[h])||"boolean"==typeof _?null:"string"==typeof _||"number"==typeof _||"bigint"==typeof _?y$1(null,_,null,null,_):Array.isArray(_)?y$1(d$1,{children:_},null,null,null):_.__b>0?y$1(_.type,_.props,_.key,null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(p=w[h])||p&&_.key==p.key&&_.type===p.type)w[h]=void 0;else for(v=0;v<A;v++){if((p=w[v])&&_.key==p.key&&_.type===p.type){w[v]=void 0;break}p=null;}j$2(n,_,p=p||e$2,t,o,r,f,s,a),b=_.__e,(v=_.ref)&&p.ref!=v&&(g||(g=[]),p.ref&&g.push(p.ref,null,_),g.push(v,_.__c||b,_)),null!=b?(null==m&&(m=b),"function"==typeof _.type&&_.__k===p.__k?_.__d=s=x$2(_,s,n):s=P$1(n,_,p,w,b,s),"function"==typeof u.type&&(u.__d=s)):s&&p.__e==s&&s.parentNode!=n&&(s=k$1(p));}for(u.__e=m,h=A;h--;)null!=w[h]&&("function"==typeof u.type&&null!=w[h].__e&&w[h].__e==u.__d&&(u.__d=k$1(i,h+1)),N(w[h],w[h]));if(g)for(h=0;h<g.length;h++)M$1(g[h],g[++h],g[++h]);}function x$2(n,l,u){for(var i,t=n.__k,o=0;t&&o<t.length;o++)(i=t[o])&&(i.__=n,l="function"==typeof i.type?x$2(i,l,u):P$1(u,i,i,t,i.__e,l));return l}function A$2(n,l){return l=l||[],null==n||"boolean"==typeof n||(Array.isArray(n)?n.some(function(n){A$2(n,l);}):l.push(n)),l}function P$1(n,l,u,i,t,o){var r,f,e;if(void 0!==l.__d)r=l.__d,l.__d=void 0;else if(null==u||t!=o||null==t.parentNode)n:if(null==o||o.parentNode!==n)n.appendChild(t),r=null;else {for(f=o,e=0;(f=f.nextSibling)&&e<i.length;e+=2)if(f==t)break n;n.insertBefore(t,o),r=o;}return void 0!==r?r:t.nextSibling}function C$1(n,l,u,i,t){var o;for(o in u)"children"===o||"key"===o||o in l||H$1(n,o,null,u[o],i);for(o in l)t&&"function"!=typeof l[o]||"children"===o||"key"===o||"value"===o||"checked"===o||u[o]===l[o]||H$1(n,o,l[o],u[o],i);}function $(n,l,u){"-"===l[0]?n.setProperty(l,u):n[l]=null==u?"":"number"!=typeof u||s$1.test(l)?u:u+"px";}function H$1(n,l,u,i,t){var o;n:if("style"===l)if("string"==typeof u)n.style.cssText=u;else {if("string"==typeof i&&(n.style.cssText=i=""),i)for(l in i)u&&l in u||$(n.style,l,"");if(u)for(l in u)i&&u[l]===i[l]||$(n.style,l,u[l]);}else if("o"===l[0]&&"n"===l[1])o=l!==(l=l.replace(/Capture$/,"")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?i||n.addEventListener(l,o?T$1:I,o):n.removeEventListener(l,o?T$1:I,o);else if("dangerouslySetInnerHTML"!==l){if(t)l=l.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("href"!==l&&"list"!==l&&"form"!==l&&"tabIndex"!==l&&"download"!==l&&l in n)try{n[l]=null==u?"":u;break n}catch(n){}"function"==typeof u||(null!=u&&(!1!==u||"a"===l[0]&&"r"===l[1])?n.setAttribute(l,u):n.removeAttribute(l));}}function I(n){this.l[n.type+!1](l$1.event?l$1.event(n):n);}function T$1(n){this.l[n.type+!0](l$1.event?l$1.event(n):n);}function j$2(n,u,i,t,o,r,f,e,c){var s,h,v,y,p,k,b,m,g,x,A,P=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(s=l$1.__b)&&s(u);try{n:if("function"==typeof P){if(m=u.props,g=(s=P.contextType)&&t[s.__c],x=s?g?g.props.value:s.__:t,i.__c?b=(h=u.__c=i.__c).__=h.__E:("prototype"in P&&P.prototype.render?u.__c=h=new P(m,x):(u.__c=h=new _$1(m,x),h.constructor=P,h.render=O$1),g&&g.sub(h),h.props=m,h.state||(h.state={}),h.context=x,h.__n=t,v=h.__d=!0,h.__h=[]),null==h.__s&&(h.__s=h.state),null!=P.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=a$1({},h.__s)),a$1(h.__s,P.getDerivedStateFromProps(m,h.__s))),y=h.props,p=h.state,v)null==P.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else {if(null==P.getDerivedStateFromProps&&m!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(m,x),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(m,h.__s,x)||u.__v===i.__v){h.props=m,h.state=h.__s,u.__v!==i.__v&&(h.__d=!1),h.__v=u,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u);}),h.__h.length&&f.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(m,h.__s,x),null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,p,k);});}h.context=x,h.props=m,h.state=h.__s,(s=l$1.__r)&&s(u),h.__d=!1,h.__v=u,h.__P=n,s=h.render(h.props,h.state,h.context),h.state=h.__s,null!=h.getChildContext&&(t=a$1(a$1({},t),h.getChildContext())),v||null==h.getSnapshotBeforeUpdate||(k=h.getSnapshotBeforeUpdate(y,p)),A=null!=s&&s.type===d$1&&null==s.key?s.props.children:s,w$2(n,Array.isArray(A)?A:[A],u,i,t,o,r,f,e,c),h.base=u.__e,u.__h=null,h.__h.length&&f.push(h),b&&(h.__E=h.__=null),h.__e=!1;}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=L$1(i.__e,u,i,t,o,r,f,c);(s=l$1.diffed)&&s(u);}catch(n){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),l$1.__e(n,u,i);}}function z$1(n,u){l$1.__c&&l$1.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u);});}catch(n){l$1.__e(n,u.__v);}});}function L$1(l,u,i,t,o,r,f,c){var s,a,v,y=i.props,p=u.props,d=u.type,_=0;if("svg"===d&&(o=!0),null!=r)for(;_<r.length;_++)if((s=r[_])&&"setAttribute"in s==!!d&&(d?s.localName===d:3===s.nodeType)){l=s,r[_]=null;break}if(null==l){if(null===d)return document.createTextNode(p);l=o?document.createElementNS("http://www.w3.org/2000/svg",d):document.createElement(d,p.is&&p),r=null,c=!1;}if(null===d)y===p||c&&l.data===p||(l.data=p);else {if(r=r&&n.call(l.childNodes),a=(y=i.props||e$2).dangerouslySetInnerHTML,v=p.dangerouslySetInnerHTML,!c){if(null!=r)for(y={},_=0;_<l.attributes.length;_++)y[l.attributes[_].name]=l.attributes[_].value;(v||a)&&(v&&(a&&v.__html==a.__html||v.__html===l.innerHTML)||(l.innerHTML=v&&v.__html||""));}if(C$1(l,p,y,o,c),v)u.__k=[];else if(_=u.props.children,w$2(l,Array.isArray(_)?_:[_],u,i,t,o&&"foreignObject"!==d,r,f,r?r[0]:i.__k&&k$1(i,0),c),null!=r)for(_=r.length;_--;)null!=r[_]&&h$1(r[_]);c||("value"in p&&void 0!==(_=p.value)&&(_!==l.value||"progress"===d&&!_||"option"===d&&_!==y.value)&&H$1(l,"value",_,y.value,!1),"checked"in p&&void 0!==(_=p.checked)&&_!==l.checked&&H$1(l,"checked",_,y.checked,!1));}return l}function M$1(n,u,i){try{"function"==typeof n?n(u):n.current=u;}catch(n){l$1.__e(n,i);}}function N(n,u,i){var t,o;if(l$1.unmount&&l$1.unmount(n),(t=n.ref)&&(t.current&&t.current!==n.__e||M$1(t,null,u)),null!=(t=n.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount();}catch(n){l$1.__e(n,u);}t.base=t.__P=null;}if(t=n.__k)for(o=0;o<t.length;o++)t[o]&&N(t[o],u,"function"!=typeof n.type);i||null==n.__e||h$1(n.__e),n.__e=n.__d=void 0;}function O$1(n,l,u){return this.constructor(n,u)}function S$1(u,i,t){var o,r,f;l$1.__&&l$1.__(u,i),r=(o="function"==typeof t)?null:t&&t.__k||i.__k,f=[],j$2(i,u=(!o&&t||i).__k=v$1(d$1,null,[u]),r||e$2,e$2,void 0!==i.ownerSVGElement,!o&&t?[t]:r?null:i.firstChild?n.call(i.childNodes):null,f,!o&&t?t:r?r.__e:i.firstChild,o),z$1(f,u);}function D(n,l){var u={__c:l="__cC"+f$1++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(m$1);},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n);};}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=c$1.slice,l$1={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l;}throw n}},u$1=0,_$1.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=a$1({},this.state),"function"==typeof n&&(n=n(a$1({},u),this.props)),n&&a$1(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),m$1(this));},_$1.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),m$1(this));},_$1.prototype.render=d$1,t$1=[],o$2="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g$2.__r=0,f$1=0;
60
+
61
+ var o$1=0;function e$1(_,e,n,t,f){var l,s,u={};for(s in e)"ref"==s?l=e[s]:u[s]=e[s];var a={type:_,props:u,key:n,ref:l,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--o$1,__source:f,__self:t};if("function"==typeof _&&(l=_.defaultProps))for(s in l)void 0===u[s]&&(u[s]=l[s]);return l$1.vnode&&l$1.vnode(a),a}
62
+
63
+ var t,u,r,o=0,i=[],c=l$1.__b,f=l$1.__r,e=l$1.diffed,a=l$1.__c,v=l$1.unmount;function l(t,r){l$1.__h&&l$1.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function m(n){return o=1,p(w$1,n)}function p(n,r,o){var i=l(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w$1(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}));}],i.__c=u),i.__}function y(r,o){var i=l(t++,3);!l$1.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i));}function d(r,o){var i=l(t++,4);!l$1.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i));}function h(n){return o=5,_(function(){return {current:n}},[])}function s(n,t,u){o=6,d(function(){return "function"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==u?u:u.concat(n));}function _(n,u){var r=l(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A$1(n,t){return o=8,_(function(){return n},t)}function F(n){var r=u.context[n.__c],o=l(t++,9);return o.c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function x$1(){for(var t;t=i.shift();)if(t.__P)try{t.__H.__h.forEach(g$1),t.__H.__h.forEach(j$1),t.__H.__h=[];}catch(u){t.__H.__h=[],l$1.__e(u,t.__v);}}l$1.__b=function(n){u=null,c&&c(n);},l$1.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g$1),r.__h.forEach(j$1),r.__h=[]);},l$1.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===l$1.requestAnimationFrame||((r=l$1.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n);},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u));})(x$1)),u=null;},l$1.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g$1),t.__h=t.__h.filter(function(n){return !n.__||j$1(n)});}catch(r){u.some(function(n){n.__h&&(n.__h=[]);}),u=[],l$1.__e(r,t.__v);}}),a&&a(t,u);},l$1.unmount=function(t){v&&v(t);var u,r=t.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{g$1(n);}catch(n){u=n;}}),u&&l$1.__e(u,r.__v));};var b="function"==typeof requestAnimationFrame;function g$1(n){var t=u,r=n.__c;"function"==typeof r&&(n.__c=void 0,r()),u=t;}function j$1(n){var t=u;n.__c=n.__(),u=t;}function k(n,t){return !n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w$1(n,t){return "function"==typeof t?t(n):t}
64
+
65
+ function C(n,t){for(var e in t)n[e]=t[e];return n}function S(n,t){for(var e in n)if("__source"!==e&&!(e in t))return !0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return !0;return !1}function E(n){this.props=n;}function g(n,t){function e(n){var e=this.props.ref,r=e==n.ref;return !r&&e&&(e.call?e(null):e.current=null),t?!t(this.props,n)||!r:S(this.props,n)}function r(t){return this.shouldComponentUpdate=e,v$1(n,t)}return r.displayName="Memo("+(n.displayName||n.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r}(E.prototype=new _$1).isPureReactComponent=!0,E.prototype.shouldComponentUpdate=function(n,t){return S(this.props,n)||S(this.state,t)};var w=l$1.__b;l$1.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),w&&w(n);};var R="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function x(n){function t(t){var e=C({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=R,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(n.displayName||n.name)+")",t}var A=l$1.__e;l$1.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);A(n,t,e,r);};var O=l$1.unmount;function L(){this.__u=0,this.t=null,this.__b=null;}function U(n){var t=n.__.__c;return t&&t.__e&&t.__e(n)}function M(){this.u=null,this.o=null;}l$1.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),O&&O(n);},(L.prototype=new _$1).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=U(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l());};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__e){var n=r.state.__e;r.__v.__k[0]=function n(t,e,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)}),t.__c&&t.__c.__P===e&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(n,n.__c.__P,n.__c.__O);}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate();}},f=!0===t.__h;r.__u++||f||r.setState({__e:r.__b=r.__v.__k[0]}),n.then(i,i);},L.prototype.componentWillUnmount=function(){this.t=[];},L.prototype.render=function(n,t){if(this.__b){if(this.__v.__k){var e=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function n(t,e,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c();}),t.__c.__H=null),null!=(t=C({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=e),t.__c=null),t.__k=t.__k&&t.__k.map(function(t){return n(t,e,r)})),t}(this.__b,e,r.__O=r.__P);}this.__b=null;}var u=t.__e&&v$1(d$1,null,n.fallback);return u&&(u.__h=null),[v$1(d$1,null,t.__e?null:n.children),u]};var T=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2];}};(M.prototype=new _$1).__e=function(n){var t=this,e=U(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),T(t,n,r)):u();};e?e(o):o();}},M.prototype.render=function(n){this.u=null,this.o=new Map;var t=A$2(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},M.prototype.componentDidUpdate=M.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){T(n,e,t);});};var P="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,V=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,j="undefined"!=typeof document,z=function(n){return ("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};function B(n,t,e){return null==t.__k&&(t.textContent=""),S$1(n,t),"function"==typeof e&&e(),n?n.__c:null}_$1.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(n){Object.defineProperty(_$1.prototype,n,{configurable:!0,get:function(){return this["UNSAFE_"+n]},set:function(t){Object.defineProperty(this,n,{configurable:!0,writable:!0,value:t});}});});var H=l$1.event;function Z(){}function Y(){return this.cancelBubble}function q(){return this.defaultPrevented}l$1.event=function(n){return H&&(n=H(n)),n.persist=Z,n.isPropagationStopped=Y,n.isDefaultPrevented=q,n.nativeEvent=n};var J={configurable:!0,get:function(){return this.class}},K=l$1.vnode;l$1.vnode=function(n){var t=n.type,e=n.props,r=e;if("string"==typeof t){var u=-1===t.indexOf("-");for(var o in r={},e){var i=e[o];j&&"children"===o&&"noscript"===t||"value"===o&&"defaultValue"in e&&null==i||("defaultValue"===o&&"value"in e&&null==e.value?o="value":"download"===o&&!0===i?i="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!z(e.type)?o="oninput":/^onfocus$/i.test(o)?o="onfocusin":/^onblur$/i.test(o)?o="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(o)?o=o.toLowerCase():u&&V.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():null===i&&(i=void 0),r[o]=i);}"select"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=A$2(e.children).forEach(function(n){n.props.selected=-1!=r.value.indexOf(n.props.value);})),"select"==t&&null!=r.defaultValue&&(r.value=A$2(e.children).forEach(function(n){n.props.selected=r.multiple?-1!=r.defaultValue.indexOf(n.props.value):r.defaultValue==n.props.value;})),n.props=r,e.class!=e.className&&(J.enumerable="className"in e,null!=e.className&&(r.class=e.className),Object.defineProperty(r,"className",J));}n.$$typeof=P,K&&K(n);};var Q=l$1.__r;l$1.__r=function(n){Q&&Q(n);};function un(n){return !!n.__k&&(S$1(null,n),!0)}
66
+
67
+ function toVal(mix) {
68
+ var k, y, str='';
69
+
70
+ if (typeof mix === 'string' || typeof mix === 'number') {
71
+ str += mix;
72
+ } else if (typeof mix === 'object') {
73
+ if (Array.isArray(mix)) {
74
+ for (k=0; k < mix.length; k++) {
75
+ if (mix[k]) {
76
+ if (y = toVal(mix[k])) {
77
+ str && (str += ' ');
78
+ str += y;
79
+ }
80
+ }
81
+ }
82
+ } else {
83
+ for (k in mix) {
84
+ if (mix[k]) {
85
+ str && (str += ' ');
86
+ str += k;
87
+ }
88
+ }
89
+ }
90
+ }
91
+
92
+ return str;
93
+ }
94
+
95
+ function clsx () {
96
+ var i=0, tmp, x, str='';
97
+ while (i < arguments.length) {
98
+ if (tmp = arguments[i++]) {
99
+ if (x = toVal(tmp)) {
100
+ str && (str += ' ');
101
+ str += x;
102
+ }
103
+ }
104
+ }
105
+ return str;
106
+ }
107
+
108
+ function styleInject$1(css, ref) {
109
+ if ( ref === void 0 ) ref = {};
110
+ var insertAt = ref.insertAt;
111
+
112
+ if (!css || typeof document === 'undefined') { return; }
113
+
114
+ var head = document.head || document.getElementsByTagName('head')[0];
115
+ var style = document.createElement('style');
116
+ style.type = 'text/css';
117
+
118
+ if (insertAt === 'top') {
119
+ if (head.firstChild) {
120
+ head.insertBefore(style, head.firstChild);
121
+ } else {
122
+ head.appendChild(style);
123
+ }
124
+ } else {
125
+ head.appendChild(style);
126
+ }
127
+
128
+ if (style.styleSheet) {
129
+ style.styleSheet.cssText = css;
130
+ } else {
131
+ style.appendChild(document.createTextNode(css));
132
+ }
133
+ }
134
+
135
+ var css_248z$f = ".c1wupbe700-beta11{background-color:inherit;border-block-end:1px solid var(--rdg-border-color);border-inline-end:1px solid var(--rdg-border-color);contain:strict;contain:size layout style paint;grid-row-start:var(--rdg-grid-row-start);outline:none;overflow:hidden;overflow:clip;padding-block:0;padding-inline:8px;text-overflow:ellipsis;white-space:nowrap}.c1wupbe700-beta11[aria-selected=true]{box-shadow:inset 0 0 0 2px var(--rdg-selection-color)}.cd0kgiy700-beta11 .c1wupbe700-beta11{contain:content}.c1730fa4700-beta11{position:sticky;z-index:1}.c9dpaye700-beta11{box-shadow:var(--rdg-frozen-cell-box-shadow)}";
136
+ styleInject$1(css_248z$f,{"insertAt":"top"});
137
+
138
+ const cell = "c1wupbe700-beta11";
139
+ const cellClassname = `rdg-cell ${cell}`;
140
+ const cellAutoResizeClassname = "cd0kgiy700-beta11";
141
+ const cellFrozen = "c1730fa4700-beta11";
142
+ const cellFrozenClassname = `rdg-cell-frozen ${cellFrozen}`;
143
+ const cellFrozenLast = "c9dpaye700-beta11";
144
+ const cellFrozenLastClassname = `rdg-cell-frozen-last ${cellFrozenLast}`;
145
+
146
+ var css_248z$e = ".r104f42s700-beta11{--rdg-color:#000;--rdg-border-color:#ddd;--rdg-summary-border-color:#aaa;--rdg-background-color:#fff;--rdg-header-background-color:#f9f9f9;--rdg-row-hover-background-color:#f5f5f5;--rdg-row-selected-background-color:#dbecfa;--row-selected-hover-background-color:#c9e3f8;--rdg-checkbox-color:#005194;--rdg-checkbox-focus-color:#61b8ff;--rdg-checkbox-disabled-border-color:#ccc;--rdg-checkbox-disabled-background-color:#ddd;--rdg-selection-color:#66afe9;--rdg-frozen-cell-box-shadow:calc(2px*var(--rdg-sign)) 0 5px -2px hsla(0,0%,53%,.3);--rdg-font-size:14px;content-visibility:auto;background-color:var(--rdg-background-color);block-size:350px;border:1px solid var(--rdg-border-color);box-sizing:border-box;color:var(--rdg-color);color-scheme:var(--rdg-color-scheme,light dark);contain:strict;contain:size layout style paint;display:grid;font-size:var(--rdg-font-size);overflow:auto;user-select:none}@supports not (contain:strict){.r104f42s700-beta11{position:relative;z-index:0}}.r104f42s700-beta11 *,.r104f42s700-beta11 :after,.r104f42s700-beta11 :before{box-sizing:inherit}.r104f42s700-beta11:before{block-size:var(--rdg-grid-block-size);content:\"\";inline-size:var(--rdg-grid-inline-size);inset-block-start:0;inset-inline-start:0;position:absolute}.r104f42s700-beta11.rdg-dark{--rdg-color-scheme:dark;--rdg-color:#ddd;--rdg-border-color:#444;--rdg-summary-border-color:#555;--rdg-background-color:#212121;--rdg-header-background-color:#1b1b1b;--rdg-row-hover-background-color:#171717;--rdg-row-selected-background-color:#1a73bc;--row-selected-hover-background-color:#1768ab;--rdg-checkbox-color:#94cfff;--rdg-checkbox-focus-color:#c7e6ff;--rdg-checkbox-disabled-border-color:#000;--rdg-checkbox-disabled-background-color:#333}.r104f42s700-beta11.rdg-light{--rdg-color-scheme:light}@media (prefers-color-scheme:dark){.r104f42s700-beta11:not(.rdg-light){--rdg-color:#ddd;--rdg-border-color:#444;--rdg-summary-border-color:#555;--rdg-background-color:#212121;--rdg-header-background-color:#1b1b1b;--rdg-row-hover-background-color:#171717;--rdg-row-selected-background-color:#1a73bc;--row-selected-hover-background-color:#1768ab;--rdg-checkbox-color:#94cfff;--rdg-checkbox-focus-color:#c7e6ff;--rdg-checkbox-disabled-border-color:#000;--rdg-checkbox-disabled-background-color:#333}}.v7ly7s700-beta11.r1otpg64700-beta11{cursor:move}.fc4f4zb700-beta11{grid-column-start:1;inset-inline-start:0;position:sticky}";
147
+ styleInject$1(css_248z$e,{"insertAt":"top"});
148
+
149
+ const root = "r104f42s700-beta11";
150
+ const rootClassname = `rdg ${root}`;
151
+ const viewportDragging = "v7ly7s700-beta11";
152
+ const viewportDraggingClassname = `rdg-viewport-dragging ${viewportDragging}`;
153
+ const focusSinkClassname = "fc4f4zb700-beta11";
154
+
155
+ var css_248z$d = ".r1otpg64700-beta11{background-color:var(--rdg-background-color);display:contents;line-height:var(--rdg-row-height)}.r1otpg64700-beta11:hover{background-color:var(--rdg-row-hover-background-color)}.r1otpg64700-beta11[aria-selected=true]{background-color:var(--rdg-row-selected-background-color)}.r1otpg64700-beta11[aria-selected=true]:hover{background-color:var(--row-selected-hover-background-color)}.rel5gk2700-beta11{outline:none}.rel5gk2700-beta11>.c1wupbe700-beta11{box-shadow:inset 0 2px 0 0 var(--rdg-selection-color),inset 0 -2px 0 0 var(--rdg-selection-color)}.rel5gk2700-beta11>.c1wupbe700-beta11:first-child{box-shadow:inset 0 2px 0 0 var(--rdg-selection-color),inset 0 -2px 0 0 var(--rdg-selection-color),inset calc(2px*var(--rdg-sign)) 0 0 0 var(--rdg-selection-color)}.rel5gk2700-beta11>.c1wupbe700-beta11:last-child{box-shadow:inset 0 2px 0 0 var(--rdg-selection-color),inset 0 -2px 0 0 var(--rdg-selection-color),inset calc(-2px*var(--rdg-sign)) 0 0 0 var(--rdg-selection-color)}.rel5gk2700-beta11>.c9dpaye700-beta11{box-shadow:inset 0 2px 0 0 var(--rdg-selection-color),inset 0 -2px 0 0 var(--rdg-selection-color),var(--rdg-frozen-cell-box-shadow)}";
156
+ styleInject$1(css_248z$d,{"insertAt":"top"});
157
+
158
+ const row = "r1otpg64700-beta11";
159
+ const rowClassname = `rdg-row ${row}`;
160
+ const rowSelected = "rel5gk2700-beta11";
161
+ const rowSelectedClassname = `rdg-row-selected ${rowSelected}`;
162
+
163
+ var css_248z$c = ".cd9l4jz700-beta11{align-items:center;cursor:pointer;display:flex;inset:0;justify-content:center;margin-inline-end:1px;position:absolute}.c1noyk41700-beta11{all:unset}.cdwjxv8700-beta11{background-color:var(--rdg-background-color);block-size:20px;border:2px solid var(--rdg-border-color);content:\"\";inline-size:20px}.c1noyk41700-beta11:checked+.cdwjxv8700-beta11{background-color:var(--rdg-checkbox-color);box-shadow:inset 0 0 0 4px var(--rdg-background-color)}.c1noyk41700-beta11:focus+.cdwjxv8700-beta11{border-color:var(--rdg-checkbox-focus-color)}.cca4mwn700-beta11{cursor:default}.cca4mwn700-beta11 .cdwjxv8700-beta11{background-color:var(--rdg-checkbox-disabled-background-color);border-color:var(--rdg-checkbox-disabled-border-color)}";
164
+ styleInject$1(css_248z$c,{"insertAt":"top"});
165
+
166
+ const checkboxLabel = "cd9l4jz700-beta11";
167
+ const checkboxLabelClassname = `rdg-checkbox-label ${checkboxLabel}`;
168
+ const checkboxInput = "c1noyk41700-beta11";
169
+ const checkboxInputClassname = `rdg-checkbox-input ${checkboxInput}`;
170
+ const checkbox = "cdwjxv8700-beta11";
171
+ const checkboxClassname = `rdg-checkbox ${checkbox}`;
172
+ const checkboxLabelDisabled = "cca4mwn700-beta11";
173
+ const checkboxLabelDisabledClassname = `rdg-checkbox-label-disabled ${checkboxLabelDisabled}`;
174
+ const CheckboxFormatter = /*#__PURE__*/x(function CheckboxFormatter({
175
+ onChange,
176
+ ...props
177
+ }, ref) {
178
+ function handleChange(e) {
179
+ onChange(e.target.checked, e.nativeEvent.shiftKey);
180
+ }
181
+
182
+ return /*#__PURE__*/e$1("label", {
183
+ className: clsx(checkboxLabelClassname, props.disabled && checkboxLabelDisabledClassname),
184
+ children: [/*#__PURE__*/e$1("input", {
185
+ type: "checkbox",
186
+ ref: ref,
187
+ ...props,
188
+ className: checkboxInputClassname,
189
+ onChange: handleChange
190
+ }), /*#__PURE__*/e$1("div", {
191
+ className: checkboxClassname
192
+ })]
193
+ });
194
+ });
195
+
196
+ const useLayoutEffect = typeof window === 'undefined' ? y : d;
197
+
198
+ function useFocusRef(isSelected) {
199
+ const ref = h(null);
200
+ useLayoutEffect(() => {
201
+ var _ref$current;
202
+
203
+ if (!isSelected) return;
204
+ (_ref$current = ref.current) == null ? void 0 : _ref$current.focus({
205
+ preventScroll: true
206
+ });
207
+ }, [isSelected]);
208
+ return {
209
+ ref,
210
+ tabIndex: isSelected ? 0 : -1
211
+ };
212
+ }
213
+
214
+ const DataGridDefaultComponentsContext = /*#__PURE__*/D(undefined);
215
+ const DataGridDefaultComponentsProvider = DataGridDefaultComponentsContext.Provider;
216
+ function useDefaultComponents() {
217
+ return F(DataGridDefaultComponentsContext);
218
+ }
219
+
220
+ function SelectCellFormatter({
221
+ value,
222
+ isCellSelected,
223
+ disabled,
224
+ onChange,
225
+ 'aria-label': ariaLabel,
226
+ 'aria-labelledby': ariaLabelledBy
227
+ }) {
228
+ const {
229
+ ref,
230
+ tabIndex
231
+ } = useFocusRef(isCellSelected);
232
+ const Formatter = useDefaultComponents().checkboxFormatter;
233
+ return /*#__PURE__*/e$1(Formatter, {
234
+ "aria-label": ariaLabel,
235
+ "aria-labelledby": ariaLabelledBy,
236
+ ref: ref,
237
+ tabIndex: tabIndex,
238
+ disabled: disabled,
239
+ checked: value,
240
+ onChange: onChange
241
+ });
242
+ }
243
+
244
+ function ValueFormatter(props) {
245
+ try {
246
+ return /*#__PURE__*/e$1(d$1, {
247
+ children: props.row[props.column.key]
248
+ });
249
+ } catch {
250
+ return null;
251
+ }
252
+ }
253
+
254
+ var css_248z$b = ".gch972y700-beta11{outline:none}.cz2qf0d700-beta11{stroke:currentColor;stroke-width:1.5px;fill:transparent;margin-inline-start:4px;vertical-align:middle}.cz2qf0d700-beta11>path{transition:d .1s}";
255
+ styleInject$1(css_248z$b,{"insertAt":"top"});
256
+
257
+ const groupCellContent = "gch972y700-beta11";
258
+ const groupCellContentClassname = `rdg-group-cell-content ${groupCellContent}`;
259
+ const caret = "cz2qf0d700-beta11";
260
+ const caretClassname = `rdg-caret ${caret}`;
261
+ function ToggleGroupFormatter({
262
+ groupKey,
263
+ isExpanded,
264
+ isCellSelected,
265
+ toggleGroup
266
+ }) {
267
+ const {
268
+ ref,
269
+ tabIndex
270
+ } = useFocusRef(isCellSelected);
271
+
272
+ function handleKeyDown({
273
+ key
274
+ }) {
275
+ if (key === 'Enter') {
276
+ toggleGroup();
277
+ }
278
+ }
279
+
280
+ const d = isExpanded ? 'M1 1 L 7 7 L 13 1' : 'M1 7 L 7 1 L 13 7';
281
+ return /*#__PURE__*/e$1("span", {
282
+ ref: ref,
283
+ className: groupCellContentClassname,
284
+ tabIndex: tabIndex,
285
+ onKeyDown: handleKeyDown,
286
+ children: [groupKey, /*#__PURE__*/e$1("svg", {
287
+ viewBox: "0 0 14 8",
288
+ width: "14",
289
+ height: "8",
290
+ className: caretClassname,
291
+ "aria-hidden": true,
292
+ children: /*#__PURE__*/e$1("path", {
293
+ d: d
294
+ })
295
+ })]
296
+ });
297
+ }
298
+
299
+ const RowSelectionContext = /*#__PURE__*/D(undefined);
300
+ const RowSelectionProvider = RowSelectionContext.Provider;
301
+ const RowSelectionChangeContext = /*#__PURE__*/D(undefined);
302
+ const RowSelectionChangeProvider = RowSelectionChangeContext.Provider;
303
+ function useRowSelection() {
304
+ const rowSelectionContext = F(RowSelectionContext);
305
+ const rowSelectionChangeContext = F(RowSelectionChangeContext);
306
+
307
+ if (rowSelectionContext === undefined || rowSelectionChangeContext === undefined) {
308
+ throw new Error('useRowSelection must be used within DataGrid cells');
309
+ }
310
+
311
+ return [rowSelectionContext, rowSelectionChangeContext];
312
+ }
313
+
314
+ const SELECT_COLUMN_KEY = 'select-row';
315
+
316
+ function SelectFormatter(props) {
317
+ const [isRowSelected, onRowSelectionChange] = useRowSelection();
318
+ return /*#__PURE__*/e$1(SelectCellFormatter, {
319
+ "aria-label": "Select",
320
+ isCellSelected: props.isCellSelected,
321
+ value: isRowSelected,
322
+ onChange: (checked, isShiftClick) => {
323
+ onRowSelectionChange({
324
+ row: props.row,
325
+ checked,
326
+ isShiftClick
327
+ });
328
+ }
329
+ });
330
+ }
331
+
332
+ function SelectGroupFormatter(props) {
333
+ const [isRowSelected, onRowSelectionChange] = useRowSelection();
334
+ return /*#__PURE__*/e$1(SelectCellFormatter, {
335
+ "aria-label": "Select Group",
336
+ isCellSelected: props.isCellSelected,
337
+ value: isRowSelected,
338
+ onChange: checked => {
339
+ onRowSelectionChange({
340
+ row: props.row,
341
+ checked,
342
+ isShiftClick: false
343
+ });
344
+ }
345
+ });
346
+ }
347
+
348
+ const SelectColumn = {
349
+ key: SELECT_COLUMN_KEY,
350
+ name: '',
351
+ width: 35,
352
+ maxWidth: 35,
353
+ resizable: false,
354
+ sortable: false,
355
+ frozen: true,
356
+
357
+ headerRenderer(props) {
358
+ return /*#__PURE__*/e$1(SelectCellFormatter, {
359
+ "aria-label": "Select All",
360
+ isCellSelected: props.isCellSelected,
361
+ value: props.allRowsSelected,
362
+ onChange: props.onAllRowsSelectionChange
363
+ });
364
+ },
365
+
366
+ formatter: SelectFormatter,
367
+ groupFormatter: SelectGroupFormatter
368
+ };
369
+
370
+ function getColSpan(column, lastFrozenColumnIndex, args) {
371
+ const colSpan = typeof column.colSpan === 'function' ? column.colSpan(args) : 1;
372
+
373
+ if (Number.isInteger(colSpan) && colSpan > 1 && (!column.frozen || column.idx + colSpan - 1 <= lastFrozenColumnIndex)) {
374
+ return colSpan;
375
+ }
376
+
377
+ return undefined;
378
+ }
379
+
380
+ const nonInputKeys = new Set(['Unidentified', 'Alt', 'AltGraph', 'CapsLock', 'Control', 'Fn', 'FnLock', 'Meta', 'NumLock', 'ScrollLock', 'Shift', 'Tab', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'End', 'Home', 'PageDown', 'PageUp', 'Insert', 'ContextMenu', 'Escape', 'Pause', 'Play', 'PrintScreen', 'F1', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12']);
381
+ function isCtrlKeyHeldDown(e) {
382
+ return (e.ctrlKey || e.metaKey) && e.key !== 'Control';
383
+ }
384
+ function isDefaultCellInput(event) {
385
+ return !nonInputKeys.has(event.key);
386
+ }
387
+ function onEditorNavigation({
388
+ key,
389
+ target
390
+ }) {
391
+ if (key === 'Tab' && (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement)) {
392
+ return target.matches('.rdg-editor-container > :only-child, .rdg-editor-container > label:only-child > :only-child');
393
+ }
394
+
395
+ return false;
396
+ }
397
+
398
+ function isSelectedCellEditable({
399
+ selectedPosition,
400
+ columns,
401
+ rows,
402
+ isGroupRow
403
+ }) {
404
+ const column = columns[selectedPosition.idx];
405
+ const row = rows[selectedPosition.rowIdx];
406
+ return !isGroupRow(row) && isCellEditable(column, row);
407
+ }
408
+ function isCellEditable(column, row) {
409
+ return column.editor != null && !column.rowGroup && (typeof column.editable === 'function' ? column.editable(row) : column.editable) !== false;
410
+ }
411
+ function getSelectedCellColSpan({
412
+ rows,
413
+ summaryRows,
414
+ rowIdx,
415
+ lastFrozenColumnIndex,
416
+ column,
417
+ isGroupRow
418
+ }) {
419
+ if (rowIdx === -1) {
420
+ return getColSpan(column, lastFrozenColumnIndex, {
421
+ type: 'HEADER'
422
+ });
423
+ }
424
+
425
+ if (rowIdx >= 0 && rowIdx < rows.length) {
426
+ const row = rows[rowIdx];
427
+
428
+ if (!isGroupRow(row)) {
429
+ return getColSpan(column, lastFrozenColumnIndex, {
430
+ type: 'ROW',
431
+ row
432
+ });
433
+ }
434
+
435
+ return undefined;
436
+ }
437
+
438
+ if (summaryRows) {
439
+ return getColSpan(column, lastFrozenColumnIndex, {
440
+ type: 'SUMMARY',
441
+ row: summaryRows[rowIdx - rows.length]
442
+ });
443
+ }
444
+
445
+ return undefined;
446
+ }
447
+ function getNextSelectedCellPosition({
448
+ cellNavigationMode,
449
+ columns,
450
+ colSpanColumns,
451
+ rows,
452
+ summaryRows,
453
+ minRowIdx,
454
+ maxRowIdx,
455
+ currentPosition: {
456
+ idx: currentIdx
457
+ },
458
+ nextPosition,
459
+ lastFrozenColumnIndex,
460
+ isCellWithinBounds,
461
+ isGroupRow
462
+ }) {
463
+ let {
464
+ idx: nextIdx,
465
+ rowIdx: nextRowIdx
466
+ } = nextPosition;
467
+
468
+ const setColSpan = moveRight => {
469
+ if (nextRowIdx >= 0 && nextRowIdx < rows.length) {
470
+ const row = rows[nextRowIdx];
471
+ if (isGroupRow(row)) return;
472
+ }
473
+
474
+ for (const column of colSpanColumns) {
475
+ const colIdx = column.idx;
476
+ if (colIdx > nextIdx) break;
477
+ const colSpan = getSelectedCellColSpan({
478
+ rows,
479
+ summaryRows,
480
+ rowIdx: nextRowIdx,
481
+ lastFrozenColumnIndex,
482
+ column,
483
+ isGroupRow
484
+ });
485
+
486
+ if (colSpan && nextIdx > colIdx && nextIdx < colSpan + colIdx) {
487
+ nextIdx = colIdx + (moveRight ? colSpan : 0);
488
+ break;
489
+ }
490
+ }
491
+ };
492
+
493
+ if (isCellWithinBounds(nextPosition)) {
494
+ setColSpan(nextIdx - currentIdx > 0);
495
+ }
496
+
497
+ if (cellNavigationMode !== 'NONE') {
498
+ const columnsCount = columns.length;
499
+ const isAfterLastColumn = nextIdx === columnsCount;
500
+ const isBeforeFirstColumn = nextIdx === -1;
501
+
502
+ if (isAfterLastColumn) {
503
+ if (cellNavigationMode === 'CHANGE_ROW') {
504
+ const isLastRow = nextRowIdx === maxRowIdx;
505
+
506
+ if (!isLastRow) {
507
+ nextIdx = 0;
508
+ nextRowIdx += 1;
509
+ }
510
+ } else {
511
+ nextIdx = 0;
512
+ }
513
+ } else if (isBeforeFirstColumn) {
514
+ if (cellNavigationMode === 'CHANGE_ROW') {
515
+ const isFirstRow = nextRowIdx === minRowIdx;
516
+
517
+ if (!isFirstRow) {
518
+ nextRowIdx -= 1;
519
+ nextIdx = columnsCount - 1;
520
+ }
521
+ } else {
522
+ nextIdx = columnsCount - 1;
523
+ }
524
+
525
+ setColSpan(false);
526
+ }
527
+ }
528
+
529
+ return {
530
+ idx: nextIdx,
531
+ rowIdx: nextRowIdx
532
+ };
533
+ }
534
+ function canExitGrid({
535
+ cellNavigationMode,
536
+ maxColIdx,
537
+ minRowIdx,
538
+ maxRowIdx,
539
+ selectedPosition: {
540
+ rowIdx,
541
+ idx
542
+ },
543
+ shiftKey
544
+ }) {
545
+ if (cellNavigationMode === 'NONE' || cellNavigationMode === 'CHANGE_ROW') {
546
+ const atLastCellInRow = idx === maxColIdx;
547
+ const atFirstCellInRow = idx === 0;
548
+ const atLastRow = rowIdx === maxRowIdx;
549
+ const atFirstRow = rowIdx === minRowIdx;
550
+ return shiftKey ? atFirstCellInRow && atFirstRow : atLastCellInRow && atLastRow;
551
+ }
552
+
553
+ return false;
554
+ }
555
+
556
+ const {
557
+ min,
558
+ max,
559
+ round,
560
+ floor,
561
+ sign,
562
+ abs
563
+ } = Math;
564
+ function assertIsValidKeyGetter(keyGetter) {
565
+ if (typeof keyGetter !== 'function') {
566
+ throw new Error('Please specify the rowKeyGetter prop to use selection');
567
+ }
568
+ }
569
+ function getRowStyle(rowIdx, height) {
570
+ if (height !== undefined) {
571
+ return {
572
+ '--rdg-grid-row-start': rowIdx,
573
+ '--rdg-row-height': `${height}px`
574
+ };
575
+ }
576
+
577
+ return {
578
+ '--rdg-grid-row-start': rowIdx
579
+ };
580
+ }
581
+ function getCellStyle(column, colSpan) {
582
+ return {
583
+ gridColumnStart: column.idx + 1,
584
+ gridColumnEnd: colSpan !== undefined ? `span ${colSpan}` : undefined,
585
+ insetInlineStart: column.frozen ? `var(--rdg-frozen-left-${column.idx})` : undefined
586
+ };
587
+ }
588
+ function getCellClassname(column, ...extraClasses) {
589
+ return clsx(cellClassname, ...extraClasses, column.frozen && cellFrozenClassname, column.isLastFrozenColumn && cellFrozenLastClassname);
590
+ }
591
+
592
+ function useCalculatedColumns({
593
+ rawColumns,
594
+ columnWidths,
595
+ viewportWidth,
596
+ scrollLeft,
597
+ defaultColumnOptions,
598
+ rawGroupBy,
599
+ enableVirtualization
600
+ }) {
601
+ var _defaultColumnOptions, _defaultColumnOptions2, _defaultColumnOptions3, _defaultColumnOptions4;
602
+
603
+ const minColumnWidth = (_defaultColumnOptions = defaultColumnOptions == null ? void 0 : defaultColumnOptions.minWidth) != null ? _defaultColumnOptions : 80;
604
+ const defaultFormatter = (_defaultColumnOptions2 = defaultColumnOptions == null ? void 0 : defaultColumnOptions.formatter) != null ? _defaultColumnOptions2 : ValueFormatter;
605
+ const defaultSortable = (_defaultColumnOptions3 = defaultColumnOptions == null ? void 0 : defaultColumnOptions.sortable) != null ? _defaultColumnOptions3 : false;
606
+ const defaultResizable = (_defaultColumnOptions4 = defaultColumnOptions == null ? void 0 : defaultColumnOptions.resizable) != null ? _defaultColumnOptions4 : false;
607
+ const {
608
+ columns,
609
+ colSpanColumns,
610
+ lastFrozenColumnIndex,
611
+ groupBy
612
+ } = _(() => {
613
+ const groupBy = [];
614
+ let lastFrozenColumnIndex = -1;
615
+ const columns = rawColumns.map(rawColumn => {
616
+ var _rawGroupBy$includes, _rawColumn$sortable, _rawColumn$resizable, _rawColumn$formatter;
617
+
618
+ const rowGroup = (_rawGroupBy$includes = rawGroupBy == null ? void 0 : rawGroupBy.includes(rawColumn.key)) != null ? _rawGroupBy$includes : false;
619
+ const frozen = rowGroup || rawColumn.frozen || false;
620
+ const column = { ...rawColumn,
621
+ idx: 0,
622
+ frozen,
623
+ isLastFrozenColumn: false,
624
+ rowGroup,
625
+ sortable: (_rawColumn$sortable = rawColumn.sortable) != null ? _rawColumn$sortable : defaultSortable,
626
+ resizable: (_rawColumn$resizable = rawColumn.resizable) != null ? _rawColumn$resizable : defaultResizable,
627
+ formatter: (_rawColumn$formatter = rawColumn.formatter) != null ? _rawColumn$formatter : defaultFormatter
628
+ };
629
+
630
+ if (rowGroup) {
631
+ var _column$groupFormatte;
632
+
633
+ (_column$groupFormatte = column.groupFormatter) != null ? _column$groupFormatte : column.groupFormatter = ToggleGroupFormatter;
634
+ }
635
+
636
+ if (frozen) {
637
+ lastFrozenColumnIndex++;
638
+ }
639
+
640
+ return column;
641
+ });
642
+ columns.sort(({
643
+ key: aKey,
644
+ frozen: frozenA
645
+ }, {
646
+ key: bKey,
647
+ frozen: frozenB
648
+ }) => {
649
+ if (aKey === SELECT_COLUMN_KEY) return -1;
650
+ if (bKey === SELECT_COLUMN_KEY) return 1;
651
+
652
+ if (rawGroupBy != null && rawGroupBy.includes(aKey)) {
653
+ if (rawGroupBy.includes(bKey)) {
654
+ return rawGroupBy.indexOf(aKey) - rawGroupBy.indexOf(bKey);
655
+ }
656
+
657
+ return -1;
658
+ }
659
+
660
+ if (rawGroupBy != null && rawGroupBy.includes(bKey)) return 1;
661
+
662
+ if (frozenA) {
663
+ if (frozenB) return 0;
664
+ return -1;
665
+ }
666
+
667
+ if (frozenB) return 1;
668
+ return 0;
669
+ });
670
+ const colSpanColumns = [];
671
+ columns.forEach((column, idx) => {
672
+ column.idx = idx;
673
+
674
+ if (column.rowGroup) {
675
+ groupBy.push(column.key);
676
+ }
677
+
678
+ if (column.colSpan != null) {
679
+ colSpanColumns.push(column);
680
+ }
681
+ });
682
+
683
+ if (lastFrozenColumnIndex !== -1) {
684
+ columns[lastFrozenColumnIndex].isLastFrozenColumn = true;
685
+ }
686
+
687
+ return {
688
+ columns,
689
+ colSpanColumns,
690
+ lastFrozenColumnIndex,
691
+ groupBy
692
+ };
693
+ }, [rawColumns, defaultFormatter, defaultResizable, defaultSortable, rawGroupBy]);
694
+ const {
695
+ layoutCssVars,
696
+ totalColumnWidth,
697
+ totalFrozenColumnWidth,
698
+ columnMetrics
699
+ } = _(() => {
700
+ const columnMetrics = new Map();
701
+ let left = 0;
702
+ let totalColumnWidth = 0;
703
+ let totalFrozenColumnWidth = 0;
704
+ let templateColumns = '';
705
+ let allocatedWidth = 0;
706
+ let unassignedColumnsCount = 0;
707
+
708
+ for (const column of columns) {
709
+ let width = getSpecifiedWidth(column, columnWidths, viewportWidth);
710
+
711
+ if (width === undefined) {
712
+ unassignedColumnsCount++;
713
+ } else {
714
+ width = clampColumnWidth(width, column, minColumnWidth);
715
+ allocatedWidth += width;
716
+ columnMetrics.set(column, {
717
+ width,
718
+ left: 0
719
+ });
720
+ }
721
+ }
722
+
723
+ for (const column of columns) {
724
+ let width;
725
+
726
+ if (columnMetrics.has(column)) {
727
+ const columnMetric = columnMetrics.get(column);
728
+ columnMetric.left = left;
729
+ ({
730
+ width
731
+ } = columnMetric);
732
+ } else {
733
+ const unallocatedWidth = viewportWidth - allocatedWidth;
734
+ const unallocatedColumnWidth = round(unallocatedWidth / unassignedColumnsCount);
735
+ width = clampColumnWidth(unallocatedColumnWidth, column, minColumnWidth);
736
+ allocatedWidth += width;
737
+ unassignedColumnsCount--;
738
+ columnMetrics.set(column, {
739
+ width,
740
+ left
741
+ });
742
+ }
743
+
744
+ totalColumnWidth += width;
745
+ left += width;
746
+ templateColumns += `${width}px `;
747
+ }
748
+
749
+ if (lastFrozenColumnIndex !== -1) {
750
+ const columnMetric = columnMetrics.get(columns[lastFrozenColumnIndex]);
751
+ totalFrozenColumnWidth = columnMetric.left + columnMetric.width;
752
+ }
753
+
754
+ const layoutCssVars = {
755
+ gridTemplateColumns: templateColumns
756
+ };
757
+
758
+ for (let i = 0; i <= lastFrozenColumnIndex; i++) {
759
+ const column = columns[i];
760
+ layoutCssVars[`--rdg-frozen-left-${column.idx}`] = `${columnMetrics.get(column).left}px`;
761
+ }
762
+
763
+ return {
764
+ layoutCssVars,
765
+ totalColumnWidth,
766
+ totalFrozenColumnWidth,
767
+ columnMetrics
768
+ };
769
+ }, [columnWidths, columns, viewportWidth, minColumnWidth, lastFrozenColumnIndex]);
770
+ const [colOverscanStartIdx, colOverscanEndIdx] = _(() => {
771
+ if (!enableVirtualization) {
772
+ return [0, columns.length - 1];
773
+ }
774
+
775
+ const viewportLeft = scrollLeft + totalFrozenColumnWidth;
776
+ const viewportRight = scrollLeft + viewportWidth;
777
+ const lastColIdx = columns.length - 1;
778
+ const firstUnfrozenColumnIdx = min(lastFrozenColumnIndex + 1, lastColIdx);
779
+
780
+ if (viewportLeft >= viewportRight) {
781
+ return [firstUnfrozenColumnIdx, firstUnfrozenColumnIdx];
782
+ }
783
+
784
+ let colVisibleStartIdx = firstUnfrozenColumnIdx;
785
+
786
+ while (colVisibleStartIdx < lastColIdx) {
787
+ const {
788
+ left,
789
+ width
790
+ } = columnMetrics.get(columns[colVisibleStartIdx]);
791
+
792
+ if (left + width > viewportLeft) {
793
+ break;
794
+ }
795
+
796
+ colVisibleStartIdx++;
797
+ }
798
+
799
+ let colVisibleEndIdx = colVisibleStartIdx;
800
+
801
+ while (colVisibleEndIdx < lastColIdx) {
802
+ const {
803
+ left,
804
+ width
805
+ } = columnMetrics.get(columns[colVisibleEndIdx]);
806
+
807
+ if (left + width >= viewportRight) {
808
+ break;
809
+ }
810
+
811
+ colVisibleEndIdx++;
812
+ }
813
+
814
+ const colOverscanStartIdx = max(firstUnfrozenColumnIdx, colVisibleStartIdx - 1);
815
+ const colOverscanEndIdx = min(lastColIdx, colVisibleEndIdx + 1);
816
+ return [colOverscanStartIdx, colOverscanEndIdx];
817
+ }, [columnMetrics, columns, lastFrozenColumnIndex, scrollLeft, totalFrozenColumnWidth, viewportWidth, enableVirtualization]);
818
+ return {
819
+ columns,
820
+ colSpanColumns,
821
+ colOverscanStartIdx,
822
+ colOverscanEndIdx,
823
+ layoutCssVars,
824
+ columnMetrics,
825
+ totalColumnWidth,
826
+ lastFrozenColumnIndex,
827
+ totalFrozenColumnWidth,
828
+ groupBy
829
+ };
830
+ }
831
+
832
+ function getSpecifiedWidth({
833
+ key,
834
+ width
835
+ }, columnWidths, viewportWidth) {
836
+ if (columnWidths.has(key)) {
837
+ return columnWidths.get(key);
838
+ }
839
+
840
+ if (typeof width === 'number') {
841
+ return width;
842
+ }
843
+
844
+ if (typeof width === 'string' && /^\d+%$/.test(width)) {
845
+ return floor(viewportWidth * parseInt(width, 10) / 100);
846
+ }
847
+
848
+ return undefined;
849
+ }
850
+
851
+ function clampColumnWidth(width, {
852
+ minWidth,
853
+ maxWidth
854
+ }, minColumnWidth) {
855
+ width = max(width, minWidth != null ? minWidth : minColumnWidth);
856
+
857
+ if (typeof maxWidth === 'number') {
858
+ return min(width, maxWidth);
859
+ }
860
+
861
+ return width;
862
+ }
863
+
864
+ function useGridDimensions() {
865
+ const gridRef = h(null);
866
+ const [gridWidth, setGridWidth] = m(1);
867
+ const [gridHeight, setGridHeight] = m(1);
868
+ useLayoutEffect(() => {
869
+ const {
870
+ ResizeObserver
871
+ } = window;
872
+ if (ResizeObserver == null) return;
873
+ const resizeObserver = new ResizeObserver(() => {
874
+ const {
875
+ clientWidth,
876
+ clientHeight
877
+ } = gridRef.current;
878
+ setGridWidth(clientWidth - (devicePixelRatio % 1 === 0 ? 0 : 1));
879
+ setGridHeight(clientHeight);
880
+ });
881
+ resizeObserver.observe(gridRef.current);
882
+ return () => {
883
+ resizeObserver.disconnect();
884
+ };
885
+ }, []);
886
+ return [gridRef, gridWidth, gridHeight];
887
+ }
888
+
889
+ function useLatestFunc(fn) {
890
+ const ref = h(fn);
891
+ y(() => {
892
+ ref.current = fn;
893
+ });
894
+ return A$1((...args) => {
895
+ ref.current(...args);
896
+ }, []);
897
+ }
898
+
899
+ function useRovingCellRef(isSelected) {
900
+ const ref = h(null);
901
+ const isChildFocused = h(false);
902
+ const [, forceRender] = m({});
903
+ useLayoutEffect(() => {
904
+ var _ref$current;
905
+
906
+ if (!isSelected) {
907
+ isChildFocused.current = false;
908
+ return;
909
+ }
910
+
911
+ if (isChildFocused.current) {
912
+ forceRender({});
913
+ return;
914
+ }
915
+
916
+ (_ref$current = ref.current) == null ? void 0 : _ref$current.focus({
917
+ preventScroll: true
918
+ });
919
+ }, [isSelected]);
920
+
921
+ function onFocus(event) {
922
+ if (event.target !== ref.current) {
923
+ isChildFocused.current = true;
924
+ }
925
+ }
926
+
927
+ const isFocused = isSelected && !isChildFocused.current;
928
+ return {
929
+ ref,
930
+ tabIndex: isFocused ? 0 : -1,
931
+ onFocus
932
+ };
933
+ }
934
+
935
+ function useViewportColumns({
936
+ columns,
937
+ colSpanColumns,
938
+ rows,
939
+ summaryRows,
940
+ colOverscanStartIdx,
941
+ colOverscanEndIdx,
942
+ lastFrozenColumnIndex,
943
+ rowOverscanStartIdx,
944
+ rowOverscanEndIdx,
945
+ isGroupRow
946
+ }) {
947
+ const startIdx = _(() => {
948
+ if (colOverscanStartIdx === 0) return 0;
949
+ let startIdx = colOverscanStartIdx;
950
+
951
+ const updateStartIdx = (colIdx, colSpan) => {
952
+ if (colSpan !== undefined && colIdx + colSpan > colOverscanStartIdx) {
953
+ startIdx = colIdx;
954
+ return true;
955
+ }
956
+
957
+ return false;
958
+ };
959
+
960
+ for (const column of colSpanColumns) {
961
+ const colIdx = column.idx;
962
+ if (colIdx >= startIdx) break;
963
+
964
+ if (updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, {
965
+ type: 'HEADER'
966
+ }))) {
967
+ break;
968
+ }
969
+
970
+ for (let rowIdx = rowOverscanStartIdx; rowIdx <= rowOverscanEndIdx; rowIdx++) {
971
+ const row = rows[rowIdx];
972
+ if (isGroupRow(row)) continue;
973
+
974
+ if (updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, {
975
+ type: 'ROW',
976
+ row
977
+ }))) {
978
+ break;
979
+ }
980
+ }
981
+
982
+ if (summaryRows != null) {
983
+ for (const row of summaryRows) {
984
+ if (updateStartIdx(colIdx, getColSpan(column, lastFrozenColumnIndex, {
985
+ type: 'SUMMARY',
986
+ row
987
+ }))) {
988
+ break;
989
+ }
990
+ }
991
+ }
992
+ }
993
+
994
+ return startIdx;
995
+ }, [rowOverscanStartIdx, rowOverscanEndIdx, rows, summaryRows, colOverscanStartIdx, lastFrozenColumnIndex, colSpanColumns, isGroupRow]);
996
+ return _(() => {
997
+ const viewportColumns = [];
998
+
999
+ for (let colIdx = 0; colIdx <= colOverscanEndIdx; colIdx++) {
1000
+ const column = columns[colIdx];
1001
+ if (colIdx < startIdx && !column.frozen) continue;
1002
+ viewportColumns.push(column);
1003
+ }
1004
+
1005
+ return viewportColumns;
1006
+ }, [startIdx, colOverscanEndIdx, columns]);
1007
+ }
1008
+
1009
+ function isReadonlyArray(arr) {
1010
+ return Array.isArray(arr);
1011
+ }
1012
+
1013
+ function useViewportRows({
1014
+ rawRows,
1015
+ rowHeight,
1016
+ clientHeight,
1017
+ scrollTop,
1018
+ groupBy,
1019
+ rowGrouper,
1020
+ expandedGroupIds,
1021
+ enableVirtualization
1022
+ }) {
1023
+ const [groupedRows, rowsCount] = _(() => {
1024
+ if (groupBy.length === 0 || rowGrouper == null) return [undefined, rawRows.length];
1025
+
1026
+ const groupRows = (rows, [groupByKey, ...remainingGroupByKeys], startRowIndex) => {
1027
+ let groupRowsCount = 0;
1028
+ const groups = {};
1029
+
1030
+ for (const [key, childRows] of Object.entries(rowGrouper(rows, groupByKey))) {
1031
+ const [childGroups, childRowsCount] = remainingGroupByKeys.length === 0 ? [childRows, childRows.length] : groupRows(childRows, remainingGroupByKeys, startRowIndex + groupRowsCount + 1);
1032
+ groups[key] = {
1033
+ childRows,
1034
+ childGroups,
1035
+ startRowIndex: startRowIndex + groupRowsCount
1036
+ };
1037
+ groupRowsCount += childRowsCount + 1;
1038
+ }
1039
+
1040
+ return [groups, groupRowsCount];
1041
+ };
1042
+
1043
+ return groupRows(rawRows, groupBy, 0);
1044
+ }, [groupBy, rowGrouper, rawRows]);
1045
+ const [rows, isGroupRow] = _(() => {
1046
+ const allGroupRows = new Set();
1047
+ if (!groupedRows) return [rawRows, isGroupRow];
1048
+ const flattenedRows = [];
1049
+
1050
+ const expandGroup = (rows, parentId, level) => {
1051
+ if (isReadonlyArray(rows)) {
1052
+ flattenedRows.push(...rows);
1053
+ return;
1054
+ }
1055
+
1056
+ Object.keys(rows).forEach((groupKey, posInSet, keys) => {
1057
+ var _expandedGroupIds$has;
1058
+
1059
+ const id = parentId !== undefined ? `${parentId}__${groupKey}` : groupKey;
1060
+ const isExpanded = (_expandedGroupIds$has = expandedGroupIds == null ? void 0 : expandedGroupIds.has(id)) != null ? _expandedGroupIds$has : false;
1061
+ const {
1062
+ childRows,
1063
+ childGroups,
1064
+ startRowIndex
1065
+ } = rows[groupKey];
1066
+ const groupRow = {
1067
+ id,
1068
+ parentId,
1069
+ groupKey,
1070
+ isExpanded,
1071
+ childRows,
1072
+ level,
1073
+ posInSet,
1074
+ startRowIndex,
1075
+ setSize: keys.length
1076
+ };
1077
+ flattenedRows.push(groupRow);
1078
+ allGroupRows.add(groupRow);
1079
+
1080
+ if (isExpanded) {
1081
+ expandGroup(childGroups, id, level + 1);
1082
+ }
1083
+ });
1084
+ };
1085
+
1086
+ expandGroup(groupedRows, undefined, 0);
1087
+ return [flattenedRows, isGroupRow];
1088
+
1089
+ function isGroupRow(row) {
1090
+ return allGroupRows.has(row);
1091
+ }
1092
+ }, [expandedGroupIds, groupedRows, rawRows]);
1093
+ const {
1094
+ totalRowHeight,
1095
+ gridTemplateRows,
1096
+ getRowTop,
1097
+ getRowHeight,
1098
+ findRowIdx
1099
+ } = _(() => {
1100
+ if (typeof rowHeight === 'number') {
1101
+ return {
1102
+ totalRowHeight: rowHeight * rows.length,
1103
+ gridTemplateRows: ` repeat(${rows.length}, ${rowHeight}px)`,
1104
+ getRowTop: rowIdx => rowIdx * rowHeight,
1105
+ getRowHeight: () => rowHeight,
1106
+ findRowIdx: offset => floor(offset / rowHeight)
1107
+ };
1108
+ }
1109
+
1110
+ let totalRowHeight = 0;
1111
+ let gridTemplateRows = ' ';
1112
+ const rowPositions = rows.map(row => {
1113
+ const currentRowHeight = isGroupRow(row) ? rowHeight({
1114
+ type: 'GROUP',
1115
+ row
1116
+ }) : rowHeight({
1117
+ type: 'ROW',
1118
+ row
1119
+ });
1120
+ const position = {
1121
+ top: totalRowHeight,
1122
+ height: currentRowHeight
1123
+ };
1124
+ gridTemplateRows += `${currentRowHeight}px `;
1125
+ totalRowHeight += currentRowHeight;
1126
+ return position;
1127
+ });
1128
+
1129
+ const validateRowIdx = rowIdx => {
1130
+ return max(0, min(rows.length - 1, rowIdx));
1131
+ };
1132
+
1133
+ return {
1134
+ totalRowHeight,
1135
+ gridTemplateRows,
1136
+ getRowTop: rowIdx => rowPositions[validateRowIdx(rowIdx)].top,
1137
+ getRowHeight: rowIdx => rowPositions[validateRowIdx(rowIdx)].height,
1138
+
1139
+ findRowIdx(offset) {
1140
+ let start = 0;
1141
+ let end = rowPositions.length - 1;
1142
+
1143
+ while (start <= end) {
1144
+ const middle = start + floor((end - start) / 2);
1145
+ const currentOffset = rowPositions[middle].top;
1146
+ if (currentOffset === offset) return middle;
1147
+
1148
+ if (currentOffset < offset) {
1149
+ start = middle + 1;
1150
+ } else if (currentOffset > offset) {
1151
+ end = middle - 1;
1152
+ }
1153
+
1154
+ if (start > end) return end;
1155
+ }
1156
+
1157
+ return 0;
1158
+ }
1159
+
1160
+ };
1161
+ }, [isGroupRow, rowHeight, rows]);
1162
+ let rowOverscanStartIdx = 0;
1163
+ let rowOverscanEndIdx = rows.length - 1;
1164
+
1165
+ if (enableVirtualization) {
1166
+ const overscanThreshold = 4;
1167
+ const rowVisibleStartIdx = findRowIdx(scrollTop);
1168
+ const rowVisibleEndIdx = findRowIdx(scrollTop + clientHeight);
1169
+ rowOverscanStartIdx = max(0, rowVisibleStartIdx - overscanThreshold);
1170
+ rowOverscanEndIdx = min(rows.length - 1, rowVisibleEndIdx + overscanThreshold);
1171
+ }
1172
+
1173
+ return {
1174
+ rowOverscanStartIdx,
1175
+ rowOverscanEndIdx,
1176
+ rows,
1177
+ rowsCount,
1178
+ totalRowHeight,
1179
+ gridTemplateRows,
1180
+ isGroupRow,
1181
+ getRowTop,
1182
+ getRowHeight,
1183
+ findRowIdx
1184
+ };
1185
+ }
1186
+
1187
+ var css_248z$a = ".h1tr5c9i700-beta11{cursor:pointer;display:flex}.h1tr5c9i700-beta11:focus{outline:none}.h19r0msv700-beta11{flex-grow:1;overflow:hidden;overflow:clip;text-overflow:ellipsis}";
1188
+ styleInject$1(css_248z$a,{"insertAt":"top"});
1189
+
1190
+ const headerSortCell = "h1tr5c9i700-beta11";
1191
+ const headerSortCellClassname = `rdg-header-sort-cell ${headerSortCell}`;
1192
+ const headerSortName = "h19r0msv700-beta11";
1193
+ const headerSortNameClassname = `rdg-header-sort-name ${headerSortName}`;
1194
+ function HeaderRenderer({
1195
+ column,
1196
+ sortDirection,
1197
+ priority,
1198
+ onSort,
1199
+ isCellSelected
1200
+ }) {
1201
+ if (!column.sortable) return /*#__PURE__*/e$1(d$1, {
1202
+ children: column.name
1203
+ });
1204
+ return /*#__PURE__*/e$1(SortableHeaderCell, {
1205
+ onSort: onSort,
1206
+ sortDirection: sortDirection,
1207
+ priority: priority,
1208
+ isCellSelected: isCellSelected,
1209
+ children: column.name
1210
+ });
1211
+ }
1212
+
1213
+ function SortableHeaderCell({
1214
+ onSort,
1215
+ sortDirection,
1216
+ priority,
1217
+ children,
1218
+ isCellSelected
1219
+ }) {
1220
+ const SortIcon = useDefaultComponents().sortIcon;
1221
+ const {
1222
+ ref,
1223
+ tabIndex
1224
+ } = useFocusRef(isCellSelected);
1225
+
1226
+ function handleKeyDown(event) {
1227
+ if (event.key === ' ' || event.key === 'Enter') {
1228
+ event.preventDefault();
1229
+ onSort(event.ctrlKey || event.metaKey);
1230
+ }
1231
+ }
1232
+
1233
+ function handleClick(event) {
1234
+ onSort(event.ctrlKey || event.metaKey);
1235
+ }
1236
+
1237
+ return /*#__PURE__*/e$1("span", {
1238
+ ref: ref,
1239
+ tabIndex: tabIndex,
1240
+ className: headerSortCellClassname,
1241
+ onClick: handleClick,
1242
+ onKeyDown: handleKeyDown,
1243
+ children: [/*#__PURE__*/e$1("span", {
1244
+ className: headerSortNameClassname,
1245
+ children: children
1246
+ }), /*#__PURE__*/e$1("span", {
1247
+ children: [/*#__PURE__*/e$1(SortIcon, {
1248
+ sortDirection: sortDirection
1249
+ }), priority]
1250
+ })]
1251
+ });
1252
+ }
1253
+
1254
+ var css_248z$9 = ".celq7o9700-beta11{touch-action:none}.celq7o9700-beta11:after{content:\"\";cursor:col-resize;inline-size:10px;inset-block-end:0;inset-block-start:0;inset-inline-end:0;position:absolute}";
1255
+ styleInject$1(css_248z$9,{"insertAt":"top"});
1256
+
1257
+ const cellResizable = "celq7o9700-beta11";
1258
+ const cellResizableClassname = `rdg-cell-resizable ${cellResizable}`;
1259
+ function HeaderCell({
1260
+ column,
1261
+ colSpan,
1262
+ isCellSelected,
1263
+ onColumnResize,
1264
+ allRowsSelected,
1265
+ onAllRowsSelectionChange,
1266
+ sortColumns,
1267
+ onSortColumnsChange,
1268
+ selectCell,
1269
+ shouldFocusGrid,
1270
+ direction
1271
+ }) {
1272
+ var _column$headerRendere, _column$minWidth, _column$maxWidth;
1273
+
1274
+ const isRtl = direction === 'rtl';
1275
+ const {
1276
+ ref,
1277
+ tabIndex,
1278
+ onFocus
1279
+ } = useRovingCellRef(isCellSelected);
1280
+ const sortIndex = sortColumns == null ? void 0 : sortColumns.findIndex(sort => sort.columnKey === column.key);
1281
+ const sortColumn = sortIndex !== undefined && sortIndex > -1 ? sortColumns[sortIndex] : undefined;
1282
+ const sortDirection = sortColumn == null ? void 0 : sortColumn.direction;
1283
+ const priority = sortColumn !== undefined && sortColumns.length > 1 ? sortIndex + 1 : undefined;
1284
+ const ariaSort = sortDirection && !priority ? sortDirection === 'ASC' ? 'ascending' : 'descending' : undefined;
1285
+ const className = getCellClassname(column, column.headerCellClass, column.resizable && cellResizableClassname);
1286
+ const HeaderRenderer$1 = (_column$headerRendere = column.headerRenderer) != null ? _column$headerRendere : HeaderRenderer;
1287
+
1288
+ function onPointerDown(event) {
1289
+ if (event.pointerType === 'mouse' && event.buttons !== 1) {
1290
+ return;
1291
+ }
1292
+
1293
+ const {
1294
+ currentTarget,
1295
+ pointerId
1296
+ } = event;
1297
+ const {
1298
+ right,
1299
+ left
1300
+ } = currentTarget.getBoundingClientRect();
1301
+ const offset = isRtl ? event.clientX - left : right - event.clientX;
1302
+
1303
+ if (offset > 11) {
1304
+ return;
1305
+ }
1306
+
1307
+ function onPointerMove(event) {
1308
+ const {
1309
+ right,
1310
+ left
1311
+ } = currentTarget.getBoundingClientRect();
1312
+ const width = isRtl ? right + offset - event.clientX : event.clientX + offset - left;
1313
+
1314
+ if (width > 0) {
1315
+ onColumnResize(column, width);
1316
+ }
1317
+ }
1318
+
1319
+ function onLostPointerCapture() {
1320
+ currentTarget.removeEventListener('pointermove', onPointerMove);
1321
+ currentTarget.removeEventListener('lostpointercapture', onLostPointerCapture);
1322
+ }
1323
+
1324
+ currentTarget.setPointerCapture(pointerId);
1325
+ currentTarget.addEventListener('pointermove', onPointerMove);
1326
+ currentTarget.addEventListener('lostpointercapture', onLostPointerCapture);
1327
+ }
1328
+
1329
+ function onSort(ctrlClick) {
1330
+ if (onSortColumnsChange == null) return;
1331
+ const {
1332
+ sortDescendingFirst
1333
+ } = column;
1334
+
1335
+ if (sortColumn === undefined) {
1336
+ const nextSort = {
1337
+ columnKey: column.key,
1338
+ direction: sortDescendingFirst ? 'DESC' : 'ASC'
1339
+ };
1340
+ onSortColumnsChange(sortColumns && ctrlClick ? [...sortColumns, nextSort] : [nextSort]);
1341
+ } else {
1342
+ let nextSortColumn;
1343
+
1344
+ if (sortDescendingFirst && sortDirection === 'DESC' || !sortDescendingFirst && sortDirection === 'ASC') {
1345
+ nextSortColumn = {
1346
+ columnKey: column.key,
1347
+ direction: sortDirection === 'ASC' ? 'DESC' : 'ASC'
1348
+ };
1349
+ }
1350
+
1351
+ if (ctrlClick) {
1352
+ const nextSortColumns = [...sortColumns];
1353
+
1354
+ if (nextSortColumn) {
1355
+ nextSortColumns[sortIndex] = nextSortColumn;
1356
+ } else {
1357
+ nextSortColumns.splice(sortIndex, 1);
1358
+ }
1359
+
1360
+ onSortColumnsChange(nextSortColumns);
1361
+ } else {
1362
+ onSortColumnsChange(nextSortColumn ? [nextSortColumn] : []);
1363
+ }
1364
+ }
1365
+ }
1366
+
1367
+ function onClick() {
1368
+ selectCell(column.idx);
1369
+ }
1370
+
1371
+ function onDoubleClick(event) {
1372
+ const {
1373
+ right,
1374
+ left
1375
+ } = event.currentTarget.getBoundingClientRect();
1376
+ const offset = isRtl ? event.clientX - left : right - event.clientX;
1377
+
1378
+ if (offset > 11) {
1379
+ return;
1380
+ }
1381
+
1382
+ onColumnResize(column, 'auto');
1383
+ }
1384
+
1385
+ function handleFocus(event) {
1386
+ onFocus(event);
1387
+
1388
+ if (shouldFocusGrid) {
1389
+ selectCell(0);
1390
+ }
1391
+ }
1392
+
1393
+ return /*#__PURE__*/e$1("div", {
1394
+ role: "columnheader",
1395
+ "aria-colindex": column.idx + 1,
1396
+ "aria-selected": isCellSelected,
1397
+ "aria-sort": ariaSort,
1398
+ "aria-colspan": colSpan,
1399
+ ref: ref,
1400
+ tabIndex: shouldFocusGrid ? 0 : tabIndex,
1401
+ className: className,
1402
+ style: { ...getCellStyle(column, colSpan),
1403
+ minWidth: (_column$minWidth = column.minWidth) != null ? _column$minWidth : undefined,
1404
+ maxWidth: (_column$maxWidth = column.maxWidth) != null ? _column$maxWidth : undefined
1405
+ },
1406
+ onFocus: handleFocus,
1407
+ onClick: onClick,
1408
+ onDoubleClick: column.resizable ? onDoubleClick : undefined,
1409
+ onPointerDown: column.resizable ? onPointerDown : undefined,
1410
+ children: /*#__PURE__*/e$1(HeaderRenderer$1, {
1411
+ column: column,
1412
+ sortDirection: sortDirection,
1413
+ priority: priority,
1414
+ onSort: onSort,
1415
+ allRowsSelected: allRowsSelected,
1416
+ onAllRowsSelectionChange: onAllRowsSelectionChange,
1417
+ isCellSelected: isCellSelected
1418
+ })
1419
+ });
1420
+ }
1421
+
1422
+ var css_248z$8 = ".h197vzie700-beta11{background-color:var(--rdg-header-background-color);display:contents;font-weight:700;line-height:var(--rdg-header-row-height)}.h197vzie700-beta11>.c1wupbe700-beta11{inset-block-start:0;position:sticky;z-index:2}.h197vzie700-beta11>.c1730fa4700-beta11{z-index:3}";
1423
+ styleInject$1(css_248z$8,{"insertAt":"top"});
1424
+
1425
+ const headerRow = "h197vzie700-beta11";
1426
+ const headerRowClassname = `rdg-header-row ${headerRow}`;
1427
+
1428
+ function HeaderRow({
1429
+ columns,
1430
+ allRowsSelected,
1431
+ onAllRowsSelectionChange,
1432
+ onColumnResize,
1433
+ sortColumns,
1434
+ onSortColumnsChange,
1435
+ lastFrozenColumnIndex,
1436
+ selectedCellIdx,
1437
+ selectCell,
1438
+ shouldFocusGrid,
1439
+ direction
1440
+ }) {
1441
+ const cells = [];
1442
+
1443
+ for (let index = 0; index < columns.length; index++) {
1444
+ const column = columns[index];
1445
+ const colSpan = getColSpan(column, lastFrozenColumnIndex, {
1446
+ type: 'HEADER'
1447
+ });
1448
+
1449
+ if (colSpan !== undefined) {
1450
+ index += colSpan - 1;
1451
+ }
1452
+
1453
+ cells.push( /*#__PURE__*/e$1(HeaderCell, {
1454
+ column: column,
1455
+ colSpan: colSpan,
1456
+ isCellSelected: selectedCellIdx === column.idx,
1457
+ onColumnResize: onColumnResize,
1458
+ allRowsSelected: allRowsSelected,
1459
+ onAllRowsSelectionChange: onAllRowsSelectionChange,
1460
+ onSortColumnsChange: onSortColumnsChange,
1461
+ sortColumns: sortColumns,
1462
+ selectCell: selectCell,
1463
+ shouldFocusGrid: shouldFocusGrid && index === 0,
1464
+ direction: direction
1465
+ }, column.key));
1466
+ }
1467
+
1468
+ return /*#__PURE__*/e$1("div", {
1469
+ role: "row",
1470
+ "aria-rowindex": 1,
1471
+ className: clsx(headerRowClassname, selectedCellIdx === -1 && rowSelectedClassname),
1472
+ style: getRowStyle(1),
1473
+ children: cells
1474
+ });
1475
+ }
1476
+
1477
+ const HeaderRow$1 = /*#__PURE__*/g(HeaderRow);
1478
+
1479
+ var css_248z$7 = ".c1bmg16t700-beta11,.ccpfvsn700-beta11{background-color:#ccf}.c1bmg16t700-beta11.ccpfvsn700-beta11{background-color:#99f}";
1480
+ styleInject$1(css_248z$7,{"insertAt":"top"});
1481
+
1482
+ const cellCopied = "ccpfvsn700-beta11";
1483
+ const cellCopiedClassname = `rdg-cell-copied ${cellCopied}`;
1484
+ const cellDraggedOver = "c1bmg16t700-beta11";
1485
+ const cellDraggedOverClassname = `rdg-cell-dragged-over ${cellDraggedOver}`;
1486
+
1487
+ function Cell({
1488
+ column,
1489
+ colSpan,
1490
+ isCellSelected,
1491
+ isCopied,
1492
+ isDraggedOver,
1493
+ row,
1494
+ dragHandle,
1495
+ onRowClick,
1496
+ onRowDoubleClick,
1497
+ onRowChange,
1498
+ selectCell,
1499
+ ...props
1500
+ }) {
1501
+ const {
1502
+ ref,
1503
+ tabIndex,
1504
+ onFocus
1505
+ } = useRovingCellRef(isCellSelected);
1506
+ const {
1507
+ cellClass
1508
+ } = column;
1509
+ const className = getCellClassname(column, typeof cellClass === 'function' ? cellClass(row) : cellClass, isCopied && cellCopiedClassname, isDraggedOver && cellDraggedOverClassname);
1510
+
1511
+ function selectCellWrapper(openEditor) {
1512
+ selectCell(row, column, openEditor);
1513
+ }
1514
+
1515
+ function handleClick() {
1516
+ var _column$editorOptions;
1517
+
1518
+ selectCellWrapper((_column$editorOptions = column.editorOptions) == null ? void 0 : _column$editorOptions.editOnClick);
1519
+ onRowClick == null ? void 0 : onRowClick(row, column);
1520
+ }
1521
+
1522
+ function handleContextMenu() {
1523
+ selectCellWrapper();
1524
+ }
1525
+
1526
+ function handleDoubleClick() {
1527
+ selectCellWrapper(true);
1528
+ onRowDoubleClick == null ? void 0 : onRowDoubleClick(row, column);
1529
+ }
1530
+
1531
+ return /*#__PURE__*/e$1("div", {
1532
+ role: "gridcell",
1533
+ "aria-colindex": column.idx + 1,
1534
+ "aria-selected": isCellSelected,
1535
+ "aria-colspan": colSpan,
1536
+ "aria-readonly": !isCellEditable(column, row) || undefined,
1537
+ ref: ref,
1538
+ tabIndex: tabIndex,
1539
+ className: className,
1540
+ style: getCellStyle(column, colSpan),
1541
+ onClick: handleClick,
1542
+ onDoubleClick: handleDoubleClick,
1543
+ onContextMenu: handleContextMenu,
1544
+ onFocus: onFocus,
1545
+ ...props,
1546
+ children: !column.rowGroup && /*#__PURE__*/e$1(d$1, {
1547
+ children: [/*#__PURE__*/e$1(column.formatter, {
1548
+ column: column,
1549
+ row: row,
1550
+ isCellSelected: isCellSelected,
1551
+ onRowChange: onRowChange
1552
+ }), dragHandle]
1553
+ })
1554
+ });
1555
+ }
1556
+
1557
+ const Cell$1 = /*#__PURE__*/g(Cell);
1558
+
1559
+ function Row({
1560
+ className,
1561
+ rowIdx,
1562
+ gridRowStart,
1563
+ height,
1564
+ selectedCellIdx,
1565
+ isRowSelected,
1566
+ copiedCellIdx,
1567
+ draggedOverCellIdx,
1568
+ lastFrozenColumnIndex,
1569
+ row,
1570
+ viewportColumns,
1571
+ selectedCellEditor,
1572
+ selectedCellDragHandle,
1573
+ onRowClick,
1574
+ onRowDoubleClick,
1575
+ rowClass,
1576
+ setDraggedOverRowIdx,
1577
+ onMouseEnter,
1578
+ onRowChange,
1579
+ selectCell,
1580
+ ...props
1581
+ }, ref) {
1582
+ const handleRowChange = useLatestFunc(newRow => {
1583
+ onRowChange(rowIdx, newRow);
1584
+ });
1585
+
1586
+ function handleDragEnter(event) {
1587
+ setDraggedOverRowIdx == null ? void 0 : setDraggedOverRowIdx(rowIdx);
1588
+ onMouseEnter == null ? void 0 : onMouseEnter(event);
1589
+ }
1590
+
1591
+ className = clsx(rowClassname, `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`, rowClass == null ? void 0 : rowClass(row), className, selectedCellIdx === -1 && rowSelectedClassname);
1592
+ const cells = [];
1593
+
1594
+ for (let index = 0; index < viewportColumns.length; index++) {
1595
+ const column = viewportColumns[index];
1596
+ const {
1597
+ idx
1598
+ } = column;
1599
+ const colSpan = getColSpan(column, lastFrozenColumnIndex, {
1600
+ type: 'ROW',
1601
+ row
1602
+ });
1603
+
1604
+ if (colSpan !== undefined) {
1605
+ index += colSpan - 1;
1606
+ }
1607
+
1608
+ const isCellSelected = selectedCellIdx === idx;
1609
+
1610
+ if (isCellSelected && selectedCellEditor) {
1611
+ cells.push(selectedCellEditor);
1612
+ } else {
1613
+ cells.push( /*#__PURE__*/e$1(Cell$1, {
1614
+ column: column,
1615
+ colSpan: colSpan,
1616
+ row: row,
1617
+ isCopied: copiedCellIdx === idx,
1618
+ isDraggedOver: draggedOverCellIdx === idx,
1619
+ isCellSelected: isCellSelected,
1620
+ dragHandle: isCellSelected ? selectedCellDragHandle : undefined,
1621
+ onRowClick: onRowClick,
1622
+ onRowDoubleClick: onRowDoubleClick,
1623
+ onRowChange: handleRowChange,
1624
+ selectCell: selectCell
1625
+ }, column.key));
1626
+ }
1627
+ }
1628
+
1629
+ return /*#__PURE__*/e$1(RowSelectionProvider, {
1630
+ value: isRowSelected,
1631
+ children: /*#__PURE__*/e$1("div", {
1632
+ role: "row",
1633
+ ref: ref,
1634
+ className: className,
1635
+ onMouseEnter: handleDragEnter,
1636
+ style: getRowStyle(gridRowStart, height),
1637
+ ...props,
1638
+ children: cells
1639
+ })
1640
+ });
1641
+ }
1642
+
1643
+ const Row$1 = /*#__PURE__*/g( /*#__PURE__*/x(Row));
1644
+
1645
+ function GroupCell({
1646
+ id,
1647
+ groupKey,
1648
+ childRows,
1649
+ isExpanded,
1650
+ isCellSelected,
1651
+ column,
1652
+ row,
1653
+ groupColumnIndex,
1654
+ toggleGroup: toggleGroupWrapper
1655
+ }) {
1656
+ const {
1657
+ ref,
1658
+ tabIndex,
1659
+ onFocus
1660
+ } = useRovingCellRef(isCellSelected);
1661
+
1662
+ function toggleGroup() {
1663
+ toggleGroupWrapper(id);
1664
+ }
1665
+
1666
+ const isLevelMatching = column.rowGroup && groupColumnIndex === column.idx;
1667
+ return /*#__PURE__*/e$1("div", {
1668
+ role: "gridcell",
1669
+ "aria-colindex": column.idx + 1,
1670
+ "aria-selected": isCellSelected,
1671
+ ref: ref,
1672
+ tabIndex: tabIndex,
1673
+ className: getCellClassname(column),
1674
+ style: { ...getCellStyle(column),
1675
+ cursor: isLevelMatching ? 'pointer' : 'default'
1676
+ },
1677
+ onClick: isLevelMatching ? toggleGroup : undefined,
1678
+ onFocus: onFocus,
1679
+ children: (!column.rowGroup || groupColumnIndex === column.idx) && column.groupFormatter && /*#__PURE__*/e$1(column.groupFormatter, {
1680
+ groupKey: groupKey,
1681
+ childRows: childRows,
1682
+ column: column,
1683
+ row: row,
1684
+ isExpanded: isExpanded,
1685
+ isCellSelected: isCellSelected,
1686
+ toggleGroup: toggleGroup
1687
+ })
1688
+ }, column.key);
1689
+ }
1690
+
1691
+ const GroupCell$1 = /*#__PURE__*/g(GroupCell);
1692
+
1693
+ var css_248z$6 = ".gyxx7e9700-beta11:not([aria-selected=true]){background-color:var(--rdg-header-background-color)}.gyxx7e9700-beta11>.c1wupbe700-beta11:not(:last-child):not(.c9dpaye700-beta11){border-inline-end:none}";
1694
+ styleInject$1(css_248z$6,{"insertAt":"top"});
1695
+
1696
+ const groupRow = "gyxx7e9700-beta11";
1697
+ const groupRowClassname = `rdg-group-row ${groupRow}`;
1698
+
1699
+ function GroupedRow({
1700
+ id,
1701
+ groupKey,
1702
+ viewportColumns,
1703
+ childRows,
1704
+ rowIdx,
1705
+ row,
1706
+ gridRowStart,
1707
+ height,
1708
+ level,
1709
+ isExpanded,
1710
+ selectedCellIdx,
1711
+ isRowSelected,
1712
+ selectGroup,
1713
+ toggleGroup,
1714
+ ...props
1715
+ }) {
1716
+ const idx = viewportColumns[0].key === SELECT_COLUMN_KEY ? level + 1 : level;
1717
+
1718
+ function handleSelectGroup() {
1719
+ selectGroup(rowIdx);
1720
+ }
1721
+
1722
+ return /*#__PURE__*/e$1(RowSelectionProvider, {
1723
+ value: isRowSelected,
1724
+ children: /*#__PURE__*/e$1("div", {
1725
+ role: "row",
1726
+ "aria-level": level,
1727
+ "aria-expanded": isExpanded,
1728
+ className: clsx(rowClassname, groupRowClassname, `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`, selectedCellIdx === -1 && rowSelectedClassname),
1729
+ onClick: handleSelectGroup,
1730
+ style: getRowStyle(gridRowStart, height),
1731
+ ...props,
1732
+ children: viewportColumns.map(column => /*#__PURE__*/e$1(GroupCell$1, {
1733
+ id: id,
1734
+ groupKey: groupKey,
1735
+ childRows: childRows,
1736
+ isExpanded: isExpanded,
1737
+ isCellSelected: selectedCellIdx === column.idx,
1738
+ column: column,
1739
+ row: row,
1740
+ groupColumnIndex: idx,
1741
+ toggleGroup: toggleGroup
1742
+ }, column.key))
1743
+ })
1744
+ });
1745
+ }
1746
+
1747
+ const GroupRowRenderer = /*#__PURE__*/g(GroupedRow);
1748
+
1749
+ var css_248z$5 = ".s1n3hxke700-beta11{inset-block-end:var(--rdg-summary-row-bottom);inset-block-start:var(--rdg-summary-row-top)}";
1750
+ styleInject$1(css_248z$5,{"insertAt":"top"});
1751
+
1752
+ const summaryCellClassname = "s1n3hxke700-beta11";
1753
+
1754
+ function SummaryCell({
1755
+ column,
1756
+ colSpan,
1757
+ row,
1758
+ isCellSelected,
1759
+ selectCell
1760
+ }) {
1761
+ const {
1762
+ ref,
1763
+ tabIndex,
1764
+ onFocus
1765
+ } = useRovingCellRef(isCellSelected);
1766
+ const {
1767
+ summaryFormatter: SummaryFormatter,
1768
+ summaryCellClass
1769
+ } = column;
1770
+ const className = getCellClassname(column, summaryCellClassname, typeof summaryCellClass === 'function' ? summaryCellClass(row) : summaryCellClass);
1771
+
1772
+ function onClick() {
1773
+ selectCell(row, column);
1774
+ }
1775
+
1776
+ return /*#__PURE__*/e$1("div", {
1777
+ role: "gridcell",
1778
+ "aria-colindex": column.idx + 1,
1779
+ "aria-colspan": colSpan,
1780
+ "aria-selected": isCellSelected,
1781
+ ref: ref,
1782
+ tabIndex: tabIndex,
1783
+ className: className,
1784
+ style: getCellStyle(column, colSpan),
1785
+ onClick: onClick,
1786
+ onFocus: onFocus,
1787
+ children: SummaryFormatter && /*#__PURE__*/e$1(SummaryFormatter, {
1788
+ column: column,
1789
+ row: row,
1790
+ isCellSelected: isCellSelected
1791
+ })
1792
+ });
1793
+ }
1794
+
1795
+ const SummaryCell$1 = /*#__PURE__*/g(SummaryCell);
1796
+
1797
+ var css_248z$4 = ".snfqesz700-beta11.r1otpg64700-beta11{line-height:var(--rdg-summary-row-height)}.snfqesz700-beta11.r1otpg64700-beta11>.c1wupbe700-beta11{position:sticky}.s1jijrjz700-beta11>.c1wupbe700-beta11{border-block-start:2px solid var(--rdg-summary-border-color)}";
1798
+ styleInject$1(css_248z$4,{"insertAt":"top"});
1799
+
1800
+ const summaryRow = "snfqesz700-beta11";
1801
+ const summaryRowBorderClassname = "s1jijrjz700-beta11";
1802
+ const summaryRowClassname = `rdg-summary-row ${summaryRow}`;
1803
+
1804
+ function SummaryRow({
1805
+ rowIdx,
1806
+ gridRowStart,
1807
+ row,
1808
+ viewportColumns,
1809
+ top,
1810
+ bottom,
1811
+ lastFrozenColumnIndex,
1812
+ selectedCellIdx,
1813
+ selectCell,
1814
+ 'aria-rowindex': ariaRowIndex
1815
+ }) {
1816
+ const cells = [];
1817
+
1818
+ for (let index = 0; index < viewportColumns.length; index++) {
1819
+ const column = viewportColumns[index];
1820
+ const colSpan = getColSpan(column, lastFrozenColumnIndex, {
1821
+ type: 'SUMMARY',
1822
+ row
1823
+ });
1824
+
1825
+ if (colSpan !== undefined) {
1826
+ index += colSpan - 1;
1827
+ }
1828
+
1829
+ const isCellSelected = selectedCellIdx === column.idx;
1830
+ cells.push( /*#__PURE__*/e$1(SummaryCell$1, {
1831
+ column: column,
1832
+ colSpan: colSpan,
1833
+ row: row,
1834
+ isCellSelected: isCellSelected,
1835
+ selectCell: selectCell
1836
+ }, column.key));
1837
+ }
1838
+
1839
+ return /*#__PURE__*/e$1("div", {
1840
+ role: "row",
1841
+ "aria-rowindex": ariaRowIndex,
1842
+ className: clsx(rowClassname, `rdg-row-${rowIdx % 2 === 0 ? 'even' : 'odd'}`, summaryRowClassname, rowIdx === 0 && summaryRowBorderClassname, selectedCellIdx === -1 && rowSelectedClassname),
1843
+ style: { ...getRowStyle(gridRowStart),
1844
+ '--rdg-summary-row-top': top !== undefined ? `${top}px` : undefined,
1845
+ '--rdg-summary-row-bottom': bottom !== undefined ? `${bottom}px` : undefined
1846
+ },
1847
+ children: cells
1848
+ });
1849
+ }
1850
+
1851
+ const SummaryRow$1 = /*#__PURE__*/g(SummaryRow);
1852
+
1853
+ var css_248z$3 = ".c1tngyp1700-beta11.rdg-cell{padding:0}";
1854
+ styleInject$1(css_248z$3,{"insertAt":"top"});
1855
+
1856
+ const cellEditing = "c1tngyp1700-beta11";
1857
+ function EditCell({
1858
+ column,
1859
+ colSpan,
1860
+ row,
1861
+ onRowChange,
1862
+ closeEditor,
1863
+ scrollToCell
1864
+ }) {
1865
+ var _column$editorOptions, _column$editorOptions4, _column$editorOptions5;
1866
+
1867
+ const frameRequestRef = h();
1868
+ const commitOnOutsideClick = ((_column$editorOptions = column.editorOptions) == null ? void 0 : _column$editorOptions.commitOnOutsideClick) !== false;
1869
+ const commitOnOutsideMouseDown = useLatestFunc(() => {
1870
+ onClose(true);
1871
+ });
1872
+ y(() => {
1873
+ if (!commitOnOutsideClick) return;
1874
+
1875
+ function onWindowCaptureMouseDown() {
1876
+ frameRequestRef.current = requestAnimationFrame(commitOnOutsideMouseDown);
1877
+ }
1878
+
1879
+ addEventListener('mousedown', onWindowCaptureMouseDown, {
1880
+ capture: true
1881
+ });
1882
+ return () => {
1883
+ removeEventListener('mousedown', onWindowCaptureMouseDown, {
1884
+ capture: true
1885
+ });
1886
+ cancelFrameRequest();
1887
+ };
1888
+ }, [commitOnOutsideClick, commitOnOutsideMouseDown]);
1889
+
1890
+ function cancelFrameRequest() {
1891
+ cancelAnimationFrame(frameRequestRef.current);
1892
+ }
1893
+
1894
+ function onKeyDown(event) {
1895
+ if (event.key === 'Escape') {
1896
+ event.stopPropagation();
1897
+ onClose();
1898
+ } else if (event.key === 'Enter') {
1899
+ event.stopPropagation();
1900
+ onClose(true);
1901
+ scrollToCell();
1902
+ } else {
1903
+ var _column$editorOptions2, _column$editorOptions3;
1904
+
1905
+ const onNavigation = (_column$editorOptions2 = (_column$editorOptions3 = column.editorOptions) == null ? void 0 : _column$editorOptions3.onNavigation) != null ? _column$editorOptions2 : onEditorNavigation;
1906
+
1907
+ if (!onNavigation(event)) {
1908
+ event.stopPropagation();
1909
+ }
1910
+ }
1911
+ }
1912
+
1913
+ function onClose(commitChanges) {
1914
+ if (commitChanges) {
1915
+ onRowChange(row, true);
1916
+ } else {
1917
+ closeEditor();
1918
+ }
1919
+ }
1920
+
1921
+ const {
1922
+ cellClass
1923
+ } = column;
1924
+ const className = getCellClassname(column, 'rdg-editor-container', typeof cellClass === 'function' ? cellClass(row) : cellClass, !((_column$editorOptions4 = column.editorOptions) != null && _column$editorOptions4.renderFormatter) && cellEditing);
1925
+ return /*#__PURE__*/e$1("div", {
1926
+ role: "gridcell",
1927
+ "aria-colindex": column.idx + 1,
1928
+ "aria-colspan": colSpan,
1929
+ "aria-selected": true,
1930
+ className: className,
1931
+ style: getCellStyle(column, colSpan),
1932
+ onKeyDown: onKeyDown,
1933
+ onMouseDownCapture: commitOnOutsideClick ? cancelFrameRequest : undefined,
1934
+ children: column.editor != null && /*#__PURE__*/e$1(d$1, {
1935
+ children: [/*#__PURE__*/e$1(column.editor, {
1936
+ column: column,
1937
+ row: row,
1938
+ onRowChange: onRowChange,
1939
+ onClose: onClose
1940
+ }), ((_column$editorOptions5 = column.editorOptions) == null ? void 0 : _column$editorOptions5.renderFormatter) && /*#__PURE__*/e$1(column.formatter, {
1941
+ column: column,
1942
+ row: row,
1943
+ isCellSelected: true,
1944
+ onRowChange: onRowChange
1945
+ })]
1946
+ })
1947
+ });
1948
+ }
1949
+
1950
+ var css_248z$2 = ".cadd3bp700-beta11{background-color:var(--rdg-selection-color);block-size:8px;cursor:move;inline-size:8px;inset-block-end:0;inset-inline-end:0;position:absolute}.cadd3bp700-beta11:hover{background-color:var(--rdg-background-color);block-size:16px;border:2px solid var(--rdg-selection-color);inline-size:16px}";
1951
+ styleInject$1(css_248z$2,{"insertAt":"top"});
1952
+
1953
+ const cellDragHandle = "cadd3bp700-beta11";
1954
+ const cellDragHandleClassname = `rdg-cell-drag-handle ${cellDragHandle}`;
1955
+ function DragHandle({
1956
+ rows,
1957
+ columns,
1958
+ selectedPosition,
1959
+ latestDraggedOverRowIdx,
1960
+ isCellEditable,
1961
+ onRowsChange,
1962
+ onFill,
1963
+ setDragging,
1964
+ setDraggedOverRowIdx
1965
+ }) {
1966
+ function handleMouseDown(event) {
1967
+ if (event.buttons !== 1) return;
1968
+ setDragging(true);
1969
+ window.addEventListener('mouseover', onMouseOver);
1970
+ window.addEventListener('mouseup', onMouseUp);
1971
+
1972
+ function onMouseOver(event) {
1973
+ if (event.buttons !== 1) onMouseUp();
1974
+ }
1975
+
1976
+ function onMouseUp() {
1977
+ window.removeEventListener('mouseover', onMouseOver);
1978
+ window.removeEventListener('mouseup', onMouseUp);
1979
+ setDragging(false);
1980
+ handleDragEnd();
1981
+ }
1982
+ }
1983
+
1984
+ function handleDragEnd() {
1985
+ const overRowIdx = latestDraggedOverRowIdx.current;
1986
+ if (overRowIdx === undefined) return;
1987
+ const {
1988
+ rowIdx
1989
+ } = selectedPosition;
1990
+ const startRowIndex = rowIdx < overRowIdx ? rowIdx + 1 : overRowIdx;
1991
+ const endRowIndex = rowIdx < overRowIdx ? overRowIdx + 1 : rowIdx;
1992
+ updateRows(startRowIndex, endRowIndex);
1993
+ setDraggedOverRowIdx(undefined);
1994
+ }
1995
+
1996
+ function handleDoubleClick(event) {
1997
+ event.stopPropagation();
1998
+ updateRows(selectedPosition.rowIdx + 1, rows.length);
1999
+ }
2000
+
2001
+ function updateRows(startRowIdx, endRowIdx) {
2002
+ const {
2003
+ idx,
2004
+ rowIdx
2005
+ } = selectedPosition;
2006
+ const column = columns[idx];
2007
+ const sourceRow = rows[rowIdx];
2008
+ const updatedRows = [...rows];
2009
+ const indexes = [];
2010
+
2011
+ for (let i = startRowIdx; i < endRowIdx; i++) {
2012
+ if (isCellEditable({
2013
+ rowIdx: i,
2014
+ idx
2015
+ })) {
2016
+ const updatedRow = onFill({
2017
+ columnKey: column.key,
2018
+ sourceRow,
2019
+ targetRow: rows[i]
2020
+ });
2021
+
2022
+ if (updatedRow !== rows[i]) {
2023
+ updatedRows[i] = updatedRow;
2024
+ indexes.push(i);
2025
+ }
2026
+ }
2027
+ }
2028
+
2029
+ if (indexes.length > 0) {
2030
+ onRowsChange == null ? void 0 : onRowsChange(updatedRows, {
2031
+ indexes,
2032
+ column
2033
+ });
2034
+ }
2035
+ }
2036
+
2037
+ return /*#__PURE__*/e$1("div", {
2038
+ className: cellDragHandleClassname,
2039
+ onMouseDown: handleMouseDown,
2040
+ onDoubleClick: handleDoubleClick
2041
+ });
2042
+ }
2043
+
2044
+ var css_248z$1 = ".a888944700-beta11{fill:currentColor}.a888944700-beta11>path{transition:d .1s}";
2045
+ styleInject$1(css_248z$1,{"insertAt":"top"});
2046
+
2047
+ const arrow = "a888944700-beta11";
2048
+ const arrowClassname = `rdg-sort-arrow ${arrow}`;
2049
+ function SortIcon({
2050
+ sortDirection
2051
+ }) {
2052
+ return sortDirection !== undefined ? /*#__PURE__*/e$1("svg", {
2053
+ viewBox: "0 0 12 8",
2054
+ width: "12",
2055
+ height: "8",
2056
+ className: arrowClassname,
2057
+ "aria-hidden": true,
2058
+ children: /*#__PURE__*/e$1("path", {
2059
+ d: sortDirection === 'ASC' ? 'M0 8 6 0 12 8' : 'M0 0 6 8 12 0'
2060
+ })
2061
+ }) : null;
2062
+ }
2063
+
2064
+ const initialPosition = {
2065
+ idx: -1,
2066
+ rowIdx: -2,
2067
+ mode: 'SELECT'
2068
+ };
2069
+
2070
+ function DataGrid({
2071
+ columns: rawColumns,
2072
+ rows: rawRows,
2073
+ summaryRows,
2074
+ rowKeyGetter,
2075
+ onRowsChange,
2076
+ rowHeight,
2077
+ headerRowHeight: rawHeaderRowHeight,
2078
+ summaryRowHeight: rawSummaryRowHeight,
2079
+ selectedRows,
2080
+ onSelectedRowsChange,
2081
+ sortColumns,
2082
+ onSortColumnsChange,
2083
+ defaultColumnOptions,
2084
+ groupBy: rawGroupBy,
2085
+ rowGrouper,
2086
+ expandedGroupIds,
2087
+ onExpandedGroupIdsChange,
2088
+ onRowClick,
2089
+ onRowDoubleClick,
2090
+ onScroll,
2091
+ onColumnResize,
2092
+ onFill,
2093
+ onCopy,
2094
+ onPaste,
2095
+ cellNavigationMode: rawCellNavigationMode,
2096
+ enableVirtualization,
2097
+ components,
2098
+ className,
2099
+ style,
2100
+ rowClass,
2101
+ direction,
2102
+ 'aria-label': ariaLabel,
2103
+ 'aria-labelledby': ariaLabelledBy,
2104
+ 'aria-describedby': ariaDescribedBy,
2105
+ 'data-testid': testId
2106
+ }, ref) {
2107
+ var _rowHeight, _ref, _components$rowRender, _ref2, _components$sortIcon, _ref3, _components$checkboxF, _components$noRowsFal, _enableVirtualization, _direction, _summaryRows$length;
2108
+
2109
+ const defaultComponents = useDefaultComponents();
2110
+ (_rowHeight = rowHeight) != null ? _rowHeight : rowHeight = 35;
2111
+ const headerRowHeight = rawHeaderRowHeight != null ? rawHeaderRowHeight : typeof rowHeight === 'number' ? rowHeight : 35;
2112
+ const summaryRowHeight = rawSummaryRowHeight != null ? rawSummaryRowHeight : typeof rowHeight === 'number' ? rowHeight : 35;
2113
+ const RowRenderer = (_ref = (_components$rowRender = components == null ? void 0 : components.rowRenderer) != null ? _components$rowRender : defaultComponents == null ? void 0 : defaultComponents.rowRenderer) != null ? _ref : Row$1;
2114
+ const sortIcon = (_ref2 = (_components$sortIcon = components == null ? void 0 : components.sortIcon) != null ? _components$sortIcon : defaultComponents == null ? void 0 : defaultComponents.sortIcon) != null ? _ref2 : SortIcon;
2115
+ const checkboxFormatter = (_ref3 = (_components$checkboxF = components == null ? void 0 : components.checkboxFormatter) != null ? _components$checkboxF : defaultComponents == null ? void 0 : defaultComponents.checkboxFormatter) != null ? _ref3 : CheckboxFormatter;
2116
+ const noRowsFallback = (_components$noRowsFal = components == null ? void 0 : components.noRowsFallback) != null ? _components$noRowsFal : defaultComponents == null ? void 0 : defaultComponents.noRowsFallback;
2117
+ const cellNavigationMode = rawCellNavigationMode != null ? rawCellNavigationMode : 'NONE';
2118
+ (_enableVirtualization = enableVirtualization) != null ? _enableVirtualization : enableVirtualization = true;
2119
+ (_direction = direction) != null ? _direction : direction = 'ltr';
2120
+ const [scrollTop, setScrollTop] = m(0);
2121
+ const [scrollLeft, setScrollLeft] = m(0);
2122
+ const [columnWidths, setColumnWidths] = m(() => new Map());
2123
+ const [selectedPosition, setSelectedPosition] = m(initialPosition);
2124
+ const [copiedCell, setCopiedCell] = m(null);
2125
+ const [isDragging, setDragging] = m(false);
2126
+ const [draggedOverRowIdx, setOverRowIdx] = m(undefined);
2127
+ const [autoResizeColumn, setAutoResizeColumn] = m(null);
2128
+ const prevSelectedPosition = h(selectedPosition);
2129
+ const latestDraggedOverRowIdx = h(draggedOverRowIdx);
2130
+ const lastSelectedRowIdx = h(-1);
2131
+ const rowRef = h(null);
2132
+ const [gridRef, gridWidth, gridHeight] = useGridDimensions();
2133
+ const headerRowsCount = 1;
2134
+ const summaryRowsCount = (_summaryRows$length = summaryRows == null ? void 0 : summaryRows.length) != null ? _summaryRows$length : 0;
2135
+ const clientHeight = gridHeight - headerRowHeight - summaryRowsCount * summaryRowHeight;
2136
+ const isSelectable = selectedRows != null && onSelectedRowsChange != null;
2137
+ const isHeaderRowSelected = selectedPosition.rowIdx === -1;
2138
+ const isRtl = direction === 'rtl';
2139
+ const leftKey = isRtl ? 'ArrowRight' : 'ArrowLeft';
2140
+ const rightKey = isRtl ? 'ArrowLeft' : 'ArrowRight';
2141
+ const defaultGridComponents = _(() => ({
2142
+ sortIcon,
2143
+ checkboxFormatter
2144
+ }), [sortIcon, checkboxFormatter]);
2145
+ const allRowsSelected = _(() => {
2146
+ const {
2147
+ length
2148
+ } = rawRows;
2149
+ return length !== 0 && selectedRows != null && rowKeyGetter != null && selectedRows.size >= length && rawRows.every(row => selectedRows.has(rowKeyGetter(row)));
2150
+ }, [rawRows, selectedRows, rowKeyGetter]);
2151
+ const {
2152
+ columns,
2153
+ colSpanColumns,
2154
+ colOverscanStartIdx,
2155
+ colOverscanEndIdx,
2156
+ layoutCssVars,
2157
+ columnMetrics,
2158
+ totalColumnWidth,
2159
+ lastFrozenColumnIndex,
2160
+ totalFrozenColumnWidth,
2161
+ groupBy
2162
+ } = useCalculatedColumns({
2163
+ rawColumns,
2164
+ columnWidths,
2165
+ scrollLeft,
2166
+ viewportWidth: gridWidth,
2167
+ defaultColumnOptions,
2168
+ rawGroupBy: rowGrouper ? rawGroupBy : undefined,
2169
+ enableVirtualization
2170
+ });
2171
+ const {
2172
+ rowOverscanStartIdx,
2173
+ rowOverscanEndIdx,
2174
+ rows,
2175
+ rowsCount,
2176
+ totalRowHeight,
2177
+ gridTemplateRows,
2178
+ isGroupRow,
2179
+ getRowTop,
2180
+ getRowHeight,
2181
+ findRowIdx
2182
+ } = useViewportRows({
2183
+ rawRows,
2184
+ groupBy,
2185
+ rowGrouper,
2186
+ rowHeight,
2187
+ clientHeight,
2188
+ scrollTop,
2189
+ expandedGroupIds,
2190
+ enableVirtualization
2191
+ });
2192
+ const viewportColumns = useViewportColumns({
2193
+ columns,
2194
+ colSpanColumns,
2195
+ colOverscanStartIdx,
2196
+ colOverscanEndIdx,
2197
+ lastFrozenColumnIndex,
2198
+ rowOverscanStartIdx,
2199
+ rowOverscanEndIdx,
2200
+ rows,
2201
+ summaryRows,
2202
+ isGroupRow
2203
+ });
2204
+ const hasGroups = groupBy.length > 0 && typeof rowGrouper === 'function';
2205
+ const minColIdx = hasGroups ? -1 : 0;
2206
+ const maxColIdx = columns.length - 1;
2207
+ const minRowIdx = -1;
2208
+ const maxRowIdx = headerRowsCount + rows.length + summaryRowsCount - 2;
2209
+ const selectedCellIsWithinSelectionBounds = isCellWithinSelectionBounds(selectedPosition);
2210
+ const selectedCellIsWithinViewportBounds = isCellWithinViewportBounds(selectedPosition);
2211
+ const selectRowLatest = useLatestFunc(selectRow);
2212
+ const selectAllRowsLatest = useLatestFunc(selectAllRows);
2213
+ const handleFormatterRowChangeLatest = useLatestFunc(updateRow);
2214
+ const selectViewportCellLatest = useLatestFunc((row, column, enableEditor) => {
2215
+ const rowIdx = rows.indexOf(row);
2216
+ selectCell({
2217
+ rowIdx,
2218
+ idx: column.idx
2219
+ }, enableEditor);
2220
+ });
2221
+ const selectGroupLatest = useLatestFunc(rowIdx => {
2222
+ selectCell({
2223
+ rowIdx,
2224
+ idx: -1
2225
+ });
2226
+ });
2227
+ const selectHeaderCellLatest = useLatestFunc(idx => {
2228
+ selectCell({
2229
+ rowIdx: -1,
2230
+ idx
2231
+ });
2232
+ });
2233
+ const selectSummaryCellLatest = useLatestFunc((summaryRow, column) => {
2234
+ const rowIdx = summaryRows.indexOf(summaryRow) + headerRowsCount + rows.length - 1;
2235
+ selectCell({
2236
+ rowIdx,
2237
+ idx: column.idx
2238
+ });
2239
+ });
2240
+ const toggleGroupLatest = useLatestFunc(toggleGroup);
2241
+ useLayoutEffect(() => {
2242
+ if (!selectedCellIsWithinSelectionBounds || isSamePosition(selectedPosition, prevSelectedPosition.current)) {
2243
+ prevSelectedPosition.current = selectedPosition;
2244
+ return;
2245
+ }
2246
+
2247
+ prevSelectedPosition.current = selectedPosition;
2248
+ scrollToCell(selectedPosition);
2249
+
2250
+ if (selectedPosition.idx === -1) {
2251
+ rowRef.current.focus({
2252
+ preventScroll: true
2253
+ });
2254
+ }
2255
+ });
2256
+ useLayoutEffect(() => {
2257
+ if (autoResizeColumn === null) return;
2258
+ const columnElement = gridRef.current.querySelector(`[aria-colindex="${autoResizeColumn.idx + 1}"]`);
2259
+ const width = columnElement.clientWidth + 2;
2260
+ setColumnWidths(columnWidths => {
2261
+ const newColumnWidths = new Map(columnWidths);
2262
+ newColumnWidths.set(autoResizeColumn.key, width);
2263
+ return newColumnWidths;
2264
+ });
2265
+ setAutoResizeColumn(null);
2266
+ onColumnResize == null ? void 0 : onColumnResize(autoResizeColumn.idx, width);
2267
+ }, [autoResizeColumn, gridRef, onColumnResize]);
2268
+ s(ref, () => ({
2269
+ element: gridRef.current,
2270
+
2271
+ scrollToColumn(idx) {
2272
+ scrollToCell({
2273
+ idx
2274
+ });
2275
+ },
2276
+
2277
+ scrollToRow(rowIdx) {
2278
+ const {
2279
+ current
2280
+ } = gridRef;
2281
+ if (!current) return;
2282
+ current.scrollTo({
2283
+ top: getRowTop(rowIdx),
2284
+ behavior: 'smooth'
2285
+ });
2286
+ },
2287
+
2288
+ selectCell
2289
+ }));
2290
+ const handleColumnResize = A$1((column, width) => {
2291
+ if (width === 'auto') {
2292
+ setAutoResizeColumn(column);
2293
+ return;
2294
+ }
2295
+
2296
+ setColumnWidths(columnWidths => {
2297
+ const newColumnWidths = new Map(columnWidths);
2298
+ newColumnWidths.set(column.key, width);
2299
+ return newColumnWidths;
2300
+ });
2301
+ onColumnResize == null ? void 0 : onColumnResize(column.idx, width);
2302
+ }, [onColumnResize]);
2303
+ const setDraggedOverRowIdx = A$1(rowIdx => {
2304
+ setOverRowIdx(rowIdx);
2305
+ latestDraggedOverRowIdx.current = rowIdx;
2306
+ }, []);
2307
+
2308
+ function selectRow({
2309
+ row,
2310
+ checked,
2311
+ isShiftClick
2312
+ }) {
2313
+ if (!onSelectedRowsChange) return;
2314
+ assertIsValidKeyGetter(rowKeyGetter);
2315
+ const newSelectedRows = new Set(selectedRows);
2316
+
2317
+ if (isGroupRow(row)) {
2318
+ for (const childRow of row.childRows) {
2319
+ const rowKey = rowKeyGetter(childRow);
2320
+
2321
+ if (checked) {
2322
+ newSelectedRows.add(rowKey);
2323
+ } else {
2324
+ newSelectedRows.delete(rowKey);
2325
+ }
2326
+ }
2327
+
2328
+ onSelectedRowsChange(newSelectedRows);
2329
+ return;
2330
+ }
2331
+
2332
+ const rowKey = rowKeyGetter(row);
2333
+
2334
+ if (checked) {
2335
+ newSelectedRows.add(rowKey);
2336
+ const previousRowIdx = lastSelectedRowIdx.current;
2337
+ const rowIdx = rows.indexOf(row);
2338
+ lastSelectedRowIdx.current = rowIdx;
2339
+
2340
+ if (isShiftClick && previousRowIdx !== -1 && previousRowIdx !== rowIdx) {
2341
+ const step = sign(rowIdx - previousRowIdx);
2342
+
2343
+ for (let i = previousRowIdx + step; i !== rowIdx; i += step) {
2344
+ const row = rows[i];
2345
+ if (isGroupRow(row)) continue;
2346
+ newSelectedRows.add(rowKeyGetter(row));
2347
+ }
2348
+ }
2349
+ } else {
2350
+ newSelectedRows.delete(rowKey);
2351
+ lastSelectedRowIdx.current = -1;
2352
+ }
2353
+
2354
+ onSelectedRowsChange(newSelectedRows);
2355
+ }
2356
+
2357
+ function selectAllRows(checked) {
2358
+ if (!onSelectedRowsChange) return;
2359
+ assertIsValidKeyGetter(rowKeyGetter);
2360
+ const newSelectedRows = new Set(selectedRows);
2361
+
2362
+ for (const row of rawRows) {
2363
+ const rowKey = rowKeyGetter(row);
2364
+
2365
+ if (checked) {
2366
+ newSelectedRows.add(rowKey);
2367
+ } else {
2368
+ newSelectedRows.delete(rowKey);
2369
+ }
2370
+ }
2371
+
2372
+ onSelectedRowsChange(newSelectedRows);
2373
+ }
2374
+
2375
+ function toggleGroup(expandedGroupId) {
2376
+ if (!onExpandedGroupIdsChange) return;
2377
+ const newExpandedGroupIds = new Set(expandedGroupIds);
2378
+
2379
+ if (newExpandedGroupIds.has(expandedGroupId)) {
2380
+ newExpandedGroupIds.delete(expandedGroupId);
2381
+ } else {
2382
+ newExpandedGroupIds.add(expandedGroupId);
2383
+ }
2384
+
2385
+ onExpandedGroupIdsChange(newExpandedGroupIds);
2386
+ }
2387
+
2388
+ function handleKeyDown(event) {
2389
+ if (!(event.target instanceof Element)) return;
2390
+ const isCellEvent = event.target.closest('.rdg-cell') !== null;
2391
+ const isRowEvent = hasGroups && event.target === rowRef.current;
2392
+ if (!isCellEvent && !isRowEvent) return;
2393
+ const {
2394
+ key,
2395
+ keyCode
2396
+ } = event;
2397
+ const {
2398
+ rowIdx
2399
+ } = selectedPosition;
2400
+
2401
+ if (selectedCellIsWithinViewportBounds && (onPaste != null || onCopy != null) && isCtrlKeyHeldDown(event) && !isGroupRow(rows[rowIdx]) && selectedPosition.mode === 'SELECT') {
2402
+ const cKey = 67;
2403
+ const vKey = 86;
2404
+
2405
+ if (keyCode === cKey) {
2406
+ handleCopy();
2407
+ return;
2408
+ }
2409
+
2410
+ if (keyCode === vKey) {
2411
+ handlePaste();
2412
+ return;
2413
+ }
2414
+ }
2415
+
2416
+ if (isRowIdxWithinViewportBounds(rowIdx)) {
2417
+ const row = rows[rowIdx];
2418
+
2419
+ if (isGroupRow(row) && selectedPosition.idx === -1 && (key === leftKey && row.isExpanded || key === rightKey && !row.isExpanded)) {
2420
+ event.preventDefault();
2421
+ toggleGroup(row.id);
2422
+ return;
2423
+ }
2424
+ }
2425
+
2426
+ switch (event.key) {
2427
+ case 'Escape':
2428
+ setCopiedCell(null);
2429
+ return;
2430
+
2431
+ case 'ArrowUp':
2432
+ case 'ArrowDown':
2433
+ case 'ArrowLeft':
2434
+ case 'ArrowRight':
2435
+ case 'Tab':
2436
+ case 'Home':
2437
+ case 'End':
2438
+ case 'PageUp':
2439
+ case 'PageDown':
2440
+ navigate(event);
2441
+ break;
2442
+
2443
+ default:
2444
+ handleCellInput(event);
2445
+ break;
2446
+ }
2447
+ }
2448
+
2449
+ function handleScroll(event) {
2450
+ const {
2451
+ scrollTop,
2452
+ scrollLeft
2453
+ } = event.currentTarget;
2454
+ setScrollTop(scrollTop);
2455
+ setScrollLeft(abs(scrollLeft));
2456
+ onScroll == null ? void 0 : onScroll(event);
2457
+ }
2458
+
2459
+ function getRawRowIdx(rowIdx) {
2460
+ return hasGroups ? rawRows.indexOf(rows[rowIdx]) : rowIdx;
2461
+ }
2462
+
2463
+ function updateRow(rowIdx, row) {
2464
+ if (typeof onRowsChange !== 'function') return;
2465
+ const rawRowIdx = getRawRowIdx(rowIdx);
2466
+ if (row === rawRows[rawRowIdx]) return;
2467
+ const updatedRows = [...rawRows];
2468
+ updatedRows[rawRowIdx] = row;
2469
+ onRowsChange(updatedRows, {
2470
+ indexes: [rawRowIdx],
2471
+ column: columns[selectedPosition.idx]
2472
+ });
2473
+ }
2474
+
2475
+ function commitEditorChanges() {
2476
+ if (selectedPosition.mode !== 'EDIT') return;
2477
+ updateRow(selectedPosition.rowIdx, selectedPosition.row);
2478
+ }
2479
+
2480
+ function handleCopy() {
2481
+ const {
2482
+ idx,
2483
+ rowIdx
2484
+ } = selectedPosition;
2485
+ const sourceRow = rawRows[getRawRowIdx(rowIdx)];
2486
+ const sourceColumnKey = columns[idx].key;
2487
+ setCopiedCell({
2488
+ row: sourceRow,
2489
+ columnKey: sourceColumnKey
2490
+ });
2491
+ onCopy == null ? void 0 : onCopy({
2492
+ sourceRow,
2493
+ sourceColumnKey
2494
+ });
2495
+ }
2496
+
2497
+ function handlePaste() {
2498
+ if (!onPaste || !onRowsChange || copiedCell === null || !isCellEditable(selectedPosition)) {
2499
+ return;
2500
+ }
2501
+
2502
+ const {
2503
+ idx,
2504
+ rowIdx
2505
+ } = selectedPosition;
2506
+ const targetRow = rawRows[getRawRowIdx(rowIdx)];
2507
+ const updatedTargetRow = onPaste({
2508
+ sourceRow: copiedCell.row,
2509
+ sourceColumnKey: copiedCell.columnKey,
2510
+ targetRow,
2511
+ targetColumnKey: columns[idx].key
2512
+ });
2513
+ updateRow(rowIdx, updatedTargetRow);
2514
+ }
2515
+
2516
+ function handleCellInput(event) {
2517
+ var _column$editorOptions;
2518
+
2519
+ if (!selectedCellIsWithinViewportBounds) return;
2520
+ const row = rows[selectedPosition.rowIdx];
2521
+ if (isGroupRow(row)) return;
2522
+ const {
2523
+ key,
2524
+ shiftKey
2525
+ } = event;
2526
+
2527
+ if (isSelectable && shiftKey && key === ' ') {
2528
+ assertIsValidKeyGetter(rowKeyGetter);
2529
+ const rowKey = rowKeyGetter(row);
2530
+ selectRow({
2531
+ row,
2532
+ checked: !selectedRows.has(rowKey),
2533
+ isShiftClick: false
2534
+ });
2535
+ event.preventDefault();
2536
+ return;
2537
+ }
2538
+
2539
+ const column = columns[selectedPosition.idx];
2540
+ (_column$editorOptions = column.editorOptions) == null ? void 0 : _column$editorOptions.onCellKeyDown == null ? void 0 : _column$editorOptions.onCellKeyDown(event);
2541
+ if (event.isDefaultPrevented()) return;
2542
+
2543
+ if (isCellEditable(selectedPosition) && isDefaultCellInput(event)) {
2544
+ setSelectedPosition(({
2545
+ idx,
2546
+ rowIdx
2547
+ }) => ({
2548
+ idx,
2549
+ rowIdx,
2550
+ mode: 'EDIT',
2551
+ row,
2552
+ originalRow: row
2553
+ }));
2554
+ }
2555
+ }
2556
+
2557
+ function isColIdxWithinSelectionBounds(idx) {
2558
+ return idx >= minColIdx && idx <= maxColIdx;
2559
+ }
2560
+
2561
+ function isRowIdxWithinViewportBounds(rowIdx) {
2562
+ return rowIdx >= 0 && rowIdx < rows.length;
2563
+ }
2564
+
2565
+ function isCellWithinSelectionBounds({
2566
+ idx,
2567
+ rowIdx
2568
+ }) {
2569
+ return rowIdx >= minRowIdx && rowIdx <= maxRowIdx && isColIdxWithinSelectionBounds(idx);
2570
+ }
2571
+
2572
+ function isCellWithinViewportBounds({
2573
+ idx,
2574
+ rowIdx
2575
+ }) {
2576
+ return isRowIdxWithinViewportBounds(rowIdx) && isColIdxWithinSelectionBounds(idx);
2577
+ }
2578
+
2579
+ function isCellEditable(position) {
2580
+ return isCellWithinViewportBounds(position) && isSelectedCellEditable({
2581
+ columns,
2582
+ rows,
2583
+ selectedPosition: position,
2584
+ isGroupRow
2585
+ });
2586
+ }
2587
+
2588
+ function selectCell(position, enableEditor) {
2589
+ if (!isCellWithinSelectionBounds(position)) return;
2590
+ commitEditorChanges();
2591
+
2592
+ if (enableEditor && isCellEditable(position)) {
2593
+ const row = rows[position.rowIdx];
2594
+ setSelectedPosition({ ...position,
2595
+ mode: 'EDIT',
2596
+ row,
2597
+ originalRow: row
2598
+ });
2599
+ } else if (isSamePosition(selectedPosition, position)) {
2600
+ scrollToCell(position);
2601
+ } else {
2602
+ setSelectedPosition({ ...position,
2603
+ mode: 'SELECT'
2604
+ });
2605
+ }
2606
+ }
2607
+
2608
+ function scrollToCell({
2609
+ idx,
2610
+ rowIdx
2611
+ }) {
2612
+ const {
2613
+ current
2614
+ } = gridRef;
2615
+ if (!current) return;
2616
+
2617
+ if (typeof idx === 'number' && idx > lastFrozenColumnIndex) {
2618
+ var _rowIdx;
2619
+
2620
+ (_rowIdx = rowIdx) != null ? _rowIdx : rowIdx = selectedPosition.rowIdx;
2621
+ if (!isCellWithinSelectionBounds({
2622
+ rowIdx,
2623
+ idx
2624
+ })) return;
2625
+ const {
2626
+ clientWidth
2627
+ } = current;
2628
+ const column = columns[idx];
2629
+ const {
2630
+ left,
2631
+ width
2632
+ } = columnMetrics.get(column);
2633
+ let right = left + width;
2634
+ const colSpan = getSelectedCellColSpan({
2635
+ rows,
2636
+ summaryRows,
2637
+ rowIdx,
2638
+ lastFrozenColumnIndex,
2639
+ column,
2640
+ isGroupRow
2641
+ });
2642
+
2643
+ if (colSpan !== undefined) {
2644
+ const {
2645
+ left,
2646
+ width
2647
+ } = columnMetrics.get(columns[column.idx + colSpan - 1]);
2648
+ right = left + width;
2649
+ }
2650
+
2651
+ const isCellAtLeftBoundary = left < scrollLeft + totalFrozenColumnWidth;
2652
+ const isCellAtRightBoundary = right > clientWidth + scrollLeft;
2653
+ const sign = isRtl ? -1 : 1;
2654
+
2655
+ if (isCellAtLeftBoundary) {
2656
+ current.scrollLeft = (left - totalFrozenColumnWidth) * sign;
2657
+ } else if (isCellAtRightBoundary) {
2658
+ current.scrollLeft = (right - clientWidth) * sign;
2659
+ }
2660
+ }
2661
+
2662
+ if (typeof rowIdx === 'number' && isRowIdxWithinViewportBounds(rowIdx)) {
2663
+ const rowTop = getRowTop(rowIdx);
2664
+ const rowHeight = getRowHeight(rowIdx);
2665
+
2666
+ if (rowTop < scrollTop) {
2667
+ current.scrollTop = rowTop;
2668
+ } else if (rowTop + rowHeight > scrollTop + clientHeight) {
2669
+ current.scrollTop = rowTop + rowHeight - clientHeight;
2670
+ }
2671
+ }
2672
+ }
2673
+
2674
+ function getNextPosition(key, ctrlKey, shiftKey) {
2675
+ const {
2676
+ idx,
2677
+ rowIdx
2678
+ } = selectedPosition;
2679
+ const row = rows[rowIdx];
2680
+ const isRowSelected = selectedCellIsWithinSelectionBounds && idx === -1;
2681
+
2682
+ if (key === leftKey && isRowSelected && isGroupRow(row) && !row.isExpanded && row.level !== 0) {
2683
+ let parentRowIdx = -1;
2684
+
2685
+ for (let i = selectedPosition.rowIdx - 1; i >= 0; i--) {
2686
+ const parentRow = rows[i];
2687
+
2688
+ if (isGroupRow(parentRow) && parentRow.id === row.parentId) {
2689
+ parentRowIdx = i;
2690
+ break;
2691
+ }
2692
+ }
2693
+
2694
+ if (parentRowIdx !== -1) {
2695
+ return {
2696
+ idx,
2697
+ rowIdx: parentRowIdx
2698
+ };
2699
+ }
2700
+ }
2701
+
2702
+ switch (key) {
2703
+ case 'ArrowUp':
2704
+ return {
2705
+ idx,
2706
+ rowIdx: rowIdx - 1
2707
+ };
2708
+
2709
+ case 'ArrowDown':
2710
+ return {
2711
+ idx,
2712
+ rowIdx: rowIdx + 1
2713
+ };
2714
+
2715
+ case 'ArrowLeft':
2716
+ return isRtl ? {
2717
+ idx: idx + 1,
2718
+ rowIdx
2719
+ } : {
2720
+ idx: idx - 1,
2721
+ rowIdx
2722
+ };
2723
+
2724
+ case 'ArrowRight':
2725
+ return isRtl ? {
2726
+ idx: idx - 1,
2727
+ rowIdx
2728
+ } : {
2729
+ idx: idx + 1,
2730
+ rowIdx
2731
+ };
2732
+
2733
+ case 'Tab':
2734
+ return {
2735
+ idx: idx + (shiftKey ? -1 : 1),
2736
+ rowIdx
2737
+ };
2738
+
2739
+ case 'Home':
2740
+ if (isRowSelected) return {
2741
+ idx,
2742
+ rowIdx: 0
2743
+ };
2744
+ return {
2745
+ idx: 0,
2746
+ rowIdx: ctrlKey ? minRowIdx : rowIdx
2747
+ };
2748
+
2749
+ case 'End':
2750
+ if (isRowSelected) return {
2751
+ idx,
2752
+ rowIdx: rows.length - 1
2753
+ };
2754
+ return {
2755
+ idx: maxColIdx,
2756
+ rowIdx: ctrlKey ? maxRowIdx : rowIdx
2757
+ };
2758
+
2759
+ case 'PageUp':
2760
+ {
2761
+ if (selectedPosition.rowIdx === minRowIdx) return selectedPosition;
2762
+ const nextRowY = getRowTop(rowIdx) + getRowHeight(rowIdx) - clientHeight;
2763
+ return {
2764
+ idx,
2765
+ rowIdx: nextRowY > 0 ? findRowIdx(nextRowY) : 0
2766
+ };
2767
+ }
2768
+
2769
+ case 'PageDown':
2770
+ {
2771
+ if (selectedPosition.rowIdx >= rows.length) return selectedPosition;
2772
+ const nextRowY = getRowTop(rowIdx) + clientHeight;
2773
+ return {
2774
+ idx,
2775
+ rowIdx: nextRowY < totalRowHeight ? findRowIdx(nextRowY) : rows.length - 1
2776
+ };
2777
+ }
2778
+
2779
+ default:
2780
+ return selectedPosition;
2781
+ }
2782
+ }
2783
+
2784
+ function navigate(event) {
2785
+ const {
2786
+ key,
2787
+ shiftKey
2788
+ } = event;
2789
+ let mode = cellNavigationMode;
2790
+
2791
+ if (key === 'Tab') {
2792
+ if (canExitGrid({
2793
+ shiftKey,
2794
+ cellNavigationMode,
2795
+ maxColIdx,
2796
+ minRowIdx,
2797
+ maxRowIdx,
2798
+ selectedPosition
2799
+ })) {
2800
+ commitEditorChanges();
2801
+ return;
2802
+ }
2803
+
2804
+ mode = cellNavigationMode === 'NONE' ? 'CHANGE_ROW' : cellNavigationMode;
2805
+ }
2806
+
2807
+ event.preventDefault();
2808
+ const ctrlKey = isCtrlKeyHeldDown(event);
2809
+ const nextPosition = getNextPosition(key, ctrlKey, shiftKey);
2810
+ if (isSamePosition(selectedPosition, nextPosition)) return;
2811
+ const nextSelectedCellPosition = getNextSelectedCellPosition({
2812
+ columns,
2813
+ colSpanColumns,
2814
+ rows,
2815
+ summaryRows,
2816
+ minRowIdx,
2817
+ maxRowIdx,
2818
+ lastFrozenColumnIndex,
2819
+ cellNavigationMode: mode,
2820
+ currentPosition: selectedPosition,
2821
+ nextPosition,
2822
+ isCellWithinBounds: isCellWithinSelectionBounds,
2823
+ isGroupRow
2824
+ });
2825
+ selectCell(nextSelectedCellPosition);
2826
+ }
2827
+
2828
+ function getDraggedOverCellIdx(currentRowIdx) {
2829
+ if (draggedOverRowIdx === undefined) return;
2830
+ const {
2831
+ rowIdx
2832
+ } = selectedPosition;
2833
+ const isDraggedOver = rowIdx < draggedOverRowIdx ? rowIdx < currentRowIdx && currentRowIdx <= draggedOverRowIdx : rowIdx > currentRowIdx && currentRowIdx >= draggedOverRowIdx;
2834
+ return isDraggedOver ? selectedPosition.idx : undefined;
2835
+ }
2836
+
2837
+ function getLayoutCssVars() {
2838
+ if (autoResizeColumn === null) return layoutCssVars;
2839
+ const {
2840
+ gridTemplateColumns
2841
+ } = layoutCssVars;
2842
+ const newSizes = gridTemplateColumns.split(' ');
2843
+ newSizes[autoResizeColumn.idx] = 'max-content';
2844
+ return { ...layoutCssVars,
2845
+ gridTemplateColumns: newSizes.join(' ')
2846
+ };
2847
+ }
2848
+
2849
+ function getDragHandle(rowIdx) {
2850
+ if (selectedPosition.rowIdx !== rowIdx || selectedPosition.mode === 'EDIT' || hasGroups || onFill == null) {
2851
+ return;
2852
+ }
2853
+
2854
+ return /*#__PURE__*/e$1(DragHandle, {
2855
+ rows: rawRows,
2856
+ columns: columns,
2857
+ selectedPosition: selectedPosition,
2858
+ isCellEditable: isCellEditable,
2859
+ latestDraggedOverRowIdx: latestDraggedOverRowIdx,
2860
+ onRowsChange: onRowsChange,
2861
+ onFill: onFill,
2862
+ setDragging: setDragging,
2863
+ setDraggedOverRowIdx: setDraggedOverRowIdx
2864
+ });
2865
+ }
2866
+
2867
+ function getCellEditor(rowIdx) {
2868
+ if (selectedPosition.rowIdx !== rowIdx || selectedPosition.mode === 'SELECT') return;
2869
+ const {
2870
+ idx,
2871
+ row
2872
+ } = selectedPosition;
2873
+ const column = columns[idx];
2874
+ const colSpan = getColSpan(column, lastFrozenColumnIndex, {
2875
+ type: 'ROW',
2876
+ row
2877
+ });
2878
+
2879
+ const closeEditor = () => {
2880
+ setSelectedPosition(({
2881
+ idx,
2882
+ rowIdx
2883
+ }) => ({
2884
+ idx,
2885
+ rowIdx,
2886
+ mode: 'SELECT'
2887
+ }));
2888
+ };
2889
+
2890
+ const onRowChange = (row, commitChanges) => {
2891
+ if (commitChanges) {
2892
+ updateRow(selectedPosition.rowIdx, row);
2893
+ closeEditor();
2894
+ } else {
2895
+ setSelectedPosition(position => ({ ...position,
2896
+ row
2897
+ }));
2898
+ }
2899
+ };
2900
+
2901
+ if (rows[selectedPosition.rowIdx] !== selectedPosition.originalRow) {
2902
+ closeEditor();
2903
+ }
2904
+
2905
+ return /*#__PURE__*/e$1(EditCell, {
2906
+ column: column,
2907
+ colSpan: colSpan,
2908
+ row: row,
2909
+ onRowChange: onRowChange,
2910
+ closeEditor: closeEditor,
2911
+ scrollToCell: () => {
2912
+ scrollToCell(selectedPosition);
2913
+ }
2914
+ }, column.key);
2915
+ }
2916
+
2917
+ function getViewportRows() {
2918
+ const rowElements = [];
2919
+ let startRowIndex = 0;
2920
+ const {
2921
+ idx: selectedIdx,
2922
+ rowIdx: selectedRowIdx
2923
+ } = selectedPosition;
2924
+ const startRowIdx = selectedCellIsWithinViewportBounds && selectedRowIdx < rowOverscanStartIdx ? rowOverscanStartIdx - 1 : rowOverscanStartIdx;
2925
+ const endRowIdx = selectedCellIsWithinViewportBounds && selectedRowIdx > rowOverscanEndIdx ? rowOverscanEndIdx + 1 : rowOverscanEndIdx;
2926
+
2927
+ for (let viewportRowIdx = startRowIdx; viewportRowIdx <= endRowIdx; viewportRowIdx++) {
2928
+ const isRowOutsideViewport = viewportRowIdx === rowOverscanStartIdx - 1 || viewportRowIdx === rowOverscanEndIdx + 1;
2929
+ const rowIdx = isRowOutsideViewport ? selectedRowIdx : viewportRowIdx;
2930
+ let rowColumns = viewportColumns;
2931
+ const selectedColumn = columns[selectedIdx];
2932
+
2933
+ if (selectedColumn !== undefined) {
2934
+ if (isRowOutsideViewport) {
2935
+ rowColumns = [selectedColumn];
2936
+ } else if (selectedRowIdx === rowIdx && !viewportColumns.includes(selectedColumn)) {
2937
+ rowColumns = selectedIdx > viewportColumns[viewportColumns.length - 1].idx ? [...viewportColumns, selectedColumn] : [...viewportColumns.slice(0, lastFrozenColumnIndex + 1), selectedColumn, ...viewportColumns.slice(lastFrozenColumnIndex + 1)];
2938
+ }
2939
+ }
2940
+
2941
+ const row = rows[rowIdx];
2942
+ const gridRowStart = headerRowsCount + rowIdx + 1;
2943
+
2944
+ if (isGroupRow(row)) {
2945
+ ({
2946
+ startRowIndex
2947
+ } = row);
2948
+ const isGroupRowSelected = isSelectable && row.childRows.every(cr => selectedRows.has(rowKeyGetter(cr)));
2949
+ rowElements.push( /*#__PURE__*/e$1(GroupRowRenderer, {
2950
+ "aria-level": row.level + 1,
2951
+ "aria-setsize": row.setSize,
2952
+ "aria-posinset": row.posInSet + 1,
2953
+ "aria-rowindex": headerRowsCount + startRowIndex + 1,
2954
+ "aria-selected": isSelectable ? isGroupRowSelected : undefined,
2955
+ id: row.id,
2956
+ groupKey: row.groupKey,
2957
+ viewportColumns: rowColumns,
2958
+ childRows: row.childRows,
2959
+ rowIdx: rowIdx,
2960
+ row: row,
2961
+ gridRowStart: gridRowStart,
2962
+ height: getRowHeight(rowIdx),
2963
+ level: row.level,
2964
+ isExpanded: row.isExpanded,
2965
+ selectedCellIdx: selectedRowIdx === rowIdx ? selectedIdx : undefined,
2966
+ isRowSelected: isGroupRowSelected,
2967
+ selectGroup: selectGroupLatest,
2968
+ toggleGroup: toggleGroupLatest
2969
+ }, row.id));
2970
+ continue;
2971
+ }
2972
+
2973
+ startRowIndex++;
2974
+ let key;
2975
+ let isRowSelected = false;
2976
+
2977
+ if (typeof rowKeyGetter === 'function') {
2978
+ var _selectedRows$has;
2979
+
2980
+ key = rowKeyGetter(row);
2981
+ isRowSelected = (_selectedRows$has = selectedRows == null ? void 0 : selectedRows.has(key)) != null ? _selectedRows$has : false;
2982
+ } else {
2983
+ key = hasGroups ? startRowIndex : rowIdx;
2984
+ }
2985
+
2986
+ rowElements.push( /*#__PURE__*/e$1(RowRenderer, {
2987
+ "aria-rowindex": headerRowsCount + (hasGroups ? startRowIndex : rowIdx) + 1,
2988
+ "aria-selected": isSelectable ? isRowSelected : undefined,
2989
+ rowIdx: rowIdx,
2990
+ row: row,
2991
+ viewportColumns: rowColumns,
2992
+ isRowSelected: isRowSelected,
2993
+ onRowClick: onRowClick,
2994
+ onRowDoubleClick: onRowDoubleClick,
2995
+ rowClass: rowClass,
2996
+ gridRowStart: gridRowStart,
2997
+ height: getRowHeight(rowIdx),
2998
+ copiedCellIdx: copiedCell !== null && copiedCell.row === row ? columns.findIndex(c => c.key === copiedCell.columnKey) : undefined,
2999
+ selectedCellIdx: selectedRowIdx === rowIdx ? selectedIdx : undefined,
3000
+ draggedOverCellIdx: getDraggedOverCellIdx(rowIdx),
3001
+ setDraggedOverRowIdx: isDragging ? setDraggedOverRowIdx : undefined,
3002
+ lastFrozenColumnIndex: lastFrozenColumnIndex,
3003
+ onRowChange: handleFormatterRowChangeLatest,
3004
+ selectCell: selectViewportCellLatest,
3005
+ selectedCellDragHandle: getDragHandle(rowIdx),
3006
+ selectedCellEditor: getCellEditor(rowIdx)
3007
+ }, key));
3008
+ }
3009
+
3010
+ return rowElements;
3011
+ }
3012
+
3013
+ if (selectedPosition.idx > maxColIdx || selectedPosition.rowIdx > maxRowIdx) {
3014
+ setSelectedPosition(initialPosition);
3015
+ setDraggedOverRowIdx(undefined);
3016
+ }
3017
+
3018
+ let templateRows = `${headerRowHeight}px`;
3019
+
3020
+ if (rows.length > 0) {
3021
+ templateRows += gridTemplateRows;
3022
+ }
3023
+
3024
+ if (summaryRowsCount > 0) {
3025
+ templateRows += ` repeat(${summaryRowsCount}, ${summaryRowHeight}px)`;
3026
+ }
3027
+
3028
+ return /*#__PURE__*/e$1("div", {
3029
+ role: hasGroups ? 'treegrid' : 'grid',
3030
+ "aria-label": ariaLabel,
3031
+ "aria-labelledby": ariaLabelledBy,
3032
+ "aria-describedby": ariaDescribedBy,
3033
+ "aria-multiselectable": isSelectable ? true : undefined,
3034
+ "aria-colcount": columns.length,
3035
+ "aria-rowcount": headerRowsCount + rowsCount + summaryRowsCount,
3036
+ className: clsx(rootClassname, className, isDragging && viewportDraggingClassname, autoResizeColumn !== null && cellAutoResizeClassname),
3037
+ style: { ...style,
3038
+ gridTemplateRows: templateRows,
3039
+ '--rdg-header-row-height': `${headerRowHeight}px`,
3040
+ '--rdg-grid-inline-size': `${totalColumnWidth}px`,
3041
+ '--rdg-summary-row-height': `${summaryRowHeight}px`,
3042
+ '--rdg-grid-block-size': `${max(totalRowHeight, clientHeight) + headerRowHeight + summaryRowsCount * summaryRowHeight}px`,
3043
+ '--rdg-sign': isRtl ? -1 : 1,
3044
+ ...getLayoutCssVars()
3045
+ },
3046
+ dir: direction,
3047
+ ref: gridRef,
3048
+ onScroll: handleScroll,
3049
+ onKeyDown: handleKeyDown,
3050
+ "data-testid": testId,
3051
+ children: [hasGroups && /*#__PURE__*/e$1("div", {
3052
+ ref: rowRef,
3053
+ tabIndex: selectedPosition.idx === -1 && selectedPosition.rowIdx !== -2 ? 0 : -1,
3054
+ className: focusSinkClassname,
3055
+ style: {
3056
+ gridRowStart: selectedPosition.rowIdx + 2
3057
+ },
3058
+ onKeyDown: handleKeyDown
3059
+ }), /*#__PURE__*/e$1(DataGridDefaultComponentsProvider, {
3060
+ value: defaultGridComponents,
3061
+ children: [/*#__PURE__*/e$1(HeaderRow$1, {
3062
+ columns: viewportColumns,
3063
+ onColumnResize: handleColumnResize,
3064
+ allRowsSelected: allRowsSelected,
3065
+ onAllRowsSelectionChange: selectAllRowsLatest,
3066
+ sortColumns: sortColumns,
3067
+ onSortColumnsChange: onSortColumnsChange,
3068
+ lastFrozenColumnIndex: lastFrozenColumnIndex,
3069
+ selectedCellIdx: isHeaderRowSelected ? selectedPosition.idx : undefined,
3070
+ selectCell: selectHeaderCellLatest,
3071
+ shouldFocusGrid: !selectedCellIsWithinSelectionBounds,
3072
+ direction: direction
3073
+ }), rows.length === 0 && noRowsFallback ? noRowsFallback : /*#__PURE__*/e$1(d$1, {
3074
+ children: [/*#__PURE__*/e$1(RowSelectionChangeProvider, {
3075
+ value: selectRowLatest,
3076
+ children: getViewportRows()
3077
+ }), summaryRows == null ? void 0 : summaryRows.map((row, rowIdx) => {
3078
+ const gridRowStart = headerRowsCount + rows.length + rowIdx + 1;
3079
+ const isSummaryRowSelected = selectedPosition.rowIdx === headerRowsCount + rows.length + rowIdx - 1;
3080
+ const top = clientHeight > totalRowHeight ? gridHeight - summaryRowHeight * (summaryRows.length - rowIdx) : undefined;
3081
+ const bottom = top === undefined ? summaryRowHeight * (summaryRows.length - 1 - rowIdx) : undefined;
3082
+ return /*#__PURE__*/e$1(SummaryRow$1, {
3083
+ "aria-rowindex": headerRowsCount + rowsCount + rowIdx + 1,
3084
+ rowIdx: rowIdx,
3085
+ gridRowStart: gridRowStart,
3086
+ row: row,
3087
+ top: top,
3088
+ bottom: bottom,
3089
+ viewportColumns: viewportColumns,
3090
+ lastFrozenColumnIndex: lastFrozenColumnIndex,
3091
+ selectedCellIdx: isSummaryRowSelected ? selectedPosition.idx : undefined,
3092
+ selectCell: selectSummaryCellLatest
3093
+ }, rowIdx);
3094
+ })]
3095
+ })]
3096
+ })]
3097
+ });
3098
+ }
3099
+
3100
+ function isSamePosition(p1, p2) {
3101
+ return p1.idx === p2.idx && p1.rowIdx === p2.rowIdx;
3102
+ }
3103
+
3104
+ const DataGrid$1 = /*#__PURE__*/x(DataGrid);
3105
+
3106
+ var css_248z$g = ".t16y9g8l700-beta11{appearance:none;background-color:var(--rdg-background-color);block-size:100%;border:2px solid #ccc;box-sizing:border-box;color:var(--rdg-color);font-family:inherit;font-size:var(--rdg-font-size);inline-size:100%;padding-block:0;padding-inline:6px;vertical-align:top}.t16y9g8l700-beta11:focus{border-color:var(--rdg-selection-color);outline:none}.t16y9g8l700-beta11::placeholder{color:#999;opacity:1}";
3107
+ styleInject$1(css_248z$g,{"insertAt":"top"});
3108
+
3109
+ function styleInject(css, ref) {
3110
+ if ( ref === void 0 ) ref = {};
3111
+ var insertAt = ref.insertAt;
3112
+
3113
+ if (!css || typeof document === 'undefined') { return; }
3114
+
3115
+ var head = document.head || document.getElementsByTagName('head')[0];
3116
+ var style = document.createElement('style');
3117
+ style.type = 'text/css';
3118
+
3119
+ if (insertAt === 'top') {
3120
+ if (head.firstChild) {
3121
+ head.insertBefore(style, head.firstChild);
3122
+ } else {
3123
+ head.appendChild(style);
3124
+ }
3125
+ } else {
3126
+ head.appendChild(style);
3127
+ }
3128
+
3129
+ if (style.styleSheet) {
3130
+ style.styleSheet.cssText = css;
3131
+ } else {
3132
+ style.appendChild(document.createTextNode(css));
3133
+ }
3134
+ }
3135
+
3136
+ var css_248z = ".dgrid2_Table .rdg{font-family:monospace,Courier New,Courier}.dgrid2_Table .rdg-checkbox-label .rdg-checkbox{block-size:16px;border-width:2px;box-shadow:inset 0 0 0 3px var(--rdg-background-color);inline-size:16px}";
3137
+ styleInject(css_248z);
3138
+
3139
+ function copyAndSort(items, attribute, descending) {
3140
+ var key = attribute;
3141
+ return __spreadArray([], items, true).sort(function (a, b) {
3142
+ if (a[key] < b[key]) {
3143
+ return descending ? 1 : -1;
3144
+ }
3145
+ else if (a[key] > b[key]) {
3146
+ return descending ? -1 : 1;
3147
+ }
3148
+ return 0;
3149
+ });
3150
+ }
3151
+ var ReactTable = function (_a) {
3152
+ var columns = _a.columns, data = _a.data, onRowClickCallback = _a.onRowClickCallback, sort = _a.sort, _b = _a.darkMode, darkMode = _b === void 0 ? false : _b, _c = _a.multiSelect, multiSelect = _c === void 0 ? false : _c;
3153
+ var _d = m([]), listColumns = _d[0], setListColumns = _d[1];
3154
+ var _e = m(), sortColumn = _e[0], setSortColumn = _e[1];
3155
+ var _f = m([]), items = _f[0], setItems = _f[1];
3156
+ var _g = m(function () { return new Set(); }), selectedRows = _g[0], setSelectedRows = _g[1];
3157
+ // Columns ---
3158
+ y(function () {
3159
+ setListColumns(__spreadArray(__spreadArray([], multiSelect ? [SelectColumn] : [], true), columns.map(function (column) { return ({
3160
+ key: column,
3161
+ name: column,
3162
+ resizable: true,
3163
+ sortable: true,
3164
+ minWidth: 80,
3165
+ }); }), true));
3166
+ }, [columns, multiSelect]);
3167
+ var onSortColumnsChange = A$1(function (sortColumns) {
3168
+ var futureSortColumn = sortColumns.slice(-1)[0];
3169
+ var sorted = futureSortColumn !== undefined;
3170
+ var isSortedDescending = (futureSortColumn === null || futureSortColumn === void 0 ? void 0 : futureSortColumn.direction) === "DESC";
3171
+ setSortColumn(futureSortColumn);
3172
+ setItems(copyAndSort(items, sorted ? futureSortColumn.columnKey : "key", sorted ? isSortedDescending : false));
3173
+ }, [items]);
3174
+ var rowKeyGetter = A$1(function (row) {
3175
+ return row.key;
3176
+ }, []);
3177
+ var onSelectedRowsChange = A$1(function (selectedRows) {
3178
+ setSelectedRows(selectedRows);
3179
+ onRowClickCallback(items.filter(function (row) { return selectedRows.has(rowKeyGetter(row)); }));
3180
+ }, [items, onRowClickCallback, rowKeyGetter]);
3181
+ var onRowClick = A$1(function (row, column) {
3182
+ onRowClickCallback(items.filter(function (item) { return rowKeyGetter(item) === rowKeyGetter(row); }));
3183
+ }, [items, onRowClickCallback, rowKeyGetter]);
3184
+ // Rows ---
3185
+ y(function () {
3186
+ var items = data.map(function (row, index) {
3187
+ var retVal = {
3188
+ key: index
3189
+ };
3190
+ columns.forEach(function (column, index) {
3191
+ retVal[column] = row[index];
3192
+ });
3193
+ return retVal;
3194
+ });
3195
+ if (sort === null || sort === void 0 ? void 0 : sort.attribute) {
3196
+ items = copyAndSort(items, sort.attribute, sort.descending);
3197
+ }
3198
+ setItems(items);
3199
+ }, [columns, data, sort]);
3200
+ return e$1(DataGrid$1, { columns: listColumns, headerRowHeight: 24, rows: items, rowKeyGetter: rowKeyGetter, rowHeight: 20, className: darkMode ? "rdg-dark" : "rdg-light", sortColumns: sortColumn ? [sortColumn] : [], onSortColumnsChange: onSortColumnsChange, selectedRows: selectedRows, onSelectedRowsChange: multiSelect ? onSelectedRowsChange : undefined, onRowClick: multiSelect ? undefined : onRowClick, "aria-describedby": "", "aria-label": "", "aria-labelledby": "", style: { height: "100%" } });
3201
+ };
3202
+ var Table = /** @class */ (function (_super) {
3203
+ __extends(Table, _super);
3204
+ function Table() {
3205
+ return _super.call(this) || this;
3206
+ }
3207
+ Table.prototype.renderTable = function () {
3208
+ var _this = this;
3209
+ return e$1(ReactTable, { columns: this.columns(), data: this.data(), darkMode: this.darkMode(), onRowClickCallback: function (row, column) {
3210
+ var _a;
3211
+ if (column === void 0) { column = ""; }
3212
+ if (_this._prevRow && JSON.stringify(_this._prevRow) !== JSON.stringify(row)) {
3213
+ _this.click(_this._prevRow, (_a = _this._prevColumn) !== null && _a !== void 0 ? _a : "", false);
3214
+ }
3215
+ if (row) {
3216
+ _this.click(row, column, true);
3217
+ }
3218
+ _this._prevRow = row;
3219
+ _this._prevColumn = column;
3220
+ } });
3221
+ };
3222
+ Table.prototype.enter = function (domNode, element) {
3223
+ _super.prototype.enter.call(this, domNode, element);
3224
+ this._div = element
3225
+ .append("div");
3226
+ };
3227
+ Table.prototype.update = function (domNode, element) {
3228
+ _super.prototype.update.call(this, domNode, element);
3229
+ this._div.style("width", this.width() + "px");
3230
+ this._div.style("height", this.height() + "px");
3231
+ B(this.renderTable(), this._div.node());
3232
+ };
3233
+ Table.prototype.exit = function (domNode, element) {
3234
+ un(this._div.node());
3235
+ this._div.remove();
3236
+ _super.prototype.exit.call(this, domNode, element);
3237
+ };
3238
+ // Events ---
3239
+ Table.prototype.click = function (row, col, sel) {
3240
+ };
3241
+ __decorate([
3242
+ publish(false, "boolean", "Dark Mode"),
3243
+ __metadata("design:type", Function)
3244
+ ], Table.prototype, "darkMode", void 0);
3245
+ __decorate([
3246
+ publish(false, "boolean", "Multiple Selection"),
3247
+ __metadata("design:type", Function)
3248
+ ], Table.prototype, "multiSelect", void 0);
3249
+ return Table;
3250
+ }(HTMLWidget));
3251
+ Table.prototype._class += " dgrid2_Table";
3252
+
3253
+ export { BUILD_VERSION, PKG_NAME, PKG_VERSION, Table };
3254
+ //# sourceMappingURL=index.es6.js.map