You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
951 B
30 lines
951 B
import { ClassAttributor, Scope } from 'parchment'; |
|
class IndentAttributor extends ClassAttributor { |
|
add(node, value) { |
|
let normalizedValue = 0; |
|
if (value === '+1' || value === '-1') { |
|
const indent = this.value(node) || 0; |
|
normalizedValue = value === '+1' ? indent + 1 : indent - 1; |
|
} else if (typeof value === 'number') { |
|
normalizedValue = value; |
|
} |
|
if (normalizedValue === 0) { |
|
this.remove(node); |
|
return true; |
|
} |
|
return super.add(node, normalizedValue.toString()); |
|
} |
|
canAdd(node, value) { |
|
return super.canAdd(node, value) || super.canAdd(node, parseInt(value, 10)); |
|
} |
|
value(node) { |
|
return parseInt(super.value(node), 10) || undefined; // Don't return NaN |
|
} |
|
} |
|
const IndentClass = new IndentAttributor('indent', 'ql-indent', { |
|
scope: Scope.BLOCK, |
|
// @ts-expect-error |
|
whitelist: [1, 2, 3, 4, 5, 6, 7, 8] |
|
}); |
|
export default IndentClass; |
|
//# sourceMappingURL=indent.js.map
|