1 | import { unreachable } from './platform-utils';
|
2 | export function castToSimple(node) {
|
3 | if (isDocument(node)) {
|
4 | return node;
|
5 | } else if (isElement(node)) {
|
6 | return node;
|
7 | } else {
|
8 | return node;
|
9 | }
|
10 | }
|
11 | export function castToBrowser(node, sugaryCheck) {
|
12 | if (node === null || node === undefined) {
|
13 | return null;
|
14 | }
|
15 |
|
16 | if (typeof document === undefined) {
|
17 | throw new Error('Attempted to cast to a browser node in a non-browser context');
|
18 | }
|
19 |
|
20 | if (isDocument(node)) {
|
21 | return node;
|
22 | }
|
23 |
|
24 | if (node.ownerDocument !== document) {
|
25 | throw new Error('Attempted to cast to a browser node with a node that was not created from this document');
|
26 | }
|
27 |
|
28 | return checkNode(node, sugaryCheck);
|
29 | }
|
30 |
|
31 | function checkError(from, check) {
|
32 | return new Error("cannot cast a " + from + " into " + check);
|
33 | }
|
34 |
|
35 | function isDocument(node) {
|
36 | return node.nodeType === 9
|
37 | /* DOCUMENT_NODE */
|
38 | ;
|
39 | }
|
40 |
|
41 | function isElement(node) {
|
42 | return node.nodeType === 1
|
43 | /* ELEMENT_NODE */
|
44 | ;
|
45 | }
|
46 |
|
47 | export function checkNode(node, check) {
|
48 | var isMatch = false;
|
49 |
|
50 | if (node !== null) {
|
51 | if (typeof check === 'string') {
|
52 | isMatch = stringCheckNode(node, check);
|
53 | } else if (Array.isArray(check)) {
|
54 | isMatch = check.some(function (c) {
|
55 | return stringCheckNode(node, c);
|
56 | });
|
57 | } else {
|
58 | throw unreachable();
|
59 | }
|
60 | }
|
61 |
|
62 | if (isMatch) {
|
63 | return node;
|
64 | } else {
|
65 | throw checkError("SimpleElement(" + node + ")", check);
|
66 | }
|
67 | }
|
68 |
|
69 | function stringCheckNode(node, check) {
|
70 | switch (check) {
|
71 | case 'NODE':
|
72 | return true;
|
73 |
|
74 | case 'HTML':
|
75 | return node instanceof HTMLElement;
|
76 |
|
77 | case 'SVG':
|
78 | return node instanceof SVGElement;
|
79 |
|
80 | case 'ELEMENT':
|
81 | return node instanceof Element;
|
82 |
|
83 | default:
|
84 | if (check.toUpperCase() === check) {
|
85 | throw new Error("BUG: this code is missing handling for a generic node type");
|
86 | }
|
87 |
|
88 | return node instanceof Element && node.tagName.toLowerCase() === check;
|
89 | }
|
90 | }
|
91 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL3NpbXBsZS1jYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQUEsV0FBQSxRQUFBLGtCQUFBO0FBb0NBLE9BQU0sU0FBQSxZQUFBLENBQUEsSUFBQSxFQUN5RTtBQUU3RSxNQUFJLFVBQVUsQ0FBZCxJQUFjLENBQWQsRUFBc0I7QUFDcEIsV0FBQSxJQUFBO0FBREYsR0FBQSxNQUVPLElBQUksU0FBUyxDQUFiLElBQWEsQ0FBYixFQUFxQjtBQUMxQixXQUFBLElBQUE7QUFESyxHQUFBLE1BRUE7QUFDTCxXQUFBLElBQUE7QUFDRDtBQUNGO0FBb0JELE9BQU0sU0FBQSxhQUFBLENBQUEsSUFBQSxFQUFBLFdBQUEsRUFFVztBQUVmLE1BQUksSUFBSSxLQUFKLElBQUEsSUFBaUIsSUFBSSxLQUF6QixTQUFBLEVBQXlDO0FBQ3ZDLFdBQUEsSUFBQTtBQUNEOztBQUVELE1BQUksT0FBQSxRQUFBLEtBQUosU0FBQSxFQUFtQztBQUNqQyxVQUFNLElBQUEsS0FBQSxDQUFOLDhEQUFNLENBQU47QUFDRDs7QUFFRCxNQUFJLFVBQVUsQ0FBZCxJQUFjLENBQWQsRUFBc0I7QUFDcEIsV0FBQSxJQUFBO0FBQ0Q7O0FBRUQsTUFBSSxJQUFJLENBQUosYUFBQSxLQUFKLFFBQUEsRUFBcUM7QUFDbkMsVUFBTSxJQUFBLEtBQUEsQ0FBTix5RkFBTSxDQUFOO0FBR0Q7O0FBRUQsU0FBTyxTQUFTLENBQUEsSUFBQSxFQUFoQixXQUFnQixDQUFoQjtBQUNEOztBQUVELFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBQXdEO0FBQ3RELFNBQU8sSUFBQSxLQUFBLG9CQUEyQixJQUEzQixjQUFQLEtBQU8sQ0FBUDtBQUNEOztBQUVELFNBQUEsVUFBQSxDQUFBLElBQUEsRUFBNEQ7QUFDMUQsU0FBTyxJQUFJLENBQUosUUFBQSxLQUFhO0FBQUE7QUFBcEI7QUFDRDs7QUFFRCxTQUFBLFNBQUEsQ0FBQSxJQUFBLEVBQTBEO0FBQ3hELFNBQU8sSUFBSSxDQUFKLFFBQUEsS0FBYTtBQUFBO0FBQXBCO0FBQ0Q7O0FBRUQsT0FBTSxTQUFBLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUVJO0FBRVIsTUFBSSxPQUFPLEdBQVgsS0FBQTs7QUFFQSxNQUFJLElBQUksS0FBUixJQUFBLEVBQW1CO0FBQ2pCLFFBQUksT0FBQSxLQUFBLEtBQUosUUFBQSxFQUErQjtBQUM3QixNQUFBLE9BQU8sR0FBRyxlQUFlLENBQUEsSUFBQSxFQUF6QixLQUF5QixDQUF6QjtBQURGLEtBQUEsTUFFTyxJQUFJLEtBQUssQ0FBTCxPQUFBLENBQUosS0FBSSxDQUFKLEVBQTBCO0FBQy9CLE1BQUEsT0FBTyxHQUFHLEtBQUssQ0FBTCxJQUFBLENBQVksVUFBQSxDQUFEO0FBQUEsZUFBTyxlQUFlLENBQUEsSUFBQSxFQUEzQyxDQUEyQyxDQUF0QjtBQUFBLE9BQVgsQ0FBVjtBQURLLEtBQUEsTUFFQTtBQUNMLFlBQU0sV0FBTixFQUFBO0FBQ0Q7QUFDRjs7QUFFRCxNQUFBLE9BQUEsRUFBYTtBQUNYLFdBQUEsSUFBQTtBQURGLEdBQUEsTUFFTztBQUNMLFVBQU0sVUFBVSxvQkFBQSxJQUFBLFFBQWhCLEtBQWdCLENBQWhCO0FBQ0Q7QUFDRjs7QUFFRCxTQUFBLGVBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxFQUFtRTtBQUNqRSxVQUFBLEtBQUE7QUFDRSxTQUFBLE1BQUE7QUFDRSxhQUFBLElBQUE7O0FBQ0YsU0FBQSxNQUFBO0FBQ0UsYUFBTyxJQUFJLFlBQVgsV0FBQTs7QUFDRixTQUFBLEtBQUE7QUFDRSxhQUFPLElBQUksWUFBWCxVQUFBOztBQUNGLFNBQUEsU0FBQTtBQUNFLGFBQU8sSUFBSSxZQUFYLE9BQUE7O0FBQ0Y7QUFDRSxVQUFJLEtBQUssQ0FBTCxXQUFBLE9BQUosS0FBQSxFQUFtQztBQUNqQyxjQUFNLElBQU4sS0FBTSw4REFBTjtBQUNEOztBQUNELGFBQU8sSUFBSSxZQUFKLE9BQUEsSUFBMkIsSUFBSSxDQUFKLE9BQUEsQ0FBQSxXQUFBLE9BQWxDLEtBQUE7QUFiSjtBQWVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5yZWFjaGFibGUgfSBmcm9tICcuL3BsYXRmb3JtLXV0aWxzJztcbmltcG9ydCB7IE5vZGVUeXBlLCBTaW1wbGVEb2N1bWVudCwgU2ltcGxlRWxlbWVudCwgU2ltcGxlTm9kZSB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5cbmludGVyZmFjZSBHZW5lcmljRWxlbWVudFRhZ3Mge1xuICBIVE1MOiBIVE1MRWxlbWVudDtcbiAgU1ZHOiBTVkdFbGVtZW50O1xuICBFTEVNRU5UOiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQ7XG59XG5cbmludGVyZmFjZSBHZW5lcmljTm9kZVRhZ3Mge1xuICBOT0RFOiBOb2RlO1xufVxuXG50eXBlIEdlbmVyaWNOb2RlVGFnID0ga2V5b2YgR2VuZXJpY05vZGVUYWdzO1xuXG5pbnRlcmZhY2UgQnJvd3NlckVsZW1lbnRUYWdzIGV4dGVuZHMgSFRNTEVsZW1lbnRUYWdOYW1lTWFwLCBHZW5lcmljRWxlbWVudFRhZ3Mge31cbnR5cGUgQnJvd3NlckVsZW1lbnRUYWcgPSBrZXlvZiBCcm93c2VyRWxlbWVudFRhZ3M7XG5cbmludGVyZmFjZSBCcm93c2VyVGFncyBleHRlbmRzIEJyb3dzZXJFbGVtZW50VGFncywgR2VuZXJpY05vZGVUYWdzIHt9XG50eXBlIEJyb3dzZXJUYWcgPSBrZXlvZiBCcm93c2VyVGFncztcblxudHlwZSBOb2RlQ2hlY2s8TiBleHRlbmRzIE5vZGU+ID0gKG5vZGU6IE5vZGUpID0+IG5vZGUgaXMgTjtcbnR5cGUgU3VnYXJ5Tm9kZUNoZWNrPEsgZXh0ZW5kcyBCcm93c2VyVGFnID0gQnJvd3NlclRhZz4gPSBOb2RlQ2hlY2s8QnJvd3NlclRhZ3NbS10+IHwgSyB8IEtbXTtcbnR5cGUgTm9kZUZvclN1Z2FyeUNoZWNrPFMgZXh0ZW5kcyBTdWdhcnlOb2RlQ2hlY2s8QnJvd3NlclRhZz4+ID0gUyBleHRlbmRzIE5vZGVDaGVjazxpbmZlciBOPlxuICA/IE5cbiAgOiBTIGV4dGVuZHMga2V5b2YgQnJvd3NlclRhZ3NcbiAgPyBCcm93c2VyVGFnc1tTXVxuICA6IFMgZXh0ZW5kcyAoa2V5b2YgQnJvd3NlclRhZ3MpW11cbiAgPyBCcm93c2VyVGFnc1tTW251bWJlcl1dXG4gIDogbmV2ZXI7XG5cbnR5cGUgQnJvd3Nlck5vZGUgPSBFbGVtZW50IHwgRG9jdW1lbnQgfCBEb2N1bWVudEZyYWdtZW50IHwgVGV4dCB8IENvbW1lbnQgfCBOb2RlO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FzdFRvU2ltcGxlKGRvYzogRG9jdW1lbnQgfCBTaW1wbGVEb2N1bWVudCk6IFNpbXBsZURvY3VtZW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNhc3RUb1NpbXBsZShlbGVtOiBFbGVtZW50IHwgU2ltcGxlRWxlbWVudCk6IFNpbXBsZUVsZW1lbnQ7XG5leHBvcnQgZnVuY3Rpb24gY2FzdFRvU2ltcGxlKG5vZGU6IE5vZGUgfCBTaW1wbGVOb2RlKTogU2ltcGxlTm9kZTtcbmV4cG9ydCBmdW5jdGlvbiBjYXN0VG9TaW1wbGUoXG4gIG5vZGU6IERvY3VtZW50IHwgRWxlbWVudCB8IE5vZGUgfCBTaW1wbGVEb2N1bWVudCB8IFNpbXBsZUVsZW1lbnQgfCBTaW1wbGVOb2RlXG4pIHtcbiAgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZSBhcyBTaW1wbGVEb2N1bWVudDtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZSBhcyBTaW1wbGVFbGVtZW50O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBub2RlIGFzIFNpbXBsZU5vZGU7XG4gIH1cbn1cblxuLy8gSWYgcGFzc2VkIGEgZG9jdW1lbnQsIHZlcmlmeSB3ZSdyZSBpbiB0aGUgYnJvd3NlciBhbmQgcmV0dXJuIGl0IGFzIGEgRG9jdW1lbnRcbmV4cG9ydCBmdW5jdGlvbiBjYXN0VG9Ccm93c2VyKGRvYzogRG9jdW1lbnQgfCBTaW1wbGVEb2N1bWVudCk6IERvY3VtZW50O1xuLy8gSWYgd2UgZG9uJ3Qga25vdyB3aGF0IHRoaXMgaXMsIGJ1dCB0aGUgY2hlY2sgcmVxdWlyZXMgaXQgdG8gYmUgYW4gZWxlbWVudCxcbi8vIHRoZSBjYXN0IHdpbGwgbWFuZGF0ZSB0aGF0IGl0J3MgYSBicm93c2VyIGVsZW1lbnRcbmV4cG9ydCBmdW5jdGlvbiBjYXN0VG9Ccm93c2VyPFMgZXh0ZW5kcyBTdWdhcnlOb2RlQ2hlY2s8QnJvd3NlckVsZW1lbnRUYWc+PihcbiAgbm9kZTogQnJvd3Nlck5vZGUgfCBTaW1wbGVOb2RlLFxuICBjaGVjazogU1xuKTogTm9kZUZvclN1Z2FyeUNoZWNrPFM+O1xuLy8gRmluYWxseSwgaWYgaXQncyBhIG1vcmUgZ2VuZXJpYyBjaGVjaywgdGhlIGNhc3Qgd2lsbCBtYW5kYXRlIHRoYXQgaXQncyBhXG4vLyBicm93c2VyIG5vZGUgYW5kIHJldHVybiBhIEJyb3dzZXJOb2RlVXRpbHMgY29ycmVzcG9uZGluZyB0byB0aGUgY2hlY2tcbmV4cG9ydCBmdW5jdGlvbiBjYXN0VG9Ccm93c2VyPFMgZXh0ZW5kcyBTdWdhcnlOb2RlQ2hlY2s8R2VuZXJpY05vZGVUYWc+PihcbiAgZWxlbWVudDogQnJvd3Nlck5vZGUgfCBTaW1wbGVOb2RlLFxuICBjaGVjazogU1xuKTogTm9kZUZvclN1Z2FyeUNoZWNrPFM+O1xuZXhwb3J0IGZ1bmN0aW9uIGNhc3RUb0Jyb3dzZXI8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG4gIGVsZW1lbnQ6IFNpbXBsZUVsZW1lbnQgfCBFbGVtZW50LFxuICBjaGVjazogS1xuKTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdO1xuZXhwb3J0IGZ1bmN0aW9uIGNhc3RUb0Jyb3dzZXI8UyBleHRlbmRzIFN1Z2FyeU5vZGVDaGVjaz4oXG4gIG5vZGU6IFNpbXBsZU5vZGUgfCBCcm93c2VyTm9kZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHN1Z2FyeUNoZWNrPzogU1xuKTogRG9jdW1lbnQgfCBOb2RlRm9yU3VnYXJ5Q2hlY2s8Uz4gfCBudWxsIHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRlZCB0byBjYXN0IHRvIGEgYnJvd3NlciBub2RlIGluIGEgbm9uLWJyb3dzZXIgY29udGV4dCcpO1xuICB9XG5cbiAgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZSBhcyBEb2N1bWVudDtcbiAgfVxuXG4gIGlmIChub2RlLm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0F0dGVtcHRlZCB0byBjYXN0IHRvIGEgYnJvd3NlciBub2RlIHdpdGggYSBub2RlIHRoYXQgd2FzIG5vdCBjcmVhdGVkIGZyb20gdGhpcyBkb2N1bWVudCdcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNoZWNrTm9kZTxTPihub2RlLCBzdWdhcnlDaGVjayEpO1xufVxuXG5mdW5jdGlvbiBjaGVja0Vycm9yKGZyb206IHN0cmluZywgY2hlY2s6IFN1Z2FyeU5vZGVDaGVjayk6IEVycm9yIHtcbiAgcmV0dXJuIG5ldyBFcnJvcihgY2Fubm90IGNhc3QgYSAke2Zyb219IGludG8gJHtjaGVja31gKTtcbn1cblxuZnVuY3Rpb24gaXNEb2N1bWVudChub2RlOiBOb2RlIHwgU2ltcGxlTm9kZSB8IFNpbXBsZURvY3VtZW50KTogbm9kZSBpcyBEb2N1bWVudCB8IFNpbXBsZURvY3VtZW50IHtcbiAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGVUeXBlLkRPQ1VNRU5UX05PREU7XG59XG5cbmZ1bmN0aW9uIGlzRWxlbWVudChub2RlOiBOb2RlIHwgU2ltcGxlTm9kZSB8IFNpbXBsZUVsZW1lbnQpOiBub2RlIGlzIEVsZW1lbnQgfCBTaW1wbGVFbGVtZW50IHtcbiAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGVUeXBlLkVMRU1FTlRfTk9ERTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTm9kZTxTIGV4dGVuZHMgU3VnYXJ5Tm9kZUNoZWNrPihcbiAgbm9kZTogTm9kZSB8IG51bGwsXG4gIGNoZWNrOiBTXG4pOiBOb2RlRm9yU3VnYXJ5Q2hlY2s8Uz4ge1xuICBsZXQgaXNNYXRjaCA9IGZhbHNlO1xuXG4gIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBjaGVjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlzTWF0Y2ggPSBzdHJpbmdDaGVja05vZGUobm9kZSwgY2hlY2sgYXMgQnJvd3NlclRhZyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNoZWNrKSkge1xuICAgICAgaXNNYXRjaCA9IGNoZWNrLnNvbWUoKGMpID0+IHN0cmluZ0NoZWNrTm9kZShub2RlLCBjIGFzIEJyb3dzZXJUYWcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICB9XG4gIH1cblxuICBpZiAoaXNNYXRjaCkge1xuICAgIHJldHVybiBub2RlIGFzIE5vZGVGb3JTdWdhcnlDaGVjazxTPjtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBjaGVja0Vycm9yKGBTaW1wbGVFbGVtZW50KCR7bm9kZX0pYCwgY2hlY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmluZ0NoZWNrTm9kZTxTIGV4dGVuZHMgQnJvd3NlclRhZz4obm9kZTogTm9kZSwgY2hlY2s6IFMpOiBub2RlIGlzIEJyb3dzZXJUYWdzW1NdIHtcbiAgc3dpdGNoIChjaGVjaykge1xuICAgIGNhc2UgJ05PREUnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSAnSFRNTCc6XG4gICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xuICAgIGNhc2UgJ1NWRyc6XG4gICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQ7XG4gICAgY2FzZSAnRUxFTUVOVCc6XG4gICAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChjaGVjay50b1VwcGVyQ2FzZSgpID09PSBjaGVjaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJVRzogdGhpcyBjb2RlIGlzIG1pc3NpbmcgaGFuZGxpbmcgZm9yIGEgZ2VuZXJpYyBub2RlIHR5cGVgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2RlIGluc3RhbmNlb2YgRWxlbWVudCAmJiBub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gY2hlY2s7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= |
\ | No newline at end of file |