Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Media #1721

Merged
merged 14 commits into from
Aug 2, 2022
Merged

Media #1721

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/button-patch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@udecode/plate-ui-button': patch
---

- `focus` editor after removing node on click
5 changes: 5 additions & 0 deletions .changeset/core-minor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@udecode/plate-core': minor
---

- `ElementProvider` now has `SCOPE_ELEMENT='element'` scope in addition to the plugin key, so `useElement()` can be called without parameter (default = `SCOPE_ELEMENT`). You'll need to use the plugin key scope only to get an ancestor element.
6 changes: 6 additions & 0 deletions .changeset/floating-minor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@udecode/plate-floating': minor
---

- `Popover`: Popover displayed over children, rendering `content`
- `ElementPopover`: Popover displayed over an element if not read-only, element selected
14 changes: 14 additions & 0 deletions .changeset/media-major.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
'@udecode/plate-media': major
---

- removed:
- `useImageElement` for `useElement`
- `MediaEmbedUrlInput` for `FloatingMediaUrlInput`
- `parseEmbedUrl` for `parseMediaUrl`
- `EmbedProviders`
- renamed:
- `ImageImg` to `Image`
- `ImageCaptionTextarea` to `CaptionTextarea`
- `useImageCaptionString` to `useCaptionString`
- `ImageResizable` to `Resizable`
83 changes: 83 additions & 0 deletions .changeset/media-minor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
---
'@udecode/plate-media': minor
---

- `createMediaEmbedPlugin` default options:
```tsx
options: {
transformUrl: parseIframeUrl,
rules: [
{
parser: parseTwitterUrl,
component: MediaEmbedTweet,
},
{
parser: parseVideoUrl,
component: MediaEmbedVideo,
},
],
},
```
- utils:
- `parseIframeUrl`
- `parseMediaUrl`
- `submitFloatingMedia`
- components:
- `MediaRoot`
- `MediaEmbed`
- `MediaEmbedTweet`: used when provider is twitter
- `MediaEmbedVideo`: used when provider is a video
- `FloatingMedia`
- `FloatingMediaEditButton`
- `FloatingMediaUrlInput`
- stores:
- `mediaStore`
- `captionGlobalStore`
- `floatingMediaStore`
- `resizableStore`
- types:
```tsx
interface TResizableElement extends TElement {
width?: number;
}

interface TImageElement extends TMediaElement {}

interface TCaptionElement extends TElement {
caption?: TDescendant[];
}

interface TMediaElement extends TCaptionElement, TResizableElement {
url: string;
}

type MediaUrlParser = (url: string) => EmbedUrlData | undefined;

type MediaPluginRule = {
parser: MediaUrlParser;
component?: RenderFunction<EmbedUrlData>;
};

interface MediaPlugin {
isUrl?: (text: string) => boolean;

/**
* Transforms the url.
*/
transformUrl?: (url: string) => string;

/**
* List of rules. The first rule that matches the url will be used,
* i.e. its component will be used to render the media. Used by `MediaEmbed`.
*/
rules?: MediaPluginRule[];
}
```
```tsx
type EmbedUrlData = {
url?: string;
provider?: string;
id?: string;
component?: RenderFunction<EmbedUrlData>;
};
```
13 changes: 13 additions & 0 deletions .changeset/media-ui-minor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
'@udecode/plate-ui-media': minor
---

- `ImageElement`:
- now uses composition pattern
- displays `PlateFloatingMedia` on select
- `MediaEmbedElement`:
- now uses composition pattern
- displays `PlateFloatingMedia` on select
- `PlateFloatingMedia`:
- edit link button
- delete node button
6 changes: 6 additions & 0 deletions .changeset/plate-ui.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@udecode/plate': major
'@udecode/plate-ui': major
---

- deprecate `@udecode/plate-ui-popover` for `@udecode/plate-floating`
6 changes: 6 additions & 0 deletions .changeset/plate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@udecode/plate': major
'@udecode/plate-headless': major
---

- deprecate `@udecode/plate-image` and `@udecode/plate-media-embed`, those got merged into `@udecode/plate-media`
9 changes: 9 additions & 0 deletions .changeset/table-minor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@udecode/plate-ui-table': major
---

- `TableElementBase` props:
- replace `onRenderContainer` by `floatingOptions`
- `TablePopover` is now a floating instead of tippy
- deps:
- replaced `plate-ui-popover` by `plate-floating`
7 changes: 7 additions & 0 deletions .changeset/toolbar-minor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@udecode/plate-ui-toolbar': minor
---

