Comparing version 0.0.0-experimental-d9970004a-20240215 to 0.0.0-experimental-dd0792975-20240318
import { AttributorStore, BlockBlot, EmbedBlot, LeafBlot, Scope } from 'parchment'; | ||
import Delta from 'quill-delta'; | ||
import Break from './break'; | ||
import Inline from './inline'; | ||
import TextBlot from './text'; | ||
import Break from './break.js'; | ||
import Inline from './inline.js'; | ||
import TextBlot from './text.js'; | ||
const NEWLINE_LENGTH = 1; | ||
@@ -7,0 +7,0 @@ class Block extends BlockBlot { |
import { EmbedBlot } from 'parchment'; | ||
import type { ScrollBlot } from 'parchment'; | ||
import type Selection from '../core/selection'; | ||
import type { EmbedContextRange } from './embed'; | ||
import type Selection from '../core/selection.js'; | ||
import type { EmbedContextRange } from './embed.js'; | ||
declare class Cursor extends EmbedBlot { | ||
@@ -6,0 +6,0 @@ static blotName: string; |
import { EmbedBlot, Scope } from 'parchment'; | ||
import TextBlot from './text'; | ||
import TextBlot from './text.js'; | ||
class Cursor extends EmbedBlot { | ||
@@ -4,0 +4,0 @@ static blotName = 'cursor'; |
import { EmbedBlot } from 'parchment'; | ||
import TextBlot from './text'; | ||
import TextBlot from './text.js'; | ||
const GUARD_TEXT = '\uFEFF'; | ||
@@ -4,0 +4,0 @@ class Embed extends EmbedBlot { |
import { EmbedBlot, InlineBlot, Scope } from 'parchment'; | ||
import Break from './break'; | ||
import Text from './text'; | ||
import Break from './break.js'; | ||
import Text from './text.js'; | ||
class Inline extends InlineBlot { | ||
@@ -13,3 +13,2 @@ static allowedChildren = [Inline, Break, EmbedBlot, Text]; | ||
]; | ||
static compare(self, other) { | ||
@@ -16,0 +15,0 @@ const selfIndex = Inline.order.indexOf(self); |
import { LeafBlot, ScrollBlot } from 'parchment'; | ||
import type { Blot, Registry } from 'parchment'; | ||
import Delta from 'quill-delta'; | ||
import Emitter from '../core/emitter'; | ||
import type { EmitterSource } from '../core/emitter'; | ||
import Block, { BlockEmbed } from './block'; | ||
import Container from './container'; | ||
import Emitter from '../core/emitter.js'; | ||
import type { EmitterSource } from '../core/emitter.js'; | ||
import Block, { BlockEmbed } from './block.js'; | ||
import Container from './container.js'; | ||
declare class Scroll extends ScrollBlot { | ||
@@ -9,0 +9,0 @@ static blotName: string; |
import { ContainerBlot, LeafBlot, Scope, ScrollBlot } from 'parchment'; | ||
import Delta, { AttributeMap, Op } from 'quill-delta'; | ||
import Emitter from '../core/emitter'; | ||
import Block, { BlockEmbed, bubbleFormats } from './block'; | ||
import Break from './break'; | ||
import Container from './container'; | ||
import Emitter from '../core/emitter.js'; | ||
import Block, { BlockEmbed, bubbleFormats } from './block.js'; | ||
import Break from './break.js'; | ||
import Container from './container.js'; | ||
function isLine(blot) { | ||
@@ -201,3 +201,2 @@ return blot instanceof Block || blot instanceof BlockEmbed; | ||
} | ||
remove() { | ||
@@ -204,0 +203,0 @@ // Never remove self |
@@ -1,4 +0,4 @@ | ||
import Quill from './core/quill'; | ||
import Quill from './core/quill.js'; | ||
import Delta, { Op, OpIterator, AttributeMap } from 'quill-delta'; | ||
export { Delta, Op, OpIterator, AttributeMap }; | ||
export default Quill; |
30
core.js
@@ -1,17 +0,17 @@ | ||
import Quill from './core/quill'; | ||
import Block, { BlockEmbed } from './blots/block'; | ||
import Break from './blots/break'; | ||
import Container from './blots/container'; | ||
import Cursor from './blots/cursor'; | ||
import Embed from './blots/embed'; | ||
import Inline from './blots/inline'; | ||
import Scroll from './blots/scroll'; | ||
import TextBlot from './blots/text'; | ||
import Clipboard from './modules/clipboard'; | ||
import History from './modules/history'; | ||
import Keyboard from './modules/keyboard'; | ||
import Uploader from './modules/uploader'; | ||
import Quill from './core/quill.js'; | ||
import Block, { BlockEmbed } from './blots/block.js'; | ||
import Break from './blots/break.js'; | ||
import Container from './blots/container.js'; | ||
import Cursor from './blots/cursor.js'; | ||
import Embed from './blots/embed.js'; | ||
import Inline from './blots/inline.js'; | ||
import Scroll from './blots/scroll.js'; | ||
import TextBlot from './blots/text.js'; | ||
import Clipboard from './modules/clipboard.js'; | ||
import History from './modules/history.js'; | ||
import Keyboard from './modules/keyboard.js'; | ||
import Uploader from './modules/uploader.js'; | ||
import Delta, { Op, OpIterator, AttributeMap } from 'quill-delta'; | ||
import Input from './modules/input'; | ||
import UINode from './modules/uiNode'; | ||
import Input from './modules/input.js'; | ||
import UINode from './modules/uiNode.js'; | ||
export { Delta, Op, OpIterator, AttributeMap }; | ||
@@ -18,0 +18,0 @@ Quill.register({ |
@@ -1,3 +0,3 @@ | ||
import type Scroll from '../blots/scroll'; | ||
import Emitter from './emitter'; | ||
import type Scroll from '../blots/scroll.js'; | ||
import Emitter from './emitter.js'; | ||
declare class Composition { | ||
@@ -4,0 +4,0 @@ private scroll; |
@@ -1,3 +0,3 @@ | ||
import Embed from '../blots/embed'; | ||
import Emitter from './emitter'; | ||
import Embed from '../blots/embed.js'; | ||
import Emitter from './emitter.js'; | ||
class Composition { | ||
@@ -4,0 +4,0 @@ isComposing = false; |
import Delta from 'quill-delta'; | ||
import type Scroll from '../blots/scroll'; | ||
import { Range } from './selection'; | ||
import type Scroll from '../blots/scroll.js'; | ||
import { Range } from './selection.js'; | ||
type SelectionInfo = { | ||
@@ -5,0 +5,0 @@ newRange: Range; |
import { cloneDeep, isEqual, merge } from 'lodash-es'; | ||
import { LeafBlot, EmbedBlot, Scope, ParentBlot } from 'parchment'; | ||
import Delta, { AttributeMap, Op } from 'quill-delta'; | ||
import Block, { BlockEmbed, bubbleFormats } from '../blots/block'; | ||
import Break from '../blots/break'; | ||
import CursorBlot from '../blots/cursor'; | ||
import TextBlot, { escapeText } from '../blots/text'; | ||
import { Range } from './selection'; | ||
import Block, { BlockEmbed, bubbleFormats } from '../blots/block.js'; | ||
import Break from '../blots/break.js'; | ||
import CursorBlot from '../blots/cursor.js'; | ||
import TextBlot, { escapeText } from '../blots/text.js'; | ||
import { Range } from './selection.js'; | ||
const ASCII = /^[ -~]*$/; | ||
@@ -169,5 +169,5 @@ class Editor { | ||
const lineLength = line.length(); | ||
if (line.length() >= lineOffset + length) { | ||
const excludeOuterTag = !(lineOffset === 0 && length === lineLength); | ||
return convertHTML(line, lineOffset, length, excludeOuterTag); | ||
const isWithinLine = line.length() >= lineOffset + length; | ||
if (isWithinLine && !(lineOffset === 0 && length === lineLength)) { | ||
return convertHTML(line, lineOffset, length, true); | ||
} | ||
@@ -293,3 +293,3 @@ return convertHTML(this.scroll, index, length, true); | ||
function convertHTML(blot, index, length) { | ||
let excludeOuterTag = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; | ||
let isRoot = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; | ||
if ('html' in blot && typeof blot.html === 'function') { | ||
@@ -321,3 +321,3 @@ return blot.html(index, length); | ||
}); | ||
if (excludeOuterTag || blot.statics.blotName === 'list') { | ||
if (isRoot || blot.statics.blotName === 'list') { | ||
return parts.join(''); | ||
@@ -324,0 +324,0 @@ } |
import { EventEmitter } from 'eventemitter3'; | ||
import instances from './instances'; | ||
import logger from './logger'; | ||
import instances from './instances.js'; | ||
import logger from './logger.js'; | ||
const debug = logger('quill:events'); | ||
@@ -5,0 +5,0 @@ const EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click']; |
@@ -1,3 +0,3 @@ | ||
import type Quill from '../core'; | ||
import type Quill from '../core.js'; | ||
declare const _default: WeakMap<Node, Quill>; | ||
export default _default; |
@@ -13,3 +13,2 @@ const levels = ['error', 'warn', 'log', 'info']; | ||
} | ||
function namespace(ns) { | ||
@@ -16,0 +15,0 @@ return levels.reduce((logger, method) => { |
@@ -1,2 +0,2 @@ | ||
import type Quill from './quill'; | ||
import type Quill from './quill.js'; | ||
declare abstract class Module<T extends {} = {}> { | ||
@@ -3,0 +3,0 @@ protected quill: Quill; |
import * as Parchment from 'parchment'; | ||
import type { Op } from 'quill-delta'; | ||
import Delta from 'quill-delta'; | ||
import type { BlockEmbed } from '../blots/block'; | ||
import type Block from '../blots/block'; | ||
import type Scroll from '../blots/scroll'; | ||
import type Clipboard from '../modules/clipboard'; | ||
import type History from '../modules/history'; | ||
import type Keyboard from '../modules/keyboard'; | ||
import type Uploader from '../modules/uploader'; | ||
import Editor from './editor'; | ||
import Emitter from './emitter'; | ||
import type { EmitterSource } from './emitter'; | ||
import type { DebugLevel } from './logger'; | ||
import Module from './module'; | ||
import Selection, { Range } from './selection'; | ||
import type { Bounds } from './selection'; | ||
import Composition from './composition'; | ||
import Theme from './theme'; | ||
import type { ThemeConstructor } from './theme'; | ||
import type { Rect } from './utils/scrollRectIntoView'; | ||
import type { BlockEmbed } from '../blots/block.js'; | ||
import type Block from '../blots/block.js'; | ||
import type Scroll from '../blots/scroll.js'; | ||
import type Clipboard from '../modules/clipboard.js'; | ||
import type History from '../modules/history.js'; | ||
import type Keyboard from '../modules/keyboard.js'; | ||
import type Uploader from '../modules/uploader.js'; | ||
import Editor from './editor.js'; | ||
import Emitter from './emitter.js'; | ||
import type { EmitterSource } from './emitter.js'; | ||
import type { DebugLevel } from './logger.js'; | ||
import Module from './module.js'; | ||
import Selection, { Range } from './selection.js'; | ||
import type { Bounds } from './selection.js'; | ||
import Composition from './composition.js'; | ||
import Theme from './theme.js'; | ||
import type { ThemeConstructor } from './theme.js'; | ||
import type { Rect } from './utils/scrollRectIntoView.js'; | ||
declare const globalRegistry: Parchment.Registry; | ||
@@ -28,8 +28,8 @@ interface Options { | ||
readOnly?: boolean; | ||
container?: HTMLElement | string; | ||
placeholder?: string; | ||
bounds?: HTMLElement | string | null; | ||
modules?: Record<string, unknown>; | ||
formats?: string[] | null; | ||
} | ||
interface ExpandedOptions extends Omit<Options, 'theme'> { | ||
interface ExpandedOptions extends Omit<Options, 'theme' | 'formats'> { | ||
theme: ThemeConstructor; | ||
@@ -40,5 +40,18 @@ registry: Parchment.Registry; | ||
bounds?: HTMLElement | null; | ||
readOnly: boolean; | ||
} | ||
declare class Quill { | ||
static DEFAULTS: Partial<Options>; | ||
static DEFAULTS: { | ||
readonly bounds: null; | ||
readonly modules: { | ||
readonly clipboard: true; | ||
readonly keyboard: true; | ||
readonly history: true; | ||
readonly uploader: true; | ||
}; | ||
readonly placeholder: ""; | ||
readonly readOnly: false; | ||
readonly registry: Parchment.Registry; | ||
readonly theme: "default"; | ||
}; | ||
static events: { | ||
@@ -183,3 +196,3 @@ readonly EDITOR_CHANGE: "editor-change"; | ||
} | ||
declare function expandConfig(container: HTMLElement | string, userConfig: Options): ExpandedOptions; | ||
declare function expandConfig(containerOrSelector: HTMLElement | string, options: Options): ExpandedOptions; | ||
type NormalizedIndexLength = [ | ||
@@ -186,0 +199,0 @@ number, |
@@ -1,13 +0,14 @@ | ||
import { cloneDeep, merge } from 'lodash-es'; | ||
import { merge } from 'lodash-es'; | ||
import * as Parchment from 'parchment'; | ||
import Delta from 'quill-delta'; | ||
import Editor from './editor'; | ||
import Emitter from './emitter'; | ||
import instances from './instances'; | ||
import logger from './logger'; | ||
import Module from './module'; | ||
import Selection, { Range } from './selection'; | ||
import Composition from './composition'; | ||
import Theme from './theme'; | ||
import scrollRectIntoView from './utils/scrollRectIntoView'; | ||
import Editor from './editor.js'; | ||
import Emitter from './emitter.js'; | ||
import instances from './instances.js'; | ||
import logger from './logger.js'; | ||
import Module from './module.js'; | ||
import Selection, { Range } from './selection.js'; | ||
import Composition from './composition.js'; | ||
import Theme from './theme.js'; | ||
import scrollRectIntoView from './utils/scrollRectIntoView.js'; | ||
import createRegistryWithFormats from './utils/createRegistryWithFormats.js'; | ||
const debug = logger('quill'); | ||
@@ -19,3 +20,8 @@ const globalRegistry = new Parchment.Registry(); | ||
bounds: null, | ||
modules: {}, | ||
modules: { | ||
clipboard: true, | ||
keyboard: true, | ||
history: true, | ||
uploader: true | ||
}, | ||
placeholder: '', | ||
@@ -28,3 +34,3 @@ readOnly: false, | ||
static sources = Emitter.sources; | ||
static version = typeof "0.0.0-experimental-d9970004a-20240215" === 'undefined' ? 'dev' : "0.0.0-experimental-d9970004a-20240215"; | ||
static version = typeof "0.0.0-experimental-dd0792975-20240318" === 'undefined' ? 'dev' : "0.0.0-experimental-dd0792975-20240318"; | ||
static imports = { | ||
@@ -181,3 +187,2 @@ delta: Delta, | ||
return modify.call(this, () => { | ||
// @ts-expect-error | ||
return this.editor.deleteText(index, length); | ||
@@ -246,3 +251,2 @@ }, source, index, -1 * length); | ||
return modify.call(this, () => { | ||
// @ts-expect-error | ||
return this.editor.formatText(index, length, formats); | ||
@@ -357,5 +361,2 @@ }, source, index, 0); | ||
} | ||
// @ts-expect-error | ||
on() { | ||
@@ -442,67 +443,73 @@ return this.emitter.on(...arguments); | ||
} | ||
function expandConfig(container, userConfig) { | ||
// @ts-expect-error -- TODO fix this later | ||
let expandedConfig = merge({ | ||
container, | ||
modules: { | ||
clipboard: true, | ||
keyboard: true, | ||
history: true, | ||
uploader: true | ||
} | ||
}, userConfig); | ||
// @ts-expect-error -- TODO fix this later | ||
if (!expandedConfig.theme || expandedConfig.theme === Quill.DEFAULTS.theme) { | ||
expandedConfig.theme = Theme; | ||
} else { | ||
expandedConfig.theme = Quill.import(`themes/${expandedConfig.theme}`); | ||
if (expandedConfig.theme == null) { | ||
throw new Error(`Invalid theme ${expandedConfig.theme}. Did you register it?`); | ||
} | ||
function resolveSelector(selector) { | ||
return typeof selector === 'string' ? document.querySelector(selector) : selector; | ||
} | ||
function expandModuleConfig(config) { | ||
return Object.entries(config ?? {}).reduce((expanded, _ref) => { | ||
let [key, value] = _ref; | ||
return { | ||
...expanded, | ||
[key]: value === true ? {} : value | ||
}; | ||
}, {}); | ||
} | ||
function expandConfig(containerOrSelector, options) { | ||
const container = resolveSelector(containerOrSelector); | ||
if (!container) { | ||
throw new Error('Invalid Quill container'); | ||
} | ||
// @ts-expect-error -- TODO fix this later | ||
const themeConfig = cloneDeep(expandedConfig.theme.DEFAULTS); | ||
[themeConfig, expandedConfig].forEach(config => { | ||
config.modules = config.modules || {}; | ||
Object.keys(config.modules).forEach(module => { | ||
if (config.modules[module] === true) { | ||
config.modules[module] = {}; | ||
} | ||
}); | ||
}); | ||
const moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(expandedConfig.modules)); | ||
const moduleConfig = moduleNames.reduce((config, name) => { | ||
const moduleClass = Quill.import(`modules/${name}`); | ||
if (moduleClass == null) { | ||
debug.error(`Cannot load ${name} module. Are you sure you registered it?`); | ||
} else { | ||
// @ts-expect-error | ||
config[name] = moduleClass.DEFAULTS || {}; | ||
} | ||
return config; | ||
}, {}); | ||
const shouldUseDefaultTheme = !options.theme || options.theme === Quill.DEFAULTS.theme; | ||
const theme = shouldUseDefaultTheme ? Theme : Quill.import(`themes/${options.theme}`); | ||
if (!theme) { | ||
throw new Error(`Invalid theme ${options.theme}. Did you register it?`); | ||
} | ||
const { | ||
modules: quillModuleDefaults, | ||
...quillDefaults | ||
} = Quill.DEFAULTS; | ||
const { | ||
modules: themeModuleDefaults, | ||
...themeDefaults | ||
} = theme.DEFAULTS; | ||
const modules = merge({}, expandModuleConfig(quillModuleDefaults), expandModuleConfig(themeModuleDefaults), expandModuleConfig(options.modules)); | ||
// Special case toolbar shorthand | ||
if (expandedConfig.modules != null && expandedConfig.modules.toolbar && expandedConfig.modules.toolbar.constructor !== Object) { | ||
expandedConfig.modules.toolbar = { | ||
container: expandedConfig.modules.toolbar | ||
if (modules != null && modules.toolbar && modules.toolbar.constructor !== Object) { | ||
modules.toolbar = { | ||
container: modules.toolbar | ||
}; | ||
} | ||
expandedConfig = merge({}, Quill.DEFAULTS, { | ||
modules: moduleConfig | ||
}, themeConfig, expandedConfig); | ||
['bounds', 'container'].forEach(key => { | ||
const selector = expandedConfig[key]; | ||
if (typeof selector === 'string') { | ||
// @ts-expect-error Handle null case | ||
expandedConfig[key] = document.querySelector(selector); | ||
const config = { | ||
...quillDefaults, | ||
...themeDefaults, | ||
...options | ||
}; | ||
let registry = options.registry; | ||
if (registry) { | ||
if (options.formats) { | ||
debug.warn('Ignoring "formats" option because "registry" is specified'); | ||
} | ||
}); | ||
expandedConfig.modules = Object.keys(expandedConfig.modules).reduce((config, name) => { | ||
if (expandedConfig.modules[name]) { | ||
config[name] = expandedConfig.modules[name]; | ||
} | ||
return config; | ||
}, {}); | ||
return expandedConfig; | ||
} else { | ||
registry = options.formats ? createRegistryWithFormats(options.formats, config.registry, debug) : config.registry; | ||
} | ||
return { | ||
...config, | ||
registry, | ||
container, | ||
theme, | ||
modules: Object.entries(modules).reduce((modulesWithDefaults, _ref2) => { | ||
let [name, value] = _ref2; | ||
if (!value) return modulesWithDefaults; | ||
const moduleClass = Quill.import(`modules/${name}`); | ||
if (moduleClass == null) { | ||
debug.error(`Cannot load ${name} module. Are you sure you registered it?`); | ||
return modulesWithDefaults; | ||
} | ||
return { | ||
...modulesWithDefaults, | ||
// @ts-expect-error | ||
[name]: merge({}, moduleClass.DEFAULTS || {}, value) | ||
}; | ||
}, {}), | ||
bounds: resolveSelector(config.bounds) | ||
}; | ||
} | ||
@@ -523,3 +530,2 @@ | ||
} | ||
if (shift == null) { | ||
@@ -526,0 +532,0 @@ range = shiftRange(range, change, source); |
@@ -1,5 +0,5 @@ | ||
import Emitter from './emitter'; | ||
import type { EmitterSource } from './emitter'; | ||
import type Cursor from '../blots/cursor'; | ||
import type Scroll from '../blots/scroll'; | ||
import Emitter from './emitter.js'; | ||
import type { EmitterSource } from './emitter.js'; | ||
import type Cursor from '../blots/cursor.js'; | ||
import type Scroll from '../blots/scroll.js'; | ||
type NativeRange = AbstractRange; | ||
@@ -6,0 +6,0 @@ interface NormalizedRange { |
import { LeafBlot, Scope } from 'parchment'; | ||
import { cloneDeep, isEqual } from 'lodash-es'; | ||
import Emitter from './emitter'; | ||
import logger from './logger'; | ||
import Emitter from './emitter.js'; | ||
import logger from './logger.js'; | ||
const debug = logger('quill:selection'); | ||
@@ -111,3 +111,2 @@ class Range { | ||
} | ||
this.cursor.attach(); | ||
@@ -114,0 +113,0 @@ } |
@@ -1,7 +0,7 @@ | ||
import type Quill from '../core'; | ||
import type Clipboard from '../modules/clipboard'; | ||
import type History from '../modules/history'; | ||
import type Keyboard from '../modules/keyboard'; | ||
import type { ToolbarProps } from '../modules/toolbar'; | ||
import type Uploader from '../modules/uploader'; | ||
import type Quill from '../core.js'; | ||
import type Clipboard from '../modules/clipboard.js'; | ||
import type History from '../modules/history.js'; | ||
import type Keyboard from '../modules/keyboard.js'; | ||
import type { ToolbarProps } from '../modules/toolbar.js'; | ||
import type Uploader from '../modules/uploader.js'; | ||
export interface ThemeOptions { | ||
@@ -30,3 +30,4 @@ modules: Record<string, unknown> & { | ||
new (quill: Quill, options: unknown): Theme; | ||
DEFAULTS: ThemeOptions; | ||
} | ||
export default Theme; |
/*! | ||
* Quill Editor v0.0.0-experimental-d9970004a-20240215 | ||
* Quill Editor v0.0.0-experimental-dd0792975-20240318 | ||
* https://quilljs.com | ||
@@ -4,0 +4,0 @@ * Copyright (c) 2017-2024, Slab |
/*! | ||
* Quill Editor v0.0.0-experimental-d9970004a-20240215 | ||
* Quill Editor v0.0.0-experimental-dd0792975-20240318 | ||
* https://quilljs.com | ||
@@ -4,0 +4,0 @@ * Copyright (c) 2017-2024, Slab |
/*! | ||
* Quill Editor v0.0.0-experimental-d9970004a-20240215 | ||
* Quill Editor v0.0.0-experimental-dd0792975-20240318 | ||
* https://quilljs.com | ||
@@ -4,0 +4,0 @@ * Copyright (c) 2017-2024, Slab |
/*! | ||
* Quill Editor v0.0.0-experimental-d9970004a-20240215 | ||
* Quill Editor v0.0.0-experimental-dd0792975-20240318 | ||
* https://quilljs.com | ||
@@ -4,0 +4,0 @@ * Copyright (c) 2017-2024, Slab |
/*! | ||
* Quill Editor v0.0.0-experimental-d9970004a-20240215 | ||
* Quill Editor v0.0.0-experimental-dd0792975-20240318 | ||
* https://quilljs.com | ||
@@ -4,0 +4,0 @@ * Copyright (c) 2017-2024, Slab |
import { ClassAttributor } from 'parchment'; | ||
import { ColorAttributor } from './color'; | ||
import { ColorAttributor } from './color.js'; | ||
declare const BackgroundClass: ClassAttributor; | ||
declare const BackgroundStyle: ColorAttributor; | ||
export { BackgroundClass, BackgroundStyle }; |
import { ClassAttributor, Scope } from 'parchment'; | ||
import { ColorAttributor } from './color'; | ||
import { ColorAttributor } from './color.js'; | ||
const BackgroundClass = new ClassAttributor('background', 'ql-bg', { | ||
@@ -4,0 +4,0 @@ scope: Scope.INLINE |
@@ -1,2 +0,2 @@ | ||
import Block from '../blots/block'; | ||
import Block from '../blots/block.js'; | ||
declare class Blockquote extends Block { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Block from '../blots/block'; | ||
import Block from '../blots/block.js'; | ||
class Blockquote extends Block { | ||
@@ -3,0 +3,0 @@ static blotName = 'blockquote'; |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
declare class Bold extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
class Bold extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName = 'bold'; |
@@ -1,4 +0,4 @@ | ||
import Block from '../blots/block'; | ||
import Inline from '../blots/inline'; | ||
import Container from '../blots/container'; | ||
import Block from '../blots/block.js'; | ||
import Inline from '../blots/inline.js'; | ||
import Container from '../blots/container.js'; | ||
declare class CodeBlockContainer extends Container { | ||
@@ -5,0 +5,0 @@ static create(value: string): Element; |
@@ -1,8 +0,8 @@ | ||
import Block from '../blots/block'; | ||
import Break from '../blots/break'; | ||
import Cursor from '../blots/cursor'; | ||
import Inline from '../blots/inline'; | ||
import TextBlot, { escapeText } from '../blots/text'; | ||
import Container from '../blots/container'; | ||
import Quill from '../core/quill'; | ||
import Block from '../blots/block.js'; | ||
import Break from '../blots/break.js'; | ||
import Cursor from '../blots/cursor.js'; | ||
import Inline from '../blots/inline.js'; | ||
import TextBlot, { escapeText } from '../blots/text.js'; | ||
import Container from '../blots/container.js'; | ||
import Quill from '../core/quill.js'; | ||
class CodeBlockContainer extends Container { | ||
@@ -9,0 +9,0 @@ static create(value) { |
@@ -1,2 +0,2 @@ | ||
import Embed from '../blots/embed'; | ||
import Embed from '../blots/embed.js'; | ||
declare class Formula extends Embed { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Embed from '../blots/embed'; | ||
import Embed from '../blots/embed.js'; | ||
class Formula extends Embed { | ||
@@ -3,0 +3,0 @@ static blotName = 'formula'; |
@@ -1,2 +0,2 @@ | ||
import Block from '../blots/block'; | ||
import Block from '../blots/block.js'; | ||
declare class Header extends Block { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Block from '../blots/block'; | ||
import Block from '../blots/block.js'; | ||
class Header extends Block { | ||
@@ -3,0 +3,0 @@ static blotName = 'header'; |
@@ -8,3 +8,2 @@ import { EmbedBlot } from 'parchment'; | ||
static match(url: string): boolean; | ||
static register(): void; | ||
static sanitize(url: string): string; | ||
@@ -11,0 +10,0 @@ static value(domNode: Element): string | null; |
import { EmbedBlot } from 'parchment'; | ||
import { sanitize } from './link'; | ||
import { sanitize } from './link.js'; | ||
const ATTRIBUTES = ['alt', 'height', 'width']; | ||
@@ -25,11 +25,2 @@ class Image extends EmbedBlot { | ||
} | ||
static register() { | ||
if (/Firefox/i.test(navigator.userAgent)) { | ||
setTimeout(() => { | ||
// Disable image resizing in Firefox | ||
// @ts-expect-error | ||
document.execCommand('enableObjectResizing', false, false); | ||
}, 1); | ||
} | ||
} | ||
static sanitize(url) { | ||
@@ -36,0 +27,0 @@ return sanitize(url, ['http', 'https', 'data']) ? url : '//:0'; |
@@ -24,3 +24,2 @@ import { ClassAttributor, Scope } from 'parchment'; | ||
} | ||
const IndentClass = new IndentAttributor('indent', 'ql-indent', { | ||
@@ -27,0 +26,0 @@ scope: Scope.BLOCK, |
@@ -1,2 +0,2 @@ | ||
import Bold from './bold'; | ||
import Bold from './bold.js'; | ||
declare class Italic extends Bold { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Bold from './bold'; | ||
import Bold from './bold.js'; | ||
class Italic extends Bold { | ||
@@ -3,0 +3,0 @@ static blotName = 'italic'; |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
declare class Link extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
class Link extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName = 'link'; |
@@ -1,4 +0,4 @@ | ||
import Block from '../blots/block'; | ||
import Container from '../blots/container'; | ||
import type Scroll from '../blots/scroll'; | ||
import Block from '../blots/block.js'; | ||
import Container from '../blots/container.js'; | ||
import type Scroll from '../blots/scroll.js'; | ||
declare class ListContainer extends Container { | ||
@@ -5,0 +5,0 @@ } |
@@ -1,4 +0,4 @@ | ||
import Block from '../blots/block'; | ||
import Container from '../blots/container'; | ||
import Quill from '../core/quill'; | ||
import Block from '../blots/block.js'; | ||
import Container from '../blots/container.js'; | ||
import Quill from '../core/quill.js'; | ||
class ListContainer extends Container {} | ||
@@ -5,0 +5,0 @@ ListContainer.blotName = 'list-container'; |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
declare class Script extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
class Script extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName = 'script'; |
@@ -1,2 +0,2 @@ | ||
import Bold from './bold'; | ||
import Bold from './bold.js'; | ||
declare class Strike extends Bold { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Bold from './bold'; | ||
import Bold from './bold.js'; | ||
class Strike extends Bold { | ||
@@ -3,0 +3,0 @@ static blotName = 'strike'; |
import type { LinkedList } from 'parchment'; | ||
import Block from '../blots/block'; | ||
import Container from '../blots/container'; | ||
import Block from '../blots/block.js'; | ||
import Container from '../blots/container.js'; | ||
declare class TableCell extends Block { | ||
@@ -5,0 +5,0 @@ static blotName: string; |
@@ -1,3 +0,3 @@ | ||
import Block from '../blots/block'; | ||
import Container from '../blots/container'; | ||
import Block from '../blots/block.js'; | ||
import Container from '../blots/container.js'; | ||
class TableCell extends Block { | ||
@@ -120,3 +120,2 @@ static blotName = 'table'; | ||
} | ||
cells(column) { | ||
@@ -123,0 +122,0 @@ return this.rows().map(row => row.children.at(column)); |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
declare class Underline extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,2 +0,2 @@ | ||
import Inline from '../blots/inline'; | ||
import Inline from '../blots/inline.js'; | ||
class Underline extends Inline { | ||
@@ -3,0 +3,0 @@ static blotName = 'underline'; |
@@ -1,2 +0,2 @@ | ||
import { BlockEmbed } from '../blots/block'; | ||
import { BlockEmbed } from '../blots/block.js'; | ||
declare class Video extends BlockEmbed { | ||
@@ -3,0 +3,0 @@ static blotName: string; |
@@ -1,3 +0,3 @@ | ||
import { BlockEmbed } from '../blots/block'; | ||
import Link from './link'; | ||
import { BlockEmbed } from '../blots/block.js'; | ||
import Link from './link.js'; | ||
const ATTRIBUTES = ['height', 'width']; | ||
@@ -4,0 +4,0 @@ class Video extends BlockEmbed { |
import type { ScrollBlot } from 'parchment'; | ||
import Delta from 'quill-delta'; | ||
import type { EmitterSource } from '../core/emitter'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import type { Range } from '../core/selection'; | ||
import type { EmitterSource } from '../core/emitter.js'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
import type { Range } from '../core/selection.js'; | ||
type Selector = string | Node['TEXT_NODE'] | Node['ELEMENT_NODE']; | ||
@@ -8,0 +8,0 @@ type Matcher = (node: Node, delta: Delta, scroll: ScrollBlot) => Delta; |
import { Attributor, BlockBlot, ClassAttributor, EmbedBlot, Scope, StyleAttributor } from 'parchment'; | ||
import Delta from 'quill-delta'; | ||
import { BlockEmbed } from '../blots/block'; | ||
import logger from '../core/logger'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import { AlignAttribute, AlignStyle } from '../formats/align'; | ||
import { BackgroundStyle } from '../formats/background'; | ||
import CodeBlock from '../formats/code'; | ||
import { ColorStyle } from '../formats/color'; | ||
import { DirectionAttribute, DirectionStyle } from '../formats/direction'; | ||
import { FontStyle } from '../formats/font'; | ||
import { SizeStyle } from '../formats/size'; | ||
import { deleteRange } from './keyboard'; | ||
import normalizeExternalHTML from './normalizeExternalHTML'; | ||
import { BlockEmbed } from '../blots/block.js'; | ||
import logger from '../core/logger.js'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
import { AlignAttribute, AlignStyle } from '../formats/align.js'; | ||
import { BackgroundStyle } from '../formats/background.js'; | ||
import CodeBlock from '../formats/code.js'; | ||
import { ColorStyle } from '../formats/color.js'; | ||
import { DirectionAttribute, DirectionStyle } from '../formats/direction.js'; | ||
import { FontStyle } from '../formats/font.js'; | ||
import { SizeStyle } from '../formats/size.js'; | ||
import { deleteRange } from './keyboard.js'; | ||
import normalizeExternalHTML from './normalizeExternalHTML/index.js'; | ||
const debug = logger('quill:clipboard'); | ||
@@ -373,3 +373,3 @@ const CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['ol, ul', matchList], ['pre', matchCodeBlock], ['tr', matchTable], ['b', createMatchAlias('bold')], ['i', createMatchAlias('italic')], ['strike', createMatchAlias('strike')], ['style', matchIgnore]]; | ||
if (!deltaEndsWith(delta, '\n')) { | ||
if (isLine(node, scroll)) { | ||
if (isLine(node, scroll) && (node.childNodes.length > 0 || node instanceof HTMLParagraphElement)) { | ||
return delta.insert('\n'); | ||
@@ -376,0 +376,0 @@ } |
import type Delta from 'quill-delta'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import type Scroll from '../blots/scroll'; | ||
import type { Range } from '../core/selection'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
import type Scroll from '../blots/scroll.js'; | ||
import type { Range } from '../core/selection.js'; | ||
export interface HistoryOptions { | ||
@@ -7,0 +7,0 @@ userOnly: boolean; |
import { Scope } from 'parchment'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
class History extends Module { | ||
@@ -5,0 +5,0 @@ lastRecorded = 0; |
@@ -1,3 +0,3 @@ | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
declare class Input extends Module { | ||
@@ -4,0 +4,0 @@ constructor(quill: Quill, options: Record<string, never>); |
import Delta from 'quill-delta'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import { deleteRange } from './keyboard'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
import { deleteRange } from './keyboard.js'; | ||
const INSERT_TYPES = ['insertText', 'insertReplacementText']; | ||
@@ -6,0 +6,0 @@ class Input extends Module { |
import type { BlockBlot } from 'parchment'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module'; | ||
import type { BlockEmbed } from '../blots/block'; | ||
import type { Range } from '../core/selection'; | ||
import Quill from '../core/quill.js'; | ||
import Module from '../core/module.js'; | ||
import type { BlockEmbed } from '../blots/block.js'; | ||
import type { Range } from '../core/selection.js'; | ||
declare const SHORTKEY: string; | ||
@@ -7,0 +7,0 @@ export interface Context { |
import { cloneDeep, isEqual } from 'lodash-es'; | ||
import Delta, { AttributeMap } from 'quill-delta'; | ||
import { EmbedBlot, Scope, TextBlot } from 'parchment'; | ||
import Quill from '../core/quill'; | ||
import logger from '../core/logger'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill.js'; | ||
import logger from '../core/logger.js'; | ||
import Module from '../core/module.js'; | ||
const debug = logger('quill:keyboard'); | ||
@@ -8,0 +8,0 @@ const SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey'; |
@@ -1,3 +0,3 @@ | ||
import googleDocs from './normalizers/googleDocs'; | ||
import msWord from './normalizers/msWord'; | ||
import googleDocs from './normalizers/googleDocs.js'; | ||
import msWord from './normalizers/msWord.js'; | ||
const NORMALIZERS = [msWord, googleDocs]; | ||
@@ -4,0 +4,0 @@ const normalizeExternalHTML = doc => { |
import Delta from 'quill-delta'; | ||
import type { Blot, ScrollBlot } from 'parchment'; | ||
import Inline from '../blots/inline'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module'; | ||
import CodeBlock, { CodeBlockContainer } from '../formats/code'; | ||
import Inline from '../blots/inline.js'; | ||
import Quill from '../core/quill.js'; | ||
import Module from '../core/module.js'; | ||
import CodeBlock, { CodeBlockContainer } from '../formats/code.js'; | ||
declare class CodeToken extends Inline { | ||
@@ -8,0 +8,0 @@ static formats(node: Element, scroll: ScrollBlot): any; |
import Delta from 'quill-delta'; | ||
import { ClassAttributor, Scope } from 'parchment'; | ||
import Inline from '../blots/inline'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module'; | ||
import { blockDelta } from '../blots/block'; | ||
import BreakBlot from '../blots/break'; | ||
import CursorBlot from '../blots/cursor'; | ||
import TextBlot, { escapeText } from '../blots/text'; | ||
import CodeBlock, { CodeBlockContainer } from '../formats/code'; | ||
import { traverse } from './clipboard'; | ||
import Inline from '../blots/inline.js'; | ||
import Quill from '../core/quill.js'; | ||
import Module from '../core/module.js'; | ||
import { blockDelta } from '../blots/block.js'; | ||
import BreakBlot from '../blots/break.js'; | ||
import CursorBlot from '../blots/cursor.js'; | ||
import TextBlot, { escapeText } from '../blots/text.js'; | ||
import CodeBlock, { CodeBlockContainer } from '../formats/code.js'; | ||
import { traverse } from './clipboard.js'; | ||
const TokenAttributor = new ClassAttributor('code-token', 'hljs', { | ||
@@ -13,0 +13,0 @@ scope: Scope.INLINE |
@@ -1,3 +0,3 @@ | ||
import Module from '../core/module'; | ||
import { TableCell, TableRow } from '../formats/table'; | ||
import Module from '../core/module.js'; | ||
import { TableCell, TableRow } from '../formats/table.js'; | ||
declare class Table extends Module { | ||
@@ -10,3 +10,3 @@ static register(): void; | ||
deleteTable(): void; | ||
getTable(range?: import("../core/selection").Range | null): [null, null, null, -1] | [Table, TableRow, TableCell, number]; | ||
getTable(range?: import("../core/selection.js").Range | null): [null, null, null, -1] | [Table, TableRow, TableCell, number]; | ||
insertColumn(offset: number): void; | ||
@@ -13,0 +13,0 @@ insertColumnLeft(): void; |
import Delta from 'quill-delta'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module'; | ||
import { TableCell, TableRow, TableBody, TableContainer, tableId } from '../formats/table'; | ||
import Quill from '../core/quill.js'; | ||
import Module from '../core/module.js'; | ||
import { TableCell, TableRow, TableBody, TableContainer, tableId } from '../formats/table.js'; | ||
class Table extends Module { | ||
@@ -6,0 +6,0 @@ static register() { |
import Delta from 'quill-delta'; | ||
import type { Op } from 'quill-delta'; | ||
import Module from '../core/module'; | ||
import Module from '../core/module.js'; | ||
export type CellData = { | ||
@@ -5,0 +5,0 @@ content?: Delta['ops']; |
import Delta, { OpIterator } from 'quill-delta'; | ||
import Module from '../core/module'; | ||
import Module from '../core/module.js'; | ||
const parseCellIdentity = identity => { | ||
@@ -4,0 +4,0 @@ const parts = identity.split(':'); |
@@ -1,4 +0,4 @@ | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module'; | ||
import type { Range } from '../core/selection'; | ||
import Quill from '../core/quill.js'; | ||
import Module from '../core/module.js'; | ||
import type { Range } from '../core/selection.js'; | ||
type Handler = (value: any) => void; | ||
@@ -5,0 +5,0 @@ export type ToolbarConfig = Array<string[] | Array<string | Record<string, unknown>>>; |
import Delta from 'quill-delta'; | ||
import { EmbedBlot, Scope } from 'parchment'; | ||
import Quill from '../core/quill'; | ||
import logger from '../core/logger'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill.js'; | ||
import logger from '../core/logger.js'; | ||
import Module from '../core/module.js'; | ||
const debug = logger('quill:toolbar'); | ||
@@ -85,5 +85,3 @@ class Toolbar extends Module { | ||
const [range] = this.quill.selection.getRange(); | ||
// @ts-expect-error Fix me later | ||
if (this.handlers[format] != null) { | ||
// @ts-expect-error Fix me later | ||
this.handlers[format].call(this, value); | ||
@@ -99,9 +97,6 @@ } else if ( | ||
// @ts-expect-error Fix me later | ||
.delete(range.length) | ||
// @ts-expect-error Fix me later | ||
.insert({ | ||
.delete(range.length).insert({ | ||
[format]: value | ||
}), Quill.sources.USER); | ||
} else { | ||
// @ts-expect-error Fix me later | ||
this.quill.format(format, value, Quill.sources.USER); | ||
@@ -251,3 +246,2 @@ } | ||
} | ||
this.quill.format('link', value, Quill.sources.USER); | ||
@@ -254,0 +248,0 @@ }, |
@@ -1,3 +0,3 @@ | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
export declare const TTL_FOR_VALID_SELECTION_CHANGE = 100; | ||
@@ -4,0 +4,0 @@ declare class UINode extends Module { |
import { ParentBlot } from 'parchment'; | ||
import Module from '../core/module'; | ||
import Quill from '../core/quill'; | ||
import Module from '../core/module.js'; | ||
import Quill from '../core/quill.js'; | ||
const isMac = /Mac/i.test(navigator.platform); | ||
@@ -5,0 +5,0 @@ |
@@ -1,4 +0,4 @@ | ||
import type Quill from '../core/quill'; | ||
import Module from '../core/module'; | ||
import type { Range } from '../core/selection'; | ||
import type Quill from '../core/quill.js'; | ||
import Module from '../core/module.js'; | ||
import type { Range } from '../core/selection.js'; | ||
interface UploaderOptions { | ||
@@ -5,0 +5,0 @@ mimetypes: string[]; |
import Delta from 'quill-delta'; | ||
import Emitter from '../core/emitter'; | ||
import Module from '../core/module'; | ||
import Emitter from '../core/emitter.js'; | ||
import Module from '../core/module.js'; | ||
class Uploader extends Module { | ||
@@ -5,0 +5,0 @@ constructor(quill, options) { |
{ | ||
"name": "quill", | ||
"version": "0.0.0-experimental-d9970004a-20240215", | ||
"version": "0.0.0-experimental-dd0792975-20240318", | ||
"description": "Your powerful, rich text editor", | ||
@@ -8,12 +8,13 @@ "author": "Jason Chen <jhchen7@gmail.com>", | ||
"main": "quill.js", | ||
"type": "module", | ||
"dependencies": { | ||
"eventemitter3": "^5.0.1", | ||
"lodash-es": "^4.17.21", | ||
"parchment": "^3.0.0-alpha.2", | ||
"parchment": "^0.0.0-experimental-cb3cbcb83-20240318", | ||
"quill-delta": "^5.1.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "^7.23.4", | ||
"@babel/core": "^7.23.3", | ||
"@babel/preset-env": "^7.23.3", | ||
"@babel/cli": "^7.23.9", | ||
"@babel/core": "^7.24.0", | ||
"@babel/preset-env": "^7.24.0", | ||
"@babel/preset-typescript": "^7.23.3", | ||
@@ -25,10 +26,10 @@ "@playwright/test": "1.38.1", | ||
"@types/webpack": "^5.28.5", | ||
"@typescript-eslint/eslint-plugin": "^6.12.0", | ||
"@typescript-eslint/parser": "^6.12.0", | ||
"@typescript-eslint/eslint-plugin": "^7.2.0", | ||
"@typescript-eslint/parser": "^7.2.0", | ||
"@vitest/browser": "^1.1.3", | ||
"babel-loader": "^9.1.3", | ||
"babel-plugin-transform-define": "^2.1.4", | ||
"css-loader": "^6.8.1", | ||
"eslint": "^8.54.0", | ||
"eslint-config-prettier": "^9.0.0", | ||
"css-loader": "^6.10.0", | ||
"eslint": "^8.57.0", | ||
"eslint-config-prettier": "^9.1.0", | ||
"eslint-import-resolver-typescript": "^3.6.1", | ||
@@ -38,3 +39,4 @@ "eslint-import-resolver-webpack": "^0.13.8", | ||
"eslint-plugin-jsx-a11y": "^6.8.0", | ||
"eslint-plugin-prettier": "^5.0.1", | ||
"eslint-plugin-prettier": "^5.1.3", | ||
"eslint-plugin-require-extensions": "^0.1.3", | ||
"highlight.js": "^9.18.1", | ||
@@ -46,2 +48,3 @@ "html-loader": "^4.2.0", | ||
"prettier": "^3.0.3", | ||
"source-map-loader": "^5.0.0", | ||
"style-loader": "^3.3.3", | ||
@@ -54,4 +57,4 @@ "stylus": "^0.62.0", | ||
"ts-loader": "^9.5.1", | ||
"ts-node": "^10.9.1", | ||
"typescript": "5.2.2", | ||
"ts-node": "^10.9.2", | ||
"typescript": "^5.4.2", | ||
"vitest": "^1.1.3", | ||
@@ -58,0 +61,0 @@ "webpack": "^5.89.0", |
@@ -1,2 +0,2 @@ | ||
import Quill from './core'; | ||
import Quill from './core.js'; | ||
export default Quill; |
62
quill.js
@@ -1,32 +0,32 @@ | ||
import Quill from './core'; | ||
import { AlignClass, AlignStyle } from './formats/align'; | ||
import { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction'; | ||
import Indent from './formats/indent'; | ||
import Blockquote from './formats/blockquote'; | ||
import Header from './formats/header'; | ||
import List from './formats/list'; | ||
import { BackgroundClass, BackgroundStyle } from './formats/background'; | ||
import { ColorClass, ColorStyle } from './formats/color'; | ||
import { FontClass, FontStyle } from './formats/font'; | ||
import { SizeClass, SizeStyle } from './formats/size'; | ||
import Bold from './formats/bold'; | ||
import Italic from './formats/italic'; | ||
import Link from './formats/link'; | ||
import Script from './formats/script'; | ||
import Strike from './formats/strike'; | ||
import Underline from './formats/underline'; | ||
import Formula from './formats/formula'; | ||
import Image from './formats/image'; | ||
import Video from './formats/video'; | ||
import CodeBlock, { Code as InlineCode } from './formats/code'; | ||
import Syntax from './modules/syntax'; | ||
import Table from './modules/table'; | ||
import Toolbar from './modules/toolbar'; | ||
import Icons from './ui/icons'; | ||
import Picker from './ui/picker'; | ||
import ColorPicker from './ui/color-picker'; | ||
import IconPicker from './ui/icon-picker'; | ||
import Tooltip from './ui/tooltip'; | ||
import BubbleTheme from './themes/bubble'; | ||
import SnowTheme from './themes/snow'; | ||
import Quill from './core.js'; | ||
import { AlignClass, AlignStyle } from './formats/align.js'; | ||
import { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction.js'; | ||
import Indent from './formats/indent.js'; | ||
import Blockquote from './formats/blockquote.js'; | ||
import Header from './formats/header.js'; | ||
import List from './formats/list.js'; | ||
import { BackgroundClass, BackgroundStyle } from './formats/background.js'; | ||
import { ColorClass, ColorStyle } from './formats/color.js'; | ||
import { FontClass, FontStyle } from './formats/font.js'; | ||
import { SizeClass, SizeStyle } from './formats/size.js'; | ||
import Bold from './formats/bold.js'; | ||
import Italic from './formats/italic.js'; | ||
import Link from './formats/link.js'; | ||
import Script from './formats/script.js'; | ||
import Strike from './formats/strike.js'; | ||
import Underline from './formats/underline.js'; | ||
import Formula from './formats/formula.js'; | ||
import Image from './formats/image.js'; | ||
import Video from './formats/video.js'; | ||
import CodeBlock, { Code as InlineCode } from './formats/code.js'; | ||
import Syntax from './modules/syntax.js'; | ||
import Table from './modules/table.js'; | ||
import Toolbar from './modules/toolbar.js'; | ||
import Icons from './ui/icons.js'; | ||
import Picker from './ui/picker.js'; | ||
import ColorPicker from './ui/color-picker.js'; | ||
import IconPicker from './ui/icon-picker.js'; | ||
import Tooltip from './ui/tooltip.js'; | ||
import BubbleTheme from './themes/bubble.js'; | ||
import SnowTheme from './themes/snow.js'; | ||
Quill.register({ | ||
@@ -33,0 +33,0 @@ 'attributors/attribute/direction': DirectionAttribute, |
@@ -1,12 +0,12 @@ | ||
import type Quill from '../core/quill'; | ||
import Theme from '../core/theme'; | ||
import type { ThemeOptions } from '../core/theme'; | ||
import Picker from '../ui/picker'; | ||
import Tooltip from '../ui/tooltip'; | ||
import type { Range } from '../core/selection'; | ||
import type Clipboard from '../modules/clipboard'; | ||
import type History from '../modules/history'; | ||
import type Keyboard from '../modules/keyboard'; | ||
import type Uploader from '../modules/uploader'; | ||
import type Selection from '../core/selection'; | ||
import type Quill from '../core/quill.js'; | ||
import Theme from '../core/theme.js'; | ||
import type { ThemeOptions } from '../core/theme.js'; | ||
import Picker from '../ui/picker.js'; | ||
import Tooltip from '../ui/tooltip.js'; | ||
import type { Range } from '../core/selection.js'; | ||
import type Clipboard from '../modules/clipboard.js'; | ||
import type History from '../modules/history.js'; | ||
import type Keyboard from '../modules/keyboard.js'; | ||
import type Uploader from '../modules/uploader.js'; | ||
import type Selection from '../core/selection.js'; | ||
declare class BaseTheme extends Theme { | ||
@@ -13,0 +13,0 @@ pickers: Picker[]; |
import { merge } from 'lodash-es'; | ||
import Emitter from '../core/emitter'; | ||
import Theme from '../core/theme'; | ||
import ColorPicker from '../ui/color-picker'; | ||
import IconPicker from '../ui/icon-picker'; | ||
import Picker from '../ui/picker'; | ||
import Tooltip from '../ui/tooltip'; | ||
import Emitter from '../core/emitter.js'; | ||
import Theme from '../core/theme.js'; | ||
import ColorPicker from '../ui/color-picker.js'; | ||
import IconPicker from '../ui/icon-picker.js'; | ||
import Picker from '../ui/picker.js'; | ||
import Tooltip from '../ui/tooltip.js'; | ||
const ALIGNS = [false, 'center', 'right', 'justify']; | ||
@@ -9,0 +9,0 @@ const COLORS = ['#000000', '#e60000', '#ff9900', '#ffff00', '#008a00', '#0066cc', '#9933ff', '#ffffff', '#facccc', '#ffebcc', '#ffffcc', '#cce8cc', '#cce0f5', '#ebd6ff', '#bbbbbb', '#f06666', '#ffc266', '#ffff66', '#66b966', '#66a3e0', '#c285ff', '#888888', '#a10000', '#b26b00', '#b2b200', '#006100', '#0047b2', '#6b24b2', '#444444', '#5c0000', '#663d00', '#666600', '#003700', '#002966', '#3d1466']; |
@@ -1,6 +0,6 @@ | ||
import BaseTheme, { BaseTooltip } from './base'; | ||
import type { Bounds } from '../core/selection'; | ||
import type Quill from '../core'; | ||
import type { ThemeOptions } from '../core/theme'; | ||
import type Toolbar from '../modules/toolbar'; | ||
import BaseTheme, { BaseTooltip } from './base.js'; | ||
import type { Bounds } from '../core/selection.js'; | ||
import type Quill from '../core.js'; | ||
import type { ThemeOptions } from '../core/theme.js'; | ||
import type Toolbar from '../modules/toolbar.js'; | ||
declare class BubbleTooltip extends BaseTooltip { | ||
@@ -7,0 +7,0 @@ static TEMPLATE: string; |
import { merge } from 'lodash-es'; | ||
import Emitter from '../core/emitter'; | ||
import BaseTheme, { BaseTooltip } from './base'; | ||
import { Range } from '../core/selection'; | ||
import icons from '../ui/icons'; | ||
import Emitter from '../core/emitter.js'; | ||
import BaseTheme, { BaseTooltip } from './base.js'; | ||
import { Range } from '../core/selection.js'; | ||
import icons from '../ui/icons.js'; | ||
const TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ | ||
@@ -7,0 +7,0 @@ header: 1 |
@@ -1,5 +0,5 @@ | ||
import BaseTheme from './base'; | ||
import type Quill from '../core'; | ||
import type Toolbar from '../modules/toolbar'; | ||
import type { ThemeOptions } from '../core/theme'; | ||
import BaseTheme from './base.js'; | ||
import type Quill from '../core.js'; | ||
import type Toolbar from '../modules/toolbar.js'; | ||
import type { ThemeOptions } from '../core/theme.js'; | ||
declare class SnowTheme extends BaseTheme { | ||
@@ -6,0 +6,0 @@ constructor(quill: Quill, options: ThemeOptions); |
import { merge } from 'lodash-es'; | ||
import Emitter from '../core/emitter'; | ||
import BaseTheme, { BaseTooltip } from './base'; | ||
import LinkBlot from '../formats/link'; | ||
import { Range } from '../core/selection'; | ||
import icons from '../ui/icons'; | ||
import Emitter from '../core/emitter.js'; | ||
import BaseTheme, { BaseTooltip } from './base.js'; | ||
import LinkBlot from '../formats/link.js'; | ||
import { Range } from '../core/selection.js'; | ||
import icons from '../ui/icons.js'; | ||
const TOOLBAR_CONFIG = [[{ | ||
@@ -8,0 +8,0 @@ header: ['1', '2', '3', false] |
@@ -1,2 +0,2 @@ | ||
import Picker from './picker'; | ||
import Picker from './picker.js'; | ||
declare class ColorPicker extends Picker { | ||
@@ -3,0 +3,0 @@ constructor(select: HTMLSelectElement, label: string); |
@@ -1,2 +0,2 @@ | ||
import Picker from './picker'; | ||
import Picker from './picker.js'; | ||
class ColorPicker extends Picker { | ||
@@ -3,0 +3,0 @@ constructor(select, label) { |
@@ -1,2 +0,2 @@ | ||
import Picker from './picker'; | ||
import Picker from './picker.js'; | ||
declare class IconPicker extends Picker { | ||
@@ -3,0 +3,0 @@ defaultItem: HTMLElement | null; |
@@ -1,2 +0,2 @@ | ||
import Picker from './picker'; | ||
import Picker from './picker.js'; | ||
class IconPicker extends Picker { | ||
@@ -3,0 +3,0 @@ constructor(select, icons) { |
@@ -1,3 +0,3 @@ | ||
import type Quill from '../core'; | ||
import type { Bounds } from '../core/selection'; | ||
import type Quill from '../core.js'; | ||
import type { Bounds } from '../core/selection.js'; | ||
declare class Tooltip { | ||
@@ -4,0 +4,0 @@ quill: Quill; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3016109
296
9605
Yes
44
+ Addedparchment@0.0.0-experimental-cb3cbcb83-20240318(transitive)
- Removedparchment@3.0.0(transitive)