import ReactDOM from 'react-dom/client' import MapplicElement from './MapplicElement' import { MapplicStore } from './MapplicStore' const Mapplic = ({json = 'data.json', id, ...props}) => { return ( ) } export default Mapplic // web component class MapplicWebComponent extends HTMLElement { constructor() { super(); this._root = this.attachShadow({ mode: 'open' }); } connectedCallback() { if (this._root.childElementCount > 0) return; const props = this.dataset; let path = './'; if (props.path) path = props.path; else { const script = document.getElementById('mapplic-script'); if (script) path = script.src.substring(0, script.src.lastIndexOf('/') + 1); } const linkElement = document.createElement('link'); linkElement.setAttribute('rel', 'stylesheet'); linkElement.setAttribute('type', 'text/css'); linkElement.setAttribute('href', path + 'mapplic.css'); this._root.appendChild(linkElement); const onStoreCallback = (store) => { this.store = store; const storeInitializedEvent = new CustomEvent('mapReady', { detail: { store } }); this.dispatchEvent(storeInitializedEvent); } ReactDOM.createRoot(this._root).render( ); } } customElements.define('mapplic-map', MapplicWebComponent);