PHP 7.4.33
Preview: removeUselessDefs.js Size: 1.70 KB
/var/www/cookieconsent.bitkit.dk/httpdocs/node_modules/svgo/plugins/removeUselessDefs.js
'use strict';

/**
 * @typedef {import('../lib/types').XastElement} XastElement
 */

const { detachNodeFromParent } = require('../lib/xast.js');
const { elemsGroups } = require('./_collections.js');

exports.name = 'removeUselessDefs';
exports.description = 'removes elements in <defs> without id';

/**
 * Removes content of defs and properties that aren't rendered directly without ids.
 *
 * @author Lev Solntsev
 *
 * @type {import('./plugins-types').Plugin<'removeUselessDefs'>}
 */
exports.fn = () => {
  return {
    element: {
      enter: (node, parentNode) => {
        if (node.name === 'defs') {
          /**
           * @type {XastElement[]}
           */
          const usefulNodes = [];
          collectUsefulNodes(node, usefulNodes);
          if (usefulNodes.length === 0) {
            detachNodeFromParent(node, parentNode);
          }
          // TODO remove legacy parentNode in v4
          for (const usefulNode of usefulNodes) {
            Object.defineProperty(usefulNode, 'parentNode', {
              writable: true,
              value: node,
            });
          }
          node.children = usefulNodes;
        } else if (
          elemsGroups.nonRendering.has(node.name) &&
          node.attributes.id == null
        ) {
          detachNodeFromParent(node, parentNode);
        }
      },
    },
  };
};

/**
 * @type {(node: XastElement, usefulNodes: XastElement[]) => void}
 */
const collectUsefulNodes = (node, usefulNodes) => {
  for (const child of node.children) {
    if (child.type === 'element') {
      if (child.attributes.id != null || child.name === 'style') {
        usefulNodes.push(child);
      } else {
        collectUsefulNodes(child, usefulNodes);
      }
    }
  }
};

Directory Contents

Dirs: 0 × Files: 58
Name Size Perms Modified Actions
1.87 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.71 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
10.93 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.32 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
4.80 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
5.98 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
3.77 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
2.75 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
3.79 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
3.93 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
912 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
4.56 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
35.30 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
5.73 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
4.03 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
10.92 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
12.31 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
4.11 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
2.51 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
4.19 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
3.61 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.94 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
7.07 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
7.60 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
2.98 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
2.36 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
3.90 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.23 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1013 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.23 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.07 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.90 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.99 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
731 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.52 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.26 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
12.06 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
532 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
906 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
3.84 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
746 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.80 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
573 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
536 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
6.07 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.77 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.70 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
4.20 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.34 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
6.04 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
578 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
579 B lrw-r--r-- 2025-06-16 05:45:40
Edit Download
5.96 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
2.55 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
1.76 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
48.70 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
20.62 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
10.64 KB lrw-r--r-- 2025-06-16 05:45:40
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).