{"version":3,"file":"index.umd.cjs","names":["formatDecimal","formatRounded","formatPrefixAuto","identity","formatGroup","formatNumerals","formatTypes","formatTrim","exponent","formatLocale","namespaces","namespace","selector","selectorAll","matcher","sparse","constant","sparse","namespace","defaultView","creator","creator","selector","defaultView","selection_select","selection_selectAll","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch"],"sources":["../src/__package__.ts","../src/dgrid-shim.ts","../src/RowFormatter.ts","../src/DBStore.ts","../src/Common.ts","../../../node_modules/d3-format/src/formatDecimal.js","../../../node_modules/d3-format/src/exponent.js","../../../node_modules/d3-format/src/formatGroup.js","../../../node_modules/d3-format/src/formatNumerals.js","../../../node_modules/d3-format/src/formatSpecifier.js","../../../node_modules/d3-format/src/formatTrim.js","../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../node_modules/d3-format/src/formatRounded.js","../../../node_modules/d3-format/src/formatTypes.js","../../../node_modules/d3-format/src/identity.js","../../../node_modules/d3-format/src/locale.js","../../../node_modules/d3-format/src/defaultLocale.js","../../../node_modules/d3-selection/src/namespaces.js","../../../node_modules/d3-selection/src/namespace.js","../../../node_modules/d3-selection/src/creator.js","../../../node_modules/d3-selection/src/selector.js","../../../node_modules/d3-selection/src/selection/select.js","../../../node_modules/d3-selection/src/selectorAll.js","../../../node_modules/d3-selection/src/selection/selectAll.js","../../../node_modules/d3-selection/src/matcher.js","../../../node_modules/d3-selection/src/selection/filter.js","../../../node_modules/d3-selection/src/selection/sparse.js","../../../node_modules/d3-selection/src/selection/enter.js","../../../node_modules/d3-selection/src/constant.js","../../../node_modules/d3-selection/src/selection/data.js","../../../node_modules/d3-selection/src/selection/exit.js","../../../node_modules/d3-selection/src/selection/join.js","../../../node_modules/d3-selection/src/selection/merge.js","../../../node_modules/d3-selection/src/selection/order.js","../../../node_modules/d3-selection/src/selection/sort.js","../../../node_modules/d3-selection/src/selection/call.js","../../../node_modules/d3-selection/src/selection/nodes.js","../../../node_modules/d3-selection/src/selection/node.js","../../../node_modules/d3-selection/src/selection/size.js","../../../node_modules/d3-selection/src/selection/empty.js","../../../node_modules/d3-selection/src/selection/each.js","../../../node_modules/d3-selection/src/selection/attr.js","../../../node_modules/d3-selection/src/window.js","../../../node_modules/d3-selection/src/selection/style.js","../../../node_modules/d3-selection/src/selection/property.js","../../../node_modules/d3-selection/src/selection/classed.js","../../../node_modules/d3-selection/src/selection/text.js","../../../node_modules/d3-selection/src/selection/html.js","../../../node_modules/d3-selection/src/selection/raise.js","../../../node_modules/d3-selection/src/selection/lower.js","../../../node_modules/d3-selection/src/selection/append.js","../../../node_modules/d3-selection/src/selection/insert.js","../../../node_modules/d3-selection/src/selection/remove.js","../../../node_modules/d3-selection/src/selection/clone.js","../../../node_modules/d3-selection/src/selection/datum.js","../../../node_modules/d3-selection/src/selection/on.js","../../../node_modules/d3-selection/src/selection/dispatch.js","../../../node_modules/d3-selection/src/selection/index.js","../../../node_modules/d3-selection/src/select.js","../src/Table.ts","../src/ColumnSetTable.ts","../src/DatasourceStore.ts","../src/DatasourceTable.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/dgrid\";\nexport const PKG_VERSION = \"3.9.6\";\nexport const BUILD_VERSION = \"3.29.1\";\n","import type * as dgrid_shim from \"@hpcc-js/dgrid-shim\";\n\n//  Note:  Resolved at build time and inlined into the dgrid bundle.\n// @ts-expect-error\nimport dgridShimBundle from \"@hpcc-js/dgrid-shim/dist/index.js?raw\";\nconst loadDgridShim = new Function(\"globalThis\", \"var self = globalThis; var window = globalThis;\" + dgridShimBundle);\n\nif (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\n    loadDgridShim(globalThis);\n    if (!globalThis[\"@hpcc-js/dgrid-shim\"]) {\n        console.error(\"dgrid-shim failed to load from inlined bundle\");\n    }\n}\n\nexport const Deferred = globalThis[\"@hpcc-js/dgrid-shim\"].Deferred as typeof dgrid_shim.Deferred;\nexport const Memory = globalThis[\"@hpcc-js/dgrid-shim\"].Memory as typeof dgrid_shim.Memory;\nexport const QueryResults = globalThis[\"@hpcc-js/dgrid-shim\"].QueryResults as typeof dgrid_shim.QueryResults;\nexport const Grid = globalThis[\"@hpcc-js/dgrid-shim\"].Grid as typeof dgrid_shim.Grid;\nexport const PagingGrid = globalThis[\"@hpcc-js/dgrid-shim\"].PagingGrid as typeof dgrid_shim.PagingGrid;\nexport const ColumnSetGrid = globalThis[\"@hpcc-js/dgrid-shim\"].ColumnSetGrid as typeof dgrid_shim.ColumnSetGrid;\nexport const domConstruct = globalThis[\"@hpcc-js/dgrid-shim\"].domConstruct as typeof dgrid_shim.domConstruct;\n","function entitiesEncode(str) {\n    return String(str).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\");\n}\n\nfunction safeEncode(item) {\n    switch (Object.prototype.toString.call(item)) {\n        case \"[object Undefined]\":\n        case \"[object Boolean]\":\n        case \"[object Number]\":\n            return item;\n        case \"[object String]\":\n            return entitiesEncode(item);\n        default:\n            console.warn(\"Unknown cell type:  \" + Object.prototype.toString.call(item));\n    }\n    return item;\n}\n\nfunction isArray(obj: any): obj is any[] {\n    return obj instanceof Array;\n}\n\nconst LINE_SPLITTER = \"<br><hr class='dgrid-fakeline'>\";\nconst LINE_SPLITTER2 = \"<br><hr class='dgrid-fakeline' style='visibility: hidden'>\";\n\nexport interface ColumnType {\n    field: string;\n    leafID: string;\n    label: string;\n    idx: number;\n    className: string;\n    sortable: boolean;\n    hidden: boolean;\n    isSet: boolean;\n    width?: number;\n    formatter?: CellFormatter;\n    renderCell?: CellRenderer;\n    children?: ColumnType[];\n}\nexport interface RowType {\n    __hpcc_id: number;\n    __origRow: any[];\n    [colIdx: number]: any;\n}\nexport type CellFormatter = (this: ColumnType, cell: any, row: RowType) => string;\nexport type CellRenderer = (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement) => HTMLElement | void;\n\nexport class RowFormatter {\n    private _columns: ColumnType[];\n    private _flattenedColumns = [];\n    private _columnIdx = {};\n    private _formattedRow = {};\n\n    constructor(columns: ColumnType[], protected _renderHtml) {\n        this._columns = columns;\n        this.flattenColumns(columns);\n    }\n\n    flattenColumns(columns: ColumnType[]) {\n        for (const column of columns) {\n            this.flattenColumn(column);\n        }\n    }\n\n    flattenColumn(column: ColumnType) {\n        if (column.children) {\n            for (const childColumn of column.children) this.flattenColumn(childColumn);\n        } else {\n            this._columnIdx[column.field] = this._flattenedColumns.length;\n            this._flattenedColumns.push(column.field);\n        }\n    }\n\n    format(row) {\n        this._formattedRow = {};\n        this.formatRow(this._columns, row);\n        return this.row();\n    }\n\n    calcDepth(columns: ColumnType[], row) {\n        let maxChildDepth = 1;\n        for (const column of columns) {\n            if (column.children && row[column.leafID]) {\n                let childDepth = 0;\n                let childRows = [];\n                if (isArray(row[column.leafID])) {\n                    childRows = row[column.leafID];\n                } else if (isArray(row[column.leafID].Row)) {\n                    childRows = row[column.leafID].Row;\n                }\n                for (const childRow of childRows) {\n                    childDepth += this.calcDepth(column.children, childRow);\n                }\n                maxChildDepth = Math.max(maxChildDepth, childDepth);\n            }\n        }\n        return maxChildDepth;\n    }\n\n    formatCell(column: ColumnType, cell, maxChildDepth) {\n        if (column.children) {\n            let childDepth = 0;\n            if (!isArray(cell)) {\n                if (isArray(cell.Row)) {\n                    cell = cell.Row;\n                } else {\n                    cell = [cell];\n                }\n            }\n            for (const row of cell) {\n                childDepth = Math.max(childDepth, this.formatRow(column.children, row));\n            }\n        } else {\n            if (column.isSet) {\n                cell = JSON.stringify(cell.Item);\n            }\n            if (this._formattedRow[column.field] === undefined) {\n                this._formattedRow[column.field] = \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n            } else {\n                this._formattedRow[column.field] += LINE_SPLITTER;\n                this._formattedRow[column.field] += \"\" + (cell === undefined ? \"\" : (this._renderHtml ? cell : safeEncode(cell)));\n            }\n            if (maxChildDepth > 1) {\n                const paddingArr = [];\n                paddingArr.length = maxChildDepth;\n                const padding = paddingArr.join(LINE_SPLITTER2);\n                this._formattedRow[column.field] += padding;\n            }\n        }\n    }\n\n    formatRow(columns: ColumnType[], row: { [key: string]: any } = [], rowIdx: number = 0) {\n        const maxChildDepth = this.calcDepth(columns, row);\n        for (const column of columns) {\n            this.formatCell(column, row[column.leafID], maxChildDepth);\n        }\n        return maxChildDepth;\n    }\n\n    row() {\n        const retVal = {};\n        for (const column of this._flattenedColumns) {\n            retVal[column] = this._formattedRow[column];\n        }\n        return retVal;\n    }\n}\n","import { Database } from \"@hpcc-js/common\";\nimport { Deferred } from \"./dgrid-shim.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport class DBStore {\n    private _db: Database.Grid;\n\n    Model: null;\n    idProperty: \"__hpcc_id\";\n\n    constructor(db: Database.Grid) {\n        this._db = db;\n    }\n\n    protected _renderHtml = true;\n    renderHtml(_: boolean) {\n        this._renderHtml = _;\n    }\n\n    db2Columns(sortable: boolean, fields: Database.Field[], prefix = \"\", formatter?: CellFormatter, renderCell?: CellRenderer): ColumnType[] {\n        if (!fields) return [];\n        return fields.map((field, idx) => {\n            const label = field.label();\n            const column: ColumnType = {\n                label,\n                leafID: \"\" + idx,\n                field: prefix + idx,\n                idx,\n                className: \"resultGridCell\",\n                sortable,\n                hidden: false,\n                isSet: false\n            };\n            switch (field.type()) {\n                case \"nested\":\n                    column.children = this.db2Columns(false, field.children(), prefix + idx + \"_\", formatter);\n                    column.sortable = false;\n                    break;\n                default:\n                    column.formatter = formatter;\n                    column.renderCell = renderCell;\n            }\n            return column;\n        });\n    }\n\n    columns(sortable: boolean, formatter?: CellFormatter, renderCell?: CellRenderer) {\n        return this.db2Columns(sortable, this._db.fields(), \"\", formatter, renderCell);\n    }\n\n    getIdentity(object) {\n        return object.__hpcc_id;\n    }\n\n    get(row: number) {\n        return this._db.row(row + 1);\n    }\n\n    _fetchRange(opts: { start: number, end: number }): object[] {\n        const rowFormatter = new RowFormatter(this.columns(false), this._renderHtml);\n        return this._db.data().slice(opts.start, opts.end).map((row, idx) => {\n            const formattedRow: any = rowFormatter.format(row);\n            return {\n                ...formattedRow,\n                __hpcc_id: opts.start + idx,\n                __origRow: row\n            };\n        });\n    }\n\n    fetchRange(opts: { start: number, end: number }): Promise<object[]> {\n        const data = this._fetchRange(opts);\n        const retVal: any = new Deferred();\n        retVal.totalLength = new Deferred();\n        retVal.resolve(data);\n        retVal.totalLength.resolve(this._db.length() - 1);\n        return retVal;\n    }\n\n    sort(opts) {\n        this._db.data().sort((l, r) => {\n            for (const item of opts) {\n                const idx = item.property;\n                if ((l[idx] === undefined && r[idx] !== undefined) || l[idx] < r[idx]) return item.descending ? 1 : -1;\n                if ((l[idx] !== undefined && r[idx] === undefined) || l[idx] > r[idx]) return item.descending ? -1 : 1;\n            }\n            return 0;\n        });\n        return this;\n    }\n}\n","import { HTMLWidget, Selection } from \"@hpcc-js/common\";\nimport { Grid, PagingGrid } from \"./dgrid-shim.ts\";\nimport { DBStore } from \"./DBStore.ts\";\nimport { type ColumnType } from \"./RowFormatter.ts\";\n\nimport \"../src/Common.css\";\n\nexport class Common extends HTMLWidget {\n    protected _columns: ColumnType[] = [];\n    protected _store = new DBStore(this._db);\n    protected _dgridDiv: Selection<HTMLDivElement, unknown, HTMLElement, unknown>;\n    protected _dgrid: typeof PagingGrid | typeof Grid;\n    protected _prevPaging: boolean;\n    private _prevSortBy: string;\n    private _prevSortByDescending: boolean;\n    private _prevMultiSelect: boolean;\n\n    constructor() {\n        super();\n        this._tag = \"div\";\n    }\n\n    protected formatSortBy(): [{ property: string, descending: boolean }] | undefined {\n        const idx = this.columns().indexOf(this.sortBy());\n        return idx >= 0 ? [{ property: idx.toString(), descending: this.sortByDescending() }] : undefined;\n    }\n\n    protected _supressEvents;\n    selection(): any[];\n    selection(_: any[]): this;\n    selection(_?: any[]): any[] | this {\n        if (!arguments.length) {\n            const retVal = [];\n            for (const id in this._dgrid.selection) {\n                if (this._dgrid.selection[id]) {\n                    const storeItem = this._store.get(+id);\n                    retVal.push(this.rowToObj(storeItem));\n                }\n            }\n            return retVal;\n        }\n        this._supressEvents = true;\n        this._dgrid?.clearSelection();\n        let first = true;\n        this.data().forEach((row, idx) => {\n            if (_.indexOf(row) >= 0) {\n                const row = this._dgrid?.row(idx);\n                if (row.element && first) {\n                    first = false;\n                    row.element.scrollIntoView();\n                }\n                this._dgrid?.select(idx);\n            }\n        });\n        this._supressEvents = false;\n    }\n\n    enter(domNode, element) {\n        super.enter(domNode, element);\n        this._dgridDiv = element.append(\"div\")\n            .attr(\"class\", \"flat\")\n            ;\n    }\n\n    update(domNode, element) {\n        super.update(domNode, element);\n\n        this._store.renderHtml(this.renderHtml());\n\n        if (!this._dgrid || this._prevPaging !== this.pagination() ||\n            this._prevSortBy !== this.sortBy() ||\n            this._prevSortByDescending !== this.sortByDescending() ||\n            this._prevMultiSelect !== this.multiSelect()) {\n\n            this._prevPaging = this.pagination();\n            this._prevSortBy = this.sortBy();\n            this._prevSortByDescending = this.sortByDescending();\n            this._prevMultiSelect = this.multiSelect();\n            if (this._dgrid) {\n                this._dgrid.destroy();\n                this._dgridDiv = element.append(\"div\")\n                    .attr(\"class\", \"flat\")\n                    ;\n            }\n            this._dgrid = this._createGrid({\n                ...this._gridColumnsConfig(),\n                collection: this._store,\n                sort: this.formatSortBy(),\n                selectionMode: this.multiSelect() ? \"extended\" : \"single\",\n                deselectOnRefresh: true,\n                cellNavigation: false,\n                pagingLinks: 1,\n                pagingTextBox: true,\n                previousNextArrows: true,\n                firstLastArrows: true,\n                rowsPerPage: this.pageSize(),\n                pageSizeOptions: [1, 10, 25, 50, 100, 1000]\n            }, this._dgridDiv.node());\n            this._dgrid.on(\"dgrid-select\", (evt) => {\n                if (this._supressEvents) return;\n                if (evt.rows && evt.rows.length && evt.rows[0].data) {\n                    this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", true, { selection: this.selection() });\n                }\n            });\n            this._dgrid.on(\"dgrid-deselect\", (evt) => {\n                if (this._supressEvents) return;\n                if (evt.rows && evt.rows.length && evt.rows[0].data) {\n                    this.click(this.rowToObj(evt.rows[0].data.__origRow), \"\", false, { selection: this.selection() });\n                }\n            });\n            this._dgrid.on(\"dgrid-column-autofit\", (evt) => {\n                if (this._supressEvents) return;\n                if (evt.detail?.label) {\n                    const column = this._columns.find(c => c.label === evt.detail.label);\n                    if (!column) return;\n                    this.dblclickColResize(column.label, column);\n                }\n            });\n            this._dgrid.refresh({});\n        }\n        this._dgrid.noDataMessage = `<span class='dojoxGridNoData'>${this.noDataMessage()}</span>`;\n        this._dgrid.loadingMessage = `<span class='dojoxGridNoData'>${this.loadingMessage()}</span>`;\n\n        this._dgridDiv\n            .style(\"width\", this.width() + \"px\")\n            .style(\"height\", this.height() - 2 + \"px\")\n            ;\n        this._dgrid.resize();\n    }\n\n    exit(domNode, element) {\n        delete this._prevPaging;\n        if (this._dgrid) {\n            this._dgrid.destroy();\n            delete this._dgrid;\n        }\n        super.exit(domNode, element);\n    }\n\n    click(row, col, sel, more) {\n    }\n\n    dblclickColResize(column, dgridColumn) {\n    }\n\n    protected _gridColumnsConfig(): object {\n        return { columns: this._columns };\n    }\n\n    protected _createGrid(opts: any, node: HTMLElement): any {\n        return new (this._prevPaging ? PagingGrid : Grid)(opts, node);\n    }\n}\nCommon.prototype._class += \" dgrid_Common\";\n\nexport interface Common {\n    noDataMessage(): string;\n    noDataMessage(_: string): this;\n    loadingMessage(): string;\n    loadingMessage(_: string): this;\n    pagination(): boolean;\n    pagination(_: boolean): this;\n    pageSize(): number;\n    pageSize(_: number): this;\n    sortable(): boolean;\n    sortable(_: boolean): this;\n    sortBy(): string;\n    sortBy(_: string): this;\n    sortByDescending(): boolean;\n    sortByDescending(_: boolean): this;\n    multiSelect(): boolean;\n    multiSelect(_: boolean): this;\n    renderHtml(): boolean;\n    renderHtml(_: boolean): this;\n}\n\nCommon.prototype.publish(\"noDataMessage\", \"...empty...\", \"string\", \"No Data Message\");\nCommon.prototype.publish(\"loadingMessage\", \"loading...\", \"string\", \"Loading Message\");\nCommon.prototype.publish(\"pagination\", false, \"boolean\", \"Enable paging\");\nCommon.prototype.publish(\"pageSize\", 25, \"number\", \"Page size\");\nCommon.prototype.publish(\"sortable\", false, \"boolean\", \"Enable sorting by column\");\nCommon.prototype.publish(\"sortBy\", null, \"set\", \"Default 'sort by' Column ID\", function (this: Common) { return this.columns(); }, { optional: true });\nCommon.prototype.publish(\"sortByDescending\", false, \"boolean\", \"Default 'sort by' descending\", undefined, { disable: self => !self.sortBy() });\nCommon.prototype.publish(\"multiSelect\", false, \"boolean\", \"Multiple Selection\");\nCommon.prototype.publish(\"renderHtml\", true, \"boolean\", \"Render HTML\");\n\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": formatDecimal,\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nexport default function(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  var size = 0;\n  this.each(function() { ++size; });\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!(\"onmouseenter\" in element)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = event; // Events can be reentrant (e.g., focus).\n    event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      event = event0;\n    }\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, capture) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n  var event0 = event;\n  event1.sourceEvent = event;\n  event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    event = event0;\n  }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","﻿import { Palette, PropertyExt, Field, Utility } from \"@hpcc-js/common\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { format as d3Format } from \"d3-format\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Common } from \"./Common.ts\";\nimport { CellFormatter, CellRenderer, ColumnType, RowType } from \"./RowFormatter.ts\";\n\n//  ColumnPalette ---\nexport class ColumnFormat extends PropertyExt {\n    _owner: Table;\n\n    constructor() {\n        super();\n    }\n\n    owner(): Table;\n    owner(_: Table): this;\n    owner(_?: Table): Table | this {\n        if (!arguments.length) return this._owner;\n        this._owner = _;\n        return this;\n    }\n\n    valid(): boolean {\n        return !!this.column();\n    }\n\n    formatterFunc(): CellFormatter | undefined {\n        const defaultFormatter = this._owner.formatterFunc();\n        if (this.valid() && this.format()) {\n            const numberFormatter = d3Format(this.format());\n\n            return function (this: ColumnType, cell: any, row: RowType): string {\n                if (typeof cell === \"number\")\n                    return numberFormatter(cell);\n                return defaultFormatter.call(this, cell, row);\n            };\n        }\n        return defaultFormatter;\n    }\n\n    renderCellFunc(): CellRenderer | undefined {\n        const defaultRenderCell = this._owner.renderCellFunc();\n        const defaultFormatter = this.formatterFunc();\n        if (this.valid() && this.paletteID()) {\n            const columns = this._owner.columns();\n            const palette = Palette.rainbow(this.paletteID());\n            const min = this.min();\n            const max = this.max();\n            const valueColIdx = this.valueColumn() ? columns.indexOf(this.valueColumn()) : undefined;\n            return function (this: ColumnType, row: RowType, cell: any, cellElement: HTMLElement): HTMLElement | void {\n                if (defaultRenderCell) {\n                    defaultRenderCell.call(this, row, cell, cellElement);\n                }\n                const value = valueColIdx ? row.__origRow[valueColIdx] : cell;\n                const background = palette(value, min, max);\n                const cellText: any = defaultFormatter.call(this, cell, row);\n                d3Select(cellElement)\n                    .style(\"background\", background)\n                    .style(\"color\", background && Palette.textColor(background))\n                    .text(cellText?.html ?? cellText ?? cell)\n                    ;\n            };\n        }\n        return defaultRenderCell;\n    }\n}\nColumnFormat.prototype._class += \" dgrid_Table.ColumnFormat\";\n\nexport interface ColumnFormat {\n    column(): string;\n    column(_: string): this;\n    width(): number;\n    width(_: number): this;\n    format(): string;\n    format(_: string): this;\n    paletteID(): string;\n    paletteID(_: string): this;\n    min(): number;\n    min(_: number): this;\n    max(): number;\n    max(_: number): this;\n    valueColumn(): string;\n    valueColumn(_: string): this;\n}\nColumnFormat.prototype.publish(\"column\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true });\nColumnFormat.prototype.publish(\"width\", null, \"number\", \"Width\", null, { optional: true });\nColumnFormat.prototype.publish(\"format\", null, \"string\", \"Format (d3-format)\", null, { optional: true });\nColumnFormat.prototype.publish(\"paletteID\", null, \"set\", \"Color palette for this widget\", [\"\", ...Palette.rainbow(\"default\").switch()], { optional: true });\nColumnFormat.prototype.publish(\"min\", 0, \"number\", \"Min Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"max\", 100, \"number\", \"Max Value\", null, { disable: (cf: ColumnFormat) => !cf.paletteID() });\nColumnFormat.prototype.publish(\"valueColumn\", null, \"set\", \"Column\", function (this: ColumnFormat) { return this._owner.columns(); }, { optional: true, disable: (cf: ColumnFormat) => !cf.paletteID() });\n\n//  Table ---\nexport class Table extends Common {\n    private _prevColsHash;\n    private _prevFieldsHash;\n    _colsRefresh = false;\n    _dataRefresh = false;\n\n    constructor() {\n        super();\n    }\n\n    fields(): Field[];\n    fields(_: Field[]): this;\n    fields(_?: Field[]): Field[] | this {\n        const retVal = super.fields.apply(this, arguments as any);\n        if (arguments.length) {\n            const hash = hashSum({ _ });\n            if (this._prevFieldsHash !== hash) {\n                this._prevFieldsHash = hash;\n                this._colsRefresh = true;\n            }\n        }\n        return retVal;\n    }\n\n    columns(): string[];\n    columns(_: string[], asDefault?: boolean): this;\n    columns(_?: string[], asDefault?: boolean): string[] | this {\n        const retVal = super.columns.apply(this, arguments as any);\n        if (arguments.length) {\n            const hash = hashSum({ _ });\n            if (this._prevColsHash !== hash) {\n                this._prevColsHash = hash;\n                this._colsRefresh = true;\n            }\n        }\n        return retVal;\n    }\n\n    data(): any;\n    data(_: any): this;\n    data(_?: any): any | this {\n        const retVal = super.data.apply(this, arguments as any);\n        if (arguments.length) {\n            this._dataRefresh = true;\n        }\n        return retVal;\n    }\n\n    enter(domNode, element) {\n        super.enter(domNode, element);\n    }\n\n    guessWidth(columns, data) {\n        const sortablePadding = this.sortable() ? 12 : 0;\n        for (const column of columns) {\n            if (column.children) {\n                let sampleData = [];\n                for (let i = 0; i < Math.min(3, data.length); ++i) {\n                    sampleData = sampleData.concat(data[i][column.idx]);\n                }\n                this.guessWidth(column.children, sampleData);\n            } else {\n                column.width = data.reduce((prevVal: number, row) => {\n                    let cell = (\"\" + row[column.idx]).trim();\n                    if (this.renderHtml() && cell[0] === \"<\") {\n                        cell = Utility.removeHTMLFromString(cell);\n                    }\n                    return Math.max(prevVal, this.textSize(cell, this.columnWidthAutoFontName(), this.columnWidthAutoFontSize()).width);\n                }, this.textSize(\"\" + column.label, this.columnWidthAutoFontName(), this.columnWidthAutoFontSize(), true).width + sortablePadding) + 8; // +12 for the sort icon, +8 for the cell padding.\n            }\n        }\n    }\n\n    _prevHash;\n    update(domNode, element) {\n        super.update(domNode, element);\n        const hash = this.hashSum();\n        if (this._prevHash !== hash) {\n            this._prevHash = hash;\n            this._colsRefresh = true;\n        }\n        if (this._colsRefresh) {\n            this._columns = this._store.columns(this.sortable(), this.formatterFunc(), this.renderCellFunc());\n            switch (this.columnWidth()) {\n                case \"auto\":\n                    const sampleRows = this.data().filter((row, idx) => idx < this.columnWidthAutoSampleSize());\n                    this.guessWidth(this._columns, sampleRows);\n                    break;\n            }\n            const columns = this.columns();\n            for (const columnFormat of this.columnFormats()) {\n                if (columnFormat.valid()) {\n                    const colIdx = columns.indexOf(columnFormat.column());\n                    if (this._columns[colIdx]) {\n                        this._columns[colIdx].hidden = columnFormat.width() === 0;\n                        this._columns[colIdx].width = columnFormat.width() || this._columns[colIdx].width;\n                        this._columns[colIdx].formatter = columnFormat.formatterFunc();\n                        this._columns[colIdx].renderCell = columnFormat.renderCellFunc();\n                    }\n                }\n            }\n            this._applyColumnsToGrid();\n            this._colsRefresh = false;\n        }\n        if (this._colsRefresh || this._dataRefresh) {\n            if (this._colsRefresh) {\n                this._dgrid.refresh({});\n            } else {\n                this._dgrid.refresh();\n            }\n            this._colsRefresh = false;\n            this._dataRefresh = false;\n        }\n    }\n\n    exit(domNode, element) {\n        delete this._prevColsHash;\n        delete this._prevFieldsHash;\n        super.exit(domNode, element);\n    }\n\n    protected _applyColumnsToGrid() {\n        this._dgrid.set(\"columns\", this._columns.filter(col => !col.hidden));\n    }\n\n    //  Cell  ---\n    formatterFunc(): CellFormatter | undefined {\n        return function (this: ColumnType, cell: any, row: RowType): string | any {\n            switch (typeof cell) {\n                case \"string\":\n                    return {\n                        html: cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\").trim()\n                    };\n                case \"undefined\":\n                    return \"\";\n            }\n            return cell;\n        };\n    }\n\n    renderCellFunc(): CellRenderer | undefined {\n        return undefined;  //  Undefined will defualt to formatter  ---\n    }\n\n    //  Events  ---\n    click(row, col, sel) {\n    }\n\n    dblclickColResize(column: string, dgridColumn: any): void {\n        this.guessWidth([dgridColumn], this.data());\n        this._dgrid.resizeColumn(dgridColumn.id, dgridColumn.width);\n    }\n}\nTable.prototype._class += \" dgrid_Table\";\n\nexport interface Table {\n    columnWidth(): \"auto\" | \"none\";\n    columnWidth(_: \"auto\" | \"none\"): this;\n    columnWidthAutoSampleSize(): number;\n    columnWidthAutoSampleSize(_: number): this;\n    columnWidthAutoFontName(): string;\n    columnWidthAutoFontName(_: string): this;\n    columnWidthAutoFontSize(): number;\n    columnWidthAutoFontSize(_: number): this;\n    columnFormats(): ColumnFormat[];\n    columnFormats(_: ColumnFormat[]): this;\n}\n\nTable.prototype.publish(\"columnWidth\", \"auto\", \"set\", \"Default column width\", [\"auto\", \"none\"]);\nTable.prototype.publish(\"columnWidthAutoSampleSize\", 10, \"number\", \"Number of rows to sample for auto column width\");\nTable.prototype.publish(\"columnWidthAutoFontName\", \"Verdana\", \"string\", \"Font name for auto column width calculation\");\nTable.prototype.publish(\"columnWidthAutoFontSize\", 12, \"number\", \"Font size for auto column width calculation\");\nTable.prototype.publish(\"columnFormats\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: ColumnFormat });\n","import { ColumnSetGrid } from \"./dgrid-shim.ts\";\nimport { type ColumnType } from \"./RowFormatter.ts\";\nimport { Table } from \"./Table.ts\";\n\nexport class ColumnSetTable extends Table {\n\n    constructor() {\n        super();\n    }\n\n    protected _buildColumnSets(): ColumnType[][][] {\n        const sets = this.columnSets();\n        const colNames = this.columns();\n        const used = new Set<string>();\n        const result: ColumnType[][][] = [];\n\n        const lookup = (name: string): ColumnType | undefined => {\n            const idx = colNames.indexOf(name);\n            if (idx < 0) return undefined;\n            const col = this._columns[idx];\n            if (!col || col.hidden) return undefined;\n            return col;\n        };\n\n        if (sets && sets.length) {\n            for (const set of sets) {\n                const cols: ColumnType[] = [];\n                for (const name of set) {\n                    const col = lookup(name);\n                    if (col) {\n                        cols.push(col);\n                        used.add(name);\n                    }\n                }\n                if (cols.length) {\n                    result.push([cols]);\n                }\n            }\n        }\n\n        if (this.autoColumnSet()) {\n            const remaining: ColumnType[] = [];\n            for (const name of colNames) {\n                if (!used.has(name)) {\n                    const col = lookup(name);\n                    if (col) remaining.push(col);\n                }\n            }\n            if (remaining.length) {\n                result.push([remaining]);\n            }\n        }\n\n        if (!result.length && this._columns.length) {\n            result.push([this._columns.filter(c => !c.hidden)]);\n        }\n\n        return result;\n    }\n\n    protected _gridColumnsConfig(): object {\n        return { columnSets: this._buildColumnSets() };\n    }\n\n    protected _createGrid(opts: any, node: HTMLElement): any {\n        return new ColumnSetGrid({ ...opts }, node);\n    }\n\n    protected _applyColumnsToGrid() {\n        const sets = this._buildColumnSets();\n        this._dgrid.set(\"columnSets\", sets);\n        for (let i = 0; i < sets.length - 1; i++) {\n            const setWidth = sets[i][0].reduce((total: number, col: ColumnType) => total + (col.width ?? 0), 0);\n            if (setWidth > 0) {\n                (this._dgrid as any).styleColumnSet(i, `width: ${setWidth}px;`);\n            }\n        }\n        this._dgrid.resize();\n    }\n\n    dblclickColResize(column: string, dgridColumn: any): void {\n        this.guessWidth([dgridColumn], this.data());\n        this._dgrid.applyWidth(dgridColumn.id, dgridColumn.width + \"px\");\n        this._dgrid.resize();\n    }\n}\nColumnSetTable.prototype._class += \" dgrid_ColumnSetTable\";\n\nexport interface ColumnSetTable {\n    columnSets(): string[][];\n    columnSets(_: string[][]): this;\n    autoColumnSet(): boolean;\n    autoColumnSet(_: boolean): this;\n}\n\nColumnSetTable.prototype.publish(\"columnSets\", [], \"array\", \"Column sets - array of arrays of column names\");\nColumnSetTable.prototype.publish(\"autoColumnSet\", true, \"boolean\", \"Append columns not referenced by columnSets() into a trailing column-set\");\n","import type { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Deferred, QueryResults } from \"./dgrid-shim.ts\";\nimport { ColumnType, RowFormatter } from \"./RowFormatter.ts\";\n\nexport interface IDatasource {\n    id: () => string;\n    hash: () => string;\n    label: () => string;\n\n    outFields: () => DDL2.IField[];\n    total: () => number;\n    fetch: (from: number, count: number) => Promise<ReadonlyArray<object>>;\n}\n\nexport class DatasourceCache implements IDatasource {\n    protected _datasource: IDatasource;\n    _prevHash: string;\n    _fetchCache: { [key: string]: Promise<ReadonlyArray<object>> } = {};\n\n    constructor(datasource: IDatasource) {\n        this._datasource = datasource;\n    }\n\n    validateCache() {\n        const hash = this.hash();\n        if (this._prevHash !== hash) {\n            this._prevHash = hash;\n            this._fetchCache = {};\n        }\n    }\n\n    id() { return this._datasource.id(); }\n    hash() { return this._datasource.hash(); }\n    label() { return this._datasource.label(); }\n\n    outFields() { return this._datasource.outFields(); }\n    total() { return this._datasource.total(); }\n    fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\n        this.validateCache();\n        const cacheID = `${from}->${count}`;\n        let retVal = this._fetchCache[cacheID];\n        if (!retVal) {\n            retVal = this._datasource.fetch(from, count);\n            this._fetchCache[cacheID] = retVal;\n        }\n        return retVal;\n    }\n}\n\nexport class DatasourceStore {\n    _datasource: DatasourceCache;\n    _columnsIdx: { [key: string]: number } = {};\n    _columns;\n\n    private rowFormatter: RowFormatter;\n\n    constructor(datasource: IDatasource, renderHtml: boolean) {\n        this._datasource = new DatasourceCache(datasource);\n\n        this._columnsIdx = {};\n        this._columns = this.db2Columns(this._datasource.outFields()).map((column, idx) => {\n            this._columnsIdx[column.field] = idx;\n            return column;\n        });\n        this.rowFormatter = new RowFormatter(this._columns, renderHtml);\n    }\n\n    columns() {\n        return this._columns;\n    }\n\n    db2Columns(fields: DDL2.IField[], prefix = \"\"): ColumnType[] {\n        if (!fields) return [];\n        return fields.map((field, idx) => {\n            const column: ColumnType = {\n                field: prefix + field.id,\n                leafID: field.id,\n                label: field.id,\n                idx,\n                className: \"resultGridCell\",\n                sortable: true,\n                hidden: false,\n                isSet: false\n            };\n            if (field.type === \"dataset\") {\n                column.children = this.db2Columns(field.children, prefix + field.id + \"_\");\n            } else {\n                column.formatter = (cell, row) => {\n                    switch (typeof cell) {\n                        case \"string\":\n                            return cell.replace(/\\t/g, \"&nbsp;&nbsp;&nbsp;&nbsp;\");\n                    }\n                    return cell;\n                };\n            }\n            return column;\n        });\n    }\n\n    getIdentity(row) {\n        return row.__hpcc_id;\n    }\n\n    _request(start, end): Promise<{ totalLength: number, data: any[] }> {\n        if (!this._datasource) return Promise.resolve({ totalLength: 0, data: [] });\n        const retVal = this._datasource.fetch(start, end - start).then(response => {\n            return {\n                totalLength: this._datasource.total(),\n                data: response.map((row, idx) => {\n                    const formattedRow: any = this.rowFormatter.format(row);\n                    formattedRow.__hpcc_id = start + idx;\n                    formattedRow.__origRow = row;\n                    return formattedRow;\n                })\n            };\n        });\n        return retVal;\n    }\n\n    fetchRange(options): Promise<any[]> {\n        const retVal = new Deferred();\n        this._request(options.start, options.end).then(response => retVal.resolve(response));\n        return new QueryResults(retVal.then(response => response.data), {\n            totalLength: retVal.then(response => response.totalLength)\n        });\n    }\n}\n","﻿import { Widget } from \"@hpcc-js/common\";\nimport { Memory } from \"./dgrid-shim.ts\";\nimport { Common } from \"./Common.ts\";\nimport { DatasourceStore, IDatasource } from \"./DatasourceStore.ts\";\n\nexport class DatasourceTable extends Common {\n    _prevDatasource?: IDatasource;\n\n    constructor() {\n        super();\n    }\n\n    invalidate(): this {\n        delete this._prevDatasource;\n        return this;\n    }\n\n    enter(domNode, element) {\n        super.enter(domNode, element);\n    }\n\n    update(domNode, element) {\n        super.update(domNode, element);\n    }\n    render(callback?: (w: Widget) => void): this {\n        return super.render(w => {\n            if (this._prevDatasource !== this.datasource()) {\n                this._dgrid.set(\"collection\", new Memory());\n                this._dgrid.set(\"columns\", []);\n                this._prevDatasource = this.datasource();\n                if (this._prevDatasource) {\n                    const store = new DatasourceStore(this._prevDatasource, this.renderHtml());\n                    this._dgrid.set(\"columns\", store.columns());\n                    this._dgrid.set(\"collection\", store);\n                    if (callback) {\n                        callback(w);\n                    }\n                } else {\n                    if (callback) {\n                        callback(w);\n                    }\n                }\n            } else {\n                if (callback) {\n                    callback(w);\n                }\n            }\n        });\n    }\n\n    click(row, col, sel) {\n    }\n}\nDatasourceTable.prototype._class += \" dgrid_DatasourceTable\";\n\nexport interface DatasourceTable {\n    datasource(): IDatasource;\n    datasource(_: IDatasource): this;\n}\n\nDatasourceTable.prototype.publish(\"datasource\", null, \"object\", \"Datasource\");\n\n"],"x_google_ignoreList":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58],"mappings":"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"}