diff --git a/src/css/types/functions/counter.ts b/src/css/types/functions/counter.ts index 8404f68..280bba4 100644 --- a/src/css/types/functions/counter.ts +++ b/src/css/types/functions/counter.ts @@ -4,10 +4,7 @@ import {contains} from '../../../core/bitwise'; import {CSSParsedCounterDeclaration} from '../../index'; export class CounterState { - readonly counters: {[key: string]: number[]}; - constructor() { - this.counters = {}; - } + private readonly counters: {[key: string]: number[]} = {}; getCounterValue(name: string): number { const counter = this.counters[name]; @@ -18,7 +15,7 @@ export class CounterState { return 1; } - getCounterValues(name: string): number[] { + getCounterValues(name: string): readonly number[] { const counter = this.counters[name]; return counter ? counter : []; } @@ -37,6 +34,9 @@ export class CounterState { const counter = this.counters[entry.counter]; if (counter && entry.increment !== 0) { canReset = false; + if (!counter.length) { + counter.push(1); + } counter[Math.max(0, counter.length - 1)] += entry.increment; } }); diff --git a/tests/reftests/pseudo-content.html b/tests/reftests/pseudo-content.html index 24c763e..a97dab7 100644 --- a/tests/reftests/pseudo-content.html +++ b/tests/reftests/pseudo-content.html @@ -86,6 +86,20 @@ of the section counter, separated by a period */ } + + .issue-2639 { + display: flex; + } + + .issue-2639::before { + content: counter(ol0) '. '; + counter-increment: ol0; + } + + .issue-2639:first-child { + counter-reset: ol0; + } + @@ -163,5 +177,10 @@
  • item
  • +
      +
    1. one
    2. +
    3. two
    4. +
    +