@perspective-dev/viewer-datagrid 4.4.1 → 4.5.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.
Files changed (37) hide show
  1. package/dist/cdn/perspective-viewer-datagrid.js +4 -4
  2. package/dist/cdn/perspective-viewer-datagrid.js.map +4 -4
  3. package/dist/esm/custom_elements/datagrid.d.ts +12 -17
  4. package/dist/esm/model/meta_columns.d.ts +1 -0
  5. package/dist/esm/perspective-viewer-datagrid.js +3 -3
  6. package/dist/esm/perspective-viewer-datagrid.js.map +4 -4
  7. package/dist/esm/plugin/column_config_schema.d.ts +31 -0
  8. package/package.json +1 -1
  9. package/src/ts/color_utils.ts +50 -13
  10. package/src/ts/custom_elements/datagrid.ts +63 -48
  11. package/src/ts/data_listener/format_tree_header.ts +2 -2
  12. package/src/ts/data_listener/formatter_cache.ts +8 -95
  13. package/src/ts/data_listener/index.ts +9 -3
  14. package/src/ts/event_handlers/click/edit_click.ts +3 -0
  15. package/src/ts/event_handlers/dispatch_click.ts +4 -1
  16. package/src/ts/event_handlers/expand_collapse.ts +4 -1
  17. package/src/ts/event_handlers/header_click.ts +9 -3
  18. package/src/ts/event_handlers/keydown/edit_keydown.ts +11 -2
  19. package/src/ts/event_handlers/select_region.ts +15 -4
  20. package/src/ts/event_handlers/sort.ts +4 -1
  21. package/src/ts/get_cell_config.ts +10 -3
  22. package/src/ts/model/column_overrides.ts +3 -5
  23. package/src/ts/model/create.ts +22 -5
  24. package/src/ts/{plugin/column_style_controls.ts → model/meta_columns.ts} +33 -62
  25. package/src/ts/model/toolbar.ts +11 -2
  26. package/src/ts/plugin/activate.ts +3 -1
  27. package/src/ts/plugin/column_config_schema.ts +187 -0
  28. package/src/ts/plugin/draw.ts +1 -0
  29. package/src/ts/plugin/restore.ts +6 -2
  30. package/src/ts/plugin/save.ts +1 -5
  31. package/src/ts/style_handlers/body.ts +6 -2
  32. package/src/ts/style_handlers/column_header.ts +6 -2
  33. package/src/ts/style_handlers/consolidated.ts +1 -0
  34. package/src/ts/style_handlers/editable.ts +6 -2
  35. package/src/ts/style_handlers/focus.ts +2 -0
  36. package/src/ts/style_handlers/group_header.ts +10 -4
  37. package/dist/esm/plugin/column_style_controls.d.ts +0 -28
@@ -1,6 +1,6 @@
1
- import { ColumnStyleOpts } from "../plugin/column_style_controls.js";
1
+ import { ColumnConfigSchema } from "../plugin/column_config_schema.js";
2
2
  import type { View, ViewWindow } from "@perspective-dev/client";
3
- import type { IPerspectiveViewerPlugin } from "@perspective-dev/viewer";
3
+ import type { IPerspectiveViewerPlugin, PluginStaticConfig } from "@perspective-dev/viewer";
4
4
  import type { DatagridModel, DatagridToolbarElement, EditMode, DatagridPluginConfig, ColumnsConfig } from "../types.js";
5
5
  import { RegularTableElement } from "regular-table";
6
6
  type RenderTarget = "shadow" | "light";
@@ -27,27 +27,22 @@ export declare class HTMLPerspectiveViewerDatagridPluginElement extends HTMLElem
27
27
  connectedCallback(): void;
28
28
  disconnectedCallback(): void;
29
29
  activate(view: View): Promise<void>;
30
- get name(): string;
31
- get category(): string;
32
- get select_mode(): string;
33
- get min_config_columns(): number | undefined;
34
- get config_column_names(): string[];
35
- get group_rollups(): string[];
36
- /**
37
- * Give the Datagrid a higher priority so it is loaded
38
- * over the default charts by default.
39
- */
40
- get priority(): number;
41
- can_render_column_styles(type: string, _group: string): boolean;
42
- column_style_controls(type: string, group: string): ColumnStyleOpts;
30
+ get_static_config(): PluginStaticConfig;
31
+ plugin_config_schema(): ColumnConfigSchema;
32
+ column_config_schema(type: string, group: string | undefined, column_name: string, current_value: Record<string, unknown> | null, viewer_config?: {
33
+ group_by?: string[];
34
+ group_rollup_mode?: string;
35
+ }, column_stats?: {
36
+ abs_max: number;
37
+ }): ColumnConfigSchema;
43
38
  draw(view: View): Promise<void>;
44
39
  update(view: View): Promise<void>;
45
- render(viewport?: ViewWindow): Promise<string>;
40
+ render(view: View, viewport?: ViewWindow): Promise<string>;
46
41
  resize(_view: View): Promise<void>;
47
42
  clear(): Promise<void>;
48
43
  save(): any;
49
44
  restore(token: DatagridPluginConfig, columns_config?: ColumnsConfig): void;
50
- restyle(view: View): Promise<void>;
45
+ restyle(): void;
51
46
  delete(): void;
52
47
  }
53
48
  export {};
