{
  "schemaVersion": "2.1.0",
  "readme": "readme.md",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "src/data-grid.js",
      "declarations": [
        {
          "kind": "class",
          "name": "DataGrid",
          "description": "Server-first, explicitly paginated data grid web component.",
          "tagName": "data-grid",
          "attributes": [
            {
              "name": "src"
            },
            {
              "name": "loading"
            },
            {
              "name": "sortable"
            },
            {
              "name": "filterable"
            },
            {
              "name": "filter-delay"
            },
            {
              "name": "searchable"
            },
            {
              "name": "search-placeholder"
            },
            {
              "name": "search-delay"
            },
            {
              "name": "min-search-length"
            },
            {
              "name": "responsive"
            },
            {
              "name": "responsive-toggle"
            },
            {
              "name": "responsive-start-open"
            },
            {
              "name": "row-details-start-open"
            },
            {
              "name": "selectable"
            },
            {
              "name": "single-select"
            },
            {
              "name": "select-visible-only"
            },
            {
              "name": "row-click"
            },
            {
              "name": "row-key"
            },
            {
              "name": "row-label"
            },
            {
              "name": "collapse-actions"
            },
            {
              "name": "save-state"
            },
            {
              "name": "no-data"
            },
            {
              "name": "error-message"
            },
            {
              "name": "page-sizes"
            },
            {
              "name": "row-actions"
            },
            {
              "name": "reorder"
            },
            {
              "name": "menu"
            },
            {
              "name": "wrap"
            },
            {
              "name": "snap-columns"
            },
            {
              "name": "autosize"
            },
            {
              "name": "enter-moves-down"
            },
            {
              "name": "resizable"
            },
            {
              "name": "autoheight"
            },
            {
              "name": "autohide-pager"
            },
            {
              "name": "pager"
            },
            {
              "name": "show-page-size"
            },
            {
              "name": "debug"
            },
            {
              "name": "dir"
            },
            {
              "name": "density"
            },
            {
              "name": "page"
            },
            {
              "name": "page-size"
            }
          ],
          "members": [
            {
              "kind": "getter",
              "name": "labels"
            },
            {
              "kind": "method",
              "name": "getLabels",
              "static": true
            },
            {
              "kind": "method",
              "name": "setLabels",
              "static": true
            },
            {
              "kind": "method",
              "name": "loadLabels",
              "static": true
            },
            {
              "kind": "getter",
              "name": "noData",
              "description": "Gets the text to be displayed when no data is loaded."
            },
            {
              "kind": "method",
              "name": "updateLabels"
            },
            {
              "kind": "getter",
              "name": "query",
              "description": "Snapshot of the current query state."
            },
            {
              "kind": "getter",
              "name": "page",
              "description": "Convenience read-only accessor for the current page."
            },
            {
              "kind": "method",
              "name": "registerPlugins",
              "static": true,
              "description": "Register plugin constructors, keyed by name. New registrations extend the current registry and replace constructors that use the same name. The core instantiates them on each DataGrid construction. Names are not limited to built-in plugins."
            },
            {
              "kind": "method",
              "name": "unregisterPlugins",
              "static": true
            },
            {
              "kind": "method",
              "name": "registeredPlugins",
              "static": true
            },
            {
              "kind": "method",
              "name": "getColumns",
              "description": "The normalized column list of the current render cycle, for inspection. Read-only: mutating the returned objects is not a supported way to configure the grid (a rerender rebuilds columns from the options)."
            },
            {
              "kind": "method",
              "name": "getPlugin",
              "description": "Return an instantiated plugin by its registration name."
            },
            {
              "kind": "method",
              "name": "setQuery",
              "description": "Merge a patch into the query state and reload. Changing search, filters, sort or pageSize resets the page to 1 unless an explicit page is provided in the patch. Changing search or filters (population changes) also clears the selection, since a `mode: \"all\"` selection only means something for the population it was created on. Emits `querychange` with a normalized snapshot when the state changes, before the reload (including in lazy mode, where no load runs yet). Mutating `event.detail.query` never affects the grid. In pager \"more\" mode the page is always coerced back to 1: chunks accumulate through loadMore(), never through the query."
            },
            {
              "kind": "method",
              "name": "restoreQuery",
              "description": "Restore the runtime query before the first load without triggering a refresh. This is intended for stateful plugins connected during setup."
            },
            {
              "kind": "method",
              "name": "resetQuery",
              "description": "Reset the query to its initial state and reload. Emits `querychange` like setQuery does (only when the query differs from the initial one). `restoreQuery()` (bootstrap rehydration) stays silent. A load emits only when its result corrects an out-of-range page."
            },
            {
              "kind": "method",
              "name": "refresh",
              "description": "Reload the result matching the current query."
            },
            {
              "kind": "method",
              "name": "load",
              "description": "Single load path: abort previous request, load the current query, protect against stale responses, then render."
            },
            {
              "kind": "method",
              "name": "loadMore",
              "description": "Append the next transport chunk in pager \"more\" mode, then render the grown list. No-op unless the pager is \"more\", no load is running, and the list is not exhausted yet. A concurrent setQuery() supersedes the flight: its late response is dropped and its cleanup never touches the newer load. Errors keep the loaded rows and leave the button available for a retry. Before the first successful chunk, it loads or retries page 1 through load(). Progress is already observable through rows.length, total and loading — no boolean needed."
            },
            {
              "kind": "method",
              "name": "ownsControl",
              "description": "A control is owned by this grid when it lives inside this host (not a nested grid), so bubbled events from an inner grid never affect the outer one."
            },
            {
              "kind": "method",
              "name": "syncColumnVisibility",
              "description": "Reconcile the rendered cells (header, filters and body) with the current column visibility without rebuilding the DOM. Used whenever only the visibility changed: showColumn/hideColumn and ResponsiveGrid adaptations. The column list is rebuilt so plugin columns (ex: the responsive toggle) reflect their fresh hidden state."
            },
            {
              "kind": "method",
              "name": "syncFrozenColumns",
              "description": "Measure visible frozen columns and assign their logical sticky offsets."
            },
            {
              "kind": "method",
              "name": "showColumn"
            },
            {
              "kind": "method",
              "name": "hideColumn"
            },
            {
              "kind": "method",
              "name": "getRowLabel",
              "description": "Human-readable label of a row, used for accessible control names. Resolved from `options.rowLabel` (field or function), falling back to the row key, then the row index."
            },
            {
              "kind": "method",
              "name": "isRowSelected",
              "description": "Whether a row is part of the current selection."
            },
            {
              "kind": "method",
              "name": "updateRow",
              "description": "Mutate a row of the current page in place and re-render the body. Works with any data source: it never reloads, so a server grid reflects a business mutation without a second request. With an ArrayDataSource the paginated rows are references to the source objects, so the source is updated too."
            },
            {
              "kind": "method",
              "name": "removeRow",
              "description": "Remove a row from the local dataset. Only applies when the data source owns a mutable local collection (ArrayDataSource): the row is removed from the source and the query is re-applied. With a remote data source this returns false — refresh after a server-side deletion instead."
            },
            {
              "kind": "method",
              "name": "getSelectionState",
              "description": "Snapshot of the current selection state."
            },
            {
              "kind": "method",
              "name": "selectRow",
              "description": "Select a row (single select keeps at most one key)."
            },
            {
              "kind": "method",
              "name": "deselectRow",
              "description": "Deselect a row."
            },
            {
              "kind": "method",
              "name": "toggleRow",
              "description": "Toggle the selection state of a row."
            },
            {
              "kind": "method",
              "name": "selectAll",
              "description": "Select all visible rows (or everything when selectVisibleOnly is false)."
            },
            {
              "kind": "method",
              "name": "clearSelection",
              "description": "Reset the selection and refresh the UI."
            },
            {
              "kind": "method",
              "name": "getSelection",
              "description": "Get selected rows or specific fields from selected rows. Only reflects the currently loaded page. For cross-page/server-side selection, use getSelectionState(). If no keys are provided, returns the full row objects. If one key is provided, returns an array of values for that key. If multiple keys are provided, returns an array of objects with those keys and values. In single select mode, returns a single object or value."
            },
            {
              "kind": "method",
              "name": "getFirst"
            },
            {
              "kind": "method",
              "name": "getLast"
            },
            {
              "kind": "method",
              "name": "getPrev"
            },
            {
              "kind": "method",
              "name": "getNext"
            },
            {
              "kind": "method",
              "name": "sortAsc"
            },
            {
              "kind": "method",
              "name": "sortDesc"
            },
            {
              "kind": "method",
              "name": "sortNone"
            },
            {
              "kind": "method",
              "name": "clearFilters"
            },
            {
              "kind": "method",
              "name": "setSearch",
              "description": "Set the global search and reload. The server decides which fields the search covers; `ArrayDataSource` applies a generic scalar match."
            },
            {
              "kind": "method",
              "name": "clearSearch",
              "description": "Clear the global search and reload."
            },
            {
              "kind": "method",
              "name": "getFilterOptions",
              "description": "Resolve the options of a select filter, directly consumable by the <select>. Never derives from the currently loaded page: for a server grid the options must come from meta.filters or an explicit list."
            },
            {
              "kind": "method",
              "name": "totalPages"
            }
          ],
          "events": [
            {
              "name": "action"
            },
            {
              "name": "bodyRendered"
            },
            {
              "name": "bulkAction"
            },
            {
              "name": "columnReordered"
            },
            {
              "name": "columnResized"
            },
            {
              "name": "columnVisibility"
            },
            {
              "name": "edit"
            },
            {
              "name": "headerRendered"
            },
            {
              "name": "loadError"
            },
            {
              "name": "querychange"
            },
            {
              "name": "rowClick"
            },
            {
              "name": "rowDetailsToggle"
            },
            {
              "name": "rowRendered"
            },
            {
              "name": "selectionChange"
            }
          ],
          "cssProperties": [
            {
              "name": "--dg-space-1"
            },
            {
              "name": "--dg-space-2"
            },
            {
              "name": "--dg-space-3"
            },
            {
              "name": "--dg-space-4"
            },
            {
              "name": "--dg-bg"
            },
            {
              "name": "--dg-color"
            },
            {
              "name": "--dg-muted-color"
            },
            {
              "name": "--dg-border-color"
            },
            {
              "name": "--dg-accent"
            },
            {
              "name": "--dg-accent-soft"
            },
            {
              "name": "--dg-focus-ring"
            },
            {
              "name": "--dg-header-bg"
            },
            {
              "name": "--dg-header-color"
            },
            {
              "name": "--dg-filter-bg"
            },
            {
              "name": "--dg-row-stripe-bg"
            },
            {
              "name": "--dg-row-hover-bg"
            },
            {
              "name": "--dg-row-selected-bg"
            },
            {
              "name": "--dg-row-selected-hover-bg"
            },
            {
              "name": "--dg-row-border-color"
            },
            {
              "name": "--dg-control-bg"
            },
            {
              "name": "--dg-control-color"
            },
            {
              "name": "--dg-control-border-color"
            },
            {
              "name": "--dg-danger-bg"
            },
            {
              "name": "--dg-danger-color"
            },
            {
              "name": "--dg-danger-border-color"
            },
            {
              "name": "--dg-cell-padding-inline"
            },
            {
              "name": "--dg-cell-padding-block"
            },
            {
              "name": "--dg-padding-x"
            },
            {
              "name": "--dg-padding-y"
            },
            {
              "name": "--dg-header-padding-y"
            },
            {
              "name": "--dg-control-padding-inline"
            },
            {
              "name": "--dg-control-height"
            },
            {
              "name": "--dg-selection-column-width"
            },
            {
              "name": "--dg-actions-column-width"
            },
            {
              "name": "--dg-radius"
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "DataGrid",
          "declaration": {
            "name": "DataGrid",
            "module": "src/data-grid.js"
          }
        },
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "DataGrid",
            "module": "src/data-grid.js"
          }
        }
      ]
    }
  ]
}
