Commit Graph

100 Commits

Author SHA1 Message Date
Kento Moriwaki
357f3b609c
Fixing reoccurring issue #3331 and improving related PR #3533 (#3862)
* Add custom paragraph example

* Remove unnecessary queueMicrotask
2023-03-27 15:43:02 +02:00
Dominik
6283cee5c7
fix(react): allow updating event handlers on editor (#3811) 2023-03-03 11:35:53 +01:00
Dominik
1615d7a9bb
feat(react): allow react renderer to assign attributes to react renderer element (#3812) 2023-03-03 11:35:24 +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
38b7e412bb
fix(react): reset initialized when editorcontent is unmounting (#3781)
* fix(react): reset initialized when editorcontent is unmounting

* style: remove unneeded if statement
2023-02-27 19:33:42 +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
Kyle Alwyn
aa4389883a
Queue flushSync microtask (#3533)
Do the same thing as https://github.com/ueberdosis/tiptap/pull/3188
2023-02-18 22:47:11 +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
Rui Serra
369f109fc7
Fix cursor not following to new node when using a react node view (#3331)
* Refactor: extract `setRenderer` and `removeRenderer` methods

* Refactor: avoid using a mutable ES6 Map in React component state

The React docs recommend treating the `state` as immutable. See e.g.:
https://reactjs.org/docs/react-component.html#state

* Fix: flush EditorContent state changes immediately once initialized

This fixes the cursor problem described in tiptap#3200

Node views need to be rendered immediately when they're created so that
the editor can correctly position the cursor. That's achieved using
`flushSync` whenever a new node view renderer is added.

However, `flushSync` cannot be used from inside a React component
lifecycle method.

By keeping an instance variable to determine if initialization has
happened, we can avoid using `flushSync` from inside the `componentDidMount`
and `componentDidUpdate` methods, and still call it whenever a new node view
is created afterwards.
2022-11-25 12:01:07 +01:00
Dominik Biedebach
3d04941c64 style(extension/bubble-menu): change delay option to updateDelay 2022-11-04 22:04:47 +01:00
Dominik
cd5fd606d1
refactor(extension/bubble-menu): add debounce to bubble menu updates (#3385)
* refactor(extension/bubble-menu): add debounce to bubble menu updates

* fix: change default duration in react bubble menu demo
2022-11-04 16:39:41 +01:00
Daniel Spitzer
9093cdfcf5
fix: move React flushSync to microtask (#3188)
To avoid seeing the `Warning: flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.` error, we need to move the `flushSync()` code that avoids automatic batching to a microtask to not fire a lifecycle event `setState()` during rendering.

Fixes warning introduced in #2985
2022-09-13 20:36:35 +02:00
Cai Huanyu
f32293b0d5
fix: fix React Node View render problem in React 18 (#2985) 2022-08-22 14:41:26 +02:00
SavKS
8e65c20815
Fix state update after component unmounted (#2857)
Co-authored-by: Andrii Savluk <a.savluk@ideil.com>
2022-06-24 17:46:54 +02:00
Shaun Tan
8a5b3cf67a
Prevent overriding 'whiteSpace' styling for NodeView React components (#2884)
Fixes ueberdosis/tiptap#2883
2022-06-20 19:41:33 +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
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
Anton Liubushkin
d84ce08dcf Update ReactNodeViewRenderer.tsx
remove trailing spaces
2022-05-20 13:33:17 +02:00
Anton Liubushkin
21913445bc Update ReactNodeViewRenderer.tsx 2022-05-20 13:33:17 +02:00
Anton Liubushkin
00cd74e2c6 Add className option and pass through to ReactRenderer 2022-05-20 13:33:17 +02:00
Dany Castillo
a6fd827d31 fix children property not being defined in React.FC type 2022-04-14 00:18:29 +02:00
philippkuehn
7160b19c73 ci: fix code style linting errors 2022-01-03 13:29:53 +00:00
Luke Murray
64dfae8511
fix: change reactrenderer component type definition (#2327) 2022-01-03 14:28:31 +01:00
Tomas Valenta
561941d5e0
fix: Remove element.current from useEffect in BubbleMenu and FloatingMenu (#2297)
* Remove `element.current` from `useEffect` dependencies

Changes to the `element.current` don't trigger `useEffect` rerender and shouldn't be used in the dependency array.
One discussion about is this is for example here: https://stackoverflow.com/questions/60476155/is-it-safe-to-use-ref-current-as-useeffects-dependency-when-ref-points-to-a-dom

It's also causing some subtle bugs when mounting and unmounting editors.

* Fix `FloatingMenu` and `BubbleMenu` element references

* Fix linting errors

* Don't register plugin when the editor is already destroyed; Simplify `HTMLElement` reference handling

* Fix lint error
2021-12-22 12:13:36 +01:00
Philipp Kühn
40a9404c94 add newline-after-var rule to eslint config 2021-12-03 00:03:39 +01:00
Jessica Chong
dedcf17d53
feat: Add as option and pass through to ReactRenderer (#2213)
* Add `as` option and pass through to ReactRenderer

* Fix type, oops

* type `as` as string
2021-12-02 14:13:03 +01:00
Philipp Kühn
c9dc1e1ec3 feat: add className option to ReactRenderer, see #2166 2021-11-18 09:58:38 +01:00
Jon Noronha
ddc9ca8d4f
fix: Check node type above custom update function for node views (#2081) 2021-10-25 09:52:34 +02:00
Philipp Kühn
7ffabf251c
feat: Add extension storage (#2069) 2021-10-22 08:52:54 +02:00
Philipp Kühn
2d0e6d02d1 refactoring 2021-10-12 11:38:01 +02:00
Tomas Valenta
e9465ec0f6
fix: Add editor dependency when registering BubbleMenuPlugin and FloatingMenuPlugin (#2018)
* Add `editor` dependency when registering `BubbleMenuPlugin`

When we are initializing editor via the `useEditor` hook with dependencies the `BubbleMenu` component is only registered the first time the editor is initialized.

Adding editor to the dependency array registering/unregistering the `BubbleMenuPlugin` fixes this. (I tested exactly this code in our project.)

I also added a check that ensures that the menu element referenced via the `useRef` is defined when registering the plugin - otherwise, there is no point in registering the plugin.

* Add `editor` dependency when registering `FloatingMenuPlugin`
2021-10-12 11:09:00 +02:00
Ricardo Amaral
31d8ab3593
fix: Improve ReactRenderer types (#2011) 2021-10-11 20:37:35 +02:00
Philipp Kühn
2af187023d fix: fix editor type for ReactRenderer 2021-10-11 08:45:46 +02:00
Philipp Kühn
dead826250
fix: use ref to move contentDOM (#1960), fix #1942 2021-09-30 21:13:37 +02:00
Philipp Kühn
fe47c388ce fix: set correct component type for ReactRenderer, fix #1904 2021-09-18 20:45:00 +02:00
Philipp Kühn
b06a1f4364 refactoring 2021-09-07 23:20:46 +02:00
castroCrea
d1f2ad293f
feat: add support for forwardRef component in reactRenderer (#1690, fix #1040) 2021-09-07 23:13:39 +02:00
Philipp Kühn
b15a8a8683 fix: fix a bug when using nested node views in react, fix #1747 2021-08-24 22:13:18 +02:00
Philipp Kühn
70a328bd3d fix: make shouldShow and pluginKey option for menus, fix #1779 2021-08-23 18:44:40 +02:00
Philipp Kühn
89d26f7cba fix: rename key to pluginKey for menus 2021-08-13 12:33:06 +02:00
Philipp Kühn
956566eaad
fix: fix some react focus issues (#1724), fix #1716, fix #1608, fix #1520
* remove async createNodeViews

* focus asynchronously to fix weird bugs in react
2021-08-12 18:03:45 +02:00
Philipp Kühn
9ba61c1582
feat: add key option and shouldShow option to menus (fix #1480, fix #1043, fix #1268, fix #1503)
* add key option to bubble menu

* ignore react for now

* add shouldShow option to bubble menu extension

* improve types

* remove BubbleMenuPluginKey

* add key and shouldShow option to floating menu extension

* fix: don’t show floating menu within code block

* docs: add new menu options
2021-08-11 14:37:58 +02:00
Philipp Kühn
6ef931f85d fix another bug for updating node views 2021-07-28 14:51:58 +02:00
Philipp Kühn
d7f6e0ce3f fix: fix updating node views, fix #1656 2021-07-28 14:49:00 +02:00
Philipp Kühn
d720edbe24
feat!: provide more context to update function of node views, fix #1611
* add more powerful update option to node views

* add object params for all node view option props
2021-07-27 12:26:24 +02:00
Philipp Kühn
651e6911e3 feat: add ignoreMutation option to NodeViewRenderer, fix #1538 2021-07-26 18:44:02 +02:00
Philipp Kühn
44e47222a0 fix: check for destroyed editor before creating node views in react 2021-06-24 19:59:06 +02:00
Philipp Kühn
a3a847f711 code style 2021-06-14 16:06:49 +02:00
philippkuehn
15edaf0561 ci: fix code style linting errors 2021-06-14 14:03:29 +00:00
Yousef
df8310407d
Update NodeViewWrapper.tsx 2021-06-11 08:33:35 +02:00