Add enhanced markdown editing functionality. Update MarkdownInput and MarkdownDisplay components for improved user experience. Refactor NoteInfo component to include content display and enhance layout with collapsible sections.
All checks were successful
farmcontrol/farmcontrol-ui/pipeline/head This commit looks good
11
assets/icons/blockquoteicon.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(0.865066,0,0,0.865066,3,7.501025)">
|
||||||
|
<path d="M3.656,56.641L63.359,56.641C65.406,56.641 67.047,54.906 67.047,52.891C67.047,50.813 65.422,49.125 63.359,49.125L3.656,49.125C1.609,49.125 0,50.859 0,52.891C0,54.875 1.625,56.641 3.656,56.641Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M3.656,40.297L63.359,40.297C65.406,40.297 67.047,38.563 67.047,36.547C67.047,34.453 65.422,32.781 63.359,32.781L3.656,32.781C1.609,32.781 0,34.484 0,36.547C0,38.516 1.625,40.297 3.656,40.297Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M46.469,23.891L63.359,23.938C65.406,23.953 67.047,22.188 67.047,20.172C67.047,18.11 65.422,16.438 63.359,16.422L46.469,16.375C44.422,16.36 42.812,18.094 42.812,20.125C42.812,22.094 44.438,23.891 46.469,23.891Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M46.469,7.516L63.359,7.578C65.406,7.594 67.047,5.844 67.047,3.828C67.047,1.75 65.422,0.078 63.359,0.063L46.469,0C44.422,-0.016 42.812,1.734 42.812,3.766C42.812,5.75 44.438,7.516 46.469,7.516Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M9.047,24.594C13.453,24.594 16.984,21.5 16.984,17.063C16.984,12.828 14.078,9.906 10.219,9.906C7.75,9.906 5.719,11 4.703,13.61L5.406,14.063C5.594,9.063 9.016,5.547 14.219,5.203C15.516,5.109 16.5,4.063 16.5,2.781C16.5,1.25 15.172,0.266 13.453,0.266C6.359,0.266 0.047,6.188 0.047,14.406C0.047,20.594 3.797,24.594 9.047,24.594ZM29.297,24.594C33.672,24.594 37.219,21.5 37.219,17.063C37.219,12.828 34.312,9.906 30.453,9.906C27.984,9.906 25.953,11 24.922,13.61L25.641,14.063C25.812,9.063 29.234,5.531 34.422,5.203C35.734,5.109 36.75,4.063 36.75,2.781C36.75,1.25 35.453,0.266 33.688,0.266C26.609,0.266 20.266,6.188 20.266,14.406C20.266,20.594 24.047,24.594 29.297,24.594Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
7
assets/icons/boldicon.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(1,0,0,1,12.2656,8.9375)">
|
||||||
|
<path d="M6.125,46.125L23.078,46.125C33.078,46.125 39.469,40.859 39.469,32.844C39.469,26.656 34.562,22.031 28.062,21.766L28.062,21.516C33.484,20.797 37.344,16.781 37.344,11.578C37.344,4.391 31.75,0.016 22.484,0.016L6.125,0.016C2.344,0.016 0,2.234 0,6.109L0,40.047C0,43.922 2.344,46.125 6.125,46.125ZM12.953,37.828L12.953,26.062L18.5,26.062C23.469,26.062 26.312,28.125 26.312,31.844C26.312,35.734 23.922,37.828 18.938,37.828L12.953,37.828ZM12.953,18.844L12.953,8.391L18.219,8.391C22.25,8.391 24.672,10.297 24.672,13.531C24.672,16.828 22.047,18.844 17.672,18.844L12.953,18.844Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
12
assets/icons/bulletlisticon.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(0.865066,0,0,0.865066,3,10.731571)">
|
||||||
|
<path d="M21.156,48.391L63.359,48.391C65.406,48.391 67.047,46.656 67.047,44.625C67.047,42.547 65.422,40.875 63.359,40.875L21.156,40.875C19.078,40.875 17.484,42.594 17.484,44.625C17.484,46.609 19.109,48.391 21.156,48.391Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M5.203,49.828C8.078,49.828 10.422,47.484 10.422,44.625C10.422,41.766 8.078,39.422 5.203,39.422C2.344,39.422 0,41.766 0,44.625C0,47.484 2.344,49.828 5.203,49.828Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M21.156,28.672L63.359,28.672C65.406,28.672 67.047,26.938 67.047,24.922C67.047,22.844 65.422,21.156 63.359,21.156L21.156,21.156C19.078,21.156 17.484,22.891 17.484,24.922C17.484,26.906 19.109,28.672 21.156,28.672Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M5.203,30.125C8.078,30.125 10.422,27.797 10.422,24.922C10.422,22.047 8.078,19.719 5.203,19.719C2.344,19.719 0,22.047 0,24.922C0,27.797 2.344,30.125 5.203,30.125Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M21.156,8.969L63.359,8.969C65.406,8.969 67.047,7.234 67.047,5.203C67.047,3.141 65.422,1.453 63.359,1.453L21.156,1.453C19.078,1.453 17.484,3.172 17.484,5.203C17.484,7.203 19.109,8.969 21.156,8.969Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M5.203,10.422C8.078,10.422 10.422,8.078 10.422,5.203C10.422,2.344 8.078,0 5.203,0C2.344,0 0,2.344 0,5.203C0,8.078 2.344,10.422 5.203,10.422Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.8 KiB |
7
assets/icons/italicicon.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(1,0,0,1,14.41405,8.929688)">
|
||||||
|
<path d="M4.047,46.125L24.406,46.125C26.797,46.125 28.438,44.75 28.438,42.391C28.438,40.094 26.859,38.719 24.422,38.719L19.062,38.719L25.797,7.438L31.156,7.438C33.547,7.438 35.172,6.062 35.172,3.719C35.172,1.406 33.594,0.016 31.172,0.016L10.75,0.016C8.328,0.016 6.734,1.406 6.734,3.719C6.734,6.062 8.375,7.438 10.766,7.438L16.125,7.438L9.391,38.719L4.031,38.719C1.594,38.719 0,40.094 0,42.391C0,44.75 1.641,46.125 4.047,46.125Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 979 B |
12
assets/icons/numberedlisticon.svg
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(0.865066,0,0,0.865066,3,8.230968)">
|
||||||
|
<path d="M23.234,51.266L63.359,51.266C65.406,51.266 67.047,49.531 67.047,47.516C67.047,45.422 65.422,43.75 63.359,43.75L23.234,43.75C21.172,43.75 19.562,45.469 19.562,47.516C19.562,49.484 21.188,51.266 23.234,51.266Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M5.922,54.953C10.047,54.953 12.406,53.203 12.406,50.391C12.406,48.562 11.125,47.344 8.859,47.141L8.859,47.031C10.422,46.734 11.797,45.594 11.797,43.688C11.797,41.078 9.203,39.734 5.906,39.734C3.328,39.734 0.391,40.859 0.391,43.172C0.391,44.156 1.094,44.859 2.25,44.859C2.984,44.859 3.344,44.578 3.828,44.125C4.625,43.375 5.203,43.156 5.906,43.156C6.781,43.156 7.484,43.547 7.484,44.422C7.484,45.219 6.812,45.656 5.641,45.656L5.219,45.656C4.297,45.656 3.688,46.172 3.688,47.203C3.688,48.188 4.266,48.734 5.219,48.734L5.672,48.734C6.922,48.734 7.609,49.172 7.625,50.047C7.641,50.812 6.891,51.359 5.922,51.359C4.812,51.359 4,50.672 3.406,50.188C3.016,49.891 2.656,49.609 2,49.609C0.828,49.609 0,50.297 0,51.438C0,53.688 3.094,54.953 5.922,54.953Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M23.234,31.562L63.359,31.562C65.406,31.562 67.047,29.812 67.047,27.797C67.047,25.719 65.422,24.047 63.359,24.047L23.234,24.047C21.172,24.047 19.562,25.766 19.562,27.797C19.562,29.781 21.188,31.562 23.234,31.562Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M2.031,34.797L10.5,34.797C11.531,34.797 12.312,34.141 12.312,33.062C12.312,32 11.547,31.312 10.5,31.312L6.219,31.312L6.219,31.203L8.719,29.234C10.859,27.531 11.875,26.531 11.875,24.5C11.875,21.797 9.562,20.031 5.859,20.031C2.641,20.031 0.344,21.609 0.344,23.703C0.344,24.828 1.078,25.453 2.297,25.453C3.062,25.453 3.594,25.203 4.172,24.484C4.688,23.828 5.172,23.5 5.938,23.5C6.75,23.5 7.359,24.016 7.359,24.844C7.359,25.547 6.953,26.125 5.312,27.438L1.109,30.859C0.406,31.422 0.109,32.062 0.109,32.891C0.109,34 0.859,34.797 2.031,34.797Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M23.234,11.844L63.359,11.844C65.406,11.844 67.047,10.109 67.047,8.094C67.047,6.016 65.422,4.328 63.359,4.328L23.234,4.328C21.172,4.328 19.562,6.047 19.562,8.094C19.562,10.078 21.188,11.844 23.234,11.844Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M7.312,15.234C8.688,15.234 9.656,14.469 9.656,12.766L9.656,2.469C9.656,0.953 8.562,0 6.984,0C5.766,0 4.969,0.406 4.031,1.016L1.812,2.516C1.094,2.984 0.766,3.438 0.766,4.203C0.766,5.172 1.453,5.828 2.281,5.797C2.703,5.781 2.922,5.734 3.516,5.359L4.828,4.469L4.922,4.469L4.922,12.766C4.922,14.469 5.875,15.234 7.312,15.234Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.0 KiB |
8
assets/icons/textformaticon.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(0.774546,0,0,0.774546,1,13.356447)">
|
||||||
|
<path d="M42.516,48.141C45.406,48.141 46.984,46.891 47.812,43.844L58.703,9.766L58.906,9.766L69.609,43.844C70.438,46.891 72,48.141 74.891,48.141C78.016,48.141 80.047,46.266 80.047,43.375C80.047,42.234 79.891,41.312 79.484,40.141L67.109,5.75C65.766,1.859 63.125,0 58.781,0C54.688,0 52.062,1.859 50.719,5.734L38.141,40.531C37.766,41.594 37.594,42.594 37.594,43.5C37.594,46.375 39.469,48.141 42.516,48.141ZM47.891,36.469L69.562,36.469C71.672,36.469 73.391,34.75 73.391,32.641C73.391,30.516 71.672,28.812 69.562,28.812L47.891,28.812C45.766,28.812 44.062,30.516 44.062,32.641C44.062,34.75 45.766,36.469 47.891,36.469Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M4.25,48.141C6.453,48.141 7.766,46.984 8.531,44.219L10.141,39.25L22.188,39.25L23.781,44.312C24.5,47.047 25.812,48.141 28.188,48.141C30.641,48.141 32.391,46.5 32.391,44.109C32.391,43.156 32.188,42.297 31.797,41.203L22.781,16.75C21.531,13.328 19.469,11.766 16.078,11.766C12.875,11.766 10.812,13.344 9.594,16.75L0.609,41.203C0.234,42.203 0,43.281 0,44.109C0,46.625 1.609,48.141 4.25,48.141ZM11.875,32.938L15.797,19.891L16.328,19.891L20.344,32.938L11.875,32.938Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
11
assets/icons/texticon.svg
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(0.862654,0,0,0.862654,3,7.576119)">
|
||||||
|
<rect x="0" y="0" width="67.234" height="56.625" style="fill-opacity:0;"/>
|
||||||
|
<path d="M3.656,56.578L63.359,56.578C65.406,56.578 67.047,54.844 67.047,52.828C67.047,50.75 65.422,49.062 63.359,49.062L3.656,49.062C1.609,49.062 0,50.797 0,52.828C0,54.812 1.625,56.578 3.656,56.578Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M3.656,40.234L63.359,40.234C65.406,40.234 67.047,38.5 67.047,36.484C67.047,34.391 65.422,32.719 63.359,32.719L3.656,32.719C1.609,32.719 0,34.422 0,36.484C0,38.453 1.625,40.234 3.656,40.234Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M3.656,23.875L63.359,23.875C65.406,23.875 67.047,22.125 67.047,20.109C67.047,18.047 65.422,16.359 63.359,16.359L3.656,16.359C1.609,16.359 0,18.078 0,20.109C0,22.094 1.625,23.875 3.656,23.875Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M3.656,7.516L63.359,7.516C65.406,7.516 67.047,5.781 67.047,3.766C67.047,1.688 65.422,0 63.359,0L3.656,0C1.609,0 0,1.734 0,3.766C0,5.75 1.625,7.516 3.656,7.516Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
8
assets/icons/underlineicon.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(1,0,0,1,12.21875,-7.71875)">
|
||||||
|
<path d="M2.859,68.875L36.688,68.875C38.328,68.875 39.562,67.719 39.562,66.109C39.562,64.516 38.328,63.328 36.688,63.328L2.859,63.328C1.234,63.328 0,64.516 0,66.109C0,67.719 1.234,68.875 2.859,68.875Z" style="fill-rule:nonzero;"/>
|
||||||
|
<path d="M19.781,58.359C31.812,58.359 39.562,51.5 39.562,41.203L39.562,15.281C39.562,12.328 37.672,10.562 34.703,10.562C31.766,10.562 29.875,12.328 29.875,15.281L29.875,40.234C29.875,46.328 26.203,50.156 19.781,50.156C13.359,50.156 9.703,46.328 9.703,40.234L9.703,15.281C9.703,12.328 7.781,10.562 4.828,10.562C1.906,10.562 0.016,12.328 0.016,15.281L0.016,41.203C0.016,51.5 7.75,58.359 19.781,58.359Z" style="fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@ -35,6 +35,8 @@
|
|||||||
.ant-picker-input,
|
.ant-picker-input,
|
||||||
.ant-picker-header-view button,
|
.ant-picker-header-view button,
|
||||||
.ant-badge,
|
.ant-badge,
|
||||||
|
.ant-select-dropdown,
|
||||||
|
.ant-splitter,
|
||||||
[class*=' ant-radio'] {
|
[class*=' ant-radio'] {
|
||||||
font-family: 'DM Sans';
|
font-family: 'DM Sans';
|
||||||
}
|
}
|
||||||
@ -168,23 +170,6 @@ code {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.markdown-display > .ant-space-item *:first-child {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-display > .ant-space-item *:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-display > .ant-space-item h1,
|
|
||||||
.markdown-display > .ant-space-item h2,
|
|
||||||
.markdown-display > .ant-space-item h3,
|
|
||||||
.markdown-display > .ant-space-item h4,
|
|
||||||
.markdown-display > .ant-space-item h5,
|
|
||||||
.markdown-display > .ant-space-item h6 {
|
|
||||||
margin-bottom: 0.15em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.iddisplay .ant-popover-inner {
|
.iddisplay .ant-popover-inner {
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
}
|
}
|
||||||
@ -446,3 +431,125 @@ body {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --- Start of src/components/Dashboard/common/MarkdownInput.css --- */
|
||||||
|
.md-editor__content {
|
||||||
|
padding: 24px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: var(--baseText);
|
||||||
|
white-space: pre-wrap;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-editor {
|
||||||
|
color: var(--baseText);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-editor .tiptap {
|
||||||
|
min-height: var(--md-editor-min-height);
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-editor .tiptap p.is-editor-empty:first-child::before {
|
||||||
|
content: 'Enter text here...';
|
||||||
|
color: var(--baseBorderHover);
|
||||||
|
float: left;
|
||||||
|
height: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown pre,
|
||||||
|
.markdown code,
|
||||||
|
.markdown blockquote {
|
||||||
|
background: var(--baseBgSubtle);
|
||||||
|
color: var(--baseTextContrast);
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown pre {
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 12px;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown blockquote {
|
||||||
|
border-left: 3px solid var(--color-primary);
|
||||||
|
margin: 0;
|
||||||
|
padding: 8px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown hr {
|
||||||
|
border: 0;
|
||||||
|
border-top: 1px solid #8484844d;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown *:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown *:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h1,
|
||||||
|
.markdown h2,
|
||||||
|
.markdown h3,
|
||||||
|
.markdown h4,
|
||||||
|
.markdown h5,
|
||||||
|
.markdown h6 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown p {
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 10px 0;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h2 {
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h3 {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h4 {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown ul,
|
||||||
|
.markdown ol {
|
||||||
|
padding-left: 20px;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown li {
|
||||||
|
margin: 10px 0;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-code-editor {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-code-editor .cm-editor {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-code-editor .cm-editor.cm-focused {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-code-editor .cm-editor .cm-gutters {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|||||||
15
package.json
@ -29,6 +29,13 @@
|
|||||||
"@codemirror/theme-one-dark": "^6.1.3",
|
"@codemirror/theme-one-dark": "^6.1.3",
|
||||||
"@simplewebauthn/browser": "^13.1.2",
|
"@simplewebauthn/browser": "^13.1.2",
|
||||||
"@tanstack/react-query": "^5.90.10",
|
"@tanstack/react-query": "^5.90.10",
|
||||||
|
"@tiptap/extension-link": "^3.20.1",
|
||||||
|
"@tiptap/extension-placeholder": "^3.20.1",
|
||||||
|
"@tiptap/extension-underline": "^3.20.1",
|
||||||
|
"@tiptap/markdown": "^3.20.1",
|
||||||
|
"@tiptap/pm": "^3.20.1",
|
||||||
|
"@tiptap/react": "^3.20.1",
|
||||||
|
"@tiptap/starter-kit": "^3.20.1",
|
||||||
"@tsparticles/react": "^3.0.0",
|
"@tsparticles/react": "^3.0.0",
|
||||||
"@tsparticles/slim": "^3.9.1",
|
"@tsparticles/slim": "^3.9.1",
|
||||||
"@uiw/react-codemirror": "^4.25.1",
|
"@uiw/react-codemirror": "^4.25.1",
|
||||||
@ -136,11 +143,15 @@
|
|||||||
"target": [
|
"target": [
|
||||||
{
|
{
|
||||||
"target": "dmg",
|
"target": "dmg",
|
||||||
"arch": ["arm64"]
|
"arch": [
|
||||||
|
"arm64"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"target": "dmg",
|
"target": "dmg",
|
||||||
"arch": ["x64"]
|
"arch": [
|
||||||
|
"x64"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"mergeASARs": true,
|
"mergeASARs": true,
|
||||||
|
|||||||
662
pnpm-lock.yaml
generated
@ -68,6 +68,27 @@ importers:
|
|||||||
'@tanstack/react-query':
|
'@tanstack/react-query':
|
||||||
specifier: ^5.90.10
|
specifier: ^5.90.10
|
||||||
version: 5.90.20(react@19.2.4)
|
version: 5.90.20(react@19.2.4)
|
||||||
|
'@tiptap/extension-link':
|
||||||
|
specifier: ^3.20.1
|
||||||
|
version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/extension-placeholder':
|
||||||
|
specifier: ^3.20.1
|
||||||
|
version: 3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-underline':
|
||||||
|
specifier: ^3.20.1
|
||||||
|
version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/markdown':
|
||||||
|
specifier: ^3.20.1
|
||||||
|
version: 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm':
|
||||||
|
specifier: ^3.20.1
|
||||||
|
version: 3.20.1
|
||||||
|
'@tiptap/react':
|
||||||
|
specifier: ^3.20.1
|
||||||
|
version: 3.20.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
'@tiptap/starter-kit':
|
||||||
|
specifier: ^3.20.1
|
||||||
|
version: 3.20.1
|
||||||
'@tsparticles/react':
|
'@tsparticles/react':
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.0.0(@tsparticles/engine@3.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
version: 3.0.0(@tsparticles/engine@3.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
@ -1109,6 +1130,15 @@ packages:
|
|||||||
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
|
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
|
'@floating-ui/core@1.7.5':
|
||||||
|
resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
|
||||||
|
|
||||||
|
'@floating-ui/dom@1.7.6':
|
||||||
|
resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==}
|
||||||
|
|
||||||
|
'@floating-ui/utils@0.2.11':
|
||||||
|
resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
|
||||||
|
|
||||||
'@humanfs/core@0.19.1':
|
'@humanfs/core@0.19.1':
|
||||||
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
|
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
|
||||||
engines: {node: '>=18.18.0'}
|
engines: {node: '>=18.18.0'}
|
||||||
@ -1438,6 +1468,9 @@ packages:
|
|||||||
react: '>=18.0.0'
|
react: '>=18.0.0'
|
||||||
react-dom: '>=18.0.0'
|
react-dom: '>=18.0.0'
|
||||||
|
|
||||||
|
'@remirror/core-constants@3.0.0':
|
||||||
|
resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==}
|
||||||
|
|
||||||
'@rolldown/pluginutils@1.0.0-beta.53':
|
'@rolldown/pluginutils@1.0.0-beta.53':
|
||||||
resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==}
|
resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==}
|
||||||
|
|
||||||
@ -1678,6 +1711,166 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^18 || ^19
|
react: ^18 || ^19
|
||||||
|
|
||||||
|
'@tiptap/core@3.20.1':
|
||||||
|
resolution: {integrity: sha512-SwkPEWIfaDEZjC8SEIi4kZjqIYUbRgLUHUuQezo5GbphUNC8kM1pi3C3EtoOPtxXrEbY6e4pWEzW54Pcrd+rVA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-blockquote@3.20.1':
|
||||||
|
resolution: {integrity: sha512-WzNXk/63PQI2fav4Ta6P0GmYRyu8Gap1pV3VUqaVK829iJ6Zt1T21xayATHEHWMK27VT1GLPJkx9Ycr2jfDyQw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-bold@3.20.1':
|
||||||
|
resolution: {integrity: sha512-fz++Qv6Rk/Hov0IYG/r7TJ1Y4zWkuGONe0UN5g0KY32NIMg3HeOHicbi4xsNWTm9uAOl3eawWDkezEMrleObMw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-bubble-menu@3.20.1':
|
||||||
|
resolution: {integrity: sha512-XaPvO6aCoWdFnCBus0s88lnj17NR/OopV79i8Qhgz3WMR0vrsL5zsd45l0lZuu9pSvm5VW47SoxakkJiZC1suw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-bullet-list@3.20.1':
|
||||||
|
resolution: {integrity: sha512-mbrlvOZo5OF3vLhp+3fk9KuL/6J/wsN0QxF6ZFRAHzQ9NkJdtdfARcBeBnkWXGN8inB6YxbTGY1/E4lmBkOpOw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/extension-list': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-code-block@3.20.1':
|
||||||
|
resolution: {integrity: sha512-vKejwBq+Nlj4Ybd3qOyDxIQKzYymdNH+8eXkKwGShk2nfLJIxq69DCyGvmuHgipIO1qcYPJ149UNpGN+YGcdmA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-code@3.20.1':
|
||||||
|
resolution: {integrity: sha512-509DHINIA/Gg+eTG7TEkfsS8RUiPLH5xZNyLRT0A1oaoaJmECKfrV6aAm05IdfTyqDqz6LW5pbnX6DdUC4keug==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-document@3.20.1':
|
||||||
|
resolution: {integrity: sha512-9vrqdGmRV7bQCSY3NLgu7UhIwgOCDp4sKqMNsoNRX0aZ021QQMTvBQDPkiRkCf7MNsnWrNNnr52PVnULEn3vFQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-dropcursor@3.20.1':
|
||||||
|
resolution: {integrity: sha512-K18L9FX4znn+ViPSIbTLOGcIaXMx/gLNwAPE8wPLwswbHhQqdiY1zzdBw6drgOc1Hicvebo2dIoUlSXOZsOEcw==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/extensions': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-floating-menu@3.20.1':
|
||||||
|
resolution: {integrity: sha512-BeDC6nfOesIMn5pFuUnkEjOxGv80sOJ8uk1mdt9/3Fkvra8cB9NIYYCVtd6PU8oQFmJ8vFqPrRkUWrG5tbqnOg==}
|
||||||
|
peerDependencies:
|
||||||
|
'@floating-ui/dom': ^1.0.0
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-gapcursor@3.20.1':
|
||||||
|
resolution: {integrity: sha512-kZOtttV6Ai8VUAgEng3h4WKFbtdSNJ6ps7r0cRPY+FctWhVmgNb/JJwwyC+vSilR7nRENAhrA/Cv/RxVlvLw+g==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/extensions': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-hard-break@3.20.1':
|
||||||
|
resolution: {integrity: sha512-9sKpmg/IIdlLXimYWUZ3PplIRcehv4Oc7V1miTqlnAthMzjMqigDkjjgte4JZV67RdnDJTQkRw8TklCAU28Emg==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-heading@3.20.1':
|
||||||
|
resolution: {integrity: sha512-unudyfQP6FxnyWinxvPqe/51DG91J6AaJm666RnAubgYMCgym+33kBftx4j4A6qf+ddWYbD00thMNKOnVLjAEQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-horizontal-rule@3.20.1':
|
||||||
|
resolution: {integrity: sha512-rjFKFXNntdl0jay8oIGFvvykHlpyQTLmrH3Ag2fj3i8yh6MVvqhtaDomYQbw5sxECd5hBkL+T4n2d2DRuVw/QQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-italic@3.20.1':
|
||||||
|
resolution: {integrity: sha512-ZYRX13Kt8tR8JOzSXirH3pRpi8x30o7LHxZY58uXBdUvr3tFzOkh03qbN523+diidSVeHP/aMd/+IrplHRkQug==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-link@3.20.1':
|
||||||
|
resolution: {integrity: sha512-oYTTIgsQMqpkSnJAuAc+UtIKMuI4lv9e1y4LfI1iYm6NkEUHhONppU59smhxHLzb3Ww7YpDffbp5IgDTAiJztA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-list-item@3.20.1':
|
||||||
|
resolution: {integrity: sha512-tzgnyTW82lYJkUnadYbatwkI9dLz/OWRSWuFpQPRje/ItmFMWuQ9c9NDD8qLbXPdEYnvrgSAA+ipCD/1G0qA0Q==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/extension-list': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-list-keymap@3.20.1':
|
||||||
|
resolution: {integrity: sha512-Dr0xsQKx0XPOgDg7xqoWwfv7FFwZ3WeF3eOjqh3rDXlNHMj1v+UW5cj1HLphrsAZHTrVTn2C+VWPJkMZrSbpvQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/extension-list': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-list@3.20.1':
|
||||||
|
resolution: {integrity: sha512-euBRAn0mkV7R2VEE+AuOt3R0j9RHEMFXamPFmtvTo8IInxDClusrm6mJoDjS8gCGAXsQCRiAe1SCQBPgGbOOwg==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-ordered-list@3.20.1':
|
||||||
|
resolution: {integrity: sha512-Y+3Ad7OwAdagqdYwCnbqf7/to5ypD4NnUNHA0TXRCs7cAHRA8AdgPoIcGFpaaSpV86oosNU3yfeJouYeroffog==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/extension-list': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-paragraph@3.20.1':
|
||||||
|
resolution: {integrity: sha512-QFrAtXNyv7JSnomMQc1nx5AnG9mMznfbYJAbdOQYVdbLtAzTfiTuNPNbQrufy5ZGtGaHxDCoaygu2QEfzaKG+Q==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-placeholder@3.20.1':
|
||||||
|
resolution: {integrity: sha512-k+jfbCugYGuIFBdojukgEopGazIMOgHrw46FnyN2X/6ICOIjQP2rh2ObslrsUOsJYoEevxCsNF9hZl1HvWX66g==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/extensions': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-strike@3.20.1':
|
||||||
|
resolution: {integrity: sha512-EYgyma10lpsY+rwbVQL9u+gA7hBlKLSMFH7Zgd37FSxukOjr+HE8iKPQQ+SwbGejyDsPlLT8Z5Jnuxo5Ng90Pg==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-text@3.20.1':
|
||||||
|
resolution: {integrity: sha512-7PlIbYW8UenV6NPOXHmv8IcmPGlGx6HFq66RmkJAOJRPXPkTLAiX0N8rQtzUJ6jDEHqoJpaHFEHJw0xzW1yF+A==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-underline@3.20.1':
|
||||||
|
resolution: {integrity: sha512-fmHvDKzwCgnZUwRreq8tYkb1YyEwgzZ6QQkAQ0CsCRtvRMqzerr3Duz0Als4i8voZTuGDEL3VR6nAJbLAb/wPg==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extensions@3.20.1':
|
||||||
|
resolution: {integrity: sha512-JRc/v+OBH0qLTdvQ7HvHWTxGJH73QOf1MC0R8NhOX2QnAbg2mPFv1h+FjGa2gfLGuCXBdWQomjekWkUKbC4e5A==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/markdown@3.20.1':
|
||||||
|
resolution: {integrity: sha512-dNrtP7kmabDomgjv9G/6+JSFL6WraPaFbmKh1eHSYKdDGvIwBfJnVPTV2VS3bP1OuYJEDJN/2ydtiCHyOTrQsQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
|
||||||
|
'@tiptap/pm@3.20.1':
|
||||||
|
resolution: {integrity: sha512-6kCiGLvpES4AxcEuOhb7HR7/xIeJWMjZlb6J7e8zpiIh5BoQc7NoRdctsnmFEjZvC19bIasccshHQ7H2zchWqw==}
|
||||||
|
|
||||||
|
'@tiptap/react@3.20.1':
|
||||||
|
resolution: {integrity: sha512-UH1NpVpCaZBGB3Yr5N6aTS+rsCMDl9wHfrt/w+6+Gz4KHFZ2OILA82hELxZzhNc1Lmjz8vgCArKcsYql9gbzJA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@tiptap/core': ^3.20.1
|
||||||
|
'@tiptap/pm': ^3.20.1
|
||||||
|
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
'@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
react: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
||||||
|
'@tiptap/starter-kit@3.20.1':
|
||||||
|
resolution: {integrity: sha512-opqWxL/4OTEiqmVC0wsU4o3JhAf6LycJ2G/gRIZVAIFLljI9uHfpPMTFGxZ5w9IVVJaP5PJysfwW/635kKqkrw==}
|
||||||
|
|
||||||
'@trysound/sax@0.2.0':
|
'@trysound/sax@0.2.0':
|
||||||
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
@ -1941,9 +2134,18 @@ packages:
|
|||||||
'@types/keyv@3.1.4':
|
'@types/keyv@3.1.4':
|
||||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||||
|
|
||||||
|
'@types/linkify-it@5.0.0':
|
||||||
|
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
|
||||||
|
|
||||||
|
'@types/markdown-it@14.1.2':
|
||||||
|
resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
|
||||||
|
|
||||||
'@types/mdast@4.0.4':
|
'@types/mdast@4.0.4':
|
||||||
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
|
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
|
||||||
|
|
||||||
|
'@types/mdurl@2.0.0':
|
||||||
|
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
|
||||||
|
|
||||||
'@types/ms@2.1.0':
|
'@types/ms@2.1.0':
|
||||||
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
||||||
|
|
||||||
@ -1959,6 +2161,11 @@ packages:
|
|||||||
'@types/plist@3.0.5':
|
'@types/plist@3.0.5':
|
||||||
resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==}
|
resolution: {integrity: sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA==}
|
||||||
|
|
||||||
|
'@types/react-dom@19.2.3':
|
||||||
|
resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@types/react': ^19.2.0
|
||||||
|
|
||||||
'@types/react@19.2.10':
|
'@types/react@19.2.10':
|
||||||
resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==}
|
resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==}
|
||||||
|
|
||||||
@ -1974,6 +2181,9 @@ packages:
|
|||||||
'@types/unist@3.0.3':
|
'@types/unist@3.0.3':
|
||||||
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
|
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
|
||||||
|
|
||||||
|
'@types/use-sync-external-store@0.0.6':
|
||||||
|
resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
|
||||||
|
|
||||||
'@types/verror@1.10.11':
|
'@types/verror@1.10.11':
|
||||||
resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==}
|
resolution: {integrity: sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg==}
|
||||||
|
|
||||||
@ -3384,6 +3594,10 @@ packages:
|
|||||||
fast-diff@1.3.0:
|
fast-diff@1.3.0:
|
||||||
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
|
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
|
||||||
|
|
||||||
|
fast-equals@5.4.0:
|
||||||
|
resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
|
||||||
|
engines: {node: '>=6.0.0'}
|
||||||
|
|
||||||
fast-glob@3.3.3:
|
fast-glob@3.3.3:
|
||||||
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
|
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
|
||||||
engines: {node: '>=8.6.0'}
|
engines: {node: '>=8.6.0'}
|
||||||
@ -4093,6 +4307,12 @@ packages:
|
|||||||
lines-and-columns@1.2.4:
|
lines-and-columns@1.2.4:
|
||||||
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
|
||||||
|
|
||||||
|
linkify-it@5.0.0:
|
||||||
|
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
|
||||||
|
|
||||||
|
linkifyjs@4.3.2:
|
||||||
|
resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==}
|
||||||
|
|
||||||
load-json-file@2.0.0:
|
load-json-file@2.0.0:
|
||||||
resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==}
|
resolution: {integrity: sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@ -4176,9 +4396,18 @@ packages:
|
|||||||
resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==}
|
resolution: {integrity: sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==}
|
||||||
engines: {node: ^18.17.0 || >=20.5.0}
|
engines: {node: ^18.17.0 || >=20.5.0}
|
||||||
|
|
||||||
|
markdown-it@14.1.1:
|
||||||
|
resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
markdown-table@3.0.4:
|
markdown-table@3.0.4:
|
||||||
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
|
resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
|
||||||
|
|
||||||
|
marked@17.0.4:
|
||||||
|
resolution: {integrity: sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==}
|
||||||
|
engines: {node: '>= 20'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
matcher@3.0.0:
|
matcher@3.0.0:
|
||||||
resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==}
|
resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@ -4244,6 +4473,9 @@ packages:
|
|||||||
mdn-data@2.12.2:
|
mdn-data@2.12.2:
|
||||||
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
|
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
|
||||||
|
|
||||||
|
mdurl@2.0.0:
|
||||||
|
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
|
||||||
|
|
||||||
media-typer@1.1.0:
|
media-typer@1.1.0:
|
||||||
resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
|
resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
@ -4618,6 +4850,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
|
resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
|
orderedmap@2.1.1:
|
||||||
|
resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
|
||||||
|
|
||||||
own-keys@1.0.1:
|
own-keys@1.0.1:
|
||||||
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
|
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@ -4853,6 +5088,64 @@ packages:
|
|||||||
property-information@7.1.0:
|
property-information@7.1.0:
|
||||||
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
|
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
|
||||||
|
|
||||||
|
prosemirror-changeset@2.4.0:
|
||||||
|
resolution: {integrity: sha512-LvqH2v7Q2SF6yxatuPP2e8vSUKS/L+xAU7dPDC4RMyHMhZoGDfBC74mYuyYF4gLqOEG758wajtyhNnsTkuhvng==}
|
||||||
|
|
||||||
|
prosemirror-collab@1.3.1:
|
||||||
|
resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
|
||||||
|
|
||||||
|
prosemirror-commands@1.7.1:
|
||||||
|
resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
|
||||||
|
|
||||||
|
prosemirror-dropcursor@1.8.2:
|
||||||
|
resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
|
||||||
|
|
||||||
|
prosemirror-gapcursor@1.4.0:
|
||||||
|
resolution: {integrity: sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==}
|
||||||
|
|
||||||
|
prosemirror-history@1.5.0:
|
||||||
|
resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==}
|
||||||
|
|
||||||
|
prosemirror-inputrules@1.5.1:
|
||||||
|
resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==}
|
||||||
|
|
||||||
|
prosemirror-keymap@1.2.3:
|
||||||
|
resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
|
||||||
|
|
||||||
|
prosemirror-markdown@1.13.4:
|
||||||
|
resolution: {integrity: sha512-D98dm4cQ3Hs6EmjK500TdAOew4Z03EV71ajEFiWra3Upr7diytJsjF4mPV2dW+eK5uNectiRj0xFxYI9NLXDbw==}
|
||||||
|
|
||||||
|
prosemirror-menu@1.3.0:
|
||||||
|
resolution: {integrity: sha512-TImyPXCHPcDsSka2/lwJ6WjTASr4re/qWq1yoTTuLOqfXucwF6VcRa2LWCkM/EyTD1UO3CUwiH8qURJoWJRxwg==}
|
||||||
|
|
||||||
|
prosemirror-model@1.25.4:
|
||||||
|
resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==}
|
||||||
|
|
||||||
|
prosemirror-schema-basic@1.2.4:
|
||||||
|
resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==}
|
||||||
|
|
||||||
|
prosemirror-schema-list@1.5.1:
|
||||||
|
resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
|
||||||
|
|
||||||
|
prosemirror-state@1.4.4:
|
||||||
|
resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==}
|
||||||
|
|
||||||
|
prosemirror-tables@1.8.5:
|
||||||
|
resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==}
|
||||||
|
|
||||||
|
prosemirror-trailing-node@3.0.0:
|
||||||
|
resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==}
|
||||||
|
peerDependencies:
|
||||||
|
prosemirror-model: ^1.22.1
|
||||||
|
prosemirror-state: ^1.4.2
|
||||||
|
prosemirror-view: ^1.33.8
|
||||||
|
|
||||||
|
prosemirror-transform@1.11.0:
|
||||||
|
resolution: {integrity: sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==}
|
||||||
|
|
||||||
|
prosemirror-view@1.41.6:
|
||||||
|
resolution: {integrity: sha512-mxpcDG4hNQa/CPtzxjdlir5bJFDlm0/x5nGBbStB2BWX+XOQ9M8ekEG+ojqB5BcVu2Rc80/jssCMZzSstJuSYg==}
|
||||||
|
|
||||||
proxy-addr@2.0.7:
|
proxy-addr@2.0.7:
|
||||||
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
@ -4863,6 +5156,10 @@ packages:
|
|||||||
pump@3.0.3:
|
pump@3.0.3:
|
||||||
resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
|
resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
|
||||||
|
|
||||||
|
punycode.js@2.3.1:
|
||||||
|
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
punycode@2.3.1:
|
punycode@2.3.1:
|
||||||
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@ -5326,6 +5623,9 @@ packages:
|
|||||||
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
rope-sequence@1.3.4:
|
||||||
|
resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
|
||||||
|
|
||||||
router@2.2.0:
|
router@2.2.0:
|
||||||
resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
|
resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
|
||||||
engines: {node: '>= 18'}
|
engines: {node: '>= 18'}
|
||||||
@ -5904,6 +6204,9 @@ packages:
|
|||||||
engines: {node: '>=14.17'}
|
engines: {node: '>=14.17'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
uc.micro@2.1.0:
|
||||||
|
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
|
||||||
|
|
||||||
ufo@1.6.3:
|
ufo@1.6.3:
|
||||||
resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==}
|
resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==}
|
||||||
|
|
||||||
@ -5979,6 +6282,11 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>= 16.x'
|
react: '>= 16.x'
|
||||||
|
|
||||||
|
use-sync-external-store@1.6.0:
|
||||||
|
resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
||||||
utf8-byte-length@1.0.5:
|
utf8-byte-length@1.0.5:
|
||||||
resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==}
|
resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==}
|
||||||
|
|
||||||
@ -7382,6 +7690,20 @@ snapshots:
|
|||||||
|
|
||||||
'@fastify/busboy@2.1.1': {}
|
'@fastify/busboy@2.1.1': {}
|
||||||
|
|
||||||
|
'@floating-ui/core@1.7.5':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/utils': 0.2.11
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@floating-ui/dom@1.7.6':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/core': 1.7.5
|
||||||
|
'@floating-ui/utils': 0.2.11
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@floating-ui/utils@0.2.11':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@humanfs/core@0.19.1': {}
|
'@humanfs/core@0.19.1': {}
|
||||||
|
|
||||||
'@humanfs/node@0.16.7':
|
'@humanfs/node@0.16.7':
|
||||||
@ -7745,6 +8067,8 @@ snapshots:
|
|||||||
react-dom: 19.2.4(react@19.2.4)
|
react-dom: 19.2.4(react@19.2.4)
|
||||||
react-is: 18.3.1
|
react-is: 18.3.1
|
||||||
|
|
||||||
|
'@remirror/core-constants@3.0.0': {}
|
||||||
|
|
||||||
'@rolldown/pluginutils@1.0.0-beta.53': {}
|
'@rolldown/pluginutils@1.0.0-beta.53': {}
|
||||||
|
|
||||||
'@rollup/pluginutils@4.2.1':
|
'@rollup/pluginutils@4.2.1':
|
||||||
@ -7931,6 +8255,193 @@ snapshots:
|
|||||||
'@tanstack/query-core': 5.90.20
|
'@tanstack/query-core': 5.90.20
|
||||||
react: 19.2.4
|
react: 19.2.4
|
||||||
|
|
||||||
|
'@tiptap/core@3.20.1(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-blockquote@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-bold@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-bubble-menu@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/dom': 1.7.6
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@tiptap/extension-bullet-list@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-code-block@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-code@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-document@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-dropcursor@3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-floating-menu@3.20.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/dom': 1.7.6
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@tiptap/extension-gapcursor@3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-hard-break@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-heading@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-horizontal-rule@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-italic@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-link@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
linkifyjs: 4.3.2
|
||||||
|
|
||||||
|
'@tiptap/extension-list-item@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-list-keymap@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
|
||||||
|
'@tiptap/extension-ordered-list@3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-paragraph@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-placeholder@3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-strike@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-text@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extension-underline@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
|
||||||
|
'@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
|
||||||
|
'@tiptap/markdown@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
marked: 17.0.4
|
||||||
|
|
||||||
|
'@tiptap/pm@3.20.1':
|
||||||
|
dependencies:
|
||||||
|
prosemirror-changeset: 2.4.0
|
||||||
|
prosemirror-collab: 1.3.1
|
||||||
|
prosemirror-commands: 1.7.1
|
||||||
|
prosemirror-dropcursor: 1.8.2
|
||||||
|
prosemirror-gapcursor: 1.4.0
|
||||||
|
prosemirror-history: 1.5.0
|
||||||
|
prosemirror-inputrules: 1.5.1
|
||||||
|
prosemirror-keymap: 1.2.3
|
||||||
|
prosemirror-markdown: 1.13.4
|
||||||
|
prosemirror-menu: 1.3.0
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-schema-basic: 1.2.4
|
||||||
|
prosemirror-schema-list: 1.5.1
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-tables: 1.8.5
|
||||||
|
prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.6)
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
prosemirror-view: 1.41.6
|
||||||
|
|
||||||
|
'@tiptap/react@3.20.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
'@types/react': 19.2.10
|
||||||
|
'@types/react-dom': 19.2.3(@types/react@19.2.10)
|
||||||
|
'@types/use-sync-external-store': 0.0.6
|
||||||
|
fast-equals: 5.4.0
|
||||||
|
react: 19.2.4
|
||||||
|
react-dom: 19.2.4(react@19.2.4)
|
||||||
|
use-sync-external-store: 1.6.0(react@19.2.4)
|
||||||
|
optionalDependencies:
|
||||||
|
'@tiptap/extension-bubble-menu': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/extension-floating-menu': 3.20.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@floating-ui/dom'
|
||||||
|
|
||||||
|
'@tiptap/starter-kit@3.20.1':
|
||||||
|
dependencies:
|
||||||
|
'@tiptap/core': 3.20.1(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/extension-blockquote': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-bold': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-bullet-list': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-code': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-code-block': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/extension-document': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-dropcursor': 3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-gapcursor': 3.20.1(@tiptap/extensions@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-hard-break': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-heading': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-horizontal-rule': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/extension-italic': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-link': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/extension-list': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/extension-list-item': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-list-keymap': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-ordered-list': 3.20.1(@tiptap/extension-list@3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-paragraph': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-strike': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-text': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extension-underline': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))
|
||||||
|
'@tiptap/extensions': 3.20.1(@tiptap/core@3.20.1(@tiptap/pm@3.20.1))(@tiptap/pm@3.20.1)
|
||||||
|
'@tiptap/pm': 3.20.1
|
||||||
|
|
||||||
'@trysound/sax@0.2.0': {}
|
'@trysound/sax@0.2.0': {}
|
||||||
|
|
||||||
'@tsparticles/basic@3.9.1':
|
'@tsparticles/basic@3.9.1':
|
||||||
@ -8282,10 +8793,19 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 22.19.7
|
'@types/node': 22.19.7
|
||||||
|
|
||||||
|
'@types/linkify-it@5.0.0': {}
|
||||||
|
|
||||||
|
'@types/markdown-it@14.1.2':
|
||||||
|
dependencies:
|
||||||
|
'@types/linkify-it': 5.0.0
|
||||||
|
'@types/mdurl': 2.0.0
|
||||||
|
|
||||||
'@types/mdast@4.0.4':
|
'@types/mdast@4.0.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
|
||||||
|
'@types/mdurl@2.0.0': {}
|
||||||
|
|
||||||
'@types/ms@2.1.0': {}
|
'@types/ms@2.1.0': {}
|
||||||
|
|
||||||
'@types/node@22.19.7':
|
'@types/node@22.19.7':
|
||||||
@ -8304,6 +8824,10 @@ snapshots:
|
|||||||
xmlbuilder: 15.1.1
|
xmlbuilder: 15.1.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@types/react-dom@19.2.3(@types/react@19.2.10)':
|
||||||
|
dependencies:
|
||||||
|
'@types/react': 19.2.10
|
||||||
|
|
||||||
'@types/react@19.2.10':
|
'@types/react@19.2.10':
|
||||||
dependencies:
|
dependencies:
|
||||||
csstype: 3.2.3
|
csstype: 3.2.3
|
||||||
@ -8318,6 +8842,8 @@ snapshots:
|
|||||||
|
|
||||||
'@types/unist@3.0.3': {}
|
'@types/unist@3.0.3': {}
|
||||||
|
|
||||||
|
'@types/use-sync-external-store@0.0.6': {}
|
||||||
|
|
||||||
'@types/verror@1.10.11':
|
'@types/verror@1.10.11':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@ -10194,6 +10720,8 @@ snapshots:
|
|||||||
|
|
||||||
fast-diff@1.3.0: {}
|
fast-diff@1.3.0: {}
|
||||||
|
|
||||||
|
fast-equals@5.4.0: {}
|
||||||
|
|
||||||
fast-glob@3.3.3:
|
fast-glob@3.3.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nodelib/fs.stat': 2.0.5
|
'@nodelib/fs.stat': 2.0.5
|
||||||
@ -10939,6 +11467,12 @@ snapshots:
|
|||||||
|
|
||||||
lines-and-columns@1.2.4: {}
|
lines-and-columns@1.2.4: {}
|
||||||
|
|
||||||
|
linkify-it@5.0.0:
|
||||||
|
dependencies:
|
||||||
|
uc.micro: 2.1.0
|
||||||
|
|
||||||
|
linkifyjs@4.3.2: {}
|
||||||
|
|
||||||
load-json-file@2.0.0:
|
load-json-file@2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
graceful-fs: 4.2.11
|
graceful-fs: 4.2.11
|
||||||
@ -11038,8 +11572,19 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
markdown-it@14.1.1:
|
||||||
|
dependencies:
|
||||||
|
argparse: 2.0.1
|
||||||
|
entities: 4.5.0
|
||||||
|
linkify-it: 5.0.0
|
||||||
|
mdurl: 2.0.0
|
||||||
|
punycode.js: 2.3.1
|
||||||
|
uc.micro: 2.1.0
|
||||||
|
|
||||||
markdown-table@3.0.4: {}
|
markdown-table@3.0.4: {}
|
||||||
|
|
||||||
|
marked@17.0.4: {}
|
||||||
|
|
||||||
matcher@3.0.0:
|
matcher@3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
escape-string-regexp: 4.0.0
|
escape-string-regexp: 4.0.0
|
||||||
@ -11210,6 +11755,8 @@ snapshots:
|
|||||||
|
|
||||||
mdn-data@2.12.2: {}
|
mdn-data@2.12.2: {}
|
||||||
|
|
||||||
|
mdurl@2.0.0: {}
|
||||||
|
|
||||||
media-typer@1.1.0: {}
|
media-typer@1.1.0: {}
|
||||||
|
|
||||||
merge-descriptors@2.0.0: {}
|
merge-descriptors@2.0.0: {}
|
||||||
@ -11711,6 +12258,8 @@ snapshots:
|
|||||||
strip-ansi: 6.0.1
|
strip-ansi: 6.0.1
|
||||||
wcwidth: 1.0.1
|
wcwidth: 1.0.1
|
||||||
|
|
||||||
|
orderedmap@2.1.1: {}
|
||||||
|
|
||||||
own-keys@1.0.1:
|
own-keys@1.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
get-intrinsic: 1.3.0
|
get-intrinsic: 1.3.0
|
||||||
@ -11938,6 +12487,109 @@ snapshots:
|
|||||||
|
|
||||||
property-information@7.1.0: {}
|
property-information@7.1.0: {}
|
||||||
|
|
||||||
|
prosemirror-changeset@2.4.0:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
|
||||||
|
prosemirror-collab@1.3.1:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
|
||||||
|
prosemirror-commands@1.7.1:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
|
||||||
|
prosemirror-dropcursor@1.8.2:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
prosemirror-view: 1.41.6
|
||||||
|
|
||||||
|
prosemirror-gapcursor@1.4.0:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-keymap: 1.2.3
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-view: 1.41.6
|
||||||
|
|
||||||
|
prosemirror-history@1.5.0:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
prosemirror-view: 1.41.6
|
||||||
|
rope-sequence: 1.3.4
|
||||||
|
|
||||||
|
prosemirror-inputrules@1.5.1:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
|
||||||
|
prosemirror-keymap@1.2.3:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
w3c-keyname: 2.2.8
|
||||||
|
|
||||||
|
prosemirror-markdown@1.13.4:
|
||||||
|
dependencies:
|
||||||
|
'@types/markdown-it': 14.1.2
|
||||||
|
markdown-it: 14.1.1
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
|
||||||
|
prosemirror-menu@1.3.0:
|
||||||
|
dependencies:
|
||||||
|
crelt: 1.0.6
|
||||||
|
prosemirror-commands: 1.7.1
|
||||||
|
prosemirror-history: 1.5.0
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
|
||||||
|
prosemirror-model@1.25.4:
|
||||||
|
dependencies:
|
||||||
|
orderedmap: 2.1.1
|
||||||
|
|
||||||
|
prosemirror-schema-basic@1.2.4:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
|
||||||
|
prosemirror-schema-list@1.5.1:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
|
||||||
|
prosemirror-state@1.4.4:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
prosemirror-view: 1.41.6
|
||||||
|
|
||||||
|
prosemirror-tables@1.8.5:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-keymap: 1.2.3
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
prosemirror-view: 1.41.6
|
||||||
|
|
||||||
|
prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.6):
|
||||||
|
dependencies:
|
||||||
|
'@remirror/core-constants': 3.0.0
|
||||||
|
escape-string-regexp: 4.0.0
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-view: 1.41.6
|
||||||
|
|
||||||
|
prosemirror-transform@1.11.0:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
|
||||||
|
prosemirror-view@1.41.6:
|
||||||
|
dependencies:
|
||||||
|
prosemirror-model: 1.25.4
|
||||||
|
prosemirror-state: 1.4.4
|
||||||
|
prosemirror-transform: 1.11.0
|
||||||
|
|
||||||
proxy-addr@2.0.7:
|
proxy-addr@2.0.7:
|
||||||
dependencies:
|
dependencies:
|
||||||
forwarded: 0.2.0
|
forwarded: 0.2.0
|
||||||
@ -11950,6 +12602,8 @@ snapshots:
|
|||||||
end-of-stream: 1.4.5
|
end-of-stream: 1.4.5
|
||||||
once: 1.4.0
|
once: 1.4.0
|
||||||
|
|
||||||
|
punycode.js@2.3.1: {}
|
||||||
|
|
||||||
punycode@2.3.1: {}
|
punycode@2.3.1: {}
|
||||||
|
|
||||||
qs@6.14.1:
|
qs@6.14.1:
|
||||||
@ -12567,6 +13221,8 @@ snapshots:
|
|||||||
'@rollup/rollup-win32-x64-msvc': 4.57.1
|
'@rollup/rollup-win32-x64-msvc': 4.57.1
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
|
rope-sequence@1.3.4: {}
|
||||||
|
|
||||||
router@2.2.0:
|
router@2.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
@ -13307,6 +13963,8 @@ snapshots:
|
|||||||
|
|
||||||
typescript@5.9.3: {}
|
typescript@5.9.3: {}
|
||||||
|
|
||||||
|
uc.micro@2.1.0: {}
|
||||||
|
|
||||||
ufo@1.6.3: {}
|
ufo@1.6.3: {}
|
||||||
|
|
||||||
unbox-primitive@1.1.0:
|
unbox-primitive@1.1.0:
|
||||||
@ -13398,6 +14056,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
react: 19.2.4
|
react: 19.2.4
|
||||||
|
|
||||||
|
use-sync-external-store@1.6.0(react@19.2.4):
|
||||||
|
dependencies:
|
||||||
|
react: 19.2.4
|
||||||
|
|
||||||
utf8-byte-length@1.0.5: {}
|
utf8-byte-length@1.0.5: {}
|
||||||
|
|
||||||
util-deprecate@1.0.2: {}
|
util-deprecate@1.0.2: {}
|
||||||
|
|||||||
@ -1,18 +1,21 @@
|
|||||||
import { useRef, useState } from 'react'
|
import { useRef, useState } from 'react'
|
||||||
import { useLocation } from 'react-router-dom'
|
import { useLocation } from 'react-router-dom'
|
||||||
import { Space, Flex, Card } from 'antd'
|
import { Space, Flex, Card } from 'antd'
|
||||||
|
import { LoadingOutlined } from '@ant-design/icons'
|
||||||
import loglevel from 'loglevel'
|
import loglevel from 'loglevel'
|
||||||
import config from '../../../../config'
|
import config from '../../../../config.js'
|
||||||
import useCollapseState from '../../hooks/useCollapseState'
|
import useCollapseState from '../../hooks/useCollapseState.jsx'
|
||||||
import NotesPanel from '../../common/NotesPanel'
|
import NotesPanel from '../../common/NotesPanel.jsx'
|
||||||
import InfoCollapse from '../../common/InfoCollapse'
|
import InfoCollapse from '../../common/InfoCollapse.jsx'
|
||||||
import ObjectInfo from '../../common/ObjectInfo'
|
import ObjectInfo from '../../common/ObjectInfo.jsx'
|
||||||
import ViewButton from '../../common/ViewButton'
|
import ObjectProperty from '../../common/ObjectProperty.jsx'
|
||||||
|
import ViewButton from '../../common/ViewButton.jsx'
|
||||||
import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx'
|
import InfoCircleIcon from '../../../Icons/InfoCircleIcon.jsx'
|
||||||
|
import TextIcon from '../../../Icons/TextIcon.jsx'
|
||||||
import NoteIcon from '../../../Icons/NoteIcon.jsx'
|
import NoteIcon from '../../../Icons/NoteIcon.jsx'
|
||||||
import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx'
|
import AuditLogIcon from '../../../Icons/AuditLogIcon.jsx'
|
||||||
import ObjectForm from '../../common/ObjectForm'
|
import ObjectForm from '../../common/ObjectForm.jsx'
|
||||||
import EditButtons from '../../common/EditButtons'
|
import EditButtons from '../../common/EditButtons.jsx'
|
||||||
import LockIndicator from '../../common/LockIndicator.jsx'
|
import LockIndicator from '../../common/LockIndicator.jsx'
|
||||||
import ActionHandler from '../../common/ActionHandler.jsx'
|
import ActionHandler from '../../common/ActionHandler.jsx'
|
||||||
import ObjectActions from '../../common/ObjectActions.jsx'
|
import ObjectActions from '../../common/ObjectActions.jsx'
|
||||||
@ -21,6 +24,7 @@ import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
|
|||||||
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
|
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
|
||||||
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
|
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
|
||||||
import ScrollBox from '../../common/ScrollBox.jsx'
|
import ScrollBox from '../../common/ScrollBox.jsx'
|
||||||
|
import { getModelProperty } from '../../../../database/ObjectModels.js'
|
||||||
|
|
||||||
const log = loglevel.getLogger('NoteInfo')
|
const log = loglevel.getLogger('NoteInfo')
|
||||||
log.setLevel(config.logLevel)
|
log.setLevel(config.logLevel)
|
||||||
@ -32,6 +36,7 @@ const NoteInfo = () => {
|
|||||||
const noteId = new URLSearchParams(location.search).get('noteId')
|
const noteId = new URLSearchParams(location.search).get('noteId')
|
||||||
const [collapseState, updateCollapseState] = useCollapseState('NoteInfo', {
|
const [collapseState, updateCollapseState] = useCollapseState('NoteInfo', {
|
||||||
info: true,
|
info: true,
|
||||||
|
content: true,
|
||||||
notes: true,
|
notes: true,
|
||||||
auditLogs: true
|
auditLogs: true
|
||||||
})
|
})
|
||||||
@ -87,6 +92,7 @@ const NoteInfo = () => {
|
|||||||
disabled={objectFormState.loading}
|
disabled={objectFormState.loading}
|
||||||
items={[
|
items={[
|
||||||
{ key: 'info', label: 'Note Information' },
|
{ key: 'info', label: 'Note Information' },
|
||||||
|
{ key: 'content', label: 'Note Content' },
|
||||||
{ key: 'notes', label: 'Notes' },
|
{ key: 'notes', label: 'Notes' },
|
||||||
{ key: 'auditLogs', label: 'Audit Logs' }
|
{ key: 'auditLogs', label: 'Audit Logs' }
|
||||||
]}
|
]}
|
||||||
@ -131,13 +137,6 @@ const NoteInfo = () => {
|
|||||||
actions={actions}
|
actions={actions}
|
||||||
loading={objectFormState.loading}
|
loading={objectFormState.loading}
|
||||||
ref={actionHandlerRef}
|
ref={actionHandlerRef}
|
||||||
>
|
|
||||||
<InfoCollapse
|
|
||||||
title='Note Information'
|
|
||||||
icon={<InfoCircleIcon />}
|
|
||||||
active={collapseState.info}
|
|
||||||
onToggle={(expanded) => updateCollapseState('info', expanded)}
|
|
||||||
collapseKey='info'
|
|
||||||
>
|
>
|
||||||
<ObjectForm
|
<ObjectForm
|
||||||
id={noteId}
|
id={noteId}
|
||||||
@ -149,15 +148,48 @@ const NoteInfo = () => {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{({ loading, isEditing, objectData }) => (
|
{({ loading, isEditing, objectData }) => (
|
||||||
|
<Flex vertical gap={'large'}>
|
||||||
|
<InfoCollapse
|
||||||
|
title='Note Information'
|
||||||
|
icon={<InfoCircleIcon />}
|
||||||
|
active={collapseState.info}
|
||||||
|
onToggle={(expanded) =>
|
||||||
|
updateCollapseState('info', expanded)
|
||||||
|
}
|
||||||
|
collapseKey='info'
|
||||||
|
>
|
||||||
<ObjectInfo
|
<ObjectInfo
|
||||||
loading={loading}
|
loading={loading}
|
||||||
|
indicator={<LoadingOutlined />}
|
||||||
isEditing={isEditing}
|
isEditing={isEditing}
|
||||||
type='note'
|
type='note'
|
||||||
objectData={objectData}
|
objectData={objectData}
|
||||||
|
visibleProperties={{ content: false }}
|
||||||
/>
|
/>
|
||||||
|
</InfoCollapse>
|
||||||
|
<InfoCollapse
|
||||||
|
title='Note Content'
|
||||||
|
icon={<TextIcon />}
|
||||||
|
active={collapseState.content}
|
||||||
|
onToggle={(expanded) =>
|
||||||
|
updateCollapseState('content', expanded)
|
||||||
|
}
|
||||||
|
collapseKey='content'
|
||||||
|
>
|
||||||
|
<Card>
|
||||||
|
<ObjectProperty
|
||||||
|
{...getModelProperty('note', 'content')}
|
||||||
|
isEditing={isEditing}
|
||||||
|
objectData={objectData}
|
||||||
|
loading={loading}
|
||||||
|
size='medium'
|
||||||
|
showCard={false}
|
||||||
|
/>
|
||||||
|
</Card>
|
||||||
|
</InfoCollapse>
|
||||||
|
</Flex>
|
||||||
)}
|
)}
|
||||||
</ObjectForm>
|
</ObjectForm>
|
||||||
</InfoCollapse>
|
|
||||||
</ActionHandler>
|
</ActionHandler>
|
||||||
<InfoCollapse
|
<InfoCollapse
|
||||||
title='Notes'
|
title='Notes'
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
import ReactMarkdown from 'react-markdown'
|
import ReactMarkdown from 'react-markdown'
|
||||||
import remarkGfm from 'remark-gfm'
|
import remarkGfm from 'remark-gfm'
|
||||||
import { Typography, Space } from 'antd'
|
import { Typography } from 'antd'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
|
|
||||||
const { Title, Paragraph, Text } = Typography
|
const { Paragraph, Text } = Typography
|
||||||
|
|
||||||
const UlComponent = ({ children }) => (
|
const UlComponent = ({ children }) => <ul>{children}</ul>
|
||||||
<ul style={{ paddingLeft: '20px', margin: 0 }}>{children}</ul>
|
|
||||||
)
|
|
||||||
UlComponent.propTypes = {
|
UlComponent.propTypes = {
|
||||||
children: PropTypes.node
|
children: PropTypes.node
|
||||||
}
|
}
|
||||||
@ -33,13 +31,13 @@ BlockquoteComponent.propTypes = { children: PropTypes.node }
|
|||||||
|
|
||||||
const MarkdownDisplay = ({ content }) => {
|
const MarkdownDisplay = ({ content }) => {
|
||||||
const components = {
|
const components = {
|
||||||
h1: (props) => <Title level={1} {...props} />,
|
h1: (props) => <h1 {...props} />,
|
||||||
h2: (props) => <Title level={2} {...props} />,
|
h2: (props) => <h2 {...props} />,
|
||||||
h3: (props) => <Title level={3} {...props} />,
|
h3: (props) => <h3 {...props} />,
|
||||||
h4: (props) => <Title level={4} {...props} />,
|
h4: (props) => <h4 {...props} />,
|
||||||
h5: (props) => <Title level={5} {...props} />,
|
h5: (props) => <h5 {...props} />,
|
||||||
h6: (props) => <Title level={6} {...props} />,
|
h6: (props) => <h6 {...props} />,
|
||||||
p: (props) => <Paragraph {...props} />,
|
p: (props) => <p {...props} />,
|
||||||
ul: UlComponent,
|
ul: UlComponent,
|
||||||
ol: OlComponent,
|
ol: OlComponent,
|
||||||
li: LiComponent,
|
li: LiComponent,
|
||||||
@ -57,15 +55,11 @@ const MarkdownDisplay = ({ content }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Space
|
<div className="markdown markdown-display">
|
||||||
direction='vertical'
|
|
||||||
style={{ width: '100%' }}
|
|
||||||
className={'markdown-display'}
|
|
||||||
>
|
|
||||||
<ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>
|
<ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>
|
||||||
{content}
|
{content}
|
||||||
</ReactMarkdown>
|
</ReactMarkdown>
|
||||||
</Space>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,32 +1,213 @@
|
|||||||
import { Card, Splitter } from 'antd'
|
import { EditorContent, useEditor } from '@tiptap/react'
|
||||||
|
import Link from '@tiptap/extension-link'
|
||||||
|
import Placeholder from '@tiptap/extension-placeholder'
|
||||||
|
import Underline from '@tiptap/extension-underline'
|
||||||
|
import { Markdown } from '@tiptap/markdown'
|
||||||
|
import StarterKit from '@tiptap/starter-kit'
|
||||||
|
import { Card, Splitter, theme } from 'antd'
|
||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
|
import { useEffect, useRef, useState } from 'react'
|
||||||
|
import { useThemeContext } from '../context/ThemeContext'
|
||||||
|
import MarkdownToolbar from './MarkdownToolbar'
|
||||||
import CodeBlockEditor from './CodeBlockEditor'
|
import CodeBlockEditor from './CodeBlockEditor'
|
||||||
import MarkdownDisplay from './MarkdownDisplay'
|
|
||||||
|
|
||||||
const MarkdownInput = ({ value, onChange }) => {
|
const MarkdownInput = ({
|
||||||
return (
|
value,
|
||||||
<Splitter className={'farmcontrol-splitter'} style={{ height: '100%' }}>
|
onChange,
|
||||||
<Splitter.Panel>
|
minHeight = '120px',
|
||||||
<Card>
|
size = 'small',
|
||||||
|
showCard = true
|
||||||
|
}) => {
|
||||||
|
const markdownValue = typeof value === 'string' ? value : ''
|
||||||
|
const lastMarkdownRef = useRef(markdownValue)
|
||||||
|
const { isDarkMode } = useThemeContext()
|
||||||
|
const { token } = theme.useToken()
|
||||||
|
const [viewState, setViewState] = useState({ editor: true, code: false })
|
||||||
|
const [focusedPanel, setFocusedPanel] = useState(null)
|
||||||
|
const editorPanelRef = useRef(null)
|
||||||
|
const codePanelRef = useRef(null)
|
||||||
|
|
||||||
|
const handlePanelBlur = () => {
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
const active = document.activeElement
|
||||||
|
if (editorPanelRef.current?.contains(active)) {
|
||||||
|
setFocusedPanel('editor')
|
||||||
|
} else if (codePanelRef.current?.contains(active)) {
|
||||||
|
setFocusedPanel('code')
|
||||||
|
} else {
|
||||||
|
setFocusedPanel(null)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const editor = useEditor({
|
||||||
|
extensions: [
|
||||||
|
StarterKit,
|
||||||
|
Link.configure({
|
||||||
|
autolink: true,
|
||||||
|
defaultProtocol: 'https',
|
||||||
|
openOnClick: false
|
||||||
|
}),
|
||||||
|
Placeholder.configure({
|
||||||
|
placeholder: 'Enter text here...'
|
||||||
|
}),
|
||||||
|
Underline,
|
||||||
|
Markdown
|
||||||
|
],
|
||||||
|
content: markdownValue,
|
||||||
|
contentType: 'markdown',
|
||||||
|
editorProps: {
|
||||||
|
attributes: {
|
||||||
|
class: 'md-editor__content'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
immediatelyRender: false,
|
||||||
|
onUpdate: ({ editor }) => {
|
||||||
|
const nextMarkdown = editor.getMarkdown()
|
||||||
|
lastMarkdownRef.current = nextMarkdown
|
||||||
|
onChange?.(nextMarkdown)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!editor) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (markdownValue !== lastMarkdownRef.current) {
|
||||||
|
editor.commands.setContent(markdownValue, {
|
||||||
|
contentType: 'markdown',
|
||||||
|
emitUpdate: false
|
||||||
|
})
|
||||||
|
lastMarkdownRef.current = markdownValue
|
||||||
|
}
|
||||||
|
}, [editor, markdownValue])
|
||||||
|
|
||||||
|
const editorPanel = (
|
||||||
|
<div
|
||||||
|
ref={editorPanelRef}
|
||||||
|
className='markdown md-editor'
|
||||||
|
onFocusCapture={() => setFocusedPanel('editor')}
|
||||||
|
onBlurCapture={handlePanelBlur}
|
||||||
|
>
|
||||||
|
<EditorContent editor={editor} />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
const codePanel = (
|
||||||
|
<div
|
||||||
|
ref={codePanelRef}
|
||||||
|
className='markdown-code-editor'
|
||||||
|
onFocusCapture={() => setFocusedPanel('code')}
|
||||||
|
onBlurCapture={handlePanelBlur}
|
||||||
|
>
|
||||||
<CodeBlockEditor
|
<CodeBlockEditor
|
||||||
code={value}
|
code={markdownValue}
|
||||||
onChange={onChange}
|
|
||||||
language='markdown'
|
language='markdown'
|
||||||
|
style={{ border: 'none' }}
|
||||||
|
onChange={(val) => {
|
||||||
|
onChange?.(val)
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
</Card>
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
const renderContent = () => {
|
||||||
|
if (viewState.editor && viewState.code) {
|
||||||
|
return (
|
||||||
|
<Splitter className='farmcontrol-splitter' vertical={true}>
|
||||||
|
{viewState.editor && (
|
||||||
|
<Splitter.Panel style={{ minHeight: 80 }}>
|
||||||
|
{editorPanel}
|
||||||
</Splitter.Panel>
|
</Splitter.Panel>
|
||||||
<Splitter.Panel>
|
)}
|
||||||
<Card style={{ height: '100%' }}>
|
{viewState.code && (
|
||||||
<MarkdownDisplay content={value} />
|
<Splitter.Panel style={{ minHeight: 80 }}>
|
||||||
</Card>
|
{codePanel}
|
||||||
</Splitter.Panel>
|
</Splitter.Panel>
|
||||||
|
)}
|
||||||
</Splitter>
|
</Splitter>
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
if (viewState.code) {
|
||||||
|
return codePanel
|
||||||
|
}
|
||||||
|
return editorPanel
|
||||||
|
}
|
||||||
|
|
||||||
|
const cardContent = (
|
||||||
|
<div
|
||||||
|
className={isDarkMode ? 'dark-theme' : 'light-theme'}
|
||||||
|
style={{
|
||||||
|
'--basePageBg': token.colorBgContainer,
|
||||||
|
'--baseBase': token.colorBgContainer,
|
||||||
|
'--baseBgSubtle': token.colorBgElevated,
|
||||||
|
'--baseBg': token.colorFillTertiary,
|
||||||
|
'--baseBgHover': token.colorFillSecondary,
|
||||||
|
'--baseBgActive': token.colorFill,
|
||||||
|
'--baseLine': token.colorBorderSecondary,
|
||||||
|
'--baseBorder': token.colorBorder,
|
||||||
|
'--baseBorderHover': token.colorTextTertiary,
|
||||||
|
'--baseSolid': token.colorTextTertiary,
|
||||||
|
'--baseSolidHover': token.colorTextSecondary,
|
||||||
|
'--baseText': token.colorText,
|
||||||
|
'--baseTextContrast': token.colorText,
|
||||||
|
'--accentBase': token.colorPrimaryBg,
|
||||||
|
'--accentBgSubtle': token.colorPrimaryBg,
|
||||||
|
'--accentBg': token.colorPrimaryBgHover,
|
||||||
|
'--accentBgHover': token.colorPrimaryHover,
|
||||||
|
'--accentBgActive': token.colorPrimaryActive,
|
||||||
|
'--accentLine': token.colorPrimaryBorder,
|
||||||
|
'--accentBorder': token.colorPrimaryBorderHover,
|
||||||
|
'--accentBorderHover': token.colorPrimaryHover,
|
||||||
|
'--accentSolid': token.colorPrimary,
|
||||||
|
'--accentSolidHover': token.colorPrimaryHover,
|
||||||
|
'--accentText': token.colorPrimary,
|
||||||
|
'--accentTextContrast': token.colorWhite,
|
||||||
|
'--md-editor-min-height': minHeight
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MarkdownToolbar
|
||||||
|
editor={editor}
|
||||||
|
size={size}
|
||||||
|
showCard={showCard}
|
||||||
|
viewState={viewState}
|
||||||
|
onViewStateChange={setViewState}
|
||||||
|
editingToolsDisabled={
|
||||||
|
focusedPanel === 'code' || (viewState.code && !viewState.editor)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
{renderContent()}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{showCard ? (
|
||||||
|
<Card
|
||||||
|
style={{ height: '100%' }}
|
||||||
|
styles={{
|
||||||
|
body: {
|
||||||
|
height: '100%',
|
||||||
|
padding: 0,
|
||||||
|
overflow: 'auto'
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{cardContent}
|
||||||
|
</Card>
|
||||||
|
) : (
|
||||||
|
cardContent
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
MarkdownInput.propTypes = {
|
MarkdownInput.propTypes = {
|
||||||
value: PropTypes.string.isRequired,
|
value: PropTypes.string,
|
||||||
onChange: PropTypes.func
|
onChange: PropTypes.func,
|
||||||
|
minHeight: PropTypes.string,
|
||||||
|
size: PropTypes.string,
|
||||||
|
showCard: PropTypes.bool
|
||||||
}
|
}
|
||||||
|
|
||||||
export default MarkdownInput
|
export default MarkdownInput
|
||||||
|
|||||||
347
src/components/Dashboard/common/MarkdownToolbar.jsx
Normal file
@ -0,0 +1,347 @@
|
|||||||
|
import { MinusOutlined } from '@ant-design/icons'
|
||||||
|
import { useEditorState } from '@tiptap/react'
|
||||||
|
import { useState } from 'react'
|
||||||
|
import {
|
||||||
|
Button,
|
||||||
|
Card,
|
||||||
|
Checkbox,
|
||||||
|
Flex,
|
||||||
|
Input,
|
||||||
|
Popover,
|
||||||
|
Select,
|
||||||
|
Space,
|
||||||
|
Tooltip
|
||||||
|
} from 'antd'
|
||||||
|
import PropTypes from 'prop-types'
|
||||||
|
import BlockquoteIcon from '../../Icons/BlockquoteIcon'
|
||||||
|
import BoldIcon from '../../Icons/BoldIcon'
|
||||||
|
import BulletListIcon from '../../Icons/BulletListIcon'
|
||||||
|
import CheckIcon from '../../Icons/CheckIcon'
|
||||||
|
import ItalicIcon from '../../Icons/ItalicIcon'
|
||||||
|
import NumberedListIcon from '../../Icons/NumberedListIcon'
|
||||||
|
import JsonObjectIcon from '../../Icons/JsonObjectIcon'
|
||||||
|
import LinkIcon from '../../Icons/LinkIcon'
|
||||||
|
import TextFormatIcon from '../../Icons/TextFormatIcon'
|
||||||
|
import UnderlineIcon from '../../Icons/UnderlineIcon'
|
||||||
|
|
||||||
|
const BLOCK_TYPE_OPTIONS = [
|
||||||
|
{ label: 'Paragraph', value: 'paragraph' },
|
||||||
|
{ label: 'Heading 1', value: 'h1' },
|
||||||
|
{ label: 'Heading 2', value: 'h2' },
|
||||||
|
{ label: 'Heading 3', value: 'h3' },
|
||||||
|
{ label: 'Heading 4', value: 'h4' },
|
||||||
|
{ label: 'Quote', value: 'quote' }
|
||||||
|
]
|
||||||
|
|
||||||
|
const getBlockTypeValue = (editor) => {
|
||||||
|
if (!editor) {
|
||||||
|
return 'paragraph'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (editor.isActive('blockquote')) {
|
||||||
|
return 'quote'
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const level of [1, 2, 3, 4]) {
|
||||||
|
if (editor.isActive('heading', { level })) {
|
||||||
|
return `h${level}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'paragraph'
|
||||||
|
}
|
||||||
|
|
||||||
|
const VIEW_ITEMS = [
|
||||||
|
{ key: 'editor', label: 'Editor' },
|
||||||
|
{ key: 'code', label: 'Code' }
|
||||||
|
]
|
||||||
|
|
||||||
|
const MarkdownToolbar = ({
|
||||||
|
editor,
|
||||||
|
size = 'small',
|
||||||
|
showCard = true,
|
||||||
|
viewState = { editor: true, code: false },
|
||||||
|
onViewStateChange = () => {},
|
||||||
|
editingToolsDisabled = false
|
||||||
|
}) => {
|
||||||
|
const [linkPopoverOpen, setLinkPopoverOpen] = useState(false)
|
||||||
|
const [linkUrl, setLinkUrl] = useState('')
|
||||||
|
|
||||||
|
const editorState = useEditorState({
|
||||||
|
editor,
|
||||||
|
selector: ({ editor }) => ({
|
||||||
|
blockTypeValue: getBlockTypeValue(editor),
|
||||||
|
isBold: editor?.isActive('bold') ?? false,
|
||||||
|
isItalic: editor?.isActive('italic') ?? false,
|
||||||
|
isUnderline: editor?.isActive('underline') ?? false,
|
||||||
|
isBulletList: editor?.isActive('bulletList') ?? false,
|
||||||
|
isOrderedList: editor?.isActive('orderedList') ?? false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleViewStateChange = (key, checked) => {
|
||||||
|
const nextState = { ...viewState, [key]: checked }
|
||||||
|
if (!nextState.editor && !nextState.code) {
|
||||||
|
nextState[key] = true
|
||||||
|
}
|
||||||
|
onViewStateChange(nextState)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleLinkPopoverOpenChange = (open) => {
|
||||||
|
setLinkPopoverOpen(open)
|
||||||
|
if (open) {
|
||||||
|
setLinkUrl(editor?.getAttributes('link').href ?? '')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleLinkSubmit = () => {
|
||||||
|
if (!editor) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const trimmedUrl = linkUrl.trim()
|
||||||
|
|
||||||
|
if (!trimmedUrl) {
|
||||||
|
editor.chain().focus().extendMarkRange('link').unsetLink().run()
|
||||||
|
} else {
|
||||||
|
editor
|
||||||
|
.chain()
|
||||||
|
.focus()
|
||||||
|
.extendMarkRange('link')
|
||||||
|
.setLink({ href: trimmedUrl })
|
||||||
|
.run()
|
||||||
|
}
|
||||||
|
|
||||||
|
setLinkPopoverOpen(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleBlockTypeChange = (nextBlockType) => {
|
||||||
|
if (!editor) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const chain = editor.chain().focus()
|
||||||
|
|
||||||
|
if (editor.isActive('blockquote') && nextBlockType !== 'quote') {
|
||||||
|
chain.toggleBlockquote()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextBlockType === 'paragraph') {
|
||||||
|
chain.setParagraph().run()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextBlockType === 'quote') {
|
||||||
|
if (editor.isActive('heading')) {
|
||||||
|
chain.setParagraph()
|
||||||
|
}
|
||||||
|
|
||||||
|
chain.toggleBlockquote().run()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const headingLevel = Number(nextBlockType.replace('h', ''))
|
||||||
|
chain.setHeading({ level: headingLevel }).run()
|
||||||
|
}
|
||||||
|
|
||||||
|
const linkPopoverContent = (
|
||||||
|
<Space.Compact block style={{ width: 280 }}>
|
||||||
|
<Input
|
||||||
|
placeholder='Enter a URL...'
|
||||||
|
value={linkUrl}
|
||||||
|
onChange={(e) => setLinkUrl(e.target.value)}
|
||||||
|
onPressEnter={handleLinkSubmit}
|
||||||
|
style={{ flex: 1 }}
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
type='primary'
|
||||||
|
onClick={handleLinkSubmit}
|
||||||
|
icon={<CheckIcon />}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Space.Compact>
|
||||||
|
)
|
||||||
|
|
||||||
|
const cardContent = (
|
||||||
|
<Space wrap size={8}>
|
||||||
|
<Popover
|
||||||
|
content={
|
||||||
|
<Flex vertical gap='middle' style={{ margin: '4px 8px' }}>
|
||||||
|
{VIEW_ITEMS.map((item) => (
|
||||||
|
<Checkbox
|
||||||
|
checked={viewState[item.key]}
|
||||||
|
key={item.key}
|
||||||
|
onChange={(e) =>
|
||||||
|
handleViewStateChange(item.key, e.target.checked)
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{item.label}
|
||||||
|
</Checkbox>
|
||||||
|
))}
|
||||||
|
</Flex>
|
||||||
|
}
|
||||||
|
placement='bottomLeft'
|
||||||
|
trigger='hover'
|
||||||
|
arrow={false}
|
||||||
|
>
|
||||||
|
<Button size={size} style={{ minWidth: 32 }}>
|
||||||
|
View
|
||||||
|
</Button>
|
||||||
|
</Popover>
|
||||||
|
<Select
|
||||||
|
size={size}
|
||||||
|
value={editorState.blockTypeValue}
|
||||||
|
options={BLOCK_TYPE_OPTIONS}
|
||||||
|
onChange={handleBlockTypeChange}
|
||||||
|
prefix={<TextFormatIcon />}
|
||||||
|
style={{ width: 160 }}
|
||||||
|
status={'defult'}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
/>
|
||||||
|
<Space.Compact size='small'>
|
||||||
|
<Tooltip title='Bold' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
type={editorState.isBold ? 'primary' : 'default'}
|
||||||
|
icon={<BoldIcon />}
|
||||||
|
onClick={() => editor?.chain().focus().toggleBold().run()}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
<Tooltip title='Italic' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
type={editorState.isItalic ? 'primary' : 'default'}
|
||||||
|
icon={<ItalicIcon />}
|
||||||
|
onClick={() => editor?.chain().focus().toggleItalic().run()}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
<Tooltip title='Underline' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
type={editorState.isUnderline ? 'primary' : 'default'}
|
||||||
|
icon={<UnderlineIcon />}
|
||||||
|
onClick={() => editor?.chain().focus().toggleUnderline().run()}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</Space.Compact>
|
||||||
|
<Space.Compact size='small'>
|
||||||
|
<Tooltip title='Bulleted list' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
type={editorState.isBulletList ? 'primary' : 'default'}
|
||||||
|
icon={<BulletListIcon />}
|
||||||
|
onClick={() => editor?.chain().focus().toggleBulletList().run()}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
<Tooltip title='Numbered list' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
type={editorState.isOrderedList ? 'primary' : 'default'}
|
||||||
|
icon={<NumberedListIcon />}
|
||||||
|
onClick={() => editor?.chain().focus().toggleOrderedList().run()}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</Space.Compact>
|
||||||
|
<Tooltip title='Block quote' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
type={editorState.blockTypeValue === 'quote' ? 'primary' : 'default'}
|
||||||
|
icon={<BlockquoteIcon />}
|
||||||
|
onClick={() =>
|
||||||
|
handleBlockTypeChange(
|
||||||
|
editorState.blockTypeValue === 'quote' ? 'paragraph' : 'quote'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
<Popover
|
||||||
|
content={linkPopoverContent}
|
||||||
|
placement='bottom'
|
||||||
|
trigger='click'
|
||||||
|
arrow={false}
|
||||||
|
open={linkPopoverOpen}
|
||||||
|
styles={{ body: { borderRadius: '22px' } }}
|
||||||
|
onOpenChange={handleLinkPopoverOpenChange}
|
||||||
|
>
|
||||||
|
<Tooltip title='Insert link' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
icon={<LinkIcon />}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</Popover>
|
||||||
|
<Tooltip title='Insert code block' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
icon={<JsonObjectIcon />}
|
||||||
|
onClick={() => editor?.chain().focus().toggleCodeBlock().run()}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
<Tooltip title='Insert horizontal rule' arrow={false}>
|
||||||
|
<Button
|
||||||
|
size={size}
|
||||||
|
icon={<MinusOutlined />}
|
||||||
|
onClick={() => editor?.chain().focus().setHorizontalRule().run()}
|
||||||
|
disabled={!editor || editingToolsDisabled}
|
||||||
|
style={{ minWidth: 32 }}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
|
</Space>
|
||||||
|
)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{showCard ? (
|
||||||
|
<Card
|
||||||
|
style={{
|
||||||
|
width: '100%',
|
||||||
|
borderRadius: '12px 12px 0 0',
|
||||||
|
borderTop: 'none',
|
||||||
|
borderLeft: 'none',
|
||||||
|
borderRight: 'none'
|
||||||
|
}}
|
||||||
|
styles={{
|
||||||
|
body: {
|
||||||
|
padding: 12
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{cardContent}
|
||||||
|
</Card>
|
||||||
|
) : (
|
||||||
|
cardContent
|
||||||
|
)}
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
MarkdownToolbar.propTypes = {
|
||||||
|
editor: PropTypes.shape({
|
||||||
|
chain: PropTypes.func,
|
||||||
|
getAttributes: PropTypes.func,
|
||||||
|
isActive: PropTypes.func
|
||||||
|
}),
|
||||||
|
size: PropTypes.string,
|
||||||
|
showCard: PropTypes.bool,
|
||||||
|
viewState: PropTypes.object,
|
||||||
|
onViewStateChange: PropTypes.func,
|
||||||
|
editingToolsDisabled: PropTypes.bool
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MarkdownToolbar
|
||||||
@ -91,6 +91,7 @@ const ObjectProperty = ({
|
|||||||
maxWidth = '100%',
|
maxWidth = '100%',
|
||||||
loading = false,
|
loading = false,
|
||||||
rollups = [],
|
rollups = [],
|
||||||
|
showCard = true,
|
||||||
...rest
|
...rest
|
||||||
}) => {
|
}) => {
|
||||||
if (value && typeof value == 'function' && objectData) {
|
if (value && typeof value == 'function' && objectData) {
|
||||||
@ -733,7 +734,9 @@ const ObjectProperty = ({
|
|||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
case 'markdown':
|
case 'markdown':
|
||||||
return <MarkdownInput {...inputProps} />
|
return (
|
||||||
|
<MarkdownInput {...inputProps} size={size} showCard={showCard} />
|
||||||
|
)
|
||||||
case 'id':
|
case 'id':
|
||||||
// id is not editable, just show view mode
|
// id is not editable, just show view mode
|
||||||
if (value) {
|
if (value) {
|
||||||
@ -868,7 +871,8 @@ ObjectProperty.propTypes = {
|
|||||||
showSince: PropTypes.bool,
|
showSince: PropTypes.bool,
|
||||||
loading: PropTypes.bool,
|
loading: PropTypes.bool,
|
||||||
rollups: PropTypes.arrayOf(PropTypes.object),
|
rollups: PropTypes.arrayOf(PropTypes.object),
|
||||||
canAddRemove: PropTypes.bool
|
canAddRemove: PropTypes.bool,
|
||||||
|
showCard: PropTypes.bool
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ObjectProperty
|
export default ObjectProperty
|
||||||
|
|||||||
6
src/components/Icons/BlockquoteIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/blockquoteicon.svg?react'
|
||||||
|
|
||||||
|
const BlockquoteIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default BlockquoteIcon
|
||||||
6
src/components/Icons/BoldIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/boldicon.svg?react'
|
||||||
|
|
||||||
|
const BoldIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default BoldIcon
|
||||||
6
src/components/Icons/BulletListIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/bulletlisticon.svg?react'
|
||||||
|
|
||||||
|
const BulletListIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default BulletListIcon
|
||||||
6
src/components/Icons/ItalicIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/italicicon.svg?react'
|
||||||
|
|
||||||
|
const ItalicIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default ItalicIcon
|
||||||
6
src/components/Icons/NumberedListIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/numberedlisticon.svg?react'
|
||||||
|
|
||||||
|
const NumberedListIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default NumberedListIcon
|
||||||
6
src/components/Icons/TextFormatIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/textformaticon.svg?react'
|
||||||
|
|
||||||
|
const TextFormatIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default TextFormatIcon
|
||||||
6
src/components/Icons/TextIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/texticon.svg?react'
|
||||||
|
|
||||||
|
const TextIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default TextIcon
|
||||||
6
src/components/Icons/UnderlineIcon.jsx
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import Icon from '@ant-design/icons'
|
||||||
|
import CustomIconSvg from '../../../assets/icons/underlineicon.svg?react'
|
||||||
|
|
||||||
|
const UnderlineIcon = (props) => <Icon component={CustomIconSvg} {...props} />
|
||||||
|
|
||||||
|
export default UnderlineIcon
|
||||||
@ -106,6 +106,11 @@ export default defineConfig({
|
|||||||
) {
|
) {
|
||||||
return 'tsparticles'
|
return 'tsparticles'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- Tiptap
|
||||||
|
if (id.includes('node_modules/@tiptap')) {
|
||||||
|
return 'tiptap'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||