Files
iTop/lib/pelago/emogrifier/CHANGELOG.md

23 KiB
Raw Blame History

Emogrifier Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

x.y.z

Added

Changed

Deprecated

Removed

Fixed

3.1.0

Added

Changed

  • Upgrade to Symfony 5.0 (#822

3.0.0

Added

  • Test and document excluding entire subtree with addExcludedSelector() (#347, #768)
  • Test that rules with :optional or :required are copied to the <style> element (#748, #765)
  • Test that rules with :only-of-type are copied to the <style> element (#748, #760)
  • Support :last-of-type (#748, #758)
  • Support :first-of-type (#748, #757)
  • Support :empty (#748, #756)
  • Test that rules with :any-link are copied to the <style> element (#748, #755)
  • Support and test :only-child (#747, #754)
  • Support and test :nth-last-of-type (#747, #751)
  • Support and test :nth-last-child (#747, #750)
  • Support and test general sibling combinator (#723, #745)
  • Test universal selector with combinators (#723, #743)
  • Preserve display: none elements with -emogrifier-keep class (#252, #737)
  • Preserve valid @import rules (#338, #334, #732, #735)
  • Add HtmlPruner::removeRedundantClassesAfterCssInlined (#380, #724)
  • Check on Travis that PHP-CS-Fixer will not change anything #727)
  • Support :not(…) as an entire selector (#469, #725)
  • Add HtmlPruner::removeRedundantClasses (#380, #708)
  • Support multiple attributes selectors (#385, #721)
  • Support > :first-child and > :last-child in selectors (#384, #720)
  • Add an ArrayIntersector class (#708, #710)
  • Add CssInliner::getMatchingUninlinableSelectors (#380, #707)
  • Add tests for :nth-child and :nth-of-type (#71, #698)

Changed

  • Relax the dependency on symfony/css-selector (#762)
  • Rename HtmlPruner::removeInvisibleNodes to HtmlPruner::removeElementsWithDisplayNone (#717, #718)
  • Mark the utility classes as internal (#715)
  • Move utility classes to the Pelago\Emogrifier\Utilities namespace (#712)
  • Make the $css parameter of the inlineCss method optional (#700)
  • Update the development dependencies (#691)

Deprecated

  • Support for PHP 5.6 will be removed in Emogrifier 4.0.
  • Deprecate the Emogrifier class (#701)

Removed

  • Drop enableCssToHtmlMapping and disableInvisibleNodeRemoval (#692)
  • Drop support for PHP 5.5 (#690)

Fixed

  • Fix PhpStorm code inspection warnings (#729, #770)
  • Uppercase type combined with class or ID in selector (#590, #769)
  • Dynamic pseudo-class combined with static one (rules copied to <style> element, #746)
  • Descendant attribute selectors (such as html input[disabled]) (#375, #709)
  • Attribute selectors with hyphen in attribute name (#284, #540, #704)
  • Attribute selectors with space, hyphen, colon, semicolon or (most) other non-alphanumeric characters in attribute value (#284, #333, #550, #540, #704)
  • Dont create empty style attributes for unparsable declarations (#259, #702)
  • Allow :not(:behavioural-pseudo-class) in selectors (#697, #703)

2.2.0

Added

  • Add a HtmlPruner class (#679)
  • Add AbstractHtmlProcessor::fromDomDocument (#676)
  • Add AbstractHtmlProcessor::fromHtml (#675)

Changed

  • Make the closures static (#674)
  • Keep <wbr> elements by default with CssInliner (#665)
  • Make the CssInliner inherit AbstractHtmlProcessor (#660)
  • Separate CssInliner::inlineCss and the rendering (#654)

Removed

  • Drop the removal of unprocessable tags from CssInliner (#685)
  • Drop the removal of invisible nodes from CssInliner (#684)

Fixed

  • Remove opening <body> tag from body content when element has attribute(s) (#677, #683)
  • Keep development files out of the Composer packages (#678)
  • Call all static methods statically in CssConcatenator (#670)
  • Support all HTML5 self-closing tags, including <embed>, <source>, <track> and <wbr> (#653)
  • Remove all "unprocessable" (e.g. <wbr>) tags (#650)
  • Correct translated xpath of :nth-child selector (#648)

2.1.1

Changed

  • Add a test that a missing document type gets added (#641)

Fixed

  • Keep the style element the head (#642)

2.1.0

Added

  • PHP 7.3 support (#638)
    • Allow PHP 7.3 in composer.json
    • Test in Travis for PHP 7.3
  • Add a renderBodyContent() method (#633)
  • Add a getDomDocument() method (#630)
  • Add a Composer script for PHP CS Fixer (#607)
  • Copy matching rules with dynamic pseudo-classes or pseudo-elements in selectors to the style element (#280, #562, #567)
  • Add a CssToAttributeConverter (#546)
  • Expose the DOMDocument in AbstractHtmlProcessor (#520)
  • Add an HtmlNormalizer class (#513, #516)
  • Add a CssInliner class (#514, #522)
  • Composer scripts for the various CI build steps
  • Validate the composer.json on Travis (#476)

Changed

  • Mark the work-in-progress classes as @internal (#640)
  • Remove the unprocessable tags from the DOM, not from the raw HTML (#627)
  • Reject empty HTML in setHtml() (#622)
  • Stop passing the DOM document around (#618)
  • Improve performance by using explicit namespaces for PHP functions (#573, #576)
  • Add type hint checking to the code sniffs (#566)
  • Check the code with PHPMD (#561)
  • Add the cyclomatic complexity to the checked code sniffs (#558)
  • Use the Symfony CSS selector component (#540)

Deprecated

  • Support for PHP 5.5 will be removed in Emogrifier 3.0.
  • Support for PHP 5.6 will be removed in Emogrifier 4.0.
  • The removal of invisible nodes will be removed in Emogrifier 3.0. (#473)
  • Converting CSS styles to (non-CSS) HTML attributes will be removed in Emogrifier 3.0. Please use the new CssToAttributeConverter instead. (#474)
  • Emogrifier 3.x.y will be the last release that supports usage without Composer (i.e., you can still require the class file). Starting with version 4.0, Emogrifier will only work with Composer.
  • The Emogrifier class will be superseded by CssInliner class in Emogrifier 3.0. For this, the Emogrifier class will be deprecated for version 3.0 and removed for version 4.0.

Removed

  • Drop the @version PHPDoc annotations (#637)
  • Drop the destructors (#619)

Fixed

  • Add required XML PHP extension to composer.json (#614)
  • Add required DOM PHP extension to composer.json (#595)
  • Escape hyphens in regular expressions (#588)
  • Fix Travis for PHP 5.x (#589)
  • Allow CSS between empty @media rule and another @media rule (#534)
  • Allow additional whitespace in media-query-list of disallowed @media rules (#532)
  • Allow multiple minified @import rules in the CSS without error (note: @imports are currently ignored, #527)
  • Style property ordering when multiple mixed individual and shorthand properties apply (#511, #508)
  • Calculation of selector precedence for selectors involving pseudo-classes and/or attributes (#502)
  • Allow @charset in the CSS without error (note: its value is currently ignored, #507)
  • Allow attribute selectors in descendants (#506, #381, #443)
  • Allow adjacent sibling CSS selector combinator in minified CSS (#505)
  • Allow CSS property values containing newlines (#504)

2.0.0

Added

  • Support for CSS :not() selector (#431)
  • Automatically remove !important annotations from final inline style declarations (#420)
  • Automatically move <style> block from <head> to <body> (#396)
  • PHP 7.2 support (#398)
    • Allow PHP 7.2 in composer.json, cleaner PHP version constraint
    • Test in Travis for PHP 7.2
  • Debug mode. Throw debug exceptions only if debug is active. (#392)

Changed

  • Test with latest and oldest dependencies on Travis (#463)
  • Always enable the debug mode in the tests (#448)
  • Optimize the string operations (#430)

Deprecated

  • Support for PHP 5.5 will be removed in Emogrifier 3.0.
  • Support for PHP 5.6 will be removed in Emogrifier 4.0.

Removed

  • Drop support for PHP 5.4 (#422)
  • Drop support for HHVM (#386)

Fixed

  • Handle invalid/unrecognized selectors in media query blocks (#442)
  • Throw (the correct) exception for invalid excluded selectors (#437)
  • emogrifyBody must not encode umlaut entities (#414)
  • Fix mapped HTML attribute values (#405)
  • Make sure the HTML always has a BODY element (#410)
  • Make inline style priority higher than css block priority (#404)
  • Fix media regex parsing (#402)
  • Silence purposefully ignored PHP Warnings (#400)

1.2.0 (2017-03-02)

Added

  • Handling invalid xPath expression warnings (#361)

Deprecated

  • Support for PHP 5.5 will be removed in Emogrifier 3.0.
  • Support for PHP 5.4 will be removed in Emogrifier 2.0.

Fixed

  • Allow colon (:) and semi-colon (;) when using the *= selector (#371)
  • Ignore "auto" width and height (#365)

1.1.0 (2016-09-18)

Added

  • Add support for PHP 7.1 (#342)
  • Support the attr|=value selector (#337)
  • Support the attr*=value selector (#330)
  • Support the attr$=value selector (#329)
  • Support the attr^=value selector (#324)
  • Support the attr~=value selector (#323)
  • Add CSS to HTML attribute mapper (#288)

Changed

  • Remove composer dependency from PHP mbstring extension (Actual code dependency were removed a lot of time ago) (#295)

Deprecated

  • Support for PHP 5.5 will be removed in Emogrifier 3.0.
  • Support for PHP 5.4 will be removed in Emogrifier 2.0.

Fixed

  • Method emogrifyBodyContent() doesn't keeps utf8 umlauts (#349)
  • Ignore value with words more than one in the attribute selector (#327)
  • Ignore spaces around the > in the direct child selector (#322)
  • Ignore empty media queries (#307) (#237)
  • Ignore pseudo-class when combined with pseudo-element (#308)
  • First-child and last-child selectors are broken (#293)
  • Second !important rule needs to overwrite the first one (#292)

1.0.0 (2015-10-15)

Added

  • Add branch alias (#231)
  • Remove media queries which do not impact the document (#217)
  • Allow elements to be excluded from emogrification (#215)
  • Handle !important (#214)
  • emogrifyBodyContent() method (#206)
  • Cache combinedStyles (#211)
  • Allow user to define media types to keep (#200)
  • Ignore invalid CSS selectors (#194)
  • isRemoveDisplayNoneEnabled option (#162)
  • Allow disabling of "inline style" and "style block" parsing (#156)
  • Preserve @media if necessary (#62)
  • Add extraction of style blocks within the HTML
  • Add several new pseudo-selectors (first-child, last-child, nth-child, and nth-of-type)

Changed

  • Make HTML5 the default document type (#245)
  • Make copyCssWithMediaToStyleNode private (#218)
  • Stop encoding umlauts and dollar signs (#170)
  • Convert the classes to namespaces (#41)

Deprecated

  • Support for PHP 5.4 will be removed in Emogrifier 2.0.

Removed

  • Drop support for PHP 5.3 (#114)
  • Support for character sets other than UTF-8 was removed.

Fixed

  • Fix failing tests on Windows due to line endings (#263)
  • Parsing CSS declaration blocks (#261)
  • Fix first-child and last-child selectors (#257)
  • Fix parsing of CSS for data URIs (#243)
  • Fix multi-line media queries (#241)
  • Keep CSS media queries even if followed by CSS comments (#201)
  • Fix CSS selectors with exact attribute only (#197)
  • Properly handle UTF-8 characters and entities (#189)
  • Add mbstring extension to composer.json (#93)
  • Prevent incorrectly capitalized CSS selectors from being stripped (#85)
  • Fix CSS selectors with exact attribute only (#197)
  • Wrong selector extraction from minified CSS (#69)
  • Restore libxml error handler state after clearing (#65)
  • Ignore all warnings produced by DOMDocument::loadHTML() (#63)
  • Style tags in HTML cause an Xpath invalid query error (#60)
  • Fix PHP warnings with PHP 5.5 (#26)
  • Make removal of invisible nodes operate in a case-insensitive manner
  • Fix a bug that was overwriting existing inline styles from the original HTML