{"ok": true, "next": null, "rows": [{"id": "javascript_plugins:id2", "page": "javascript_plugins", "ref": "id2", "title": "JavaScript plugin objects", "content": "JavaScript plugins are blocks of code that can be registered with Datasette using the  registerPlugin()  method on the  datasetteManager  object. \n             The  implementation  object passed to this method should include a  version  key defining the plugin version, and one or more of the following named functions providing the implementation of the plugin:", "breadcrumbs": "[\"JavaScript plugins\"]", "references": "[]"}, {"id": "javascript_plugins:javascript-datasette-init", "page": "javascript_plugins", "ref": "javascript-datasette-init", "title": "The datasette_init event", "content": "Datasette emits a custom event called  datasette_init  when the page is loaded. This event is dispatched on the  document  object, and includes a  detail  object with a reference to the  datasetteManager  object. \n             Your JavaScript code can listen out for this event using  document.addEventListener()  like this: \n             document.addEventListener(\"datasette_init\", function (evt) {\n    const manager = evt.detail;\n    console.log(\"Datasette version:\", manager.VERSION);\n});", "breadcrumbs": "[\"JavaScript plugins\"]", "references": "[]"}, {"id": "javascript_plugins:javascript-datasette-manager", "page": "javascript_plugins", "ref": "javascript-datasette-manager", "title": "datasetteManager", "content": "The  datasetteManager  object \n             \n                 \n                     VERSION  - string \n                     \n                         The version of Datasette \n                     \n                 \n                 \n                     plugins  -  Map() \n                     \n                         A Map of currently loaded plugin names to plugin implementations \n                     \n                 \n                 \n                     registerPlugin(name, implementation) \n                     \n                         Call this to register a plugin, passing its name and implementation \n                     \n                 \n                 \n                     selectors  - object \n                     \n                         An object providing named aliases to useful CSS selectors,  listed below", "breadcrumbs": "[\"JavaScript plugins\"]", "references": "[]"}, {"id": "javascript_plugins:javascript-datasette-manager-selectors", "page": "javascript_plugins", "ref": "javascript-datasette-manager-selectors", "title": "Selectors", "content": "These are available on the  selectors  property of the  datasetteManager  object. \n             const DOM_SELECTORS = {\n  /** Should have one match */\n  jsonExportLink: \".export-links a[href*=json]\",\n\n  /** Event listeners that go outside of the main table, e.g. existing scroll listener */\n  tableWrapper: \".table-wrapper\",\n  table: \"table.rows-and-columns\",\n  aboveTablePanel: \".above-table-panel\",\n\n  // These could have multiple matches\n  /** Used for selecting table headers. Use makeColumnActions if you want to add menu items. */\n  tableHeaders: `table.rows-and-columns th`,\n\n  /** Used to add \"where\"  clauses to query using direct manipulation */\n  filterRows: \".filter-row\",\n  /** Used to show top available enum values for a column (\"facets\") */\n  facetResults: \".facet-results [data-column]\",\n};", "breadcrumbs": "[\"JavaScript plugins\"]", "references": "[]"}], "truncated": false}