html {
width: 100%;
height: 100%;
display: flex;
}
body {
padding: 0;
margin: 0;
display: flex;
flex: 1 1 0;
}
#map-wrap {
display: flex;
flex: 1 1 0;
}
#map-block {
flex: 1 1 0;
position: relative;
}
#map-settings {
width: 300px;
}
#map {
position: absolute;
width: 100%;
height: 100%;
}
import {JSDOM} from 'jsdom';
declare module 'jsdom' {
/**
* В пакете jsdom есть реализация XMLSerializer, но пока не описана в типах.
*/
export interface DOMWindow {
XMLSerializer: {
prototype: XMLSerializer;
new(): XMLSerializer;
};
}
}
/**
* Такой вариант извлечения нужных классов для работы с XML DOM подсказан на странице
* https://stackoverflow.com/questions/11398419/trying-to-use-the-domparser-with-node-js
*/
const window = new JSDOM().window;
export const {Element, XPathResult, XMLSerializer} = window;
export const createDocument = window.document.implementation.createDocument.bind(window.document.implementation);
/**
* Извлечение массива с найденными узлами из XPathResult, который возвращает метод ownerDocument.evaluate().
* При условии, что последний аргумент evaluate был выставлен как XPathResult.*_SNAPSHOT_TYPE.
* @link https://developer.mozilla.org/en-US/docs/Web/API/XPathResult/snapshotItem
*/
export function getNodesFromXPathResult(result: XPathResult): Node[] {
let nodes: Node[] = [], node: Node | null, i = 0;
while (!!(node = result.snapshotItem(i++))) nodes.push(node);
return nodes;
}
svgDocument.evaluate('count(//svg:svg)', svgDocument2, namespaceResolver, XPathResult.NUMBER_TYPE).numberValue
const namespaceMap = {
svg: 'http://www.w3.org/2000/svg',
xlink: 'http://www.w3.org/1999/xlink'
};
const namespaceResolver = prefix => namespaceMap[prefix || ''] || null;