@@ -0,0 +1 @@
1
+ export declare function isMetaColumn(name: string): boolean;
@@ -1,5 +1,5 @@
1
- import"regular-table";import{PerspectiveSelectDetail as se}from"@perspective-dev/viewer/src/ts/extensions.js";function z(e,t){return t.type==="body"||t.type==="column_header"||t.type==="corner"?e._column_types[t.x]:e._row_header_types[(t.row_header_x??0)-1]}var E=Symbol("Perspective Column Config");function D(e,t,o=!1){let r=e._config.group_by.length===0&&e._config.split_by.length===0,i=t.children[0],n=o||i?._edit_mode==="EDIT";return r&&n}var ie=class{format(t){return t?"true":"false"}},pt={float:{format:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2}},datetime:{format:{dateStyle:"short",timeStyle:"medium"}},date:{format:{dateStyle:"short"}}},Z=class{_formatters;constructor(){this._formatters=new Map}create_datetime_formatter(t,o){if(o.date_format?.format!=="custom"){let r={timeZone:o.date_format?.timeZone,dateStyle:o.date_format?.dateStyle==="disabled"?void 0:o.date_format?.dateStyle??"short",timeStyle:o.date_format?.timeStyle==="disabled"?void 0:o.date_format?.timeStyle??"medium"};return new Intl.DateTimeFormat(navigator.languages,r)}else{let r={timeZone:o.date_format?.timeZone,hour12:o.date_format?.hour12??!0,fractionalSecondDigits:o.date_format?.fractionalSecondDigits};return o.date_format?.year!=="disabled"&&(r.year=o.date_format?.year??"2-digit"),o.date_format?.month!=="disabled"&&(r.month=o.date_format?.month??"numeric"),o.date_format?.day!=="disabled"&&(r.day=o.date_format?.day??"numeric"),o.date_format?.weekday&&o.date_format?.weekday!=="disabled"&&(r.weekday=o.date_format.weekday),o.date_format?.hour!=="disabled"&&(r.hour=o.date_format?.hour??"numeric"),o.date_format?.minute!=="disabled"&&(r.minute=o.date_format?.minute??"numeric"),o.date_format?.second!=="disabled"&&(r.second=o.date_format?.second??"numeric"),new Intl.DateTimeFormat(navigator.languages,r)}}create_date_formatter(t,o){let r={timeZone:"utc",dateStyle:o.date_format?.dateStyle==="disabled"?void 0:o.date_format?.dateStyle??"short"};return new Intl.DateTimeFormat(navigator.languages,r)}create_number_formatter(t,o){let r=o.number_format??pt[t]?.format;return new Intl.NumberFormat(navigator.languages,r)}create_boolean_formatter(t,o){return new ie}get(t,o){let r=[t,...Object.values(o.date_format??{}),...Object.values(o.number_format??{})].join("-");return this._formatters.has(r)||(t==="date"?this._formatters.set(r,this.create_date_formatter(t,o)):t==="datetime"?this._formatters.set(r,this.create_datetime_formatter(t,o)):t==="integer"||t==="float"?this._formatters.set(r,this.create_number_formatter(t,o)):t==="boolean"?this._formatters.set(r,this.create_boolean_formatter(t,o)):this._formatters.set(r,!1)),this._formatters.get(r)}};var le=new Z,ye=1;function ve(e,t){return le.get(e,t)}function I(e,t,o={},r=!1){if(t===null)return null;let i=r&&this._table_schema[e]||this._schema[e]||"string",n=o[e]||{};if((i==="integer"||i==="float")&&(n?.number_fg_mode==="bar"||n?.number_fg_mode==="label-bar")){let l=Math.max(0,Math.min(ye,Math.abs(t/n.fg_gradient)*ye)),a=t>=0?"":"justify-self:flex-end;",c=(l*100).toFixed(2);if(n.number_fg_mode==="bar"){let d=this._div_factory.get();return d.className="psp-bar",d.setAttribute("style",`${a}width:${c}%;height:80%;top:10%;pointer-events:none;background:var(--psp-label-bar-color)`),d}else{let d=le.get(i,n),p=d?d.format(t):t,m=this._div_factory.get();return m.className="psp-bar",m.setAttribute("style",`--label:"${p}";${a}width:${c}%;height:80%;top:10%;pointer-events:none;background:var(--psp-label-bar-color)`),m}}else if(n?.format==="link"&&i==="string"){let l=document.createElement("a");return l.setAttribute("href",t),l.setAttribute("target","_blank"),l.textContent=t,l}else if(n?.format==="bold"&&i==="string"){let l=document.createElement("b");return l.textContent=t,l}else if(n?.format==="italics"&&i==="string"){let l=document.createElement("i");return l.textContent=t,l}else{let l=le.get(i,n);return l?l.format(t):t}}function*Ee(e=[],t,o){let r=o[E]||{};for(let i of e){let n=["TOTAL",...i],s=n[n.length-1],l=n.slice(0,n.length-1).fill(""),a=I.call(this,t[l.length-1],s,r,!0);a instanceof HTMLElement?l=l.concat(a):l=l.concat({toString:()=>a}),l.length=t.length+1,yield l}}function*we(e=[],t,o){let r=o[E]||{};for(let i of e)yield i.map((n,s)=>I.call(this,t[s],n,r,!0))}function*xe(e=[],t,o){let r=o[E]||{};for(let i of e){let n=[""];for(let s in i)n.push(I.call(this,t[s],i[s],r,!0));yield i}}function Ce(e){let t,o,r,i,n;return async function(l,a,c,d,p){let m={},_={start_row:c,start_col:a,end_row:p,end_col:d,id:!0},u=null;if(d-a>0&&p-c>0){this._is_old_viewport=this._last_window?.start_row===c&&this._last_window?.end_row===p&&this._last_window?.start_col===a&&this._last_window?.end_col===d;let[A,R]=await Promise.all([this._view.to_columns_string(_),this._view.num_columns()]);u=R,m=JSON.parse(A);let T=Object.keys(m).filter(y=>y!=="__ROW_PATH__"&&y!=="__ID__"),V=!1;for(let y=0;y<T.length;y++)this._column_paths[_.start_col+y]!==T[y]&&(V=!0,this._column_paths[_.start_col+y]=T[y]);if(V){let[y,k]=await Promise.all([this._view.schema(),this._view.expression_schema()]);this._schema={...y,...k};for(let S=0;S<T.length;S++){let he=T[S].split("|")[this._config.split_by.length];this._is_editable[S+_.start_col]=!!this._table_schema[he],this._column_types[S+_.start_col]=this._schema[he]}}this._last_window=_,this._ids=m.__ID__||Array(p-c).fill(null).map((y,k)=>[k+c]),this._reverse_columns=this._column_paths.slice(a,d).reduce((y,k,S)=>(y.set(k,S),y),new Map),this._reverse_ids=this._ids?.reduce((y,k,S)=>(y.set(k?.join("|"),S),y),new Map)}else this._div_factory.clear(),u=await this._view.num_columns();let b=[],f=[],g=[],h=[],v=e.hasAttribute("settings");for(let A=a;A<Math.min(d,this._column_paths.length);++A){let R=this._column_paths[A],L=R.split("|"),T=m[R]||new Array(p-c).fill(null),V=Math.min(l[E]?.[L[this._config.split_by.length]]?.aggregate_depth||0,this._config.group_by.length);b.push(T.map((y,k)=>(m?.__ROW_PATH__?.[k]?.length??0)<V?"":I.call(this,L[this._config.split_by.length],y,l[E]||{}))),f.push(T),v&&L.push(""),g.push(L),h.push(R)}let C=d-a>0&&p-c>0;C&&(this.last_column_paths=o,this.last_meta=t,this.last_ids=r,this.last_reverse_ids=i,this.last_reverse_columns=n,o=h,t=f,r=this._ids,i=this._reverse_ids,n=this._reverse_columns);let H=m.__ROW_PATH__!==void 0,w=this._config.group_rollup_mode==="flat",B=Array.from((H?w?we:Ee:xe).call(this,m.__ROW_PATH__,this._config.group_by,l)),M=C?B[0]?.length:mt(this._config);return{num_column_headers:this._config.split_by.length+(v?2:1),num_row_headers:M,num_rows:this._num_rows,num_columns:u,row_headers:B,column_headers:g,data:b,metadata:f,column_header_merge_depth:Math.max(0,this._config.split_by.length)}}}function mt(e){return e.group_rollup_mode==="flat"?e.group_by.length:e.group_rollup_mode==="total"||e.group_by.length===0?0:e.group_by.length+1}var Me=new Map,W=null;function ke(e){let t=e.startsWith("#")?e.slice(1):e;if(t.length===3||t.length===4){let o=parseInt(t[0]+t[0],16),r=parseInt(t[1]+t[1],16),i=parseInt(t[2]+t[2],16);if(!isNaN(o)&&!isNaN(r)&&!isNaN(i))return[o,r,i]}else if(t.length===6||t.length===8){let o=parseInt(t.slice(0,2),16),r=parseInt(t.slice(2,4),16),i=parseInt(t.slice(4,6),16);if(!isNaN(o)&&!isNaN(r)&&!isNaN(i))return[o,r,i]}return null}function Te(e){let t=e.match(/^rgba?\(\s*([\d.]+)\s*[, ]\s*([\d.]+)\s*[, ]\s*([\d.]+)/i);return t?[Math.round(parseFloat(t[1])),Math.round(parseFloat(t[2])),Math.round(parseFloat(t[3]))]:null}function _t(e){if(!W){let o=document.createElement("canvas");o.width=o.height=1,W=o.getContext("2d")}if(!W)return[0,0,0];W.fillStyle="#000",W.fillStyle=e;let t=W.fillStyle;return ke(t)??Te(t)??[0,0,0]}function F(e){let t=e.trim(),o=Me.get(t);if(o)return o;let r=ke(t)??Te(t)??_t(t);return Me.set(t,r),r}function ae(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function ce([e,t,o]){return`#${ae(e)}${ae(t)}${ae(o)}`}function de([e,t,o]){let r=e/255,i=t/255,n=o/255,s=Math.max(r,i,n),l=Math.min(r,i,n),a=(s+l)/2,c=s-l,d=0,p=0;return c!==0&&(p=a>.5?c/(2-s-l):c/(s+l),s===r?d=((i-n)/c+(i<n?6:0))*60:s===i?d=((n-r)/c+2)*60:d=((r-i)/c+4)*60),[d,p,a]}function X([e,t,o]){let r=(e%360+360)%360/360;if(t===0){let l=Math.round(o*255);return[l,l,l]}let i=o<.5?o*(1+t):o+t-o*t,n=2*o-i,s=l=>(l<0&&(l+=1),l>1&&(l-=1),l<1/6?n+(i-n)*6*l:l<1/2?i:l<2/3?n+(i-n)*(2/3-l)*6:n);return[Math.round(s(r+1/3)*255),Math.round(s(r)*255),Math.round(s(r-1/3)*255)]}function ut(e,t,o=.5){return[Math.round(Math.sqrt(e[0]*e[0]*(1-o)+t[0]*t[0]*o)),Math.round(Math.sqrt(e[1]*e[1]*(1-o)+t[1]*t[1]*o)),Math.round(Math.sqrt(e[2]*e[2]*(1-o)+t[2]*t[2]*o))]}function pe(e,t){return ce(ut(F(e),[t[0],t[1],t[2]],.5))}function O([e,t,o,r],i=[255,255,255]){function n(s,l){return((1-r)*(i[s]/255)+r*(l/255))*255}return[n(0,e),n(1,t),n(2,o)]}function P([e,t,o]){return Math.sqrt(e*e*.299+t*t*.587+o*o*.114)>130?"#161616":"#ffffff"}function gt(e){let[t,o,r]=de(e),[i,n,s]=e,[l,a,c]=X([t-15,o,r]),[d,p,m]=X([t+15,o,r]);return`linear-gradient(to right top,rgb(${l},${a},${c}),rgb(${i},${n},${s}) 50%,rgb(${d},${p},${m}))`}function x(e){let t=F(e),o=gt(t);return[e,t[0],t[1],t[2],o,`rgba(${t[0]},${t[1]},${t[2]},1)`,`rgba(${t[0]},${t[1]},${t[2]},0)`]}function me(e,t){if(e.length!==t.length)return!0;for(let o=0;o<e.length;o++)if(e[o]!==t[o])return!0;return!1}function Re(e,t){if(e.length!==t.length)return!0;for(let o=0;o<e.length;o++){if(e[o].length!==t[o].length)return!0;for(let r=0;r<e[o].length;r++)if(e[o][r]!==t[o][r])return!0}return!1}function Q(e,t,o){let r=window.getComputedStyle(e).getPropertyValue(t).trim();return r.length>0?r:o}var _e=class{_name;_elements;_index;constructor(t){this._name=t,this._elements=[],this._index=0}clear(){this._index=0}get(){this._elements[this._index]||(this._elements[this._index]=document.createElement(this._name));let t=this._elements[this._index];return this._index+=1,t}};async function ee(e,t,o,r,i={}){let n=await o.get_config();if(this?.model?._config){let M=this.model._config,G=me(M.group_by,n.group_by),A=(M.group_by.length===0||n.group_by.length===0)&&G,R=me(M.split_by,n.split_by),L=me(M.columns,n.columns),T=Re(M.filter,n.filter),V=Re(M.sort,n.sort),y=M.group_rollup_mode!==n.group_rollup_mode,k=this.model._theme!==r;this._reset_scroll_top=G,this._reset_scroll_left=R,this._reset_select=G||R||T||V||L,this._reset_column_size=y||R||G||L||k||A}let[s,l,a,c,d]=await Promise.all([t.schema(),o.num_rows(),o.schema(),o.expression_schema(),this.parentElement.getEditPort()]),p=F(Q(e,"--psp--background-color","#FFFFFF")),m=x(Q(e,"--psp-datagrid--pos-cell--color","#338DCD")),_=x(Q(e,"--psp-datagrid--neg-cell--color","#FF5942")),u=x(pe(m[0],p)),b=x(pe(_[0],p)),f=x(Q(e,"--psp-active--color","#ff0000")),g={...a,...c},h={...s,...c},v=[],C=[],H=[],w=this._edit_mode||"READ_ONLY";w==="SELECT_ROW_TREE"&&(n.group_by.length===0||n.group_rollup_mode==="flat")&&(w="READ_ONLY",this._edit_mode=w),this._edit_button.dataset.editMode=w;let B=Object.assign(i,{_edit_port:d,_view:o,_table:t,_table_schema:h,_config:n,_num_rows:l,_schema:g,_ids:[],_plugin_background:p,_color:f,_pos_fg_color:m,_neg_fg_color:_,_pos_bg_color:u,_neg_bg_color:b,_column_paths:v,_column_types:H,_theme:r,_is_editable:C,_edit_mode:w,_selection_state:{selected_areas:[],dirty:!1},_row_header_types:n.group_by.map(M=>h[M]),_series_color_map:new Map,_series_color_seed:new Map,_div_factory:i._div_factory||new _e("div")});return e.setDataListener(Ce(this.parentElement).bind(B,e),{virtual_mode:window.getComputedStyle(e).getPropertyValue("--datagrid-virtual-mode")?.trim()||"both"}),B}var j=["READ_ONLY","EDIT","SELECT_ROW","SELECT_COLUMN","SELECT_REGION","SELECT_ROW_TREE"];function ft(e){return e?e._config.group_by.length>0&&e._config.group_rollup_mode!=="flat":!1}function $(e){if(typeof e>"u"){let t=j.indexOf(this._edit_mode);do t=(t+1)%j.length;while(j[t]==="SELECT_ROW_TREE"&&!ft(this.model));e=j[t]}this.parentElement?.setSelection?.(),this._edit_mode=e,this.model&&(this.model._edit_mode=e,this.model._tree_selection_id=void 0,this.model._selection_state={selected_areas:[],dirty:!0}),this._edit_button!==void 0&&(this._edit_button.dataset.editMode=e)}function Y(e){typeof e>"u"&&(e=!this._is_scroll_lock),this._is_scroll_lock=e,this.classList.toggle("sub-cell-scroll-disabled",e),this._scroll_lock!==void 0&&this._scroll_lock.classList.toggle("lock-scroll",e)}function K(e,t=!1){if(!this._initialized)return;t&&(this._cached_column_sizes=e);let o=this.regular_table,r={...o.saveColumnSizes()},{group_by:i}=this.model._config,n=i?.length>0?i.length+1:0;for(let s of Object.keys(e))if(s==="__ROW_PATH__")r[n-1]=e[s];else{let l=this.model._column_paths.indexOf(s);if(l===-1)continue;r[l+n]=e[s]}o.restoreColumnSizes(r)}function q(){if(!this._initialized)return{};if(this._cached_column_sizes){let i=this._cached_column_sizes;return this._cached_column_sizes=void 0,i}let e=this.regular_table.saveColumnSizes(),{group_by:t}=this.model._config,o=t?.length>0?t.length+1:0,r={};for(let i of Object.keys(e)){let n=Number(i);if(e[n]!==void 0){let s=n-o;s>-1?r[this.model._column_paths[s]]=e[n]:s===-1&&(r.__ROW_PATH__=e[n])}}return r}function Se(e,t,o,r){let i=Array.from(t.children[0].children[0].children),n=i.length,s=o.hasAttribute("settings");if(n<=1?i[0]?.removeAttribute("id"):i.forEach((l,a)=>{let c=s?1:0,d=a===n-(c+1)?"psp-column-titles":a===n-c?"psp-column-edit-buttons":null;d?l.setAttribute("id",d):l.removeAttribute("id")}),o.classList.toggle("psp-menu-open",!!r),s&&n>=2){let l=Array.from(i[n-2].children),a=Array.from(i[n-1].children);if(l&&a){i.slice(0,n-2).forEach(c=>{Array.from(c.children).forEach(d=>{d.classList.toggle("psp-menu-open",!1)})});for(let c=0;c<l.length;c++){let d=l[c],p=a[c],m=d.textContent===r;if(d.classList.toggle("psp-menu-open",m),p.classList.toggle("psp-menu-open",m),e._config.columns.length>1)for(let _ of t.querySelectorAll("td")){let u=t.getMeta(_);if(!u?.column_header)continue;let b=u.column_header[u.column_header.length-2]===r;_.classList.toggle("psp-menu-open",b)}}}}}function ue(e,t,o,r){let i=e._config.group_by.length-(e._config.group_rollup_mode==="flat"?1:0),n=e._column_settings_selected_column;for(let{element:s,metadata:l}of t.cells){if(!l||l.type==="body"||l.type==="row_header")continue;let a=l.column_header?.[e._config.split_by.length],c=e._config.sort.find(g=>g[0]===a),d=typeof l.x>"u",p=l.type==="corner"&&l.row_header_x===i||!d&&(l.x+1)%e._config.columns.length===0;s.classList.toggle("psp-header-border",p),s.classList.toggle("psp-header-group",!1),s.classList.toggle("psp-header-leaf",!0),s.classList.toggle("psp-is-top",!1),s.classList.toggle("psp-header-corner",d),s.classList.toggle("psp-header-sort-asc",!r&&!!c&&c[1]==="asc"),s.classList.toggle("psp-header-sort-desc",!r&&!!c&&c[1]==="desc"),s.classList.toggle("psp-header-sort-col-asc",!r&&!!c&&c[1]==="col asc"),s.classList.toggle("psp-header-sort-col-desc",!r&&!!c&&c[1]==="col desc"),s.classList.toggle("psp-header-sort-abs-asc",!r&&!!c&&c[1]==="asc abs"),s.classList.toggle("psp-header-sort-abs-desc",!r&&!!c&&c[1]==="desc abs"),s.classList.toggle("psp-header-sort-abs-col-asc",!r&&!!c&&c[1]==="col asc abs"),s.classList.toggle("psp-header-sort-abs-col-desc",!r&&!!c&&c[1]==="col desc abs");let m=z(e,l),_=m==="integer"||m==="float",u=m==="string",b=m==="date",f=m==="datetime";if(s.classList.toggle("psp-align-right",_),s.classList.toggle("psp-align-left",!_),s.classList.toggle("psp-menu-enabled",(u||_||b||f)&&!d&&l.column_header_y===e._config.split_by.length+1),s.classList.toggle("psp-sort-enabled",(u||_||b||f)&&!d&&l.column_header_y===e._config.split_by.length),s.classList.toggle("psp-is-width-override",o.saveColumnSizes()[l.size_key]!==void 0),e._config.columns.length>1&&n){let g=l.column_header?.[l.column_header.length-2]===n;s.classList.toggle("psp-menu-open",g)}}}var bt={desc:"asc",asc:void 0,"desc abs":"asc abs","asc abs":void 0},ht={desc:"asc",asc:void 0,"desc abs":"asc abs","asc abs":void 0};async function Le(e,t,o,r,i){let n=t.getMeta(i);if(!n?.column_header)return;let s=n.column_header[e._config.split_by.length],l=r.ctrlKey||r.metaKey||r.altKey?yt:vt,a=r.shiftKey,c=l(e,`${s}`,a);await o.restore({sort:c})}function yt(e,t,o){let r=[],i=!1;for(let n of e._config.sort){let[s,l]=n;if(s===t){i=!0;let a=De(e,t,l,o);a&&r.push(a)}else r.push(n)}return i||r.push([t,o?"desc abs":"desc"]),r}function vt(e,t,o){for(let[r,i]of e._config.sort)if(r===t){let n=De(e,t,i,o);return n?[n]:[]}return[[t,o?"desc abs":"desc"]]}function De(e,t,o,r){let n=e._config.split_by.length>0?ht:bt,s=o?n[o]:"desc";if(s)return[t,s]}async function ge(e,t,o){let r=t.getMeta(o.target);if(!r||r.type!=="row_header")return;let i=o.target.classList.contains("psp-tree-label-collapse");o.shiftKey&&i?e._view.set_depth(r.row_header.filter(n=>n!==void 0).length-2):o.shiftKey?e._view.set_depth(r.row_header.filter(n=>n!==void 0).length-1):i?e._view.collapse(r.y):e._view.expand(r.y),e._num_rows=await e._view.num_rows(),e._num_columns=await e._view.num_columns(),t.draw()}function Oe(e,t,o){return async r=>{let i=r;if(i.which!==1)return;let n=i.target;if(n?.tagName!=="A"){for(;n&&n.tagName!=="TD"&&n.tagName!=="TH";)if(n=n.parentElement,!n||!t.contains(n))return;if(n){if(n.classList.contains("psp-tree-label")){e._edit_mode!=="SELECT_ROW_TREE"&&ge(e,t,i);return}if(n.classList.contains("psp-menu-enabled")){let l=t.getMeta(n)?.column_header?.[e._config.split_by.length];await o.toggleColumnSettings(`${l}`)}else n.classList.contains("psp-sort-enabled")&&Le(e,t,o,i,n)}}}}function Pe(e,t,o){return async r=>{let i=r;if(i.which!==1)return;let n=i.target;if(n?.tagName!=="A"){for(;n&&n.tagName!=="TD"&&n.tagName!=="TH";)if(n=n.parentElement,!n||!t.contains(n))return;n&&n.classList.contains("psp-tree-label")&&e._edit_mode==="SELECT_ROW_TREE"&&ge(e,t,i)}}}function He(e){return t=>{let o=t;if(o.which!==1)return;let r=o.target;for(;r&&r.tagName!=="TD"&&r.tagName!=="TH";)if(r=r.parentElement,!r||!e.contains(r))return;r&&(r.classList.contains("psp-tree-label")&&o.offsetX<26||r.classList.contains("psp-header-leaf")&&!r.classList.contains("psp-header-corner"))&&o.stopImmediatePropagation()}}function fe(e,t,o){let r=e.getMeta(o);if(!r)return!1;let i=t._schema[t._column_paths[r.x]],n=o.textContent||"",s=t._ids[r.y-r.y0][0];if(i==="float"||i==="integer"){let a=parseFloat(n.replace(/,/g,""));if(isNaN(a))return!1;n=a}else if(i==="date"||i==="datetime"){let a=Date.parse(n);if(isNaN(a))return!1;n=a}else i==="boolean"&&(n=n==="true"?!1:n==="false"?!0:null);let l={__INDEX__:s,[t._column_paths[r.x]]:n};return t._table.update([l],{port_id:t._edit_port,format:null}),!0}function Ae(e,t,o,r){let i=t.getMeta(r.target);if(i?.type==="body"||i?.type==="column_header"){let n=e._is_editable[i.x],s=z(e,i)==="boolean",l=r.target.classList.contains("psp-null");n&&s&&!l&&fe(t,e,r.target)}}function Ne(e,t,o,r){return i=>{let n=i;if(D(e,o)&&r.has(t)){let s=n.target;s.classList.remove("psp-error");let l=r.get(t);r.delete(t),l.content!==s.textContent&&(fe(t,e,s)||(s.textContent=l.content||"",s.classList.add("psp-error"),s.focus()))}}}function Ve(e,t,o,r){return i=>{let s=i.target,l=t.getMeta(s);if(l?.type==="body"){let a={x:l.x,y:l.y,content:s.textContent||void 0};r.set(t,a)}}}function ze(e,t,o,r){let i=r.get(o),n=o.getRootNode();if(i){for(let{element:s,metadata:l}of t)if(l.type==="body"&&l.x===i.x&&l.y===i.y){n.activeElement!==s&&s.focus({preventScroll:!0});return}document.activeElement!==document.body&&o.contains(n.activeElement)&&n.activeElement.blur()}}function Ie(e,t){let o=t.get(e);if(!o)return!1;let r=e.getRootNode(),i=e.children[0]?.children[1];if(i)for(let n of i.children)for(let s of n.children){let l=e.getMeta(s);if(l?.type==="body"&&l.x===o.x&&l.y===o.y)return r.activeElement!==s&&s.focus({preventScroll:!0}),!0}return document.activeElement!==document.body&&e.contains(r.activeElement)&&r.activeElement.blur(),!1}function wt(e){let t;return async function(o,r,i,n,s,l){if(t){await t;return}let a;t=new Promise(d=>a=d);let c=await e(o,r,i,n,s,l);return t=void 0,a(),c}}function We(e){if(e.isContentEditable){let t=e.getRootNode().getSelection()?.getRangeAt(0);if(!t)return 0;let o=t.cloneRange();return o.selectNodeContents(e),o.setEnd(t.endContainer,t.endOffset),o.toString().length}else return e.selectionStart||0}var U=wt(async function(e,t,o,r,i,n){let s=t.getMeta(r);if(!s||s.type!=="body")return;let l=e._column_paths.length,a=e._num_rows,c=o.get(t);if(!c)return;s.x+i<l&&0<=s.x+i&&(c.x=s.x+i),s.y+n<a&&0<=s.y+n&&(c.y=s.y+n);let d=Math.max(s.x0-10,0),p=Math.min(s.x0+10,l),m=Math.max(s.y0-5,0),_=Math.min(s.y0+10,a),u=s.x0+i,b=s.y0+n;for(;!Ie(t,o)&&u>=d&&u<p&&b>=m&&b<_;)await t.scrollToCell(u,b),o.set(t,c),u+=i,b+=n});function xt(e,t,o){let r=t.getMeta(o);return r?.type==="body"&&r.y===e._num_rows-1}function Fe(e,t,o,r,i){let n=t.getRootNode().activeElement;switch(i.target.classList.remove("psp-error"),i.key){case"Enter":i.preventDefault(),xt(e,t,n)?(n.blur(),r.delete(t)):i.shiftKey?U(e,t,r,n,0,-1):U(e,t,r,n,0,1);break;case"ArrowLeft":We(n)===0&&(i.preventDefault(),U(e,t,r,n,-1,0));break;case"ArrowUp":i.preventDefault(),U(e,t,r,n,0,-1);break;case"ArrowRight":We(n)===(n.textContent?.length||0)&&(i.preventDefault(),U(e,t,r,n,1,0));break;case"ArrowDown":i.preventDefault(),U(e,t,r,n,0,1);break;default:}}function je(e,t,o,r){return i=>{let n=i;if(e._edit_mode==="EDIT"){if(!D(e,o))return;Fe(e,t,o,r,n)}else console.debug(`Mode ${e._edit_mode} for "keydown" event not yet implemented`)}}function Ue(e,t,o){return r=>{let i=r;if(e._edit_mode==="EDIT"){if(!D(e,o))return;Ae(e,t,o,i)}}}async function J({_view:e,_config:t},o,r){let i=t.group_by,n=t.split_by,s=o>=0?o:0,l=s+1,a=await e.to_json({start_row:s,end_row:l}),d=a.map(g=>g.__ROW_PATH__)[0]||[],p=i.map((g,h)=>{let v=d[h];return v?[g,"==",v]:void 0}).filter(g=>g!==void 0),m=i.length>0?r+1:r,_=Object.keys(a[0])[m],u={row:a[0],column_names:[],config:{filter:[]}},b=[];if(_){let g=_.split("|");u.column_names=[g[n.length]],b=n.map((h,v)=>{let C=g[v];return C?[h,"==",C]:void 0}).filter(h=>h!==void 0).filter(([,,h])=>h!=="__ROW_PATH__")}let f=t.filter.concat(p).concat(b);return u.config={filter:f},u}function Be(e,t,o){return async r=>{let i=r,n=t.getMeta(i.target);if(!n||n.type!=="body")return;let{x:s,y:l}=n,{row:a,column_names:c,config:d}=await J(e,l,s);o.dispatchEvent(new CustomEvent("perspective-click",{bubbles:!0,composed:!0,detail:{row:a,column_names:c,config:d}}))}}var Mt="mouse-selected-area",Ye=(e,t,{className:o=Mt,selected:r=[],onSelect:i}={})=>(e.model._selection_state={selected_areas:r,dirty:!0},t.addEventListener("mousedown",kt(e,t,o)),t.addEventListener("mouseover",Tt(e,t,o)),t.addEventListener("mouseup",Rt(e,t,o,i)),t.addStyleListener(()=>N(e,t,o)),t);function te(e){return e==="SELECT_ROW_TREE"}var kt=(e,t,o)=>r=>{let i=r;if(i.button===0&&oe(e.model._edit_mode)){if(te(e.model._edit_mode))return;e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={};let n=t.getMeta(i.target);if(n?.type==="body"&&n.x!==void 0&&n.y!==void 0){e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={x:n.x,y:n.y},e.model._selection_state.old_selected_areas=e.model._selection_state.selected_areas,e.model._selection_state.selected_areas=[];let s={x0:n.x,x1:n.x,y0:n.y,y1:n.y};e.model._selection_state.potential_selection=s,N(e,t,o,e.model._selection_state.selected_areas.concat([s]));return}}e.model._selection_state.selected_areas=[]},Tt=(e,t,o)=>r=>{let i=r,n=e.model._edit_mode;if(oe(n)&&!te(n)&&e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES&&e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x!==void 0){let s=t.getMeta(i.target);if(s?.type==="body"&&s.x!==void 0&&s.y!==void 0){let l={x0:Math.min(s.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),x1:Math.max(s.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),y0:Math.min(s.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y),y1:Math.max(s.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y)};e.model._selection_state.potential_selection=l,N(e,t,o,e.model._selection_state.selected_areas.concat([l]))}}},Rt=(e,t,o,r)=>i=>{let n=i,s=e.model._edit_mode;if(oe(s)){let l=t.getMeta(n.target);if(!l)return;if(te(s)){if((l.type==="body"||l.type==="row_header")&&l.y!==void 0&&l.y>=0){let a=e.model._selection_state.selected_areas;if(a.length>0&&a[0].y0===l.y)e.model._selection_state.selected_areas=[],e.model._selection_state.dirty=!0,N(e,t,o,[]),r?.(a[0],!0);else{let d={x0:0,x1:0,y0:l.y,y1:l.y};e.model._selection_state.selected_areas=[d],e.model._selection_state.dirty=!0,N(e,t,o),r?.(d,!1)}}e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={},e.model._selection_state.potential_selection=void 0;return}if((e.model._selection_state.old_selected_areas?.length??0)>0){let a=e.model._selection_state.old_selected_areas[0];if(a.x0===a.x1&&a.y0===a.y1&&l?.type==="body"&&a.x0===l.x&&a.y0===l.y){e.model._selection_state.selected_areas=[],e.model._selection_state.old_selected_areas=[],e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={},e.model._selection_state.potential_selection=void 0,N(e,t,o,[]);return}}if(e.model._selection_state.old_selected_areas=[],e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES&&e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x!==void 0&&l?.type==="body"&&l.x!==void 0&&l.y!==void 0){let a={x0:Math.min(l.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),x1:Math.max(l.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),y0:Math.min(l.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y),y1:Math.max(l.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y)};e.model._selection_state.selected_areas.push(a),N(e,t,o)}e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={},e.model._selection_state.potential_selection=void 0}};function Ge(e){return e==="SELECT_COLUMN"||e==="SELECT_REGION"}function $e(e){return e==="SELECT_ROW"||e==="SELECT_REGION"||e==="SELECT_ROW_TREE"}function St(e,t,{x0:o,x1:r,y0:i,y1:n}){let s={},l=t.model._edit_mode;o!==void 0&&Ge(l)&&(s.start_col=o),r!==void 0&&Ge(l)&&(s.end_col=r+1),i!==void 0&&$e(l)&&(s.start_row=i),n!==void 0&&$e(l)&&(s.end_row=n+1),e.setSelection(s)}var Lt={SELECT_REGION:(e,t)=>t.x0<=e.x&&e.x<=t.x1&&t.y0<=e.y&&e.y<=t.y1,SELECT_ROW:(e,t)=>t.y0<=e.y&&e.y<=t.y1,SELECT_ROW_TREE:(e,t)=>t.y0<=e.y&&e.y<=t.y1,SELECT_COLUMN:(e,t)=>t.x0<=e.x&&e.x<=t.x1};function oe(e){return e==="SELECT_REGION"||e==="SELECT_ROW"||e==="SELECT_COLUMN"||e==="SELECT_ROW_TREE"}var N=(e,t,o,r)=>{let i=e.model._edit_mode;if(oe(i))if(r=e.model._selection_state.selected_areas.slice(0),e.model._selection_state.potential_selection&&r.push(e.model._selection_state.potential_selection),r.length>0)St(e.parentElement,e,r[0]),te(i)||Dt(e,t,r,o);else{e.parentElement.setSelection();let n=t.querySelectorAll("tbody td");for(let s of n)s.classList.remove(o)}else if(e.model._selection_state.dirty){e.model._selection_state.dirty=!1;let n=t.querySelectorAll("tbody td, tbody th");for(let s of n)s.classList.remove(o)}},Dt=(e,t,o,r)=>{let i=Lt[e.model._edit_mode];if(!i||o.length===0)return;let n=t.querySelectorAll("tbody td");for(let s of n){let l=t.getMeta(s);if(!l||l.type!=="body")continue;let a=!1;for(let c of o)c.x0!==void 0&&c.y0!==void 0&&c.x1!==void 0&&c.y1!==void 0&&i(l,c)&&(a=!0,e.model._selection_state.dirty=!0,s.classList.add(r));a||s.classList.remove(r)}};function Ke(e,t,o,r){if(t.length===0)return;let i=e._column_settings_selected_column,n=t.length,s=r.hasAttribute("settings");if(n<=1?t[0]?.row.removeAttribute("id"):t.forEach(({row:c},d)=>{let p=s?1:0,m=d===n-(p+1)?"psp-column-titles":d===n-p?"psp-column-edit-buttons":null;m?c.setAttribute("id",m):c.removeAttribute("id")}),r.classList.toggle("psp-menu-open",!!i),s&&n>=2){let c=t[n-2],d=t[n-1];if(c&&d){t.slice(0,n-2).forEach(({cells:p})=>{p.forEach(({element:m})=>{m.classList.toggle("psp-menu-open",!1)})});for(let p=0;p<c.cells.length;p++){let m=c.cells[p]?.element,_=d.cells[p]?.element;if(!m||!_)continue;let u=m.textContent===i;m.classList.toggle("psp-menu-open",u),_.classList.toggle("psp-menu-open",u)}}}let l=e._config.split_by.length;if(l<t.length){let c=t[l];c&&ue(e,c,o,!1)}let a=e._config.split_by.length+1;if(a<t.length){let c=t[a];c&&ue(e,c,o,!0)}}function qe(e,t,o){let r=e._config.group_by.length,i=[],n=new Set;for(let s=0;s<t.length;s++){let{row:l,cells:a}=t[s],c=new Set;for(let d=0;d<a.length;d++){let{element:p,metadata:m}=a[d];if(!m)continue;p.style.backgroundColor="";let _=m.type==="corner"&&r>0&&m.row_header_x===r||m.type==="column_header"&&m.x>=0;p.classList.toggle("psp-align-right",!1),p.classList.toggle("psp-align-left",!1),p.classList.toggle("psp-header-group",!0),p.classList.toggle("psp-header-leaf",!1),p.classList.toggle("psp-header-border",_),p.classList.toggle("psp-header-group-corner",m.type==="corner"),p.classList.toggle("psp-color-mode-bar",!1),p.classList.toggle("psp-color-mode-label-bar",!1),p.classList.toggle("psp-header-sort-asc",!1),p.classList.toggle("psp-header-sort-desc",!1),p.classList.toggle("psp-header-sort-col-asc",!1),p.classList.toggle("psp-header-sort-col-desc",!1),p.classList.toggle("psp-sort-enabled",!1);let u=d;for(;i[s]&&i[s][u];++u);c.add(u);let b=p;for(let f=u;f<u+b.colSpan;++f)for(let g=s;g<s+b.rowSpan;++g)i[g]||(i[g]=[]),i[g][f]=!0;b.classList.toggle("psp-is-top",s===0||!n.has(u))}n=c}}function Je(e,t,o,[,,,,,r,i],[,,,,,n,s],l){let a=e._ids?.[t.dy??0]?.join("|"),c=(l?(t.column_header??[]).slice(0,-1):t.column_header??[]).join("|");if(e.last_reverse_columns?.has(c)&&e.last_reverse_ids?.has(a)){let d=e.last_reverse_ids?.get(a),p=e.last_reverse_columns.get(c);e._is_old_viewport?p!==void 0&&d!==void 0&&e.last_meta?.[p]?.[d]!==void 0&&e.last_meta[p][d]>(t.user??0)?(o.style.setProperty("--pulse--background-color-start",n),o.style.setProperty("--pulse--background-color-end",s),o.style.animationName==="pulse_neg"?o.style.animation="pulse_neg2 0.5s linear":o.style.animation="pulse_neg 0.5s linear"):p!==void 0&&d!==void 0&&e.last_meta?.[p]?.[d]!==void 0&&e.last_meta[p][d]<(t.user??0)?(o.style.setProperty("--pulse--background-color-start",r),o.style.setProperty("--pulse--background-color-end",i),o.style.animationName==="pulse_pos"?o.style.animation="pulse_pos2 0.5s linear":o.style.animation="pulse_pos 0.5s linear"):d!==t.dy&&(o.style.animation=""):o.style.animation=""}else o.style.animation=""}function Ze(e,t,o,r,i){let n=(r.user??0)>0,s=(r.user??0)<0,l;t?.pos_bg_color!==void 0?l=t.pos_bg_color:l=e._pos_bg_color;let a;t?.neg_bg_color!==void 0?a=t.neg_bg_color:a=e._neg_bg_color;let c=n?l:s?a:["",e._plugin_background[0],e._plugin_background[1],e._plugin_background[2],"","",""];{let[_,u,b,f]=c;if(o.style.position="",r._is_hidden_by_aggregate_depth)o.style.animation="",o.style.backgroundColor="";else if(t?.number_bg_mode==="color")o.style.animation="",o.style.backgroundColor=_;else if(t?.number_bg_mode==="gradient"){let g=Math.max(0,Math.min(1,Math.abs((r.user??0)/(t.bg_gradient??1)))),h=e._plugin_background,v=P(O([u,b,f,g],h));o.style.animation="",o.style.color=v,o.style.backgroundColor=`rgba(${u},${b},${f},${g})`}else t?.number_bg_mode==="pulse"?(Je(e,r,o,l,a,i),o.style.backgroundColor=""):(t?.number_bg_mode==="disabled"||t?.number_bg_mode,o.style.animation="",o.style.backgroundColor="")}let d=t?.pos_fg_color!==void 0?n?t.pos_fg_color:s?t.neg_fg_color:["",e._plugin_background[0],e._plugin_background[1],e._plugin_background[2],"","",""]:n?e._pos_fg_color:s?e._neg_fg_color:["",e._plugin_background[0],e._plugin_background[1],e._plugin_background[2],"","",""],[p,,,,m]=d;if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else if(t?.number_fg_mode==="disabled")if(t?.number_bg_mode==="color"){let _=e._plugin_background,u=P(O([c[1],c[2],c[3],1],_));o.style.color=u}else t?.number_bg_mode==="gradient"||(o.style.color="");else t?.number_fg_mode==="bar"?(o.style.color="",o.style.position="relative",o.style.setProperty("--psp-label-bar-color",m),o.style.setProperty("--psp-label-bar-bg",p)):t?.number_fg_mode==="label-bar"?(o.style.color="",o.style.setProperty("--psp-label-bar-color",m),o.style.setProperty("--psp-label-bar-bg",p)):(t?.number_fg_mode==="color"||!t?.number_fg_mode)&&(o.style.color=p)}function Xe(e,t,o,r){let i=r.column_header?.[e._config.split_by.length],n=t?.color!==void 0?t.color:e._color,[s,l,a,c]=n;if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else if(t?.string_color_mode==="foreground"&&r.user!==null)o.style.color=s,o.style.backgroundColor="",t?.format==="link"&&o.children[0]&&(o.children[0].style.color=s);else if(t?.string_color_mode==="background"&&r.user!==null){let d=e._plugin_background,p=P(O([l,a,c,1],d));o.style.color=p,o.style.backgroundColor=s}else if(t?.string_color_mode==="series"&&r.user!==null&&i){e._series_color_map.has(i)||(e._series_color_map.set(i,new Map),e._series_color_seed.set(i,0));let d=e._series_color_map.get(i);if(r.user&&!d.has(r.user)){let w=e._series_color_seed.get(i)??0;d.set(r.user,w),e._series_color_seed.set(i,w+1)}let p=d.get(r.user)??0,[m,_,u]=de(F(s)),b=X([m+p*150%360,_,u]),[f,g,h]=b,v=ce(b),C=e._plugin_background,H=P(O([f,g,h,1],C));o.style.color=H,o.style.backgroundColor=v}else o.style.backgroundColor="",o.style.color=""}function Qe(e,t,o,r){let i=t?.color!==void 0?t.color:e._color,[n,s,l,a]=i;if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else if(t?.datetime_color_mode==="foreground"&&r.user!==null)o.style.color=n,o.style.backgroundColor="";else if(t?.datetime_color_mode==="background"&&r.user!==null){let c=e._plugin_background,d=P(O([s,l,a,1],c));o.style.color=d,o.style.backgroundColor=n}else o.style.backgroundColor="",o.style.color=""}function et(e,t,o,r){if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else{let[i]=r.user===!0?e._pos_fg_color:r.user===!1?e._neg_fg_color:["",0,0,0,""];o.style.backgroundColor="",o.style.color=i}}function tt(e,t,o,r){let i=r.value!==void 0&&r.value!==null&&r.value?.toString()?.trim().length>0,n=(r.row_header_x??0)>=e._config.group_by.length,s=t.getMeta({dx:0,dy:(r.y??0)-(r.y0??0)+1}),l=s&&s.row_header&&typeof s.row_header[(r.row_header_x??0)+1]<"u";o.classList.toggle("psp-tree-label",i&&!n),o.classList.toggle("psp-tree-label-expand",i&&!n&&!l),o.classList.toggle("psp-tree-label-collapse",i&&!n&&l),o.classList.toggle("psp-tree-leaf",i&&n)}function ot(e,t,o,r,i,n,s){let l=i?e._tree_selection_id:void 0;s.classList.toggle("flat-group-rollup-mode",e._config.group_rollup_mode==="flat");for(let{element:a,metadata:c,isHeader:d}of t){let p=c.column_header?.[e._config.split_by.length],m=z(e,c),_=p?o[p.toString()]:void 0,u=m==="integer"||m==="float";c._is_hidden_by_aggregate_depth=e._config.group_rollup_mode==="rollup"&&(f=>f===0||f===void 0?!1:f-1<Math.min(e._config.group_by.length,_?.aggregate_depth||0))(c.row_header?.filter(f=>f!==void 0)?.length),u?Ze(e,_,a,c,r):m==="boolean"?et(e,_,a,c):m==="string"?Xe(e,_,a,c):m==="date"||m==="datetime"?Qe(e,_,a,c):(a.style.backgroundColor="",a.style.color=""),a.classList.toggle("psp-bool-type",m==="boolean"&&c.user!==null),a.classList.toggle("psp-null",c.value===null),a.classList.toggle("psp-align-right",!d&&u),a.classList.toggle("psp-align-left",d||!u),e._column_settings_selected_column?a.classList.toggle("psp-menu-open",p===e._column_settings_selected_column):a.classList.toggle("psp-menu-open",!1),a.classList.toggle("psp-color-mode-bar",_?.number_fg_mode==="bar"&&u),a.classList.toggle("psp-color-mode-label-bar",_?.number_fg_mode==="label-bar"&&u),d&&tt(e,s,a,c);let b=a.parentElement;if(b&&(b.dataset.y=String(c.y)),c.type!=="row_header"||c.row_header_x===c.row_header.length-1||c.row_header[c.row_header_x+1]===void 0?(a.dataset.y=String(c.y),c.type!=="row_header"?a.dataset.x=String(c.x):delete a.dataset.x):(delete a.dataset.y,delete a.dataset.x),a.classList.toggle("psp-select-region-inactive",!1),i)if(!l)a.classList.toggle("psp-select-region",!1);else{let f=e._ids[(c.y??0)-(c.y0??0)],g=l.reduce((C,H,w)=>C&&H===f[w],!0),h=f.length===l.length&&g,v=f.length!==l.length&&g;d&&c.type==="row_header"&&c.row_header_x!==void 0&&f[c.row_header_x]?a.classList.toggle("psp-select-region",!1):(a.classList.toggle("psp-select-region",h),a.classList.toggle("psp-select-region-inactive",v))}else a.classList.toggle("psp-select-region",!1);if(!d&&c.type==="body")if(n&&e._is_editable[c.x]){let g=c.column_header?.[e._config.split_by.length]?.toString();g&&m==="string"&&o[g]?.format==="link"?(a.toggleAttribute("contenteditable",!1),a.classList.toggle("boolean-editable",!1)):m==="boolean"?(a.toggleAttribute("contenteditable",!1),a.classList.toggle("boolean-editable",c.user!==null)):(n!==a.hasAttribute("contenteditable")&&a.toggleAttribute("contenteditable",n),a.classList.toggle("boolean-editable",!1))}else a.toggleAttribute("contenteditable",!1),a.classList.toggle("boolean-editable",!1)}}function rt(e,t,o,r,i){return function(){let s=o[E]||{},l=r.hasAttribute("settings"),a=t._edit_mode==="SELECT_ROW_TREE",c=D(t,r),d=D(t,r,!0);e.classList.toggle("edit-mode-allowed",d);let p=[],m=[],_=o.children[0]?.children[1];if(_)for(let b of _.children)for(let f of b.children){let g=o.getMeta(f);if(g&&(g.type==="body"||g.type==="row_header")){let h=f.tagName==="TH";p.push({element:f,metadata:g,isHeader:h})}}let u=o.children[0]?.children[0];if(u)for(let b of u.children){let f={row:b,cells:[]};for(let g of b.children){let h=o.getMeta(g);f.cells.push({element:g,metadata:h})}m.push(f)}ot(t,p,s,l,a,c,o),qe(t,m,o),Ke(t,m,o,r),ze(t,p,o,i)}}async function nt(e){let t=this.parentElement,o=await t.getTable();if(this._initialized)await ee.call(this,this.regular_table,o,e,t.getAttribute("theme"),this.model);else{if(this.innerHTML="",this.shadowRoot?this.shadowRoot.appendChild(this.regular_table):this.appendChild(this.regular_table),this.model=await ee.call(this,this.regular_table,o,e,t.getAttribute("theme")),!this.model)return;let r=this.model,i=this.regular_table,n=async(l,a)=>{if(r._edit_mode!=="SELECT_ROW_TREE")return;if(a)r._tree_selection_id=void 0;else{let _=l.y0-(r._last_window?.start_row??0);_>=0&&_<r._ids.length&&(r._tree_selection_id=r._ids[_])}let{row:c,column_names:d,config:p}=await J(r,l.y0,0),m;if(a){if((r._last_insert_configs?.length||0)>0)m=new se(!1,c,[],r._last_insert_configs??[],[]);else throw new Error("Suprious deselect");r._last_insert_configs=void 0}else m=new se(!0,c,d,r._last_insert_configs??[],[p]),r._last_insert_configs=[p];await i.draw({preserve_width:!0}),t.dispatchEvent(new CustomEvent("perspective-global-filter",{bubbles:!0,composed:!0,detail:m}))};Ye(this,this.regular_table,{className:"psp-select-region",onSelect:n});let s=new WeakMap;this.regular_table.addStyleListener(rt(this,this.model,this.regular_table,t,s)),this.regular_table.addEventListener("click",He(this.regular_table)),this.regular_table.addEventListener("click",Be(this.model,this.regular_table,t)),this.regular_table.addEventListener("mousedown",Oe(this.model,this.regular_table,t)),this.regular_table.addEventListener("dblclick",Pe(this.model,this.regular_table,t)),this.regular_table.addEventListener("click",Ue(this.model,this.regular_table,t)),this.regular_table.addEventListener("focusin",Ve(this.model,this.regular_table,t,s)),this.regular_table.addEventListener("focusout",Ne(this.model,this.regular_table,t,s)),this.regular_table.addEventListener("keydown",je(this.model,this.regular_table,t,s)),t.addEventListener("perspective-toggle-column-settings",l=>{let a=l;if(this.isConnected){if(Se(this.model,this.regular_table,t,a.detail.column_name??void 0),!a.detail.open){this.model._column_settings_selected_column=void 0;return}this.model._column_settings_selected_column=a.detail.column_name??void 0}}),this._initialized=!0}}function st(e,t){e=JSON.parse(JSON.stringify(e)),t=JSON.parse(JSON.stringify(t));let o={};if(e.columns)for(let[n,s]of Object.entries(e.columns))s.column_size_override!==void 0&&(o[n]=s.column_size_override,delete s.column_size_override);let r={};if(t)for(let[n,s]of Object.entries(t))r[n]={...s,pos_fg_color:s.pos_fg_color?x(s.pos_fg_color):void 0,neg_fg_color:s.neg_fg_color?x(s.neg_fg_color):void 0,pos_bg_color:s.pos_bg_color?x(s.pos_bg_color):void 0,neg_bg_color:s.neg_bg_color?x(s.neg_bg_color):void 0,color:s.color?x(s.color):void 0};"edit_mode"in e&&e.edit_mode&&(j.indexOf(e.edit_mode)!==-1?$.call(this,e.edit_mode):console.error("Unknown edit mode "+e.edit_mode)),"scroll_lock"in e&&Y.call(this,e.scroll_lock);let i=this.regular_table;K.call(this,o,!0),i[E]=r}function it(){if(this.regular_table){let e={columns:{},scroll_lock:!!this._is_scroll_lock,edit_mode:this._edit_mode},t=q.call(this);for(let o of Object.keys(t||{}))e.columns?.[o]||(e.columns=e.columns||{},e.columns[o]={}),e.columns[o].column_size_override=t[o];return JSON.parse(JSON.stringify(e))}return{}}async function lt(e){if(this.parentElement&&await this.activate(e),!this.isConnected||this.offsetParent==null||!this.model)return;let t=q.call(this),o=this.regular_table.draw({invalid_columns:!0});this._reset_scroll_top&&(this.regular_table.scrollTop=0,this._reset_scroll_top=!1),this._reset_scroll_left&&(this.regular_table.scrollLeft=0,this._reset_scroll_left=!1),this._reset_select&&(this.regular_table.dispatchEvent(new CustomEvent("psp-deselect-all",{bubbles:!1})),this._reset_select=!1),this._reset_column_size&&(this.regular_table.resetAutoSize(),this._reset_column_size=!1),K.call(this,t),await o,this._toolbar?.classList.toggle("aggregated",this.model._config.group_by.length>0||this.model._config.split_by.length>0)}function be(e,t){return e==="integer"||e==="float"?{datagrid_number_style:{fg_gradient:0,pos_fg_color:this.model._pos_fg_color[0],neg_fg_color:this.model._neg_fg_color[0],number_fg_mode:"color",bg_gradient:0,pos_bg_color:this.model._pos_bg_color[0],neg_bg_color:this.model._neg_bg_color[0],number_bg_mode:"disabled"},number_string_format:!0}:e==="date"||e==="datetime"||e==="string"?{[e==="date"||e==="datetime"?"datagrid_datetime_style":"datagrid_string_style"]:{color:this.model._color[0],bg_color:this.model._color[0]}}:null}var at='regular-table{--psp-datagrid--hover--border-color:var(--psp-inactive--color,#c5c9d080);margin:12px 0 0 12px;padding:0;font-family:inherit;& div[tabindex]{outline:none}&>div{position:absolute;inset:0;overflow:hidden}& th{text-align:center}& thead tr:not(.rt-autosize) th{max-width:0;overflow:hidden}& thead tr:last-child .rt-float,& tbody .rt-float,& thead .rt-integer,& tbody .rt-integer{text-align:right}& tbody th{text-align:left}& span.rt-tree-container{align-items:center;height:100%;display:flex}& thead .rt-string,& tbody .rt-string,& thead .rt-date,& tbody .rt-date,& thead .rt-datetime,& tbody .rt-datetime{text-align:left}& thead tr:last-child th{border-bottom:1px solid #8b868045}& tbody tr:first-child td,& tbody tr:first-child th{border-top:1px solid #0000!important}& th{position:relative}& tr th span.rt-tree-group{border-left:1px solid #eee;height:100%;margin-left:5px;margin-right:15px}& td,& th{white-space:nowrap;height:var(--psp-datagrid--row--height,19px);padding:0 5px}& table *{box-sizing:border-box}& table{color:#666;outline:none;position:absolute}& span.rt-row-header-icon{color:#aaa;font-family:var(--psp-button--font-family);padding-right:4px}& span.rt-column-header-icon{width:10px;font-size:10px;font-family:var(--psp-button--font-family);padding-left:3px;display:inline-block}& span.rt-row-header-icon:hover{color:#1a7da1;text-shadow:0 0 3px #1a7da1}& .rt-selected td{background-color:#eee}& .rt-cell-clip{text-overflow:ellipsis;overflow:hidden}& td span.rt-group-name,& th span.rt-group-name{flex:1;height:100%;margin-right:-5px;padding-left:8px;padding-right:5px}& th span.rt-group-name{text-align:left}& td th span.rt-group-leaf,& th span.rt-group-leaf{height:100%;margin-left:16px}& .rt-column-resize{cursor:col-resize;width:10px;height:100%;position:absolute;top:0;right:0}& a{color:var(--psp-datagrid--pos-cell--color)}& a:visited{color:var(--psp-active--color)}& td.psp-null:after,& th.psp-null:after{content:var(--psp-label--null--content,"-");color:var(--psp-label--null--color,inherit);font-size:var(--psp-label--null--font-size,inherit);vertical-align:middle}}.psp-header-border:not(.psp-is-top):not(.psp-header-leaf){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045)}.psp-header-group{box-shadow:0px 10px 0 -9px var(--psp-inactive--border-color,#8b868045)}.psp-is-top{box-shadow:5px 4px 0px -4px var(--psp-inactive--border-color,#8b868045)}.psp-is-top.psp-header-group:not(.psp-header-group-corner){box-shadow:5px 4px 0px -4px var(--psp-inactive--border-color,#8b868045), 0px 10px 0 -9px var(--psp-inactive--border-color,#8b868045)}.psp-header-border.psp-header-group{&:not(.psp-is-top):not(.psp-header-group-corner){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045), 0px 10px 0 -9px var(--psp-inactive--border-color,#8b868045)}}perspective-viewer[settings] tr.rt-autosize .psp-header-leaf.psp-header-border:not(.psp-menu-enabled){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045)}:host-context(perspective-viewer[settings]) tr.rt-autosize .psp-header-leaf.psp-header-border:not(.psp-menu-enabled){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045)}.psp-header-leaf.psp-header-border{box-shadow:5px -4px 0px -4px var(--psp-inactive--border-color,#8b868045)}tr:only-child th{box-shadow:none!important}regular-table{& tbody{& tr:hover th.psp-tree-leaf:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover th.psp-tree-label:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover td:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover:after{box-shadow:0px 1px 0px var(--psp-datagrid--hover--border-color,#c5c9d080);border-color:var(--psp-datagrid--hover--border-color,#c5c9d080)!important;&.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color), 0px 1px 0px var(--psp-datagrid--hover--border-color,#c5c9d080)}}& tr:last-child:hover td:not(.psp-select-region):not(.psp-select-region-inactive).psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color), inset 0px -2px 0px var(--psp--color), 0px 1px 0px var(--psp-datagrid--hover--border-color,#c5c9d080)}& tr:hover+tr th.psp-tree-leaf:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover+tr th.psp-tree-label:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover+tr td:not(.psp-select-region):not(.psp-select-region-inactive){border-top-color:#0000}& tr{& th:first-child:not(:empty),& th:first-child:empty+th:not(:empty),& th:first-child:empty~th:empty+th:not(:empty),& td:first-child{border-left-width:1px;border-left-color:#0000}& th:last-child,& td:last-child{border-right-width:0;border-right-color:#0000}}& tr:hover{color:inherit;& th:first-child:not(:empty),& th:first-child:empty+th:not(:empty),& th:first-child:empty~th:empty+th:not(:empty),& td:first-child{border-left-color:var(--psp-datagrid--hover--border-color,#c5c9d080)!important}& th:last-child,& td:last-child{border-right-color:var(--psp-datagrid--hover--border-color,#c5c9d080)!important}}}}perspective-viewer-datagrid:not(.sub-cell-scroll-disabled) regular-table table,:host(:not(.sub-cell-scroll-disabled)) regular-table table{& tbody td,& thead th:not(.rt-group-corner){transform:translate(var(--regular-table--transform-x,0px))}& tbody{transform:translate(0, var(--regular-table--transform-y,0px))}& tbody tr:first-child{& td,& th,&:after{clip-path:polygon(0 var(--regular-table--clip-y,0), 0 200%, 200% 200%, 200% var(--regular-table--clip-y,0))}}& tbody tr td:first-of-type{clip-path:polygon(var(--regular-table--clip-x,0) 0, var(--regular-table--clip-x,0) 200%, 200% 200%, 200% 0)}& tbody tr:first-child td:first-of-type{clip-path:polygon(var(--regular-table--clip-x,0) var(--regular-table--clip-y,0), var(--regular-table--clip-x,0) 200%, 200% 200%, 200% var(--regular-table--clip-y,0))}& thead tr:last-child:after,& tbody tr:not(:first-child):after{transform:translate(var(--regular-table--transform-x,0px))}& tbody tr:hover:first-child:after{clip-path:polygon(0 var(--regular-table--clip-y,0), 0 200%, 200% 200%, 200% var(--regular-table--clip-y,0))}& thead tr th.rt-group-corner+th:not(.rt-group-corner){clip-path:polygon(var(--regular-table--clip-x,0) 0, var(--regular-table--clip-x,0) 200%, 200% 200%, 200% 0)}}regular-table{outline:none;&::-webkit-scrollbar,&::-webkit-scrollbar-corner{background-color:#0000;width:12px;height:12px}&::-webkit-scrollbar-thumb{background-clip:content-box;background:var(--psp--color);border:5.5px solid var(--psp--background-color);min-width:10%;max-width:50%;min-height:10%;max-height:50%}}perspective-viewer,:host{& .psp-menu-enabled{border-radius:3px 3px 0 0;padding:0 6px;font-size:8px}& .psp-menu-enabled:hover,& tr:not(.rt-autosize) th.psp-menu-open{color:var(--psp--background-color);background-color:var(--psp--color);border-bottom-color:var(--psp--color);cursor:pointer}& tr:not(.rt-autosize) th.psp-menu-open{&:before{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:10px;height:8px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--column-settings--mask-image);mask-image:var(--psp-icon--column-settings--mask-image);background-color:var(--psp--background-color);margin-right:4px;display:inline-block}}& td.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color)}& tr:first-child td.psp-menu-open{border-top-color:var(--psp--color)!important}& tr:last-child td.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color), inset 0px -2px 0px var(--psp--color)}}perspective-viewer,:host-context(perspective-viewer){& regular-table table thead tr:last-child th{border-bottom-width:1px;border-bottom-color:var(--psp-inactive--border-color,#8b868045)}}.psp-sort-enabled:hover{cursor:pointer}regular-table.flat-group-rollup-mode.vertical-row-headers th.psp-tree-label:not(:last-of-type){writing-mode:vertical-lr}.psp-select-region-inactive,:hover .psp-select-region-inactive,:hover th.psp-tree-leaf.psp-select-region-inactive,:hover th.psp-tree-label.psp-select-region-inactive{background-color:var(--psp-inactive--color)!important;color:var(--psp--background-color)!important;border-color:var(--psp--background-color)!important}.psp-error{color:red}td:focus{outline:1px dotted #666}perspective-viewer.dragging,:host-context(perspective-viewer.dragging){& regular-table{pointer-events:none}}.psp-header-border:last-child{border-right-width:0}.psp-header-sort-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-desc--mask-image);mask-image:var(--psp-icon--sort-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-asc--mask-image);mask-image:var(--psp-icon--sort-asc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-col-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-col-desc--mask-image);mask-image:var(--psp-icon--sort-col-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-col-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-col-asc--mask-image);mask-image:var(--psp-icon--sort-col-asc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-desc--mask-image);mask-image:var(--psp-icon--sort-abs-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-asc--mask-image);mask-image:var(--psp-icon--sort-abs-asc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-col-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-col-desc--mask-image);mask-image:var(--psp-icon--sort-abs-col-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-col-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-col-asc--mask-image);mask-image:var(--psp-icon--sort-abs-col-asc--mask-image);margin-left:4px;display:inline-block}tbody th:last-of-type{border-right:1px solid var(--psp-inactive--border-color,#8b868045);text-overflow:ellipsis;overflow:hidden}tbody th:empty{background-image:linear-gradient(to right, transparent 9px, var(--psp-inactive--border-color,#eee) 10px, transparent 11px);pointer-events:none;background-repeat:no-repeat;min-width:20px;max-width:20px}regular-table:not(.flat-group-rollup-mode){& .psp-tree-label{min-width:0;max-width:0}& .psp-tree-label:before{color:var(--psp--color);font-family:var(--psp-button--font-family,inherit);padding-right:11px}& .psp-tree-label-expand:before{content:var(--psp-label--tree-expand--content,"+")}& .psp-tree-label-collapse:before{content:var(--psp-label--tree-collapse--content,"-")}& .psp-tree-label-expand,& .psp-tree-label-collapse{cursor:pointer}& .psp-tree-label:hover:before{color:var(--psp-active--color);text-shadow:0px 0px 5px var(--psp-active--color)}}.psp-tree-leaf{padding-left:24px}.psp-align-right{text-align:right}.psp-color-mode-bar{padding:0 2px}.psp-color-mode-label-bar{padding:0 2px;position:relative;& .psp-bar{isolation:isolate;position:unset}& .psp-bar:before{color:#0000;pointer-events:none;content:var(--label);justify-content:flex-end;align-items:center;padding:0 3px;display:inline-flex}& .psp-bar:after{color:var(--psp-label-bar-bg);content:var(--label);mix-blend-mode:difference;justify-content:flex-end;align-items:center;padding:0 5px;display:inline-flex;position:absolute;inset:0}}.psp-label-bar{pointer-events:none;justify-content:flex-end;align-items:center;padding:0;display:flex;inset:0}.psp-label-bar-fill{background:var(--psp-label-bar-color);pointer-events:none;height:80%;position:absolute;top:10%}.psp-label-bar-text{color:var(--psp-label-bar-bg);mix-blend-mode:difference;pointer-events:none;position:relative}.psp-align-left{text-align:left}.psp-positive:not(:focus){color:var(--psp-datagrid--pos-cell--color)}.psp-negative:not(:focus){color:var(--psp-datagrid--neg-cell--color)}regular-table table tbody td{min-width:52px!important}.psp-is-width-override .rt-column-resize,.rt-column-resize:hover{border:1px dashed #999;border-width:1px 1px 0 0}.boolean-editable{cursor:pointer}regular-table table{user-select:none;color:inherit;border-collapse:separate;font-size:1em;& th{font-weight:400}& td,& th{border-color:var(--psp-inactive--border-color,#8b868045);height:var(--psp-datagrid--row--height,23px)}& .psp-header-group{text-overflow:ellipsis}& th.psp-header-leaf{border-bottom-width:0;& span{height:var(--psp-datagrid--row--height,23px);min-height:var(--psp-datagrid--row--height,23px)}}& td,& th.psp-tree-label,& th.psp-tree-label,& th.psp-tree-leaf,& tbody tr:first-child th{border-style:solid;border-width:1px 0 0}& tbody th:empty{background-position:0 -10px}& td.psp-select-region,& th.psp-select-region{background-color:var(--psp--color)!important;color:var(--psp--background-color)!important;border-color:var(--psp--background-color)!important}}regular-table tbody tr:hover td.psp-select-region:not(.psp-select-region-inactive),regular-table tbody tr:hover+tr td.psp-select-region:not(.psp-select-region-inactive){border-color:var(--psp--background-color)!important}regular-table tbody tr:hover{& td.psp-select-region.psp-menu-open{&:not(.psp-select-region-inactive){box-shadow:inset -2px 0px 0px var(--psp--background-color), inset 2px 0px 0px var(--psp--background-color)}}}:host-context(perspective-viewer[settings]) td.psp-select-region.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--background-color), inset 2px 0px 0px var(--psp--background-color)}regular-table #psp-column-edit-buttons th:not(.rt-group-corner) span:not(.rt-column-resize):before{content:var(--psp-datagrid--column-edit-button--content,"Edit")}perspective-viewer:not([settings]),:host-context(perspective-viewer:not([settings])){& regular-table #psp-column-edit-buttons:after{content:none}}regular-table table thead tr:last-child:after{box-sizing:border-box;width:10000px;height:var(--psp-datagrid--row--height,23px);content:" ";border-bottom:1px solid var(--psp-inactive--border-color);display:block}regular-table table tbody tr:after{box-sizing:border-box;width:10000px;height:var(--psp-datagrid--row--height,23px);content:" ";border-top:1px solid #0000;display:block}regular-table table tbody tr:not(:first-child):after{border-top:1px solid var(--psp-inactive--border-color)}regular-table table tbody tr:hover:not(:first-child):after,regular-table table tbody tr:hover+tr:after{border-top:1px solid var(--psp-datagrid--hover--border-color)}@keyframes pulse_pos{0%{background-color:var(--pulse--background-color-start,#0080ff80)}to{background-color:var(--pulse--background-color-end,#0080ff00)}}@keyframes pulse_pos2{0%{background-color:var(--pulse--background-color-start,#0080ff80)}to{background-color:var(--pulse--background-color-end,#0080ff00)}}@keyframes pulse_neg{0%{background-color:var(--pulse--background-color-start,#ff190080)}to{background-color:var(--pulse--background-color-end,#ff190000)}}@keyframes pulse_neg2{0%{background-color:var(--pulse--background-color-start,#ff190080)}to{background-color:var(--pulse--background-color-end,#ff190000)}}';var re=class e extends HTMLElement{static _global_stylesheet_installed=!1;static _sheet;static renderTarget=window.CSS?.supports&&window.CSS?.supports("selector(:host-context(foo))")?"shadow":"light";regular_table;model;_toolbar;_edit_button;_scroll_lock;_is_scroll_lock;_edit_mode;_initialized;_reset_scroll_top;_reset_scroll_left;_reset_select;_reset_column_size;constructor(){super(),this.regular_table=document.createElement("regular-table"),this.regular_table.part="regular-table",this._is_scroll_lock=!1,this._edit_mode="READ_ONLY";let t=e;t._sheet||(t._sheet=new CSSStyleSheet,t._sheet.replaceSync(at)),t.renderTarget==="shadow"?this.attachShadow({mode:"open"}).adoptedStyleSheets.push(t._sheet):t.renderTarget==="light"&&!t._global_stylesheet_installed&&(t._global_stylesheet_installed=!0,document.adoptedStyleSheets.push(t._sheet))}connectedCallback(){this._toolbar||(this._toolbar=document.createElement("perspective-viewer-datagrid-toolbar"));let t=this.parentElement;t&&t.appendChild(this._toolbar)}disconnectedCallback(){this._toolbar?.parentElement?.removeChild?.(this._toolbar)}async activate(t){return await nt.call(this,t)}get name(){return"Datagrid"}get category(){return"Basic"}get select_mode(){return"toggle"}get min_config_columns(){}get config_column_names(){return["Columns"]}get group_rollups(){return["rollup","flat","total"]}get priority(){return 1}can_render_column_styles(t,o){return t!=="boolean"}column_style_controls(t,o){return be.call(this,t,o)}async draw(t){return await lt.call(this,t)}async update(t){if(this.model===void 0)await this.draw(t);else if(this.model._config.split_by?.length>0){let o=await t.dimensions();this.model._num_rows=o.num_view_rows,await this.regular_table.draw()}else this.model._num_rows=await t.num_rows(),await this.regular_table.draw()}async render(t){let r=await this.parentElement.getView(),i=await r.to_columns(t),n=await r.column_paths(t),s=t?.end_row!==void 0&&t?.end_row!==null&&t?.start_row!==void 0&&t?.start_row!==null?t.end_row-t.start_row:await r.num_rows(),l="";for(let a=0;a<s;a++){for(let c of n){let d=i[c],p=this.model._schema[c],m=this.regular_table[E],_=c.split("|").at(-1),u=ve(p,m?.[_]||{});u?l+=u.format(d[a])+" ":l+=d[a]+" "}l+=`
2
- `}return l.trim()}async resize(t){!this.isConnected||this.offsetParent==null||this._initialized&&await this.regular_table.draw()}async clear(){this.regular_table.resetAutoSize(),this.regular_table.clear()}save(){return it.call(this)}restore(t,o){return st.call(this,t,o??{})}async restyle(t){this.model?._view&&await this.draw(t)}delete(){this.disconnectedCallback(),this._toolbar=void 0,this.regular_table.table_model&&this.regular_table.resetAutoSize(),this.regular_table.clear()}};var ct=':host{height:100%;display:block;position:relative}:host #container{flex-direction:column;justify-content:stretch;align-items:stretch;display:flex;position:absolute;inset:0}:host #toolbar{align-items:stretch;height:100%;display:flex}:host #toolbar .hover-target{cursor:pointer;align-items:center;margin:0;display:inline-flex;&:hover{box-shadow:-4px 0 0 var(--psp--color), 4px 0 0 var(--psp--color);background-color:var(--psp--color)}}:host #slot-container{flex:1;position:relative}#scroll_lock.lock-scroll:before{-webkit-mask-image:var(--psp-toolbar-scroll-lock-active--content)}#scroll_lock:before{-webkit-mask-image:var(--psp-toolbar-scroll-lock--content)}#select_mode:before{content:"highlight_alt"}#edit_mode:before{-webkit-mask-image:""}#edit_mode[data-edit-mode=READ_ONLY]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-read-only--content)}#edit_mode[data-edit-mode=EDIT]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-edit--content)}:host(.aggregated) #toolbar #edit_mode[data-edit-mode=EDIT]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-read-only--content)}#edit_mode[data-edit-mode=SELECT_ROW]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-row--content)}#edit_mode[data-edit-mode=SELECT_COLUMN]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-column--content)}#edit_mode[data-edit-mode=SELECT_REGION]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-region--content)}#edit_mode[data-edit-mode=SELECT_ROW_TREE]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-row-tree--content)}#edit_mode[data-edit-mode=READ_ONLY] span:before{content:var(--psp-label--edit-mode-read-only--content,"Read Only")}#edit_mode[data-edit-mode=EDIT] span:before{content:var(--psp-label--edit-mode-edit--content,"Editable")}#edit_mode[data-edit-mode=SELECT_ROW] span:before{content:var(--psp-label--edit-mode-select-row--content,"Row Select")}#edit_mode[data-edit-mode=SELECT_COLUMN] span:before{content:var(--psp-label--edit-mode-select-column--content,"Column Select")}#edit_mode[data-edit-mode=SELECT_REGION] span:before{content:var(--psp-label--edit-mode-select-region--content,"Region Select")}#edit_mode[data-edit-mode=SELECT_ROW_TREE] span:before{content:var(--psp-label--edit-mode-select-row-tree--content,"Tree Select")}#scroll_lock span:before{content:var(--psp-label--scroll-lock-toggle--content,"Free Scroll")}#scroll_lock.lock-scroll span:before{content:var(--psp-label--scroll-lock-alt-toggle--content,"Align Scroll")}.button:before{content:"";background-color:var(--psp--color);width:21px;height:21px;-webkit-mask-size:cover;mask-size:cover}.button.editable:before,.button.lock-scroll:before{color:inherit}.button{user-select:none;box-sizing:border-box;font-size:var(--label--font-size,.75em);white-space:nowrap;border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;width:37px;height:22px;padding:0 5px;display:inline-flex}.button>span{margin:0;padding:0;display:none}.hover-target:focus-within .button,.hover-target:hover .button{background-color:var(--psp--color);color:var(--psp--background-color);opacity:1;cursor:pointer;align-items:center;display:flex;position:relative}.hover-target:focus-within .button:before,.hover-target:hover .button:before{background-color:var(--psp--background-color)}.hover-target:focus-within .button>span,.hover-target:hover .button>span{white-space:pre-wrap;background-color:var(--psp--color);text-align:center;border-radius:0 0 3px 3px;width:35px;height:auto;margin:0;padding:5px;font-size:9px;line-height:1;display:block;position:absolute;top:calc(100% + 3px);left:50%;translate:-50%}';var dt=new CSSStyleSheet;dt.replaceSync(ct);var ne=class extends HTMLElement{_initialized=!1;connectedCallback(){if(this._initialized)return;this._initialized=!0,this.setAttribute("slot","statusbar-extra"),this.attachShadow({mode:"open"}),this.shadowRoot.adoptedStyleSheets.push(dt),this.shadowRoot.innerHTML=`
1
+ import"regular-table";import{PerspectiveSelectDetail as ie}from"@perspective-dev/viewer/src/ts/extensions.js";function z(e,t){return t.type==="body"||t.type==="column_header"||t.type==="corner"?e._column_types[t.x]:e._row_header_types[(t.row_header_x??0)-1]}var E=Symbol("Perspective Column Config");function D(e,t,o=!1){let r=e._config.group_by.length===0&&e._config.split_by.length===0,i=t.children[0],n=o||i?._edit_mode==="EDIT";return r&&n}var ut=/^__(?:ROW_PATH(?:_\d+)?|ID|GROUPING_ID)__$/;function K(e){return ut.test(e)}import{createDateFormatter as _t,createDatetimeFormatter as mt,createNumberFormatter as gt}from"@perspective-dev/viewer/src/ts/column-format.js";var le=class{format(t){return t?"true":"false"}},Z=class{_formatters;constructor(){this._formatters=new Map}create_datetime_formatter(t,o){return mt(o.date_format)}create_date_formatter(t,o){return _t(o.date_format)}create_number_formatter(t,o){return gt(t,o.number_format)}create_boolean_formatter(t,o){return new le}get(t,o){let r=[t,...Object.values(o.date_format??{}),...Object.values(o.number_format??{})].join("-");return this._formatters.has(r)||(t==="date"?this._formatters.set(r,this.create_date_formatter(t,o)):t==="datetime"?this._formatters.set(r,this.create_datetime_formatter(t,o)):t==="integer"||t==="float"?this._formatters.set(r,this.create_number_formatter(t,o)):t==="boolean"?this._formatters.set(r,this.create_boolean_formatter(t,o)):this._formatters.set(r,!1)),this._formatters.get(r)}};var ae=new Z,ve=1;function Ee(e,t){return ae.get(e,t)}function W(e,t,o={},r=!1){if(t===null)return null;let i=r&&this._table_schema[e]||this._schema[e]||"string",n=o[e]||{};if((i==="integer"||i==="float")&&(n?.number_fg_mode==="bar"||n?.number_fg_mode==="label-bar")){let l=Math.max(0,Math.min(ve,Math.abs(t/n.fg_gradient)*ve)),a=t>=0?"":"justify-self:flex-end;",c=(l*100).toFixed(2);if(n.number_fg_mode==="bar"){let d=this._div_factory.get();return d.className="psp-bar",d.setAttribute("style",`${a}width:${c}%;height:80%;top:10%;pointer-events:none;background:var(--psp-label-bar-color)`),d}else{let d=ae.get(i,n),p=d?d.format(t):t,u=this._div_factory.get();return u.className="psp-bar",u.setAttribute("style",`--label:"${p}";${a}width:${c}%;height:80%;top:10%;pointer-events:none;background:var(--psp-label-bar-color)`),u}}else if(n?.format==="link"&&i==="string"){let l=document.createElement("a");return l.setAttribute("href",t),l.setAttribute("target","_blank"),l.textContent=t,l}else if(n?.format==="bold"&&i==="string"){let l=document.createElement("b");return l.textContent=t,l}else if(n?.format==="italics"&&i==="string"){let l=document.createElement("i");return l.textContent=t,l}else{let l=ae.get(i,n);return l?l.format(t):t}}function*xe(e=[],t,o){let r=o[E]||{};for(let i of e){let n=["TOTAL",...i],s=n[n.length-1],l=n.slice(0,n.length-1).fill(""),a=W.call(this,t[l.length-1],s,r,!0);a instanceof HTMLElement?l=l.concat(a):l=l.concat({toString:()=>a}),l.length=t.length+1,yield l}}function*we(e=[],t,o){let r=o[E]||{};for(let i of e)yield i.map((n,s)=>W.call(this,t[s],n,r,!0))}function*Ce(e=[],t,o){let r=o[E]||{};for(let i of e){let n=[""];for(let s in i)n.push(W.call(this,t[s],i[s],r,!0));yield i}}function ke(e){let t,o,r,i,n;return async function(l,a,c,d,p){let u={},_={start_row:c,start_col:a,end_row:p,end_col:d,id:!0},m=null;if(d-a>0&&p-c>0){this._is_old_viewport=this._last_window?.start_row===c&&this._last_window?.end_row===p&&this._last_window?.start_col===a&&this._last_window?.end_col===d;let[N,R]=await Promise.all([this._view.to_columns_string(_),this._view.num_columns()]);m=R,u=JSON.parse(N);let T=Object.keys(u).filter(y=>!K(y)),V=!1;for(let y=0;y<T.length;y++)this._column_paths[_.start_col+y]!==T[y]&&(V=!0,this._column_paths[_.start_col+y]=T[y]);if(V){let[y,M]=await Promise.all([this._view.schema(),this._view.expression_schema()]);this._schema={...y,...M};for(let L=0;L<T.length;L++){let ye=T[L].split("|")[this._config.split_by.length];this._is_editable[L+_.start_col]=!!this._table_schema[ye],this._column_types[L+_.start_col]=this._schema[ye]}}this._last_window=_,this._ids=u.__ID__||Array(p-c).fill(null).map((y,M)=>[M+c]),this._reverse_columns=this._column_paths.slice(a,d).reduce((y,M,L)=>(y.set(M,L),y),new Map),this._reverse_ids=this._ids?.reduce((y,M,L)=>(y.set(M?.join("|"),L),y),new Map)}else this._div_factory.clear(),m=await this._view.num_columns();let b=[],g=[],f=[],h=[],v=e.hasAttribute("settings");for(let N=a;N<Math.min(d,this._column_paths.length);++N){let R=this._column_paths[N],S=R.split("|"),T=u[R]||new Array(p-c).fill(null),V=Math.min(l[E]?.[S[this._config.split_by.length]]?.aggregate_depth||0,this._config.group_by.length);b.push(T.map((y,M)=>(u?.__ROW_PATH__?.[M]?.length??0)<V?"":W.call(this,S[this._config.split_by.length],y,l[E]||{}))),g.push(T),v&&S.push(""),f.push(S),h.push(R)}let C=d-a>0&&p-c>0;C&&(this.last_column_paths=o,this.last_meta=t,this.last_ids=r,this.last_reverse_ids=i,this.last_reverse_columns=n,o=h,t=g,r=this._ids,i=this._reverse_ids,n=this._reverse_columns);let H=u.__ROW_PATH__!==void 0,x=this._config.group_rollup_mode==="flat",$=Array.from((H?x?we:xe:Ce).call(this,u.__ROW_PATH__,this._config.group_by,l)),k=C?$[0]?.length:ft(this._config);return{num_column_headers:this._config.split_by.length+(v?2:1),num_row_headers:k,num_rows:this._num_rows,num_columns:m,row_headers:$,column_headers:f,data:b,metadata:g,column_header_merge_depth:Math.max(0,this._config.split_by.length)}}}function ft(e){return e.group_rollup_mode==="flat"?e.group_by.length:e.group_rollup_mode==="total"||e.group_by.length===0?0:e.group_by.length+1}var Me=new Map,I=null;function Te(e){let t=e.startsWith("#")?e.slice(1):e;if(t.length===3||t.length===4){let o=parseInt(t[0]+t[0],16),r=parseInt(t[1]+t[1],16),i=parseInt(t[2]+t[2],16);if(!isNaN(o)&&!isNaN(r)&&!isNaN(i))return[o,r,i]}else if(t.length===6||t.length===8){let o=parseInt(t.slice(0,2),16),r=parseInt(t.slice(2,4),16),i=parseInt(t.slice(4,6),16);if(!isNaN(o)&&!isNaN(r)&&!isNaN(i))return[o,r,i]}return null}function Re(e){let t=e.match(/^rgba?\(\s*([\d.]+)\s*[, ]\s*([\d.]+)\s*[, ]\s*([\d.]+)/i);return t?[Math.round(parseFloat(t[1])),Math.round(parseFloat(t[2])),Math.round(parseFloat(t[3]))]:null}function bt(e){if(!I){let o=document.createElement("canvas");o.width=o.height=1,I=o.getContext("2d")}if(!I)return[0,0,0];I.fillStyle="#000",I.fillStyle=e;let t=I.fillStyle;return Te(t)??Re(t)??[0,0,0]}function F(e){let t=e.trim(),o=Me.get(t);if(o)return o;let r=Te(t)??Re(t)??bt(t);return Me.set(t,r),r}function ce(e){return Math.max(0,Math.min(255,Math.round(e))).toString(16).padStart(2,"0")}function de([e,t,o]){return`#${ce(e)}${ce(t)}${ce(o)}`}function pe([e,t,o]){let r=e/255,i=t/255,n=o/255,s=Math.max(r,i,n),l=Math.min(r,i,n),a=(s+l)/2,c=s-l,d=0,p=0;return c!==0&&(p=a>.5?c/(2-s-l):c/(s+l),s===r?d=((i-n)/c+(i<n?6:0))*60:s===i?d=((n-r)/c+2)*60:d=((r-i)/c+4)*60),[d,p,a]}function Q([e,t,o]){let r=(e%360+360)%360/360;if(t===0){let l=Math.round(o*255);return[l,l,l]}let i=o<.5?o*(1+t):o+t-o*t,n=2*o-i,s=l=>(l<0&&(l+=1),l>1&&(l-=1),l<1/6?n+(i-n)*6*l:l<1/2?i:l<2/3?n+(i-n)*(2/3-l)*6:n);return[Math.round(s(r+1/3)*255),Math.round(s(r)*255),Math.round(s(r-1/3)*255)]}function ht(e,t,o=.5){return[Math.round(Math.sqrt(e[0]*e[0]*(1-o)+t[0]*t[0]*o)),Math.round(Math.sqrt(e[1]*e[1]*(1-o)+t[1]*t[1]*o)),Math.round(Math.sqrt(e[2]*e[2]*(1-o)+t[2]*t[2]*o))]}function ue(e,t){return de(ht(F(e),[t[0],t[1],t[2]],.5))}function P([e,t,o,r],i=[255,255,255]){function n(s,l){return((1-r)*(i[s]/255)+r*(l/255))*255}return[n(0,e),n(1,t),n(2,o)]}function O([e,t,o]){return Math.sqrt(e*e*.299+t*t*.587+o*o*.114)>130?"#161616":"#ffffff"}function yt(e){let[t,o,r]=pe(e),[i,n,s]=e,[l,a,c]=Q([t-15,o,r]),[d,p,u]=Q([t+15,o,r]);return`linear-gradient(to right top,rgb(${l},${a},${c}),rgb(${i},${n},${s}) 50%,rgb(${d},${p},${u}))`}function w(e){let t=F(e),o=yt(t);return[e,t[0],t[1],t[2],o,`rgba(${t[0]},${t[1]},${t[2]},1)`,`rgba(${t[0]},${t[1]},${t[2]},0)`]}function _e(e,t){if(e.length!==t.length)return!0;for(let o=0;o<e.length;o++)if(e[o]!==t[o])return!0;return!1}function Le(e,t){if(e.length!==t.length)return!0;for(let o=0;o<e.length;o++){if(e[o].length!==t[o].length)return!0;for(let r=0;r<e[o].length;r++)if(e[o][r]!==t[o][r])return!0}return!1}function ee(e,t,o){let r=window.getComputedStyle(e).getPropertyValue(t).trim();return r.length>0?r:o}var me=class{_name;_elements;_index;constructor(t){this._name=t,this._elements=[],this._index=0}clear(){this._index=0}get(){this._elements[this._index]||(this._elements[this._index]=document.createElement(this._name));let t=this._elements[this._index];return this._index+=1,t}};async function te(e,t,o,r,i={}){let n=await o.get_config();if(this?.model?._config){let k=this.model._config,Y=_e(k.group_by,n.group_by),N=(k.group_by.length===0||n.group_by.length===0)&&Y,R=_e(k.split_by,n.split_by),S=_e(k.columns,n.columns),T=Le(k.filter,n.filter),V=Le(k.sort,n.sort),y=k.group_rollup_mode!==n.group_rollup_mode,M=this.model._theme!==r;this._reset_scroll_top=Y,this._reset_scroll_left=R,this._reset_select=Y||R||T||V||S,this._reset_column_size=y||R||Y||S||M||N}let[s,l,a,c,d]=await Promise.all([t.schema(),o.num_rows(),o.schema(),o.expression_schema(),this.parentElement.getEditPort()]),p=F(ee(e,"--psp--background-color","#FFFFFF")),u=w(ee(e,"--psp-datagrid--pos-cell--color","#338DCD")),_=w(ee(e,"--psp-datagrid--neg-cell--color","#FF5942")),m=w(ue(u[0],p)),b=w(ue(_[0],p)),g=w(ee(e,"--psp-active--color","#ff0000")),f={...a,...c},h={...s,...c},v=[],C=[],H=[],x=this._edit_mode||"READ_ONLY";x==="SELECT_ROW_TREE"&&(n.group_by.length===0||n.group_rollup_mode==="flat")&&(x="READ_ONLY",this._edit_mode=x),this._edit_button.dataset.editMode=x;let $=Object.assign(i,{_edit_port:d,_view:o,_table:t,_table_schema:h,_config:n,_num_rows:l,_schema:f,_ids:[],_plugin_background:p,_color:g,_pos_fg_color:u,_neg_fg_color:_,_pos_bg_color:m,_neg_bg_color:b,_column_paths:v,_column_types:H,_theme:r,_is_editable:C,_edit_mode:x,_selection_state:{selected_areas:[],dirty:!1},_row_header_types:n.group_by.map(k=>h[k]),_series_color_map:new Map,_series_color_seed:new Map,_div_factory:i._div_factory||new me("div")});return e.setDataListener(ke(this.parentElement).bind($,e),{virtual_mode:window.getComputedStyle(e).getPropertyValue("--datagrid-virtual-mode")?.trim()||"both"}),$}var U=["READ_ONLY","EDIT","SELECT_ROW","SELECT_COLUMN","SELECT_REGION","SELECT_ROW_TREE"];function vt(e){return e?e._config.group_by.length>0&&e._config.group_rollup_mode!=="flat":!1}function j(e){if(typeof e>"u"){let t=U.indexOf(this._edit_mode);do t=(t+1)%U.length;while(U[t]==="SELECT_ROW_TREE"&&!vt(this.model));e=U[t]}this.parentElement?.setSelection?.(),this._edit_mode=e,this.model&&(this.model._edit_mode=e,this.model._tree_selection_id=void 0,this.model._selection_state={selected_areas:[],dirty:!0}),this.parentElement?.restore?.({plugin_config:{edit_mode:e}}),this._edit_button!==void 0&&(this._edit_button.dataset.editMode=e)}function B(e){typeof e>"u"&&(e=!this._is_scroll_lock),this._is_scroll_lock=e,this.classList.toggle("sub-cell-scroll-disabled",e),this._scroll_lock!==void 0&&this._scroll_lock.classList.toggle("lock-scroll",e)}function q(e,t=!1){if(!this._initialized)return;t&&(this._cached_column_sizes=e);let o=this.regular_table,r={...o.saveColumnSizes()},{group_by:i}=this.model._config,n=i?.length>0?i.length+1:0;for(let s of Object.keys(e))if(s==="__ROW_PATH__")r[n-1]=e[s];else{let l=this.model._column_paths.indexOf(s);if(l===-1)continue;r[l+n]=e[s]}o.restoreColumnSizes(r)}function J(){if(!this._initialized)return{};if(this._cached_column_sizes){let i=this._cached_column_sizes;return this._cached_column_sizes=void 0,i}let e=this.regular_table.saveColumnSizes(),{group_by:t}=this.model._config,o=t?.length>0?t.length+1:0,r={};for(let i of Object.keys(e)){let n=Number(i);if(e[n]!==void 0){let s=n-o;s>-1?r[this.model._column_paths[s]]=e[n]:s===-1&&(r.__ROW_PATH__=e[n])}}return r}function Se(e,t,o,r){let i=Array.from(t.children[0].children[0].children),n=i.length,s=o.hasAttribute("settings");if(n<=1?i[0]?.removeAttribute("id"):i.forEach((l,a)=>{let c=s?1:0,d=a===n-(c+1)?"psp-column-titles":a===n-c?"psp-column-edit-buttons":null;d?l.setAttribute("id",d):l.removeAttribute("id")}),o.classList.toggle("psp-menu-open",!!r),s&&n>=2){let l=Array.from(i[n-2].children),a=Array.from(i[n-1].children);if(l&&a){i.slice(0,n-2).forEach(c=>{Array.from(c.children).forEach(d=>{d.classList.toggle("psp-menu-open",!1)})});for(let c=0;c<l.length;c++){let d=l[c],p=a[c],u=d.textContent===r;if(d.classList.toggle("psp-menu-open",u),p.classList.toggle("psp-menu-open",u),e._config.columns.length>1)for(let _ of t.querySelectorAll("td")){let m=t.getMeta(_);if(!m?.column_header)continue;let b=m.column_header[m.column_header.length-2]===r;_.classList.toggle("psp-menu-open",b)}}}}}function ge(e,t,o,r){let i=e._config.group_by.length-(e._config.group_rollup_mode==="flat"?1:0),n=e._column_settings_selected_column;for(let{element:s,metadata:l}of t.cells){if(!l||l.type==="body"||l.type==="row_header")continue;let a=l.column_header?.[e._config.split_by.length],c=e._config.sort.find(f=>f[0]===a),d=typeof l.x>"u",p=l.type==="corner"&&l.row_header_x===i||!d&&(l.x+1)%e._config.columns.length===0;s.classList.toggle("psp-header-border",p),s.classList.toggle("psp-header-group",!1),s.classList.toggle("psp-header-leaf",!0),s.classList.toggle("psp-is-top",!1),s.classList.toggle("psp-header-corner",d),s.classList.toggle("psp-header-sort-asc",!r&&!!c&&c[1]==="asc"),s.classList.toggle("psp-header-sort-desc",!r&&!!c&&c[1]==="desc"),s.classList.toggle("psp-header-sort-col-asc",!r&&!!c&&c[1]==="col asc"),s.classList.toggle("psp-header-sort-col-desc",!r&&!!c&&c[1]==="col desc"),s.classList.toggle("psp-header-sort-abs-asc",!r&&!!c&&c[1]==="asc abs"),s.classList.toggle("psp-header-sort-abs-desc",!r&&!!c&&c[1]==="desc abs"),s.classList.toggle("psp-header-sort-abs-col-asc",!r&&!!c&&c[1]==="col asc abs"),s.classList.toggle("psp-header-sort-abs-col-desc",!r&&!!c&&c[1]==="col desc abs");let u=z(e,l),_=u==="integer"||u==="float",m=u==="string",b=u==="date",g=u==="datetime";if(s.classList.toggle("psp-align-right",_),s.classList.toggle("psp-align-left",!_),s.classList.toggle("psp-menu-enabled",(m||_||b||g)&&!d&&l.column_header_y===e._config.split_by.length+1),s.classList.toggle("psp-sort-enabled",(m||_||b||g)&&!d&&l.column_header_y===e._config.split_by.length),s.classList.toggle("psp-is-width-override",o.saveColumnSizes()[l.size_key]!==void 0),e._config.columns.length>1&&n){let f=l.column_header?.[l.column_header.length-2]===n;s.classList.toggle("psp-menu-open",f)}}}var Et={desc:"asc",asc:void 0,"desc abs":"asc abs","asc abs":void 0},xt={desc:"asc",asc:void 0,"desc abs":"asc abs","asc abs":void 0};async function De(e,t,o,r,i){let n=t.getMeta(i);if(!n?.column_header)return;let s=n.column_header[e._config.split_by.length],l=r.ctrlKey||r.metaKey||r.altKey?wt:Ct,a=r.shiftKey,c=l(e,`${s}`,a);await o.restore({sort:c})}function wt(e,t,o){let r=[],i=!1;for(let n of e._config.sort){let[s,l]=n;if(s===t){i=!0;let a=Pe(e,t,l,o);a&&r.push(a)}else r.push(n)}return i||r.push([t,o?"desc abs":"desc"]),r}function Ct(e,t,o){for(let[r,i]of e._config.sort)if(r===t){let n=Pe(e,t,i,o);return n?[n]:[]}return[[t,o?"desc abs":"desc"]]}function Pe(e,t,o,r){let n=e._config.split_by.length>0?xt:Et,s=o?n[o]:"desc";if(s)return[t,s]}async function fe(e,t,o){let r=t.getMeta(o.target);if(!r||r.type!=="row_header")return;let i=o.target.classList.contains("psp-tree-label-collapse");o.shiftKey&&i?e._view.set_depth(r.row_header.filter(n=>n!==void 0).length-2):o.shiftKey?e._view.set_depth(r.row_header.filter(n=>n!==void 0).length-1):i?e._view.collapse(r.y):e._view.expand(r.y),e._num_rows=await e._view.num_rows(),e._num_columns=await e._view.num_columns(),t.draw()}function Oe(e,t,o){return async r=>{let i=r;if(i.which!==1)return;let n=i.target;if(n?.tagName!=="A"){for(;n&&n.tagName!=="TD"&&n.tagName!=="TH";)if(n=n.parentElement,!n||!t.contains(n))return;if(n){if(n.classList.contains("psp-tree-label")){e._edit_mode!=="SELECT_ROW_TREE"&&fe(e,t,i);return}if(n.classList.contains("psp-menu-enabled")){let l=t.getMeta(n)?.column_header?.[e._config.split_by.length];await o.toggleColumnSettings(`${l}`)}else n.classList.contains("psp-sort-enabled")&&De(e,t,o,i,n)}}}}function He(e,t,o){return async r=>{let i=r;if(i.which!==1)return;let n=i.target;if(n?.tagName!=="A"){for(;n&&n.tagName!=="TD"&&n.tagName!=="TH";)if(n=n.parentElement,!n||!t.contains(n))return;n&&n.classList.contains("psp-tree-label")&&e._edit_mode==="SELECT_ROW_TREE"&&fe(e,t,i)}}}function Ne(e){return t=>{let o=t;if(o.which!==1)return;let r=o.target;for(;r&&r.tagName!=="TD"&&r.tagName!=="TH";)if(r=r.parentElement,!r||!e.contains(r))return;r&&(r.classList.contains("psp-tree-label")&&o.offsetX<26||r.classList.contains("psp-header-leaf")&&!r.classList.contains("psp-header-corner"))&&o.stopImmediatePropagation()}}function be(e,t,o){let r=e.getMeta(o);if(!r)return!1;let i=t._schema[t._column_paths[r.x]],n=o.textContent||"",s=t._ids[r.y-r.y0][0];if(i==="float"||i==="integer"){let a=parseFloat(n.replace(/,/g,""));if(isNaN(a))return!1;n=a}else if(i==="date"||i==="datetime"){let a=Date.parse(n);if(isNaN(a))return!1;n=a}else i==="boolean"&&(n=n==="true"?!1:n==="false"?!0:null);let l={__INDEX__:s,[t._column_paths[r.x]]:n};return t._table.update([l],{port_id:t._edit_port,format:null}),!0}function Ae(e,t,o,r){let i=t.getMeta(r.target);if(i?.type==="body"||i?.type==="column_header"){let n=e._is_editable[i.x],s=z(e,i)==="boolean",l=r.target.classList.contains("psp-null");n&&s&&!l&&be(t,e,r.target)}}function Ve(e,t,o,r){return i=>{let n=i;if(D(e,o)&&r.has(t)){let s=n.target;s.classList.remove("psp-error");let l=r.get(t);r.delete(t),l.content!==s.textContent&&(be(t,e,s)||(s.textContent=l.content||"",s.classList.add("psp-error"),s.focus()))}}}function ze(e,t,o,r){return i=>{let s=i.target,l=t.getMeta(s);if(l?.type==="body"){let a={x:l.x,y:l.y,content:s.textContent||void 0};r.set(t,a)}}}function We(e,t,o,r){let i=r.get(o),n=o.getRootNode();if(i){for(let{element:s,metadata:l}of t)if(l.type==="body"&&l.x===i.x&&l.y===i.y){n.activeElement!==s&&s.focus({preventScroll:!0});return}document.activeElement!==document.body&&o.contains(n.activeElement)&&n.activeElement.blur()}}function Ie(e,t){let o=t.get(e);if(!o)return!1;let r=e.getRootNode(),i=e.children[0]?.children[1];if(i)for(let n of i.children)for(let s of n.children){let l=e.getMeta(s);if(l?.type==="body"&&l.x===o.x&&l.y===o.y)return r.activeElement!==s&&s.focus({preventScroll:!0}),!0}return document.activeElement!==document.body&&e.contains(r.activeElement)&&r.activeElement.blur(),!1}function Mt(e){let t;return async function(o,r,i,n,s,l){if(t){await t;return}let a;t=new Promise(d=>a=d);let c=await e(o,r,i,n,s,l);return t=void 0,a(),c}}function Fe(e){if(e.isContentEditable){let t=e.getRootNode().getSelection()?.getRangeAt(0);if(!t)return 0;let o=t.cloneRange();return o.selectNodeContents(e),o.setEnd(t.endContainer,t.endOffset),o.toString().length}else return e.selectionStart||0}var G=Mt(async function(e,t,o,r,i,n){let s=t.getMeta(r);if(!s||s.type!=="body")return;let l=e._column_paths.length,a=e._num_rows,c=o.get(t);if(!c)return;s.x+i<l&&0<=s.x+i&&(c.x=s.x+i),s.y+n<a&&0<=s.y+n&&(c.y=s.y+n);let d=Math.max(s.x0-10,0),p=Math.min(s.x0+10,l),u=Math.max(s.y0-5,0),_=Math.min(s.y0+10,a),m=s.x0+i,b=s.y0+n;for(;!Ie(t,o)&&m>=d&&m<p&&b>=u&&b<_;)await t.scrollToCell(m,b),o.set(t,c),m+=i,b+=n});function Tt(e,t,o){let r=t.getMeta(o);return r?.type==="body"&&r.y===e._num_rows-1}function Ue(e,t,o,r,i){let n=t.getRootNode().activeElement;switch(i.target.classList.remove("psp-error"),i.key){case"Enter":i.preventDefault(),Tt(e,t,n)?(n.blur(),r.delete(t)):i.shiftKey?G(e,t,r,n,0,-1):G(e,t,r,n,0,1);break;case"ArrowLeft":Fe(n)===0&&(i.preventDefault(),G(e,t,r,n,-1,0));break;case"ArrowUp":i.preventDefault(),G(e,t,r,n,0,-1);break;case"ArrowRight":Fe(n)===(n.textContent?.length||0)&&(i.preventDefault(),G(e,t,r,n,1,0));break;case"ArrowDown":i.preventDefault(),G(e,t,r,n,0,1);break;default:}}function je(e,t,o,r){return i=>{let n=i;if(e._edit_mode==="EDIT"){if(!D(e,o))return;Ue(e,t,o,r,n)}else console.debug(`Mode ${e._edit_mode} for "keydown" event not yet implemented`)}}function Be(e,t,o){return r=>{let i=r;if(e._edit_mode==="EDIT"){if(!D(e,o))return;Ae(e,t,o,i)}}}async function X({_view:e,_config:t},o,r){let i=t.group_by,n=t.split_by,s=o>=0?o:0,l=s+1,a=await e.to_json({start_row:s,end_row:l}),d=a.map(f=>f.__ROW_PATH__)[0]||[],p=i.map((f,h)=>{let v=d[h];return v?[f,"==",v]:void 0}).filter(f=>f!==void 0),_=Object.keys(a[0]).filter(f=>!K(f))[r],m={row:a[0],column_names:[],config:{filter:[]}},b=[];if(_){let f=_.split("|");m.column_names=[f[n.length]],b=n.map((h,v)=>{let C=f[v];return C?[h,"==",C]:void 0}).filter(h=>h!==void 0).filter(([,,h])=>!K(h))}let g=t.filter.concat(p).concat(b);return m.config={filter:g},m}function Ge(e,t,o){return async r=>{let i=r,n=t.getMeta(i.target);if(!n||n.type!=="body")return;let{x:s,y:l}=n,{row:a,column_names:c,config:d}=await X(e,l,s);o.dispatchEvent(new CustomEvent("perspective-click",{bubbles:!0,composed:!0,detail:{row:a,column_names:c,config:d}}))}}var Lt="mouse-selected-area",Ke=(e,t,{className:o=Lt,selected:r=[],onSelect:i}={})=>(e.model._selection_state={selected_areas:r,dirty:!0},t.addEventListener("mousedown",St(e,t,o)),t.addEventListener("mouseover",Dt(e,t,o)),t.addEventListener("mouseup",Pt(e,t,o,i)),t.addStyleListener(()=>A(e,t,o)),t);function oe(e){return e==="SELECT_ROW_TREE"}var St=(e,t,o)=>r=>{let i=r;if(i.button===0&&re(e.model._edit_mode)){if(oe(e.model._edit_mode))return;e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={};let n=t.getMeta(i.target);if(n?.type==="body"&&n.x!==void 0&&n.y!==void 0){e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={x:n.x,y:n.y},e.model._selection_state.old_selected_areas=e.model._selection_state.selected_areas,e.model._selection_state.selected_areas=[];let s={x0:n.x,x1:n.x,y0:n.y,y1:n.y};e.model._selection_state.potential_selection=s,A(e,t,o,e.model._selection_state.selected_areas.concat([s]));return}}e.model._selection_state.selected_areas=[]},Dt=(e,t,o)=>r=>{let i=r,n=e.model._edit_mode;if(re(n)&&!oe(n)&&e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES&&e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x!==void 0){let s=t.getMeta(i.target);if(s?.type==="body"&&s.x!==void 0&&s.y!==void 0){let l={x0:Math.min(s.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),x1:Math.max(s.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),y0:Math.min(s.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y),y1:Math.max(s.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y)};e.model._selection_state.potential_selection=l,A(e,t,o,e.model._selection_state.selected_areas.concat([l]))}}},Pt=(e,t,o,r)=>i=>{let n=i,s=e.model._edit_mode;if(re(s)){let l=t.getMeta(n.target);if(!l)return;if(oe(s)){if((l.type==="body"||l.type==="row_header")&&l.y!==void 0&&l.y>=0){let a=e.model._selection_state.selected_areas;if(a.length>0&&a[0].y0===l.y)e.model._selection_state.selected_areas=[],e.model._selection_state.dirty=!0,A(e,t,o,[]),r?.(a[0],!0);else{let d={x0:0,x1:0,y0:l.y,y1:l.y};e.model._selection_state.selected_areas=[d],e.model._selection_state.dirty=!0,A(e,t,o),r?.(d,!1)}}e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={},e.model._selection_state.potential_selection=void 0;return}if((e.model._selection_state.old_selected_areas?.length??0)>0){let a=e.model._selection_state.old_selected_areas[0];if(a.x0===a.x1&&a.y0===a.y1&&l?.type==="body"&&a.x0===l.x&&a.y0===l.y){e.model._selection_state.selected_areas=[],e.model._selection_state.old_selected_areas=[],e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={},e.model._selection_state.potential_selection=void 0,A(e,t,o,[]);return}}if(e.model._selection_state.old_selected_areas=[],e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES&&e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x!==void 0&&l?.type==="body"&&l.x!==void 0&&l.y!==void 0){let a={x0:Math.min(l.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),x1:Math.max(l.x,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.x),y0:Math.min(l.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y),y1:Math.max(l.y,e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES.y)};e.model._selection_state.selected_areas.push(a),A(e,t,o)}e.model._selection_state.CURRENT_MOUSEDOWN_COORDINATES={},e.model._selection_state.potential_selection=void 0}};function $e(e){return e==="SELECT_COLUMN"||e==="SELECT_REGION"}function Ye(e){return e==="SELECT_ROW"||e==="SELECT_REGION"||e==="SELECT_ROW_TREE"}function Ot(e,t,{x0:o,x1:r,y0:i,y1:n}){let s={},l=t.model._edit_mode;o!==void 0&&$e(l)&&(s.start_col=o),r!==void 0&&$e(l)&&(s.end_col=r+1),i!==void 0&&Ye(l)&&(s.start_row=i),n!==void 0&&Ye(l)&&(s.end_row=n+1),e.setSelection(s)}var Ht={SELECT_REGION:(e,t)=>t.x0<=e.x&&e.x<=t.x1&&t.y0<=e.y&&e.y<=t.y1,SELECT_ROW:(e,t)=>t.y0<=e.y&&e.y<=t.y1,SELECT_ROW_TREE:(e,t)=>t.y0<=e.y&&e.y<=t.y1,SELECT_COLUMN:(e,t)=>t.x0<=e.x&&e.x<=t.x1};function re(e){return e==="SELECT_REGION"||e==="SELECT_ROW"||e==="SELECT_COLUMN"||e==="SELECT_ROW_TREE"}var A=(e,t,o,r)=>{let i=e.model._edit_mode;if(re(i))if(r=e.model._selection_state.selected_areas.slice(0),e.model._selection_state.potential_selection&&r.push(e.model._selection_state.potential_selection),r.length>0)Ot(e.parentElement,e,r[0]),oe(i)||Nt(e,t,r,o);else{e.parentElement.setSelection();let n=t.querySelectorAll("tbody td");for(let s of n)s.classList.remove(o)}else if(e.model._selection_state.dirty){e.model._selection_state.dirty=!1;let n=t.querySelectorAll("tbody td, tbody th");for(let s of n)s.classList.remove(o)}},Nt=(e,t,o,r)=>{let i=Ht[e.model._edit_mode];if(!i||o.length===0)return;let n=t.querySelectorAll("tbody td");for(let s of n){let l=t.getMeta(s);if(!l||l.type!=="body")continue;let a=!1;for(let c of o)c.x0!==void 0&&c.y0!==void 0&&c.x1!==void 0&&c.y1!==void 0&&i(l,c)&&(a=!0,e.model._selection_state.dirty=!0,s.classList.add(r));a||s.classList.remove(r)}};function qe(e,t,o,r){if(t.length===0)return;let i=e._column_settings_selected_column,n=t.length,s=r.hasAttribute("settings");if(n<=1?t[0]?.row.removeAttribute("id"):t.forEach(({row:c},d)=>{let p=s?1:0,u=d===n-(p+1)?"psp-column-titles":d===n-p?"psp-column-edit-buttons":null;u?c.setAttribute("id",u):c.removeAttribute("id")}),r.classList.toggle("psp-menu-open",!!i),s&&n>=2){let c=t[n-2],d=t[n-1];if(c&&d){t.slice(0,n-2).forEach(({cells:p})=>{p.forEach(({element:u})=>{u.classList.toggle("psp-menu-open",!1)})});for(let p=0;p<c.cells.length;p++){let u=c.cells[p]?.element,_=d.cells[p]?.element;if(!u||!_)continue;let m=u.textContent===i;u.classList.toggle("psp-menu-open",m),_.classList.toggle("psp-menu-open",m)}}}let l=e._config.split_by.length;if(l<t.length){let c=t[l];c&&ge(e,c,o,!1)}let a=e._config.split_by.length+1;if(a<t.length){let c=t[a];c&&ge(e,c,o,!0)}}function Je(e,t,o){let r=e._config.group_by.length,i=[],n=new Set;for(let s=0;s<t.length;s++){let{cells:l}=t[s],a=new Set;for(let c=0;c<l.length;c++){let{element:d,metadata:p}=l[c];if(!p)continue;d.style.backgroundColor="";let u=p.type==="corner"&&r>0&&p.row_header_x===r||p.type==="column_header"&&p.x>=0;d.classList.toggle("psp-align-right",!1),d.classList.toggle("psp-align-left",!1),d.classList.toggle("psp-header-group",!0),d.classList.toggle("psp-header-leaf",!1),d.classList.toggle("psp-header-border",u),d.classList.toggle("psp-header-group-corner",p.type==="corner"),d.classList.toggle("psp-color-mode-bar",!1),d.classList.toggle("psp-color-mode-label-bar",!1),d.classList.toggle("psp-header-sort-asc",!1),d.classList.toggle("psp-header-sort-desc",!1),d.classList.toggle("psp-header-sort-col-asc",!1),d.classList.toggle("psp-header-sort-col-desc",!1),d.classList.toggle("psp-sort-enabled",!1);let _=c;for(;i[s]&&i[s][_];++_);a.add(_);let m=d;for(let b=_;b<_+m.colSpan;++b)for(let g=s;g<s+m.rowSpan;++g)i[g]||(i[g]=[]),i[g][b]=!0;m.classList.toggle("psp-is-top",s===0||!n.has(_))}n=a}}function Xe(e,t,o,[,,,,,r,i],[,,,,,n,s],l){let a=e._ids?.[t.dy??0]?.join("|"),c=(l?(t.column_header??[]).slice(0,-1):t.column_header??[]).join("|");if(e.last_reverse_columns?.has(c)&&e.last_reverse_ids?.has(a)){let d=e.last_reverse_ids?.get(a),p=e.last_reverse_columns.get(c);e._is_old_viewport?p!==void 0&&d!==void 0&&e.last_meta?.[p]?.[d]!==void 0&&e.last_meta[p][d]>(t.user??0)?(o.style.setProperty("--pulse--background-color-start",n),o.style.setProperty("--pulse--background-color-end",s),o.style.animationName==="pulse_neg"?o.style.animation="pulse_neg2 0.5s linear":o.style.animation="pulse_neg 0.5s linear"):p!==void 0&&d!==void 0&&e.last_meta?.[p]?.[d]!==void 0&&e.last_meta[p][d]<(t.user??0)?(o.style.setProperty("--pulse--background-color-start",r),o.style.setProperty("--pulse--background-color-end",i),o.style.animationName==="pulse_pos"?o.style.animation="pulse_pos2 0.5s linear":o.style.animation="pulse_pos 0.5s linear"):d!==t.dy&&(o.style.animation=""):o.style.animation=""}else o.style.animation=""}function Ze(e,t,o,r,i){let n=(r.user??0)>0,s=(r.user??0)<0,l;t?.pos_bg_color!==void 0?l=t.pos_bg_color:l=e._pos_bg_color;let a;t?.neg_bg_color!==void 0?a=t.neg_bg_color:a=e._neg_bg_color;let c=n?l:s?a:["",e._plugin_background[0],e._plugin_background[1],e._plugin_background[2],"","",""];{let[_,m,b,g]=c;if(o.style.position="",r._is_hidden_by_aggregate_depth)o.style.animation="",o.style.backgroundColor="";else if(t?.number_bg_mode==="color")o.style.animation="",o.style.backgroundColor=_;else if(t?.number_bg_mode==="gradient"){let f=Math.max(0,Math.min(1,Math.abs((r.user??0)/(t.bg_gradient??1)))),h=e._plugin_background,v=O(P([m,b,g,f],h));o.style.animation="",o.style.color=v,o.style.backgroundColor=`rgba(${m},${b},${g},${f})`}else t?.number_bg_mode==="pulse"?(Xe(e,r,o,l,a,i),o.style.backgroundColor=""):(t?.number_bg_mode==="disabled"||t?.number_bg_mode,o.style.animation="",o.style.backgroundColor="")}let d=t?.pos_fg_color!==void 0?n?t.pos_fg_color:s?t.neg_fg_color:["",e._plugin_background[0],e._plugin_background[1],e._plugin_background[2],"","",""]:n?e._pos_fg_color:s?e._neg_fg_color:["",e._plugin_background[0],e._plugin_background[1],e._plugin_background[2],"","",""],[p,,,,u]=d;if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else if(t?.number_fg_mode==="disabled")if(t?.number_bg_mode==="color"){let _=e._plugin_background,m=O(P([c[1],c[2],c[3],1],_));o.style.color=m}else t?.number_bg_mode==="gradient"||(o.style.color="");else t?.number_fg_mode==="bar"?(o.style.color="",o.style.position="relative",o.style.setProperty("--psp-label-bar-color",u),o.style.setProperty("--psp-label-bar-bg",p)):t?.number_fg_mode==="label-bar"?(o.style.color="",o.style.setProperty("--psp-label-bar-color",u),o.style.setProperty("--psp-label-bar-bg",p)):(t?.number_fg_mode==="color"||!t?.number_fg_mode)&&(o.style.color=p)}function Qe(e,t,o,r){let i=r.column_header?.[e._config.split_by.length],n=t?.color!==void 0?t.color:e._color,[s,l,a,c]=n;if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else if(t?.string_color_mode==="foreground"&&r.user!==null)o.style.color=s,o.style.backgroundColor="",t?.format==="link"&&o.children[0]&&(o.children[0].style.color=s);else if(t?.string_color_mode==="background"&&r.user!==null){let d=e._plugin_background,p=O(P([l,a,c,1],d));o.style.color=p,o.style.backgroundColor=s}else if(t?.string_color_mode==="series"&&r.user!==null&&i){e._series_color_map.has(i)||(e._series_color_map.set(i,new Map),e._series_color_seed.set(i,0));let d=e._series_color_map.get(i);if(r.user&&!d.has(r.user)){let x=e._series_color_seed.get(i)??0;d.set(r.user,x),e._series_color_seed.set(i,x+1)}let p=d.get(r.user)??0,[u,_,m]=pe(F(s)),b=Q([u+p*150%360,_,m]),[g,f,h]=b,v=de(b),C=e._plugin_background,H=O(P([g,f,h,1],C));o.style.color=H,o.style.backgroundColor=v}else o.style.backgroundColor="",o.style.color=""}function et(e,t,o,r){let i=t?.color!==void 0?t.color:e._color,[n,s,l,a]=i;if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else if(t?.datetime_color_mode==="foreground"&&r.user!==null)o.style.color=n,o.style.backgroundColor="";else if(t?.datetime_color_mode==="background"&&r.user!==null){let c=e._plugin_background,d=O(P([s,l,a,1],c));o.style.color=d,o.style.backgroundColor=n}else o.style.backgroundColor="",o.style.color=""}function tt(e,t,o,r){if(r._is_hidden_by_aggregate_depth)o.style.backgroundColor="",o.style.color="";else{let[i]=r.user===!0?e._pos_fg_color:r.user===!1?e._neg_fg_color:["",0,0,0,""];o.style.backgroundColor="",o.style.color=i}}function ot(e,t,o,r){let i=r.value!==void 0&&r.value!==null&&r.value?.toString()?.trim().length>0,n=(r.row_header_x??0)>=e._config.group_by.length,s=t.getMeta({dx:0,dy:(r.y??0)-(r.y0??0)+1}),l=s&&s.row_header&&typeof s.row_header[(r.row_header_x??0)+1]<"u";o.classList.toggle("psp-tree-label",i&&!n),o.classList.toggle("psp-tree-label-expand",i&&!n&&!l),o.classList.toggle("psp-tree-label-collapse",i&&!n&&l),o.classList.toggle("psp-tree-leaf",i&&n)}function rt(e,t,o,r,i,n,s){let l=i?e._tree_selection_id:void 0;s.classList.toggle("flat-group-rollup-mode",e._config.group_rollup_mode==="flat");for(let{element:a,metadata:c,isHeader:d}of t){let p=c.column_header?.[e._config.split_by.length],u=z(e,c),_=p?o[p.toString()]:void 0,m=u==="integer"||u==="float";c._is_hidden_by_aggregate_depth=e._config.group_rollup_mode==="rollup"&&(g=>g===0||g===void 0?!1:g-1<Math.min(e._config.group_by.length,_?.aggregate_depth||0))(c.row_header?.filter(g=>g!==void 0)?.length),m?Ze(e,_,a,c,r):u==="boolean"?tt(e,_,a,c):u==="string"?Qe(e,_,a,c):u==="date"||u==="datetime"?et(e,_,a,c):(a.style.backgroundColor="",a.style.color=""),a.classList.toggle("psp-bool-type",u==="boolean"&&c.user!==null),a.classList.toggle("psp-null",c.value===null),a.classList.toggle("psp-align-right",!d&&m),a.classList.toggle("psp-align-left",d||!m),e._column_settings_selected_column?a.classList.toggle("psp-menu-open",p===e._column_settings_selected_column):a.classList.toggle("psp-menu-open",!1),a.classList.toggle("psp-color-mode-bar",_?.number_fg_mode==="bar"&&m),a.classList.toggle("psp-color-mode-label-bar",_?.number_fg_mode==="label-bar"&&m),d&&ot(e,s,a,c);let b=a.parentElement;if(b&&(b.dataset.y=String(c.y)),c.type!=="row_header"||c.row_header_x===c.row_header.length-1||c.row_header[c.row_header_x+1]===void 0?(a.dataset.y=String(c.y),c.type!=="row_header"?a.dataset.x=String(c.x):delete a.dataset.x):(delete a.dataset.y,delete a.dataset.x),a.classList.toggle("psp-select-region-inactive",!1),i)if(!l)a.classList.toggle("psp-select-region",!1);else{let g=e._ids[(c.y??0)-(c.y0??0)],f=l.reduce((C,H,x)=>C&&H===g[x],!0),h=g.length===l.length&&f,v=g.length!==l.length&&f;d&&c.type==="row_header"&&c.row_header_x!==void 0&&g[c.row_header_x]?a.classList.toggle("psp-select-region",!1):(a.classList.toggle("psp-select-region",h),a.classList.toggle("psp-select-region-inactive",v))}if(!d&&c.type==="body")if(n&&e._is_editable[c.x]){let f=c.column_header?.[e._config.split_by.length]?.toString();f&&u==="string"&&o[f]?.format==="link"?(a.toggleAttribute("contenteditable",!1),a.classList.toggle("boolean-editable",!1)):u==="boolean"?(a.toggleAttribute("contenteditable",!1),a.classList.toggle("boolean-editable",c.user!==null)):(n!==a.hasAttribute("contenteditable")&&a.toggleAttribute("contenteditable",n),a.classList.toggle("boolean-editable",!1))}else a.toggleAttribute("contenteditable",!1),a.classList.toggle("boolean-editable",!1)}}function nt(e,t,o,r,i){return function(){let s=o[E]||{},l=r.hasAttribute("settings"),a=t._edit_mode==="SELECT_ROW_TREE",c=D(t,r),d=D(t,r,!0);e.classList.toggle("edit-mode-allowed",d);let p=[],u=[],_=o.children[0]?.children[1];if(_)for(let b of _.children)for(let g of b.children){let f=o.getMeta(g);if(f&&(f.type==="body"||f.type==="row_header")){let h=g.tagName==="TH";p.push({element:g,metadata:f,isHeader:h})}}let m=o.children[0]?.children[0];if(m)for(let b of m.children){let g={row:b,cells:[]};for(let f of b.children){let h=o.getMeta(f);g.cells.push({element:f,metadata:h})}u.push(g)}rt(t,p,s,l,a,c,o),Je(t,u,o),qe(t,u,o,r),We(t,p,o,i)}}async function st(e){let t=this.parentElement,o=await t.getTable();if(this._initialized)await te.call(this,this.regular_table,o,e,t.getAttribute("theme"),this.model);else{if(this.innerHTML="",this.shadowRoot?this.shadowRoot.appendChild(this.regular_table):this.appendChild(this.regular_table),this.model=await te.call(this,this.regular_table,o,e,t.getAttribute("theme")),!this.model)return;let r=this.model,i=this.regular_table,n=async(l,a)=>{if(r._edit_mode!=="SELECT_ROW_TREE")return;if(a)r._tree_selection_id=void 0;else{let _=l.y0-(r._last_window?.start_row??0);_>=0&&_<r._ids.length&&(r._tree_selection_id=r._ids[_])}let{row:c,column_names:d,config:p}=await X(r,l.y0,0),u;if(a){if((r._last_insert_configs?.length||0)>0)u=new ie(!1,c,[],r._last_insert_configs??[],[]);else throw new Error("Suprious deselect");r._last_insert_configs=void 0}else u=new ie(!0,c,d,r._last_insert_configs??[],[p]),r._last_insert_configs=[p];await i.draw({preserve_width:!0}),t.dispatchEvent(new CustomEvent("perspective-global-filter",{bubbles:!0,composed:!0,detail:u}))};Ke(this,this.regular_table,{className:"psp-select-region",onSelect:n});let s=new WeakMap;this.regular_table.addStyleListener(nt(this,this.model,this.regular_table,t,s)),this.regular_table.addEventListener("click",Ne(this.regular_table)),this.regular_table.addEventListener("click",Ge(this.model,this.regular_table,t)),this.regular_table.addEventListener("mousedown",Oe(this.model,this.regular_table,t)),this.regular_table.addEventListener("dblclick",He(this.model,this.regular_table,t)),this.regular_table.addEventListener("click",Be(this.model,this.regular_table,t)),this.regular_table.addEventListener("focusin",ze(this.model,this.regular_table,t,s)),this.regular_table.addEventListener("focusout",Ve(this.model,this.regular_table,t,s)),this.regular_table.addEventListener("keydown",je(this.model,this.regular_table,t,s)),t.addEventListener("perspective-toggle-column-settings",l=>{let a=l;if(this.isConnected){if(Se(this.model,this.regular_table,t,a.detail.column_name??void 0),!a.detail.open){this.model._column_settings_selected_column=void 0;return}this.model._column_settings_selected_column=a.detail.column_name??void 0}}),this._initialized=!0}}function it(e,t){e=JSON.parse(JSON.stringify(e)),t=JSON.parse(JSON.stringify(t));let o={};if(e.columns)for(let[n,s]of Object.entries(e.columns))s.column_size_override!==void 0&&(o[n]=s.column_size_override,delete s.column_size_override);let r={};if(t)for(let[n,s]of Object.entries(t))r[n]={...s,pos_fg_color:s.pos_fg_color?w(s.pos_fg_color):void 0,neg_fg_color:s.neg_fg_color?w(s.neg_fg_color):void 0,pos_bg_color:s.pos_bg_color?w(s.pos_bg_color):void 0,neg_bg_color:s.neg_bg_color?w(s.neg_bg_color):void 0,color:s.color?w(s.color):void 0};"edit_mode"in e?U.indexOf(e.edit_mode)!==-1?j.call(this,e.edit_mode):console.error("Unknown edit mode "+e.edit_mode):j.call(this,"READ_ONLY"),"scroll_lock"in e?B.call(this,e.scroll_lock):B.call(this,!1);let i=this.regular_table;q.call(this,o,!0),i[E]=r}function lt(){if(this.regular_table){let e={columns:{},scroll_lock:!!this._is_scroll_lock,edit_mode:this._edit_mode},t=J.call(this);for(let o of Object.keys(t||{}))e.columns?.[o]||(e.columns=e.columns||{},e.columns[o]={}),e.columns[o].column_size_override=t[o];return JSON.parse(JSON.stringify(e))}return{}}async function at(e){if(this.parentElement&&await this.activate(e),!this.isConnected||this.offsetParent==null||!this.model)return;let t=J.call(this),o=this.regular_table.draw({invalid_columns:!0});this._reset_scroll_top&&(this.regular_table.scrollTop=0,this._reset_scroll_top=!1),this._reset_scroll_left&&(this.regular_table.scrollLeft=0,this._reset_scroll_left=!1),this._reset_select&&(this.regular_table.dispatchEvent(new CustomEvent("psp-deselect-all",{bubbles:!1})),this._reset_select=!1),this._reset_column_size&&(this.regular_table.resetAutoSize(),this._reset_column_size=!1),q.call(this,t),await o,this._toolbar?.classList.toggle("aggregated",this.model._config.group_by.length>0||this.model._config.split_by.length>0)}function he(e,t,o,r,i,n){let s=[];if(e==="integer"||e==="float"){let c=this.model._pos_fg_color[0],d=this.model._neg_fg_color[0],p=this.model._pos_bg_color[0],u=this.model._neg_bg_color[0];s.push({kind:"Enum",key:"number_fg_mode",default:"color",variants:[{value:"disabled",label:"Disabled"},{value:"color",label:"Color"},{value:"bar",label:"Bar"},{value:"label-bar",label:"Gradient"}]});let _=r?.number_fg_mode??"color";_!=="disabled"&&s.push({kind:"ColorRange",key_pos:"pos_fg_color",key_neg:"neg_fg_color",default_pos:c,default_neg:d,is_gradient:!1}),(_==="bar"||_==="label-bar")&&s.push({kind:"Number",key:"fg_gradient",default:n?.abs_max??0,include:!0}),s.push({kind:"Enum",key:"number_bg_mode",default:"disabled",variants:[{value:"disabled",label:"Disabled"},{value:"color",label:"Color"},{value:"gradient",label:"Gradient"},{value:"pulse",label:"Pulse"}]});let m=r?.number_bg_mode??"disabled";m!=="disabled"&&s.push({kind:"ColorRange",key_pos:"pos_bg_color",key_neg:"neg_bg_color",default_pos:p,default_neg:u,is_gradient:m==="gradient"||m==="pulse"}),m==="gradient"&&s.push({kind:"Number",key:"bg_gradient",include:!0,default:n?.abs_max??0}),s.push({kind:"NumberFormat"})}else e==="date"||e==="datetime"?(s.push({kind:"DatetimeFormat"}),s.push({kind:"Enum",key:"datetime_color_mode",default:"none",variants:[{value:"none",label:"None"},{value:"foreground",label:"Foreground"},{value:"background",label:"Background"}]}),(r?.datetime_color_mode??"none")!=="none"&&s.push({kind:"Color",key:"color",default:this.model._color[0]})):e==="string"&&(s.push({kind:"StringFormat"}),s.push({kind:"Enum",key:"string_color_mode",default:"none",variants:[{value:"none",label:"None"},{value:"foreground",label:"Foreground"},{value:"background",label:"Background"},{value:"series",label:"Series"}]}),(r?.string_color_mode??"none")!=="none"&&s.push({kind:"Color",key:"color",default:this.model._color[0]}));let l=i?.group_by??[],a=(i?.group_rollup_mode??"rollup")==="rollup";return l.length>0&&a&&s.push({kind:"AggregateDepth"}),{fields:s}}var ct='regular-table{--psp-datagrid--hover--border-color:var(--psp-inactive--color,#c5c9d080);margin:12px 0 0 12px;padding:0;font-family:inherit;& div[tabindex]{outline:none}&>div{position:absolute;inset:0;overflow:hidden}& th{text-align:center}& thead tr:not(.rt-autosize) th{max-width:0;overflow:hidden}& thead tr:last-child .rt-float,& tbody .rt-float,& thead .rt-integer,& tbody .rt-integer{text-align:right}& tbody th{text-align:left}& span.rt-tree-container{align-items:center;height:100%;display:flex}& thead .rt-string,& tbody .rt-string,& thead .rt-date,& tbody .rt-date,& thead .rt-datetime,& tbody .rt-datetime{text-align:left}& thead tr:last-child th{border-bottom:1px solid #8b868045}& tbody tr:first-child td,& tbody tr:first-child th{border-top:1px solid #0000!important}& th{position:relative}& tr th span.rt-tree-group{border-left:1px solid #eee;height:100%;margin-left:5px;margin-right:15px}& td,& th{white-space:nowrap;height:var(--psp-datagrid--row--height,19px);padding:0 5px}& table *{box-sizing:border-box}& table{color:#666;outline:none;position:absolute}& span.rt-row-header-icon{color:#aaa;font-family:var(--psp-button--font-family);padding-right:4px}& span.rt-column-header-icon{width:10px;font-size:10px;font-family:var(--psp-button--font-family);padding-left:3px;display:inline-block}& span.rt-row-header-icon:hover{color:#1a7da1;text-shadow:0 0 3px #1a7da1}& .rt-selected td{background-color:#eee}& .rt-cell-clip{text-overflow:ellipsis;overflow:hidden}& td span.rt-group-name,& th span.rt-group-name{flex:1;height:100%;margin-right:-5px;padding-left:8px;padding-right:5px}& th span.rt-group-name{text-align:left}& td th span.rt-group-leaf,& th span.rt-group-leaf{height:100%;margin-left:16px}& .rt-column-resize{cursor:col-resize;width:10px;height:100%;position:absolute;top:0;right:0}& a{color:var(--psp-datagrid--pos-cell--color)}& a:visited{color:var(--psp-active--color)}& td.psp-null:after,& th.psp-null:after{content:var(--psp-label--null--content,"-");color:var(--psp-label--null--color,inherit);font-size:var(--psp-label--null--font-size,inherit);vertical-align:middle}}.psp-header-border:not(.psp-is-top):not(.psp-header-leaf){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045)}.psp-header-group{box-shadow:0px 10px 0 -9px var(--psp-inactive--border-color,#8b868045)}.psp-is-top{box-shadow:5px 4px 0px -4px var(--psp-inactive--border-color,#8b868045)}.psp-is-top.psp-header-group:not(.psp-header-group-corner){box-shadow:5px 4px 0px -4px var(--psp-inactive--border-color,#8b868045), 0px 10px 0 -9px var(--psp-inactive--border-color,#8b868045)}.psp-header-border.psp-header-group{&:not(.psp-is-top):not(.psp-header-group-corner){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045), 0px 10px 0 -9px var(--psp-inactive--border-color,#8b868045)}}perspective-viewer[settings] tr.rt-autosize .psp-header-leaf.psp-header-border:not(.psp-menu-enabled){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045)}:host-context(perspective-viewer[settings]) tr.rt-autosize .psp-header-leaf.psp-header-border:not(.psp-menu-enabled){box-shadow:1px 0px var(--psp-inactive--border-color,#8b868045)}.psp-header-leaf.psp-header-border{box-shadow:5px -4px 0px -4px var(--psp-inactive--border-color,#8b868045)}tr:only-child th{box-shadow:none!important}regular-table{& tbody{& tr:hover th.psp-tree-leaf:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover th.psp-tree-label:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover td:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover:after{box-shadow:0px 1px 0px var(--psp-datagrid--hover--border-color,#c5c9d080);border-color:var(--psp-datagrid--hover--border-color,#c5c9d080)!important;&.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color), 0px 1px 0px var(--psp-datagrid--hover--border-color,#c5c9d080)}}& tr:last-child:hover td:not(.psp-select-region):not(.psp-select-region-inactive).psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color), inset 0px -2px 0px var(--psp--color), 0px 1px 0px var(--psp-datagrid--hover--border-color,#c5c9d080)}& tr:hover+tr th.psp-tree-leaf:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover+tr th.psp-tree-label:not(.psp-select-region):not(.psp-select-region-inactive),& tr:hover+tr td:not(.psp-select-region):not(.psp-select-region-inactive){border-top-color:#0000}& tr{& th:first-child:not(:empty),& th:first-child:empty+th:not(:empty),& th:first-child:empty~th:empty+th:not(:empty),& td:first-child{border-left-width:1px;border-left-color:#0000}& th:last-child,& td:last-child{border-right-width:0;border-right-color:#0000}}& tr:hover{color:inherit;& th:first-child:not(:empty),& th:first-child:empty+th:not(:empty),& th:first-child:empty~th:empty+th:not(:empty),& td:first-child{border-left-color:var(--psp-datagrid--hover--border-color,#c5c9d080)!important}& th:last-child,& td:last-child{border-right-color:var(--psp-datagrid--hover--border-color,#c5c9d080)!important}}}}perspective-viewer-datagrid:not(.sub-cell-scroll-disabled) regular-table table,:host(:not(.sub-cell-scroll-disabled)) regular-table table{& tbody td,& thead th:not(.rt-group-corner){transform:translate(var(--regular-table--transform-x,0px))}& tbody{transform:translate(0, var(--regular-table--transform-y,0px))}& tbody tr:first-child{& td,& th,&:after{clip-path:polygon(0 var(--regular-table--clip-y,0), 0 200%, 200% 200%, 200% var(--regular-table--clip-y,0))}}& tbody tr td:first-of-type{clip-path:polygon(var(--regular-table--clip-x,0) 0, var(--regular-table--clip-x,0) 200%, 200% 200%, 200% 0)}& tbody tr:first-child td:first-of-type{clip-path:polygon(var(--regular-table--clip-x,0) var(--regular-table--clip-y,0), var(--regular-table--clip-x,0) 200%, 200% 200%, 200% var(--regular-table--clip-y,0))}& thead tr:last-child:after,& tbody tr:not(:first-child):after{transform:translate(var(--regular-table--transform-x,0px))}& tbody tr:hover:first-child:after{clip-path:polygon(0 var(--regular-table--clip-y,0), 0 200%, 200% 200%, 200% var(--regular-table--clip-y,0))}& thead tr th.rt-group-corner+th:not(.rt-group-corner){clip-path:polygon(var(--regular-table--clip-x,0) 0, var(--regular-table--clip-x,0) 200%, 200% 200%, 200% 0)}}regular-table{outline:none;&::-webkit-scrollbar,&::-webkit-scrollbar-corner{background-color:#0000;width:12px;height:12px}&::-webkit-scrollbar-thumb{background-clip:content-box;background:var(--psp--color);border:5.5px solid var(--psp--background-color);min-width:10%;max-width:50%;min-height:10%;max-height:50%}}perspective-viewer,:host{& .psp-menu-enabled{border-radius:3px 3px 0 0;padding:0 6px;font-size:8px}& .psp-menu-enabled:hover,& tr:not(.rt-autosize) th.psp-menu-open{color:var(--psp--background-color);background-color:var(--psp--color);border-bottom-color:var(--psp--color);cursor:pointer}& tr:not(.rt-autosize) th.psp-menu-open{&:before{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:10px;height:8px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--column-settings--mask-image);mask-image:var(--psp-icon--column-settings--mask-image);background-color:var(--psp--background-color);margin-right:4px;display:inline-block}}& td.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color)}& tr:first-child td.psp-menu-open{border-top-color:var(--psp--color)!important}& tr:last-child td.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--color), inset 2px 0px 0px var(--psp--color), inset 0px -2px 0px var(--psp--color)}}perspective-viewer,:host-context(perspective-viewer){& regular-table table thead tr:last-child th{border-bottom-width:1px;border-bottom-color:var(--psp-inactive--border-color,#8b868045)}}.psp-sort-enabled:hover{cursor:pointer}regular-table.flat-group-rollup-mode.vertical-row-headers th.psp-tree-label:not(:last-of-type){writing-mode:vertical-lr}.psp-select-region-inactive,:hover .psp-select-region-inactive,:hover th.psp-tree-leaf.psp-select-region-inactive,:hover th.psp-tree-label.psp-select-region-inactive{background-color:var(--psp-inactive--color)!important;color:var(--psp--background-color)!important;border-color:var(--psp--background-color)!important}.psp-error{color:red}td:focus{outline:1px dotted #666}perspective-viewer.dragging,:host-context(perspective-viewer.dragging){& regular-table{pointer-events:none}}.psp-header-border:last-child{border-right-width:0}.psp-header-sort-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-desc--mask-image);mask-image:var(--psp-icon--sort-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-asc--mask-image);mask-image:var(--psp-icon--sort-asc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-col-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-col-desc--mask-image);mask-image:var(--psp-icon--sort-col-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-col-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-col-asc--mask-image);mask-image:var(--psp-icon--sort-col-asc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-desc--mask-image);mask-image:var(--psp-icon--sort-abs-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-asc--mask-image);mask-image:var(--psp-icon--sort-abs-asc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-col-desc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-col-desc--mask-image);mask-image:var(--psp-icon--sort-abs-col-desc--mask-image);margin-left:4px;display:inline-block}.psp-header-sort-abs-col-asc:after{background-repeat:no-repeat;background-color:var(--psp--color);content:"";width:14px;height:11px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:var(--psp-icon--sort-abs-col-asc--mask-image);mask-image:var(--psp-icon--sort-abs-col-asc--mask-image);margin-left:4px;display:inline-block}tbody th:last-of-type{border-right:1px solid var(--psp-inactive--border-color,#8b868045);text-overflow:ellipsis;overflow:hidden}tbody th:empty{background-image:linear-gradient(to right, transparent 9px, var(--psp-inactive--border-color,#eee) 10px, transparent 11px);pointer-events:none;background-repeat:no-repeat;min-width:20px;max-width:20px}regular-table:not(.flat-group-rollup-mode){& .psp-tree-label{min-width:0;max-width:0}& .psp-tree-label:before{color:var(--psp--color);font-family:var(--psp-button--font-family,inherit);padding-right:11px}& .psp-tree-label-expand:before{content:var(--psp-label--tree-expand--content,"+")}& .psp-tree-label-collapse:before{content:var(--psp-label--tree-collapse--content,"-")}& .psp-tree-label-expand,& .psp-tree-label-collapse{cursor:pointer}& .psp-tree-label:hover:before{color:var(--psp-active--color);text-shadow:0px 0px 5px var(--psp-active--color)}}.psp-tree-leaf{padding-left:24px}.psp-align-right{text-align:right}.psp-color-mode-bar{padding:0 2px}.psp-color-mode-label-bar{padding:0 2px;position:relative;& .psp-bar{isolation:isolate;position:unset}& .psp-bar:before{color:#0000;pointer-events:none;content:var(--label);justify-content:flex-end;align-items:center;padding:0 3px;display:inline-flex}& .psp-bar:after{color:var(--psp-label-bar-bg);content:var(--label);mix-blend-mode:difference;justify-content:flex-end;align-items:center;padding:0 5px;display:inline-flex;position:absolute;inset:0}}.psp-label-bar{pointer-events:none;justify-content:flex-end;align-items:center;padding:0;display:flex;inset:0}.psp-label-bar-fill{background:var(--psp-label-bar-color);pointer-events:none;height:80%;position:absolute;top:10%}.psp-label-bar-text{color:var(--psp-label-bar-bg);mix-blend-mode:difference;pointer-events:none;position:relative}.psp-align-left{text-align:left}.psp-positive:not(:focus){color:var(--psp-datagrid--pos-cell--color)}.psp-negative:not(:focus){color:var(--psp-datagrid--neg-cell--color)}regular-table table tbody td{min-width:52px!important}.psp-is-width-override .rt-column-resize,.rt-column-resize:hover{border:1px dashed #999;border-width:1px 1px 0 0}.boolean-editable{cursor:pointer}regular-table table{user-select:none;color:inherit;border-collapse:separate;font-size:1em;& th{font-weight:400}& td,& th{border-color:var(--psp-inactive--border-color,#8b868045);height:var(--psp-datagrid--row--height,23px)}& .psp-header-group{text-overflow:ellipsis}& th.psp-header-leaf{border-bottom-width:0;& span{height:var(--psp-datagrid--row--height,23px);min-height:var(--psp-datagrid--row--height,23px)}}& td,& th.psp-tree-label,& th.psp-tree-label,& th.psp-tree-leaf,& tbody tr:first-child th{border-style:solid;border-width:1px 0 0}& tbody th:empty{background-position:0 -10px}& td.psp-select-region,& th.psp-select-region{background-color:var(--psp--color)!important;color:var(--psp--background-color)!important;border-color:var(--psp--background-color)!important}}regular-table tbody tr:hover td.psp-select-region:not(.psp-select-region-inactive),regular-table tbody tr:hover+tr td.psp-select-region:not(.psp-select-region-inactive){border-color:var(--psp--background-color)!important}regular-table tbody tr:hover{& td.psp-select-region.psp-menu-open{&:not(.psp-select-region-inactive){box-shadow:inset -2px 0px 0px var(--psp--background-color), inset 2px 0px 0px var(--psp--background-color)}}}:host-context(perspective-viewer[settings]) td.psp-select-region.psp-menu-open{box-shadow:inset -2px 0px 0px var(--psp--background-color), inset 2px 0px 0px var(--psp--background-color)}regular-table #psp-column-edit-buttons th:not(.rt-group-corner) span:not(.rt-column-resize):before{content:var(--psp-datagrid--column-edit-button--content,"Edit")}perspective-viewer:not([settings]),:host-context(perspective-viewer:not([settings])){& regular-table #psp-column-edit-buttons:after{content:none}}regular-table table thead tr:last-child:after{box-sizing:border-box;width:10000px;height:var(--psp-datagrid--row--height,23px);content:" ";border-bottom:1px solid var(--psp-inactive--border-color);display:block}regular-table table tbody tr:after{box-sizing:border-box;width:10000px;height:var(--psp-datagrid--row--height,23px);content:" ";border-top:1px solid #0000;display:block}regular-table table tbody tr:not(:first-child):after{border-top:1px solid var(--psp-inactive--border-color)}regular-table table tbody tr:hover:not(:first-child):after,regular-table table tbody tr:hover+tr:after{border-top:1px solid var(--psp-datagrid--hover--border-color)}@keyframes pulse_pos{0%{background-color:var(--pulse--background-color-start,#0080ff80)}to{background-color:var(--pulse--background-color-end,#0080ff00)}}@keyframes pulse_pos2{0%{background-color:var(--pulse--background-color-start,#0080ff80)}to{background-color:var(--pulse--background-color-end,#0080ff00)}}@keyframes pulse_neg{0%{background-color:var(--pulse--background-color-start,#ff190080)}to{background-color:var(--pulse--background-color-end,#ff190000)}}@keyframes pulse_neg2{0%{background-color:var(--pulse--background-color-start,#ff190080)}to{background-color:var(--pulse--background-color-end,#ff190000)}}';import{sourceColumn as Vt}from"@perspective-dev/viewer/src/ts/column-format.js";var ne=class e extends HTMLElement{static _global_stylesheet_installed=!1;static _sheet;static renderTarget=window.CSS?.supports&&window.CSS?.supports("selector(:host-context(foo))")?"shadow":"light";regular_table;model;_toolbar;_edit_button;_scroll_lock;_is_scroll_lock;_edit_mode;_initialized;_reset_scroll_top;_reset_scroll_left;_reset_select;_reset_column_size;constructor(){super(),this.regular_table=document.createElement("regular-table"),this.regular_table.part="regular-table",this._is_scroll_lock=!1,this._edit_mode="READ_ONLY";let t=e;t._sheet||(t._sheet=new CSSStyleSheet,t._sheet.replaceSync(ct)),t.renderTarget==="shadow"?this.attachShadow({mode:"open"}).adoptedStyleSheets.push(t._sheet):t.renderTarget==="light"&&!t._global_stylesheet_installed&&(t._global_stylesheet_installed=!0,document.adoptedStyleSheets.push(t._sheet))}connectedCallback(){this._toolbar||(this._toolbar=document.createElement("perspective-viewer-datagrid-toolbar"));let t=this.parentElement;t&&t.appendChild(this._toolbar)}disconnectedCallback(){this._toolbar?.parentElement?.removeChild?.(this._toolbar)}async activate(t){return await st.call(this,t)}get_static_config(){return{name:"Datagrid",category:"Basic",select_mode:"toggle",config_column_names:["Columns"],group_rollup_modes:["rollup","flat","total"],priority:1,can_render_column_styles:!0}}plugin_config_schema(){let t=[];return t.push({kind:"Enum",key:"edit_mode",default:"READ_ONLY",variants:[{value:"EDIT",label:"Edit"},{value:"READ_ONLY",label:"Read-only"},{value:"SELECT_ROW",label:"Row Select"},{value:"SELECT_COLUMN",label:"Column Select"},{value:"SELECT_REGION",label:"Region Select"},{value:"SELECT_ROW_TREE",label:"Tree Select"}]}),t.push({kind:"Bool",key:"scroll_lock",default:!1}),{fields:t}}column_config_schema(t,o,r,i,n,s){return he.call(this,t,o,r,i,n,s)}async draw(t){return await at.call(this,t)}async update(t){if(this.model===void 0)await this.draw(t);else if(this.model._config.split_by?.length>0){let o=await t.dimensions();this.model._num_rows=o.num_view_rows,await this.regular_table.draw()}else this.model._num_rows=await t.num_rows(),await this.regular_table.draw()}async render(t,o){let r=await t.to_columns(o),i=await t.column_paths(o),n=o?.end_row!==void 0&&o?.end_row!==null&&o?.start_row!==void 0&&o?.start_row!==null?o.end_row-o.start_row:await t.num_rows(),s="";for(let l=0;l<n;l++){for(let a of i){let c=r[a],d=this.model._schema[a],p=this.regular_table[E],u=Vt(a),_=Ee(d,p?.[u]||{});_?s+=_.format(c[l])+" ":s+=c[l]+" "}s+=`
2
+ `}return s.trim()}async resize(t){!this.isConnected||this.offsetParent==null||this._initialized&&await this.regular_table.draw()}async clear(){this.regular_table.resetAutoSize(),this.regular_table.clear()}save(){return lt.call(this)}restore(t,o){return it.call(this,t,o??{})}restyle(){}delete(){this.disconnectedCallback(),this._toolbar=void 0,this.regular_table.table_model&&this.regular_table.resetAutoSize(),this.regular_table.clear()}};var dt=':host{height:100%;display:block;position:relative}:host #container{flex-direction:column;justify-content:stretch;align-items:stretch;display:flex;position:absolute;inset:0}:host #toolbar{align-items:stretch;height:100%;display:flex}:host #toolbar .hover-target{cursor:pointer;align-items:center;margin:0;display:inline-flex;&:hover{box-shadow:-4px 0 0 var(--psp--color), 4px 0 0 var(--psp--color);background-color:var(--psp--color)}}:host #slot-container{flex:1;position:relative}#scroll_lock.lock-scroll:before{-webkit-mask-image:var(--psp-toolbar-scroll-lock-active--content)}#scroll_lock:before{-webkit-mask-image:var(--psp-toolbar-scroll-lock--content)}#select_mode:before{content:"highlight_alt"}#edit_mode:before{-webkit-mask-image:""}#edit_mode[data-edit-mode=READ_ONLY]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-read-only--content)}#edit_mode[data-edit-mode=EDIT]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-edit--content)}:host(.aggregated) #toolbar #edit_mode[data-edit-mode=EDIT]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-read-only--content)}#edit_mode[data-edit-mode=SELECT_ROW]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-row--content)}#edit_mode[data-edit-mode=SELECT_COLUMN]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-column--content)}#edit_mode[data-edit-mode=SELECT_REGION]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-region--content)}#edit_mode[data-edit-mode=SELECT_ROW_TREE]:before{-webkit-mask-image:var(--psp-toolbar-edit-mode-select-row-tree--content)}#edit_mode[data-edit-mode=READ_ONLY] span:before{content:var(--psp-label--edit-mode-read-only--content,"Read Only")}#edit_mode[data-edit-mode=EDIT] span:before{content:var(--psp-label--edit-mode-edit--content,"Editable")}#edit_mode[data-edit-mode=SELECT_ROW] span:before{content:var(--psp-label--edit-mode-select-row--content,"Row Select")}#edit_mode[data-edit-mode=SELECT_COLUMN] span:before{content:var(--psp-label--edit-mode-select-column--content,"Column Select")}#edit_mode[data-edit-mode=SELECT_REGION] span:before{content:var(--psp-label--edit-mode-select-region--content,"Region Select")}#edit_mode[data-edit-mode=SELECT_ROW_TREE] span:before{content:var(--psp-label--edit-mode-select-row-tree--content,"Tree Select")}#scroll_lock span:before{content:var(--psp-label--scroll-lock-toggle--content,"Free Scroll")}#scroll_lock.lock-scroll span:before{content:var(--psp-label--scroll-lock-alt-toggle--content,"Align Scroll")}.button:before{content:"";background-color:var(--psp--color);width:21px;height:21px;-webkit-mask-size:cover;mask-size:cover}.button.editable:before,.button.lock-scroll:before{color:inherit}.button{user-select:none;box-sizing:border-box;font-size:var(--label--font-size,.75em);white-space:nowrap;border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;width:37px;height:22px;padding:0 5px;display:inline-flex}.button>span{margin:0;padding:0;display:none}.hover-target:focus-within .button,.hover-target:hover .button{background-color:var(--psp--color);color:var(--psp--background-color);opacity:1;cursor:pointer;align-items:center;display:flex;position:relative}.hover-target:focus-within .button:before,.hover-target:hover .button:before{background-color:var(--psp--background-color)}.hover-target:focus-within .button>span,.hover-target:hover .button>span{white-space:pre-wrap;background-color:var(--psp--color);text-align:center;border-radius:0 0 3px 3px;width:35px;height:auto;margin:0;padding:5px;font-size:9px;line-height:1;display:block;position:absolute;top:calc(100% + 3px);left:50%;translate:-50%}';var pt=new CSSStyleSheet;pt.replaceSync(dt);var se=class extends HTMLElement{_initialized=!1;connectedCallback(){if(this._initialized)return;this._initialized=!0,this.setAttribute("slot","statusbar-extra"),this.attachShadow({mode:"open"}),this.shadowRoot.adoptedStyleSheets.push(pt),this.shadowRoot.innerHTML=`
3
3
  <div id="toolbar">
4
4
  <span class="hover-target">
5
5
  <span id="scroll_lock" class="button">
@@ -12,5 +12,5 @@ import"regular-table";import{PerspectiveSelectDetail as se}from"@perspective-dev
12
12
  </span>
13
13
  </span>
14
14
  </div>
15
- `;let t=this.parentElement,o=this.previousElementSibling;o._scroll_lock=this.shadowRoot.querySelector("#scroll_lock"),o._scroll_lock.addEventListener("click",()=>Y.call(o)),o._edit_button=this.shadowRoot.querySelector("#edit_mode"),o._edit_button.addEventListener("click",()=>{$.call(o),o.regular_table.draw(),t.dispatchEvent(new Event("perspective-config-update"))})}};async function Ht(){customElements.define("perspective-viewer-datagrid-toolbar",ne),customElements.define("perspective-viewer-datagrid",re),await customElements.whenDefined("perspective-viewer"),customElements.get("perspective-viewer").registerPlugin("perspective-viewer-datagrid")}Ht();export{re as HTMLPerspectiveViewerDatagridPluginElement,ne as HTMLPerspectiveViewerDatagridToolbarElement,E as PRIVATE_PLUGIN_SYMBOL};
15
+ `;let t=this.parentElement,o=this.previousElementSibling;o._scroll_lock=this.shadowRoot.querySelector("#scroll_lock"),o._scroll_lock.addEventListener("click",()=>B.call(o)),o._edit_button=this.shadowRoot.querySelector("#edit_mode"),o._edit_button.addEventListener("click",()=>{j.call(o),o.regular_table.draw(),t.dispatchEvent(new Event("perspective-config-update"))})}};async function Wt(){customElements.define("perspective-viewer-datagrid-toolbar",se),customElements.define("perspective-viewer-datagrid",ne),await customElements.whenDefined("perspective-viewer"),customElements.get("perspective-viewer").registerPlugin("perspective-viewer-datagrid")}Wt();export{ne as HTMLPerspectiveViewerDatagridPluginElement,se as HTMLPerspectiveViewerDatagridToolbarElement,E as PRIVATE_PLUGIN_SYMBOL};
16
16
  //# sourceMappingURL=perspective-viewer-datagrid.js.map