UNPKG

@revolist/revogrid

Version:

Virtual reactive data grid spreadsheet component - RevoGrid.

4 lines 9.37 kB
/*! * Built by Revolist OU ❤️ */ import{v as t,w as n,n as e,u as r,l as o,x as s,a as i,b as c}from"./data.store.js";import"@stencil/core/internal/client";import"./platform.js";import{G as u,b as a,C as l}from"./consts.js";function d(n){var e=t(n),r=e%1;return e==e?r?e-r:e:0}function f(t,n,e,r){var o=-1,s=null==t?0:t.length;for(r&&s&&(e=t[++o]);++o<s;)e=n(e,t[o],o,t);return e}var p,v=(p=function(t,e){return t&&function(t,n,e){for(var r=-1,o=Object(t),s=e(t),i=s.length;i--;){var c=s[++r];if(!1===n(o[c],c,o))break}return t}(t,e,n)},function(t,n){if(null==t)return t;if(!e(t))return p(t,n);for(var r=t.length,o=-1,s=Object(t);++o<r&&!1!==n(s[o],o,s););return t});function h(t,n,e,r,o){return o(t,(function(t,o,s){e=r?(r=!1,t):n(e,t,o,s)})),e}function x(t,n,e){var s=o(t)?f:h,i=arguments.length<3;return s(t,r(n),e,i,v)}function m(t){return null==t?"":t}function b(t={},n){if(n)return n.cellParser?n.cellParser(t,n):t[n.prop]}function g(t,n){return m(b(t,n))}function j(t){return t.pin?t.pin:"rgCol"}function O(t){const n={};for(const[e,r]of t.entries())r.size&&(n[e]=r.size);return n}function y(t){return!!t.children}function I(t,n=0,e,r){return x(t,((t,o)=>{var s;if(y(o))return w(t,o,I(o.children,n+1,e,t),null==r?void 0:r.columns,n);const i=Object.assign(Object.assign({},o.columnType&&(null==e?void 0:e[o.columnType])),o);return i.pin?t.columns[i.pin].push(i):t.columns.rgCol.push(i),i.order&&(t.sort[i.prop]=i),t.columnByProp[i.prop]||(t.columnByProp[i.prop]=[]),t.columnByProp[i.prop].push(i),null===(s=i.beforeSetup)||void 0===s||s.call(i,i),t}),{columns:{rgCol:[],colPinStart:[],colPinEnd:[]},columnByProp:{},columnGrouping:{rgCol:[],colPinStart:[],colPinEnd:[]},sort:{},maxLevel:n})}function w(t,n,e,r,s=0){const i=Object.assign(Object.assign({},n),{level:s,indexes:[]});C.forEach((n=>{const s=t.columns[n],c=e.columns[n];if(o(s)&&o(c)){const e=c.length;if(e){const o=[...(null==r?void 0:r[n])||[],...s].length;s.push(...c),t.columnGrouping[n].push(Object.assign(Object.assign({},i),{indexes:Array(e).fill(o).map(((t,n)=>t+n))}))}}}));for(let n in e.columnGrouping){const o=n,s=e.columnGrouping[o],i=((null==r?void 0:r[o])||[]).length,c=i>0?s.map((t=>Object.assign(Object.assign({},t),{indexes:t.indexes.map((t=>t+i))}))):s;t.columnGrouping[o].push(...c)}return t.maxLevel=Math.max(t.maxLevel,e.maxLevel),t.sort=Object.assign(Object.assign({},t.sort),e.sort),t.columnByProp=Object.assign(Object.assign({},t.columnByProp),e.columnByProp),t}function P(t,n){for(const e of t)if(y(e)){const t=P(e.children,n);if(t)return t}else if(e.prop===n)return e}function E(t,n){return P(t,n)}function M(t,n){const e={};let r=["x","y"];for(let n of r)if(t[n]<0)return e[n]=t[n],e;for(let o of r)if(t[o]>=n[o])return e[o]=t[o]-n[o],e;return null}function A(t,n){const e=Object.assign({},t),r=["x","y"];for(const o of r)t[o]<0?e[o]=0:t[o]>=n[o]&&(e[o]=n[o]-1);return e}function R(t,n){return t&&n?{x:Math.min(t.x,n.x),y:Math.min(t.y,n.y),x1:Math.max(t.x,n.x),y1:Math.max(t.y,n.y)}:null}function S(t){return t.x===t.x1&&t.y===t.y1}const $=["rowPinStart","rgRow","rowPinEnd"],C=["colPinStart","rgCol","colPinEnd"];function N(t){return $.indexOf(t)>-1}const D=`${u}-depth`,G=`${u}-name`,T=`${u}-id`,k=`${u}-value`,V=`${u}-column`,J=`${u}-expanded`,B=`${u}-prop`,L=`${u}-original-index`,q="group-expand",z="groupexpandclick",F="rgRow";function H(t,n){return t[n]||null}function K(t,n,e=!1){let r=0;const o={source:[],prevExpanded:{},oldNewIndexes:{}};return n.forEach((n=>{const s=t[n];e?Y(s)?Q(s)&&(o.prevExpanded[s[k]]=!0):(o.source.push(s),o.oldNewIndexes[n]=r,r++):o.source.push(s)})),o}function Q(t={}){return t[J]}function W({groupedValues:t,parentIds:n,isExpanded:e,itemIndex:r,expandedAll:o,prevExpanded:s,columnProps:i}){const c=n.length,u=[];let a={},l={};return t.forEach(((t,d)=>{const f=[...n,d],p=f.join(","),v=e&&(!!o||!!s[p]);if(u.push({[G]:d,[D]:c,[T]:JSON.stringify(f),[k]:p,[J]:v,[B]:i[c],[i[c]]:d}),r+=1,!e&&c&&(a[r]=!0),Array.isArray(t))t.forEach((t=>{r+=1,v||(a[r]=!0),l[t[L]]=r})),u.push(...t);else{const n=W({groupedValues:t,parentIds:f,isExpanded:v,itemIndex:r,expandedAll:o,prevExpanded:s,columnProps:i});u.push(...n.source),a=Object.assign(Object.assign({},n.trimmed),a),l=Object.assign(Object.assign({},n.oldNewIndexMap),l),r=n.itemIndex}})),{source:u,oldNewIndexMap:l,trimmed:a,itemIndex:r}}function U(t,n,{prevExpanded:e={},expandedAll:r=!1,getGroupValue:o=H}){const s=new Map;t.forEach(((t,e)=>{const r=n.map((n=>o(t,n))),i=r.pop();let c=s;r.forEach((t=>{c.has(t)||c.set(t,new Map),c=c.get(t)})),c.has(i)||c.set(i,[]),c.get(i).push(Object.assign(Object.assign({},t),{[L]:e}))}));const i=n.length,{source:c,trimmed:u,oldNewIndexMap:a}=W({groupedValues:s,parentIds:[],isExpanded:!0,itemIndex:-1,expandedAll:r,prevExpanded:e,columnProps:n});return{sourceWithGroups:c,depth:i,trimmed:u,oldNewIndexMap:a}}function X(t){return null==t?void 0:t[G]}function Y(t){return void 0!==(null==t?void 0:t[G])}function Z(t){return void 0!==(null==t?void 0:t[V])}function _(t,n){const e=t.length;let r=0;for(;r<e;r++)if(t[r]!==n[r])return r;return r}function tt(t){const n=JSON.parse(t);return Array.isArray(n)?n:null}function nt(t,n,e){const r=tt(e[T]);if(!r)return!1;const o=_(t,r);return n[D]<o}function et(t,n={}){const e=null==t?void 0:t.editor;if(e)return"string"==typeof e?n[e]:e}class rt{get columns(){return i(this.source)}constructor(t,n){this.dataStore=t,this.source=n,this.unsubscribe=[],this.hasGrouping=!1,this.unsubscribe.push(n.onChange("source",(t=>this.checkGrouping(t)))),this.checkGrouping(n.get("source")),this.type=n.get("type")}checkGrouping(t){for(let n of t){if(Z(n))return void(this.hasGrouping=!0);this.hasGrouping=!1}}isReadOnly(t,n){var e;const r=null===(e=this.columns[n])||void 0===e?void 0:e.readonly;return"function"==typeof r?r(this.rowDataModel(t,n)):!!r}mergeProperties(t,n,e,r){var o,s;const i=Object.assign({},e);i.class=Object.assign(Object.assign({},"string"==typeof i.class?{[i.class]:!0}:i.class),{[l]:!0,[a]:this.isReadOnly(t,n)});const c=null===(s=null===(o=r.column)||void 0===o?void 0:o.cellProperties)||void 0===s?void 0:s.call(o,r);return c?it(i,c):i}getRowClass(t,n){return(c(this.dataStore,t)||{})[n]||""}getSaveData(t,n,e){const r=this.rowDataModel(t,n);return void 0===e&&(e=m(r.value)),Object.assign(Object.assign({},r),{val:e})}rowDataModel(t,n){const e=this.columns[n],r=null==e?void 0:e.prop,o=c(this.dataStore,t)||{},s=this.dataStore.get("type");return{prop:r,model:o,data:this.dataStore.get("source"),column:e,rowIndex:t,colIndex:n,colType:this.type,type:s,value:b(o,e)}}getRangeData(t,n){var e;const r={},o=t.oldRange.x1-t.oldRange.x+1,s=t.oldRange.y1-t.oldRange.y+1,i={};for(let u=t.newRange.y,a=0;u<t.newRange.y1+1;u++,a++){const l=t.oldRange.y+a%s,d=c(this.dataStore,l)||{};for(let s=t.newRange.x,c=0;s<t.newRange.x1+1;s++,c++){if(u>=t.oldRange.y&&u<=t.oldRange.y1&&s>=t.oldRange.x&&s<=t.oldRange.x1)continue;if(!this.columns[s])continue;const a=null===(e=this.columns[s])||void 0===e?void 0:e.prop,f=t.oldRange.x+c%o,p=n[f].prop;this.isReadOnly(u,s)||(r[u]||(r[u]={}),r[u][a]=d[p],i[u]||(i[u]={}),i[u][a]={colIndex:f,colProp:p,rowIndex:l})}}return{changed:r,mapping:i}}getTransformedDataToApply(t,n){const e={},r=n.length,o=this.columns.length,s=this.dataStore.get("items").length;let i=t.y,c=0;for(let u=0;i<s&&u<r;i++,u++){const s=n[u%r],a=(null==s?void 0:s.length)||0;let l=t.x;for(let t=0;l<o&&t<a;l++,t++){const n=this.columns[l].prop,r=t%o;this.isReadOnly(i,l)||(e[i]||(e[i]={}),e[i][n]=s[r])}c=Math.max(c,l-1)}return{changed:e,range:R(t,{y:i-1,x:c})}}getRangeStaticData(t,n){const e={};for(let r=t.y,o=0;r<t.y1+1;r++,o++)for(let o=t.x,s=0;o<t.x1+1;o++,s++){if(!this.columns[o])continue;const t=this.columns[o].prop;this.isReadOnly(r,o)||(e[r]||(e[r]={}),e[r][t]=n)}return e}getRangeTransformedToProps(t,n){var e;const r=[],o=this.dataStore.get("type");for(let s=t.y,i=0;s<t.y1+1;s++,i++)for(let i=t.x,u=0;i<t.x1+1;i++,u++){const t=null===(e=this.columns[i])||void 0===e?void 0:e.prop;r.push({prop:t,rowIndex:s,colIndex:i,model:c(n,s),type:o,colType:this.type})}return r}copyRangeArray(t,n){const e=(i=[...this.columns],u=t.x,a=t.x1+1,l=null==i?0:i.length,l?(a&&"number"!=typeof a&&s(i,u,a)?(u=0,a=l):(u=null==u?0:d(u),a=void 0===a?l:d(a)),function(t,n,e){var r=-1,o=t.length;n<0&&(n=-n>o?0:o+n),(e=e>o?o:e)<0&&(e+=o),o=n>e?0:e-n>>>0,n>>>=0;for(var s=Array(o);++r<o;)s[r]=t[r+n];return s}(i,u,a)):[]).map((t=>t.prop)),r=[],o={};var i,u,a,l;for(let s=t.y;s<=t.y1;s++){const t=[];o[s]={};for(let r of e){const e=c(n,s);if(!e)continue;const i=e[r];t.push(i),o[s][r]=i}r.push(t)}return{data:r,mapping:o}}destroy(){this.unsubscribe.forEach((t=>t()))}}function ot(t,n){return"function"==typeof t?t(n):!!t}function st(t={},n={}){return"string"==typeof t&&(t={[t]:!0}),"string"==typeof n&&(n={[n]:!0}),Object.assign(Object.assign({},t),n)}function it(t,n){n.className&&(n.class=st(n.class,n.className),delete n.className);let e=Object.assign(Object.assign({},n),t);return n.class&&(e.class=st(e.class,n.class)),n.style&&(e.style=Object.assign(Object.assign({},n.style),e.style)),e}export{b as A,g as B,j as C,O as D,y as E,I as F,D as G,w as H,E as I,x as J,v as K,d as L,rt as M,et as N,ot as O,G as P,it as Q,A as a,S as b,C as c,T as d,k as e,V as f,R as g,J as h,N as i,B as j,L as k,q as l,z as m,M as n,F as o,K as p,Q as q,$ as r,U as s,X as t,Y as u,Z as v,_ as w,tt as x,nt as y,m as z}