neshan-map
Version:
### Developed by [Neshan Maps Platform team](https://platform.neshan.org). ### For Farsi/Persian document, [click here](https://developers.neshan.org/react-component/).
46 lines (38 loc) • 1.28 kB
text/typescript
const BASE_URL = 'https://static.neshan.org';
const DEFAULT_URL_SCRIPT = `${BASE_URL}/sdk/leaflet/1.4.0/leaflet.js`;
const DEFAULT_URL_STYLE = `${BASE_URL}/sdk/leaflet/1.4.0/leaflet.css`;
interface LoadersProps {
onError: () => void;
onLoad: () => void;
}
export default (props: LoadersProps) => {
const createScriptStyle = () => {
const { onError, onLoad } = props; //-----import style
if (!document.head.querySelector(`link[href="${DEFAULT_URL_STYLE}"]`)) {
const style = document.createElement('link');
style.href = DEFAULT_URL_STYLE;
style.rel = 'stylesheet';
document.head.appendChild(style);
} //------import script
if (window.L) {
if (onLoad) onLoad();
return;
}
const script: HTMLScriptElement =
document.body.querySelector(`script[src="${DEFAULT_URL_SCRIPT}"]`) ||
document.createElement('script');
script.addEventListener('load', () => {
if (onLoad) onLoad();
return;
});
script.addEventListener('error', () => {
if (onError) onError();
return;
});
if (!script.src) {
script.src = DEFAULT_URL_SCRIPT;
document.body.appendChild(script);
}
};
return createScriptStyle();
};