@stonecrop/atable 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atable.js","sources":["../../utilities/dist/utilities.js","../src/components/ACell.vue","../src/components/AExpansionRow.vue","../src/components/ARow.vue","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../src/components/index.ts","../src/components/ATableHeader.vue","../src/components/ATableModal.vue","../src/components/ATable.vue","../src/index.ts"],"sourcesContent":["import { unref as Q, getCurrentScope as U, onScopeDispose as K, ref as B, watch as D, onMounted as W, onBeforeUnmount as V } from \"vue\";\nvar v;\nconst M = typeof window < \"u\", F = (e) => typeof e == \"string\", j = () => {\n};\nM && ((v = window == null ? void 0 : window.navigator) != null && v.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nfunction H(e) {\n return typeof e == \"function\" ? e() : Q(e);\n}\nfunction q(e) {\n return e;\n}\nfunction G(e) {\n return U() ? (K(e), !0) : !1;\n}\nfunction y(e) {\n var t;\n const r = H(e);\n return (t = r == null ? void 0 : r.$el) != null ? t : r;\n}\nconst N = M ? window : void 0;\nfunction z(...e) {\n let t, r, n, o;\n if (F(e[0]) || Array.isArray(e[0]) ? ([r, n, o] = e, t = N) : [t, r, n, o] = e, !t)\n return j;\n Array.isArray(r) || (r = [r]), Array.isArray(n) || (n = [n]);\n const l = [], s = () => {\n l.forEach((c) => c()), l.length = 0;\n }, a = (c, g, p, i) => (c.addEventListener(g, p, i), () => c.removeEventListener(g, p, i)), C = D(() => [y(t), H(o)], ([c, g]) => {\n s(), c && l.push(...r.flatMap((p) => n.map((i) => a(c, p, i, g))));\n }, { immediate: !0, flush: \"post\" }), d = () => {\n C(), s();\n };\n return G(d), d;\n}\nconst O = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {}, T = \"__vueuse_ssr_handlers__\";\nO[T] = O[T] || {};\nfunction J(e, { window: t = N, scrollTarget: r } = {}) {\n const n = B(!1), o = () => {\n if (!t)\n return;\n const l = t.document, s = y(e);\n if (!s)\n n.value = !1;\n else {\n const a = s.getBoundingClientRect();\n n.value = a.top <= (t.innerHeight || l.documentElement.clientHeight) && a.left <= (t.innerWidth || l.documentElement.clientWidth) && a.bottom >= 0 && a.right >= 0;\n }\n };\n return D(() => y(e), () => o(), { immediate: !0, flush: \"post\" }), t && z(r || t, \"scroll\", o, {\n capture: !1,\n passive: !0\n }), n;\n}\nvar P;\n(function(e) {\n e.UP = \"UP\", e.RIGHT = \"RIGHT\", e.DOWN = \"DOWN\", e.LEFT = \"LEFT\", e.NONE = \"NONE\";\n})(P || (P = {}));\nvar X = Object.defineProperty, I = Object.getOwnPropertySymbols, Y = Object.prototype.hasOwnProperty, Z = Object.prototype.propertyIsEnumerable, _ = (e, t, r) => t in e ? X(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, ee = (e, t) => {\n for (var r in t || (t = {}))\n Y.call(t, r) && _(e, r, t[r]);\n if (I)\n for (var r of I(t))\n Z.call(t, r) && _(e, r, t[r]);\n return e;\n};\nconst te = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nee({\n linear: q\n}, te);\nconst f = (e) => {\n let t = J(e).value;\n return t = t && e.offsetHeight > 0, t;\n}, u = (e) => e.tabIndex >= 0, A = (e) => {\n const t = e.target;\n return E(t);\n}, E = (e) => {\n var r;\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = (r = e.parentElement) == null ? void 0 : r.previousElementSibling;\n if (n) {\n const l = Array.from(n.children)[e.cellIndex];\n l && (t = l);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.previousElementSibling;\n n && (t = n);\n }\n return t && (!u(t) || !f(t)) ? E(t) : t;\n}, ne = (e) => {\n var n;\n const t = e.target;\n let r;\n if (t instanceof HTMLTableCellElement) {\n const o = (n = t.parentElement) == null ? void 0 : n.parentElement;\n if (o) {\n const s = o.firstElementChild.children[t.cellIndex];\n s && (r = s);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const l = o.firstElementChild;\n l && (r = l);\n }\n }\n return r && (!u(r) || !f(r)) ? w(r) : r;\n}, x = (e) => {\n const t = e.target;\n return w(t);\n}, w = (e) => {\n var r;\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = (r = e.parentElement) == null ? void 0 : r.nextElementSibling;\n if (n) {\n const l = Array.from(n.children)[e.cellIndex];\n l && (t = l);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.nextElementSibling;\n n && (t = n);\n }\n return t && (!u(t) || !f(t)) ? w(t) : t;\n}, re = (e) => {\n var n;\n const t = e.target;\n let r;\n if (t instanceof HTMLTableCellElement) {\n const o = (n = t.parentElement) == null ? void 0 : n.parentElement;\n if (o) {\n const s = o.lastElementChild.children[t.cellIndex];\n s && (r = s);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const l = o.lastElementChild;\n l && (r = l);\n }\n }\n return r && (!u(r) || !f(r)) ? E(r) : r;\n}, k = (e) => {\n const t = e.target;\n return h(t);\n}, h = (e) => {\n var r;\n let t;\n if (e.previousElementSibling)\n t = e.previousElementSibling;\n else {\n const n = (r = e.parentElement) == null ? void 0 : r.previousElementSibling;\n t = n == null ? void 0 : n.lastElementChild;\n }\n return t && (!u(t) || !f(t)) ? h(t) : t;\n}, S = (e) => {\n const t = e.target;\n return b(t);\n}, b = (e) => {\n var r;\n let t;\n if (e.nextElementSibling)\n t = e.nextElementSibling;\n else {\n const n = (r = e.parentElement) == null ? void 0 : r.nextElementSibling;\n t = n == null ? void 0 : n.firstElementChild;\n }\n return t && (!u(t) || !f(t)) ? b(t) : t;\n}, L = (e) => {\n const n = e.target.parentElement.firstElementChild;\n return n && (!u(n) || !f(n)) ? b(n) : n;\n}, R = (e) => {\n const n = e.target.parentElement.lastElementChild;\n return n && (!u(n) || !f(n)) ? h(n) : n;\n}, m = [\"alt\", \"control\", \"shift\", \"meta\"], oe = {\n ArrowUp: \"up\",\n ArrowDown: \"down\",\n ArrowLeft: \"left\",\n ArrowRight: \"right\"\n}, le = {\n \"keydown.up\": (e) => {\n const t = A(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.down\": (e) => {\n const t = x(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.left\": (e) => {\n const t = k(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.right\": (e) => {\n const t = S(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.control.up\": (e) => {\n const t = ne(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.down\": (e) => {\n const t = re(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.left\": (e) => {\n const t = L(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.right\": (e) => {\n const t = R(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.end\": (e) => {\n const t = R(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const r = x(e);\n r && r.focus();\n }\n },\n \"keydown.shift.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const r = A(e);\n r && r.focus();\n }\n },\n \"keydown.home\": (e) => {\n const t = L(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.tab\": (e) => {\n const t = S(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.shift.tab\": (e) => {\n const t = k(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n }\n};\nfunction ie(e) {\n const t = (n) => {\n let o = null;\n n.parent && (typeof n.parent == \"string\" ? o = document.querySelector(n.parent) : n.parent instanceof Element ? o = n.parent : o = n.parent.value);\n let l = [];\n if (n.selectors)\n if (typeof n.selectors == \"string\")\n l = o ? Array.from(o.querySelectorAll(n.selectors)) : Array.from(document.querySelectorAll(n.selectors));\n else if (n.selectors instanceof Element)\n l.push(n.selectors);\n else if (Array.isArray(n.selectors.value))\n for (const s of n.selectors.value)\n s instanceof Element ? l.push(s) : l.push(s.$el);\n else\n l.push(n.selectors.value);\n else\n l = Array.from(o.children).filter((a) => u(a) && f(a));\n return l;\n }, r = (n) => (o) => {\n const l = oe[o.key] || o.key.toLowerCase();\n if (m.includes(l))\n return;\n const s = n.handlers || le;\n for (const a of Object.keys(s)) {\n const [C, ...d] = a.split(\".\");\n if (C === \"keydown\" && d.includes(l)) {\n const c = s[a], g = d.filter((i) => m.includes(i)), p = m.some((i) => {\n const $ = i.charAt(0).toUpperCase() + i.slice(1);\n return o.getModifierState($);\n });\n if (g.length > 0) {\n if (p) {\n for (const i of m)\n if (d.includes(i)) {\n const $ = i.charAt(0).toUpperCase() + i.slice(1);\n o.getModifierState($) && c(o);\n }\n }\n } else\n p || c(o);\n }\n }\n };\n W(() => {\n for (const n of e) {\n const o = t(n);\n for (const l of o)\n l.addEventListener(\"keydown\", r(n));\n }\n }), V(() => {\n for (const n of e) {\n const o = t(n);\n for (const l of o)\n l.removeEventListener(\"keydown\", r(n));\n }\n });\n}\nfunction ae(e) {\n}\nexport {\n le as defaultKeypressHandlers,\n ae as install,\n ie as useKeyboardNav\n};\n//# sourceMappingURL=utilities.js.map\n","<template>\n\t<td\n\t\tref=\"cell\"\n\t\t:data-colindex=\"colIndex\"\n\t\t:data-rowindex=\"rowIndex\"\n\t\t:data-editable=\"tableData.columns[colIndex].edit\"\n\t\t:contenteditable=\"tableData.columns[colIndex].edit\"\n\t\t:tabindex=\"tabIndex\"\n\t\t:spellcheck=\"false\"\n\t\t:style=\"cellStyle\"\n\t\t@focus=\"onFocus\"\n\t\t@paste=\"onChange\"\n\t\t@blur=\"onChange\"\n\t\t@input=\"onChange\"\n\t\t@click=\"handleInput\"\n\t\t@mousedown=\"handleInput\">\n\t\t<component\n\t\t\tv-if=\"tableData.columns[colIndex].cellComponent\"\n\t\t\t:is=\"tableData.columns[colIndex].cellComponent\"\n\t\t\t:value=\"displayValue\"\n\t\t\tv-bind=\"tableData.columns[colIndex].cellComponentProps\">\n\t\t</component>\n\t\t<span v-else>{{ displayValue }}</span>\n\t</td>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, CSSProperties, inject, ref } from 'vue'\n\nimport { defaultKeypressHandlers, useKeyboardNav } from '@stonecrop/utilities'\nimport TableDataStore from '.'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tcolIndex: number\n\t\trowIndex: number\n\t\ttableid: string\n\t\taddNavigation?: boolean | object\n\t\ttabIndex?: number\n\t\tclickHandler?: (event: MouseEvent) => void\n\t}>(),\n\t{\n\t\ttabIndex: 0,\n\t\taddNavigation: true,\n\t}\n)\n\nconst tableData = inject<TableDataStore>(props.tableid)\nconst cell = ref<HTMLTableCellElement>(null)\n\nlet cellModified = ref(false)\nconst displayValue = computed(() => {\n\tconst data = tableData.cellData<any>(props.colIndex, props.rowIndex)\n\tif (tableData.columns[props.colIndex].format) {\n\t\tconst format = tableData.columns[props.colIndex].format\n\t\tif (typeof format === 'function') {\n\t\t\treturn format(data)\n\t\t} else if (typeof format === 'string') {\n\t\t\t// parse format function from string\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-implied-eval\n\t\t\tconst formatFn: (args: any) => any = Function(`\"use strict\";return (${format})`)()\n\t\t\treturn formatFn(data)\n\t\t} else {\n\t\t\treturn data\n\t\t}\n\t} else {\n\t\treturn data\n\t}\n})\n\nconst handleInput = (event: MouseEvent) => {\n\t// Not sure if click handler is needed anymore?\n\tif (props.clickHandler) {\n\t\tprops.clickHandler(event)\n\t\treturn\n\t}\n\n\tif (tableData.columns[props.colIndex].mask) {\n\t\t// TODO: add masking to cell values\n\t\t// tableData.columns[props.colIndex].mask(event)\n\t}\n\n\tif (tableData.columns[props.colIndex].modalComponent) {\n\t\tconst domRect = cell.value.getBoundingClientRect()\n\t\ttableData.modal.visible = true\n\t\ttableData.modal.colIndex = props.colIndex\n\t\ttableData.modal.rowIndex = props.rowIndex\n\t\ttableData.modal.parent = cell.value\n\t\ttableData.modal.top = domRect.top + domRect.height\n\t\ttableData.modal.left = domRect.left\n\t\ttableData.modal.width = cellWidth.value\n\t\ttableData.modal.component = tableData.columns[props.colIndex].modalComponent\n\t\ttableData.modal.componentProps = tableData.columns[props.colIndex].modalComponentProps\n\t}\n}\n\nif (props.addNavigation) {\n\tlet handlers = {\n\t\t...defaultKeypressHandlers,\n\t\t...{\n\t\t\t'keydown.f2': handleInput,\n\t\t\t'keydown.alt.up': handleInput,\n\t\t\t'keydown.alt.down': handleInput,\n\t\t\t'keydown.alt.left': handleInput,\n\t\t\t'keydown.alt.right': handleInput,\n\t\t},\n\t}\n\n\tif (typeof props.addNavigation === 'object') {\n\t\thandlers = {\n\t\t\t...handlers,\n\t\t\t...props.addNavigation,\n\t\t}\n\t}\n\n\tuseKeyboardNav([\n\t\t{\n\t\t\tselectors: cell,\n\t\t\thandlers: handlers,\n\t\t},\n\t])\n}\n\n// const updateData = (event: Event) => {\n// \tif (event) {\n// \t\t// custom components need to handle their own updateData, this is the default\n// \t\tif (!tableData.columns[props.colIndex].component) {\n// \t\t\ttableData.setCellData(props.rowIndex, props.colIndex, cell.value.innerHTML)\n// \t\t}\n// \t\tcellModified.value = true\n// \t}\n// }\n\nconst textAlign = computed(() => {\n\treturn tableData.columns[props.colIndex].align || 'center'\n})\n\nconst cellWidth = computed(() => {\n\treturn tableData.columns[props.colIndex].width || '40ch'\n})\n\nlet currentData = ''\nconst onFocus = () => {\n\tif (cell.value) {\n\t\tcurrentData = cell.value.innerText\n\t}\n}\n\nconst onChange = () => {\n\tif (cell.value) {\n\t\tif (cell.value.innerHTML !== currentData) {\n\t\t\tcurrentData = cell.value.innerText\n\t\t\tcell.value.dispatchEvent(new Event('change'))\n\t\t\tcellModified.value = true // set display instead\n\t\t\tif (!tableData.columns[props.colIndex].format) {\n\t\t\t\t// TODO: need to setup reverse format function\n\t\t\t\ttableData.setCellData(props.rowIndex, props.colIndex, currentData)\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst getIndent = (colKey: number, indent: number) => {\n\tif (indent && colKey === 0 && indent > 0) {\n\t\treturn `${indent}ch`\n\t} else {\n\t\treturn 'inherit'\n\t}\n}\n\nconst cellStyle: CSSProperties = {\n\ttextAlign: textAlign.value,\n\twidth: cellWidth.value,\n\tbackgroundColor: !cellModified.value ? 'inherit' : 'var(--cell-modified-color)',\n\tfontWeight: !cellModified.value ? 'inherit' : 'bold',\n\tpaddingLeft: getIndent(props.colIndex, tableData.display[props.rowIndex]?.indent),\n}\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\ntd {\n\tborder-radius: 0px;\n\tbox-sizing: border-box;\n\tmargin: 0px;\n\toutline: none;\n\tbox-shadow: none;\n\tcolor: var(--cell-text-color);\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 0.5ch !important;\n\tpadding-right: 0.5ch;\n\n\tpadding-top: var(--atable-row-padding);\n\tpadding-bottom: var(--atable-row-padding);\n\n\tborder-spacing: 0px;\n\tborder-collapse: collapse;\n}\n\ntd:focus,\ntd:focus-within {\n\tbackground-color: var(--focus-cell-background);\n\toutline-width: 2px;\n\toutline-style: solid;\n\toutline-color: var(--focus-cell-outline);\n\tbox-shadow: none;\n\toverflow: hidden;\n\tmin-height: 1.15em;\n\tmax-height: 1.15em;\n\toverflow: hidden;\n}\n</style>\n","<template>\n\t<tr v-bind=\"$attrs\" ref=\"rowEl\" :tabindex=\"tabIndex\" class=\"expandable-row\">\n\t\t<td :tabIndex=\"-1\" @click=\"tableData.toggleRowExpand(rowIndex)\" class=\"row-index\">\n\t\t\t{{ getRowExpandSymbol() }}\n\t\t</td>\n\t\t<slot name=\"row\" />\n\t</tr>\n\t<tr v-if=\"tableData.display[props.rowIndex].expanded\" ref=\"rowExpanded\" :tabindex=\"tabIndex\" class=\"expanded-row\">\n\t\t<td :tabIndex=\"-1\" :colspan=\"tableData.columns.length + 1\" class=\"expanded-row-content\">\n\t\t\t<slot name=\"content\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script setup lang=\"ts\">\nimport { TableRow } from 'types'\nimport { inject, ref } from 'vue'\n\nimport { useKeyboardNav } from '@stonecrop/utilities'\n\nimport TableDataStore from '.'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\trow: TableRow\n\t\trowIndex: number\n\t\ttableid: string\n\t\ttabIndex?: number\n\t\taddNavigation?: {\n\t\t\t[key: string]: (ev: KeyboardEvent) => any\n\t\t}\n\t}>(),\n\t{\n\t\ttabIndex: -1,\n\t}\n)\n\nconst tableData = inject<TableDataStore>(props.tableid)\nconst rowEl = ref<HTMLTableRowElement>(null)\nconst rowExpanded = ref<HTMLDivElement>(null)\n\nconst getRowExpandSymbol = () => {\n\treturn tableData.display[props.rowIndex].expanded ? '▼' : '►'\n}\n\nif (props.addNavigation !== undefined) {\n\tconst keyboardNav = Object.assign({}, props.addNavigation)\n\tkeyboardNav['keydown.control.g'] = (event: KeyboardEvent) => {\n\t\tevent.stopPropagation()\n\t\tevent.preventDefault()\n\t\ttableData.toggleRowExpand(props.rowIndex)\n\t}\n\n\tuseKeyboardNav([\n\t\t{\n\t\t\tselectors: rowEl,\n\t\t\thandlers: keyboardNav,\n\t\t},\n\t])\n}\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\n.row-index {\n\tcolor: var(--header-text-color);\n\tfont-weight: bold;\n\ttext-align: center;\n\tuser-select: none;\n\twidth: 2ch;\n}\n\n.expandable-row {\n\tborder-top: 1px solid var(--row-border-color);\n\theight: var(--atable-row-height);\n}\n\n.expanded-row {\n\tborder-bottom: 1px solid var(--row-border-color);\n\tborder-top: 1px solid var(--row-border-color);\n}\n\n.expanded-row-content {\n\tborder-bottom: 1px solid var(--row-border-color);\n\tborder-top: 1px solid var(--row-border-color);\n\tpadding: 1.5rem;\n}\n</style>\n","<template>\n\t<tr ref=\"rowEl\" :tabindex=\"tabIndex\" v-show=\"rowVisible()\" class=\"table-row\">\n\t\t<!-- render numbered/tree view index -->\n\t\t<td v-if=\"tableData.config.view === 'list'\" :tabIndex=\"-1\" class=\"list-index\">\n\t\t\t{{ rowIndex + 1 }}\n\t\t</td>\n\t\t<td\n\t\t\tv-else-if=\"tableData.config.view === 'tree'\"\n\t\t\t:tabIndex=\"-1\"\n\t\t\tclass=\"tree-index\"\n\t\t\t@click=\"toggleRowExpand(rowIndex)\">\n\t\t\t{{ getRowExpandSymbol() }}\n\t\t</td>\n\t\t<slot v-else name=\"indexCell\"></slot>\n\n\t\t<!-- render cell content -->\n\t\t<slot></slot>\n\t</tr>\n</template>\n\n<script setup lang=\"ts\">\nimport { TableRow } from 'types'\nimport { inject, ref } from 'vue'\nimport { useKeyboardNav } from '@stonecrop/utilities'\n\nimport TableDataStore from '.'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\trow: TableRow\n\t\trowIndex: number\n\t\ttableid: string\n\t\ttabIndex?: number\n\t\taddNavigation?: object\n\t}>(),\n\t{\n\t\ttabIndex: -1,\n\t}\n)\n\nconst tableData = inject<TableDataStore>(props.tableid)\nconst rowEl = ref<HTMLTableRowElement>(null)\nconst numberedRowWidth = tableData.numberedRowWidth.value\n\nconst getRowExpandSymbol = () => {\n\tif (tableData.config.view !== 'tree') {\n\t\treturn ''\n\t}\n\n\tif (tableData.display[props.rowIndex].isRoot) {\n\t\tif (tableData.display[props.rowIndex].childrenOpen) {\n\t\t\treturn '-'\n\t\t} else {\n\t\t\treturn '+'\n\t\t}\n\t}\n\n\tif (tableData.display[props.rowIndex].isParent) {\n\t\tif (tableData.display[props.rowIndex].childrenOpen) {\n\t\t\treturn '-'\n\t\t} else {\n\t\t\treturn '+'\n\t\t}\n\t} else {\n\t\treturn ''\n\t}\n}\n\nconst rowVisible = () => {\n\treturn (\n\t\ttableData.config.view !== 'tree' ||\n\t\ttableData.display[props.rowIndex].isRoot ||\n\t\ttableData.display[props.rowIndex].open\n\t)\n}\n\nconst toggleRowExpand = (rowIndex: number) => {\n\ttableData.toggleRowExpand(rowIndex)\n}\n\nif (props.addNavigation) {\n\tuseKeyboardNav([\n\t\t{\n\t\t\tselectors: rowEl,\n\t\t\thandlers: props.addNavigation,\n\t\t},\n\t])\n}\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\n.table-row {\n\tborder-top: 1px solid var(--row-border-color);\n\theight: var(--atable-row-height);\n}\n\n.list-index {\n\tcolor: var(--header-text-color);\n\tfont-weight: bold;\n\tpadding-left: var(--atable-row-padding);\n\tpadding-right: 1em;\n\ttext-align: center;\n\tuser-select: none;\n\twidth: v-bind(numberedRowWidth);\n\tmax-width: v-bind(numberedRowWidth);\n}\n\n.tree-index {\n\tcolor: var(--header-text-color);\n\tfont-weight: bold;\n\ttext-align: center;\n\tuser-select: none;\n\twidth: 2ch;\n}\n</style>\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 } from 'uuid'\nimport { computed, reactive } from 'vue'\n\nimport type { TableDisplay, TableRow, TableColumn, TableConfig, TableModal } from '../../types'\n\nexport default class TableDataStore {\n\tid: string\n\trows: TableRow[]\n\tcolumns: TableColumn[]\n\tconfig: TableConfig\n\ttable: { [key: string]: any }\n\tdisplay: TableDisplay[]\n\tmodal: TableModal\n\n\tconstructor(\n\t\tid?: string,\n\t\tcolumns?: TableColumn[],\n\t\trows?: TableRow[],\n\t\tconfig?: TableConfig,\n\t\ttable?: { [key: string]: any },\n\t\tdisplay?: TableDisplay[]\n\t) {\n\t\tthis.id = id || v4()\n\t\tthis.rows = rows\n\t\tthis.columns = reactive(columns)\n\t\tthis.config = reactive(config)\n\t\tthis.table = table || reactive(this.createTableObject())\n\t\tthis.display = this.createDisplayObject(display)\n\t\tthis.modal = reactive({ visible: false })\n\t}\n\n\tcreateTableObject() {\n\t\tconst table = {}\n\t\tfor (const [colIndex, column] of this.columns.entries()) {\n\t\t\tfor (const [rowIndex, row] of this.rows.entries()) {\n\t\t\t\ttable[`${colIndex}:${rowIndex}`] = row[column.name]\n\t\t\t}\n\t\t}\n\t\treturn table\n\t}\n\n\tcreateDisplayObject(display?: TableDisplay[]) {\n\t\tconst defaultDisplay: TableDisplay[] = [Object.assign({}, { modified: false })]\n\n\t\t// TODO: (typing) what is the type of `display` here?\n\t\tif (display) {\n\t\t\tif ('0:0' in display) {\n\t\t\t\treturn display\n\t\t\t}\n\t\t\t// else if ('default' in display) {\n\t\t\t// \t// TODO: (typing) what is the possible input here for 'default'?\n\t\t\t// \tdefaultDisplay = display.default\n\t\t\t// }\n\t\t}\n\n\t\t// TODO: (typing) is this type correct for the parent set?\n\t\tconst parents = new Set<string | number>()\n\t\tfor (let rowIndex = this.rows.length - 1; rowIndex >= 0; rowIndex--) {\n\t\t\tconst row = this.rows[rowIndex]\n\t\t\tif (row.parent) {\n\t\t\t\tparents.add(row.parent)\n\t\t\t}\n\n\t\t\tdefaultDisplay[rowIndex] = {\n\t\t\t\tchildrenOpen: false,\n\t\t\t\texpanded: false,\n\t\t\t\tindent: row.indent || null,\n\t\t\t\tisParent: parents.has(rowIndex),\n\t\t\t\tisRoot: row.parent === null || row.parent === undefined,\n\t\t\t\tmodified: false,\n\t\t\t\topen: row.parent === null || row.parent === undefined,\n\t\t\t\tparent: row.parent,\n\t\t\t}\n\t\t}\n\n\t\treturn reactive(defaultDisplay)\n\t}\n\n\tget zeroColumn() {\n\t\treturn ['list', 'tree', 'list-expansion'].includes(this.config.view)\n\t}\n\n\tget numberedRowWidth() {\n\t\treturn computed(() => {\n\t\t\treturn String(Math.ceil(this.rows.length / 100) + 1) + 'ch'\n\t\t})\n\t}\n\n\tcellData<T>(colIndex: number, rowIndex: number): T {\n\t\treturn this.table[`${colIndex}:${rowIndex}`]\n\t}\n\n\tsetCellData(rowIndex: number, colIndex: number, value: any) {\n\t\tif (this.table[`${colIndex}:${rowIndex}`] !== value) {\n\t\t\tthis.display[rowIndex].modified = true\n\t\t}\n\t\tthis.table[`${colIndex}:${rowIndex}`] = value\n\t\tconst col = this.columns[colIndex]\n\t\tthis.rows[rowIndex][col.name] = value\n\t\treturn this.table[`${colIndex}:${rowIndex}`]\n\t}\n\n\ttoggleRowExpand(rowIndex: number) {\n\t\tif (this.config.view === 'tree') {\n\t\t\tthis.display[rowIndex].childrenOpen = !this.display[rowIndex].childrenOpen\n\t\t\tfor (let index = this.rows.length - 1; index >= 0; index--) {\n\t\t\t\tif (this.display[index].parent === rowIndex) {\n\t\t\t\t\tthis.display[index].open = !this.display[index].open\n\t\t\t\t\tif (this.display[index].childrenOpen) {\n\t\t\t\t\t\tthis.toggleRowExpand(index)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.config.view === 'list-expansion') {\n\t\t\tthis.display[rowIndex].expanded = !this.display[rowIndex].expanded\n\t\t}\n\t}\n}\n","<template>\n\t<thead v-if=\"columns.length\">\n\t\t<tr class=\"atable-header-row\" tabindex=\"-1\">\n\t\t\t<th v-if=\"tableData.zeroColumn\" id=\"header-index\" />\n\t\t\t<th v-for=\"(column, colKey) in columns\" :key=\"colKey\" tabindex=\"-1\" :style=\"getHeaderCellStyle(column)\">\n\t\t\t\t<slot>{{ column.label || String.fromCharCode(colKey + 97).toUpperCase() }}</slot>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n</template>\n\n<script setup lang=\"ts\">\nimport { CSSProperties, inject } from 'vue'\n\nimport { TableColumn, TableConfig } from 'types'\nimport TableDataStore from '.'\n\nconst props = defineProps<{\n\tcolumns: TableColumn[]\n\tconfig?: TableConfig\n\ttableid?: string\n}>()\n\nconst tableData = inject<TableDataStore>(props.tableid)\n\nconst numberedRowWidth = tableData.numberedRowWidth.value\nconst getHeaderCellStyle = (column: TableColumn): CSSProperties => ({\n\tminWidth: column.width || '40ch',\n\ttextAlign: column.align || 'center',\n\twidth: tableData.config.fullWidth ? 'auto' : null,\n})\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\nthead {\n\tbackground-color: var(--gray-5);\n}\n\n#header-index {\n\twidth: v-bind(numberedRowWidth);\n\tmax-width: v-bind(numberedRowWidth);\n}\n\nth {\n\tborder-width: 0px;\n\tborder-style: solid;\n\tborder-radius: 0px;\n\tpadding-left: 0.5ch;\n\tpadding-right: 0.5ch;\n\tpadding-top: var(--atable-row-padding);\n\tpadding-bottom: var(--atable-row-padding);\n\tcolor: var(--gray-60);\n\theight: var(--atable-row-height);\n}\n\nth:focus {\n\toutline: none;\n}\n</style>\n","<template>\n\t<div ref=\"amodal\" class=\"amodal\" tabindex=\"-1\" @click=\"handleInput\" @input=\"handleInput\">\n\t\t<slot />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject } from 'vue'\n\nimport TableDataStore from '.'\n\nconst props = defineProps<{\n\tcolIndex?: number\n\trowIndex?: number\n\ttableid?: string\n}>()\n\nconst tableData = inject<TableDataStore>(props.tableid)\n\nconst handleInput = (event: Event) => {\n\tevent.stopPropagation()\n}\n\n// const cellBackgroundColor = computed(() => {\n// \tif (tableData.modal.parent) {\n// \t\tlet computedstyle = window.getComputedStyle(tableData.modal.parent)\n// \t\treturn 'blue'\n// \t} else {\n// \t\treturn 'inherit'\n// \t}\n// })\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\ndiv {\n\tz-index: 100;\n\tposition: absolute;\n\tbackground-color: var(--row-color-zebra-dark);\n\t/* margin: 0px;\n\toutline: none;\n\tbox-shadow: none;\n\tcolor: var(--cell-text-color);\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 0.5ch;\n\tpadding-right: 0.5ch;\n\tfont-size: var(--table-font-size); */\n}\n</style>\n","<template>\n\t<table class=\"atable\" :style=\"{ width: tableData.config.fullWidth ? '100%' : 'auto' }\">\n\t\t<slot name=\"header\" :data=\"tableData\">\n\t\t\t<ATableHeader :columns=\"tableData.columns\" :config=\"tableData.config\" :tableid=\"tableData.id\" />\n\t\t</slot>\n\n\t\t<tbody>\n\t\t\t<slot name=\"body\" :data=\"tableData\">\n\t\t\t\t<ARow\n\t\t\t\t\tv-for=\"(row, rowIndex) in tableData.rows\"\n\t\t\t\t\t:key=\"row.id || v4()\"\n\t\t\t\t\t:row=\"row\"\n\t\t\t\t\t:rowIndex=\"rowIndex\"\n\t\t\t\t\t:tableid=\"tableData.id\">\n\t\t\t\t\t<ACell\n\t\t\t\t\t\tv-for=\"(col, colIndex) in tableData.columns\"\n\t\t\t\t\t\t:key=\"`${colIndex}:${rowIndex}`\"\n\t\t\t\t\t\t:tableid=\"tableData.id\"\n\t\t\t\t\t\t:col=\"col\"\n\t\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t\t:rowIndex=\"rowIndex\"\n\t\t\t\t\t\t:colIndex=\"colIndex + (tableData.zeroColumn ? 0 : -1)\"\n\t\t\t\t\t\t:component=\"col.cellComponent\"\n\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\ttextAlign: col?.align || 'center',\n\t\t\t\t\t\t\tminWidth: col?.width || '40ch',\n\t\t\t\t\t\t\twidth: tableData.config.fullWidth ? 'auto' : null,\n\t\t\t\t\t\t}\" />\n\t\t\t\t</ARow>\n\t\t\t</slot>\n\t\t</tbody>\n\n\t\t<slot name=\"footer\" :data=\"tableData\" />\n\t\t<slot name=\"modal\" :data=\"tableData\">\n\t\t\t<ATableModal\n\t\t\t\tv-show=\"tableData.modal.visible\"\n\t\t\t\t:colIndex=\"tableData.modal.colIndex\"\n\t\t\t\t:rowIndex=\"tableData.modal.rowIndex\"\n\t\t\t\t:tableid=\"tableData.id\"\n\t\t\t\t:style=\"{\n\t\t\t\t\tleft: tableData.modal.left + 'px',\n\t\t\t\t\ttop: tableData.modal.top + 'px',\n\t\t\t\t\tmaxWidth: tableData.modal.width + 'px',\n\t\t\t\t}\">\n\t\t\t\t<template #default>\n\t\t\t\t\t<component\n\t\t\t\t\t\t:key=\"`${tableData.modal.rowIndex}:${tableData.modal.colIndex}`\"\n\t\t\t\t\t\t:is=\"tableData.modal.component\"\n\t\t\t\t\t\t:colIndex=\"tableData.modal.colIndex\"\n\t\t\t\t\t\t:rowIndex=\"tableData.modal.rowIndex\"\n\t\t\t\t\t\t:tableid=\"tableData.id\"\n\t\t\t\t\t\tv-bind=\"tableData.modal.componentProps\" />\n\t\t\t\t</template>\n\t\t\t</ATableModal>\n\t\t</slot>\n\t</table>\n</template>\n\n<script setup lang=\"ts\">\nimport { v4 } from 'uuid'\nimport { nextTick, provide, watch } from 'vue'\n\nimport { TableColumn, TableConfig, TableRow } from 'types'\nimport TableDataStore from '.'\nimport ACell from '@/components/ACell.vue'\nimport ARow from '@/components/ARow.vue'\nimport ATableHeader from '@/components/ATableHeader.vue'\nimport ATableModal from '@/components/ATableModal.vue'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tid?: string\n\t\tmodelValue: TableRow[]\n\t\tcolumns: TableColumn[]\n\t\trows?: TableRow[]\n\t\tconfig?: TableConfig\n\t\ttableid?: string\n\t}>(),\n\t{\n\t\trows: () => [],\n\t\tconfig: () => new Object(),\n\t}\n)\n\nconst emit = defineEmits(['update:modelValue'])\n\nlet rows = props.modelValue ? props.modelValue : props.rows\n\nlet tableData = new TableDataStore(props.id, props.columns, rows, props.config)\nprovide(tableData.id, tableData)\n\nwatch(\n\t() => tableData.rows,\n\t(newValue, oldValue) => {\n\t\temit('update:modelValue', newValue)\n\t},\n\t{ deep: true }\n)\n\nconst formatCell = (event?: KeyboardEvent, column?: TableColumn, cellData?: any) => {\n\tlet colIndex: number\n\tconst target = event?.target as HTMLTableCellElement\n\tif (event) {\n\t\tcolIndex = target.cellIndex + (tableData.zeroColumn ? -1 : 0)\n\t} else if (column && cellData) {\n\t\tcolIndex = tableData.columns.indexOf(column)\n\t}\n\n\tif (!column && 'format' in tableData.columns[colIndex]) {\n\t\t// TODO: (utils) create helper to extract format from string\n\t\tconst format = tableData.columns[colIndex].format\n\t\tif (typeof format === 'function') {\n\t\t\treturn format(target.innerHTML)\n\t\t} else if (typeof format === 'string') {\n\t\t\t// parse format function from string\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-implied-eval\n\t\t\tconst formatFn: (args: any) => any = Function(`\"use strict\";return (${format})`)()\n\t\t\treturn formatFn(target.innerHTML)\n\t\t} else {\n\t\t\treturn target.innerHTML\n\t\t}\n\t} else if (cellData && 'format' in column) {\n\t\tconst format = column.format\n\t\tif (typeof format === 'function') {\n\t\t\treturn format(cellData)\n\t\t} else if (typeof format === 'string') {\n\t\t\t// parse format function from string\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-implied-eval\n\t\t\tconst formatFn: (args: any) => any = Function(`\"use strict\";return (${format})`)()\n\t\t\treturn formatFn(cellData)\n\t\t} else {\n\t\t\treturn cellData\n\t\t}\n\t} else if (cellData && column.type.toLowerCase() in ['int', 'decimal', 'float', 'number', 'percent']) {\n\t\treturn cellData\n\t\t// TODO: number formatting\n\t} else {\n\t\treturn cellData\n\t}\n}\n\nconst moveCursorToEnd = (target: HTMLElement) => {\n\ttarget.focus()\n\tdocument.execCommand('selectAll', false, null)\n\tdocument.getSelection().collapseToEnd()\n}\n\nconst clickOutside = (event: MouseEvent) => {\n\tif (!tableData.modal.parent?.contains(event.target as HTMLElement)) {\n\t\tif (tableData.modal.visible) {\n\t\t\t// call set data\n\t\t\ttableData.modal.visible = false\n\t\t}\n\t}\n}\n\nwindow.addEventListener('click', clickOutside)\nwindow.addEventListener('keydown', (event: KeyboardEvent) => {\n\tif (event.key === 'Escape') {\n\t\tif (tableData.modal.visible) {\n\t\t\ttableData.modal.visible = false\n\n\t\t\t// focus on the parent cell again\n\t\t\tconst $parent = tableData.modal.parent\n\t\t\tif ($parent) {\n\t\t\t\t// wait for the modal to close\n\t\t\t\tvoid nextTick().then(() => {\n\t\t\t\t\t// for some reason, the parent is not immediately visible in the DOM;\n\t\t\t\t\t// re-fetching the cell to add focus instead\n\t\t\t\t\tconst rowIndex = $parent.dataset.rowindex\n\t\t\t\t\tconst colIndex = $parent.dataset.colindex\n\t\t\t\t\tconst $parentCell = document.querySelectorAll(`[data-rowindex='${rowIndex}'][data-colindex='${colIndex}']`)\n\t\t\t\t\tif ($parentCell) {\n\t\t\t\t\t\t;($parentCell[0] as HTMLTableCellElement).focus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n})\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\n\ntable {\n\tdisplay: table;\n\tborder-collapse: collapse;\n\tcaret-color: var(--brand-color);\n}\n\ntable.atable,\n.atable {\n\tfont-family: var(--atable-font-family);\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-size: var(--table-font-size);\n\tborder-collapse: collapse;\n}\n\nth {\n\tbox-sizing: border-box;\n\tbackground-color: var(--brand-color);\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: var(--header-border-color);\n\tborder-radius: 0px;\n\tcolor: var(--header-text-color);\n}\n</style>\n","import { App } from 'vue'\n\nimport ACell from '@/components/ACell.vue'\nimport AExpansionRow from '@/components/AExpansionRow.vue'\nimport ARow from '@/components/ARow.vue'\nimport ATable from '@/components/ATable.vue'\nimport ATableHeader from '@/components/ATableHeader.vue'\nimport ATableModal from '@/components/ATableModal.vue'\nimport TableDataStore from './components'\n\nfunction install(app: App /* options */) {\n\tapp.component('ACell', ACell)\n\tapp.component('AExpansionRow', AExpansionRow)\n\tapp.component('ARow', ARow)\n\tapp.component('ATable', ATable)\n\tapp.component('ATableHeader', ATableHeader)\n\tapp.component('ATableModal', ATableModal)\n}\n\nexport { install, ACell, AExpansionRow, ARow, ATable, ATableHeader, ATableModal, TableDataStore }\n"],"names":["v","M","F","e","j","H","Q","q","G","U","K","y","t","r","N","z","n","o","c","a","g","p","i","C","D","d","O","T","J","B","P","X","I","Y","Z","_","ee","te","f","u","A","E","l","ne","s","w","x","re","k","h","S","b","L","R","m","oe","le","ie","$","W","V","props","__props","tableData","inject","cell","ref","cellModified","displayValue","computed","data","format","handleInput","event","domRect","cellWidth","handlers","defaultKeypressHandlers","useKeyboardNav","textAlign","currentData","onFocus","onChange","getIndent","colKey","indent","cellStyle","_a","rowEl","rowExpanded","getRowExpandSymbol","keyboardNav","numberedRowWidth","rowVisible","toggleRowExpand","rowIndex","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","arr","offset","randomUUID","native","v4","options","buf","rnds","TableDataStore","id","columns","rows","config","table","display","reactive","colIndex","column","row","defaultDisplay","parents","value","col","index","getHeaderCellStyle","emit","__emit","provide","watch","newValue","oldValue","clickOutside","$parent","nextTick","$parentCell","install","app","ACell","AExpansionRow","ARow","ATable","ATableHeader","ATableModal"],"mappings":"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","x_google_ignoreList":[4,5,6,7]}
@@ -0,0 +1,2 @@
1
+ (function(h,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(h=typeof globalThis<"u"?globalThis:h||self,n(h["@stonecrop/atable"]={},h.Vue))})(this,function(h,n){"use strict";var N;const H=typeof window<"u",ne=t=>typeof t=="string",oe=()=>{};H&&(N=window==null?void 0:window.navigator)!=null&&N.userAgent&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function L(t){return typeof t=="function"?t():n.unref(t)}function le(t){return t}function re(t){return n.getCurrentScope()?(n.onScopeDispose(t),!0):!1}function C(t){var e;const o=L(t);return(e=o==null?void 0:o.$el)!=null?e:o}const V=H?window:void 0;function ae(...t){let e,o,l,a;if(ne(t[0])||Array.isArray(t[0])?([o,l,a]=t,e=V):[e,o,l,a]=t,!e)return oe;Array.isArray(o)||(o=[o]),Array.isArray(l)||(l=[l]);const r=[],i=()=>{r.forEach(u=>u()),r.length=0},s=(u,c,b,w)=>(u.addEventListener(c,b,w),()=>u.removeEventListener(c,b,w)),d=n.watch(()=>[C(e),L(a)],([u,c])=>{i(),u&&r.push(...o.flatMap(b=>l.map(w=>s(u,b,w,c))))},{immediate:!0,flush:"post"}),f=()=>{d(),i()};return re(f),f}const M=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},j="__vueuse_ssr_handlers__";M[j]=M[j]||{};function ie(t,{window:e=V,scrollTarget:o}={}){const l=n.ref(!1),a=()=>{if(!e)return;const r=e.document,i=C(t);if(!i)l.value=!1;else{const s=i.getBoundingClientRect();l.value=s.top<=(e.innerHeight||r.documentElement.clientHeight)&&s.left<=(e.innerWidth||r.documentElement.clientWidth)&&s.bottom>=0&&s.right>=0}};return n.watch(()=>C(t),()=>a(),{immediate:!0,flush:"post"}),e&&ae(o||e,"scroll",a,{capture:!1,passive:!0}),l}var U;(function(t){t.UP="UP",t.RIGHT="RIGHT",t.DOWN="DOWN",t.LEFT="LEFT",t.NONE="NONE"})(U||(U={}));var se=Object.defineProperty,W=Object.getOwnPropertySymbols,de=Object.prototype.hasOwnProperty,ce=Object.prototype.propertyIsEnumerable,F=(t,e,o)=>e in t?se(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,pe=(t,e)=>{for(var o in e||(e={}))de.call(e,o)&&F(t,o,e[o]);if(W)for(var o of W(e))ce.call(e,o)&&F(t,o,e[o]);return t};pe({linear:le},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});const y=t=>{let e=ie(t).value;return e=e&&t.offsetHeight>0,e},x=t=>t.tabIndex>=0,Q=t=>{const e=t.target;return A(e)},A=t=>{var e;let o;if(t instanceof HTMLTableCellElement){const l=(e=t.parentElement)==null?void 0:e.previousElementSibling;if(l){const a=Array.from(l.children)[t.cellIndex];a&&(o=a)}}else if(t instanceof HTMLTableRowElement){const l=t.previousElementSibling;l&&(o=l)}return o&&(!x(o)||!y(o))?A(o):o},fe=t=>{var e;const o=t.target;let l;if(o instanceof HTMLTableCellElement){const a=(e=o.parentElement)==null?void 0:e.parentElement;if(a){const r=a.firstElementChild.children[o.cellIndex];r&&(l=r)}}else if(o instanceof HTMLTableRowElement){const a=o.parentElement;if(a){const r=a.firstElementChild;r&&(l=r)}}return l&&(!x(l)||!y(l))?S(l):l},z=t=>{const e=t.target;return S(e)},S=t=>{var e;let o;if(t instanceof HTMLTableCellElement){const l=(e=t.parentElement)==null?void 0:e.nextElementSibling;if(l){const a=Array.from(l.children)[t.cellIndex];a&&(o=a)}}else if(t instanceof HTMLTableRowElement){const l=t.nextElementSibling;l&&(o=l)}return o&&(!x(o)||!y(o))?S(o):o},ue=t=>{var e;const o=t.target;let l;if(o instanceof HTMLTableCellElement){const a=(e=o.parentElement)==null?void 0:e.parentElement;if(a){const r=a.lastElementChild.children[o.cellIndex];r&&(l=r)}}else if(o instanceof HTMLTableRowElement){const a=o.parentElement;if(a){const r=a.lastElementChild;r&&(l=r)}}return l&&(!x(l)||!y(l))?A(l):l},q=t=>{const e=t.target;return T(e)},T=t=>{var e;let o;if(t.previousElementSibling)o=t.previousElementSibling;else{const l=(e=t.parentElement)==null?void 0:e.previousElementSibling;o=l==null?void 0:l.lastElementChild}return o&&(!x(o)||!y(o))?T(o):o},G=t=>{const e=t.target;return D(e)},D=t=>{var e;let o;if(t.nextElementSibling)o=t.nextElementSibling;else{const l=(e=t.parentElement)==null?void 0:e.nextElementSibling;o=l==null?void 0:l.firstElementChild}return o&&(!x(o)||!y(o))?D(o):o},J=t=>{const e=t.target.parentElement.firstElementChild;return e&&(!x(e)||!y(e))?D(e):e},X=t=>{const e=t.target.parentElement.lastElementChild;return e&&(!x(e)||!y(e))?T(e):e},E=["alt","control","shift","meta"],me={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right"},Y={"keydown.up":t=>{const e=Q(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.down":t=>{const e=z(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.left":t=>{const e=q(t);t.preventDefault(),t.stopPropagation(),e&&e.focus()},"keydown.right":t=>{const e=G(t);t.preventDefault(),t.stopPropagation(),e&&e.focus()},"keydown.control.up":t=>{const e=fe(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.down":t=>{const e=ue(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.left":t=>{const e=J(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.control.right":t=>{const e=X(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.end":t=>{const e=X(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.enter":t=>{if(t.target instanceof HTMLTableCellElement){t.preventDefault(),t.stopPropagation();const e=z(t);e&&e.focus()}},"keydown.shift.enter":t=>{if(t.target instanceof HTMLTableCellElement){t.preventDefault(),t.stopPropagation();const e=Q(t);e&&e.focus()}},"keydown.home":t=>{const e=J(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.tab":t=>{const e=G(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())},"keydown.shift.tab":t=>{const e=q(t);e&&(t.preventDefault(),t.stopPropagation(),e.focus())}};function $(t){const e=l=>{let a=null;l.parent&&(typeof l.parent=="string"?a=document.querySelector(l.parent):l.parent instanceof Element?a=l.parent:a=l.parent.value);let r=[];if(l.selectors)if(typeof l.selectors=="string")r=a?Array.from(a.querySelectorAll(l.selectors)):Array.from(document.querySelectorAll(l.selectors));else if(l.selectors instanceof Element)r.push(l.selectors);else if(Array.isArray(l.selectors.value))for(const i of l.selectors.value)i instanceof Element?r.push(i):r.push(i.$el);else r.push(l.selectors.value);else r=Array.from(a.children).filter(i=>x(i)&&y(i));return r},o=l=>a=>{const r=me[a.key]||a.key.toLowerCase();if(E.includes(r))return;const i=l.handlers||Y;for(const s of Object.keys(i)){const[d,...f]=s.split(".");if(d==="keydown"&&f.includes(r)){const u=i[s],c=f.filter(w=>E.includes(w)),b=E.some(w=>{const I=w.charAt(0).toUpperCase()+w.slice(1);return a.getModifierState(I)});if(c.length>0){if(b){for(const w of E)if(f.includes(w)){const I=w.charAt(0).toUpperCase()+w.slice(1);a.getModifierState(I)&&u(a)}}}else b||u(a)}}};n.onMounted(()=>{for(const l of t){const a=e(l);for(const r of a)r.addEventListener("keydown",o(l))}}),n.onBeforeUnmount(()=>{for(const l of t){const a=e(l);for(const r of a)r.removeEventListener("keydown",o(l))}})}const we=["data-colindex","data-rowindex","data-editable","contenteditable","tabindex"],he={key:1},ge=n.defineComponent({__name:"ACell",props:{colIndex:{},rowIndex:{},tableid:{},addNavigation:{type:[Boolean,Object],default:!0},tabIndex:{default:0},clickHandler:{}},setup(t){var I;const e=t,o=n.inject(e.tableid),l=n.ref(null);let a=n.ref(!1);const r=n.computed(()=>{const p=o.cellData(e.colIndex,e.rowIndex);if(o.columns[e.colIndex].format){const g=o.columns[e.colIndex].format;return typeof g=="function"?g(p):typeof g=="string"?Function(`"use strict";return (${g})`)()(p):p}else return p}),i=p=>{if(e.clickHandler){e.clickHandler(p);return}if(o.columns[e.colIndex].mask,o.columns[e.colIndex].modalComponent){const g=l.value.getBoundingClientRect();o.modal.visible=!0,o.modal.colIndex=e.colIndex,o.modal.rowIndex=e.rowIndex,o.modal.parent=l.value,o.modal.top=g.top+g.height,o.modal.left=g.left,o.modal.width=d.value,o.modal.component=o.columns[e.colIndex].modalComponent,o.modal.componentProps=o.columns[e.colIndex].modalComponentProps}};if(e.addNavigation){let p={...Y,"keydown.f2":i,"keydown.alt.up":i,"keydown.alt.down":i,"keydown.alt.left":i,"keydown.alt.right":i};typeof e.addNavigation=="object"&&(p={...p,...e.addNavigation}),$([{selectors:l,handlers:p}])}const s=n.computed(()=>o.columns[e.colIndex].align||"center"),d=n.computed(()=>o.columns[e.colIndex].width||"40ch");let f="";const u=()=>{l.value&&(f=l.value.innerText)},c=()=>{l.value&&l.value.innerHTML!==f&&(f=l.value.innerText,l.value.dispatchEvent(new Event("change")),a.value=!0,o.columns[e.colIndex].format||o.setCellData(e.rowIndex,e.colIndex,f))},b=(p,g)=>g&&p===0&&g>0?`${g}ch`:"inherit",w={textAlign:s.value,width:d.value,backgroundColor:a.value?"var(--cell-modified-color)":"inherit",fontWeight:a.value?"bold":"inherit",paddingLeft:b(e.colIndex,(I=o.display[e.rowIndex])==null?void 0:I.indent)};return(p,g)=>(n.openBlock(),n.createElementBlock("td",{ref_key:"cell",ref:l,"data-colindex":p.colIndex,"data-rowindex":p.rowIndex,"data-editable":n.unref(o).columns[p.colIndex].edit,contenteditable:n.unref(o).columns[p.colIndex].edit,tabindex:p.tabIndex,spellcheck:!1,style:w,onFocus:u,onPaste:c,onBlur:c,onInput:c,onClick:i,onMousedown:i},[n.unref(o).columns[p.colIndex].cellComponent?(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(o).columns[p.colIndex].cellComponent),n.mergeProps({key:0,value:r.value},n.unref(o).columns[p.colIndex].cellComponentProps),null,16,["value"])):(n.openBlock(),n.createElementBlock("span",he,n.toDisplayString(r.value),1))],40,we))}}),He="",_=(t,e)=>{const o=t.__vccOpts||t;for(const[l,a]of e)o[l]=a;return o},B=_(ge,[["__scopeId","data-v-07dfe445"]]),be=["tabindex"],ye=["tabindex"],xe=["colspan"],_e=n.defineComponent({__name:"AExpansionRow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:-1},addNavigation:{}},setup(t){const e=t,o=n.inject(e.tableid),l=n.ref(null),a=n.ref(null),r=()=>o.display[e.rowIndex].expanded?"▼":"►";if(e.addNavigation!==void 0){const i=Object.assign({},e.addNavigation);i["keydown.control.g"]=s=>{s.stopPropagation(),s.preventDefault(),o.toggleRowExpand(e.rowIndex)},$([{selectors:l,handlers:i}])}return(i,s)=>(n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createElementVNode("tr",n.mergeProps(i.$attrs,{ref_key:"rowEl",ref:l,tabindex:i.tabIndex,class:"expandable-row"}),[n.createElementVNode("td",{tabIndex:-1,onClick:s[0]||(s[0]=d=>n.unref(o).toggleRowExpand(i.rowIndex)),class:"row-index"},n.toDisplayString(r()),1),n.renderSlot(i.$slots,"row",{},void 0,!0)],16,be),n.unref(o).display[e.rowIndex].expanded?(n.openBlock(),n.createElementBlock("tr",{key:0,ref_key:"rowExpanded",ref:a,tabindex:i.tabIndex,class:"expanded-row"},[n.createElementVNode("td",{tabIndex:-1,colspan:n.unref(o).columns.length+1,class:"expanded-row-content"},[n.renderSlot(i.$slots,"content",{},void 0,!0)],8,xe)],8,ye)):n.createCommentVNode("",!0)],64))}}),Le="",Z=_(_e,[["__scopeId","data-v-b2e2ed2d"]]),Ie=["tabindex"],Ee={key:0,tabIndex:-1,class:"list-index"},ke=n.defineComponent({__name:"ARow",props:{row:{},rowIndex:{},tableid:{},tabIndex:{default:-1},addNavigation:{}},setup(t){n.useCssVars(d=>({"5b18ee03":n.unref(a)}));const e=t,o=n.inject(e.tableid),l=n.ref(null),a=o.numberedRowWidth.value,r=()=>o.config.view!=="tree"?"":o.display[e.rowIndex].isRoot||o.display[e.rowIndex].isParent?o.display[e.rowIndex].childrenOpen?"-":"+":"",i=()=>o.config.view!=="tree"||o.display[e.rowIndex].isRoot||o.display[e.rowIndex].open,s=d=>{o.toggleRowExpand(d)};return e.addNavigation&&$([{selectors:l,handlers:e.addNavigation}]),(d,f)=>n.withDirectives((n.openBlock(),n.createElementBlock("tr",{ref_key:"rowEl",ref:l,tabindex:d.tabIndex,class:"table-row"},[n.unref(o).config.view==="list"?(n.openBlock(),n.createElementBlock("td",Ee,n.toDisplayString(d.rowIndex+1),1)):n.unref(o).config.view==="tree"?(n.openBlock(),n.createElementBlock("td",{key:1,tabIndex:-1,class:"tree-index",onClick:f[0]||(f[0]=u=>s(d.rowIndex))},n.toDisplayString(r()),1)):n.renderSlot(d.$slots,"indexCell",{key:2},void 0,!0),n.renderSlot(d.$slots,"default",{},void 0,!0)],8,Ie)),[[n.vShow,i()]])}}),Ve="",O=_(ke,[["__scopeId","data-v-4c71a067"]]);let k;const Ce=new Uint8Array(16);function Ae(){if(!k&&(k=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!k))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return k(Ce)}const m=[];for(let t=0;t<256;++t)m.push((t+256).toString(16).slice(1));function Se(t,e=0){return m[t[e+0]]+m[t[e+1]]+m[t[e+2]]+m[t[e+3]]+"-"+m[t[e+4]]+m[t[e+5]]+"-"+m[t[e+6]]+m[t[e+7]]+"-"+m[t[e+8]]+m[t[e+9]]+"-"+m[t[e+10]]+m[t[e+11]]+m[t[e+12]]+m[t[e+13]]+m[t[e+14]]+m[t[e+15]]}const K={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function v(t,e,o){if(K.randomUUID&&!e&&!t)return K.randomUUID();t=t||{};const l=t.random||(t.rng||Ae)();if(l[6]=l[6]&15|64,l[8]=l[8]&63|128,e){o=o||0;for(let a=0;a<16;++a)e[o+a]=l[a];return e}return Se(l)}class ee{constructor(e,o,l,a,r,i){this.id=e||v(),this.rows=l,this.columns=n.reactive(o),this.config=n.reactive(a),this.table=r||n.reactive(this.createTableObject()),this.display=this.createDisplayObject(i),this.modal=n.reactive({visible:!1})}createTableObject(){const e={};for(const[o,l]of this.columns.entries())for(const[a,r]of this.rows.entries())e[`${o}:${a}`]=r[l.name];return e}createDisplayObject(e){const o=[Object.assign({},{modified:!1})];if(e&&"0:0"in e)return e;const l=new Set;for(let a=this.rows.length-1;a>=0;a--){const r=this.rows[a];r.parent&&l.add(r.parent),o[a]={childrenOpen:!1,expanded:!1,indent:r.indent||null,isParent:l.has(a),isRoot:r.parent===null||r.parent===void 0,modified:!1,open:r.parent===null||r.parent===void 0,parent:r.parent}}return n.reactive(o)}get zeroColumn(){return["list","tree","list-expansion"].includes(this.config.view)}get numberedRowWidth(){return n.computed(()=>String(Math.ceil(this.rows.length/100)+1)+"ch")}cellData(e,o){return this.table[`${e}:${o}`]}setCellData(e,o,l){this.table[`${o}:${e}`]!==l&&(this.display[e].modified=!0),this.table[`${o}:${e}`]=l;const a=this.columns[o];return this.rows[e][a.name]=l,this.table[`${o}:${e}`]}toggleRowExpand(e){if(this.config.view==="tree"){this.display[e].childrenOpen=!this.display[e].childrenOpen;for(let o=this.rows.length-1;o>=0;o--)this.display[o].parent===e&&(this.display[o].open=!this.display[o].open,this.display[o].childrenOpen&&this.toggleRowExpand(o))}else this.config.view==="list-expansion"&&(this.display[e].expanded=!this.display[e].expanded)}}const Te={key:0},De={class:"atable-header-row",tabindex:"-1"},$e={key:0,id:"header-index"},Be=n.defineComponent({__name:"ATableHeader",props:{columns:{},config:{},tableid:{}},setup(t){n.useCssVars(r=>({"12d06943":n.unref(l)}));const e=t,o=n.inject(e.tableid),l=o.numberedRowWidth.value,a=r=>({minWidth:r.width||"40ch",textAlign:r.align||"center",width:o.config.fullWidth?"auto":null});return(r,i)=>r.columns.length?(n.openBlock(),n.createElementBlock("thead",Te,[n.createElementVNode("tr",De,[n.unref(o).zeroColumn?(n.openBlock(),n.createElementBlock("th",$e)):n.createCommentVNode("",!0),(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(r.columns,(s,d)=>(n.openBlock(),n.createElementBlock("th",{key:d,tabindex:"-1",style:n.normalizeStyle(a(s))},[n.renderSlot(r.$slots,"default",{},()=>[n.createTextVNode(n.toDisplayString(s.label||String.fromCharCode(d+97).toUpperCase()),1)],!0)],4))),128))])])):n.createCommentVNode("",!0)}}),je="",R=_(Be,[["__scopeId","data-v-16e66636"]]),Oe=n.defineComponent({__name:"ATableModal",props:{colIndex:{},rowIndex:{},tableid:{}},setup(t){const e=t;n.inject(e.tableid);const o=l=>{l.stopPropagation()};return(l,a)=>(n.openBlock(),n.createElementBlock("div",{ref:"amodal",class:"amodal",tabindex:"-1",onClick:o,onInput:o},[n.renderSlot(l.$slots,"default",{},void 0,!0)],544))}}),Ue="",P=_(Oe,[["__scopeId","data-v-10a48b2a"]]),Re=n.defineComponent({__name:"ATable",props:{id:{},modelValue:{},columns:{},rows:{default:()=>[]},config:{default:()=>new Object},tableid:{}},emits:["update:modelValue"],setup(t,{emit:e}){const o=t,l=e;let a=o.modelValue?o.modelValue:o.rows,r=new ee(o.id,o.columns,a,o.config);n.provide(r.id,r),n.watch(()=>r.rows,(s,d)=>{l("update:modelValue",s)},{deep:!0});const i=s=>{var d;(d=r.modal.parent)!=null&&d.contains(s.target)||r.modal.visible&&(r.modal.visible=!1)};return window.addEventListener("click",i),window.addEventListener("keydown",s=>{if(s.key==="Escape"&&r.modal.visible){r.modal.visible=!1;const d=r.modal.parent;d&&n.nextTick().then(()=>{const f=d.dataset.rowindex,u=d.dataset.colindex,c=document.querySelectorAll(`[data-rowindex='${f}'][data-colindex='${u}']`);c&&c[0].focus()})}}),(s,d)=>(n.openBlock(),n.createElementBlock("table",{class:"atable",style:n.normalizeStyle({width:n.unref(r).config.fullWidth?"100%":"auto"})},[n.renderSlot(s.$slots,"header",{data:n.unref(r)},()=>[n.createVNode(R,{columns:n.unref(r).columns,config:n.unref(r).config,tableid:n.unref(r).id},null,8,["columns","config","tableid"])],!0),n.createElementVNode("tbody",null,[n.renderSlot(s.$slots,"body",{data:n.unref(r)},()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).rows,(f,u)=>(n.openBlock(),n.createBlock(O,{key:f.id||n.unref(v)(),row:f,rowIndex:u,tableid:n.unref(r).id},{default:n.withCtx(()=>[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(n.unref(r).columns,(c,b)=>(n.openBlock(),n.createBlock(B,{key:`${b}:${u}`,tableid:n.unref(r).id,col:c,spellcheck:"false",rowIndex:u,colIndex:b+(n.unref(r).zeroColumn?0:-1),component:c.cellComponent,style:n.normalizeStyle({textAlign:(c==null?void 0:c.align)||"center",minWidth:(c==null?void 0:c.width)||"40ch",width:n.unref(r).config.fullWidth?"auto":null})},null,8,["tableid","col","rowIndex","colIndex","component","style"]))),128))]),_:2},1032,["row","rowIndex","tableid"]))),128))],!0)]),n.renderSlot(s.$slots,"footer",{data:n.unref(r)},void 0,!0),n.renderSlot(s.$slots,"modal",{data:n.unref(r)},()=>[n.withDirectives(n.createVNode(P,{colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id,style:n.normalizeStyle({left:n.unref(r).modal.left+"px",top:n.unref(r).modal.top+"px",maxWidth:n.unref(r).modal.width+"px"})},{default:n.withCtx(()=>[(n.openBlock(),n.createBlock(n.resolveDynamicComponent(n.unref(r).modal.component),n.mergeProps({key:`${n.unref(r).modal.rowIndex}:${n.unref(r).modal.colIndex}`,colIndex:n.unref(r).modal.colIndex,rowIndex:n.unref(r).modal.rowIndex,tableid:n.unref(r).id},n.unref(r).modal.componentProps),null,16,["colIndex","rowIndex","tableid"]))]),_:1},8,["colIndex","rowIndex","tableid","style"]),[[n.vShow,n.unref(r).modal.visible]])],!0)],4))}}),We="",te=_(Re,[["__scopeId","data-v-819abcc5"]]);function Pe(t){t.component("ACell",B),t.component("AExpansionRow",Z),t.component("ARow",O),t.component("ATable",te),t.component("ATableHeader",R),t.component("ATableModal",P)}h.ACell=B,h.AExpansionRow=Z,h.ARow=O,h.ATable=te,h.ATableHeader=R,h.ATableModal=P,h.TableDataStore=ee,h.install=Pe,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
2
+ //# sourceMappingURL=atable.umd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atable.umd.cjs","sources":["../../utilities/dist/utilities.js","../src/components/ACell.vue","../src/components/AExpansionRow.vue","../src/components/ARow.vue","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../../common/temp/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../src/components/index.ts","../src/components/ATableHeader.vue","../src/components/ATableModal.vue","../src/components/ATable.vue","../src/index.ts"],"sourcesContent":["import { unref as Q, getCurrentScope as U, onScopeDispose as K, ref as B, watch as D, onMounted as W, onBeforeUnmount as V } from \"vue\";\nvar v;\nconst M = typeof window < \"u\", F = (e) => typeof e == \"string\", j = () => {\n};\nM && ((v = window == null ? void 0 : window.navigator) != null && v.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);\nfunction H(e) {\n return typeof e == \"function\" ? e() : Q(e);\n}\nfunction q(e) {\n return e;\n}\nfunction G(e) {\n return U() ? (K(e), !0) : !1;\n}\nfunction y(e) {\n var t;\n const r = H(e);\n return (t = r == null ? void 0 : r.$el) != null ? t : r;\n}\nconst N = M ? window : void 0;\nfunction z(...e) {\n let t, r, n, o;\n if (F(e[0]) || Array.isArray(e[0]) ? ([r, n, o] = e, t = N) : [t, r, n, o] = e, !t)\n return j;\n Array.isArray(r) || (r = [r]), Array.isArray(n) || (n = [n]);\n const l = [], s = () => {\n l.forEach((c) => c()), l.length = 0;\n }, a = (c, g, p, i) => (c.addEventListener(g, p, i), () => c.removeEventListener(g, p, i)), C = D(() => [y(t), H(o)], ([c, g]) => {\n s(), c && l.push(...r.flatMap((p) => n.map((i) => a(c, p, i, g))));\n }, { immediate: !0, flush: \"post\" }), d = () => {\n C(), s();\n };\n return G(d), d;\n}\nconst O = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {}, T = \"__vueuse_ssr_handlers__\";\nO[T] = O[T] || {};\nfunction J(e, { window: t = N, scrollTarget: r } = {}) {\n const n = B(!1), o = () => {\n if (!t)\n return;\n const l = t.document, s = y(e);\n if (!s)\n n.value = !1;\n else {\n const a = s.getBoundingClientRect();\n n.value = a.top <= (t.innerHeight || l.documentElement.clientHeight) && a.left <= (t.innerWidth || l.documentElement.clientWidth) && a.bottom >= 0 && a.right >= 0;\n }\n };\n return D(() => y(e), () => o(), { immediate: !0, flush: \"post\" }), t && z(r || t, \"scroll\", o, {\n capture: !1,\n passive: !0\n }), n;\n}\nvar P;\n(function(e) {\n e.UP = \"UP\", e.RIGHT = \"RIGHT\", e.DOWN = \"DOWN\", e.LEFT = \"LEFT\", e.NONE = \"NONE\";\n})(P || (P = {}));\nvar X = Object.defineProperty, I = Object.getOwnPropertySymbols, Y = Object.prototype.hasOwnProperty, Z = Object.prototype.propertyIsEnumerable, _ = (e, t, r) => t in e ? X(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, ee = (e, t) => {\n for (var r in t || (t = {}))\n Y.call(t, r) && _(e, r, t[r]);\n if (I)\n for (var r of I(t))\n Z.call(t, r) && _(e, r, t[r]);\n return e;\n};\nconst te = {\n easeInSine: [0.12, 0, 0.39, 0],\n easeOutSine: [0.61, 1, 0.88, 1],\n easeInOutSine: [0.37, 0, 0.63, 1],\n easeInQuad: [0.11, 0, 0.5, 0],\n easeOutQuad: [0.5, 1, 0.89, 1],\n easeInOutQuad: [0.45, 0, 0.55, 1],\n easeInCubic: [0.32, 0, 0.67, 0],\n easeOutCubic: [0.33, 1, 0.68, 1],\n easeInOutCubic: [0.65, 0, 0.35, 1],\n easeInQuart: [0.5, 0, 0.75, 0],\n easeOutQuart: [0.25, 1, 0.5, 1],\n easeInOutQuart: [0.76, 0, 0.24, 1],\n easeInQuint: [0.64, 0, 0.78, 0],\n easeOutQuint: [0.22, 1, 0.36, 1],\n easeInOutQuint: [0.83, 0, 0.17, 1],\n easeInExpo: [0.7, 0, 0.84, 0],\n easeOutExpo: [0.16, 1, 0.3, 1],\n easeInOutExpo: [0.87, 0, 0.13, 1],\n easeInCirc: [0.55, 0, 1, 0.45],\n easeOutCirc: [0, 0.55, 0.45, 1],\n easeInOutCirc: [0.85, 0, 0.15, 1],\n easeInBack: [0.36, 0, 0.66, -0.56],\n easeOutBack: [0.34, 1.56, 0.64, 1],\n easeInOutBack: [0.68, -0.6, 0.32, 1.6]\n};\nee({\n linear: q\n}, te);\nconst f = (e) => {\n let t = J(e).value;\n return t = t && e.offsetHeight > 0, t;\n}, u = (e) => e.tabIndex >= 0, A = (e) => {\n const t = e.target;\n return E(t);\n}, E = (e) => {\n var r;\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = (r = e.parentElement) == null ? void 0 : r.previousElementSibling;\n if (n) {\n const l = Array.from(n.children)[e.cellIndex];\n l && (t = l);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.previousElementSibling;\n n && (t = n);\n }\n return t && (!u(t) || !f(t)) ? E(t) : t;\n}, ne = (e) => {\n var n;\n const t = e.target;\n let r;\n if (t instanceof HTMLTableCellElement) {\n const o = (n = t.parentElement) == null ? void 0 : n.parentElement;\n if (o) {\n const s = o.firstElementChild.children[t.cellIndex];\n s && (r = s);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const l = o.firstElementChild;\n l && (r = l);\n }\n }\n return r && (!u(r) || !f(r)) ? w(r) : r;\n}, x = (e) => {\n const t = e.target;\n return w(t);\n}, w = (e) => {\n var r;\n let t;\n if (e instanceof HTMLTableCellElement) {\n const n = (r = e.parentElement) == null ? void 0 : r.nextElementSibling;\n if (n) {\n const l = Array.from(n.children)[e.cellIndex];\n l && (t = l);\n }\n } else if (e instanceof HTMLTableRowElement) {\n const n = e.nextElementSibling;\n n && (t = n);\n }\n return t && (!u(t) || !f(t)) ? w(t) : t;\n}, re = (e) => {\n var n;\n const t = e.target;\n let r;\n if (t instanceof HTMLTableCellElement) {\n const o = (n = t.parentElement) == null ? void 0 : n.parentElement;\n if (o) {\n const s = o.lastElementChild.children[t.cellIndex];\n s && (r = s);\n }\n } else if (t instanceof HTMLTableRowElement) {\n const o = t.parentElement;\n if (o) {\n const l = o.lastElementChild;\n l && (r = l);\n }\n }\n return r && (!u(r) || !f(r)) ? E(r) : r;\n}, k = (e) => {\n const t = e.target;\n return h(t);\n}, h = (e) => {\n var r;\n let t;\n if (e.previousElementSibling)\n t = e.previousElementSibling;\n else {\n const n = (r = e.parentElement) == null ? void 0 : r.previousElementSibling;\n t = n == null ? void 0 : n.lastElementChild;\n }\n return t && (!u(t) || !f(t)) ? h(t) : t;\n}, S = (e) => {\n const t = e.target;\n return b(t);\n}, b = (e) => {\n var r;\n let t;\n if (e.nextElementSibling)\n t = e.nextElementSibling;\n else {\n const n = (r = e.parentElement) == null ? void 0 : r.nextElementSibling;\n t = n == null ? void 0 : n.firstElementChild;\n }\n return t && (!u(t) || !f(t)) ? b(t) : t;\n}, L = (e) => {\n const n = e.target.parentElement.firstElementChild;\n return n && (!u(n) || !f(n)) ? b(n) : n;\n}, R = (e) => {\n const n = e.target.parentElement.lastElementChild;\n return n && (!u(n) || !f(n)) ? h(n) : n;\n}, m = [\"alt\", \"control\", \"shift\", \"meta\"], oe = {\n ArrowUp: \"up\",\n ArrowDown: \"down\",\n ArrowLeft: \"left\",\n ArrowRight: \"right\"\n}, le = {\n \"keydown.up\": (e) => {\n const t = A(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.down\": (e) => {\n const t = x(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.left\": (e) => {\n const t = k(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.right\": (e) => {\n const t = S(e);\n e.preventDefault(), e.stopPropagation(), t && t.focus();\n },\n \"keydown.control.up\": (e) => {\n const t = ne(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.down\": (e) => {\n const t = re(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.left\": (e) => {\n const t = L(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.control.right\": (e) => {\n const t = R(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.end\": (e) => {\n const t = R(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const r = x(e);\n r && r.focus();\n }\n },\n \"keydown.shift.enter\": (e) => {\n if (e.target instanceof HTMLTableCellElement) {\n e.preventDefault(), e.stopPropagation();\n const r = A(e);\n r && r.focus();\n }\n },\n \"keydown.home\": (e) => {\n const t = L(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.tab\": (e) => {\n const t = S(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n },\n \"keydown.shift.tab\": (e) => {\n const t = k(e);\n t && (e.preventDefault(), e.stopPropagation(), t.focus());\n }\n};\nfunction ie(e) {\n const t = (n) => {\n let o = null;\n n.parent && (typeof n.parent == \"string\" ? o = document.querySelector(n.parent) : n.parent instanceof Element ? o = n.parent : o = n.parent.value);\n let l = [];\n if (n.selectors)\n if (typeof n.selectors == \"string\")\n l = o ? Array.from(o.querySelectorAll(n.selectors)) : Array.from(document.querySelectorAll(n.selectors));\n else if (n.selectors instanceof Element)\n l.push(n.selectors);\n else if (Array.isArray(n.selectors.value))\n for (const s of n.selectors.value)\n s instanceof Element ? l.push(s) : l.push(s.$el);\n else\n l.push(n.selectors.value);\n else\n l = Array.from(o.children).filter((a) => u(a) && f(a));\n return l;\n }, r = (n) => (o) => {\n const l = oe[o.key] || o.key.toLowerCase();\n if (m.includes(l))\n return;\n const s = n.handlers || le;\n for (const a of Object.keys(s)) {\n const [C, ...d] = a.split(\".\");\n if (C === \"keydown\" && d.includes(l)) {\n const c = s[a], g = d.filter((i) => m.includes(i)), p = m.some((i) => {\n const $ = i.charAt(0).toUpperCase() + i.slice(1);\n return o.getModifierState($);\n });\n if (g.length > 0) {\n if (p) {\n for (const i of m)\n if (d.includes(i)) {\n const $ = i.charAt(0).toUpperCase() + i.slice(1);\n o.getModifierState($) && c(o);\n }\n }\n } else\n p || c(o);\n }\n }\n };\n W(() => {\n for (const n of e) {\n const o = t(n);\n for (const l of o)\n l.addEventListener(\"keydown\", r(n));\n }\n }), V(() => {\n for (const n of e) {\n const o = t(n);\n for (const l of o)\n l.removeEventListener(\"keydown\", r(n));\n }\n });\n}\nfunction ae(e) {\n}\nexport {\n le as defaultKeypressHandlers,\n ae as install,\n ie as useKeyboardNav\n};\n//# sourceMappingURL=utilities.js.map\n","<template>\n\t<td\n\t\tref=\"cell\"\n\t\t:data-colindex=\"colIndex\"\n\t\t:data-rowindex=\"rowIndex\"\n\t\t:data-editable=\"tableData.columns[colIndex].edit\"\n\t\t:contenteditable=\"tableData.columns[colIndex].edit\"\n\t\t:tabindex=\"tabIndex\"\n\t\t:spellcheck=\"false\"\n\t\t:style=\"cellStyle\"\n\t\t@focus=\"onFocus\"\n\t\t@paste=\"onChange\"\n\t\t@blur=\"onChange\"\n\t\t@input=\"onChange\"\n\t\t@click=\"handleInput\"\n\t\t@mousedown=\"handleInput\">\n\t\t<component\n\t\t\tv-if=\"tableData.columns[colIndex].cellComponent\"\n\t\t\t:is=\"tableData.columns[colIndex].cellComponent\"\n\t\t\t:value=\"displayValue\"\n\t\t\tv-bind=\"tableData.columns[colIndex].cellComponentProps\">\n\t\t</component>\n\t\t<span v-else>{{ displayValue }}</span>\n\t</td>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, CSSProperties, inject, ref } from 'vue'\n\nimport { defaultKeypressHandlers, useKeyboardNav } from '@stonecrop/utilities'\nimport TableDataStore from '.'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tcolIndex: number\n\t\trowIndex: number\n\t\ttableid: string\n\t\taddNavigation?: boolean | object\n\t\ttabIndex?: number\n\t\tclickHandler?: (event: MouseEvent) => void\n\t}>(),\n\t{\n\t\ttabIndex: 0,\n\t\taddNavigation: true,\n\t}\n)\n\nconst tableData = inject<TableDataStore>(props.tableid)\nconst cell = ref<HTMLTableCellElement>(null)\n\nlet cellModified = ref(false)\nconst displayValue = computed(() => {\n\tconst data = tableData.cellData<any>(props.colIndex, props.rowIndex)\n\tif (tableData.columns[props.colIndex].format) {\n\t\tconst format = tableData.columns[props.colIndex].format\n\t\tif (typeof format === 'function') {\n\t\t\treturn format(data)\n\t\t} else if (typeof format === 'string') {\n\t\t\t// parse format function from string\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-implied-eval\n\t\t\tconst formatFn: (args: any) => any = Function(`\"use strict\";return (${format})`)()\n\t\t\treturn formatFn(data)\n\t\t} else {\n\t\t\treturn data\n\t\t}\n\t} else {\n\t\treturn data\n\t}\n})\n\nconst handleInput = (event: MouseEvent) => {\n\t// Not sure if click handler is needed anymore?\n\tif (props.clickHandler) {\n\t\tprops.clickHandler(event)\n\t\treturn\n\t}\n\n\tif (tableData.columns[props.colIndex].mask) {\n\t\t// TODO: add masking to cell values\n\t\t// tableData.columns[props.colIndex].mask(event)\n\t}\n\n\tif (tableData.columns[props.colIndex].modalComponent) {\n\t\tconst domRect = cell.value.getBoundingClientRect()\n\t\ttableData.modal.visible = true\n\t\ttableData.modal.colIndex = props.colIndex\n\t\ttableData.modal.rowIndex = props.rowIndex\n\t\ttableData.modal.parent = cell.value\n\t\ttableData.modal.top = domRect.top + domRect.height\n\t\ttableData.modal.left = domRect.left\n\t\ttableData.modal.width = cellWidth.value\n\t\ttableData.modal.component = tableData.columns[props.colIndex].modalComponent\n\t\ttableData.modal.componentProps = tableData.columns[props.colIndex].modalComponentProps\n\t}\n}\n\nif (props.addNavigation) {\n\tlet handlers = {\n\t\t...defaultKeypressHandlers,\n\t\t...{\n\t\t\t'keydown.f2': handleInput,\n\t\t\t'keydown.alt.up': handleInput,\n\t\t\t'keydown.alt.down': handleInput,\n\t\t\t'keydown.alt.left': handleInput,\n\t\t\t'keydown.alt.right': handleInput,\n\t\t},\n\t}\n\n\tif (typeof props.addNavigation === 'object') {\n\t\thandlers = {\n\t\t\t...handlers,\n\t\t\t...props.addNavigation,\n\t\t}\n\t}\n\n\tuseKeyboardNav([\n\t\t{\n\t\t\tselectors: cell,\n\t\t\thandlers: handlers,\n\t\t},\n\t])\n}\n\n// const updateData = (event: Event) => {\n// \tif (event) {\n// \t\t// custom components need to handle their own updateData, this is the default\n// \t\tif (!tableData.columns[props.colIndex].component) {\n// \t\t\ttableData.setCellData(props.rowIndex, props.colIndex, cell.value.innerHTML)\n// \t\t}\n// \t\tcellModified.value = true\n// \t}\n// }\n\nconst textAlign = computed(() => {\n\treturn tableData.columns[props.colIndex].align || 'center'\n})\n\nconst cellWidth = computed(() => {\n\treturn tableData.columns[props.colIndex].width || '40ch'\n})\n\nlet currentData = ''\nconst onFocus = () => {\n\tif (cell.value) {\n\t\tcurrentData = cell.value.innerText\n\t}\n}\n\nconst onChange = () => {\n\tif (cell.value) {\n\t\tif (cell.value.innerHTML !== currentData) {\n\t\t\tcurrentData = cell.value.innerText\n\t\t\tcell.value.dispatchEvent(new Event('change'))\n\t\t\tcellModified.value = true // set display instead\n\t\t\tif (!tableData.columns[props.colIndex].format) {\n\t\t\t\t// TODO: need to setup reverse format function\n\t\t\t\ttableData.setCellData(props.rowIndex, props.colIndex, currentData)\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst getIndent = (colKey: number, indent: number) => {\n\tif (indent && colKey === 0 && indent > 0) {\n\t\treturn `${indent}ch`\n\t} else {\n\t\treturn 'inherit'\n\t}\n}\n\nconst cellStyle: CSSProperties = {\n\ttextAlign: textAlign.value,\n\twidth: cellWidth.value,\n\tbackgroundColor: !cellModified.value ? 'inherit' : 'var(--cell-modified-color)',\n\tfontWeight: !cellModified.value ? 'inherit' : 'bold',\n\tpaddingLeft: getIndent(props.colIndex, tableData.display[props.rowIndex]?.indent),\n}\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\ntd {\n\tborder-radius: 0px;\n\tbox-sizing: border-box;\n\tmargin: 0px;\n\toutline: none;\n\tbox-shadow: none;\n\tcolor: var(--cell-text-color);\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 0.5ch !important;\n\tpadding-right: 0.5ch;\n\n\tpadding-top: var(--atable-row-padding);\n\tpadding-bottom: var(--atable-row-padding);\n\n\tborder-spacing: 0px;\n\tborder-collapse: collapse;\n}\n\ntd:focus,\ntd:focus-within {\n\tbackground-color: var(--focus-cell-background);\n\toutline-width: 2px;\n\toutline-style: solid;\n\toutline-color: var(--focus-cell-outline);\n\tbox-shadow: none;\n\toverflow: hidden;\n\tmin-height: 1.15em;\n\tmax-height: 1.15em;\n\toverflow: hidden;\n}\n</style>\n","<template>\n\t<tr v-bind=\"$attrs\" ref=\"rowEl\" :tabindex=\"tabIndex\" class=\"expandable-row\">\n\t\t<td :tabIndex=\"-1\" @click=\"tableData.toggleRowExpand(rowIndex)\" class=\"row-index\">\n\t\t\t{{ getRowExpandSymbol() }}\n\t\t</td>\n\t\t<slot name=\"row\" />\n\t</tr>\n\t<tr v-if=\"tableData.display[props.rowIndex].expanded\" ref=\"rowExpanded\" :tabindex=\"tabIndex\" class=\"expanded-row\">\n\t\t<td :tabIndex=\"-1\" :colspan=\"tableData.columns.length + 1\" class=\"expanded-row-content\">\n\t\t\t<slot name=\"content\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script setup lang=\"ts\">\nimport { TableRow } from 'types'\nimport { inject, ref } from 'vue'\n\nimport { useKeyboardNav } from '@stonecrop/utilities'\n\nimport TableDataStore from '.'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\trow: TableRow\n\t\trowIndex: number\n\t\ttableid: string\n\t\ttabIndex?: number\n\t\taddNavigation?: {\n\t\t\t[key: string]: (ev: KeyboardEvent) => any\n\t\t}\n\t}>(),\n\t{\n\t\ttabIndex: -1,\n\t}\n)\n\nconst tableData = inject<TableDataStore>(props.tableid)\nconst rowEl = ref<HTMLTableRowElement>(null)\nconst rowExpanded = ref<HTMLDivElement>(null)\n\nconst getRowExpandSymbol = () => {\n\treturn tableData.display[props.rowIndex].expanded ? '▼' : '►'\n}\n\nif (props.addNavigation !== undefined) {\n\tconst keyboardNav = Object.assign({}, props.addNavigation)\n\tkeyboardNav['keydown.control.g'] = (event: KeyboardEvent) => {\n\t\tevent.stopPropagation()\n\t\tevent.preventDefault()\n\t\ttableData.toggleRowExpand(props.rowIndex)\n\t}\n\n\tuseKeyboardNav([\n\t\t{\n\t\t\tselectors: rowEl,\n\t\t\thandlers: keyboardNav,\n\t\t},\n\t])\n}\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\n.row-index {\n\tcolor: var(--header-text-color);\n\tfont-weight: bold;\n\ttext-align: center;\n\tuser-select: none;\n\twidth: 2ch;\n}\n\n.expandable-row {\n\tborder-top: 1px solid var(--row-border-color);\n\theight: var(--atable-row-height);\n}\n\n.expanded-row {\n\tborder-bottom: 1px solid var(--row-border-color);\n\tborder-top: 1px solid var(--row-border-color);\n}\n\n.expanded-row-content {\n\tborder-bottom: 1px solid var(--row-border-color);\n\tborder-top: 1px solid var(--row-border-color);\n\tpadding: 1.5rem;\n}\n</style>\n","<template>\n\t<tr ref=\"rowEl\" :tabindex=\"tabIndex\" v-show=\"rowVisible()\" class=\"table-row\">\n\t\t<!-- render numbered/tree view index -->\n\t\t<td v-if=\"tableData.config.view === 'list'\" :tabIndex=\"-1\" class=\"list-index\">\n\t\t\t{{ rowIndex + 1 }}\n\t\t</td>\n\t\t<td\n\t\t\tv-else-if=\"tableData.config.view === 'tree'\"\n\t\t\t:tabIndex=\"-1\"\n\t\t\tclass=\"tree-index\"\n\t\t\t@click=\"toggleRowExpand(rowIndex)\">\n\t\t\t{{ getRowExpandSymbol() }}\n\t\t</td>\n\t\t<slot v-else name=\"indexCell\"></slot>\n\n\t\t<!-- render cell content -->\n\t\t<slot></slot>\n\t</tr>\n</template>\n\n<script setup lang=\"ts\">\nimport { TableRow } from 'types'\nimport { inject, ref } from 'vue'\nimport { useKeyboardNav } from '@stonecrop/utilities'\n\nimport TableDataStore from '.'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\trow: TableRow\n\t\trowIndex: number\n\t\ttableid: string\n\t\ttabIndex?: number\n\t\taddNavigation?: object\n\t}>(),\n\t{\n\t\ttabIndex: -1,\n\t}\n)\n\nconst tableData = inject<TableDataStore>(props.tableid)\nconst rowEl = ref<HTMLTableRowElement>(null)\nconst numberedRowWidth = tableData.numberedRowWidth.value\n\nconst getRowExpandSymbol = () => {\n\tif (tableData.config.view !== 'tree') {\n\t\treturn ''\n\t}\n\n\tif (tableData.display[props.rowIndex].isRoot) {\n\t\tif (tableData.display[props.rowIndex].childrenOpen) {\n\t\t\treturn '-'\n\t\t} else {\n\t\t\treturn '+'\n\t\t}\n\t}\n\n\tif (tableData.display[props.rowIndex].isParent) {\n\t\tif (tableData.display[props.rowIndex].childrenOpen) {\n\t\t\treturn '-'\n\t\t} else {\n\t\t\treturn '+'\n\t\t}\n\t} else {\n\t\treturn ''\n\t}\n}\n\nconst rowVisible = () => {\n\treturn (\n\t\ttableData.config.view !== 'tree' ||\n\t\ttableData.display[props.rowIndex].isRoot ||\n\t\ttableData.display[props.rowIndex].open\n\t)\n}\n\nconst toggleRowExpand = (rowIndex: number) => {\n\ttableData.toggleRowExpand(rowIndex)\n}\n\nif (props.addNavigation) {\n\tuseKeyboardNav([\n\t\t{\n\t\t\tselectors: rowEl,\n\t\t\thandlers: props.addNavigation,\n\t\t},\n\t])\n}\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\n.table-row {\n\tborder-top: 1px solid var(--row-border-color);\n\theight: var(--atable-row-height);\n}\n\n.list-index {\n\tcolor: var(--header-text-color);\n\tfont-weight: bold;\n\tpadding-left: var(--atable-row-padding);\n\tpadding-right: 1em;\n\ttext-align: center;\n\tuser-select: none;\n\twidth: v-bind(numberedRowWidth);\n\tmax-width: v-bind(numberedRowWidth);\n}\n\n.tree-index {\n\tcolor: var(--header-text-color);\n\tfont-weight: bold;\n\ttext-align: center;\n\tuser-select: none;\n\twidth: 2ch;\n}\n</style>\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 } from 'uuid'\nimport { computed, reactive } from 'vue'\n\nimport type { TableDisplay, TableRow, TableColumn, TableConfig, TableModal } from '../../types'\n\nexport default class TableDataStore {\n\tid: string\n\trows: TableRow[]\n\tcolumns: TableColumn[]\n\tconfig: TableConfig\n\ttable: { [key: string]: any }\n\tdisplay: TableDisplay[]\n\tmodal: TableModal\n\n\tconstructor(\n\t\tid?: string,\n\t\tcolumns?: TableColumn[],\n\t\trows?: TableRow[],\n\t\tconfig?: TableConfig,\n\t\ttable?: { [key: string]: any },\n\t\tdisplay?: TableDisplay[]\n\t) {\n\t\tthis.id = id || v4()\n\t\tthis.rows = rows\n\t\tthis.columns = reactive(columns)\n\t\tthis.config = reactive(config)\n\t\tthis.table = table || reactive(this.createTableObject())\n\t\tthis.display = this.createDisplayObject(display)\n\t\tthis.modal = reactive({ visible: false })\n\t}\n\n\tcreateTableObject() {\n\t\tconst table = {}\n\t\tfor (const [colIndex, column] of this.columns.entries()) {\n\t\t\tfor (const [rowIndex, row] of this.rows.entries()) {\n\t\t\t\ttable[`${colIndex}:${rowIndex}`] = row[column.name]\n\t\t\t}\n\t\t}\n\t\treturn table\n\t}\n\n\tcreateDisplayObject(display?: TableDisplay[]) {\n\t\tconst defaultDisplay: TableDisplay[] = [Object.assign({}, { modified: false })]\n\n\t\t// TODO: (typing) what is the type of `display` here?\n\t\tif (display) {\n\t\t\tif ('0:0' in display) {\n\t\t\t\treturn display\n\t\t\t}\n\t\t\t// else if ('default' in display) {\n\t\t\t// \t// TODO: (typing) what is the possible input here for 'default'?\n\t\t\t// \tdefaultDisplay = display.default\n\t\t\t// }\n\t\t}\n\n\t\t// TODO: (typing) is this type correct for the parent set?\n\t\tconst parents = new Set<string | number>()\n\t\tfor (let rowIndex = this.rows.length - 1; rowIndex >= 0; rowIndex--) {\n\t\t\tconst row = this.rows[rowIndex]\n\t\t\tif (row.parent) {\n\t\t\t\tparents.add(row.parent)\n\t\t\t}\n\n\t\t\tdefaultDisplay[rowIndex] = {\n\t\t\t\tchildrenOpen: false,\n\t\t\t\texpanded: false,\n\t\t\t\tindent: row.indent || null,\n\t\t\t\tisParent: parents.has(rowIndex),\n\t\t\t\tisRoot: row.parent === null || row.parent === undefined,\n\t\t\t\tmodified: false,\n\t\t\t\topen: row.parent === null || row.parent === undefined,\n\t\t\t\tparent: row.parent,\n\t\t\t}\n\t\t}\n\n\t\treturn reactive(defaultDisplay)\n\t}\n\n\tget zeroColumn() {\n\t\treturn ['list', 'tree', 'list-expansion'].includes(this.config.view)\n\t}\n\n\tget numberedRowWidth() {\n\t\treturn computed(() => {\n\t\t\treturn String(Math.ceil(this.rows.length / 100) + 1) + 'ch'\n\t\t})\n\t}\n\n\tcellData<T>(colIndex: number, rowIndex: number): T {\n\t\treturn this.table[`${colIndex}:${rowIndex}`]\n\t}\n\n\tsetCellData(rowIndex: number, colIndex: number, value: any) {\n\t\tif (this.table[`${colIndex}:${rowIndex}`] !== value) {\n\t\t\tthis.display[rowIndex].modified = true\n\t\t}\n\t\tthis.table[`${colIndex}:${rowIndex}`] = value\n\t\tconst col = this.columns[colIndex]\n\t\tthis.rows[rowIndex][col.name] = value\n\t\treturn this.table[`${colIndex}:${rowIndex}`]\n\t}\n\n\ttoggleRowExpand(rowIndex: number) {\n\t\tif (this.config.view === 'tree') {\n\t\t\tthis.display[rowIndex].childrenOpen = !this.display[rowIndex].childrenOpen\n\t\t\tfor (let index = this.rows.length - 1; index >= 0; index--) {\n\t\t\t\tif (this.display[index].parent === rowIndex) {\n\t\t\t\t\tthis.display[index].open = !this.display[index].open\n\t\t\t\t\tif (this.display[index].childrenOpen) {\n\t\t\t\t\t\tthis.toggleRowExpand(index)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (this.config.view === 'list-expansion') {\n\t\t\tthis.display[rowIndex].expanded = !this.display[rowIndex].expanded\n\t\t}\n\t}\n}\n","<template>\n\t<thead v-if=\"columns.length\">\n\t\t<tr class=\"atable-header-row\" tabindex=\"-1\">\n\t\t\t<th v-if=\"tableData.zeroColumn\" id=\"header-index\" />\n\t\t\t<th v-for=\"(column, colKey) in columns\" :key=\"colKey\" tabindex=\"-1\" :style=\"getHeaderCellStyle(column)\">\n\t\t\t\t<slot>{{ column.label || String.fromCharCode(colKey + 97).toUpperCase() }}</slot>\n\t\t\t</th>\n\t\t</tr>\n\t</thead>\n</template>\n\n<script setup lang=\"ts\">\nimport { CSSProperties, inject } from 'vue'\n\nimport { TableColumn, TableConfig } from 'types'\nimport TableDataStore from '.'\n\nconst props = defineProps<{\n\tcolumns: TableColumn[]\n\tconfig?: TableConfig\n\ttableid?: string\n}>()\n\nconst tableData = inject<TableDataStore>(props.tableid)\n\nconst numberedRowWidth = tableData.numberedRowWidth.value\nconst getHeaderCellStyle = (column: TableColumn): CSSProperties => ({\n\tminWidth: column.width || '40ch',\n\ttextAlign: column.align || 'center',\n\twidth: tableData.config.fullWidth ? 'auto' : null,\n})\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\nthead {\n\tbackground-color: var(--gray-5);\n}\n\n#header-index {\n\twidth: v-bind(numberedRowWidth);\n\tmax-width: v-bind(numberedRowWidth);\n}\n\nth {\n\tborder-width: 0px;\n\tborder-style: solid;\n\tborder-radius: 0px;\n\tpadding-left: 0.5ch;\n\tpadding-right: 0.5ch;\n\tpadding-top: var(--atable-row-padding);\n\tpadding-bottom: var(--atable-row-padding);\n\tcolor: var(--gray-60);\n\theight: var(--atable-row-height);\n}\n\nth:focus {\n\toutline: none;\n}\n</style>\n","<template>\n\t<div ref=\"amodal\" class=\"amodal\" tabindex=\"-1\" @click=\"handleInput\" @input=\"handleInput\">\n\t\t<slot />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject } from 'vue'\n\nimport TableDataStore from '.'\n\nconst props = defineProps<{\n\tcolIndex?: number\n\trowIndex?: number\n\ttableid?: string\n}>()\n\nconst tableData = inject<TableDataStore>(props.tableid)\n\nconst handleInput = (event: Event) => {\n\tevent.stopPropagation()\n}\n\n// const cellBackgroundColor = computed(() => {\n// \tif (tableData.modal.parent) {\n// \t\tlet computedstyle = window.getComputedStyle(tableData.modal.parent)\n// \t\treturn 'blue'\n// \t} else {\n// \t\treturn 'inherit'\n// \t}\n// })\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\ndiv {\n\tz-index: 100;\n\tposition: absolute;\n\tbackground-color: var(--row-color-zebra-dark);\n\t/* margin: 0px;\n\toutline: none;\n\tbox-shadow: none;\n\tcolor: var(--cell-text-color);\n\ttext-overflow: ellipsis;\n\toverflow: hidden;\n\tpadding-left: 0.5ch;\n\tpadding-right: 0.5ch;\n\tfont-size: var(--table-font-size); */\n}\n</style>\n","<template>\n\t<table class=\"atable\" :style=\"{ width: tableData.config.fullWidth ? '100%' : 'auto' }\">\n\t\t<slot name=\"header\" :data=\"tableData\">\n\t\t\t<ATableHeader :columns=\"tableData.columns\" :config=\"tableData.config\" :tableid=\"tableData.id\" />\n\t\t</slot>\n\n\t\t<tbody>\n\t\t\t<slot name=\"body\" :data=\"tableData\">\n\t\t\t\t<ARow\n\t\t\t\t\tv-for=\"(row, rowIndex) in tableData.rows\"\n\t\t\t\t\t:key=\"row.id || v4()\"\n\t\t\t\t\t:row=\"row\"\n\t\t\t\t\t:rowIndex=\"rowIndex\"\n\t\t\t\t\t:tableid=\"tableData.id\">\n\t\t\t\t\t<ACell\n\t\t\t\t\t\tv-for=\"(col, colIndex) in tableData.columns\"\n\t\t\t\t\t\t:key=\"`${colIndex}:${rowIndex}`\"\n\t\t\t\t\t\t:tableid=\"tableData.id\"\n\t\t\t\t\t\t:col=\"col\"\n\t\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t\t:rowIndex=\"rowIndex\"\n\t\t\t\t\t\t:colIndex=\"colIndex + (tableData.zeroColumn ? 0 : -1)\"\n\t\t\t\t\t\t:component=\"col.cellComponent\"\n\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\ttextAlign: col?.align || 'center',\n\t\t\t\t\t\t\tminWidth: col?.width || '40ch',\n\t\t\t\t\t\t\twidth: tableData.config.fullWidth ? 'auto' : null,\n\t\t\t\t\t\t}\" />\n\t\t\t\t</ARow>\n\t\t\t</slot>\n\t\t</tbody>\n\n\t\t<slot name=\"footer\" :data=\"tableData\" />\n\t\t<slot name=\"modal\" :data=\"tableData\">\n\t\t\t<ATableModal\n\t\t\t\tv-show=\"tableData.modal.visible\"\n\t\t\t\t:colIndex=\"tableData.modal.colIndex\"\n\t\t\t\t:rowIndex=\"tableData.modal.rowIndex\"\n\t\t\t\t:tableid=\"tableData.id\"\n\t\t\t\t:style=\"{\n\t\t\t\t\tleft: tableData.modal.left + 'px',\n\t\t\t\t\ttop: tableData.modal.top + 'px',\n\t\t\t\t\tmaxWidth: tableData.modal.width + 'px',\n\t\t\t\t}\">\n\t\t\t\t<template #default>\n\t\t\t\t\t<component\n\t\t\t\t\t\t:key=\"`${tableData.modal.rowIndex}:${tableData.modal.colIndex}`\"\n\t\t\t\t\t\t:is=\"tableData.modal.component\"\n\t\t\t\t\t\t:colIndex=\"tableData.modal.colIndex\"\n\t\t\t\t\t\t:rowIndex=\"tableData.modal.rowIndex\"\n\t\t\t\t\t\t:tableid=\"tableData.id\"\n\t\t\t\t\t\tv-bind=\"tableData.modal.componentProps\" />\n\t\t\t\t</template>\n\t\t\t</ATableModal>\n\t\t</slot>\n\t</table>\n</template>\n\n<script setup lang=\"ts\">\nimport { v4 } from 'uuid'\nimport { nextTick, provide, watch } from 'vue'\n\nimport { TableColumn, TableConfig, TableRow } from 'types'\nimport TableDataStore from '.'\nimport ACell from '@/components/ACell.vue'\nimport ARow from '@/components/ARow.vue'\nimport ATableHeader from '@/components/ATableHeader.vue'\nimport ATableModal from '@/components/ATableModal.vue'\n\nconst props = withDefaults(\n\tdefineProps<{\n\t\tid?: string\n\t\tmodelValue: TableRow[]\n\t\tcolumns: TableColumn[]\n\t\trows?: TableRow[]\n\t\tconfig?: TableConfig\n\t\ttableid?: string\n\t}>(),\n\t{\n\t\trows: () => [],\n\t\tconfig: () => new Object(),\n\t}\n)\n\nconst emit = defineEmits(['update:modelValue'])\n\nlet rows = props.modelValue ? props.modelValue : props.rows\n\nlet tableData = new TableDataStore(props.id, props.columns, rows, props.config)\nprovide(tableData.id, tableData)\n\nwatch(\n\t() => tableData.rows,\n\t(newValue, oldValue) => {\n\t\temit('update:modelValue', newValue)\n\t},\n\t{ deep: true }\n)\n\nconst formatCell = (event?: KeyboardEvent, column?: TableColumn, cellData?: any) => {\n\tlet colIndex: number\n\tconst target = event?.target as HTMLTableCellElement\n\tif (event) {\n\t\tcolIndex = target.cellIndex + (tableData.zeroColumn ? -1 : 0)\n\t} else if (column && cellData) {\n\t\tcolIndex = tableData.columns.indexOf(column)\n\t}\n\n\tif (!column && 'format' in tableData.columns[colIndex]) {\n\t\t// TODO: (utils) create helper to extract format from string\n\t\tconst format = tableData.columns[colIndex].format\n\t\tif (typeof format === 'function') {\n\t\t\treturn format(target.innerHTML)\n\t\t} else if (typeof format === 'string') {\n\t\t\t// parse format function from string\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-implied-eval\n\t\t\tconst formatFn: (args: any) => any = Function(`\"use strict\";return (${format})`)()\n\t\t\treturn formatFn(target.innerHTML)\n\t\t} else {\n\t\t\treturn target.innerHTML\n\t\t}\n\t} else if (cellData && 'format' in column) {\n\t\tconst format = column.format\n\t\tif (typeof format === 'function') {\n\t\t\treturn format(cellData)\n\t\t} else if (typeof format === 'string') {\n\t\t\t// parse format function from string\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-implied-eval\n\t\t\tconst formatFn: (args: any) => any = Function(`\"use strict\";return (${format})`)()\n\t\t\treturn formatFn(cellData)\n\t\t} else {\n\t\t\treturn cellData\n\t\t}\n\t} else if (cellData && column.type.toLowerCase() in ['int', 'decimal', 'float', 'number', 'percent']) {\n\t\treturn cellData\n\t\t// TODO: number formatting\n\t} else {\n\t\treturn cellData\n\t}\n}\n\nconst moveCursorToEnd = (target: HTMLElement) => {\n\ttarget.focus()\n\tdocument.execCommand('selectAll', false, null)\n\tdocument.getSelection().collapseToEnd()\n}\n\nconst clickOutside = (event: MouseEvent) => {\n\tif (!tableData.modal.parent?.contains(event.target as HTMLElement)) {\n\t\tif (tableData.modal.visible) {\n\t\t\t// call set data\n\t\t\ttableData.modal.visible = false\n\t\t}\n\t}\n}\n\nwindow.addEventListener('click', clickOutside)\nwindow.addEventListener('keydown', (event: KeyboardEvent) => {\n\tif (event.key === 'Escape') {\n\t\tif (tableData.modal.visible) {\n\t\t\ttableData.modal.visible = false\n\n\t\t\t// focus on the parent cell again\n\t\t\tconst $parent = tableData.modal.parent\n\t\t\tif ($parent) {\n\t\t\t\t// wait for the modal to close\n\t\t\t\tvoid nextTick().then(() => {\n\t\t\t\t\t// for some reason, the parent is not immediately visible in the DOM;\n\t\t\t\t\t// re-fetching the cell to add focus instead\n\t\t\t\t\tconst rowIndex = $parent.dataset.rowindex\n\t\t\t\t\tconst colIndex = $parent.dataset.colindex\n\t\t\t\t\tconst $parentCell = document.querySelectorAll(`[data-rowindex='${rowIndex}'][data-colindex='${colIndex}']`)\n\t\t\t\t\tif ($parentCell) {\n\t\t\t\t\t\t;($parentCell[0] as HTMLTableCellElement).focus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n})\n</script>\n\n<style scoped>\n@import url('@stonecrop/themes/default/default.css');\n\ntable {\n\tdisplay: table;\n\tborder-collapse: collapse;\n\tcaret-color: var(--brand-color);\n}\n\ntable.atable,\n.atable {\n\tfont-family: var(--atable-font-family);\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-size: var(--table-font-size);\n\tborder-collapse: collapse;\n}\n\nth {\n\tbox-sizing: border-box;\n\tbackground-color: var(--brand-color);\n\tborder-width: 1px;\n\tborder-style: solid;\n\tborder-color: var(--header-border-color);\n\tborder-radius: 0px;\n\tcolor: var(--header-text-color);\n}\n</style>\n","import { App } from 'vue'\n\nimport ACell from '@/components/ACell.vue'\nimport AExpansionRow from '@/components/AExpansionRow.vue'\nimport ARow from '@/components/ARow.vue'\nimport ATable from '@/components/ATable.vue'\nimport ATableHeader from '@/components/ATableHeader.vue'\nimport ATableModal from '@/components/ATableModal.vue'\nimport TableDataStore from './components'\n\nfunction install(app: App /* options */) {\n\tapp.component('ACell', ACell)\n\tapp.component('AExpansionRow', AExpansionRow)\n\tapp.component('ARow', ARow)\n\tapp.component('ATable', ATable)\n\tapp.component('ATableHeader', ATableHeader)\n\tapp.component('ATableModal', ATableModal)\n}\n\nexport { install, ACell, AExpansionRow, ARow, ATable, ATableHeader, ATableModal, TableDataStore }\n"],"names":["v","M","F","e","j","H","Q","q","G","U","K","y","t","r","N","z","n","o","l","s","c","a","g","p","i","C","D","d","O","T","J","B","P","X","I","Y","Z","_","ee","f","u","A","E","ne","w","x","re","k","h","S","b","L","R","m","oe","le","ie","$","W","V","props","__props","tableData","inject","cell","ref","cellModified","displayValue","computed","data","format","handleInput","event","domRect","cellWidth","handlers","defaultKeypressHandlers","useKeyboardNav","textAlign","currentData","onFocus","onChange","getIndent","colKey","indent","cellStyle","_a","rowEl","rowExpanded","getRowExpandSymbol","keyboardNav","numberedRowWidth","rowVisible","toggleRowExpand","rowIndex","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","arr","offset","native","v4","options","buf","rnds","TableDataStore","id","columns","rows","config","table","display","reactive","colIndex","column","row","defaultDisplay","parents","value","col","index","getHeaderCellStyle","emit","__emit","provide","watch","newValue","oldValue","clickOutside","$parent","nextTick","$parentCell","install","app","ACell","AExpansionRow","ARow","ATable","ATableHeader","ATableModal"],"mappings":"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","x_google_ignoreList":[4,5,6,7]}
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ [data-v-07dfe445]:root{--primary-color: #0098c9;--primary-text-color: #ffffff;--brand-color: #202a44;--gray-5: #f2f2f2;--gray-10: #e6e6e6;--gray-20: #cccccc;--gray-50: #808080;--gray-60: #666666;--gray-80: #333333;--row-color-zebra-light: #eeeeee;--row-color-zebra-dark: #dddddd;--focus-cell-background: #ffffff;--focus-cell-outline: #000000;--cell-border-color: #ffffff;--cell-text-color: #3a3c41;--active-cell-background: #ffffff;--active-cell-outline: #e6a92d;--row-border-color: var(--gray-20);--header-border-color: #ffffff;--header-text-color: var(--gray-20);--row-number-background-color: #ffffff;--input-border-color: var(--gray-20);--input-label-color: var(--gray-80);--input-active-border-color: #000000;--input-active-label-color: #000000;--required-border: #e63c28;--font-size: 11pt;--font-family: Arimo, Arial, sans-serif;--table-font-size: 11pt;--atable-font-family: "Arimo", sans-serif;--atable-row-padding: 0px;--atable-row-height: 1.5em}td[data-v-07dfe445]{border-radius:0;box-sizing:border-box;margin:0;outline:none;box-shadow:none;color:var(--cell-text-color);text-overflow:ellipsis;overflow:hidden;padding-left:.5ch!important;padding-right:.5ch;padding-top:var(--atable-row-padding);padding-bottom:var(--atable-row-padding);border-spacing:0px;border-collapse:collapse}td[data-v-07dfe445]:focus,td[data-v-07dfe445]:focus-within{background-color:var(--focus-cell-background);outline-width:2px;outline-style:solid;outline-color:var(--focus-cell-outline);box-shadow:none;min-height:1.15em;max-height:1.15em;overflow:hidden}[data-v-b2e2ed2d]:root{--primary-color: #0098c9;--primary-text-color: #ffffff;--brand-color: #202a44;--gray-5: #f2f2f2;--gray-10: #e6e6e6;--gray-20: #cccccc;--gray-50: #808080;--gray-60: #666666;--gray-80: #333333;--row-color-zebra-light: #eeeeee;--row-color-zebra-dark: #dddddd;--focus-cell-background: #ffffff;--focus-cell-outline: #000000;--cell-border-color: #ffffff;--cell-text-color: #3a3c41;--active-cell-background: #ffffff;--active-cell-outline: #e6a92d;--row-border-color: var(--gray-20);--header-border-color: #ffffff;--header-text-color: var(--gray-20);--row-number-background-color: #ffffff;--input-border-color: var(--gray-20);--input-label-color: var(--gray-80);--input-active-border-color: #000000;--input-active-label-color: #000000;--required-border: #e63c28;--font-size: 11pt;--font-family: Arimo, Arial, sans-serif;--table-font-size: 11pt;--atable-font-family: "Arimo", sans-serif;--atable-row-padding: 0px;--atable-row-height: 1.5em}.row-index[data-v-b2e2ed2d]{color:var(--header-text-color);font-weight:700;text-align:center;-webkit-user-select:none;user-select:none;width:2ch}.expandable-row[data-v-b2e2ed2d]{border-top:1px solid var(--row-border-color);height:var(--atable-row-height)}.expanded-row[data-v-b2e2ed2d]{border-bottom:1px solid var(--row-border-color);border-top:1px solid var(--row-border-color)}.expanded-row-content[data-v-b2e2ed2d]{border-bottom:1px solid var(--row-border-color);border-top:1px solid var(--row-border-color);padding:1.5rem}[data-v-4c71a067]:root{--primary-color: #0098c9;--primary-text-color: #ffffff;--brand-color: #202a44;--gray-5: #f2f2f2;--gray-10: #e6e6e6;--gray-20: #cccccc;--gray-50: #808080;--gray-60: #666666;--gray-80: #333333;--row-color-zebra-light: #eeeeee;--row-color-zebra-dark: #dddddd;--focus-cell-background: #ffffff;--focus-cell-outline: #000000;--cell-border-color: #ffffff;--cell-text-color: #3a3c41;--active-cell-background: #ffffff;--active-cell-outline: #e6a92d;--row-border-color: var(--gray-20);--header-border-color: #ffffff;--header-text-color: var(--gray-20);--row-number-background-color: #ffffff;--input-border-color: var(--gray-20);--input-label-color: var(--gray-80);--input-active-border-color: #000000;--input-active-label-color: #000000;--required-border: #e63c28;--font-size: 11pt;--font-family: Arimo, Arial, sans-serif;--table-font-size: 11pt;--atable-font-family: "Arimo", sans-serif;--atable-row-padding: 0px;--atable-row-height: 1.5em}.table-row[data-v-4c71a067]{border-top:1px solid var(--row-border-color);height:var(--atable-row-height)}.list-index[data-v-4c71a067]{color:var(--header-text-color);font-weight:700;padding-left:var(--atable-row-padding);padding-right:1em;text-align:center;-webkit-user-select:none;user-select:none;width:var(--5b18ee03);max-width:var(--5b18ee03)}.tree-index[data-v-4c71a067]{color:var(--header-text-color);font-weight:700;text-align:center;-webkit-user-select:none;user-select:none;width:2ch}[data-v-16e66636]:root{--primary-color: #0098c9;--primary-text-color: #ffffff;--brand-color: #202a44;--gray-5: #f2f2f2;--gray-10: #e6e6e6;--gray-20: #cccccc;--gray-50: #808080;--gray-60: #666666;--gray-80: #333333;--row-color-zebra-light: #eeeeee;--row-color-zebra-dark: #dddddd;--focus-cell-background: #ffffff;--focus-cell-outline: #000000;--cell-border-color: #ffffff;--cell-text-color: #3a3c41;--active-cell-background: #ffffff;--active-cell-outline: #e6a92d;--row-border-color: var(--gray-20);--header-border-color: #ffffff;--header-text-color: var(--gray-20);--row-number-background-color: #ffffff;--input-border-color: var(--gray-20);--input-label-color: var(--gray-80);--input-active-border-color: #000000;--input-active-label-color: #000000;--required-border: #e63c28;--font-size: 11pt;--font-family: Arimo, Arial, sans-serif;--table-font-size: 11pt;--atable-font-family: "Arimo", sans-serif;--atable-row-padding: 0px;--atable-row-height: 1.5em}thead[data-v-16e66636]{background-color:var(--gray-5)}#header-index[data-v-16e66636]{width:var(--12d06943);max-width:var(--12d06943)}th[data-v-16e66636]{border-width:0px;border-style:solid;border-radius:0;padding-left:.5ch;padding-right:.5ch;padding-top:var(--atable-row-padding);padding-bottom:var(--atable-row-padding);color:var(--gray-60);height:var(--atable-row-height)}th[data-v-16e66636]:focus{outline:none}[data-v-10a48b2a]:root{--primary-color: #0098c9;--primary-text-color: #ffffff;--brand-color: #202a44;--gray-5: #f2f2f2;--gray-10: #e6e6e6;--gray-20: #cccccc;--gray-50: #808080;--gray-60: #666666;--gray-80: #333333;--row-color-zebra-light: #eeeeee;--row-color-zebra-dark: #dddddd;--focus-cell-background: #ffffff;--focus-cell-outline: #000000;--cell-border-color: #ffffff;--cell-text-color: #3a3c41;--active-cell-background: #ffffff;--active-cell-outline: #e6a92d;--row-border-color: var(--gray-20);--header-border-color: #ffffff;--header-text-color: var(--gray-20);--row-number-background-color: #ffffff;--input-border-color: var(--gray-20);--input-label-color: var(--gray-80);--input-active-border-color: #000000;--input-active-label-color: #000000;--required-border: #e63c28;--font-size: 11pt;--font-family: Arimo, Arial, sans-serif;--table-font-size: 11pt;--atable-font-family: "Arimo", sans-serif;--atable-row-padding: 0px;--atable-row-height: 1.5em}div[data-v-10a48b2a]{z-index:100;position:absolute;background-color:var(--row-color-zebra-dark)}[data-v-819abcc5]:root{--primary-color: #0098c9;--primary-text-color: #ffffff;--brand-color: #202a44;--gray-5: #f2f2f2;--gray-10: #e6e6e6;--gray-20: #cccccc;--gray-50: #808080;--gray-60: #666666;--gray-80: #333333;--row-color-zebra-light: #eeeeee;--row-color-zebra-dark: #dddddd;--focus-cell-background: #ffffff;--focus-cell-outline: #000000;--cell-border-color: #ffffff;--cell-text-color: #3a3c41;--active-cell-background: #ffffff;--active-cell-outline: #e6a92d;--row-border-color: var(--gray-20);--header-border-color: #ffffff;--header-text-color: var(--gray-20);--row-number-background-color: #ffffff;--input-border-color: var(--gray-20);--input-label-color: var(--gray-80);--input-active-border-color: #000000;--input-active-label-color: #000000;--required-border: #e63c28;--font-size: 11pt;--font-family: Arimo, Arial, sans-serif;--table-font-size: 11pt;--atable-font-family: "Arimo", sans-serif;--atable-row-padding: 0px;--atable-row-height: 1.5em}table[data-v-819abcc5]{display:table;border-collapse:collapse;caret-color:var(--brand-color)}table.atable[data-v-819abcc5],.atable[data-v-819abcc5]{font-family:var(--atable-font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:var(--table-font-size);border-collapse:collapse}th[data-v-819abcc5]{box-sizing:border-box;background-color:var(--brand-color);border-width:1px;border-style:solid;border-color:var(--header-border-color);border-radius:0;color:var(--header-text-color)}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@stonecrop/atable",
3
+ "version": "0.2.5",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/atable.js",
9
+ "require": "./dist/atable.umd.cjs"
10
+ },
11
+ "./styles": "./dist/style.css"
12
+ },
13
+ "main": "dist/atable.js",
14
+ "module": "dist/atable.js",
15
+ "types": "src/index",
16
+ "files": [
17
+ "dist/*",
18
+ "src/**/*.vue"
19
+ ],
20
+ "dependencies": {
21
+ "uuid": "^9.0.0",
22
+ "vue": "^3.2.47",
23
+ "@stonecrop/utilities": "0.2.5",
24
+ "@stonecrop/themes": "0.2.5"
25
+ },
26
+ "devDependencies": {
27
+ "@histoire/plugin-vue": "^0.16.1",
28
+ "@types/uuid": "^9.0.0",
29
+ "@typescript-eslint/eslint-plugin": "^5.59.5",
30
+ "@typescript-eslint/parser": "^5.59.5",
31
+ "@vitejs/plugin-vue": "^4.2.1",
32
+ "@vitest/coverage-c8": "^0.31.0",
33
+ "@vitest/ui": "^0.31.0",
34
+ "@vue/test-utils": "^2.3.2",
35
+ "cypress": "^12.11.0",
36
+ "eslint": "^8.40.0",
37
+ "eslint-config-prettier": "^8.8.0",
38
+ "eslint-plugin-vue": "^9.11.1",
39
+ "histoire": "^0.16.1",
40
+ "jsdom": "^22.0.0",
41
+ "typescript": "^5.0.4",
42
+ "vite": "^4.3.5",
43
+ "vitest": "^0.31.0",
44
+ "vue-router": "^4",
45
+ "@stonecrop/aform": "0.2.5"
46
+ },
47
+ "peerDependencies": {
48
+ "@stonecrop/aform": "0.2.5"
49
+ },
50
+ "engines": {
51
+ "node": ">=20.11.0"
52
+ },
53
+ "umd": "dist/atable.umd.cjs",
54
+ "scripts": {
55
+ "build": "tsc -b && vite build",
56
+ "dev": "vite",
57
+ "lint": "eslint . --ext .ts,.vue",
58
+ "preview": "vite preview",
59
+ "story:build": "histoire build",
60
+ "story:dev": "histoire dev",
61
+ "story:preview": "histoire preview",
62
+ "test": "vitest",
63
+ "test:coverage": "vitest run --coverage",
64
+ "test:ui": "vitest --ui"
65
+ }
66
+ }