Skip to content

Commit

Permalink
fix: safari pseudo element content parsing (#2018)
Browse files Browse the repository at this point in the history
* fix: await for fonts to be ready in document clone

* fix: safari pseudo element content parsing

* fix: safari counter-increment / counter-reset
  • Loading branch information
niklasvh authored Sep 27, 2019
1 parent 0764920 commit 3f59910
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 11 deletions.
22 changes: 13 additions & 9 deletions src/css/types/functions/counter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,25 +30,29 @@ export class CounterState {
parse(style: CSSParsedCounterDeclaration): string[] {
const counterIncrement = style.counterIncrement;
const counterReset = style.counterReset;
let canReset = true;

if (counterIncrement !== null) {
counterIncrement.forEach(entry => {
const counter = this.counters[entry.counter];
if (counter) {
if (counter && entry.increment !== 0) {
canReset = false;
counter[Math.max(0, counter.length - 1)] += entry.increment;
}
});
}

const counterNames: string[] = [];
counterReset.forEach(entry => {
let counter = this.counters[entry.counter];
counterNames.push(entry.counter);
if (!counter) {
counter = this.counters[entry.counter] = [];
}
counter.push(entry.reset);
});
if (canReset) {
counterReset.forEach(entry => {
let counter = this.counters[entry.counter];
counterNames.push(entry.counter);
if (!counter) {
counter = this.counters[entry.counter] = [];
}
counter.push(entry.reset);
});
}

return counterNames;
}
Expand Down
9 changes: 7 additions & 2 deletions src/dom/document-cloner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export class DocumentCloner {
if window url is about:blank, we can assign the url to current by writing onto the document
*/

const iframeLoad = iframeLoader(iframe).then(() => {
const iframeLoad = iframeLoader(iframe).then(async () => {
this.scrolledElements.forEach(restoreNodeScroll);
if (cloneWindow) {
cloneWindow.scrollTo(windowSize.left, windowSize.top);
Expand All @@ -91,6 +91,10 @@ export class DocumentCloner {
return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);
}

if (documentClone.fonts && documentClone.fonts.ready) {
await documentClone.fonts.ready;
}

if (typeof onclone === 'function') {
return Promise.resolve()
.then(() => onclone(documentClone))
Expand Down Expand Up @@ -398,7 +402,8 @@ export class DocumentCloner {
);
break;
default:
// console.log('ident', token, declaration);
// safari doesn't parse string tokens correctly because of lack of quotes
anonymousReplacedElement.appendChild(document.createTextNode(token.value));
}
}
});
Expand Down
4 changes: 4 additions & 0 deletions src/global.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ interface CSSStyleDeclaration {
interface DocumentType extends Node, ChildNode {
readonly internalSubset: string | null;
}

interface Document {
fonts: any;
}

0 comments on commit 3f59910

Please sign in to comment.