@jpmorganchase/mosaic-content-editor-plugin 0.1.0-beta.37 → 0.1.0-beta.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +16 -0
- package/dist/api/save.d.ts +1 -1
- package/dist/api/save.js +1 -1
- package/dist/chunk-3QIETKQW.js +1 -0
- package/dist/chunk-4B2NDAA2.js +1 -0
- package/dist/chunk-4LQ77YZW.js +1 -0
- package/dist/chunk-6EO5B7QP.js +1 -0
- package/dist/chunk-6X665P47.js +1 -0
- package/dist/chunk-7JRJTNUG.js +1 -0
- package/dist/chunk-7LK4O57W.js +1 -0
- package/dist/chunk-B6MFPF7L.js +1 -0
- package/dist/chunk-BFF3MNBV.js +1 -0
- package/dist/chunk-BINIAABY.js +1 -0
- package/dist/chunk-DLRFTDUZ.js +1 -0
- package/dist/chunk-DXTVYP7D.js +1 -0
- package/dist/chunk-EMHRWY75.js +1 -0
- package/dist/chunk-FH2LMMJT.js +1 -0
- package/dist/chunk-FNNLNVQZ.js +1 -0
- package/dist/chunk-GYUEXLD6.js +1 -0
- package/dist/chunk-M4ISRNFD.js +1 -0
- package/dist/chunk-MZJ4JT73.js +1 -0
- package/dist/{chunk-GWUYDDYS.js → chunk-NFA3MZOC.js} +1 -1
- package/dist/chunk-NFSXCTUU.js +1 -0
- package/dist/chunk-OW5SK4AJ.js +1 -0
- package/dist/chunk-PXUVNH4P.js +1 -0
- package/dist/chunk-QHE4U3WR.js +1 -0
- package/dist/chunk-R2MEEU32.js +1 -0
- package/dist/chunk-ROQUYURQ.js +1 -0
- package/dist/chunk-SYL4AGHI.js +1 -0
- package/dist/chunk-TSWYSURQ.js +1 -0
- package/dist/chunk-UBWAGWSM.js +1 -0
- package/dist/chunk-WCOTJ6JY.js +1 -0
- package/dist/chunk-XSZUCLBY.js +1 -0
- package/dist/chunk-Y2A2ULLZ.js +1 -0
- package/dist/chunk-YIFLQ5MW.js +1 -0
- package/dist/chunk-Z6W7GDHE.js +1 -0
- package/dist/chunk-ZHZ4E2MI.js +1 -0
- package/dist/components/BaseToolbar/BaseToolbar.css +1 -0
- package/dist/components/BaseToolbar/BaseToolbar.css.css +1 -0
- package/dist/components/{Toolbar/TextFormatToolbarButton.css.d.ts → BaseToolbar/BaseToolbar.css.d.ts} +0 -1
- package/dist/components/BaseToolbar/BaseToolbar.css.js +1 -0
- package/dist/components/BaseToolbar/BaseToolbar.d.ts +7 -0
- package/dist/components/BaseToolbar/BaseToolbar.js +1 -0
- package/dist/components/BaseTooltray/BaseTooltray.css +1 -0
- package/dist/components/BaseTooltray/BaseTooltray.css.css +1 -0
- package/dist/components/BaseTooltray/BaseTooltray.css.d.ts +6 -0
- package/dist/components/BaseTooltray/BaseTooltray.css.js +1 -0
- package/dist/components/BaseTooltray/BaseTooltray.d.ts +9 -0
- package/dist/components/BaseTooltray/BaseTooltray.js +1 -0
- package/dist/components/ContentEditor.js +1 -1
- package/dist/components/Dialog.css +1 -0
- package/dist/components/Dialog.css.css +1 -0
- package/dist/components/Dialog.css.d.ts +4 -0
- package/dist/components/Dialog.css.js +1 -0
- package/dist/components/Dialog.d.ts +6 -0
- package/dist/components/Dialog.js +1 -0
- package/dist/components/Editor.css +1 -1
- package/dist/components/Editor.d.ts +3 -2
- package/dist/components/Editor.js +1 -1
- package/dist/components/EditorControls.css +1 -1
- package/dist/components/EditorControls.css.css +1 -1
- package/dist/components/EditorControls.css.js +1 -1
- package/dist/components/EditorControls.d.ts +4 -3
- package/dist/components/EditorControls.js +1 -1
- package/dist/components/LinkEditor/EditLinkButton.css +1 -0
- package/dist/components/LinkEditor/EditLinkButton.d.ts +2 -2
- package/dist/components/LinkEditor/EditLinkButton.js +1 -1
- package/dist/components/LinkEditor/LinkEditor.css +1 -1
- package/dist/components/LinkEditor/LinkEditor.js +1 -1
- package/dist/components/LinkEditor/SaveAdornment.css +1 -0
- package/dist/components/LinkEditor/SaveAdornment.js +1 -1
- package/dist/components/PersistEditDialog/PersistStatus.js +1 -1
- package/dist/components/PersistEditDialog/index.css +1 -1
- package/dist/components/PersistEditDialog/index.css.css +1 -0
- package/dist/components/PersistEditDialog/index.css.d.ts +4 -0
- package/dist/components/PersistEditDialog/index.css.js +1 -0
- package/dist/components/PersistEditDialog/index.d.ts +5 -2
- package/dist/components/PersistEditDialog/index.js +1 -1
- package/dist/components/Popper/Popper.js +1 -1
- package/dist/components/Toolbar/InsertHorizontalRule.css +1 -0
- package/dist/components/Toolbar/InsertHorizontalRule.js +1 -1
- package/dist/components/Toolbar/InsertImage.css +1 -1
- package/dist/components/Toolbar/InsertImage.js +1 -1
- package/dist/components/Toolbar/InsertLink.css +1 -1
- package/dist/components/Toolbar/InsertLink.js +1 -1
- package/dist/components/Toolbar/InsertTable.css +1 -1
- package/dist/components/Toolbar/InsertTable.css.css +1 -1
- package/dist/components/Toolbar/InsertTable.css.d.ts +1 -1
- package/dist/components/Toolbar/InsertTable.css.js +1 -1
- package/dist/components/Toolbar/InsertTable.js +1 -1
- package/dist/components/Toolbar/TextFormatTooltray.css +1 -1
- package/dist/components/Toolbar/TextFormatTooltray.css.css +1 -1
- package/dist/components/Toolbar/TextFormatTooltray.css.d.ts +0 -1
- package/dist/components/Toolbar/TextFormatTooltray.css.js +1 -1
- package/dist/components/Toolbar/TextFormatTooltray.js +1 -1
- package/dist/components/Toolbar/Toolbar.css +1 -1
- package/dist/components/Toolbar/Toolbar.js +1 -1
- package/dist/components/Toolbar/ToolbarButton.css +1 -0
- package/dist/components/Toolbar/ToolbarButton.css.css +1 -0
- package/dist/components/Toolbar/ToolbarButton.css.d.ts +4 -0
- package/dist/components/Toolbar/ToolbarButton.css.js +1 -0
- package/dist/components/Toolbar/ToolbarButton.d.ts +8 -0
- package/dist/components/Toolbar/ToolbarButton.js +1 -0
- package/dist/components/Toolbar/ToolbarSeparator.css.css +1 -0
- package/dist/components/Toolbar/ToolbarSeparator.css.d.ts +4 -0
- package/dist/components/Toolbar/ToolbarSeparator.css.js +1 -0
- package/dist/components/Toolbar/ToolbarSepartor.css +1 -0
- package/dist/components/Toolbar/ToolbarSepartor.d.ts +7 -0
- package/dist/components/Toolbar/ToolbarSepartor.js +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +1 -1
- package/dist/plugins/FloatingToolbarPlugin.css +1 -1
- package/dist/plugins/FloatingToolbarPlugin.css.css +1 -0
- package/dist/plugins/FloatingToolbarPlugin.css.d.ts +4 -0
- package/dist/plugins/FloatingToolbarPlugin.css.js +1 -0
- package/dist/plugins/FloatingToolbarPlugin.js +1 -1
- package/dist/plugins/MarkdownLinkPlugin.css +1 -1
- package/dist/plugins/MarkdownLinkPlugin.js +1 -1
- package/dist/plugins/PreviewPlugin.css +1 -1
- package/dist/plugins/PreviewPlugin.d.ts +6 -5
- package/dist/plugins/PreviewPlugin.js +1 -1
- package/dist/plugins/TableActionMenuPlugin.js +1 -1
- package/dist/transformers/index.js +1 -1
- package/package.json +14 -13
- package/src/api/save.ts +4 -4
- package/src/components/BaseToolbar/BaseToolbar.css.ts +21 -0
- package/src/components/BaseToolbar/BaseToolbar.tsx +13 -0
- package/src/components/BaseTooltray/BaseTooltray.css.ts +31 -0
- package/src/components/BaseTooltray/BaseTooltray.tsx +22 -0
- package/src/components/ContentEditor.tsx +2 -0
- package/src/components/Dialog.css.ts +7 -0
- package/src/components/Dialog.tsx +12 -0
- package/src/components/Editor.tsx +10 -8
- package/src/components/EditorControls.css.ts +2 -5
- package/src/components/EditorControls.tsx +13 -7
- package/src/components/LinkEditor/EditLinkButton.tsx +5 -5
- package/src/components/LinkEditor/SaveAdornment.tsx +4 -3
- package/src/components/PersistEditDialog/PersistStatus.tsx +7 -2
- package/src/components/PersistEditDialog/index.css.ts +14 -0
- package/src/components/PersistEditDialog/index.tsx +37 -16
- package/src/components/Popper/Popper.tsx +6 -1
- package/src/components/Toolbar/InsertHorizontalRule.tsx +2 -2
- package/src/components/Toolbar/InsertImage.tsx +9 -8
- package/src/components/Toolbar/InsertLink.tsx +9 -8
- package/src/components/Toolbar/InsertTable.css.ts +8 -2
- package/src/components/Toolbar/InsertTable.tsx +9 -4
- package/src/components/Toolbar/TextFormatTooltray.css.ts +0 -5
- package/src/components/Toolbar/TextFormatTooltray.tsx +16 -21
- package/src/components/Toolbar/Toolbar.tsx +11 -6
- package/src/components/Toolbar/ToolbarButton.css.ts +11 -0
- package/src/components/Toolbar/ToolbarButton.tsx +41 -0
- package/src/components/Toolbar/ToolbarSeparator.css.ts +28 -0
- package/src/components/Toolbar/ToolbarSepartor.tsx +13 -0
- package/src/components/__tests__/EditorControls.test.tsx +4 -4
- package/src/plugins/FloatingToolbarPlugin.css.ts +14 -0
- package/src/plugins/FloatingToolbarPlugin.tsx +9 -8
- package/src/plugins/PreviewPlugin.tsx +31 -6
- package/dist/chunk-4CRC7NS5.js +0 -1
- package/dist/chunk-5JA4V4PV.js +0 -1
- package/dist/chunk-6TWGPQT5.js +0 -1
- package/dist/chunk-B3MUPQQA.js +0 -1
- package/dist/chunk-DK6F4XAE.js +0 -1
- package/dist/chunk-FFJYM47T.js +0 -1
- package/dist/chunk-FI57IKHZ.js +0 -1
- package/dist/chunk-HB6ONQSD.js +0 -1
- package/dist/chunk-HYOY3SMH.js +0 -1
- package/dist/chunk-JJ5K5LVL.js +0 -1
- package/dist/chunk-JYGEHLYM.js +0 -1
- package/dist/chunk-KD66I56W.js +0 -1
- package/dist/chunk-L5I3DIHV.js +0 -1
- package/dist/chunk-MJUOPD42.js +0 -1
- package/dist/chunk-MOZEUF74.js +0 -1
- package/dist/chunk-PMMRU33I.js +0 -1
- package/dist/chunk-PZZKTKIE.js +0 -1
- package/dist/chunk-R6U5TOP4.js +0 -1
- package/dist/chunk-SI5CM3F4.js +0 -1
- package/dist/chunk-VO6JTL4J.js +0 -1
- package/dist/chunk-WCG3U3X2.js +0 -1
- package/dist/chunk-WTMALWJU.js +0 -1
- package/dist/chunk-XGBC7YGO.js +0 -1
- package/dist/chunk-ZUGL4RMA.js +0 -1
- package/dist/components/Toolbar/TextFormatToolbarButton.css +0 -1
- package/dist/components/Toolbar/TextFormatToolbarButton.css.css +0 -1
- package/dist/components/Toolbar/TextFormatToolbarButton.css.js +0 -1
- package/dist/components/Toolbar/TextFormatToolbarButton.d.ts +0 -7
- package/dist/components/Toolbar/TextFormatToolbarButton.js +0 -1
- package/src/components/Toolbar/TextFormatToolbarButton.css.ts +0 -10
- package/src/components/Toolbar/TextFormatToolbarButton.tsx +0 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._1qc5rwi0{background:inherit;display:flex;justify-content:center;flex-shrink:0;flex-grow:0;position:relative;overflow:hidden;padding:var(--mosaic-space-horizontal-x1)}._1qc5rwi1{margin-right:auto}._1qc5rwi0._1qc5rwi2{margin-left:auto!important}._1qc5rwi0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x1)}.c37l3h0{width:28px;height:28px;line-height:1;padding:var(--mosaic-space-horizontal-none)}.u64up60{width:14px;font-size:12px}.u64up61{font-weight:var(--mosaic-fontWeight-bold)}.u64up62{font-style:italic}.u64up63{width:22px;height:18px;background-color:inherit!important;display:inline-flex;justify-content:center;align-items:center}.fdaqer0{z-index:10}._195c2ps0{width:var(--mosaic-space-horizontal-x10)}._195c2ps1{position:relative;margin:var(--mosaic-space-horizontal-x2)}._195c2ps2{position:absolute;top:0;width:25px}._195c2ps3{position:absolute;left:0;height:25px}._195c2ps5{display:flex;justify-content:center;align-items:center;padding-top:var(--mosaic-space-vertical-x2)}._195c2ps7{z-index:1600}._195c2ps0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x1)}.trugsj0{min-width:500px}.jmottr0{width:100%}._1cwa3bz0{width:100%}._1lleyna0{overflow:hidden;position:relative;display:flex;align-items:center;padding:var(--mosaic-space-horizontal-x1);height:44px}._1lleyna1>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x2)}._1thn0560:before{content:"";position:absolute;background:inherit;top:6px;right:0;width:1px;height:var(--mosaic-space-vertical-x6)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-BINIAABY.js";import"../../chunk-4B2NDAA2.js";import"../../chunk-4LQ77YZW.js";import"../../chunk-DLRFTDUZ.js";import"../../chunk-UBWAGWSM.js";import"../../chunk-KZXCNQER.js";import"../../chunk-DXTVYP7D.js";import"../../chunk-NFA3MZOC.js";import"../../chunk-YBFKG74H.js";import"../../chunk-PC66Q33O.js";import"../../chunk-FW7CHFWO.js";import"../../chunk-MZJ4JT73.js";import"../../chunk-B6MFPF7L.js";import"../../chunk-U7COOUR6.js";import"../../chunk-WCOTJ6JY.js";import"../../chunk-WZYDYWT3.js";import"../../chunk-YIFLQ5MW.js";import"../../chunk-XP37MJCS.js";import"../../chunk-P5OBPOC4.js";import"../../chunk-7JRJTNUG.js";import"../../chunk-GYUEXLD6.js";import"../../chunk-FH2LMMJT.js";import"../../chunk-7LK4O57W.js";import"../../chunk-3QIETKQW.js";import"../../chunk-Y2A2ULLZ.js";import"../../chunk-G57W376H.js";import"../../chunk-XSZUCLBY.js";import"../../chunk-OW5SK4AJ.js";export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.c37l3h0{width:28px;height:28px;line-height:1;padding:var(--mosaic-space-horizontal-none)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.c37l3h0{width:28px;height:28px;line-height:1;padding:var(--mosaic-space-horizontal-none)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"../../chunk-Y2A2ULLZ.js";export{a as default};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ButtonProps } from '@jpmorganchase/mosaic-components';
|
|
3
|
+
export interface ToolbarButtonProps extends ButtonProps {
|
|
4
|
+
active?: boolean;
|
|
5
|
+
label?: string;
|
|
6
|
+
disableTooltip?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const ToolbarButton: React.ForwardRefExoticComponent<ToolbarButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"../../chunk-3QIETKQW.js";import"../../chunk-Y2A2ULLZ.js";export{a as ToolbarButton};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._1thn0560:before{content:"";position:absolute;background:inherit;top:6px;right:0;width:1px;height:var(--mosaic-space-vertical-x6)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"../../chunk-4LQ77YZW.js";export{a as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._1thn0560:before{content:"";position:absolute;background:inherit;top:6px;right:0;width:1px;height:var(--mosaic-space-vertical-x6)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"../../chunk-4B2NDAA2.js";import"../../chunk-4LQ77YZW.js";export{a as ToolbarSeparator};
|
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
div[contenteditable]{outline:none}._1q293jk0{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:"toolbar" "editor"}._1q293jk1{grid-area:toolbar;position:sticky;top:44px;z-index:2}._1q293jk3{display:flex;margin-top:var(--mosaic-space-vertical-x3);flex-wrap:wrap;grid-area:editor}._1q293jk4{display:flex;flex-direction:row}._1q293jk5{background-repeat:no-repeat;background-position:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==);cursor:col-resize}.
|
|
1
|
+
div[contenteditable]{outline:none}._1q293jk0{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:"toolbar" "editor"}._1q293jk1{grid-area:toolbar;position:sticky;top:44px;z-index:2}._1q293jk3{display:flex;margin-top:var(--mosaic-space-vertical-x3);flex-wrap:wrap;grid-area:editor}._1q293jk4{display:flex;flex-direction:row}._1q293jk5{background-repeat:no-repeat;background-position:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==);cursor:col-resize}._1qc5rwi0{background:inherit;display:flex;justify-content:center;flex-shrink:0;flex-grow:0;position:relative;overflow:hidden;padding:var(--mosaic-space-horizontal-x1)}._1qc5rwi1{margin-right:auto}._1qc5rwi0._1qc5rwi2{margin-left:auto!important}._1qc5rwi0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x1)}.c37l3h0{width:28px;height:28px;line-height:1;padding:var(--mosaic-space-horizontal-none)}.u64up60{width:14px;font-size:12px}.u64up61{font-weight:var(--mosaic-fontWeight-bold)}.u64up62{font-style:italic}.u64up63{width:22px;height:18px;background-color:inherit!important;display:inline-flex;justify-content:center;align-items:center}.fdaqer0{z-index:10}._195c2ps0{width:var(--mosaic-space-horizontal-x10)}._195c2ps1{position:relative;margin:var(--mosaic-space-horizontal-x2)}._195c2ps2{position:absolute;top:0;width:25px}._195c2ps3{position:absolute;left:0;height:25px}._195c2ps5{display:flex;justify-content:center;align-items:center;padding-top:var(--mosaic-space-vertical-x2)}._195c2ps7{z-index:1600}._195c2ps0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x1)}.trugsj0{min-width:500px}.jmottr0{width:100%}._1cwa3bz0{width:100%}._1lleyna0{overflow:hidden;position:relative;display:flex;align-items:center;padding:var(--mosaic-space-horizontal-x1);height:44px}._1lleyna1>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x2)}._1thn0560:before{content:"";position:absolute;background:inherit;top:6px;right:0;width:1px;height:var(--mosaic-space-vertical-x6)}._16n1zmy0{font-weight:var(--mosaic-fontWeight-bold)}._16n1zmy1{font-style:italic}._16n1zmy2{text-decoration:underline}._16n1zmy3{text-decoration:line-through}._16n1zmy4{text-decoration:underline line-through}._16n1zmy9{font-weight:inherit}._16n1zmyc:first-of-type{font-weight:var(--mosaic-fontWeight-bold)}._1w4kk0j0{padding:var(--mosaic-space-vertical-x2);opacity:var(--mosaic-opacity-light-disabled)}._1w4kk0j1{font-size:var(--mosaic-fontSize-s80);font-style:var(--mosaic-fontWeight-semibold);opacity:1}._1w4kk0j2{opacity:1}._1w4kk0j3{margin-left:var(--mosaic-space-horizontal-x2);margin-right:var(--mosaic-space-horizontal-x2)}.f424jt0{align-items:center}.f424jt0 [role=heading]{padding-left:var(--mosaic-space-horizontal-x2)}._94v2lj0{padding:var(--mosaic-space-vertical-x1);margin-left:var(--mosaic-space-horizontal-x2)}._1q5lqdi0{padding:var(--mosaic-space-horizontal-x3);max-height:100vh;overflow:scroll}._1a2284c0{min-width:100px}._1a2284c0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-none)}[data-mode=light] .m7cgun0,[data-mode=dark] .m7cgun1{outline-color:var(--mosaic-color-light-selectable-inEdit)}[data-mode=light] .m7cgun2,[data-mode=dark] .m7cgun3{outline-color:var(--mosaic-color-dark-selectable-inEdit)}[data-mode=light] .m7cgun4,[data-mode=dark] .m7cgun5{outline-style:solid}[data-mode=light] .m7cgun6,[data-mode=dark] .m7cgun7{outline-style:dashed}[data-mode=light] .m7cgun8,[data-mode=dark] .m7cgun9{outline-width:thin}[data-mode=light] .m7cguna,[data-mode=dark] .m7cgunb{outline-width:medium}[data-mode=light] .m7cgunc,[data-mode=dark] .m7cgund{outline-width:thick}.esx0bg0{height:var(--mosaic-space-vertical-x8)}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as c}from"./chunk-
|
|
1
|
+
import{b as c}from"./chunk-SYL4AGHI.js";import"./chunk-BINIAABY.js";import"./chunk-4B2NDAA2.js";import"./chunk-4LQ77YZW.js";import"./chunk-DLRFTDUZ.js";import"./chunk-UBWAGWSM.js";import"./chunk-KZXCNQER.js";import"./chunk-DXTVYP7D.js";import"./chunk-NFA3MZOC.js";import"./chunk-FNNLNVQZ.js";import"./chunk-6EO5B7QP.js";import"./chunk-R2MEEU32.js";import"./chunk-UWF3FV3R.js";import"./chunk-KQ2ZCDYD.js";import"./chunk-QHE4U3WR.js";import"./chunk-BFF3MNBV.js";import"./chunk-5YCBSSDA.js";import"./chunk-NFSXCTUU.js";import"./chunk-6TM3EYFS.js";import"./chunk-M4ISRNFD.js";import"./chunk-ESJNOEFD.js";import"./chunk-WNTJMWYJ.js";import"./chunk-RT5CJ7T5.js";import"./chunk-G4LBXKDE.js";import"./chunk-YBFKG74H.js";import"./chunk-ROQUYURQ.js";import"./chunk-ESKW4XF6.js";import"./chunk-6YPAVQF4.js";import"./chunk-3FJGHVH5.js";import"./chunk-JQUDHJIQ.js";import{a as d}from"./chunk-ZHZ4E2MI.js";import"./chunk-PC66Q33O.js";import"./chunk-QKOQTH4L.js";import"./chunk-FW7CHFWO.js";import"./chunk-RO6ARCLZ.js";import"./chunk-EMHRWY75.js";import"./chunk-MZJ4JT73.js";import"./chunk-B6MFPF7L.js";import"./chunk-U7COOUR6.js";import"./chunk-WCOTJ6JY.js";import"./chunk-WZYDYWT3.js";import"./chunk-YIFLQ5MW.js";import"./chunk-XP37MJCS.js";import"./chunk-P5OBPOC4.js";import"./chunk-7JRJTNUG.js";import"./chunk-GYUEXLD6.js";import"./chunk-FH2LMMJT.js";import"./chunk-7LK4O57W.js";import"./chunk-3QIETKQW.js";import"./chunk-Y2A2ULLZ.js";import{c as a,f as b}from"./chunk-G57W376H.js";import"./chunk-TSWYSURQ.js";import"./chunk-FKL4ZGDB.js";import"./chunk-Z6W7GDHE.js";import"./chunk-PXUVNH4P.js";import"./chunk-XSZUCLBY.js";import"./chunk-OW5SK4AJ.js";import"./chunk-NXV7KCC5.js";import"./chunk-6X665P47.js";export{c as Editor,d as EditorControls,b as useContentEditor,a as usePageState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.fdaqer0{z-index:10}.
|
|
1
|
+
.fdaqer0{z-index:10}._1qc5rwi0{background:inherit;display:flex;justify-content:center;flex-shrink:0;flex-grow:0;position:relative;overflow:hidden;padding:var(--mosaic-space-horizontal-x1)}._1qc5rwi1{margin-right:auto}._1qc5rwi0._1qc5rwi2{margin-left:auto!important}._1qc5rwi0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x1)}.c37l3h0{width:28px;height:28px;line-height:1;padding:var(--mosaic-space-horizontal-none)}.u64up60{width:14px;font-size:12px}.u64up61{font-weight:var(--mosaic-fontWeight-bold)}.u64up62{font-style:italic}.u64up63{width:22px;height:18px;background-color:inherit!important;display:inline-flex;justify-content:center;align-items:center}.trugsj0{min-width:500px}._1cwa3bz0{width:100%}._1lleyna0{overflow:hidden;position:relative;display:flex;align-items:center;padding:var(--mosaic-space-horizontal-x1);height:44px}._1lleyna1>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x2)}._1a2284c0{min-width:100px}._1a2284c0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-none)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._1a2284c0{min-width:100px}._1a2284c0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-none)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"../chunk-TSWYSURQ.js";export{a as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-EMHRWY75.js";import"../chunk-MZJ4JT73.js";import"../chunk-B6MFPF7L.js";import"../chunk-U7COOUR6.js";import"../chunk-WCOTJ6JY.js";import"../chunk-WZYDYWT3.js";import"../chunk-YIFLQ5MW.js";import"../chunk-XP37MJCS.js";import"../chunk-P5OBPOC4.js";import"../chunk-7JRJTNUG.js";import"../chunk-GYUEXLD6.js";import"../chunk-FH2LMMJT.js";import"../chunk-7LK4O57W.js";import"../chunk-3QIETKQW.js";import"../chunk-Y2A2ULLZ.js";import"../chunk-G57W376H.js";import"../chunk-TSWYSURQ.js";import"../chunk-XSZUCLBY.js";import"../chunk-OW5SK4AJ.js";export{a as FloatingToolbarPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
.c37l3h0{width:28px;height:28px;line-height:1;padding:var(--mosaic-space-horizontal-none)}.trugsj0{min-width:500px}._1cwa3bz0{width:100%}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-WCOTJ6JY.js";import"../chunk-WZYDYWT3.js";import"../chunk-3QIETKQW.js";import"../chunk-Y2A2ULLZ.js";import"../chunk-G57W376H.js";import"../chunk-XSZUCLBY.js";import"../chunk-OW5SK4AJ.js";export{a as INSERT_MARKDOWN_LINK_COMMAND,b as MarkdownLinkPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
div[contenteditable]{outline:none}._1q293jk0{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:"toolbar" "editor"}._1q293jk1{grid-area:toolbar;position:sticky;top:44px;z-index:2}._1q293jk3{display:flex;margin-top:var(--mosaic-space-vertical-x3);flex-wrap:wrap;grid-area:editor}._1q293jk4{display:flex;flex-direction:row}._1q293jk5{background-repeat:no-repeat;background-position:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==);cursor:col-resize}.
|
|
1
|
+
div[contenteditable]{outline:none}._1q293jk0{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:"toolbar" "editor"}._1q293jk1{grid-area:toolbar;position:sticky;top:44px;z-index:2}._1q293jk3{display:flex;margin-top:var(--mosaic-space-vertical-x3);flex-wrap:wrap;grid-area:editor}._1q293jk4{display:flex;flex-direction:row}._1q293jk5{background-repeat:no-repeat;background-position:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==);cursor:col-resize}._1qc5rwi0{background:inherit;display:flex;justify-content:center;flex-shrink:0;flex-grow:0;position:relative;overflow:hidden;padding:var(--mosaic-space-horizontal-x1)}._1qc5rwi1{margin-right:auto}._1qc5rwi0._1qc5rwi2{margin-left:auto!important}._1qc5rwi0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x1)}.c37l3h0{width:28px;height:28px;line-height:1;padding:var(--mosaic-space-horizontal-none)}.u64up60{width:14px;font-size:12px}.u64up61{font-weight:var(--mosaic-fontWeight-bold)}.u64up62{font-style:italic}.u64up63{width:22px;height:18px;background-color:inherit!important;display:inline-flex;justify-content:center;align-items:center}.fdaqer0{z-index:10}._195c2ps0{width:var(--mosaic-space-horizontal-x10)}._195c2ps1{position:relative;margin:var(--mosaic-space-horizontal-x2)}._195c2ps2{position:absolute;top:0;width:25px}._195c2ps3{position:absolute;left:0;height:25px}._195c2ps5{display:flex;justify-content:center;align-items:center;padding-top:var(--mosaic-space-vertical-x2)}._195c2ps7{z-index:1600}._195c2ps0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x1)}.trugsj0{min-width:500px}.jmottr0{width:100%}._1cwa3bz0{width:100%}._1lleyna0{overflow:hidden;position:relative;display:flex;align-items:center;padding:var(--mosaic-space-horizontal-x1);height:44px}._1lleyna1>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-x2)}._1thn0560:before{content:"";position:absolute;background:inherit;top:6px;right:0;width:1px;height:var(--mosaic-space-vertical-x6)}._16n1zmy0{font-weight:var(--mosaic-fontWeight-bold)}._16n1zmy1{font-style:italic}._16n1zmy2{text-decoration:underline}._16n1zmy3{text-decoration:line-through}._16n1zmy4{text-decoration:underline line-through}._16n1zmy9{font-weight:inherit}._16n1zmyc:first-of-type{font-weight:var(--mosaic-fontWeight-bold)}._1w4kk0j0{padding:var(--mosaic-space-vertical-x2);opacity:var(--mosaic-opacity-light-disabled)}._1w4kk0j1{font-size:var(--mosaic-fontSize-s80);font-style:var(--mosaic-fontWeight-semibold);opacity:1}._1w4kk0j2{opacity:1}._1w4kk0j3{margin-left:var(--mosaic-space-horizontal-x2);margin-right:var(--mosaic-space-horizontal-x2)}.f424jt0{align-items:center}.f424jt0 [role=heading]{padding-left:var(--mosaic-space-horizontal-x2)}._94v2lj0{padding:var(--mosaic-space-vertical-x1);margin-left:var(--mosaic-space-horizontal-x2)}._1q5lqdi0{padding:var(--mosaic-space-horizontal-x3);max-height:100vh;overflow:scroll}._1a2284c0{min-width:100px}._1a2284c0>*:not(:first-child){margin-left:var(--mosaic-space-horizontal-none)}[data-mode=light] .m7cgun0,[data-mode=dark] .m7cgun1{outline-color:var(--mosaic-color-light-selectable-inEdit)}[data-mode=light] .m7cgun2,[data-mode=dark] .m7cgun3{outline-color:var(--mosaic-color-dark-selectable-inEdit)}[data-mode=light] .m7cgun4,[data-mode=dark] .m7cgun5{outline-style:solid}[data-mode=light] .m7cgun6,[data-mode=dark] .m7cgun7{outline-style:dashed}[data-mode=light] .m7cgun8,[data-mode=dark] .m7cgun9{outline-width:thin}[data-mode=light] .m7cguna,[data-mode=dark] .m7cgunb{outline-width:medium}[data-mode=light] .m7cgunc,[data-mode=dark] .m7cgund{outline-width:thick}.esx0bg0{height:var(--mosaic-space-vertical-x8)}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
export declare const PreviewPlugin:
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface PreviewPluginProps {
|
|
3
|
+
previewUrl: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const PreviewPlugin: ({ previewUrl }: PreviewPluginProps) => JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-SYL4AGHI.js";import"../chunk-BINIAABY.js";import"../chunk-4B2NDAA2.js";import"../chunk-4LQ77YZW.js";import"../chunk-DLRFTDUZ.js";import"../chunk-UBWAGWSM.js";import"../chunk-KZXCNQER.js";import"../chunk-DXTVYP7D.js";import"../chunk-NFA3MZOC.js";import"../chunk-FNNLNVQZ.js";import"../chunk-6EO5B7QP.js";import"../chunk-R2MEEU32.js";import"../chunk-UWF3FV3R.js";import"../chunk-KQ2ZCDYD.js";import"../chunk-QHE4U3WR.js";import"../chunk-BFF3MNBV.js";import"../chunk-5YCBSSDA.js";import"../chunk-NFSXCTUU.js";import"../chunk-6TM3EYFS.js";import"../chunk-M4ISRNFD.js";import"../chunk-ESJNOEFD.js";import"../chunk-WNTJMWYJ.js";import"../chunk-RT5CJ7T5.js";import"../chunk-G4LBXKDE.js";import"../chunk-YBFKG74H.js";import"../chunk-ROQUYURQ.js";import"../chunk-ESKW4XF6.js";import"../chunk-6YPAVQF4.js";import"../chunk-3FJGHVH5.js";import"../chunk-JQUDHJIQ.js";import"../chunk-ZHZ4E2MI.js";import"../chunk-PC66Q33O.js";import"../chunk-QKOQTH4L.js";import"../chunk-FW7CHFWO.js";import"../chunk-RO6ARCLZ.js";import"../chunk-EMHRWY75.js";import"../chunk-MZJ4JT73.js";import"../chunk-B6MFPF7L.js";import"../chunk-U7COOUR6.js";import"../chunk-WCOTJ6JY.js";import"../chunk-WZYDYWT3.js";import"../chunk-YIFLQ5MW.js";import"../chunk-XP37MJCS.js";import"../chunk-P5OBPOC4.js";import"../chunk-7JRJTNUG.js";import"../chunk-GYUEXLD6.js";import"../chunk-FH2LMMJT.js";import"../chunk-7LK4O57W.js";import"../chunk-3QIETKQW.js";import"../chunk-Y2A2ULLZ.js";import"../chunk-G57W376H.js";import"../chunk-TSWYSURQ.js";import"../chunk-FKL4ZGDB.js";import"../chunk-Z6W7GDHE.js";import"../chunk-PXUVNH4P.js";import"../chunk-XSZUCLBY.js";import"../chunk-OW5SK4AJ.js";import"../chunk-NXV7KCC5.js";import"../chunk-6X665P47.js";export{a as PreviewPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-ROQUYURQ.js";import"../chunk-ESKW4XF6.js";import"../chunk-6YPAVQF4.js";import"../chunk-YIFLQ5MW.js";import"../chunk-XP37MJCS.js";import"../chunk-P5OBPOC4.js";export{a as TableActionMenuPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-M4ISRNFD.js";import"../chunk-ESJNOEFD.js";import"../chunk-WNTJMWYJ.js";import"../chunk-RT5CJ7T5.js";export{a as default};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jpmorganchase/mosaic-content-editor-plugin",
|
|
3
3
|
"description": "Mosaic - In Browser content editing plugin",
|
|
4
|
-
"version": "0.1.0-beta.
|
|
4
|
+
"version": "0.1.0-beta.39",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "",
|
|
7
7
|
"repository": {
|
|
@@ -38,25 +38,26 @@
|
|
|
38
38
|
"typescript": "^4.8.3"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@jpmorganchase/mosaic-components": "^0.1.0-beta.
|
|
42
|
-
"@jpmorganchase/mosaic-theme": "^0.1.0-beta.
|
|
41
|
+
"@jpmorganchase/mosaic-components": "^0.1.0-beta.39",
|
|
42
|
+
"@jpmorganchase/mosaic-theme": "^0.1.0-beta.39",
|
|
43
43
|
"@salt-ds/core": "^1.8.0-rc.0",
|
|
44
44
|
"@salt-ds/icons": "^1.4.0",
|
|
45
45
|
"@salt-ds/lab": "1.0.0-alpha.10",
|
|
46
46
|
"@salt-ds/theme": "^1.5.1",
|
|
47
|
-
"@
|
|
48
|
-
"@lexical/
|
|
49
|
-
"@lexical/
|
|
50
|
-
"@lexical/
|
|
51
|
-
"@lexical/
|
|
52
|
-
"@lexical/
|
|
53
|
-
"@lexical/
|
|
54
|
-
"@lexical/
|
|
55
|
-
"@lexical/
|
|
47
|
+
"@floating-ui/react": "^0.23.0",
|
|
48
|
+
"@lexical/code": "^0.11.1",
|
|
49
|
+
"@lexical/link": "^0.11.1",
|
|
50
|
+
"@lexical/list": "^0.11.1",
|
|
51
|
+
"@lexical/rich-text": "^0.11.1",
|
|
52
|
+
"@lexical/table": "^0.11.1",
|
|
53
|
+
"@lexical/react": "^0.11.1",
|
|
54
|
+
"@lexical/selection": "^0.11.1",
|
|
55
|
+
"@lexical/utils": "^0.11.1",
|
|
56
|
+
"@lexical/markdown": "^0.11.1",
|
|
56
57
|
"@vanilla-extract/css": "^1.6.0",
|
|
57
58
|
"clsx": "^1.2.1",
|
|
58
59
|
"gray-matter": "^4.0.3",
|
|
59
|
-
"lexical": "0.
|
|
60
|
+
"lexical": "^0.11.1",
|
|
60
61
|
"react-split": "^2.0.14",
|
|
61
62
|
"lodash": "^4.17.21",
|
|
62
63
|
"yup": "^0.32.9",
|
package/src/api/save.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export function save(
|
|
2
2
|
user: { sid: string; name: string; email: string },
|
|
3
3
|
route: string,
|
|
4
|
-
markdown: string
|
|
4
|
+
markdown: string,
|
|
5
|
+
persistUrl: string
|
|
5
6
|
) {
|
|
6
|
-
|
|
7
|
-
return fetch('http://localhost:8080/savecontent', {
|
|
7
|
+
return fetch(persistUrl, {
|
|
8
8
|
method: 'POST',
|
|
9
|
-
body: JSON.stringify({ user, route, markdown }),
|
|
9
|
+
body: JSON.stringify({ user, route, markdown, name: 'save' }),
|
|
10
10
|
headers: { Accept: 'application/json', 'Content-Type': 'application/json' }
|
|
11
11
|
});
|
|
12
12
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { globalStyle, style } from '@vanilla-extract/css';
|
|
2
|
+
import { backgroundColor, vars } from '@jpmorganchase/mosaic-theme';
|
|
3
|
+
|
|
4
|
+
const root = style([
|
|
5
|
+
backgroundColor({ variant: 'emphasis' }),
|
|
6
|
+
style({
|
|
7
|
+
overflow: 'hidden',
|
|
8
|
+
position: 'relative',
|
|
9
|
+
display: 'flex',
|
|
10
|
+
alignItems: 'center',
|
|
11
|
+
padding: vars.space.horizontal.x1,
|
|
12
|
+
height: '44px'
|
|
13
|
+
})
|
|
14
|
+
]);
|
|
15
|
+
export default {
|
|
16
|
+
root
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
globalStyle(`${root} > *:not(:first-child)`, {
|
|
20
|
+
marginLeft: vars.space.horizontal.x2
|
|
21
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import classnames from 'clsx';
|
|
3
|
+
|
|
4
|
+
import styles from './BaseToolbar.css';
|
|
5
|
+
|
|
6
|
+
interface BaseToolbarProps {
|
|
7
|
+
className?: string;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const BaseToolbar = ({ className, ...rest }: BaseToolbarProps) => (
|
|
12
|
+
<div className={classnames(className, styles.root)} {...rest} />
|
|
13
|
+
);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { globalStyle, style } from '@vanilla-extract/css';
|
|
2
|
+
import { vars } from '@jpmorganchase/mosaic-theme';
|
|
3
|
+
|
|
4
|
+
const root = style({
|
|
5
|
+
background: 'inherit',
|
|
6
|
+
display: 'flex',
|
|
7
|
+
justifyContent: 'center',
|
|
8
|
+
flexShrink: 0,
|
|
9
|
+
flexGrow: 0,
|
|
10
|
+
position: 'relative',
|
|
11
|
+
overflow: 'hidden',
|
|
12
|
+
padding: vars.space.horizontal.x1
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
alignLeft: style({
|
|
17
|
+
marginRight: 'auto'
|
|
18
|
+
}),
|
|
19
|
+
alignRight: style({
|
|
20
|
+
selectors: {
|
|
21
|
+
[`${root}&`]: {
|
|
22
|
+
marginLeft: 'auto!important'
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}),
|
|
26
|
+
root
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
globalStyle(`${root} > *:not(:first-child)`, {
|
|
30
|
+
marginLeft: vars.space.horizontal.x1
|
|
31
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React, { type ReactNode } from 'react';
|
|
2
|
+
import classnames from 'clsx';
|
|
3
|
+
|
|
4
|
+
import styles from './BaseTooltray.css';
|
|
5
|
+
|
|
6
|
+
type Alignment = 'left' | 'right';
|
|
7
|
+
|
|
8
|
+
interface BaseTooltrayProps {
|
|
9
|
+
className?: string;
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
align?: Alignment;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const BaseTooltray = ({ className, align, ...rest }: BaseTooltrayProps) => (
|
|
15
|
+
<div
|
|
16
|
+
className={classnames(className, styles.root, {
|
|
17
|
+
[styles.alignLeft]: align === 'left',
|
|
18
|
+
[styles.alignRight]: align === 'right'
|
|
19
|
+
})}
|
|
20
|
+
{...rest}
|
|
21
|
+
/>
|
|
22
|
+
);
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
|
|
3
3
|
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
|
|
4
|
+
import LexicalErrorBoundary from '@lexical/react/LexicalErrorBoundary';
|
|
4
5
|
|
|
5
6
|
const ContentEditor = () => (
|
|
6
7
|
<RichTextPlugin
|
|
7
8
|
contentEditable={<ContentEditable />}
|
|
8
9
|
placeholder={<div>Enter some text...</div>}
|
|
10
|
+
ErrorBoundary={LexicalErrorBoundary}
|
|
9
11
|
/>
|
|
10
12
|
);
|
|
11
13
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Dialog as SaltDialog, type DialogProps as SaltDialogProps } from '@salt-ds/lab';
|
|
3
|
+
import { themeClassName } from '@jpmorganchase/mosaic-theme';
|
|
4
|
+
import classnames from 'clsx';
|
|
5
|
+
|
|
6
|
+
import style from './Dialog.css';
|
|
7
|
+
|
|
8
|
+
interface DialogProps extends SaltDialogProps {}
|
|
9
|
+
|
|
10
|
+
export const Dialog = ({ className, ...props }: DialogProps) => (
|
|
11
|
+
<SaltDialog className={classnames(themeClassName, style.root, className)} {...props} />
|
|
12
|
+
);
|
|
@@ -28,7 +28,6 @@ import HorizontalRulePlugin from '../plugins/HorizontalRulePlugin';
|
|
|
28
28
|
import { FloatingToolbarPlugin } from '../plugins/FloatingToolbarPlugin';
|
|
29
29
|
import { TableActionMenuPlugin } from '../plugins/TableActionMenuPlugin';
|
|
30
30
|
import { InsertLinkDialog } from './Toolbar/InsertLink';
|
|
31
|
-
import type { PreviewPluginProps } from '../plugins/PreviewPlugin';
|
|
32
31
|
|
|
33
32
|
function onError(error: Error) {
|
|
34
33
|
console.error(error);
|
|
@@ -47,9 +46,11 @@ interface PreviewComponentProps {
|
|
|
47
46
|
components: any;
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
interface EditorProps extends PreviewComponentProps
|
|
49
|
+
interface EditorProps extends PreviewComponentProps {
|
|
51
50
|
content: string;
|
|
52
51
|
PreviewComponent?: ComponentType<PreviewComponentProps>;
|
|
52
|
+
previewUrl?: string;
|
|
53
|
+
persistUrl?: string;
|
|
53
54
|
user?: any;
|
|
54
55
|
}
|
|
55
56
|
|
|
@@ -60,12 +61,13 @@ const gutter = () => {
|
|
|
60
61
|
};
|
|
61
62
|
|
|
62
63
|
const Editor: FC<EditorProps> = ({
|
|
63
|
-
|
|
64
|
+
components,
|
|
64
65
|
content,
|
|
65
|
-
|
|
66
|
+
persistUrl,
|
|
66
67
|
PreviewComponent,
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
previewUrl,
|
|
69
|
+
source,
|
|
70
|
+
user
|
|
69
71
|
}) => {
|
|
70
72
|
const previewContent = usePreviewContent() || source;
|
|
71
73
|
const { setUser } = useEditorUser();
|
|
@@ -92,7 +94,7 @@ const Editor: FC<EditorProps> = ({
|
|
|
92
94
|
<div className={styles.root} onFocus={handleEditorFocus} onBlur={handleEditorBlur}>
|
|
93
95
|
<div className={styles.toolbarContainer}>
|
|
94
96
|
<Toolbar />
|
|
95
|
-
<PersistDialog meta={meta} />
|
|
97
|
+
<PersistDialog meta={meta} persistUrl={persistUrl} />
|
|
96
98
|
<StatusBanner />
|
|
97
99
|
</div>
|
|
98
100
|
<div className={styles.editorRoot}>
|
|
@@ -128,7 +130,7 @@ const Editor: FC<EditorProps> = ({
|
|
|
128
130
|
<TablePlugin />
|
|
129
131
|
<LinkPlugin />
|
|
130
132
|
<MarkdownShortcutPlugin transformers={transformers} />
|
|
131
|
-
{
|
|
133
|
+
{previewUrl ? <PreviewPlugin previewUrl={previewUrl} /> : null}
|
|
132
134
|
<MarkdownImagePlugin />
|
|
133
135
|
<MarkdownLinkPlugin />
|
|
134
136
|
<LinkEditor />
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { style } from '@vanilla-extract/css';
|
|
2
|
-
import { vars } from '@jpmorganchase/mosaic-theme';
|
|
2
|
+
import { backgroundColor, vars } from '@jpmorganchase/mosaic-theme';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
|
-
root: style({
|
|
6
|
-
backgroundColor: 'inherit',
|
|
7
|
-
width: vars.space.none
|
|
8
|
-
})
|
|
5
|
+
root: style([backgroundColor({ variant: 'regular' }), style({ height: vars.space.vertical.x8 })])
|
|
9
6
|
};
|
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Icon } from '@jpmorganchase/mosaic-components';
|
|
3
|
-
import {
|
|
3
|
+
import { BaseToolbar as Toolbar } from './BaseToolbar/BaseToolbar';
|
|
4
|
+
import { BaseTooltray as Tooltray } from './BaseTooltray/BaseTooltray';
|
|
5
|
+
import { ToolbarButton } from './Toolbar/ToolbarButton';
|
|
4
6
|
|
|
5
7
|
import { default as useContentEditor } from '../store';
|
|
6
8
|
import styles from './EditorControls.css';
|
|
7
9
|
|
|
8
|
-
export
|
|
10
|
+
export interface EditorControlsProps {
|
|
11
|
+
enabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const EditorControls = ({ enabled = false }: EditorControlsProps) => {
|
|
9
15
|
const { pageState, startEditing, stopEditing } = useContentEditor();
|
|
10
16
|
const isEditing = pageState === 'EDIT';
|
|
11
17
|
|
|
12
18
|
const handleClick = () => (!isEditing ? startEditing() : stopEditing());
|
|
13
19
|
|
|
14
|
-
const
|
|
15
|
-
const overflowLabel = !
|
|
20
|
+
const enabledLabel = isEditing ? 'Cancel Editing' : 'Edit Page';
|
|
21
|
+
const overflowLabel = !enabled ? 'Login Required to Edit' : enabledLabel;
|
|
16
22
|
|
|
17
23
|
return (
|
|
18
|
-
<
|
|
24
|
+
<Toolbar aria-label="editor-controls" className={styles.root}>
|
|
19
25
|
<Tooltray aria-label="page editor controls tooltray">
|
|
20
26
|
<ToolbarButton
|
|
21
27
|
aria-label={isEditing ? 'cancel editing' : 'start editing'}
|
|
22
28
|
onClick={handleClick}
|
|
23
|
-
disabled={!
|
|
29
|
+
disabled={!enabled}
|
|
24
30
|
label={overflowLabel}
|
|
25
31
|
>
|
|
26
32
|
<Icon name={isEditing ? 'delete' : 'edit'} />
|
|
27
33
|
</ToolbarButton>
|
|
28
34
|
</Tooltray>
|
|
29
|
-
</
|
|
35
|
+
</Toolbar>
|
|
30
36
|
);
|
|
31
37
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import type
|
|
2
|
+
import { Icon } from '@jpmorganchase/mosaic-components';
|
|
3
|
+
import { ToolbarButton, type ToolbarButtonProps } from '../Toolbar/ToolbarButton';
|
|
4
4
|
|
|
5
|
-
export const EditLinkButton = (props:
|
|
6
|
-
<
|
|
5
|
+
export const EditLinkButton = (props: ToolbarButtonProps) => (
|
|
6
|
+
<ToolbarButton {...props} aria-label="Edit link" disableTooltip variant="regular">
|
|
7
7
|
<Icon name="edit" />
|
|
8
|
-
</
|
|
8
|
+
</ToolbarButton>
|
|
9
9
|
);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { Icon } from '@jpmorganchase/mosaic-components';
|
|
3
3
|
import type { ButtonProps } from '@jpmorganchase/mosaic-components';
|
|
4
4
|
import { StaticInputAdornment } from '@salt-ds/lab';
|
|
5
|
+
import { ToolbarButton } from '../Toolbar/ToolbarButton';
|
|
5
6
|
|
|
6
7
|
interface SaveAdornmentProps {
|
|
7
8
|
onSave: ButtonProps['onClick'];
|
|
@@ -9,8 +10,8 @@ interface SaveAdornmentProps {
|
|
|
9
10
|
|
|
10
11
|
export const SaveAdornment = ({ onSave }: SaveAdornmentProps) => (
|
|
11
12
|
<StaticInputAdornment>
|
|
12
|
-
<
|
|
13
|
+
<ToolbarButton onClick={onSave} aria-label="save link changes" disableTooltip variant="regular">
|
|
13
14
|
<Icon name="save" />
|
|
14
|
-
</
|
|
15
|
+
</ToolbarButton>
|
|
15
16
|
</StaticInputAdornment>
|
|
16
17
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { FC, ReactNode, useEffect, useState } from 'react';
|
|
2
2
|
import classnames from 'clsx';
|
|
3
|
-
import { P2 } from '@jpmorganchase/mosaic-components';
|
|
3
|
+
import { P2, P6 } from '@jpmorganchase/mosaic-components';
|
|
4
4
|
|
|
5
5
|
import styles from './PersistStatus.css';
|
|
6
6
|
|
|
@@ -58,7 +58,12 @@ export const PersistStatus = ({ isRaising, error }: StatusProps) => {
|
|
|
58
58
|
}, [currentStep]);
|
|
59
59
|
|
|
60
60
|
if (error) {
|
|
61
|
-
return
|
|
61
|
+
return (
|
|
62
|
+
<>
|
|
63
|
+
<P2>😢 Sorry something has went wrong. Please try again later.</P2>
|
|
64
|
+
<P6>Error - {error}</P6>
|
|
65
|
+
</>
|
|
66
|
+
);
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
return (
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { globalStyle, style } from '@vanilla-extract/css';
|
|
2
|
+
import { vars } from '@jpmorganchase/mosaic-theme';
|
|
3
|
+
|
|
4
|
+
const title = style({
|
|
5
|
+
alignItems: 'center'
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
title
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
globalStyle(`${title} [role=heading] `, {
|
|
13
|
+
paddingLeft: vars.space.horizontal.x2
|
|
14
|
+
});
|