Commit Graph

797 Commits

Author SHA1 Message Date
Cameron Hessler
7b4c792034
fix(core) Allow text style to be clearable on new lines (#4151)
* Fix text style not clearing on new line

Fixes #3702

* Fix preserving marks when wrapping/setting nodes

* Uncomment tests

* Revert "Uncomment tests"

This reverts commit 8979bbda81.

* Revert "Fix preserving marks when wrapping/setting nodes"

This reverts commit fe3613b587.
2023-07-07 11:21:28 +02:00
Cameron Hessler
26610cdff3
fix(core) Nested chain not preserving dispatch state (#4152)
* Fix nested chain not preserving dispatch state

* Change test to read as sentence
2023-07-07 11:20:29 +02:00
Brent McSharry
18946b1e35
remove unused let in mark input rules (#4162)
trivial change - the markEnd variable was assigned outside the block and then reassigned within the block without ever using the initial value. Using const assignment just above the first use of the variable improves readability.
2023-07-07 11:01:20 +02:00
Ben Asher
e97630c639
Require file extensions for imports and exports (#4001)
* Require .js endings

* add extension alias for cypress to resolve ts files with js endings
2023-06-30 21:03:49 +02:00
Cameron Hessler
b7dc5d4712
Fix 'enter' behavior on android custom node views (#4153) 2023-06-25 02:33:48 +02:00
Dominik Biedebach
d6c6dd8596 Merge branch 'develop' of github.com:ueberdosis/tiptap into bdbch/list-editing-improvements 2023-06-13 11:34:52 +02:00
Patrick Baber
614fc8082c
feat: add tiptap class
* update docs
* update demos
2023-05-25 13:45:06 +02:00
Dominik Biedebach
4af54da3e0 fix(core): remove configure from extend functionality 2023-04-26 16:05:43 +02:00
Nick Holden
0dcc68412f
Retain existing config when calling configure() on Marks and Extensions (#3822) 2023-04-21 10:10:42 +02:00
Dominik
7278ee2b05
fix: clear nodes when cursor at start of empty isolating parent (#3943)
* fix: clear nodes when cursor at start of empty isolating parent

* fix: dont break backspace behavior when childCount is over 1

* fix: check if parent is textblock

* fix: add strict pos check for parent isolating pos

* demo: add isolation clear demo
2023-04-05 14:59:58 +02:00
Dominik Biedebach
b9ba227f86 Merge branch 'develop' of github.com:ueberdosis/tiptap into bdbch/list-editing-improvements 2023-03-30 15:18:36 +02:00
Dominik
020fd0ed79
feat(core): add editor to this context in schema functions (#3909) 2023-03-29 15:16:43 +02:00
Sven Adlung
fdf6301a61
Collaboration: Fix history after late-registering plugins (#3901)
* fix(extension-collaboration): fix history after late-registering plugins

* fix(extension-collaboration): fix history after late-registering plugins
2023-03-28 16:00:16 +02:00
Dominik Biedebach
684e48a4a7 fix(lists): improve list behaviour 2023-03-28 14:21:16 +02:00
Dominik
00aad1fd9a
style(core): fix linting issues (#3884) 2023-03-27 12:26:34 +02:00
Myles J
aa3068b1cd
feat(attributes): dynamic default (#3379) 2023-03-27 11:57:11 +02:00
svenadlung
928bd36f5f fix inconsistent tiptap spelling 2023-03-13 19:07:22 +01:00
René Eschke
b2ec51374d
Adds attributes to toggleList (#3776)
* Adds attributes to toggleList

When dealing with different variants of bullet lists, I wanted to adopt the same technique I used for different paragraph variants. Since `wrapInList` is capable of receiving attributes, just like `setNode` is, I don't see any reason why `toggleList` should not be capable of the same. 

Here's my bullet list extension in action that is in need of attributes support.

```js
export const CustomBulletList = BulletList.extend({
  content: 'listItem*',

  addAttributes() {
    return {
      variant: {
        default: DEFAULT_LIST,

        renderHTML: attributes => {
          return {
            class: `list-${attributes.variant}`,
          };
        },
      },
    };
  },

  addCommands() {
    return {
      toggleBulletList: attributes => (c) => {
        return c.commands.toggleListCustom(this.name, this.options.itemTypeName, attributes);
      },
    };
  },
});
```

* Update toggle-list.md

* Update toggle-list.md
2023-03-03 09:59:45 +01:00
Dominik Biedebach
10a4a46584 fix(core): fix linting issues 2023-03-03 09:57:49 +01:00
Abdullah Atta
dd6547da42
core: only check doc.textBetween if other checks pass (#3778) 2023-03-02 17:01:36 +01:00
Dominik
3c07ca0b9c
fix(core): fix destroyed view causing errors on dispatchTransaction (#3799) 2023-02-28 10:50:43 +01:00
Dominik
f869507396
fix: update typings for node view decorations (#3783)
* fix: update typings for node view decorations

* fix(core): update types for NodeView

* fix(core): declare props.decorations as decorationWithType
2023-02-27 21:23:30 +01:00
Dominik
0300630a5b
fix(core): allow insertContentAt and insertContent text node arrays (#3790)
* fix(core): allow insertContentAt and insertContent to handle array of text nodes

* fix(core): allow insertContent via json including a text content
2023-02-27 19:26:14 +01:00
Hari Haran
89cc59a837
fix: #3773 - Array for content breaks editor (#3786)
* fix: #3773 - Array for content breaks editor

* fix: lint warning
2023-02-24 15:03:20 +01:00
Hari Haran
36bb1e1041
feat: #3540 Ability to preserve marks on lists (#3541)
* feat: #3540 Ability to preserve marks on lists

* feat: preserveAttrs in list items

* `keepMarks` is working, but need help with `keepAttrs`

* fix: conflict

* avoid casting
2023-02-22 10:13:28 +01:00
Jack Sleight
26c349848e
Export createNodeFromContent and other missing helpers (#3558) 2023-02-18 22:44:32 +01:00
Harrison Lo
c2f8347025
Override schema text serializers if provided in getText options (#3672) 2023-02-18 18:26:49 +01:00
Jie
a81019a6b7
Extend nodePasteRule find type to most generic PasteRuleFinder (#3759) 2023-02-18 16:48:45 +01:00
Matthew Mullin
2b6e4e3691
fix: Prevent drag event from being ignored (#3677) 2023-02-09 12:12:54 +01:00
Dominik Biedebach
f659037d52 fix(core): fix broken types in definition file 2023-02-03 01:19:12 +01:00
Dominik
f387ad3dd4
feat(pm): new prosemirror package for dependency resolving
* chore:(core): migrate to tsup

* chore: migrate blockquote and bold to tsup

* chore: migrated bubble-menu and bullet-list to tsup

* chore: migrated more packages to tsup

* chore: migrate code and character extensions to tsup

* chore: update package.json to simplify build for all packages

* chore: move all packages to tsup as a build process

* chore: change ci build task

* feat(pm): add prosemirror meta package

* rfix: resolve issues with build paths & export mappings

* docs: update documentation to include notes for @tiptap/pm

* chore(pm): update tsconfig

* chore(packages): update packages

* fix(pm): add package export infos & fix dependencies

* chore(general): start moving to pm package as deps

* chore: move to tiptap pm package internally

* fix(demos): fix demos working with new pm package

* fix(tables): fix tables package

* fix(tables): fix tables package

* chore(demos): pinned typescript version

* chore: remove unnecessary tsconfig

* chore: fix netlify build

* fix(demos): fix package resolving for pm packages

* fix(tests): fix package resolving for pm packages

* fix(tests): fix package resolving for pm packages

* chore(tests): fix tests not running correctly after pm package

* chore(pm): add files to files array

* chore: update build workflow

* chore(tests): increase timeout time back to 12s

* chore(docs): update docs

* chore(docs): update installation guides & pm information to docs

* chore(docs): add link to prosemirror docs

* fix(vue-3): add missing build step

* chore(docs): comment out cdn link

* chore(docs): remove semicolons from docs

* chore(docs): remove unnecessary installation note

* chore(docs): remove unnecessary installation note
2023-02-02 17:37:33 +01:00
Dominik
e46f8e3334
Change Build Process to Lerna + tsup & prepare for prosemirror-meta package (#3555)
* chore:(core): migrate to tsup

* chore: migrate blockquote and bold to tsup

* chore: migrated bubble-menu and bullet-list to tsup

* chore: migrated more packages to tsup

* chore: migrate code and character extensions to tsup

* chore: update package.json to simplify build for all packages

* chore: move all packages to tsup as a build process

* chore: change ci build task

* chore: clean up and fix issues related to new build

* fix: fix demo build

* fix: fix demo build

* fix: fix tsconfig files to reference only one source

* fix: fix minor ts issues
2023-01-25 10:19:51 +01:00
Zaymon Antonio
acf833abec
🧹 Allow editor.setEditable to omit updates (#3301)
* 🧹 Allow `editor.setEditable` to omit updates

* 📚 Document change to `editor.setEditable`
2023-01-20 09:55:28 +01:00
Tova Schreier
f3f36754f9
Custom text serializers should override text serializers defined in the schema (#3546) 2022-12-16 12:47:03 +01:00
Dominik
343ce756a8
feat(commands): add joinUp and joinDown command (#3455) 2022-11-25 20:37:25 +01:00
Dominik
ef8a1a2f3d
fix(core): implement deleteCurrentNode command & fix node joining on Delete key (#3192)
* fix(core): 🐛 fix delete on empty nodes joining next node incorrectly

This PR implements a "deleteCurrentNode" action in combination with registering this command inside the keymap for the delete key. This way, we editor will check, if the current node is empty before joining - if the current node is empty, the node will be removed. Joining will still work if the current node is not empty and the selection is at the end of the current node

2924

* refactor(core): ♻️ remove unnecessary return on handleDelete keymap
2022-11-25 16:42:13 +01:00
tomi-bigpi
d3aeac4afa
Fix #3435 - CommonJS and ESM loading confusion (#3436)
* Fix TipTap getting loaded as CommonJS when the intent is to use the ES Module version.
* `package.json` change also makes explicit exports required
* Update `core` utilities exports to include all utilities
* Update tests to use exported utilities
2022-11-24 16:06:42 +01:00
Dominik Biedebach
403b99cd1a Revert "Fixed dragged text not being deleted after drop on another editor (#3279)"
This reverts commit ac626c8e1e.
2022-11-04 18:21:12 +01:00
Luis Cateura
ac626c8e1e
Fixed dragged text not being deleted after drop on another editor (#3279)
* Fixed dragged text not being deleted after drop on another editor

* refactor code solved typescript errors

Co-authored-by: luis.feliu <luis.feliu@mentormate.com>
2022-10-17 12:56:40 +02:00
Alberto Giunta
f6c6b67096
Fix #3032 (#3245) 2022-09-29 15:05:27 +02:00
hamflx
2f9ba324a0
fix(core): InputRules does not work for ranges containing multiple text nodes (#3205)
* fix: InputRules does not work for ranges containing multiple text nodes. #3071

* chore: rename `to` to `sliceEndPos`
2022-09-29 15:05:03 +02:00
Cameron Hessler
17a41da5a7
fix(core): Can() does not work for setting marks (#3223)
Previously, setting marks did no schema validation checks for dry runs
(like the `.can()` command). The `setMark` raw command will now properly
check if the mark is possible to be set given the editor node/mark
schema.

Co-authored-by: Cameron Hessler <cameron.hessler@buildertrend.com>
2022-09-26 14:56:25 +02:00
Etienne de la Broïse
bda6e8d308
fix(core): insert PasteRule Node at matched position (#2942) (#2943) 2022-09-10 14:07:46 +02:00
Rhys-T
4851fc5e9b
fix(core): make setEditable trigger all 'update' listeners (#3140) 2022-09-01 13:55:19 +02:00
Dominik
5fed0f2fc6
feature(core): add exit handling for marks (#2925)
* feat(core): add exit handling for marks

* docs(core): add information about exitable marks
2022-08-22 15:23:44 +02:00
Dominik
de1253a8b0
fix(core): make setEditable trigger onUpdate function (#2935) 2022-08-22 14:24:21 +02:00
Asherah Connor
313b8b8d0a
fix(core): setNodeSelection should not clamp pos by Selection.atStart/atEnd (#3091)
Fixes #3090.
2022-08-22 14:22:44 +02:00
Asherah Connor
40f4ea31ef
fix(core): createCan command props shouldn't try dispatch (#3025) (#3026) 2022-08-22 14:19:44 +02:00
Billiam
18336a8255
Fix paste rule adding one character to paste range (#2968)
Fixes #2939
2022-08-22 13:26:26 +02:00
Asherah Connor
574cd69e06
fix(core): isNodeSelection, isTextSelection not always false (#3089)
Fixes #2979.  Since the ProseMirror TypeScript upgrade, these have
always returned false, since the Selection type tree are all classes
now.
2022-08-22 13:05:53 +02:00
ahhshm
f4b9a46a0b
refactor: remove duplicated function (#2956) 2022-07-06 20:11:20 +02:00
Dominik
134a4bd1fb
fix(core): dont use selection for setContent replacement (#2934) 2022-07-06 12:59:16 +02:00
Sven Adlung
e280a02597
fix(core): only respect text of node before current position (#2937) (#2941) 2022-07-06 12:01:23 +02:00
Dominik Biedebach
5b0b7d9102 fix(core): fix focus command passing through editor state instead of existing transaction
this fixes a bug introduced a few months ago that caused positions not resolving on the most recent transaction but the editor state that was existing before the last transactions beforehand existed causing the editor to crash
2022-06-26 09:53:45 +02:00
Dominik Biedebach
15123ee092 feat(core): add nodePasteRule to core 2022-06-25 12:07:33 +02:00
Dominik
53e39d0c47
refactor(maintainment): set dependency versions for prosemirror and y… (#2904)
* refactor(maintainment): set dependency versions for prosemirror and yjs to fixed versions

* refactor(docs): fix dependency versions in demos

* chore: update package-lock.json

* chore: update latest prosemirror packages
2022-06-21 00:17:10 +02:00
Dominik
1ebc8f8e14
chore: migrate to new versions of prosemirror packages (#2854)
* refactor: upgrade prosemirror packages to new typescript versions

* refactor: migrate to new typings from prosemirror

* style: fix linting issues

* style: fix linting issues

* style: fix linting issues

* fix(ci): fix build process by reimplement filterTransaction

* fix(extension-test): fix broken build because of wrong output file names

* fix: fix prosemirror-tables not being bundled correctly for ES6

* fix: move to prosemirror-tables-contently until es6 build is working

* fix: fix tests for youtube

* fix: fix youtube test

* fix(demos): fix demos build
2022-06-20 11:45:37 +02:00
Dominik
fa8c4ca639
refactor: use index files for imports to simplify the export flow (#2870) 2022-06-11 07:11:14 +02:00
Dominik
8c6751f0c6
add precommit hook for linting and automatic eslint fixes + update eslint packages (#2862)
* chore: add precommit hook for eslint fixes, fix linting issues
* chore: add eslint import sort plugin
2022-06-08 14:10:25 +02:00
Jon Noronha
13a03425b3 lint fixes 2022-05-21 01:05:00 +02:00
Jon Noronha
23483d5e1a isRequired on attrs 2022-05-21 01:05:00 +02:00
Dominik Biedebach
ecee74a94d refactor: export new helper from index.ts 2022-05-20 19:04:55 +02:00
Dominik Biedebach
0597e474af style: move node text content into helper function 2022-05-20 19:04:55 +02:00
Dominik Biedebach
30c39c94c9 style: remove stray console log from input rule 2022-05-20 19:04:55 +02:00
Dominik Biedebach
64b23e120c fix(core): 🐛 fix inputrule not recognizing text content of non-text leaf nodes 2022-05-20 19:04:55 +02:00
Steven DeMartini
819622c202 Fix typo in text-serializers-from-schema function 2022-05-17 17:38:00 +02:00
Steven DeMartini
155955c9a9 Export helper for text serializers
For plugins and other user-defined extensions, it's useful to be able to
be able to use the text-serializers-from-schema helper, like is done in
the built-in clipboardTextSerializer extension
(43611ea2e7/packages/core/src/extensions/clipboardTextSerializer.ts (L21)).
2022-05-17 17:38:00 +02:00
Ivan Pantic
feef365b53 Expose "range" to textSerializer. Used in "getTextBetween" 2022-05-17 17:36:49 +02:00
JDinABox
0fb68af3a1 Fix extendMarkRange doesn't work when cursor is at end of mark 2022-05-17 13:30:54 +02:00
Felix Klein
ccc37d5f24 add support for CSP nonces in createStyleTag 2022-05-13 14:11:52 +02:00
David Ilizarov
e17c41498a fix: lint error 2022-05-11 10:22:00 +02:00
David Ilizarov
7401d45b7e fix: properly calculate setDragImage position 2022-05-11 10:22:00 +02:00
Scott Sidwell
d270419ad8 fix: don't override behaviour of Home / End in pc keymap
Similarly removed in Prosemirror at ProseMirror/prosemirror-commands@20371c58

For users who wish to preserve this behaviour, they can achieve this via:

```javascript
const CustomKeyboardBehaviour = Extension.create({
  addKeyboardShortcuts() {
    return {
      ['Home']: () => this.editor.commands.selectTextblockStart(),
      ['End']: () => this.editor.commands.selectTextblockEnd(),
    }
  }
})

const editor = new Editor({
  extensions: [
    // Register your custom extension with the editor.
    CustomKeyboardBehaviour,
  ]
});
```
2022-04-08 11:06:37 +10:00
Philipp Kühn
bdab760cdb fix: revert changes to selectAll command, fix #2491 2022-02-07 10:19:46 +01:00
Philipp Kühn
70422dd107 fix: fix RangeError bug when selecting all text, fix #2490 2022-02-07 09:07:17 +01:00
Philipp Kühn
01411f8462 fix: don’t add tabindex when readonly, fix #2458 2022-02-03 14:54:37 +01:00
Philipp Kühn
d899141a1a fix lint 2022-01-27 21:37:29 +01:00
Philipp Kühn
4be16fcd2e fix: set max textselection correctly, fix #2401 2022-01-27 09:44:53 +01:00
Philipp Kühn
b584920ea1 fix: fix End key handler, fix #2446 2022-01-27 09:07:03 +01:00
Philipp Kühn
85fcc29ac6 fix: add attributes to pre tag instead of code tag by default, fix #2440 2022-01-26 09:36:56 +01:00
Philipp Kühn
75e5601767 fix: add correct windows and px keymap 2022-01-25 10:52:36 +01:00
Philipp Kühn
0aa39f93cb feat: add selectTextblockStart and selectTextblockEnd commands 2022-01-25 10:35:39 +01:00
Philipp Kühn
d2427064ff fix: insertContent keeps marks when using plain text, fix #2406 2022-01-20 22:15:12 +01:00
Philipp Kühn
9d317128a0 fix: fix removing the caret on blur in some situations when using safari, fix #2405 2022-01-20 21:37:31 +01:00
Philipp Kühn
bc03c0d778 fix: run pasterules for pasted content, fix #2408 2022-01-20 15:04:34 +01:00
Philipp Kühn
42d3ee8fc9 fix: support all characters for suggestion char, fix #2385 2022-01-13 13:57:33 +01:00
Philipp Kühn
6a813686f5 dont return tr in input rules and pasterules 2022-01-10 14:55:53 +01:00
Philipp Kühn
669efd00e9
fix: add way to cancel inputrules and pasterules (#2368)
Co-authored-by: Philipp Kühn <philippkuehn@MacBook-Pro-von-Philipp.local>
2022-01-10 14:43:56 +01:00
Philipp Kühn
6a94e2fa62 dependencies: update 2022-01-04 10:02:24 +01:00
Philipp Kühn
ded6f9618f fix: allow input rules after hard break, fix #2302 2021-12-22 12:27:06 +01:00
Philipp Kühn
07cabe65f4 fix: remove empty mark attributes from getDebugJSON 2021-12-17 00:09:09 +01:00
Philipp Kühn
8ed485ba53
fix: Improve backspace handling (#2284), fix #2281
* improve backspace handling

* revert codeblock changes

* revert codeblock changes

* fix tests

Co-authored-by: Philipp Kühn <philippkuehn@MacBook-Pro-von-Philipp.local>
2021-12-16 13:55:32 +01:00
Philipp Kühn
66eb2f2a47 fix: prevent error in toggleList command, fix #2279 2021-12-15 10:51:23 +01:00
Philipp Kühn
9e6fbd6c88 refactoring 2021-12-13 14:17:52 +01:00
Philipp Kühn
f2ced6971d fix: improve setNode behavior for list items, fix #2261 2021-12-13 13:40:33 +01:00
Philipp Kühn
e09fd93e59 fix: check for invalid content in insertContentAt command 2021-12-13 13:33:13 +01:00
Philipp Kühn
170ec4be5b fix: don’t check for active node in wrapIn command, fix #1059 2021-12-13 13:32:19 +01:00
Philipp Kühn
126ad722c7
feat: join lists on toggleList (#2260), fix #1329
Co-authored-by: Philipp Kühn <philippkuehn@MacBook-Pro-von-Philipp.local>
2021-12-10 14:07:34 +01:00
Philipp Kühn
5daa870b09
feat: add some improvements to CharacterCount extension (#2256), fix #1049, fix #1550, fix #1839, fix #2245
* fix a bug when exceeding the character limit

* find a better way to limit the doc size

* check paste events

* add storage method

* refactoring

* use textBetween instead of textContent

* return early if no limit is set

* add words method to storage

* show word count in charactercount demo

Co-authored-by: Philipp Kühn <philippkuehn@MacBook-Pro-von-Philipp.local>
2021-12-08 21:26:30 +01:00
Philipp Kühn
2995d00275 fix lint error 2021-12-06 12:34:14 +01:00