MCPcopy
hub / github.com/tinymce/tinymce / getParents

Function getParents

modules/tinymce/src/core/main/ts/api/dom/DOMUtils.ts:544–581  ·  view source on GitHub ↗
(elm: string | Node | null, selector?: string | ((node: Node) => boolean | void), root?: Node, collect?: boolean)

Source from the content-addressed store, hash-verified

542 };
543
544 const getParents = (elm: string | Node | null, selector?: string | ((node: Node) => boolean | void), root?: Node, collect?: boolean): Node[] | null => {
545 const result: Node[] = [];
546
547 let node = get(elm);
548 collect = collect === undefined;
549
550 // Default root on inline mode
551 const resolvedRoot = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);
552
553 // Wrap node name as func
554 if (Type.isString(selector)) {
555 if (selector === '*') {
556 selector = NodeType.isElement;
557 } else {
558 const selectorVal = selector;
559 selector = (node) => is(node, selectorVal);
560 }
561 }
562
563 while (node) {
564 // TODO: Remove nullable check once TINY-6599 is complete
565 if (node === resolvedRoot || Type.isNullable(node.nodeType) || NodeType.isDocument(node) || NodeType.isDocumentFragment(node)) {
566 break;
567 }
568
569 if (!selector || selector(node)) {
570 if (collect) {
571 result.push(node);
572 } else {
573 return [ node ];
574 }
575 }
576
577 node = node.parentNode;
578 }
579
580 return collect ? result : null;
581 };
582
583 const getParent = (node: string | Node | null, selector?: string | ((node: Node) => boolean | void), root?: Node): Node | null => {
584 const parents = getParents(node, selector, root, false);

Callers 1

getParentFunction · 0.70

Calls 4

getFunction · 0.70
getRootFunction · 0.70
isFunction · 0.70
selectorFunction · 0.50

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…