- `FloatingVerticalDivider`
- new dep:
- `@udecode/plate-ui-button`
12 changes: 5 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,25 +120,23 @@ your code to the project.

### Element Plugins

| Name | Version | Description |
|:---------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------|
| Name | Version | Description |
|:------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------|
| [`@udecode/plate-basic-elements`](packages/nodes/basic-elements) | [<img src="https://img.shields.io/npm/v/@udecode/plate-basic-elements.svg" alt="@udecode/plate-basic-elements npm package badge">](https://www.npmjs.com/package/@udecode/plate-basic-elements) | Basic elements plugins. |
| [`@udecode/plate-alignment`](packages/nodes/alignment) | [<img src="https://img.shields.io/npm/v/@udecode/plate-alignment.svg" alt="@udecode/plate-alignment npm package badge">](https://www.npmjs.com/package/@udecode/plate-alignment) | Text alignment plugin. |
| [`@udecode/plate-ui-alignment`](packages/ui/nodes/alignment) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-alignment.svg" alt="@udecode/plate-ui-alignment npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-alignment) | Text alignment UI. |
| [`@udecode/plate-block-quote`](packages/nodes/block-quote/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-block-quote.svg" alt="@udecode/plate-block-quote npm package badge">](https://www.npmjs.com/package/@udecode/plate-block-quote) | Block quote plugin. |
| [`@udecode/plate-ui-block-quote`](packages/ui/nodes/block-quote/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-block-quote.svg" alt="@udecode/plate-ui-block-quote npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-block-quote) | Block quote UI. |
| [`@udecode/plate-code-block`](packages/nodes/code-block) | [<img src="https://img.shields.io/npm/v/@udecode/plate-code-block.svg" alt="@udecode/plate-code-block npm package badge">](https://www.npmjs.com/package/@udecode/plate-code-block) | Code block plugin. |
| [`@udecode/plate-ui-code-block`](packages/ui/nodes/code-block) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-code-block.svg" alt="@udecode/plate-ui-code-block npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-code-block) | Code block UI. |
| [`@udecode/plate-excalidraw`](packages/ui/nodes/excalidraw/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-excalidraw.svg" alt="@udecode/plate-excalidraw npm package badge">](https://www.npmjs.com/package/@udecode/plate-excalidraw) | Excalidraw plugin. |
| [`@udecode/plate-excalidraw`](packages/ui/nodes/excalidraw/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-excalidraw.svg" alt="@udecode/plate-excalidraw npm package badge">](https://www.npmjs.com/package/@udecode/plate-excalidraw) | Excalidraw plugin. |
| [`@udecode/plate-heading`](packages/nodes/heading/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-heading.svg" alt="@udecode/plate-heading npm package badge">](https://www.npmjs.com/package/@udecode/plate-heading) | Headings (1-6) plugin. |
| [`@udecode/plate-image`](packages/nodes/image/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-image.svg" alt="@udecode/plate-image npm package badge">](https://www.npmjs.com/package/@udecode/plate-image) | Image plugin. Supports pasting images from clipboard. |
| [`@udecode/plate-ui-image`](packages/ui/nodes/image/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-image.svg" alt="@udecode/plate-ui-image npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-image) | Image UI. |
| [`@udecode/plate-link`](packages/nodes/link/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-link.svg" alt="@udecode/plate-link npm package badge">](https://www.npmjs.com/package/@udecode/plate-link) | Link plugin. |
| [`@udecode/plate-ui-link`](packages/ui/nodes/link/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-link.svg" alt="@udecode/plate-ui-link npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-link) | Link UI. |
| [`@udecode/plate-list`](packages/nodes/list) | [<img src="https://img.shields.io/npm/v/@udecode/plate-list.svg" alt="@udecode/plate-list npm package badge">](https://www.npmjs.com/package/@udecode/plate-list) | Bulleted, numbered and to-do list plugins. |
| [`@udecode/plate-ui-list`](packages/ui/nodes/list) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-list.svg" alt="@udecode/plate-ui-list npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-list) | List UI. |
| [`@udecode/plate-media-embed`](packages/nodes/media-embed) | [<img src="https://img.shields.io/npm/v/@udecode/plate-media-embed.svg" alt="@udecode/plate-media-embed npm package badge">](https://www.npmjs.com/package/@udecode/plate-media-embed) | Media embed plugin. |
| [`@udecode/plate-ui-media-embed`](packages/ui/nodes/media-embed) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-media-embed.svg" alt="@udecode/plate-ui-media-embed npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-media-embed) | Media embed UI. |
| [`@udecode/plate-media`](packages/nodes/media) | [<img src="https://img.shields.io/npm/v/@udecode/plate-media.svg" alt="@udecode/plate-media npm package badge">](https://www.npmjs.com/package/@udecode/plate-media) | Media embed plugin. |
| [`@udecode/plate-ui-media`](packages/ui/nodes/media) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-media.svg" alt="@udecode/plate-ui-media npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-media) | Media embed UI. |
| [`@udecode/plate-mention`](packages/nodes/mention/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-mention.svg" alt="@udecode/plate-mention npm package badge">](https://www.npmjs.com/package/@udecode/plate-mention) | Mention plugin (autocomplete `@mentions`, `#tags`, etc.). |
| [`@udecode/plate-ui-mention`](packages/ui/nodes/mention/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-ui-mention.svg" alt="@udecode/plate-ui-mention npm package badge">](https://www.npmjs.com/package/@udecode/plate-ui-mention) | Mention UI. |
| [`@udecode/plate-paragraph`](packages/nodes/paragraph/) | [<img src="https://img.shields.io/npm/v/@udecode/plate-paragraph.svg" alt="@udecode/plate-paragraph npm package badge">](https://www.npmjs.com/package/@udecode/plate-paragraph) | Paragraph plugin. |
Expand Down
3 changes: 1 addition & 2 deletions config/aliases-plate.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ module.exports = {
'@udecode/plate-heading': 'nodes/heading',
'@udecode/plate-highlight': 'nodes/highlight',
'@udecode/plate-horizontal-rule': 'nodes/horizontal-rule',
'@udecode/plate-image': 'nodes/image',
'@udecode/plate-indent': 'nodes/indent',
'@udecode/plate-indent-list': 'nodes/indent-list',
'@udecode/plate-juice': 'serializers/juice',
Expand All @@ -27,7 +26,7 @@ module.exports = {
'@udecode/plate-link': 'nodes/link',
'@udecode/plate-list': 'nodes/list',
'@udecode/plate-serializer-md': 'serializers/md',
'@udecode/plate-media-embed': 'nodes/media-embed',
'@udecode/plate-media': 'media',
'@udecode/plate-mention': 'nodes/mention',
'@udecode/plate-node-id': 'editor/node-id',
'@udecode/plate-normalizers': 'editor/normalizers',
Expand Down
4 changes: 1 addition & 3 deletions config/aliases.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,12 @@ module.exports = {
'@udecode/plate-ui-find-replace': 'ui/find-replace',
'@udecode/plate-ui-font': 'ui/nodes/font',
'@udecode/plate-ui-horizontal-rule': 'ui/nodes/horizontal-rule',
'@udecode/plate-ui-image': 'ui/nodes/image',
'@udecode/plate-ui-line-height': 'ui/nodes/line-height',
'@udecode/plate-ui-link': 'ui/nodes/link',
'@udecode/plate-ui-list': 'ui/nodes/list',
'@udecode/plate-ui-media-embed': 'ui/nodes/media-embed',
'@udecode/plate-ui-media': 'ui/nodes/media',
'@udecode/plate-ui-mention': 'ui/nodes/mention',
'@udecode/plate-ui-placeholder': 'ui/placeholder',
'@udecode/plate-ui-popover': 'ui/popover',
'@udecode/plate-ui-table': 'ui/nodes/table',
'@udecode/plate-ui-toolbar': 'ui/toolbar',
};
39 changes: 0 additions & 39 deletions docs/docs/plugins/ImageSandpack.tsx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { selectOnBackspacePluginFile } from '../sandpack/files/select-on-backspa
import { toolbarFile } from '../sandpack/files/toolbar/code-Toolbar';
import { typescriptFiles } from '../sandpack/files/typescript/code-typescriptFiles';

export const MediaEmbedSandpack = () => (
export const MediaSandpack = () => (
<CommonSandpack
height={722}
previewSize={8}
Expand Down
39 changes: 0 additions & 39 deletions docs/docs/plugins/image.mdx

This file was deleted.

35 changes: 0 additions & 35 deletions docs/docs/plugins/media-embed.mdx

This file was deleted.

Loading