@stenajs-webui/grid-export 19.0.0-next.3 → 19.0.0-next.31

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.
@@ -1,3 +1,3 @@
1
- import { StandardTableConfig } from "@stenajs-webui/grid/dist/features/standard-table/config/StandardTableConfig";
1
+ import { StandardTableConfig } from "@stenajs-webui/grid";
2
2
  import { CustomCellFormatter } from "../../../common/CellFormatters";
3
3
  export declare function copyContentToClipboard<TItem, TColumnKey extends string, TColumnGroupKey extends string>(items: TItem[] | undefined, config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>, formatters?: Partial<Record<TColumnKey, CustomCellFormatter<TItem>>> | undefined, renderContent?: (content: string) => string | null): Promise<void>;
package/dist/index.es.js CHANGED
@@ -1,21 +1,19 @@
1
1
  (function(){"use strict";try{var e=document.createElement("style");e.appendChild(document.createTextNode("")),document.head.appendChild(e)}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- import { useCallback as y, useState as w } from "react";
2
+ import { jsx as y } from "react/jsx-runtime";
3
+ import { useCallback as b, useState as w } from "react";
3
4
  import T from "zipcelx";
4
- import { formatColumnIdToHeaderCellLabel as m, createGroupConfigAndIdsForRows as b } from "@stenajs-webui/grid";
5
+ import { formatColumnIdToHeaderCellLabel as m, createGroupConfigAndIdsForRows as h } from "@stenajs-webui/grid";
5
6
  import { flatten as d } from "lodash";
6
- import { format as h } from "date-fns";
7
- import { FlatButton as x } from "@stenajs-webui/elements";
8
- import { faFileDownload as H } from "@fortawesome/free-solid-svg-icons/faFileDownload";
9
- import { jsx as C } from "react/jsx-runtime";
7
+ import { format as x } from "date-fns";
8
+ import { FlatButton as C, stenaDownload as H } from "@stenajs-webui/elements";
10
9
  import * as f from "clipboard-polyfill";
11
10
  const O = (r, o) => d(
12
11
  o.map(
13
12
  (e) => e.columnOrder.map((t) => {
14
13
  var l;
15
- const n = r.columns[t];
16
14
  return {
17
15
  type: "string",
18
- value: (l = n.columnLabel) != null ? l : m(String(t))
16
+ value: (l = r.columns[t].columnLabel) != null ? l : m(String(t))
19
17
  };
20
18
  })
21
19
  )
@@ -37,7 +35,7 @@ const O = (r, o) => d(
37
35
  const l = e == null ? void 0 : e(n, r);
38
36
  return c(l);
39
37
  }
40
- return typeof n == "number" || typeof n == "string" ? c(n) : typeof n == "boolean" ? c(n ? "Y" : "") : n instanceof Date ? c(h(n, "yyyy-MM-dd HH:mm")) : n == null ? c("") : c(String(n));
38
+ return typeof n == "number" || typeof n == "string" ? c(n) : typeof n == "boolean" ? c(n ? "Y" : "") : n instanceof Date ? c(x(n, "yyyy-MM-dd HH:mm")) : n == null ? c("") : c(String(n));
41
39
  }, c = (r) => ({
42
40
  type: typeof r == "number" ? "number" : "string",
43
41
  value: r
@@ -56,7 +54,7 @@ const O = (r, o) => d(
56
54
  l
57
55
  );
58
56
  }, R = (r, o, e, t) => {
59
- const n = b(
57
+ const n = h(
60
58
  "columnGroups" in o ? o.columnGroups : void 0,
61
59
  "columnGroupOrder" in o ? o.columnGroupOrder : void 0,
62
60
  "columnOrder" in o ? o.columnOrder : void 0
@@ -75,22 +73,30 @@ const O = (r, o) => d(
75
73
  }, k = async (r, o, e, t) => {
76
74
  const n = R(r, o, e, t);
77
75
  await T(n);
78
- }, U = function({
76
+ }, Q = function({
79
77
  config: o,
80
78
  size: e,
81
79
  items: t,
82
80
  filename: n = "exported-spreadsheet",
83
81
  formatters: l
84
82
  }) {
85
- const a = y(async () => {
86
- t && t.length && await k(n, o, t, l);
83
+ const a = b(async () => {
84
+ t && t.length && await k(
85
+ n,
86
+ o,
87
+ t,
88
+ l
89
+ );
87
90
  }, [o, t, n, l]);
88
- return /* @__PURE__ */ C(x, {
89
- size: e,
90
- leftIcon: H,
91
- onClick: a,
92
- disabled: !t || !t.length
93
- });
91
+ return /* @__PURE__ */ y(
92
+ C,
93
+ {
94
+ size: e,
95
+ leftIcon: H,
96
+ onClick: a,
97
+ disabled: !t || !t.length
98
+ }
99
+ );
94
100
  }, g = (r) => {
95
101
  switch (r == null ? void 0 : r.toLowerCase()) {
96
102
  case "left":
@@ -133,7 +139,7 @@ const O = (r, o) => d(
133
139
  const a = t == null ? void 0 : t(l, r);
134
140
  return p(a, e);
135
141
  }
136
- return typeof l == "number" || typeof l == "string" ? p(l, e) : typeof l == "boolean" ? p(l ? "Y" : "", e) : l instanceof Date ? p(h(l, "yyyy-MM-dd HH:mm"), e) : l == null ? p("", e) : p(String(l), e);
142
+ return typeof l == "number" || typeof l == "string" ? p(l, e) : typeof l == "boolean" ? p(l ? "Y" : "", e) : l instanceof Date ? p(x(l, "yyyy-MM-dd HH:mm"), e) : l == null ? p("", e) : p(String(l), e);
137
143
  }, p = (r, o) => {
138
144
  if (o) {
139
145
  const e = g(o);
@@ -156,7 +162,7 @@ const O = (r, o) => d(
156
162
  l
157
163
  );
158
164
  }, P = (r, o, e) => {
159
- const t = b(
165
+ const t = h(
160
166
  "columnGroups" in r ? r.columnGroups : void 0,
161
167
  "columnGroupOrder" in r ? r.columnGroupOrder : void 0,
162
168
  "columnOrder" in r ? r.columnOrder : void 0
@@ -174,7 +180,7 @@ async function Y(r, o, e, t) {
174
180
  await f.write([l]);
175
181
  }
176
182
  }
177
- function W({
183
+ function U({
178
184
  config: r,
179
185
  renderContent: o,
180
186
  size: e,
@@ -184,19 +190,22 @@ function W({
184
190
  labelAfterCopy: a = "Content copied!",
185
191
  numTimeToRevertLabel: s = 2e3
186
192
  }) {
187
- const [i, u] = w(!1), $ = y(async () => {
193
+ const [i, u] = w(!1), $ = b(async () => {
188
194
  await Y(t, r, n, o), u(!0), setTimeout(() => u(!1), s);
189
195
  }, [r, t, n, s, o]);
190
- return /* @__PURE__ */ C(x, {
191
- size: e,
192
- onClick: $,
193
- disabled: !t || !t.length,
194
- label: i ? a : l
195
- });
196
+ return /* @__PURE__ */ y(
197
+ C,
198
+ {
199
+ size: e,
200
+ onClick: $,
201
+ disabled: !t || !t.length,
202
+ label: i ? a : l
203
+ }
204
+ );
196
205
  }
197
206
  export {
198
- U as StandardTableExcelExportButton,
199
- W as StandardTableHtmlCopyToClipboardButton,
207
+ Q as StandardTableExcelExportButton,
208
+ U as StandardTableHtmlCopyToClipboardButton,
200
209
  P as createHtmlConfig,
201
210
  R as createZipcelxConfig,
202
211
  k as downloadExcelForStandardTable
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? groupConfig.label ?? \"\" : \"\",\n };\n })\n )\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters)\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { faFileDownload } from \"@fortawesome/free-solid-svg-icons/faFileDownload\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={faFileDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n })\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid/dist/features/standard-table/config/StandardTableConfig\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","columnConfig","_a","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","length","FlatButton","faFileDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","_b","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml","setTimeout"],"mappings":";;;;;;;;;AAQa,MAAAA,IAAwB,CAKnCC,GACAC,MAEOC;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY,IAAI,CAACC,MAAa;;AAClC,YAAAC,IAAeL,EAAO,QAAQI;AAC7B,aAAA;AAAA,QACL,MAAM;AAAA,QACN,QACEE,IAAAD,EAAa,gBAAb,OAAAC,IACAC,EAAgC,OAAOH,CAAQ,CAAC;AAAA,MAAA;AAAA,IACpD,CACD;AAAA,EACH;AAAA,GAISI,IAAwB,CACnCP,MAEOC;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY,IAAI,CAACM,GAAGC,MAAU;;AACjC,aAAA;AAAA,QACL,MAAM;AAAA,QACN,OAAOA,MAAU,MAAIJ,IAAAH,EAAY,UAAZ,OAAAG,IAA0B;AAAA,MAAA;AAAA,IACjD,CACD;AAAA,EACH;AAAA,GCrCSK,IAAsB,CAKjCC,GACAC,GAKAC,GAOAC,MACgB;AAChB,MAAIA;AACK,WAAAC,EAAWD,EAAUH,CAAI,CAAC;AAG7B,QAAAK,IAAQJ,EAAkBD,CAAI;AAEpC,MAAIE,GAAoB;AAChB,UAAAI,IAAQJ,KAAA,gBAAAA,EAAqBG,GAAOL;AAC1C,WAAOI,EAAWE,CAAK;AAAA,EACzB;AAEA,SAAI,OAAOD,KAAU,YAAY,OAAOA,KAAU,WACzCD,EAAWC,CAAK,IAGrB,OAAOA,KAAU,YACZD,EAAWC,IAAQ,MAAM,EAAE,IAGhCA,aAAiB,OACZD,EAAWG,EAAOF,GAAO,kBAAkB,CAAC,IAGjDA,KAAS,OACJD,EAAW,EAAE,IAGfA,EAAW,OAAOC,CAAK,CAAC;AACjC,GAEMD,IAAa,CAACC,OAEX;AAAA,EACL,MAFW,OAAOA,KAAU,WAAW,WAAW;AAAA,EAGlD,OAAAA;AAAA,IClDSG,IAAoB,CAK/BR,GACAZ,GACAC,GACAoB,MAEOnB;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY;AAAA,MAAiB,CAACC,MACxCkB,EAAcV,GAAMR,GAAUJ,GAAQqB,CAAU;AAAA,IAClD;AAAA,EACF;AAAA,GAISC,IAAgB,CAK3BV,GACAR,GACAJ,GACAqB,MACgB;AACV,QAAAhB,IAAeL,EAAO,QAAQI,IAC9BW,IAAYM,KAAA,gBAAAA,EAAajB;AACxB,SAAAO;AAAAA,IACLC;AAAA,IACAP,EAAa;AAAA,IACbA,EAAa;AAAA,IACbU;AAAA,EAAA;AAEJ,GClCaQ,IAAsB,CAKjCC,GACAxB,GACAyB,GACAJ,MACkB;AAClB,QAAMK,IAAqBC;AAAA,IACzB,kBAAkB3B,IAASA,EAAO,eAAe;AAAA,IACjD,sBAAsBA,IAASA,EAAO,mBAAmB;AAAA,IACzD,iBAAiBA,IAASA,EAAO,cAAc;AAAA,EAAA,GAG3C4B,IAAgC,CAAA,GAChC3B,IAAeyB,EAAmB,IAAI,CAACG,MAAMA,EAAE,WAAW;AAEhE,SAAI,kBAAkB7B,KACT4B,EAAA,KAAKpB,EAAsBP,CAAY,CAAC,GAErD2B,EAAW,KAAK7B,EAAsBC,GAAQC,CAAY,CAAC,GAEpD;AAAA,IACL,UAAAuB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,QACJ,GAAGI;AAAA,QACH,GAAGH,EAAM;AAAA,UAAgB,CAACb,MACxBQ,EAAkBR,GAAMZ,GAAQC,GAAcoB,CAAU;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EAAA;AAEJ,GC1CaS,IAAgC,OAK3CN,GACAxB,GACAyB,GACAJ,MACG;AACH,QAAMU,IAAcR,EAAoBC,GAAUxB,GAAQyB,GAAOJ,CAAU;AAC3E,QAAMW,EAAQD,CAAW;AAC3B,GCIaE,IACX,SAIE;AAAA,EACAjC,QAAAA;AAAAA,EACAkC,MAAAA;AAAAA,EACAT,OAAAA;AAAAA,EACAD,UAAAA,IAAW;AAAA,EACXH,YAAAA;AALA,GAM0E;AACpEc,QAAAA,IAAqBC,EAAY,YAAY;AAC7CX,IAAAA,KAASA,EAAMY,UACjB,MAAMP,EACJN,GACAxB,GACAyB,GACAJ,CAJiC;AAAA,KAOpC,CAACrB,GAAQyB,GAAOD,GAAUH,CAA1B,CATmC;AAWtC,2BACGiB,GAAD;AAAA,IACE,MAAAJ;AAAA,IACA,UAAUK;AAAAA,IACV,SAASJ;AAAAA,IACT,UAAU,CAACV,KAAS,CAACA,EAAMY;AAAAA,EAAAA,CAL/B;AAQD,GCpDUG,IAAqC,CAChDC,MACuB;AACvB,UAAQA,KAAA,gBAAAA,EAAgB;AAAA,SACjB;AAAA,SACA;AAAA,SACA;AACI,aAAA;AAAA,SACJ;AAAA,SACA;AAAA,SACA;AACI,aAAA;AAAA,SACJ;AACI,aAAA;AAAA;AAEA;AAAA;AAEb,GCTa1C,IAAwB,CAKnCC,GACAC,MAEOC;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY,IAAI,CAACC,MAAa;;AAClC,YAAAC,IAAeL,EAAO,QAAQI;AAEpC,UAAIC,EAAa,sBAAsB;AACrC,cAAMqC,IAAgBF;AAAA,UACpBnC,EAAa;AAAA,QAAA;AAER,eAAA,MAAMqC,IAAgB,aAAaA,IAAgB,MAAM,OAC9DpC,IAAAD,EAAa,gBAAb,OAAAC,IACAC,EAAgC,OAAOH,CAAQ,CAAC;AAAA,MAEpD;AACA,aAAO,QACLuC,IAAAtC,EAAa,gBAAb,OAAAsC,IACApC,EAAgC,OAAOH,CAAQ,CAAC;AAAA,IAAA,CAEnD;AAAA,EACH;AAAA,GAISI,IAAwB,CACnCP,MAEOC;AAAA,EACLD,EAAa,IAAI,CAACE,MAAgB;;AAChC,WAAO,yCACLA,EAAY,YAAY,YACrBG,IAAAH,EAAY,UAAZ,OAAAG,IAAqB;AAAA,EAAA,CAC3B;AAAA,GC1CQK,IAAsB,CAKjCC,GACAC,GAKA+B,GAKA9B,GAOAC,MACW;AACX,MAAIA;AACF,WAAOC,EAAWD,EAAUH,CAAI,GAAGgC,CAAkB;AAGjD,QAAA3B,IAAQJ,EAAkBD,CAAI;AAEpC,MAAIE,GAAoB;AAChB,UAAAI,IAAQJ,KAAA,gBAAAA,EAAqBG,GAAOL;AACnC,WAAAI,EAAWE,GAAO0B,CAAkB;AAAA,EAC7C;AAEA,SAAI,OAAO3B,KAAU,YAAY,OAAOA,KAAU,WACzCD,EAAWC,GAAO2B,CAAkB,IAGzC,OAAO3B,KAAU,YACZD,EAAWC,IAAQ,MAAM,IAAI2B,CAAkB,IAGpD3B,aAAiB,OACZD,EAAWG,EAAOF,GAAO,kBAAkB,GAAG2B,CAAkB,IAGrE3B,KAAS,OACJD,EAAW,IAAI4B,CAAkB,IAGnC5B,EAAW,OAAOC,CAAK,GAAG2B,CAAkB;AACrD,GAEM5B,IAAa,CACjBC,GACA2B,MACW;AACX,MAAIA,GAAoB;AAChB,UAAAF,IACJF,EAAmCI,CAAkB;AACvD,WAAO,MACLF,IAAgB,aAAaA,IAAgB,MAAM,MACjDzB;AAAA,EACN;AACA,SAAO,OAAOA;AAChB,GChEaG,IAAoB,CAK/BR,GACAZ,GACAC,GACAoB,MAEOnB;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY;AAAA,MAAY,CAACC,MACnCkB,EAAcV,GAAMR,GAAUJ,GAAQqB,CAAU;AAAA,IAClD;AAAA,EACF;AAAA,EACA,KAAK,EAAE,GAGEC,IAAgB,CAK3BV,GACAR,GACAJ,GACAqB,MACW;AACL,QAAAhB,IAAeL,EAAO,QAAQI,IAC9BW,IAAYM,KAAA,gBAAAA,EAAajB;AACxB,SAAAO;AAAA,IACLC;AAAA,IACAP,EAAa;AAAA,IACbA,EAAa;AAAA,IACbA,EAAa;AAAA,IACbU;AAAA,EAAA;AAEJ,GCnCa8B,IAAmB,CAK9B7C,GACAyB,GACAJ,MACW;AACX,QAAMK,IAAqBC;AAAA,IACzB,kBAAkB3B,IAASA,EAAO,eAAe;AAAA,IACjD,sBAAsBA,IAASA,EAAO,mBAAmB;AAAA,IACzD,iBAAiBA,IAASA,EAAO,cAAc;AAAA,EAAA,GAG3C4B,IAA4B,CAAA,GAC5B3B,IAAeyB,EAAmB,IAAI,CAACG,MAAMA,EAAE,WAAW;AAEhE,EAAI,kBAAkB7B,KACpB4B,EAAW,KAAKpB,EAAsBP,CAAY,EAAE,KAAK,EAAE,CAAC,GAE9D2B,EAAW,KAAK7B,EAAsBC,GAAQC,CAAY,EAAE,KAAK,EAAE,CAAC;AAC9D,QAAA6C,IAAS,UAAUlB,EACtB,IAAI,CAACmB,MAAc,OAAOA,QAAgB,EAC1C,KAAK,EAAE,aAMJC,IAAO,UAJKvB,EACf,IAAI,CAACb,MAASQ,EAAkBR,GAAMZ,GAAQC,GAAcoB,CAAU,CAAC,EACvE,IAAI,CAAC4B,MAAQ,OAAOA,QAAU,EAEA,KAAK,EAAE;AACxC,SAAO,UAAUH,IAASE;AAC5B,GCvCaE,IAA6B,CAKxClD,GACAyB,GACAJ,MAEOwB,EAAiB7C,GAAQyB,GAAOJ,CAAU;ACRnD,eAAsB8B,EAKpB1B,GACAzB,GACAqB,GAGA+B,GACA;AACA,MAAIC,IAA4B;AAShC,MAPI5B,KAASA,EAAM,WACJ4B,IAAAH,EAA2BlD,GAAQyB,GAAOJ,CAAU,IAG/D+B,MACFC,IAAaD,EAAcC,CAAU,IAEnCA,GAAY;AACR,UAAAzC,IAAO,IAAI0C,EAAU,cAAc;AAAA,MACvC,aAAa,IAAI,KAAK,CAACD,CAAU,GAAG,EAAE,MAAM,aAAa;AAAA,IAAA,CAC1D;AAED,UAAMC,EAAU,MAAM,CAAC1C,CAAI,CAAC;AAAA,EAC9B;AACF;ACVO,SAAS2C,EAId;AAAA,EACAvD,QAAAA;AAAAA,EACAoD,eAAAA;AAAAA,EACAlB,MAAAA;AAAAA,EACAT,OAAAA;AAAAA,EACAJ,YAAAA;AAAAA,EACAH,OAAAA,IAAQ;AAAA,EACRsC,gBAAAA,IAAiB;AAAA,EACjBC,sBAAAA,IAAuB;AARvB,GAaC;AACD,QAAM,CAACC,GAAeC,CAAhB,IAAoCC,EAAkB,EAAV,GAC5CC,IAAoBzB,EAAY,YAAY;AAChD,UAAMe,EAAuB1B,GAAOzB,GAAQqB,GAAY+B,CAA5B,GAE5BO,EAAiB,EAAD,GAChBG,WAAW,MAAMH,EAAiB,EAAD,GAASF,CAAhC;AAAA,EAAA,GACT,CAACzD,GAAQyB,GAAOJ,GAAYoC,GAAsBL,CAAlD,CALkC;AAOrC,2BACGd,GAAD;AAAA,IACE,MAAAJ;AAAA,IACA,SAAS2B;AAAAA,IACT,UAAU,CAACpC,KAAS,CAACA,EAAMY;AAAAA,IAC3B,OAAOqB,IAAgBF,IAAiBtC;AAAAA,EAAAA,CAL5C;AAQD;"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? groupConfig.label ?? \"\" : \"\",\n };\n })\n )\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters)\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaDownload,\n} from \"@stenajs-webui/elements\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={stenaDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n })\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","_a","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","columnConfig","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","jsx","FlatButton","stenaDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","_b","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  (function(){"use strict";try{var e=document.createElement("style");e.appendChild(document.createTextNode("")),document.head.appendChild(e)}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=require("react"),$=require("zipcelx"),p=require("@stenajs-webui/grid"),i=require("lodash"),y=require("date-fns"),g=require("@stenajs-webui/elements"),H=require("@fortawesome/free-solid-svg-icons/faFileDownload"),C=require("react/jsx-runtime"),S=require("clipboard-polyfill"),v=e=>e&&typeof e=="object"&&"default"in e?e:{default:e};function G(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const E=v($),b=G(S),_=(e,t)=>i.flatten(t.map(o=>o.columnOrder.map(r=>{var l;const n=e.columns[r];return{type:"string",value:(l=n.columnLabel)!=null?l:p.formatColumnIdToHeaderCellLabel(String(r))}}))),R=e=>i.flatten(e.map(t=>t.columnOrder.map((o,r)=>{var n;return{type:"string",value:r===0&&(n=t.label)!=null?n:""}}))),j=(e,t,o,r)=>{if(r)return c(r(e));const n=t(e);if(o){const l=o==null?void 0:o(n,e);return c(l)}return typeof n=="number"||typeof n=="string"?c(n):typeof n=="boolean"?c(n?"Y":""):n instanceof Date?c(y.format(n,"yyyy-MM-dd HH:mm")):n==null?c(""):c(String(n))},c=e=>({type:typeof e=="number"?"number":"string",value:e}),q=(e,t,o,r)=>i.flatten(o.map(n=>n.columnOrder.map(l=>B(e,l,t,r)))),B=(e,t,o,r)=>{const n=o.columns[t],l=r==null?void 0:r[t];return j(e,n.itemValueResolver,n.itemLabelFormatter,l)},x=(e,t,o,r)=>{const n=p.createGroupConfigAndIdsForRows("columnGroups"in t?t.columnGroups:void 0,"columnGroupOrder"in t?t.columnGroupOrder:void 0,"columnOrder"in t?t.columnOrder:void 0),l=[],a=n.map(s=>s.groupConfig);return"columnGroups"in t&&l.push(R(a)),l.push(_(t,a)),{filename:e,sheet:{data:[...l,...o.map(s=>q(s,t,a,r))]}}},h=async(e,t,o,r)=>{const n=x(e,t,o,r);await E.default(n)},M=function({config:t,size:o,items:r,filename:n="exported-spreadsheet",formatters:l}){const a=m.useCallback(async()=>{r&&r.length&&await h(n,t,r,l)},[t,r,n,l]);return C.jsx(g.FlatButton,{size:o,leftIcon:H.faFileDownload,onClick:a,disabled:!r||!r.length})},w=e=>{switch(e==null?void 0:e.toLowerCase()){case"left":case"start":case"flex-start":return"text-align: left";case"right":case"end":case"flex-end":return"text-align: right";case"center":return"text-align: center";default:return}},k=(e,t)=>i.flatten(t.map(o=>o.columnOrder.map(r=>{var l,a;const n=e.columns[r];if(n.justifyContentHeader){const s=w(n.justifyContentHeader);return`<th${s?' style="'+s+'"':""}>${(l=n.columnLabel)!=null?l:p.formatColumnIdToHeaderCellLabel(String(r))}</th>`}return`<th>${(a=n.columnLabel)!=null?a:p.formatColumnIdToHeaderCellLabel(String(r))}</th>`}))),D=e=>i.flatten(e.map(t=>{var o;return`<th style="text-align: left" colspan="${t.columnOrder.length}">${(o=t.label)!=null?o:""}</th>`})),I=(e,t,o,r,n)=>{if(n)return d(n(e),o);const l=t(e);if(r){const a=r==null?void 0:r(l,e);return d(a,o)}return typeof l=="number"||typeof l=="string"?d(l,o):typeof l=="boolean"?d(l?"Y":"",o):l instanceof Date?d(y.format(l,"yyyy-MM-dd HH:mm"),o):l==null?d("",o):d(String(l),o)},d=(e,t)=>{if(t){const o=w(t);return`<td${o?' style="'+o+'"':""}>${e}</td>`}return`<td>${e}</td>`},A=(e,t,o,r)=>i.flatten(o.map(n=>n.columnOrder.map(l=>P(e,l,t,r)))).join(""),P=(e,t,o,r)=>{const n=o.columns[t],l=r==null?void 0:r[t];return I(e,n.itemValueResolver,n.justifyContentCell,n.itemLabelFormatter,l)},T=(e,t,o)=>{const r=p.createGroupConfigAndIdsForRows("columnGroups"in e?e.columnGroups:void 0,"columnGroupOrder"in e?e.columnGroupOrder:void 0,"columnOrder"in e?e.columnOrder:void 0),n=[],l=r.map(u=>u.groupConfig);"columnGroups"in e&&n.push(D(l).join("")),n.push(k(e,l).join(""));const a=`<thead>${n.map(u=>`<tr>${u}</tr>`).join("")}</thead>`,f=`<tbody>${t.map(u=>A(u,e,l,o)).map(u=>`<tr>${u}</tr>`).join("")}</tbody>`;return`<table>${a}${f}</table>`},z=(e,t,o)=>T(e,t,o);async function F(e,t,o,r){let n="";if(e&&e.length&&(n=z(t,e,o)),r&&(n=r(n)),n){const l=new b.ClipboardItem({"text/html":new Blob([n],{type:"text/html"})});await b.write([l])}}function V({config:e,renderContent:t,size:o,items:r,formatters:n,label:l="Copy to clipboard",labelAfterCopy:a="Content copied!",numTimeToRevertLabel:s=2e3}){const[f,u]=m.useState(!1),O=m.useCallback(async()=>{await F(r,e,n,t),u(!0),setTimeout(()=>u(!1),s)},[e,r,n,s,t]);return C.jsx(g.FlatButton,{size:o,onClick:O,disabled:!r||!r.length,label:f?a:l})}exports.StandardTableExcelExportButton=M;exports.StandardTableHtmlCopyToClipboardButton=V;exports.createHtmlConfig=T;exports.createZipcelxConfig=x;exports.downloadExcelForStandardTable=h;
2
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("react/jsx-runtime"),m=require("react"),$=require("zipcelx"),i=require("@stenajs-webui/grid"),p=require("lodash"),C=require("date-fns"),b=require("@stenajs-webui/elements"),H=require("clipboard-polyfill"),S=e=>e&&typeof e=="object"&&"default"in e?e:{default:e};function G(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const v=S($),y=G(H),E=(e,t)=>p.flatten(t.map(o=>o.columnOrder.map(r=>{var l;return{type:"string",value:(l=e.columns[r].columnLabel)!=null?l:i.formatColumnIdToHeaderCellLabel(String(r))}}))),_=e=>p.flatten(e.map(t=>t.columnOrder.map((o,r)=>{var n;return{type:"string",value:r===0&&(n=t.label)!=null?n:""}}))),R=(e,t,o,r)=>{if(r)return c(r(e));const n=t(e);if(o){const l=o==null?void 0:o(n,e);return c(l)}return typeof n=="number"||typeof n=="string"?c(n):typeof n=="boolean"?c(n?"Y":""):n instanceof Date?c(C.format(n,"yyyy-MM-dd HH:mm")):n==null?c(""):c(String(n))},c=e=>({type:typeof e=="number"?"number":"string",value:e}),j=(e,t,o,r)=>p.flatten(o.map(n=>n.columnOrder.map(l=>q(e,l,t,r)))),q=(e,t,o,r)=>{const n=o.columns[t],l=r==null?void 0:r[t];return R(e,n.itemValueResolver,n.itemLabelFormatter,l)},x=(e,t,o,r)=>{const n=i.createGroupConfigAndIdsForRows("columnGroups"in t?t.columnGroups:void 0,"columnGroupOrder"in t?t.columnGroupOrder:void 0,"columnOrder"in t?t.columnOrder:void 0),l=[],a=n.map(u=>u.groupConfig);return"columnGroups"in t&&l.push(_(a)),l.push(E(t,a)),{filename:e,sheet:{data:[...l,...o.map(u=>j(u,t,a,r))]}}},h=async(e,t,o,r)=>{const n=x(e,t,o,r);await v.default(n)},B=function({config:t,size:o,items:r,filename:n="exported-spreadsheet",formatters:l}){const a=m.useCallback(async()=>{r&&r.length&&await h(n,t,r,l)},[t,r,n,l]);return g.jsx(b.FlatButton,{size:o,leftIcon:b.stenaDownload,onClick:a,disabled:!r||!r.length})},T=e=>{switch(e==null?void 0:e.toLowerCase()){case"left":case"start":case"flex-start":return"text-align: left";case"right":case"end":case"flex-end":return"text-align: right";case"center":return"text-align: center";default:return}},M=(e,t)=>p.flatten(t.map(o=>o.columnOrder.map(r=>{var l,a;const n=e.columns[r];if(n.justifyContentHeader){const u=T(n.justifyContentHeader);return`<th${u?' style="'+u+'"':""}>${(l=n.columnLabel)!=null?l:i.formatColumnIdToHeaderCellLabel(String(r))}</th>`}return`<th>${(a=n.columnLabel)!=null?a:i.formatColumnIdToHeaderCellLabel(String(r))}</th>`}))),k=e=>p.flatten(e.map(t=>{var o;return`<th style="text-align: left" colspan="${t.columnOrder.length}">${(o=t.label)!=null?o:""}</th>`})),I=(e,t,o,r,n)=>{if(n)return d(n(e),o);const l=t(e);if(r){const a=r==null?void 0:r(l,e);return d(a,o)}return typeof l=="number"||typeof l=="string"?d(l,o):typeof l=="boolean"?d(l?"Y":"",o):l instanceof Date?d(C.format(l,"yyyy-MM-dd HH:mm"),o):l==null?d("",o):d(String(l),o)},d=(e,t)=>{if(t){const o=T(t);return`<td${o?' style="'+o+'"':""}>${e}</td>`}return`<td>${e}</td>`},A=(e,t,o,r)=>p.flatten(o.map(n=>n.columnOrder.map(l=>D(e,l,t,r)))).join(""),D=(e,t,o,r)=>{const n=o.columns[t],l=r==null?void 0:r[t];return I(e,n.itemValueResolver,n.justifyContentCell,n.itemLabelFormatter,l)},w=(e,t,o)=>{const r=i.createGroupConfigAndIdsForRows("columnGroups"in e?e.columnGroups:void 0,"columnGroupOrder"in e?e.columnGroupOrder:void 0,"columnOrder"in e?e.columnOrder:void 0),n=[],l=r.map(s=>s.groupConfig);"columnGroups"in e&&n.push(k(l).join("")),n.push(M(e,l).join(""));const a=`<thead>${n.map(s=>`<tr>${s}</tr>`).join("")}</thead>`,f=`<tbody>${t.map(s=>A(s,e,l,o)).map(s=>`<tr>${s}</tr>`).join("")}</tbody>`;return`<table>${a}${f}</table>`},P=(e,t,o)=>w(e,t,o);async function z(e,t,o,r){let n="";if(e&&e.length&&(n=P(t,e,o)),r&&(n=r(n)),n){const l=new y.ClipboardItem({"text/html":new Blob([n],{type:"text/html"})});await y.write([l])}}function V({config:e,renderContent:t,size:o,items:r,formatters:n,label:l="Copy to clipboard",labelAfterCopy:a="Content copied!",numTimeToRevertLabel:u=2e3}){const[f,s]=m.useState(!1),O=m.useCallback(async()=>{await z(r,e,n,t),s(!0),setTimeout(()=>s(!1),u)},[e,r,n,u,t]);return g.jsx(b.FlatButton,{size:o,onClick:O,disabled:!r||!r.length,label:f?a:l})}exports.StandardTableExcelExportButton=B;exports.StandardTableHtmlCopyToClipboardButton=V;exports.createHtmlConfig=w;exports.createZipcelxConfig=x;exports.downloadExcelForStandardTable=h;
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? groupConfig.label ?? \"\" : \"\",\n };\n })\n )\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters)\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { faFileDownload } from \"@fortawesome/free-solid-svg-icons/faFileDownload\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={faFileDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n })\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid/dist/features/standard-table/config/StandardTableConfig\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","columnConfig","_a","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","length","FlatButton","faFileDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","_b","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml","setTimeout"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? groupConfig.label ?? \"\" : \"\",\n };\n })\n )\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters)\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaDownload,\n} from \"@stenajs-webui/elements\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={stenaDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n })\n )\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n })\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters)\n )\n )\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","_a","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","columnConfig","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","jsx","FlatButton","stenaDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","_b","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/grid-export",
3
- "version": "19.0.0-next.3",
3
+ "version": "19.0.0-next.31",
4
4
  "description": "",
5
5
  "author": "mattias800",
6
6
  "license": "MIT",
@@ -27,9 +27,9 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@fortawesome/free-solid-svg-icons": ">=5.15.3",
30
- "@stenajs-webui/core": "19.0.0-next.3",
31
- "@stenajs-webui/elements": "19.0.0-next.3",
32
- "@stenajs-webui/grid": "19.0.0-next.3",
30
+ "@stenajs-webui/core": "19.0.0-next.31",
31
+ "@stenajs-webui/elements": "19.0.0-next.31",
32
+ "@stenajs-webui/grid": "19.0.0-next.31",
33
33
  "@types/zipcelx": "^1.5.0",
34
34
  "clipboard-polyfill": "^3.0.2",
35
35
  "date-fns": "2.26.0",
@@ -55,5 +55,5 @@
55
55
  "files": [
56
56
  "dist"
57
57
  ],
58
- "gitHead": "c99eaa208caff2d6dc5b095915fdd1a32b292fa0"
58
+ "gitHead": "79122016637f311c79d894e1ae31c25a9fc9e51d"
59
59
  }