Using `CSS.escape` is the wrong tool for the job here:
- it is meant for CSS selectors and does not handle CSS variables properly.
- you can't use `var(--title)` as a font-family because it was getting escaped to `var\(--title\)`
This change introduces two new top-level options to the editor: `enableContentCheck` & `onContentError` for dealing with content supplied that does not match the prose-mirror schema generated by the set of tiptap extensions.
`enableContentCheck` allows the app developer to opt into the behavior to check for invalid schemas (this change is otherwise backwards compatible).
When true, this will try to parse the document, and any content that does not match the schema will emit a `contentError` which can be listened to via the `onContentError` callback.
* fix(extension-code-block): paste code from vscode
* fix: remove unused import
* fix: put cursor inside the created code block
---------
Co-authored-by: Nick the Sick <nicholas.perez@tiptap.dev>
* Fix typing for Suggestion `command` with new MentionAttrs generic
As of
7cae9673f0,
new generics were added for Suggestion options and props. However,
there is a subtle bug in the current typing: the object selected with
the suggestion `command` need not have the same types as the `items` in
the suggestion options. For instance, in Tiptap's official demo
https://tiptap.dev/api/nodes/mention, the suggestion `items` are all
`string`s, but the selected Mention is of type `{id: string}` (which are
the attributes of the Mention node, as the Mention extension requires):
```ts
const selectItem = index => {
const item = props.items[index]
if (item) {
props.command({ id: item })
}
}
```
i.e., there should be no restriction that when you select something with
the suggestion `command`, it must use the identical structure as the
suggested items. When using the suggestion plugin with the Mention
extension, for instance, the value passed to the SuggestionProps
`props.command()` function must be a `Record<string, any>`, as it's
directly/exclusively used to set the `attrs` of a `Node` via
`insertContentAt` (and you need not use that shape for suggestion
options, as in the Tiptap example above):
44996d60be/packages/extension-mention/src/mention.ts (L42)f869507396/packages/core/src/types.ts (L79)
This fixes the typing so that suggestions can correctly refer separately
to their own items (of any type), while ensuring the `command`ed item be
of whatever type is necessary (and so in the Mention context, could be
restricted further).
* Add generics to override selected suggestion type
---------
Co-authored-by: Steven DeMartini <sjdemartini@users.noreply.github.com>
* chore: add commitizen cli
added cz-conventional-changelog to make commiting easier with the new linter
* docs: add commiting information to CONTRIBUTING.md
Added information on how to commit to the codebase via conventional commits
* added JSDocs for almost all extensions
* start adding commands jsdocs
* add jsdocs for rest of extensions
* add jsdocs for Extensions
* add js docs for all extensions
* add more jsdocs
* add js docs for node spec definitions