{"record":{"id":"ed1ec789795b04e5","repo":"perspective-dev/perspective","slug":"custom-element-perspective-viewer-datagrid-is-al","errorCode":null,"errorMessage":"Custom element \"perspective-viewer-datagrid\" is already registered; skipping duplicate registration (Perspective was loaded more than once on this page).","messagePattern":"Custom element \"perspective-viewer-datagrid\" is already registered; skipping duplicate registration \\(Perspective was loaded more than once on this page\\)\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/viewer-datagrid/src/ts/index.ts","lineNumber":29,"sourceCode":"// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n\nimport \"regular-table\";\nimport { HTMLPerspectiveViewerDatagridPluginElement } from \"./custom_elements/datagrid.js\";\nimport { HTMLPerspectiveViewerDatagridToolbarElement } from \"./custom_elements/toolbar.js\";\n\n/******************************************************************************\n *\n * Main\n *\n */\n\ninterface PerspectiveViewerConstructor {\n    registerPlugin(tagName: string): void;\n}\n\nasync function _register_element(): Promise<void> {\n    if (customElements.get(\"perspective-viewer-datagrid\")) {\n        console.warn(\n            'Custom element \"perspective-viewer-datagrid\" is already registered; skipping duplicate registration (Perspective was loaded more than once on this page).',\n        );\n        return;\n    }\n\n    customElements.define(\n        \"perspective-viewer-datagrid-toolbar\",\n        HTMLPerspectiveViewerDatagridToolbarElement,\n    );\n\n    customElements.define(\n        \"perspective-viewer-datagrid\",\n        HTMLPerspectiveViewerDatagridPluginElement,\n    );\n\n    await customElements.whenDefined(\"perspective-viewer\");\n    const PerspectiveViewer = customElements.get(\n        \"perspective-viewer\",","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/perspective-dev/perspective/blob/11c8238c0c9c0b9e490b5a6a2dc277afad1e980a/packages/viewer-datagrid/src/ts/index.ts#L11-L47","documentation":"Error \"Custom element \"perspective-viewer-datagrid\" is already registered; skipping duplicate registration (Perspective was loaded more than once on this page).\" thrown in perspective-dev/perspective.","triggerScenarios":"Thrown at packages/viewer-datagrid/src/ts/index.ts:29 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Import perspective-viewer-datagrid only once per page bundle","Audit the bundler for duplicated chunks containing the datagrid package","Align package versions so a single datagrid build is present","Treat the warning as benign — the plugin is already available and registration is skipped"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"11c8238c0c9c0b9e490b5a6a2dc277afad1e980a","analyzedAt":"2026-09-09T00:35:19.377Z","contentChangedAt":"2026-09-09T00:35:19.377Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}