From 9fafc6b00fa8dfb8f779c72597d579c6ce6413ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 23 Aug 2018 11:13:59 +0200 Subject: [PATCH] add tiptap-models --- build/examples/webpack.config.js | 1 + build/packages/config.js | 149 +++++++++++------- examples/Components/Routes/Embeds/Iframe.js | 2 +- packages/tiptap-commands/package.json | 2 +- packages/tiptap-models/package.json | 22 +++ packages/tiptap-models/src/index.js | 2 + .../src/models}/mark.js | 0 .../src/models}/node.js | 0 packages/tiptap-utils/package.json | 2 +- packages/tiptap-utils/src/index.js | 1 + .../src/utils/getMarkAttrs.js | 0 packages/tiptap/package.json | 3 +- packages/tiptap/src/marks/Bold.js | 2 +- packages/tiptap/src/marks/Code.js | 2 +- packages/tiptap/src/marks/Italic.js | 2 +- packages/tiptap/src/marks/Link.js | 2 +- packages/tiptap/src/nodes/Blockquote.js | 2 +- packages/tiptap/src/nodes/BulletList.js | 2 +- packages/tiptap/src/nodes/CodeBlock.js | 2 +- packages/tiptap/src/nodes/Doc.js | 2 +- packages/tiptap/src/nodes/HardBreak.js | 2 +- packages/tiptap/src/nodes/Heading.js | 2 +- packages/tiptap/src/nodes/ListItem.js | 2 +- packages/tiptap/src/nodes/OrderedList.js | 2 +- packages/tiptap/src/nodes/Paragraph.js | 2 +- packages/tiptap/src/nodes/Text.js | 2 +- packages/tiptap/src/nodes/TodoItem.js | 2 +- packages/tiptap/src/nodes/TodoList.js | 2 +- packages/tiptap/src/utils/buildMenuActions.js | 2 +- packages/tiptap/src/utils/index.js | 5 - packages/tiptap/src/utils/markIsActive.js | 14 -- packages/tiptap/src/utils/nodeIsActive.js | 12 -- 32 files changed, 136 insertions(+), 113 deletions(-) create mode 100644 packages/tiptap-models/package.json create mode 100644 packages/tiptap-models/src/index.js rename packages/{tiptap/src/utils => tiptap-models/src/models}/mark.js (100%) rename packages/{tiptap/src/utils => tiptap-models/src/models}/node.js (100%) rename packages/{tiptap => tiptap-utils}/src/utils/getMarkAttrs.js (100%) delete mode 100644 packages/tiptap/src/utils/markIsActive.js delete mode 100644 packages/tiptap/src/utils/nodeIsActive.js diff --git a/build/examples/webpack.config.js b/build/examples/webpack.config.js index b06c97d0..bc5d575e 100644 --- a/build/examples/webpack.config.js +++ b/build/examples/webpack.config.js @@ -41,6 +41,7 @@ export default { tiptap: path.resolve(rootPath, '../packages/tiptap/src'), 'tiptap-commands': path.resolve(rootPath, '../packages/tiptap-commands/src'), 'tiptap-utils': path.resolve(rootPath, '../packages/tiptap-utils/src'), + 'tiptap-models': path.resolve(rootPath, '../packages/tiptap-models/src'), }, modules: [ srcPath, diff --git a/build/packages/config.js b/build/packages/config.js index ed07a2c1..636463ac 100644 --- a/build/packages/config.js +++ b/build/packages/config.js @@ -57,83 +57,110 @@ function genConfig(opts) { } export default [ - { - input: resolve('packages/tiptap/src/index.js'), - file: resolve('packages/tiptap/dist/tiptap.js'), - format: 'umd', - env: 'development', - external: ['vue'], - }, - { - input: resolve('packages/tiptap/src/index.js'), - file: resolve('packages/tiptap/dist/tiptap.min.js'), - format: 'umd', - env: 'production', - external: ['vue'], - }, - { - input: resolve('packages/tiptap/src/index.js'), - file: resolve('packages/tiptap/dist/tiptap.common.js'), - format: 'cjs', - external: ['vue'], - }, - { - input: resolve('packages/tiptap/src/index.js'), - file: resolve('packages/tiptap/dist/tiptap.esm.js'), - format: 'es', - external: ['vue'], - }, + // { + // input: resolve('packages/tiptap/src/index.js'), + // file: resolve('packages/tiptap/dist/tiptap.js'), + // format: 'umd', + // env: 'development', + // external: ['vue'], + // }, + // { + // input: resolve('packages/tiptap/src/index.js'), + // file: resolve('packages/tiptap/dist/tiptap.min.js'), + // format: 'umd', + // env: 'production', + // external: ['vue'], + // }, + // { + // input: resolve('packages/tiptap/src/index.js'), + // file: resolve('packages/tiptap/dist/tiptap.common.js'), + // format: 'cjs', + // external: ['vue'], + // }, + // { + // input: resolve('packages/tiptap/src/index.js'), + // file: resolve('packages/tiptap/dist/tiptap.esm.js'), + // format: 'es', + // external: ['vue'], + // }, + + // { + // input: resolve('packages/tiptap-commands/src/index.js'), + // file: resolve('packages/tiptap-commands/dist/commands.js'), + // format: 'umd', + // env: 'development', + // external: [], + // }, + // { + // input: resolve('packages/tiptap-commands/src/index.js'), + // file: resolve('packages/tiptap-commands/dist/commands.min.js'), + // format: 'umd', + // env: 'production', + // external: [], + // }, + // { + // input: resolve('packages/tiptap-commands/src/index.js'), + // file: resolve('packages/tiptap-commands/dist/commands.common.js'), + // format: 'cjs', + // external: [], + // }, + // { + // input: resolve('packages/tiptap-commands/src/index.js'), + // file: resolve('packages/tiptap-commands/dist/commands.esm.js'), + // format: 'es', + // external: [], + // }, + + // { + // input: resolve('packages/tiptap-utils/src/index.js'), + // file: resolve('packages/tiptap-utils/dist/utils.js'), + // format: 'umd', + // env: 'development', + // external: [], + // }, + // { + // input: resolve('packages/tiptap-utils/src/index.js'), + // file: resolve('packages/tiptap-utils/dist/utils.min.js'), + // format: 'umd', + // env: 'production', + // external: [], + // }, + // { + // input: resolve('packages/tiptap-utils/src/index.js'), + // file: resolve('packages/tiptap-utils/dist/utils.common.js'), + // format: 'cjs', + // external: [], + // }, + // { + // input: resolve('packages/tiptap-utils/src/index.js'), + // file: resolve('packages/tiptap-utils/dist/utils.esm.js'), + // format: 'es', + // external: [], + // }, { - input: resolve('packages/tiptap-commands/src/index.js'), - file: resolve('packages/tiptap-commands/dist/commands.js'), + input: resolve('packages/tiptap-models/src/index.js'), + file: resolve('packages/tiptap-models/dist/models.js'), format: 'umd', env: 'development', external: [], }, { - input: resolve('packages/tiptap-commands/src/index.js'), - file: resolve('packages/tiptap-commands/dist/commands.min.js'), + input: resolve('packages/tiptap-models/src/index.js'), + file: resolve('packages/tiptap-models/dist/models.min.js'), format: 'umd', env: 'production', external: [], }, { - input: resolve('packages/tiptap-commands/src/index.js'), - file: resolve('packages/tiptap-commands/dist/commands.common.js'), + input: resolve('packages/tiptap-models/src/index.js'), + file: resolve('packages/tiptap-models/dist/models.common.js'), format: 'cjs', external: [], }, { - input: resolve('packages/tiptap-commands/src/index.js'), - file: resolve('packages/tiptap-commands/dist/commands.esm.js'), - format: 'es', - external: [], - }, - - { - input: resolve('packages/tiptap-utils/src/index.js'), - file: resolve('packages/tiptap-utils/dist/utils.js'), - format: 'umd', - env: 'development', - external: [], - }, - { - input: resolve('packages/tiptap-utils/src/index.js'), - file: resolve('packages/tiptap-utils/dist/utils.min.js'), - format: 'umd', - env: 'production', - external: [], - }, - { - input: resolve('packages/tiptap-utils/src/index.js'), - file: resolve('packages/tiptap-utils/dist/utils.common.js'), - format: 'cjs', - external: [], - }, - { - input: resolve('packages/tiptap-utils/src/index.js'), - file: resolve('packages/tiptap-utils/dist/utils.esm.js'), + input: resolve('packages/tiptap-models/src/index.js'), + file: resolve('packages/tiptap-models/dist/models.esm.js'), format: 'es', external: [], }, diff --git a/examples/Components/Routes/Embeds/Iframe.js b/examples/Components/Routes/Embeds/Iframe.js index 3a819efa..078d0e52 100644 --- a/examples/Components/Routes/Embeds/Iframe.js +++ b/examples/Components/Routes/Embeds/Iframe.js @@ -1,4 +1,4 @@ -import { Node } from 'tiptap/utils' +import { Node } from 'tiptap-models' export default class IframeNode extends Node { diff --git a/packages/tiptap-commands/package.json b/packages/tiptap-commands/package.json index ac04ad20..74e114e4 100644 --- a/packages/tiptap-commands/package.json +++ b/packages/tiptap-commands/package.json @@ -23,6 +23,6 @@ "prosemirror-commands": "^1.0.7", "prosemirror-inputrules": "^1.0.1", "prosemirror-schema-list": "^1.0.1", - "tiptap-utils": "^0.1.1" + "tiptap-utils": "^0.2.0" } } diff --git a/packages/tiptap-models/package.json b/packages/tiptap-models/package.json new file mode 100644 index 00000000..f42395d5 --- /dev/null +++ b/packages/tiptap-models/package.json @@ -0,0 +1,22 @@ +{ + "name": "tiptap-models", + "version": "0.1.1", + "description": "Models for tiptap", + "homepage": "https://tiptap.scrumpy.io", + "license": "MIT", + "main": "dist/models.common.js", + "module": "dist/models.esm.js", + "unpkg": "dist/models.js", + "jsdelivr": "dist/models.js", + "files": [ + "src", + "dist" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/heyscrumpy/tiptap.git" + }, + "bugs": { + "url": "https://github.com/heyscrumpy/tiptap/issues" + } +} diff --git a/packages/tiptap-models/src/index.js b/packages/tiptap-models/src/index.js new file mode 100644 index 00000000..145c5e41 --- /dev/null +++ b/packages/tiptap-models/src/index.js @@ -0,0 +1,2 @@ +export { default as Mark } from './models/mark' +export { default as Node } from './models/node' diff --git a/packages/tiptap/src/utils/mark.js b/packages/tiptap-models/src/models/mark.js similarity index 100% rename from packages/tiptap/src/utils/mark.js rename to packages/tiptap-models/src/models/mark.js diff --git a/packages/tiptap/src/utils/node.js b/packages/tiptap-models/src/models/node.js similarity index 100% rename from packages/tiptap/src/utils/node.js rename to packages/tiptap-models/src/models/node.js diff --git a/packages/tiptap-utils/package.json b/packages/tiptap-utils/package.json index 8be36c0e..c58be1c5 100644 --- a/packages/tiptap-utils/package.json +++ b/packages/tiptap-utils/package.json @@ -1,6 +1,6 @@ { "name": "tiptap-utils", - "version": "0.1.1", + "version": "0.2.0", "description": "Utility functions for tiptap", "homepage": "https://tiptap.scrumpy.io", "license": "MIT", diff --git a/packages/tiptap-utils/src/index.js b/packages/tiptap-utils/src/index.js index c7857639..33cb88bd 100644 --- a/packages/tiptap-utils/src/index.js +++ b/packages/tiptap-utils/src/index.js @@ -1,2 +1,3 @@ +export { default as getMarkAttrs } from './utils/getMarkAttrs' export { default as markIsActive } from './utils/markIsActive' export { default as nodeIsActive } from './utils/nodeIsActive' diff --git a/packages/tiptap/src/utils/getMarkAttrs.js b/packages/tiptap-utils/src/utils/getMarkAttrs.js similarity index 100% rename from packages/tiptap/src/utils/getMarkAttrs.js rename to packages/tiptap-utils/src/utils/getMarkAttrs.js diff --git a/packages/tiptap/package.json b/packages/tiptap/package.json index fd8d3e2f..5ed853a8 100644 --- a/packages/tiptap/package.json +++ b/packages/tiptap/package.json @@ -91,6 +91,7 @@ "prosemirror-utils": "^0.6.5", "prosemirror-view": "^1.4.3", "tiptap-commands": "^0.1.0", - "tiptap-utils": "^0.1.1" + "tiptap-models": "^0.1.0", + "tiptap-utils": "^0.2.0" } } diff --git a/packages/tiptap/src/marks/Bold.js b/packages/tiptap/src/marks/Bold.js index e5f894ce..e03dc1c5 100644 --- a/packages/tiptap/src/marks/Bold.js +++ b/packages/tiptap/src/marks/Bold.js @@ -1,4 +1,4 @@ -import { Mark } from '../utils' +import { Mark } from 'tiptap-models' import { toggleMark } from 'tiptap-commands' export default class BoldMark extends Mark { diff --git a/packages/tiptap/src/marks/Code.js b/packages/tiptap/src/marks/Code.js index b0d37851..cba59f28 100644 --- a/packages/tiptap/src/marks/Code.js +++ b/packages/tiptap/src/marks/Code.js @@ -1,4 +1,4 @@ -import { Mark } from '../utils' +import { Mark } from 'tiptap-models' import { toggleMark } from 'tiptap-commands' export default class CodeMark extends Mark { diff --git a/packages/tiptap/src/marks/Italic.js b/packages/tiptap/src/marks/Italic.js index 4f30560e..5511a8a8 100644 --- a/packages/tiptap/src/marks/Italic.js +++ b/packages/tiptap/src/marks/Italic.js @@ -1,4 +1,4 @@ -import { Mark } from '../utils' +import { Mark } from 'tiptap-models' import { toggleMark } from 'tiptap-commands' export default class ItalicMark extends Mark { diff --git a/packages/tiptap/src/marks/Link.js b/packages/tiptap/src/marks/Link.js index ccebcab0..d67abc42 100644 --- a/packages/tiptap/src/marks/Link.js +++ b/packages/tiptap/src/marks/Link.js @@ -1,4 +1,4 @@ -import { Mark } from '../utils' +import { Mark } from 'tiptap-models' import { updateMark, removeMark } from 'tiptap-commands' export default class LinkMark extends Mark { diff --git a/packages/tiptap/src/nodes/Blockquote.js b/packages/tiptap/src/nodes/Blockquote.js index b6f17242..406b8bf9 100644 --- a/packages/tiptap/src/nodes/Blockquote.js +++ b/packages/tiptap/src/nodes/Blockquote.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { wrappingInputRule, setBlockType, wrapIn } from 'tiptap-commands' export default class BlockquoteNode extends Node { diff --git a/packages/tiptap/src/nodes/BulletList.js b/packages/tiptap/src/nodes/BulletList.js index 89168f45..8c8532bb 100644 --- a/packages/tiptap/src/nodes/BulletList.js +++ b/packages/tiptap/src/nodes/BulletList.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { wrappingInputRule, wrapInList, toggleList } from 'tiptap-commands' export default class BulletNode extends Node { diff --git a/packages/tiptap/src/nodes/CodeBlock.js b/packages/tiptap/src/nodes/CodeBlock.js index 28194fbe..8eb5d343 100644 --- a/packages/tiptap/src/nodes/CodeBlock.js +++ b/packages/tiptap/src/nodes/CodeBlock.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { toggleBlockType, setBlockType, textblockTypeInputRule } from 'tiptap-commands' export default class CodeBlockNode extends Node { diff --git a/packages/tiptap/src/nodes/Doc.js b/packages/tiptap/src/nodes/Doc.js index 25304904..25400acd 100644 --- a/packages/tiptap/src/nodes/Doc.js +++ b/packages/tiptap/src/nodes/Doc.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' export default class DocNode extends Node { diff --git a/packages/tiptap/src/nodes/HardBreak.js b/packages/tiptap/src/nodes/HardBreak.js index 9701a054..688ee60e 100644 --- a/packages/tiptap/src/nodes/HardBreak.js +++ b/packages/tiptap/src/nodes/HardBreak.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { chainCommands, exitCode } from 'tiptap-commands' export default class HardBreakNode extends Node { diff --git a/packages/tiptap/src/nodes/Heading.js b/packages/tiptap/src/nodes/Heading.js index db9b5d76..24910ea8 100644 --- a/packages/tiptap/src/nodes/Heading.js +++ b/packages/tiptap/src/nodes/Heading.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { setBlockType, textblockTypeInputRule, toggleBlockType } from 'tiptap-commands' export default class HeadingNode extends Node { diff --git a/packages/tiptap/src/nodes/ListItem.js b/packages/tiptap/src/nodes/ListItem.js index be27cf46..ead56c1a 100644 --- a/packages/tiptap/src/nodes/ListItem.js +++ b/packages/tiptap/src/nodes/ListItem.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { splitListItem, liftListItem, sinkListItem } from 'tiptap-commands' export default class OrderedListNode extends Node { diff --git a/packages/tiptap/src/nodes/OrderedList.js b/packages/tiptap/src/nodes/OrderedList.js index 4349e516..9eacb50b 100644 --- a/packages/tiptap/src/nodes/OrderedList.js +++ b/packages/tiptap/src/nodes/OrderedList.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { wrappingInputRule, wrapInList, toggleList } from 'tiptap-commands' export default class OrderedListNode extends Node { diff --git a/packages/tiptap/src/nodes/Paragraph.js b/packages/tiptap/src/nodes/Paragraph.js index 2607a4db..a5ba6789 100644 --- a/packages/tiptap/src/nodes/Paragraph.js +++ b/packages/tiptap/src/nodes/Paragraph.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { setBlockType } from 'tiptap-commands' export default class ParagraphNode extends Node { diff --git a/packages/tiptap/src/nodes/Text.js b/packages/tiptap/src/nodes/Text.js index 88b55141..7277d140 100644 --- a/packages/tiptap/src/nodes/Text.js +++ b/packages/tiptap/src/nodes/Text.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' export default class TextNode extends Node { diff --git a/packages/tiptap/src/nodes/TodoItem.js b/packages/tiptap/src/nodes/TodoItem.js index 3f69a19b..af621ac1 100644 --- a/packages/tiptap/src/nodes/TodoItem.js +++ b/packages/tiptap/src/nodes/TodoItem.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { splitListItem, liftListItem } from 'tiptap-commands' export default class TodoItemNode extends Node { diff --git a/packages/tiptap/src/nodes/TodoList.js b/packages/tiptap/src/nodes/TodoList.js index b3cc6504..fc8edbb5 100644 --- a/packages/tiptap/src/nodes/TodoList.js +++ b/packages/tiptap/src/nodes/TodoList.js @@ -1,4 +1,4 @@ -import { Node } from '../utils' +import { Node } from 'tiptap-models' import { wrapInList, wrappingInputRule } from 'tiptap-commands' export default class BulletNode extends Node { diff --git a/packages/tiptap/src/utils/buildMenuActions.js b/packages/tiptap/src/utils/buildMenuActions.js index 1ea13ba8..6153aa9b 100644 --- a/packages/tiptap/src/utils/buildMenuActions.js +++ b/packages/tiptap/src/utils/buildMenuActions.js @@ -1,4 +1,4 @@ -import { markIsActive, nodeIsActive, getMarkAttrs } from '.' +import { markIsActive, nodeIsActive, getMarkAttrs } from 'tiptap-utils' export default function ({ schema, state, commands }) { diff --git a/packages/tiptap/src/utils/index.js b/packages/tiptap/src/utils/index.js index 90c7732d..576cbc09 100644 --- a/packages/tiptap/src/utils/index.js +++ b/packages/tiptap/src/utils/index.js @@ -3,10 +3,5 @@ export { default as builtInKeymap } from './builtInKeymap' export { default as ComponentView } from './ComponentView' export { default as initNodeViews } from './initNodeViews' export { default as isMac } from './isMac' -export { default as getMarkAttrs } from './getMarkAttrs' -export { default as markIsActive } from './markIsActive' -export { default as nodeIsActive } from './nodeIsActive' export { default as menuBubble } from './menuBubble' -export { default as Node } from './node' -export { default as Mark } from './mark' export { default as PluginManager } from './PluginManager' diff --git a/packages/tiptap/src/utils/markIsActive.js b/packages/tiptap/src/utils/markIsActive.js deleted file mode 100644 index 0f4c0fbc..00000000 --- a/packages/tiptap/src/utils/markIsActive.js +++ /dev/null @@ -1,14 +0,0 @@ -export default function (state, type) { - const { - from, - $from, - to, - empty, - } = state.selection - - if (empty) { - return !!type.isInSet(state.storedMarks || $from.marks()) - } - - return !!state.doc.rangeHasMark(from, to, type) -} diff --git a/packages/tiptap/src/utils/nodeIsActive.js b/packages/tiptap/src/utils/nodeIsActive.js deleted file mode 100644 index 1ebcdd40..00000000 --- a/packages/tiptap/src/utils/nodeIsActive.js +++ /dev/null @@ -1,12 +0,0 @@ -import { findParentNode } from 'prosemirror-utils' - -export default function (state, type, attrs) { - const predicate = node => node.type === type - const parent = findParentNode(predicate)(state.selection) - - if (attrs === {} || !parent) { - return !!parent - } - - return parent.node.hasMarkup(type, attrs) -}