payload-richtext-tiptap 0.0.123 → 0.0.125
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/article-custom.css +1 -0
- package/dist/src/body/ArticleBody.d.ts +8 -0
- package/dist/src/body/ArticleBody.d.ts.map +1 -0
- package/dist/src/body/ArticleBody.js +34 -0
- package/dist/src/body/ArticleBody.js.map +1 -0
- package/dist/src/body/StandardArticle.d.ts +6 -0
- package/dist/src/body/StandardArticle.d.ts.map +1 -0
- package/dist/src/body/StandardArticle.js +94 -0
- package/dist/src/body/StandardArticle.js.map +1 -0
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/FontSize/FontSize.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/Heading/Heading.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js +1 -0
- package/dist/src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js +3 -3
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/Columns.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/SlashCommand/MenuList.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/VideoBlock.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/VideoBlockMenu.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/VideoBlock/components/videojs/quality-selector/events.d.ts.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSideRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/EmbedContentSidebarRenderer.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/FacebookServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/InstagramServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/LinkedinServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/TiktokServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/TwitterBlockServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/extensions/serverside/YouTubeServerside.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontFamilyPicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/menus/TextMenu/components/FontSizePicker.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AICommandPanel/AICommandPanel.js.map +1 -1
- package/dist/src/fields/TiptapEditor/features/panels/AIEditorPanel/utils.js.map +1 -1
- package/dist/src/fields/TiptapEditor/hooks/useBlockEditor.js.map +1 -1
- package/dist/src/fields/TiptapEditor/lib/utils/cssVar.js.map +1 -1
- package/dist/src/fonts/font.ar.js +22 -0
- package/dist/src/fonts/font.ar.js.map +1 -0
- package/dist/src/fonts/font.en.d.ts.map +1 -0
- package/dist/src/fonts/font.en.js +147 -0
- package/dist/src/fonts/font.en.js.map +1 -0
- package/dist/src/fonts/font.fa.js +23 -0
- package/dist/src/fonts/font.fa.js.map +1 -0
- package/dist/src/fonts/font.ps.js +23 -0
- package/dist/src/fonts/font.ps.js.map +1 -0
- package/dist/src/fonts/font.ur.js +23 -0
- package/dist/src/fonts/font.ur.js.map +1 -0
- package/dist/src/fonts/fonts/arima/Arima-Bold.ttf +0 -0
- package/dist/src/fonts/fonts/arima/Arima-ExtraLight.ttf +0 -0
- package/dist/src/fonts/fonts/arima/Arima-Light.ttf +0 -0
- package/dist/src/fonts/fonts/arima/Arima-Medium.ttf +0 -0
- package/dist/src/fonts/fonts/arima/Arima-Regular.ttf +0 -0
- package/dist/src/fonts/fonts/arima/Arima-SemiBold.ttf +0 -0
- package/dist/src/fonts/fonts/arima/Arima-Thin.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-Bold.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-BoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-Italic.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-Medium.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-MediumItalic.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-Regular.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-SemiBold.ttf +0 -0
- package/dist/src/fonts/fonts/libre/LibreBodoni-SemiBoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-Bold.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-BoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-ExtraBold.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-ExtraBoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-ExtraLight.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-ExtraLightItalic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-Italic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-Light.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-LightItalic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-Medium.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-MediumItalic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-Regular.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-SemiBold.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-SemiBoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-Thin.ttf +0 -0
- package/dist/src/fonts/fonts/notoserif/NotoSerif-ThinItalic.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-Black.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-BlackItalic.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-Bold.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-BoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-ExtraBold.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-ExtraBoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-Italic.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-Medium.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-MediumItalic.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-Regular.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-SemiBold.ttf +0 -0
- package/dist/src/fonts/fonts/playfair/PlayfairDisplay-SemiBoldItalic.ttf +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-black.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-blackitalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-bold.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-bolditalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-heavy.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-heavyitalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-light.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-lightitalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-medium.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-mediumitalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-regular.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-regularitalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-semibold.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-semibolditalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-thin.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-thinitalic.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-ultralight.woff2 +0 -0
- package/dist/src/fonts/fonts/sf/sf-pro-display-ultralightitalic.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-Bold.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-BoldItalic.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-Light.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-LightItalic.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-Medium.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-MediumItalic.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-Regular.woff2 +0 -0
- package/dist/src/fonts/fonts/trt/TRT-RegularItalic.woff2 +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-Black.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-Bold.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-ExtraBold.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-ExtraLight.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-Light.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-Medium.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-Regular.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-SemiBold.ttf +0 -0
- package/dist/src/fonts/fonts/vazirmatn/Vazirmatn-Thin.ttf +0 -0
- package/dist/src/globals.css +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/styles.css +1 -3213
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +31 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.spinner-animation{animation:spinner 1.6s linear infinite;animation-delay:-1.6s}.spinner-animation-secondary{animation-delay:-1s}@keyframes spinner{12.5%{x:13px;y:1px}25%{x:13px;y:1px}37.5%{x:13px;y:13px}50%{x:13px;y:13px}62.5%{x:1px;y:13px}75%{x:1px;y:13px}87.5%{x:1px;y:1px}}.ProseMirror{figure[data-type=imageBlock]{margin:0}figure[data-type=imageBlock]{img{display:block;width:100%;border-radius:.25rem}}div[data-link-preview]{img{display:block;width:120px;border-radius:.25rem;-o-object-fit:cover;object-fit:cover}}figure[data-type=blockquoteFigure]{position:relative;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}@media (prefers-color-scheme:dark){figure[data-type=blockquoteFigure]{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}}@media (min-width:1240px){figure[data-type=blockquoteFigure]{display:block;width:auto;padding-inline-end:0}}figure[data-type=blockquoteFigure]{figcaption{font-size:14px;line-height:20px;font-weight:400;font-style:normal;line-height:32px;--tw-text-opacity:1;color:rgb(146 147 147/var(--tw-text-opacity,1))}@media (min-width:1240px){>div{left:100%;top:0}}@media (min-width:1240px){>div:where([dir=rtl],[dir=rtl] *){left:auto}}@media (min-width:1240px){>div:where([dir=rtl],[dir=rtl] *){right:100%}}@media (min-width:1240px){>div:where([dir=rtl],[dir=rtl] *){margin-right:32px}}>div{border-radius:5px;border-width:1px;--tw-border-opacity:1;border-color:rgb(219 219 219/var(--tw-border-opacity,1));padding-top:40px;padding-bottom:40px;text-align:center}>div:before{display:block;font-family:var(--font-libre);font-size:30px;line-height:36px;line-height:30px;--tw-text-opacity:1;color:rgb(31 33 33/var(--tw-text-opacity,1));--tw-content:"“";content:var(--tw-content)}>div{blockquote,blockquote *{font-family:var(--font-libre);font-size:24px;line-height:32px;font-weight:500;line-height:33px;--tw-text-opacity:1;color:rgb(31 33 33/var(--tw-text-opacity,1))}}}&>blockquote,[data-type=blockquoteFigure]{margin-bottom:16px}&>blockquote,[data-type=blockquoteFigure]{blockquote{margin:0}blockquote{&>:first-child{margin-top:0}&>:last-child{margin-bottom:0}}}[data-type=columns]{margin-top:56px;margin-bottom:48px;display:grid;gap:16px}[data-type=columns]{&.layout-sidebar-left{grid-template-columns:40fr 60fr}&.layout-sidebar-right{grid-template-columns:60fr 40fr}&.layout-two-column{grid-template-columns:1fr 1fr}}[data-type=column]{overflow:auto}code{border-radius:.125rem;--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));caret-color:#fff;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}pre{margin-top:48px;margin-bottom:48px;border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity,1));padding:16px;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));caret-color:#fff}@media (prefers-color-scheme:dark){pre{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}}pre{code{background-color:inherit;padding:0;color:inherit;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hljs-comment,.hljs-quote{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.hljs-attribute,.hljs-link,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.hljs-built_in,.hljs-builtin-name,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.hljs-bullet,.hljs-string,.hljs-symbol{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity,1))}.hljs-section,.hljs-title{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.hljs-keyword,.hljs-selector-tag{--tw-text-opacity:1;color:rgb(94 234 212/var(--tw-text-opacity,1))}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}}.collaboration-cursor{&__caret{pointer-events:none;position:relative;margin-left:-1px;margin-right:-1px;overflow-wrap:normal;word-break:normal;border-right-width:1px;border-left-width:1px;--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}&__label{position:absolute;left:-1px;top:-1.4em;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;border-radius:.25rem;border-top-left-radius:0;padding-top:2px;padding-bottom:2px;padding-left:6px;padding-right:6px;font-size:12px;line-height:16px;font-weight:600;line-height:1;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}}ol{list-style-type:decimal}ul{list-style-type:disc}ol,ul{margin-top:24px;margin-bottom:24px;padding-top:0;padding-bottom:0}ol:first-child,ul:first-child{margin-top:0}ol:last-child,ul:last-child{margin-bottom:0}ol,ul{li,ol,ul{margin-top:4px;margin-bottom:4px}p{margin-top:0;margin-bottom:4px}}&>ol,&>ul{margin-top:32px;margin-bottom:32px;margin-inline-start:20px}&>ol:first-child,&>ul:first-child{margin-top:0}&>ol:last-child,&>ul:last-child{margin-bottom:0}ul[data-type=taskList]{list-style-type:none;padding:0}ul[data-type=taskList]{p{margin:0}li{display:flex}li{>label{margin-top:4px;margin-right:8px;flex:1 1 auto;flex-shrink:0;flex-grow:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}>div{flex:1 1 auto}&[data-checked=true]{text-decoration-line:line-through}}}.is-empty:before{pointer-events:none;float:left;height:0;width:100%;color:rgba(0,0,0,.4)}@media (prefers-color-scheme:dark){.is-empty:before{color:hsla(0,0%,100%,.4)}}.is-empty.react-renderer:before{content:""}&.ProseMirror-focused{>[data-type=columns]>[data-type=column]>p.is-empty.has-focus:before,>p.has-focus.is-empty:before{content:'Write something, or press " space " for AI, "/" for commands...'}>[dir=rtl]>p.has-focus.is-empty:before{text-align:right}}&>.is-editor-empty:before{content:"Click here to start writing …"}blockquote .is-empty:not(.is-editor-empty):first-child:last-child:before{content:"Enter a quote"}blockquote+figcaption.is-empty:not(.is-editor-empty):before{content:"Author"}[data-placeholder][data-suggestion] :before,[data-placeholder][data-suggestion]:before{content:none!important}}.ProseMirror:lang(en){.is-empty:before{content:"Click here to start writing …"}&:lang(ar)>p.has-focus.is-empty:before{content:'Write something, or press " space " for AI, "/" for commands...'}}.ProseMirror:lang(ar){.is-empty:before{content:"انقر هنا للبدء في الكتابة…"}&:lang(ar)>p.has-focus.is-empty:before{content:"اكتب / لاستعراض الخيارات"}}.ProseMirror:lang(fa){.is-empty:before{content:"برای شروع نوشتن اینجا کلیک کنید…"}&:lang(ar)>p.has-focus.is-empty:before{content:"برای مرور گزینه ها، / را تایپ کنید"}}.ProseMirror:lang(fr){.is-empty:before{content:"Cliquez ici pour commencer à écrire…"}&:lang(ar)>p.has-focus.is-empty:before{content:"Tapez / pour parcourir les options"}}.ProseMirror:lang(es){.is-empty:before{content:"Haz clic aquí para empezar a escribir…"}>p.has-focus.is-empty:before{content:"Escriba / para buscar opciones"}}.ProseMirror:lang(ru){.is-empty:before{content:"Нажмите здесь, чтобы начать писать…"}>p.has-focus.is-empty:before{content:"Введите / для просмотра вариантов"}}.ProseMirror:lang(tr){.is-empty:before{content:"Seçenekleri göz atmak için / yazın…"}>p.has-focus.is-empty:before{content:"Seçenekleri gözden geçirmek için / tuşlayın"}}.ProseMirror:lang(de){.is-empty:before{content:"Klicken Sie hier, um mit dem Schreiben zu beginnen…"}>p.has-focus.is-empty:before{content:"Tippen Sie / ein, um Optionen zu durchsuchen"}}.ProseMirror{.tableWrapper{margin-top:48px;margin-bottom:48px}table{box-sizing:border-box;width:100%;border-collapse:collapse;border-radius:.25rem;border-color:rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){table{border-color:hsla(0,0%,100%,.2)}}table{td,th{position:relative;min-width:100px;border-width:1px;border-color:rgba(0,0,0,.1);padding:8px;text-align:left;vertical-align:top}@media (prefers-color-scheme:dark){td,th{border-color:hsla(0,0%,100%,.2)}}td,th{&:first-of-type:not(a){margin-top:0}p{margin:0}p{&+p{margin-top:12px}}}th{font-weight:700}.column-resize-handle{pointer-events:none;position:absolute;bottom:-2px;right:-4px;top:0;display:flex;width:8px}.column-resize-handle{&:before{margin-left:8px;height:100%;width:1px;background-color:rgba(0,0,0,.2)}@media (prefers-color-scheme:dark){&:before{background-color:hsla(0,0%,100%,.2)}}&:before{content:""}}.selectedCell{border-style:double;border-color:rgba(0,0,0,.2);background-color:rgba(0,0,0,.05)}@media (prefers-color-scheme:dark){.selectedCell{border-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.1)}}.grip-column,.grip-row{position:absolute;z-index:10;display:flex;cursor:pointer;align-items:center;justify-content:center;background-color:rgba(0,0,0,.05)}@media (prefers-color-scheme:dark){.grip-column,.grip-row{background-color:hsla(0,0%,100%,.1)}}.grip-column{left:0;top:-12px;margin-left:-1px;height:12px;width:calc(100% + 1px);border-left-width:1px;border-color:rgba(0,0,0,.2)}@media (prefers-color-scheme:dark){.grip-column{border-color:hsla(0,0%,100%,.2)}}.grip-column{&.selected,&:hover{&:before{content:"";width:10px}}&:hover{background-color:rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){&:hover{background-color:hsla(0,0%,100%,.2)}}&:hover{&:before{border-bottom-width:2px;border-style:dotted;border-color:rgba(0,0,0,.6)}@media (prefers-color-scheme:dark){&:before{border-color:hsla(0,0%,100%,.6)}}}&.first{border-top-left-radius:.125rem;border-color:transparent}&.last{border-top-right-radius:.125rem}&.selected{border-color:rgba(0,0,0,.3);background-color:rgba(0,0,0,.3);--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (prefers-color-scheme:dark){&.selected{border-color:hsla(0,0%,100%,.3);background-color:hsla(0,0%,100%,.3)}}&.selected{&:before{border-bottom-width:2px;border-style:dotted}}}.grip-row{left:-12px;top:0;margin-top:-1px;height:calc(100% + 1px);width:12px;border-top-width:1px;border-color:rgba(0,0,0,.2)}@media (prefers-color-scheme:dark){.grip-row{border-color:hsla(0,0%,100%,.2)}}.grip-row{&.selected,&:hover{&:before{height:10px;content:""}}&:hover{background-color:rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){&:hover{background-color:hsla(0,0%,100%,.2)}}&:hover{&:before{border-left-width:2px;border-style:dotted;border-color:rgba(0,0,0,.6)}@media (prefers-color-scheme:dark){&:before{border-color:hsla(0,0%,100%,.6)}}}&.first{border-top-left-radius:.125rem;border-color:transparent}&.last{border-bottom-left-radius:.125rem}&.selected{border-color:rgba(0,0,0,.3);background-color:rgba(0,0,0,.3);--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (prefers-color-scheme:dark){&.selected{border-color:hsla(0,0%,100%,.3);background-color:hsla(0,0%,100%,.3)}}&.selected{&:before{border-left-width:2px;border-style:dotted}}}}p:not(:empty){padding-bottom:24px;line-height:1.625}h1{font-size:30px;line-height:36px}h2{font-size:24px;line-height:32px}h3{font-size:20px}h3,h4{line-height:28px}h4{font-size:18px}h5{font-size:16px;line-height:24px}h6{font-size:14px;line-height:20px}h1,h2,h3,h4,h5,h6{font-weight:700}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child{margin-bottom:0}h1,h2,h3{margin-top:48px}h4,h5,h6{margin-top:32px}a.link{font-weight:700;--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1));text-decoration-line:underline;text-decoration-style:solid;text-underline-offset:auto}@media (prefers-color-scheme:dark){a.link{--tw-text-opacity:1;color:rgb(31 33 33/var(--tw-text-opacity,1))}}mark{border-radius:.125rem;--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1));-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:4px;padding-bottom:4px;padding-left:0;padding-right:0;color:inherit}@media (prefers-color-scheme:dark){mark{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity,1))}}& img{position:relative;height:auto;width:100%;max-width:100%}[data-type=horizontalRule]{margin-top:32px;margin-bottom:32px;cursor:pointer;padding-top:16px;padding-bottom:16px;transition-property:all;transition-duration:.15s;transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1)}[data-type=horizontalRule]{&.ProseMirror-selectednode{background-color:rgba(0,0,0,.05)}@media (prefers-color-scheme:dark){&.ProseMirror-selectednode{background-color:hsla(0,0%,100%,.1)}}&.ProseMirror-selectednode{hr{border-top-color:rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){hr{border-top-color:hsla(0,0%,100%,.3)}}}&:hover:not(&.ProseMirror-selectednode){background-color:rgba(0,0,0,.05)}@media (prefers-color-scheme:dark){&:hover:not(&.ProseMirror-selectednode){background-color:hsla(0,0%,100%,.1)}}hr{border-width:0;border-top-width:1px;border-color:rgba(0,0,0,.2);background-color:rgba(0,0,0,.8)}@media (prefers-color-scheme:dark){hr{border-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.8)}}}.ProseMirror h1[dir=rtl],.ProseMirror h2[dir=rtl],.ProseMirror h3[dir=rtl],.ProseMirror h4[dir=rtl],.ProseMirror h5[dir=rtl],.ProseMirror h6[dir=rtl],.ProseMirror p[dir=rtl]{text-align:right}.ProseMirror h1[dir=ltr],.ProseMirror h2[dir=ltr],.ProseMirror h3[dir=ltr],.ProseMirror h4[dir=ltr],.ProseMirror h5[dir=ltr],.ProseMirror h6[dir=ltr],.ProseMirror p[dir=ltr]{text-align:left}}.ProseMirror h1[textalign=justify],.ProseMirror h2[textalign=justify],.ProseMirror h3[textalign=justify],.ProseMirror h4[textalign=justify],.ProseMirror h5[textalign=justify],.ProseMirror h6[textalign=justify],.ProseMirror p[textalign=justify]{text-align:justify!important}.ProseMirror h1[textalign=right],.ProseMirror h2[textalign=right],.ProseMirror h3[textalign=right],.ProseMirror h4[textalign=right],.ProseMirror h5[textalign=right],.ProseMirror h6[textalign=right],.ProseMirror p[textAlign=right]{text-align:right!important}.ProseMirror h1[textalign=left],.ProseMirror h2[textalign=left],.ProseMirror h3[textalign=left],.ProseMirror h4[textalign=left],.ProseMirror h5[textalign=left],.ProseMirror h6[textalign=left],.ProseMirror p[textAlign=left]{text-align:left!important}.ProseMirror{& .fb-post,& .rsme-embed,& .youtube-iframe,& .youtube-iframe iframe{width:100%!important}& .rsme-twitter-embed{width:100%!important;height:auto!important}& .rsme-embed iframe,& .rsme-twitter-embed iframe{width:100%!important}z-index:0;padding-left:0;caret-color:#000;outline-width:0}@media (prefers-color-scheme:dark){.ProseMirror{caret-color:#fff}}.ProseMirror{.image-wrapper{padding-top:20px;padding-bottom:20px}.image-wrapper{caption{font-size:14px;line-height:20px;font-weight:300;--tw-text-opacity:1;color:rgb(146 147 147/var(--tw-text-opacity,1))}}&>iframe{display:block}.selection{display:inline}@media (min-width:884px){p:has(+.inline-facebook),p:has(+.inline-instagram),p:has(+.inline-linkedin),p:has(+.inline-tiktok),p:has(+.inline-twitter),p:has(+.inline-youtube),p:has(+.side-facebook),p:has(+.side-instagram),p:has(+.side-linkedin),p:has(+.side-tiktok),p:has(+.side-twitter),p:has(+.side-youtube),p:has(+figure[data-type=blockquoteFigure]){display:inline-block}}@media (min-width:884px){p:has(+.inline-facebook),p:has(+.inline-instagram),p:has(+.inline-linkedin),p:has(+.inline-tiktok),p:has(+.inline-twitter),p:has(+.inline-youtube),p:has(+.side-facebook),p:has(+.side-instagram),p:has(+.side-linkedin),p:has(+.side-tiktok),p:has(+.side-twitter),p:has(+.side-youtube),p:has(+figure[data-type=blockquoteFigure]){padding-inline-end:16px}}@media (min-width:884px){p:has(+.inline-facebook),p:has(+.inline-instagram),p:has(+.inline-linkedin),p:has(+.inline-tiktok),p:has(+.inline-twitter),p:has(+.inline-youtube),p:has(+.side-facebook),p:has(+.side-instagram),p:has(+.side-linkedin),p:has(+.side-tiktok),p:has(+.side-twitter),p:has(+.side-youtube),p:has(+figure[data-type=blockquoteFigure]){vertical-align:top}}@media (min-width:1240px){p:has(+.inline-facebook),p:has(+.inline-instagram),p:has(+.inline-linkedin),p:has(+.inline-tiktok),p:has(+.inline-twitter),p:has(+.inline-youtube),p:has(+.side-facebook),p:has(+.side-instagram),p:has(+.side-linkedin),p:has(+.side-tiktok),p:has(+.side-twitter),p:has(+.side-youtube),p:has(+figure[data-type=blockquoteFigure]){display:block}}@media (min-width:1240px){p:has(+.inline-facebook),p:has(+.inline-instagram),p:has(+.inline-linkedin),p:has(+.inline-tiktok),p:has(+.inline-twitter),p:has(+.inline-youtube),p:has(+.side-facebook),p:has(+.side-instagram),p:has(+.side-linkedin),p:has(+.side-tiktok),p:has(+.side-twitter),p:has(+.side-youtube),p:has(+figure[data-type=blockquoteFigure]){width:auto}}@media (min-width:1240px){p:has(+.inline-facebook),p:has(+.inline-instagram),p:has(+.inline-linkedin),p:has(+.inline-tiktok),p:has(+.inline-twitter),p:has(+.inline-youtube),p:has(+.side-facebook),p:has(+.side-instagram),p:has(+.side-linkedin),p:has(+.side-tiktok),p:has(+.side-twitter),p:has(+.side-youtube),p:has(+figure[data-type=blockquoteFigure]){padding-inline-end:0}}&>.react-renderer{margin-top:32px;margin-bottom:32px;display:block;padding-bottom:24px}&>.react-renderer:first-child{margin-top:0}&>.react-renderer:last-child{margin-bottom:0}@media (min-width:884px){&>.react-renderer{margin-top:0;margin-bottom:0}}&>.react-renderer{&.inline-facebook,&.inline-instagram,&.inline-linkedin,&.inline-tiktok,&.inline-twitter,&.inline-youtube,&.side-facebook,&.side-instagram,&.side-linkedin,&.side-tiktok,&.side-twitter,&.side-youtube{position:relative}&.side-facebook,&.side-instagram,&.side-linkedin,&.side-tiktok,&.side-twitter,&.side-youtube{.socialMediaContainer{white-space:normal!important}@media (min-width:1240px){.socialMediaContainer{top:0}}@media (min-width:1240px){.socialMediaContainer:where([dir=rtl],[dir=rtl] *){left:auto}}@media (min-width:1240px){.socialMediaContainer:where([dir=rtl],[dir=rtl] *){right:100%}}@media (min-width:1240px){.socialMediaContainer:where([dir=rtl],[dir=rtl] *){margin-left:0}}.socialMediaContainer{.fb-post,>div .rsme-embed{width:100%!important;max-width:100%!important}}}&.inline-youtube,&.side-youtube{iframe{aspect-ratio:16/9;height:auto;width:100%;max-width:100%}}&.inline-facebook,&.inline-instagram,&.inline-linkedin,&.inline-tiktok,&.inline-twitter,&.inline-youtube{.socialMediaContainer{.fb-post,.instagram-media,.rsme-embed,.twitter-tweet,>div{width:100%!important;max-width:100%!important}}}}&.resize-cursor{cursor:col-resize}.ProseMirror-gapcursor{position:relative;margin-left:auto;margin-right:auto;width:100%}.ProseMirror-gapcursor{&:after{top:-1.5em;left:0;right:0;margin-left:auto;margin-right:auto;width:100%;border-top-color:rgba(0,0,0,.4)}@media (prefers-color-scheme:dark){&:after{border-top-color:hsla(0,0%,100%,.4)}}}.vjs-play-progress{border-radius:.125rem;--tw-bg-opacity:1;background-color:rgb(0 143 179/var(--tw-bg-opacity,1));opacity:1}.vjs-play-progress{&:before{display:none}}.video-js .vjs-poster,.video-js.vjs-has-started .vjs-tech{position:relative;height:calc(100vh - 108px);-o-object-fit:contain;object-fit:contain}@media (min-width:1240px){.video-js .vjs-poster,.video-js.vjs-has-started .vjs-tech{height:calc(100vh - 138px)}}@media (min-width:1584px){.video-js .vjs-poster,.video-js.vjs-has-started .vjs-tech{height:calc(100vh - 138px)}}.vjs_video_3-dimensions.vjs-fluid:not(.vjs-audio-only-mode){padding:0!important}}[data-theme=slash-command]{width:1000vw}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.accordion-item>h3{margin-bottom:0}.collabsible-p-2-5>button{padding:10px}.react-select .rs__control{padding-top:0;padding-bottom:0}.collapsible__header-wrap p{margin-bottom:0;font-size:12px;line-height:16px}.collapsible__actions-wrap{top:.4rem!important;right:.4rem!important}.collapsible__content{padding:.75rem .5rem!important}.collapsible__toggle{padding:.5rem!important;border-radius:.25rem!important;cursor:pointer!important}.collapsible__header-wrap{padding-left:.75rem!important;padding-top:.4rem!important}.collapsible__header-wrap:dir(rtl){left:unset;right:20px}.relationship-selector .collapsible__header-wrap{padding-top:.75rem!important;padding-bottom:.75rem!important}.collapsible__toggle-wrap{display:flex!important;height:38px!important}.collapsible-max-150 .collapsible__content{max-height:150px;overflow-y:auto}.input-default{height:auto;width:100%;align-items:center;justify-content:center;border-width:1px;--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1));background-color:transparent;padding:10px}.input-default::-moz-placeholder{display:flex;align-items:center;justify-content:center}.input-default::placeholder{display:flex;align-items:center;justify-content:center}.input-default-label{margin-bottom:4px;font-size:12px;line-height:16px;--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.max-h-100vh-60{max-height:calc(100vh - 60px)}div[aria-roledescription=carousel]>div{height:100%}.asset-hq__modal{overflow:hidden}.asset-hq__modal>div{height:100%;width:100%;overflow:scroll}.asset-hq-infinitehits .ais-InfiniteHits-loadMore,.asset-hq-refinementlist .ais-RefinementList-showMore{display:none}.asset-hq-infinitehits ol{padding:0}.asset-hq-current-refinements .ais-CurrentRefinements-list{margin-bottom:0}.asset-hq-current-refinements .ais-CurrentRefinements-list .ais-CurrentRefinements-item{align-items:center}.icon-button{display:flex;height:24px;width:24px;cursor:pointer;align-items:center;justify-content:center;border-radius:9999px;padding:4px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.icon-button:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.payload__modal-container{z-index:51!important}.card{display:flex;flex-direction:column;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding:20px}.unset-pointer-events{pointer-events:unset!important}.skeleton{display:inline-block;height:1em;position:relative;overflow:hidden;background-color:#dddbdd;&:after{position:absolute;top:0;right:0;bottom:0;left:0;transform:translateX(-100%);background-image:linear-gradient(90deg,rgba(#fff,0),rgba(#fff,.2) 20%,rgba(#fff,.5) 60%,rgba(#fff,0));animation:shimmer 2s infinite;content:""}@keyframes shimmer{to{transform:translateX(100%)}}}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type Props = {
|
|
2
|
+
body: any;
|
|
3
|
+
wrapperClassName?: string;
|
|
4
|
+
articleClassName?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const ArticleBody: import("react").MemoExoticComponent<({ body, wrapperClassName, articleClassName }: Props) => import("react").JSX.Element>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ArticleBody.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleBody.d.ts","sourceRoot":"","sources":["../../../src/body/ArticleBody.tsx"],"names":[],"mappings":"AAaA,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,GAAG,CAAC;IACV,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AACF,eAAO,MAAM,WAAW,qFACyB,KAAK,iCA2BrD,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { memo } from 'react';
|
|
4
|
+
// import './article-custom.scss';
|
|
5
|
+
import { appendRequiredBlocksMarkerClient } from '../fields/TiptapEditor/extensions/serverside/useAppendRequiredBlocksMarkerClient.js';
|
|
6
|
+
import { ServersideTiptapBody } from '../fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js';
|
|
7
|
+
import { EmbedContentInlineRenderer } from '../fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.js';
|
|
8
|
+
import { cn } from '../fields/TiptapEditor/lib/utils/index.js';
|
|
9
|
+
const TRT_ARTICLE_BODY_ID = 'TRT-ARTICLE-BODY-ID';
|
|
10
|
+
export const ArticleBody = /*#__PURE__*/ memo(({ body, wrapperClassName, articleClassName })=>{
|
|
11
|
+
const json = appendRequiredBlocksMarkerClient(body);
|
|
12
|
+
if (!json) return null;
|
|
13
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
14
|
+
className: cn('text-grey-12 lg:grid trt-article-body-wrapper trt-article-page-wrapper w-full', wrapperClassName),
|
|
15
|
+
children: [
|
|
16
|
+
/*#__PURE__*/ _jsx("div", {}),
|
|
17
|
+
/*#__PURE__*/ _jsx("div", {
|
|
18
|
+
id: TRT_ARTICLE_BODY_ID,
|
|
19
|
+
className: "w-full flex flex-col",
|
|
20
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
21
|
+
className: cn('!selection:text-purple-900 font-notosans lg:text-xl lg:leading-8 md:text-lg md:leading-[30px] text-base', articleClassName),
|
|
22
|
+
children: /*#__PURE__*/ _jsx(ServersideTiptapBody, {
|
|
23
|
+
body: json
|
|
24
|
+
})
|
|
25
|
+
})
|
|
26
|
+
}),
|
|
27
|
+
/*#__PURE__*/ _jsx(EmbedContentInlineRenderer, {
|
|
28
|
+
body: json
|
|
29
|
+
})
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
}, (prev, next)=>prev.body?.content?.length === next.body?.content?.length);
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=ArticleBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/body/ArticleBody.tsx"],"sourcesContent":["'use client'\r\n\r\nimport { memo } from 'react';\r\n// import './article-custom.scss';\r\n\r\n\r\nimport { appendRequiredBlocksMarkerClient } from '../fields/TiptapEditor/extensions/serverside/useAppendRequiredBlocksMarkerClient.js';\r\nimport { ServersideTiptapBody } from '../fields/TiptapEditor/extensions/serverside/ServersideTiptapBody.js';\r\nimport { EmbedContentInlineRenderer } from '../fields/TiptapEditor/extensions/serverside/EmbedContentInlineRenderer.js';\r\nimport { cn } from '../fields/TiptapEditor/lib/utils/index.js';\r\n\r\nconst TRT_ARTICLE_BODY_ID = 'TRT-ARTICLE-BODY-ID';\r\n\r\ntype Props = {\r\n body: any;\r\n wrapperClassName?: string;\r\n articleClassName?: string;\r\n};\r\nexport const ArticleBody = memo(\r\n ({ body, wrapperClassName, articleClassName }: Props) => {\r\n const json = appendRequiredBlocksMarkerClient(body);\r\n if (!json) return null;\r\n return (\r\n <div\r\n className={cn(\r\n 'text-grey-12 lg:grid trt-article-body-wrapper trt-article-page-wrapper w-full',\r\n wrapperClassName,\r\n )}\r\n >\r\n <div />\r\n <div id={TRT_ARTICLE_BODY_ID} className=\"w-full flex flex-col\">\r\n\r\n <div\r\n className={cn(\r\n '!selection:text-purple-900 font-notosans lg:text-xl lg:leading-8 md:text-lg md:leading-[30px] text-base',\r\n articleClassName,\r\n )}\r\n >\r\n <ServersideTiptapBody body={json} />\r\n </div>\r\n </div>\r\n <EmbedContentInlineRenderer body={json} />\r\n </div>\r\n );\r\n },\r\n (prev, next) => prev.body?.content?.length === next.body?.content?.length,\r\n);\r\n"],"names":["memo","appendRequiredBlocksMarkerClient","ServersideTiptapBody","EmbedContentInlineRenderer","cn","TRT_ARTICLE_BODY_ID","ArticleBody","body","wrapperClassName","articleClassName","json","div","className","id","prev","next","content","length"],"mappings":"AAAA;;AAEA,SAASA,IAAI,QAAQ,QAAQ;AAC7B,kCAAkC;AAGlC,SAASC,gCAAgC,QAAQ,sFAAsF;AACvI,SAASC,oBAAoB,QAAQ,uEAAuE;AAC5G,SAASC,0BAA0B,QAAQ,6EAA6E;AACxH,SAASC,EAAE,QAAQ,4CAA4C;AAE/D,MAAMC,sBAAsB;AAO5B,OAAO,MAAMC,4BAAcN,KACzB,CAAC,EAAEO,IAAI,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAS;IAClD,MAAMC,OAAOT,iCAAiCM;IAC9C,IAAI,CAACG,MAAM,OAAO;IAClB,qBACE,MAACC;QACCC,WAAWR,GACT,iFACAI;;0BAGF,KAACG;0BACD,KAACA;gBAAIE,IAAIR;gBAAqBO,WAAU;0BAEtC,cAAA,KAACD;oBACCC,WAAWR,GACT,2GACAK;8BAGF,cAAA,KAACP;wBAAqBK,MAAMG;;;;0BAGhC,KAACP;gBAA2BI,MAAMG;;;;AAGxC,GACA,CAACI,MAAMC,OAASD,KAAKP,IAAI,EAAES,SAASC,WAAWF,KAAKR,IAAI,EAAES,SAASC,QACnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StandardArticle.d.ts","sourceRoot":"","sources":["../../../src/body/StandardArticle.tsx"],"names":[],"mappings":"AAQA,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,WAanC;AAkBD,eAAO,MAAM,eAAe;;;iCAsD3B,CAAA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
// import '../styles/globals.css';
|
|
5
|
+
import { ArticleBody } from "./ArticleBody.js";
|
|
6
|
+
// Font files can be colocated inside of `pages`
|
|
7
|
+
export function isRTL(locale) {
|
|
8
|
+
if (locale.startsWith('ar') || locale.startsWith('fa') || locale.startsWith('ur') || locale.startsWith('ps') || locale.startsWith('he') || locale.startsWith('ui')) {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
import en from '../fonts/font.en.js';
|
|
14
|
+
import ar from '../fonts/font.ar.js';
|
|
15
|
+
import fa from '../fonts/font.fa.js';
|
|
16
|
+
import ur from '../fonts/font.ur.js';
|
|
17
|
+
import ps from '../fonts/font.ps.js';
|
|
18
|
+
const localFonts = {
|
|
19
|
+
en: en,
|
|
20
|
+
ar: ar,
|
|
21
|
+
fa: fa,
|
|
22
|
+
ur: ur,
|
|
23
|
+
ps: ps
|
|
24
|
+
};
|
|
25
|
+
// console.log("LCOA", localFonts)
|
|
26
|
+
export const StandardArticle = ({ body, locale })=>{
|
|
27
|
+
const dir = isRTL(locale) ? 'rtl' : 'ltr';
|
|
28
|
+
let fonts;
|
|
29
|
+
try {
|
|
30
|
+
if ([
|
|
31
|
+
'en',
|
|
32
|
+
'ar',
|
|
33
|
+
'fa',
|
|
34
|
+
'ur',
|
|
35
|
+
'ps'
|
|
36
|
+
].includes(locale)) {
|
|
37
|
+
fonts = localFonts[locale];
|
|
38
|
+
} else {
|
|
39
|
+
fonts = localFonts?.en;
|
|
40
|
+
}
|
|
41
|
+
} catch {
|
|
42
|
+
fonts = localFonts?.en;
|
|
43
|
+
}
|
|
44
|
+
return /*#__PURE__*/ _jsxs("html", {
|
|
45
|
+
dir: dir,
|
|
46
|
+
lang: locale,
|
|
47
|
+
children: [
|
|
48
|
+
/*#__PURE__*/ _jsxs("head", {
|
|
49
|
+
children: [
|
|
50
|
+
/*#__PURE__*/ _jsx("script", {
|
|
51
|
+
src: "https://cdn.tailwindcss.com"
|
|
52
|
+
}),
|
|
53
|
+
/*#__PURE__*/ _jsx("link", {
|
|
54
|
+
href: "https://cdn.jsdelivr.net/npm/payload-richtext-tiptap/dist/src/globals.css",
|
|
55
|
+
rel: "stylesheet"
|
|
56
|
+
}),
|
|
57
|
+
/*#__PURE__*/ _jsx("link", {
|
|
58
|
+
href: "https://cdn.jsdelivr.net/npm/payload-richtext-tiptap/dist/src/article-custom.css",
|
|
59
|
+
rel: "stylesheet"
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
}),
|
|
63
|
+
/*#__PURE__*/ _jsxs("body", {
|
|
64
|
+
className: clsx('w-full overflow-x-hidden'),
|
|
65
|
+
children: [
|
|
66
|
+
/*#__PURE__*/ _jsx("main", {
|
|
67
|
+
id: "article-standard-wrapper",
|
|
68
|
+
className: "min-h-fit xl:min-h-[100vh] pt-10 pb-6 md:pb-9 lg:pb-12 xl:pb-20",
|
|
69
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
70
|
+
className: "flex flex-col gap-6 md:gap-9 xl:gap-12 items-center mx-auto mt-8",
|
|
71
|
+
children: /*#__PURE__*/ _jsx("section", {
|
|
72
|
+
className: "w-full flex justify-center",
|
|
73
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
74
|
+
className: "w-full max-w-full",
|
|
75
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
76
|
+
className: "w-full flex flex-row justify-center gap-6 overflow-hidden pt-5",
|
|
77
|
+
children: /*#__PURE__*/ _jsx(ArticleBody, {
|
|
78
|
+
body: body
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
})
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
}),
|
|
85
|
+
/*#__PURE__*/ _jsx("script", {
|
|
86
|
+
src: "https://vjs.zencdn.net/8.16.1/video.min.js"
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
})
|
|
90
|
+
]
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=StandardArticle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/body/StandardArticle.tsx"],"sourcesContent":["'use client'\nimport clsx from \"clsx\";\nimport { NextFontWithVariable } from \"next/dist/compiled/@next/font\";\n// import '../styles/globals.css';\nimport { ArticleBody } from \"./ArticleBody.js\";\n\n// Font files can be colocated inside of `pages`\n\nexport function isRTL(locale: string) {\n if (\n locale.startsWith('ar') ||\n locale.startsWith('fa') ||\n locale.startsWith('ur') ||\n locale.startsWith('ps') ||\n locale.startsWith('he') ||\n locale.startsWith('ui')\n ) {\n return true;\n }\n return false;\n\n}\n\nimport en from '../fonts/font.en.js'\nimport ar from '../fonts/font.ar.js'\nimport fa from '../fonts/font.fa.js'\nimport ur from '../fonts/font.ur.js'\nimport ps from '../fonts/font.ps.js'\nconst localFonts = {\n en: en,\n ar: ar,\n fa: fa,\n ur: ur,\n ps: ps,\n}\n\n// console.log(\"LCOA\", localFonts)\n\n\nexport const StandardArticle = ({ body, locale }) => {\n const dir = isRTL(locale) ? 'rtl' : 'ltr';\n let fonts;\n try {\n if (['en', 'ar', 'fa', 'ur', 'ps'].includes(locale)) {\n fonts = localFonts[locale] as NextFontWithVariable[];\n } else {\n fonts = localFonts?.en as NextFontWithVariable[];\n }\n } catch {\n fonts = localFonts?.en as NextFontWithVariable[];\n }\n return (\n <html dir={dir} lang={locale}>\n <head>\n\n <script src=\"https://cdn.tailwindcss.com\"></script>\n <link href=\"https://cdn.jsdelivr.net/npm/payload-richtext-tiptap/dist/src/globals.css\" rel=\"stylesheet\" />\n <link href=\"https://cdn.jsdelivr.net/npm/payload-richtext-tiptap/dist/src/article-custom.css\" rel=\"stylesheet\" />\n\n </head>\n\n <body\n className={clsx(\n 'w-full overflow-x-hidden',\n // fonts.map(f => f.variable).join(' '),\n // fonts[0].className,\n )}\n >\n <main\n id=\"article-standard-wrapper\"\n className=\"min-h-fit xl:min-h-[100vh] pt-10 pb-6 md:pb-9 lg:pb-12 xl:pb-20\"\n >\n\n <div className=\"flex flex-col gap-6 md:gap-9 xl:gap-12 items-center mx-auto mt-8\">\n {/* Article Content */}\n <section className=\"w-full flex justify-center\">\n <div className=\"w-full max-w-full\">\n <div className=\"w-full flex flex-row justify-center gap-6 overflow-hidden pt-5\">\n <ArticleBody\n body={body}\n />\n </div>\n </div>\n </section>\n\n </div>\n </main>\n <script src=\"https://vjs.zencdn.net/8.16.1/video.min.js\"></script>\n\n </body>\n </html>\n\n )\n}"],"names":["clsx","ArticleBody","isRTL","locale","startsWith","en","ar","fa","ur","ps","localFonts","StandardArticle","body","dir","fonts","includes","html","lang","head","script","src","link","href","rel","className","main","id","div","section"],"mappings":"AAAA;;AACA,OAAOA,UAAU,OAAO;AAExB,kCAAkC;AAClC,SAASC,WAAW,QAAQ,mBAAmB;AAE/C,gDAAgD;AAEhD,OAAO,SAASC,MAAMC,MAAc;IAChC,IACIA,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,SAClBD,OAAOC,UAAU,CAAC,OACpB;QACE,OAAO;IACX;IACA,OAAO;AAEX;AAEA,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,OAAOC,QAAQ,sBAAqB;AACpC,MAAMC,aAAa;IACfL,IAAIA;IACJC,IAAIA;IACJC,IAAIA;IACJC,IAAIA;IACJC,IAAIA;AACR;AAEA,kCAAkC;AAGlC,OAAO,MAAME,kBAAkB,CAAC,EAAEC,IAAI,EAAET,MAAM,EAAE;IAC5C,MAAMU,MAAMX,MAAMC,UAAU,QAAQ;IACpC,IAAIW;IACJ,IAAI;QACA,IAAI;YAAC;YAAM;YAAM;YAAM;YAAM;SAAK,CAACC,QAAQ,CAACZ,SAAS;YACjDW,QAAQJ,UAAU,CAACP,OAAO;QAC9B,OAAO;YACHW,QAAQJ,YAAYL;QACxB;IACJ,EAAE,OAAM;QACJS,QAAQJ,YAAYL;IACxB;IACA,qBACI,MAACW;QAAKH,KAAKA;QAAKI,MAAMd;;0BAClB,MAACe;;kCAEG,KAACC;wBAAOC,KAAI;;kCACZ,KAACC;wBAAKC,MAAK;wBAA4EC,KAAI;;kCAC3F,KAACF;wBAAKC,MAAK;wBAAmFC,KAAI;;;;0BAItG,MAACX;gBACGY,WAAWxB,KACP;;kCAKJ,KAACyB;wBACGC,IAAG;wBACHF,WAAU;kCAGV,cAAA,KAACG;4BAAIH,WAAU;sCAEX,cAAA,KAACI;gCAAQJ,WAAU;0CACf,cAAA,KAACG;oCAAIH,WAAU;8CACX,cAAA,KAACG;wCAAIH,WAAU;kDACX,cAAA,KAACvB;4CACGW,MAAMA;;;;;;;kCAQ9B,KAACO;wBAAOC,KAAI;;;;;;AAM5B,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { AudioBlockView } from \"./components/AudioBlockView.js\";\nimport { Audio } from \"../Audio/Audio.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n audioBlock: {\n setAudioBlock: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n }) => ReturnType;\n setAudioBlockAt: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n\n pos: number | Range;\n }) => ReturnType;\n setAudioBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setAudioBlockWidth: (width: number) => ReturnType;\n setAudioBlockCaption: (caption: boolean) => ReturnType;\n };\n }\n}\n\nexport const AudioBlock = Audio.extend({\n name: \"audioBlock\",\n\n group: \"block\",\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n src: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"src\"),\n renderHTML: (attributes) => ({\n src: attributes.src,\n }),\n },\n poster: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"poster\"),\n renderHTML: (attributes) => ({\n poster: attributes.poster,\n }),\n },\n playlistUrl: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\n renderHTML: (attributes) => ({\n \"data-playlist-url\": attributes.playlistUrl,\n }),\n },\n width: {\n default: \"100%\",\n parseHTML: (element) => element.getAttribute(\"data-width\"),\n renderHTML: (attributes) => ({\n \"data-width\": attributes.width,\n }),\n },\n align: {\n default: \"center\",\n parseHTML: (element) => element.getAttribute(\"data-align\"),\n renderHTML: (attributes) => ({\n \"data-align\": attributes.align,\n }),\n },\n alt: {\n default: undefined,\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: true,\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\n renderHTML: (attributes) => ({\n \"data-caption\": attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'audio[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), audio[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"audio\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setAudioBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"audioBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n },\n });\n },\n\n setAudioBlockAt:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContentAt(attrs.pos, {\n type: \"audioBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n },\n });\n },\n\n setAudioBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", { align }),\n\n setAudioBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n\n setAudioBlockCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", { caption }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(AudioBlockView);\n },\n});\n\nexport default AudioBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","AudioBlockView","Audio","AudioBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","poster","playlistUrl","width","align","alt","undefined","caption","tag","HTMLAttributes","options","addCommands","setAudioBlock","attrs","commands","insertContent","type","assetId","setAudioBlockAt","insertContentAt","pos","setAudioBlockAlign","updateAttributes","setAudioBlockWidth","Math","max","min","setAudioBlockCaption","addNodeView"],"mappings":"AAAA;AAEA,SAASA,qBAAqB,QAAQ,gBAAgB;AACtD,SAASC,eAAe,QAAe,eAAe;AAEtD,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SAASC,KAAK,QAAQ,oBAAoB;AA0B1C,OAAO,MAAMC,aAAaD,MAAME,MAAM,CAAC;IACrCC,MAAM;IAENC,OAAO;IAEPC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BN,KAAKM,WAAWN,GAAG;oBACrB,CAAA;YACF;YACAO,QAAQ;gBACNN,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BC,QAAQD,WAAWC,MAAM;oBAC3B,CAAA;YACF;YACAC,aAAa;gBACXP,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,qBAAqBA,WAAWE,WAAW;oBAC7C,CAAA;YACF;YACAC,OAAO;gBACLR,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWG,KAAK;oBAChC,CAAA;YACF;YACAC,OAAO;gBACLT,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWI,KAAK;oBAChC,CAAA;YACF;YACAC,KAAK;gBACHV,SAASW;gBACTV,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BK,KAAKL,WAAWK,GAAG;oBACrB,CAAA;YACF;YACAE,SAAS;gBACPZ,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC,oBAAoB;gBACjEC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,gBAAgBA,WAAWO,OAAO;oBACpC,CAAA;YACF;QACF;IACF;IAEAX;QACE,OAAO;YACL;gBACEY,KAAK;YACP;SACD;IACH;IAEAT,YAAW,EAAEU,cAAc,EAAE;QAC3B,OAAO;YACL;YACAzB,gBAAgB,IAAI,CAAC0B,OAAO,CAACD,cAAc,EAAEA;SAC9C;IACH;IAEAE;QACE,OAAO;YACLC,eACE,CAACC,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM;wBACNH,OAAO;4BACLnB,KAAKmB,MAAMnB,GAAG;4BACdO,QAAQY,MAAMZ,MAAM;4BACpBgB,SAASJ,MAAMI,OAAO;4BACtBf,aAAaW,MAAMX,WAAW;wBAChC;oBACF;gBACF;YAEFgB,iBACE,CAACL,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACX,OAAOA,SAASK,eAAe,CAACN,MAAMO,GAAG,EAAE;wBACzCJ,MAAM;wBACNH,OAAO;4BACLnB,KAAKmB,MAAMnB,GAAG;4BACdO,QAAQY,MAAMZ,MAAM;4BACpBgB,SAASJ,MAAMI,OAAO;4BACtBf,aAAaW,MAAMX,WAAW;wBAChC;oBACF;gBACF;YAEFmB,oBACE,CAACjB,QACD,CAAC,EAAEU,QAAQ,EAAE,GACXA,SAASQ,gBAAgB,CAAC,cAAc;wBAAElB;oBAAM;YAEpDmB,oBACE,CAACpB,QACD,CAAC,EAAEW,QAAQ,EAAE,GACXA,SAASQ,gBAAgB,CAAC,cAAc;wBACtCnB,OAAO,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/AudioBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { AudioBlockView } from \"./components/AudioBlockView.js\";\nimport { Audio } from \"../Audio/Audio.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n audioBlock: {\n setAudioBlock: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n }) => ReturnType;\n setAudioBlockAt: (attributes: {\n src: string;\n poster: string;\n assetId: string;\n playlistUrl?: string;\n\n pos: number | Range;\n }) => ReturnType;\n setAudioBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setAudioBlockWidth: (width: number) => ReturnType;\n setAudioBlockCaption: (caption: boolean) => ReturnType;\n };\n }\n}\n\nexport const AudioBlock = Audio.extend({\n name: \"audioBlock\",\n\n group: \"block\",\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n src: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"src\"),\n renderHTML: (attributes) => ({\n src: attributes.src,\n }),\n },\n poster: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"poster\"),\n renderHTML: (attributes) => ({\n poster: attributes.poster,\n }),\n },\n playlistUrl: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"data-playlist-url\"),\n renderHTML: (attributes) => ({\n \"data-playlist-url\": attributes.playlistUrl,\n }),\n },\n width: {\n default: \"100%\",\n parseHTML: (element) => element.getAttribute(\"data-width\"),\n renderHTML: (attributes) => ({\n \"data-width\": attributes.width,\n }),\n },\n align: {\n default: \"center\",\n parseHTML: (element) => element.getAttribute(\"data-align\"),\n renderHTML: (attributes) => ({\n \"data-align\": attributes.align,\n }),\n },\n alt: {\n default: undefined,\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: true,\n parseHTML: (element) => element.getAttribute(\"data-caption\") === \"true\",\n renderHTML: (attributes) => ({\n \"data-caption\": attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'audio[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), audio[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"audio\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setAudioBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"audioBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n },\n });\n },\n\n setAudioBlockAt:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContentAt(attrs.pos, {\n type: \"audioBlock\",\n attrs: {\n src: attrs.src,\n poster: attrs.poster,\n assetId: attrs.assetId,\n playlistUrl: attrs.playlistUrl,\n },\n });\n },\n\n setAudioBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", { align }),\n\n setAudioBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n\n setAudioBlockCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"audioBlock\", { caption }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(AudioBlockView);\n },\n});\n\nexport default AudioBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","AudioBlockView","Audio","AudioBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","poster","playlistUrl","width","align","alt","undefined","caption","tag","HTMLAttributes","options","addCommands","setAudioBlock","attrs","commands","insertContent","type","assetId","setAudioBlockAt","insertContentAt","pos","setAudioBlockAlign","updateAttributes","setAudioBlockWidth","Math","max","min","setAudioBlockCaption","addNodeView"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { ReactNode, useCallback, useRef } from \"react\";\nimport { Instance, sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n Pencil,\n PencilOff,\n} from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { AudioBlockWidth } from \"./AudioBlockWidth.js\";\nimport i18next from \"i18next\";\n\nexport const AudioBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\n const menuRef = useRef<HTMLDivElement>(null);\n const tippyInstance = useRef<Instance | null>(null);\n\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"node-audioBlock\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isActive = editor.isActive(\"audioBlock\");\n\n return isActive;\n }, [editor]);\n\n const onAlignAudioLeft = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"left\")\n .run();\n }, [editor]);\n\n const onAlignAudioCenter = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"center\")\n .run();\n }, [editor]);\n\n const onAlignAudioRight = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"right\")\n .run();\n }, [editor]);\n\n const onHideCaption = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockCaption(\n editor.isActive(\"audioBlock\", { caption: false }) ? true : false\n )\n .run();\n }, [editor]);\n\n const onWidthChange = useCallback(\n (value: number) => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockWidth(value)\n .run();\n },\n [editor]\n );\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`audioBlockMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n onCreate: (instance: Instance) => {\n tippyInstance.current = instance;\n },\n appendTo: () => {\n return appendTo?.current;\n },\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"toggleCaption\") || \"Hide/Show caption\"}\n active={editor.isActive(\"audioBlock\", { caption: false })}\n onClick={onHideCaption}\n >\n <Icon\n icon={\n editor.isActive(\"audioBlock\", { caption: false })\n ? PencilOff\n : Pencil\n }\n />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioLeft\") || \"Align audio left\"}\n active={editor.isActive(\"audioBlock\", { align: \"left\" })}\n onClick={onAlignAudioLeft}\n >\n <Icon icon={AlignHorizontalDistributeStart} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioCenter\") || \"Align audio center\"}\n active={editor.isActive(\"audioBlock\", { align: \"center\" })}\n onClick={onAlignAudioCenter}\n >\n <Icon icon={AlignHorizontalDistributeCenter} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioRight\") || \"Align audio right\"}\n active={editor.isActive(\"audioBlock\", { align: \"right\" })}\n onClick={onAlignAudioRight}\n >\n <Icon icon={AlignHorizontalDistributeEnd} />\n </Toolbar.Button>\n <Toolbar.Divider />\n <AudioBlockWidth\n onChange={onWidthChange}\n value={parseInt(editor.getAttributes(\"audioBlock\").width)}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default AudioBlockMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Pencil","PencilOff","Icon","Toolbar","getRenderContainer","AudioBlockWidth","i18next","AudioBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignAudioLeft","chain","focus","undefined","scrollIntoView","setAudioBlockAlign","run","onAlignAudioCenter","onAlignAudioRight","onHideCaption","setAudioBlockCaption","caption","onWidthChange","value","setAudioBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","onClick","icon","align","Divider","onChange","parseInt","getAttributes","width"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAAoBC,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AACvD,SAAmBC,MAAM,QAAQ,WAAW;AAC5C,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAElC,SACEC,+BAA+B,EAC/BC,4BAA4B,EAC5BC,8BAA8B,EAC9BC,MAAM,EACNC,SAAS,QACJ,eAAe;AAEtB,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,eAAe,QAAQ,uBAAuB;AACvD,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC5D,MAAMC,UAAUjB,OAAuB;IACvC,MAAMkB,gBAAgBlB,OAAwB;IAE9C,MAAMmB,yBAAyBpB,YAAY;QACzC,MAAMqB,kBAAkBT,mBAAmBI,QAAQ;QACnD,MAAMM,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACN;KAAO;IAEX,MAAMS,aAAazB,YAAY;QAC7B,MAAM0B,WAAWV,OAAOU,QAAQ,CAAC;QAEjC,OAAOA;IACT,GAAG;QAACV;KAAO;IAEX,MAAMW,mBAAmB3B,YAAY;QACnCgB,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,QACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMkB,qBAAqBlC,YAAY;QACrCgB,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,UACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMmB,oBAAoBnC,YAAY;QACpCgB,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,SACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMoB,gBAAgBpC,YAAY;QAChCgB,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCM,oBAAoB,CACnBrB,OAAOU,QAAQ,CAAC,cAAc;YAAEY,SAAS;QAAM,KAAK,OAAO,OAE5DL,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMuB,gBAAgBvC,YACpB,CAACwC;QACCxB,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCU,kBAAkB,CAACD,OACnBP,GAAG;IACR,GACA;QAACjB;KAAO;IAGV,qBACE,KAACjB;QACCiB,QAAQA;QACR0B,WAAW,CAAC,eAAe,EAAEtC,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/AudioBlock/components/AudioBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { ReactNode, useCallback, useRef } from \"react\";\nimport { Instance, sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n Pencil,\n PencilOff,\n} from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { AudioBlockWidth } from \"./AudioBlockWidth.js\";\nimport i18next from \"i18next\";\n\nexport const AudioBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\n const menuRef = useRef<HTMLDivElement>(null);\n const tippyInstance = useRef<Instance | null>(null);\n\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"node-audioBlock\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isActive = editor.isActive(\"audioBlock\");\n\n return isActive;\n }, [editor]);\n\n const onAlignAudioLeft = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"left\")\n .run();\n }, [editor]);\n\n const onAlignAudioCenter = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"center\")\n .run();\n }, [editor]);\n\n const onAlignAudioRight = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockAlign(\"right\")\n .run();\n }, [editor]);\n\n const onHideCaption = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockCaption(\n editor.isActive(\"audioBlock\", { caption: false }) ? true : false\n )\n .run();\n }, [editor]);\n\n const onWidthChange = useCallback(\n (value: number) => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setAudioBlockWidth(value)\n .run();\n },\n [editor]\n );\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`audioBlockMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n onCreate: (instance: Instance) => {\n tippyInstance.current = instance;\n },\n appendTo: () => {\n return appendTo?.current;\n },\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"toggleCaption\") || \"Hide/Show caption\"}\n active={editor.isActive(\"audioBlock\", { caption: false })}\n onClick={onHideCaption}\n >\n <Icon\n icon={\n editor.isActive(\"audioBlock\", { caption: false })\n ? PencilOff\n : Pencil\n }\n />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioLeft\") || \"Align audio left\"}\n active={editor.isActive(\"audioBlock\", { align: \"left\" })}\n onClick={onAlignAudioLeft}\n >\n <Icon icon={AlignHorizontalDistributeStart} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioCenter\") || \"Align audio center\"}\n active={editor.isActive(\"audioBlock\", { align: \"center\" })}\n onClick={onAlignAudioCenter}\n >\n <Icon icon={AlignHorizontalDistributeCenter} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignAudioRight\") || \"Align audio right\"}\n active={editor.isActive(\"audioBlock\", { align: \"right\" })}\n onClick={onAlignAudioRight}\n >\n <Icon icon={AlignHorizontalDistributeEnd} />\n </Toolbar.Button>\n <Toolbar.Divider />\n <AudioBlockWidth\n onChange={onWidthChange}\n value={parseInt(editor.getAttributes(\"audioBlock\").width)}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default AudioBlockMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Pencil","PencilOff","Icon","Toolbar","getRenderContainer","AudioBlockWidth","i18next","AudioBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignAudioLeft","chain","focus","undefined","scrollIntoView","setAudioBlockAlign","run","onAlignAudioCenter","onAlignAudioRight","onHideCaption","setAudioBlockCaption","caption","onWidthChange","value","setAudioBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","onClick","icon","align","Divider","onChange","parseInt","getAttributes","width"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/FontSize/FontSize.ts"],"sourcesContent":["import { Extension } from '@tiptap/core'\nimport '@tiptap/extension-text-style'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n fontSize: {\n setFontSize: (size: string) => ReturnType\n unsetFontSize: () => ReturnType\n }\n }\n}\n\nexport const FontSize = Extension.create({\n name: 'fontSize',\n\n addOptions() {\n return {\n types: ['textStyle'],\n }\n },\n\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph'],\n attributes: {\n class: {},\n },\n },\n {\n types: this.options.types,\n attributes: {\n fontSize: {\n parseHTML: element => element.style.fontSize.replace(/['\"]+/g, ''),\n renderHTML: attributes => {\n if (!attributes.fontSize) {\n return {}\n }\n\n return {\n style: `font-size: ${attributes.fontSize}`,\n }\n },\n },\n },\n },\n ]\n },\n\n addCommands() {\n return {\n setFontSize:\n (fontSize: string) =>\n ({ chain }) =>\n chain().setMark('textStyle', { fontSize }).run(),\n unsetFontSize:\n () =>\n ({ chain }) =>\n chain().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run(),\n }\n },\n})\n\nexport default FontSize\n"],"names":["Extension","FontSize","create","name","addOptions","types","addGlobalAttributes","attributes","class","options","fontSize","parseHTML","element","style","replace","renderHTML","addCommands","setFontSize","chain","setMark","run","unsetFontSize","removeEmptyTextStyle"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAc;AACxC,OAAO,+BAA8B;AAWrC,OAAO,MAAMC,WAAWD,UAAUE,MAAM,CAAC;IACvCC,MAAM;IAENC;QACE,OAAO;YACLC,OAAO;gBAAC;aAAY;QACtB;IACF;IAEAC;QACE,OAAO;YACL;gBACED,OAAO;oBAAC;iBAAY;gBACpBE,YAAY;oBACVC,OAAO,CAAC;gBACV;YACF;YACA;gBACEH,OAAO,IAAI,CAACI,OAAO,CAACJ,KAAK;gBACzBE,YAAY;oBACVG,UAAU;wBACRC,WAAWC,CAAAA,UAAWA,QAAQC,KAAK,CAACH,QAAQ,CAACI,OAAO,CAAC,UAAU;wBAC/DC,YAAYR,CAAAA;4BACV,IAAI,CAACA,WAAWG,QAAQ,EAAE;gCACxB,OAAO,CAAC;4BACV;4BAEA,OAAO;gCACLG,OAAO,CAAC,WAAW,EAAEN,WAAWG,QAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/FontSize/FontSize.ts"],"sourcesContent":["import { Extension } from '@tiptap/core'\nimport '@tiptap/extension-text-style'\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n fontSize: {\n setFontSize: (size: string) => ReturnType\n unsetFontSize: () => ReturnType\n }\n }\n}\n\nexport const FontSize = Extension.create({\n name: 'fontSize',\n\n addOptions() {\n return {\n types: ['textStyle'],\n }\n },\n\n addGlobalAttributes() {\n return [\n {\n types: ['paragraph'],\n attributes: {\n class: {},\n },\n },\n {\n types: this.options.types,\n attributes: {\n fontSize: {\n parseHTML: element => element.style.fontSize.replace(/['\"]+/g, ''),\n renderHTML: attributes => {\n if (!attributes.fontSize) {\n return {}\n }\n\n return {\n style: `font-size: ${attributes.fontSize}`,\n }\n },\n },\n },\n },\n ]\n },\n\n addCommands() {\n return {\n setFontSize:\n (fontSize: string) =>\n ({ chain }) =>\n chain().setMark('textStyle', { fontSize }).run(),\n unsetFontSize:\n () =>\n ({ chain }) =>\n chain().setMark('textStyle', { fontSize: null }).removeEmptyTextStyle().run(),\n }\n },\n})\n\nexport default FontSize\n"],"names":["Extension","FontSize","create","name","addOptions","types","addGlobalAttributes","attributes","class","options","fontSize","parseHTML","element","style","replace","renderHTML","addCommands","setFontSize","chain","setMark","run","unsetFontSize","removeEmptyTextStyle"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAc;AACxC,OAAO,+BAA8B;AAWrC,OAAO,MAAMC,WAAWD,UAAUE,MAAM,CAAC;IACvCC,MAAM;IAENC;QACE,OAAO;YACLC,OAAO;gBAAC;aAAY;QACtB;IACF;IAEAC;QACE,OAAO;YACL;gBACED,OAAO;oBAAC;iBAAY;gBACpBE,YAAY;oBACVC,OAAO,CAAC;gBACV;YACF;YACA;gBACEH,OAAO,IAAI,CAACI,OAAO,CAACJ,KAAK;gBACzBE,YAAY;oBACVG,UAAU;wBACRC,WAAWC,CAAAA,UAAWA,QAAQC,KAAK,CAACH,QAAQ,CAACI,OAAO,CAAC,UAAU;wBAC/DC,YAAYR,CAAAA;4BACV,IAAI,CAACA,WAAWG,QAAQ,EAAE;gCACxB,OAAO,CAAC;4BACV;4BAEA,OAAO;gCACLG,OAAO,CAAC,WAAW,EAAEN,WAAWG,QAAQ,CAAC,CAAC;4BAC5C;wBACF;oBACF;gBACF;YACF;SACD;IACH;IAEAM;QACE,OAAO;YACLC,aACE,CAACP,WACD,CAAC,EAAEQ,KAAK,EAAE,GACRA,QAAQC,OAAO,CAAC,aAAa;wBAAET;oBAAS,GAAGU,GAAG;YAClDC,eACE,IACA,CAAC,EAAEH,KAAK,EAAE,GACRA,QAAQC,OAAO,CAAC,aAAa;wBAAET,UAAU;oBAAK,GAAGY,oBAAoB,GAAGF,GAAG;QACjF;IACF;AACF,GAAE;AAEF,eAAenB,SAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Heading/Heading.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core'\nimport TiptapHeading from '@tiptap/extension-heading'\nimport type { Level } from '@tiptap/extension-heading'\n\nexport const Heading = TiptapHeading.extend({\n renderHTML({ node, HTMLAttributes }) {\n const nodeLevel = parseInt(node.attrs.level, 10) as Level\n const hasLevel = this.options.levels.includes(nodeLevel)\n const level = hasLevel ? nodeLevel : this.options.levels[0]\n\n return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n },\n})\n\nexport default Heading\n"],"names":["mergeAttributes","TiptapHeading","Heading","extend","renderHTML","node","HTMLAttributes","nodeLevel","parseInt","attrs","level","hasLevel","options","levels","includes"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAc;AAC9C,OAAOC,mBAAmB,4BAA2B;AAGrD,OAAO,MAAMC,UAAUD,cAAcE,MAAM,CAAC;IAC1CC,YAAW,EAAEC,IAAI,EAAEC,cAAc,EAAE;QACjC,MAAMC,YAAYC,SAASH,KAAKI,KAAK,CAACC,KAAK,EAAE;QAC7C,MAAMC,WAAW,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,QAAQ,CAACP;QAC9C,MAAMG,QAAQC,WAAWJ,YAAY,IAAI,CAACK,OAAO,CAACC,MAAM,CAAC,EAAE;QAE3D,OAAO;YAAC,CAAC,CAAC,EAAEH,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/Heading/Heading.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core'\nimport TiptapHeading from '@tiptap/extension-heading'\nimport type { Level } from '@tiptap/extension-heading'\n\nexport const Heading = TiptapHeading.extend({\n renderHTML({ node, HTMLAttributes }) {\n const nodeLevel = parseInt(node.attrs.level, 10) as Level\n const hasLevel = this.options.levels.includes(nodeLevel)\n const level = hasLevel ? nodeLevel : this.options.levels[0]\n\n return [`h${level}`, mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n },\n})\n\nexport default Heading\n"],"names":["mergeAttributes","TiptapHeading","Heading","extend","renderHTML","node","HTMLAttributes","nodeLevel","parseInt","attrs","level","hasLevel","options","levels","includes"],"mappings":"AAAA,SAASA,eAAe,QAAQ,eAAc;AAC9C,OAAOC,mBAAmB,4BAA2B;AAGrD,OAAO,MAAMC,UAAUD,cAAcE,MAAM,CAAC;IAC1CC,YAAW,EAAEC,IAAI,EAAEC,cAAc,EAAE;QACjC,MAAMC,YAAYC,SAASH,KAAKI,KAAK,CAACC,KAAK,EAAE;QAC7C,MAAMC,WAAW,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,QAAQ,CAACP;QAC9C,MAAMG,QAAQC,WAAWJ,YAAY,IAAI,CAACK,OAAO,CAACC,MAAM,CAAC,EAAE;QAE3D,OAAO;YAAC,CAAC,CAAC,EAAEH,MAAM,CAAC;YAAEV,gBAAgB,IAAI,CAACY,OAAO,CAACN,cAAc,EAAEA;YAAiB;SAAE;IACvF;AACF,GAAE;AAEF,eAAeJ,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { ImageBlockView } from \"./components/ImageBlockView.js\";\nimport { Image } from \"../Image/Image.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n imageBlock: {\n setImageBlock: (attributes: {\n src: string;\n assetId?: string;\n caption?: string;\n }) => ReturnType;\n setImageBlockAt: (attributes: {\n src: string;\n pos: number | Range;\n assetId?: string;\n caption?: string;\n }) => ReturnType;\n setImageBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setImageBlockWidth: (width: number) => ReturnType;\n setImageCaption: (caption: string) => ReturnType;\n };\n }\n}\n\nexport const ImageBlock = Image.extend({\n name: \"imageBlock\",\n\n group: \"block\",\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n src: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"src\"),\n renderHTML: (attributes) => ({\n src: attributes.src,\n }),\n },\n width: {\n default: \"100%\",\n parseHTML: (element) => element.getAttribute(\"data-width\"),\n renderHTML: (attributes) => ({\n \"data-width\": attributes.width,\n }),\n },\n align: {\n default: \"center\",\n parseHTML: (element) => element.getAttribute(\"data-align\"),\n renderHTML: (attributes) => ({\n \"data-align\": attributes.align,\n }),\n },\n alt: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"caption\"),\n renderHTML: (attributes) => ({\n caption: attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'img[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), img[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"img\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setImageBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"imageBlock\",\n attrs: { src: attrs.src, caption: attrs.caption },\n });\n },\n\n setImageBlockAt:\n (attrs) =>\n ({ commands }) => {\n console.log(attrs);\n return commands.insertContentAt(attrs.pos, {\n type: \"imageBlock\",\n attrs: { src: attrs.src, caption: attrs.caption },\n });\n },\n setImageCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", { caption }),\n setImageBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", { align }),\n\n setImageBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(ImageBlockView);\n },\n});\n\nexport default ImageBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","ImageBlockView","Image","ImageBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","width","align","alt","caption","tag","HTMLAttributes","options","addCommands","setImageBlock","attrs","commands","insertContent","type","setImageBlockAt","console","log","insertContentAt","pos","setImageCaption","updateAttributes","setImageBlockAlign","setImageBlockWidth","Math","max","min","addNodeView"],"mappings":"AAAA;AAEA,SAASA,qBAAqB,QAAQ,gBAAgB;AACtD,SAASC,eAAe,QAAe,eAAe;AAEtD,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SAASC,KAAK,QAAQ,oBAAoB;AAuB1C,OAAO,MAAMC,aAAaD,MAAME,MAAM,CAAC;IACrCC,MAAM;IAENC,OAAO;IAEPC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BN,KAAKM,WAAWN,GAAG;oBACrB,CAAA;YACF;YACAO,OAAO;gBACLN,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWC,KAAK;oBAChC,CAAA;YACF;YACAC,OAAO;gBACLP,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWE,KAAK;oBAChC,CAAA;YACF;YACAC,KAAK;gBACHR,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BG,KAAKH,WAAWG,GAAG;oBACrB,CAAA;YACF;YACAC,SAAS;gBACPT,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BI,SAASJ,WAAWI,OAAO;oBAC7B,CAAA;YACF;QACF;IACF;IAEAR;QACE,OAAO;YACL;gBACES,KAAK;YACP;SACD;IACH;IAEAN,YAAW,EAAEO,cAAc,EAAE;QAC3B,OAAO;YACL;YACAtB,gBAAgB,IAAI,CAACuB,OAAO,CAACD,cAAc,EAAEA;SAC9C;IACH;IAEAE;QACE,OAAO;YACLC,eACE,CAACC,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM;wBACNH,OAAO;4BAAEhB,KAAKgB,MAAMhB,GAAG;4BAAEU,SAASM,MAAMN,OAAO;wBAAC;oBAClD;gBACF;YAEFU,iBACE,CAACJ,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACXI,QAAQC,GAAG,CAACN;oBACZ,OAAOC,SAASM,eAAe,CAACP,MAAMQ,GAAG,EAAE;wBACzCL,MAAM;wBACNH,OAAO;4BAAEhB,KAAKgB,MAAMhB,GAAG;4BAAEU,SAASM,MAAMN,OAAO;wBAAC;oBAClD;gBACF;YACFe,iBACE,CAACf,UACD,CAAC,EAAEO,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBAAEhB;oBAAQ;YACtDiB,oBACE,CAACnB,QACD,CAAC,EAAES,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBAAElB;oBAAM;YAEpDoB,oBACE,CAACrB,QACD,CAAC,EAAEU,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBACtCnB,OAAO,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/ImageBlock.ts"],"sourcesContent":["\"use client\";\n\nimport { ReactNodeViewRenderer } from \"@tiptap/react\";\nimport { mergeAttributes, Range } from \"@tiptap/core\";\n\nimport { ImageBlockView } from \"./components/ImageBlockView.js\";\nimport { Image } from \"../Image/Image.js\";\n\ndeclare module \"@tiptap/core\" {\n interface Commands<ReturnType> {\n imageBlock: {\n setImageBlock: (attributes: {\n src: string;\n assetId?: string;\n caption?: string;\n }) => ReturnType;\n setImageBlockAt: (attributes: {\n src: string;\n pos: number | Range;\n assetId?: string;\n caption?: string;\n }) => ReturnType;\n setImageBlockAlign: (align: \"left\" | \"center\" | \"right\") => ReturnType;\n setImageBlockWidth: (width: number) => ReturnType;\n setImageCaption: (caption: string) => ReturnType;\n };\n }\n}\n\nexport const ImageBlock = Image.extend({\n name: \"imageBlock\",\n\n group: \"block\",\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n src: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"src\"),\n renderHTML: (attributes) => ({\n src: attributes.src,\n }),\n },\n width: {\n default: \"100%\",\n parseHTML: (element) => element.getAttribute(\"data-width\"),\n renderHTML: (attributes) => ({\n \"data-width\": attributes.width,\n }),\n },\n align: {\n default: \"center\",\n parseHTML: (element) => element.getAttribute(\"data-align\"),\n renderHTML: (attributes) => ({\n \"data-align\": attributes.align,\n }),\n },\n alt: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"alt\"),\n renderHTML: (attributes) => ({\n alt: attributes.alt,\n }),\n },\n caption: {\n default: \"\",\n parseHTML: (element) => element.getAttribute(\"caption\"),\n renderHTML: (attributes) => ({\n caption: attributes.caption,\n }),\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'img[src*=\"tiptap.dev\"]:not([src^=\"data:\"]), img[src*=\"windows.net\"]:not([src^=\"data:\"])',\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n \"img\",\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n ];\n },\n\n addCommands() {\n return {\n setImageBlock:\n (attrs) =>\n ({ commands }) => {\n return commands.insertContent({\n type: \"imageBlock\",\n attrs: { src: attrs.src, caption: attrs.caption },\n });\n },\n\n setImageBlockAt:\n (attrs) =>\n ({ commands }) => {\n console.log(attrs);\n return commands.insertContentAt(attrs.pos, {\n type: \"imageBlock\",\n attrs: { src: attrs.src, caption: attrs.caption },\n });\n },\n setImageCaption:\n (caption) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", { caption }),\n setImageBlockAlign:\n (align) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", { align }),\n\n setImageBlockWidth:\n (width) =>\n ({ commands }) =>\n commands.updateAttributes(\"imageBlock\", {\n width: `${Math.max(0, Math.min(100, width))}%`,\n }),\n };\n },\n\n addNodeView() {\n //@ts-ignore\n return ReactNodeViewRenderer(ImageBlockView);\n },\n});\n\nexport default ImageBlock;\n"],"names":["ReactNodeViewRenderer","mergeAttributes","ImageBlockView","Image","ImageBlock","extend","name","group","defining","isolating","addAttributes","src","default","parseHTML","element","getAttribute","renderHTML","attributes","width","align","alt","caption","tag","HTMLAttributes","options","addCommands","setImageBlock","attrs","commands","insertContent","type","setImageBlockAt","console","log","insertContentAt","pos","setImageCaption","updateAttributes","setImageBlockAlign","setImageBlockWidth","Math","max","min","addNodeView"],"mappings":"AAAA;AAEA,SAASA,qBAAqB,QAAQ,gBAAgB;AACtD,SAASC,eAAe,QAAe,eAAe;AAEtD,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SAASC,KAAK,QAAQ,oBAAoB;AAuB1C,OAAO,MAAMC,aAAaD,MAAME,MAAM,CAAC;IACrCC,MAAM;IAENC,OAAO;IAEPC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACLC,KAAK;gBACHC,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BN,KAAKM,WAAWN,GAAG;oBACrB,CAAA;YACF;YACAO,OAAO;gBACLN,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWC,KAAK;oBAChC,CAAA;YACF;YACAC,OAAO;gBACLP,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3B,cAAcA,WAAWE,KAAK;oBAChC,CAAA;YACF;YACAC,KAAK;gBACHR,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BG,KAAKH,WAAWG,GAAG;oBACrB,CAAA;YACF;YACAC,SAAS;gBACPT,SAAS;gBACTC,WAAW,CAACC,UAAYA,QAAQC,YAAY,CAAC;gBAC7CC,YAAY,CAACC,aAAgB,CAAA;wBAC3BI,SAASJ,WAAWI,OAAO;oBAC7B,CAAA;YACF;QACF;IACF;IAEAR;QACE,OAAO;YACL;gBACES,KAAK;YACP;SACD;IACH;IAEAN,YAAW,EAAEO,cAAc,EAAE;QAC3B,OAAO;YACL;YACAtB,gBAAgB,IAAI,CAACuB,OAAO,CAACD,cAAc,EAAEA;SAC9C;IACH;IAEAE;QACE,OAAO;YACLC,eACE,CAACC,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACX,OAAOA,SAASC,aAAa,CAAC;wBAC5BC,MAAM;wBACNH,OAAO;4BAAEhB,KAAKgB,MAAMhB,GAAG;4BAAEU,SAASM,MAAMN,OAAO;wBAAC;oBAClD;gBACF;YAEFU,iBACE,CAACJ,QACD,CAAC,EAAEC,QAAQ,EAAE;oBACXI,QAAQC,GAAG,CAACN;oBACZ,OAAOC,SAASM,eAAe,CAACP,MAAMQ,GAAG,EAAE;wBACzCL,MAAM;wBACNH,OAAO;4BAAEhB,KAAKgB,MAAMhB,GAAG;4BAAEU,SAASM,MAAMN,OAAO;wBAAC;oBAClD;gBACF;YACFe,iBACE,CAACf,UACD,CAAC,EAAEO,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBAAEhB;oBAAQ;YACtDiB,oBACE,CAACnB,QACD,CAAC,EAAES,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBAAElB;oBAAM;YAEpDoB,oBACE,CAACrB,QACD,CAAC,EAAEU,QAAQ,EAAE,GACXA,SAASS,gBAAgB,CAAC,cAAc;wBACtCnB,OAAO,CAAC,EAAEsB,KAAKC,GAAG,CAAC,GAAGD,KAAKE,GAAG,CAAC,KAAKxB,QAAQ,CAAC,CAAC;oBAChD;QACN;IACF;IAEAyB;QACE,YAAY;QACZ,OAAO3C,sBAAsBE;IAC/B;AACF,GAAG;AAEH,eAAeE,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { ReactNode, useCallback, useRef } from \"react\";\nimport { Instance, sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n} from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { ImageBlockWidth } from \"./ImageBlockWidth.js\";\nimport i18next from \"i18next\";\n\nexport const ImageBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\n const menuRef = useRef<HTMLDivElement>(null);\n const tippyInstance = useRef<Instance | null>(null);\n\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"node-imageBlock\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isActive = editor.isActive(\"imageBlock\");\n\n return isActive;\n }, [editor]);\n\n const onAlignImageLeft = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"left\")\n .run();\n }, [editor]);\n\n const onAlignImageCenter = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"center\")\n .run();\n }, [editor]);\n\n const onAlignImageRight = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"right\")\n .run();\n }, [editor]);\n\n const onWidthChange = useCallback(\n (value: number) => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockWidth(value)\n .run();\n },\n [editor]\n );\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`imageBlockMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n onCreate: (instance: Instance) => {\n tippyInstance.current = instance;\n },\n appendTo: () => {\n return appendTo?.current;\n },\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageLeft\") || \"Align image left\"}\n active={editor.isActive(\"imageBlock\", { align: \"left\" })}\n onClick={onAlignImageLeft}\n >\n <Icon icon={AlignHorizontalDistributeStart} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageCenter\") || \"Align image center\"}\n active={editor.isActive(\"imageBlock\", { align: \"center\" })}\n onClick={onAlignImageCenter}\n >\n <Icon icon={AlignHorizontalDistributeCenter} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageRight\") || \"Align image right\"}\n active={editor.isActive(\"imageBlock\", { align: \"right\" })}\n onClick={onAlignImageRight}\n >\n <Icon icon={AlignHorizontalDistributeEnd} />\n </Toolbar.Button>\n <Toolbar.Divider />\n <ImageBlockWidth\n onChange={onWidthChange}\n value={parseInt(editor.getAttributes(\"imageBlock\").width)}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default ImageBlockMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Icon","Toolbar","getRenderContainer","ImageBlockWidth","i18next","ImageBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignImageLeft","chain","focus","undefined","scrollIntoView","setImageBlockAlign","run","onAlignImageCenter","onAlignImageRight","onWidthChange","value","setImageBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","align","onClick","icon","Divider","onChange","parseInt","getAttributes","width"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAAoBC,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AACvD,SAAmBC,MAAM,QAAQ,WAAW;AAC5C,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAElC,SACEC,+BAA+B,EAC/BC,4BAA4B,EAC5BC,8BAA8B,QACzB,eAAe;AAEtB,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,eAAe,QAAQ,uBAAuB;AACvD,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,iBAAiB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IAC5D,MAAMC,UAAUf,OAAuB;IACvC,MAAMgB,gBAAgBhB,OAAwB;IAE9C,MAAMiB,yBAAyBlB,YAAY;QACzC,MAAMmB,kBAAkBT,mBAAmBI,QAAQ;QACnD,MAAMM,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACN;KAAO;IAEX,MAAMS,aAAavB,YAAY;QAC7B,MAAMwB,WAAWV,OAAOU,QAAQ,CAAC;QAEjC,OAAOA;IACT,GAAG;QAACV;KAAO;IAEX,MAAMW,mBAAmBzB,YAAY;QACnCc,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,QACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMkB,qBAAqBhC,YAAY;QACrCc,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,UACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMmB,oBAAoBjC,YAAY;QACpCc,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCC,kBAAkB,CAAC,SACnBC,GAAG;IACR,GAAG;QAACjB;KAAO;IAEX,MAAMoB,gBAAgBlC,YACpB,CAACmC;QACCrB,OACGY,KAAK,GACLC,KAAK,CAACC,WAAW;YAAEC,gBAAgB;QAAM,GACzCO,kBAAkB,CAACD,OACnBJ,GAAG;IACR,GACA;QAACjB;KAAO;IAGV,qBACE,KAACf;QACCe,QAAQA;QACRuB,WAAW,CAAC,eAAe,EAAEjC,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageBlock/components/ImageBlockMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { ReactNode, useCallback, useRef } from \"react\";\nimport { Instance, sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n AlignHorizontalDistributeCenter,\n AlignHorizontalDistributeEnd,\n AlignHorizontalDistributeStart,\n} from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { ImageBlockWidth } from \"./ImageBlockWidth.js\";\nimport i18next from \"i18next\";\n\nexport const ImageBlockMenu = ({ editor, appendTo }: MenuProps): ReactNode => {\n const menuRef = useRef<HTMLDivElement>(null);\n const tippyInstance = useRef<Instance | null>(null);\n\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"node-imageBlock\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isActive = editor.isActive(\"imageBlock\");\n\n return isActive;\n }, [editor]);\n\n const onAlignImageLeft = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"left\")\n .run();\n }, [editor]);\n\n const onAlignImageCenter = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"center\")\n .run();\n }, [editor]);\n\n const onAlignImageRight = useCallback(() => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockAlign(\"right\")\n .run();\n }, [editor]);\n\n const onWidthChange = useCallback(\n (value: number) => {\n editor\n .chain()\n .focus(undefined, { scrollIntoView: false })\n .setImageBlockWidth(value)\n .run();\n },\n [editor]\n );\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`imageBlockMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n onCreate: (instance: Instance) => {\n tippyInstance.current = instance;\n },\n appendTo: () => {\n return appendTo?.current;\n },\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper shouldShowContent={shouldShow()} ref={menuRef}>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageLeft\") || \"Align image left\"}\n active={editor.isActive(\"imageBlock\", { align: \"left\" })}\n onClick={onAlignImageLeft}\n >\n <Icon icon={AlignHorizontalDistributeStart} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageCenter\") || \"Align image center\"}\n active={editor.isActive(\"imageBlock\", { align: \"center\" })}\n onClick={onAlignImageCenter}\n >\n <Icon icon={AlignHorizontalDistributeCenter} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"alignImageRight\") || \"Align image right\"}\n active={editor.isActive(\"imageBlock\", { align: \"right\" })}\n onClick={onAlignImageRight}\n >\n <Icon icon={AlignHorizontalDistributeEnd} />\n </Toolbar.Button>\n <Toolbar.Divider />\n <ImageBlockWidth\n onChange={onWidthChange}\n value={parseInt(editor.getAttributes(\"imageBlock\").width)}\n />\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default ImageBlockMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","useRef","sticky","v4","uuid","AlignHorizontalDistributeCenter","AlignHorizontalDistributeEnd","AlignHorizontalDistributeStart","Icon","Toolbar","getRenderContainer","ImageBlockWidth","i18next","ImageBlockMenu","editor","appendTo","menuRef","tippyInstance","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isActive","onAlignImageLeft","chain","focus","undefined","scrollIntoView","setImageBlockAlign","run","onAlignImageCenter","onAlignImageRight","onWidthChange","value","setImageBlockWidth","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","onCreate","instance","current","plugins","Wrapper","shouldShowContent","ref","Button","type","tooltip","t","active","align","onClick","icon","Divider","onChange","parseInt","getAttributes","width"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAmB,MAAM,eAAe,CAAC;AAIxD,OAAO,EAEL,SAAS,EACT,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAC1C,eAAO,MAAM,kBAAkB,uBAAwB,eAAe,iCAKjE;IACD,MAAM,EAAE,MAAM,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QAAE,KAAK,EAAE;YAAE,IAAI,CAAC,EAAE,SAAS,CAAA;SAAE,CAAA;KAAE,CAAC;CACvC,gCAyEF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/ImageUpload/view/ImageUpload.tsx"],"sourcesContent":["\"use client\"\nimport { Editor, NodeViewWrapper } from \"@tiptap/react\";\nimport i18next from \"i18next\";\nimport { ImagePlus } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport {\n AssetReturnType,\n AssetType,\n openAssetHQType,\n} from \"src/fields/TiptapEditor/types.js\";\nexport const ImageUploadBuilder = (openAssetHQHandler: openAssetHQType) => {\n const ImageUpload = ({\n getPos,\n editor,\n node,\n }: {\n getPos: () => number;\n editor: Editor;\n node: { attrs: { type?: AssetType } };\n }) => {\n const [done, setDone] = useState(false);\n const onUpload = useCallback(\n (asset: AssetReturnType) => {\n if (asset && !done) {\n let title = asset.title;\n if (i18next.language !== \"en\" && !!asset.title_locale[i18next.language.toUpperCase()]) {\n title = asset.title_locale[i18next.language.toUpperCase()];\n }\n if (asset.type === \"IMAGE\") {\n editor\n .chain()\n .focus()\n .setImageBlock({\n src: asset?.optimizedImageUrl || asset.fullUrl,\n assetId: asset.id,\n caption: title,\n })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n } else {\n console.log(\"calling editor setVideoBlock.\", {\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n });\n editor\n .chain()\n .focus()\n .setVideoBlock({\n src: asset.videoUrl,\n poster: asset.fullUrl,\n assetId: asset.id,\n playlistUrl: asset.playlistUrl,\n title: title\n })\n .deleteRange({ from: getPos(), to: getPos() })\n .focus()\n .run();\n setDone(true);\n }\n } else {\n console.info(\n \"ImageUpload onUpload called but this is a finished component.\"\n );\n }\n },\n [getPos, editor]\n );\n\n return (\n <NodeViewWrapper>\n <div className=\"p-0 m-0\" data-drag-handle>\n <a\n href=\"#\"\n className=\"text-black text-sm font-medium uppercase hover:cursor-pointer p-2.5 bg-white rounded-[7px] transition ease-in-out delay-150 hover:scale-110 hover:bg-amber-600 shadow justify-between items-center flex flex-row\"\n onClick={(e) => {\n e.preventDefault();\n openAssetHQHandler(onUpload, null, node?.attrs?.type ?? \"image\");\n }}\n >\n <ImagePlus className=\"mr-2\" />\n Select an asset\n </a>\n </div>\n </NodeViewWrapper>\n );\n };\n\n return ImageUpload;\n};\n"],"names":["NodeViewWrapper","i18next","ImagePlus","useCallback","useState","ImageUploadBuilder","openAssetHQHandler","ImageUpload","getPos","editor","node","done","setDone","onUpload","asset","title","language","title_locale","toUpperCase","type","chain","focus","setImageBlock","src","optimizedImageUrl","fullUrl","assetId","id","caption","deleteRange","from","to","run","console","log","videoUrl","poster","playlistUrl","setVideoBlock","info","div","className","data-drag-handle","a","href","onClick","e","preventDefault","attrs"],"mappings":"AAAA;;AACA,SAAiBA,eAAe,QAAQ,gBAAgB;AACxD,OAAOC,aAAa,UAAU;AAC9B,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAM9C,OAAO,MAAMC,qBAAqB,CAACC;IACjC,MAAMC,cAAc,CAAC,EACnBC,MAAM,EACNC,MAAM,EACNC,IAAI,EAKL;QACC,MAAM,CAACC,MAAMC,QAAQ,GAAGR,SAAS;QACjC,MAAMS,WAAWV,YACf,CAACW;YACC,IAAIA,SAAS,CAACH,MAAM;gBAClB,IAAII,QAAQD,MAAMC,KAAK;gBACvB,IAAId,QAAQe,QAAQ,KAAK,QAAQ,CAAC,CAACF,MAAMG,YAAY,CAAChB,QAAQe,QAAQ,CAACE,WAAW,GAAG,EAAE;oBACrFH,QAAQD,MAAMG,YAAY,CAAChB,QAAQe,QAAQ,CAACE,WAAW,GAAG;gBAC5D;gBACA,IAAIJ,MAAMK,IAAI,KAAK,SAAS;oBAC1BV,OACGW,KAAK,GACLC,KAAK,GACLC,aAAa,CAAC;wBACbC,KAAKT,OAAOU,qBAAqBV,MAAMW,OAAO;wBAC9CC,SAASZ,MAAMa,EAAE;wBACjBC,SAASb;oBACX,GACCc,WAAW,CAAC;wBAAEC,MAAMtB;wBAAUuB,IAAIvB;oBAAS,GAC3Ca,KAAK,GACLW,GAAG;oBACNpB,QAAQ;gBACV,OAAO;oBACLqB,QAAQC,GAAG,CAAC,iCAAiC;wBAC3CX,KAAKT,MAAMqB,QAAQ;wBACnBC,QAAQtB,MAAMW,OAAO;wBACrBC,SAASZ,MAAMa,EAAE;wBACjBU,aAAavB,MAAMuB,WAAW;oBAChC;oBACA5B,OACGW,KAAK,GACLC,KAAK,GACLiB,aAAa,CAAC;wBACbf,KAAKT,MAAMqB,QAAQ;wBACnBC,QAAQtB,MAAMW,OAAO;wBACrBC,SAASZ,MAAMa,EAAE;wBACjBU,aAAavB,MAAMuB,WAAW;wBAC9BtB,OAAOA;oBACT,GACCc,WAAW,CAAC;wBAAEC,MAAMtB;wBAAUuB,IAAIvB;oBAAS,GAC3Ca,KAAK,GACLW,GAAG;oBACNpB,QAAQ;gBACV;YACF,OAAO;gBACLqB,QAAQM,IAAI,CACV;YAEJ;QACF,GACA;YAAC/B;YAAQC;SAAO;QAGlB,qBACE,KAACT;sBACC,cAAA,KAACwC;gBAAIC,WAAU;gBAAUC,kBAAgB;0BACvC,cAAA,MAACC;oBACCC,MAAK;oBACLH,WAAU;oBACVI,SAAS,CAACC;wBACRA,EAAEC,cAAc;wBAChBzC,mBAAmBO,UAAU,MAAMH,MAAMsC,OAAO7B,QAAQ;oBAC1D;;sCAEA,KAACjB;4BAAUuC,WAAU;;wBAAS;;;;;IAMxC;IAEA,OAAOlC;AACT,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.tsx"],"sourcesContent":["\"use client\";\n\n// import { CustomRelationShipComponent } from '@/components/CustomRelationshipComponent'\n// import { PayloadAsyncSelect } from '@/components/PayloadAsyncSelect'\nimport { Button } from \"@payloadcms/ui/elements/Button\";\nimport { useCallback, useState } from \"react\";\n\nconst limit = 10;\nexport const ContentRelationship = ({\n setRelationship,\n cancelSelection,\n}: {\n type?: string;\n relationId?: string;\n cancelSelection: () => void;\n setRelationship: ({\n id,\n type,\n thumbnail,\n title,\n url,\n }: {\n id: string;\n type: string;\n thumbnail: string;\n title: string;\n url: string;\n }) => void;\n}) => {\n const [optionType, setOptionType] = useState(\"articles\");\n const [relationOption, setRelationOption] = useState<any>(null);\n const opts = [\n {\n label: \"Article\",\n value: \"articles\",\n },\n {\n label: \"Video\",\n value: \"video\",\n },\n {\n label: \"Audio\",\n value: \"audios\",\n },\n // {\n // label: 'Media',\n // value: 'media',\n // },\n ];\n\n const fetchContentTypes = useCallback(\n async (search: any, loadedOptions: any, { page }: any) => {\n try {\n // Perform your API call with the endpoint and inputValue\n\n return {\n options: opts,\n hasMore: opts?.length === limit,\n additional: {\n page: page + 1,\n },\n };\n } catch (error) {\n // console.error('Error fetching data:', error)\n }\n },\n []\n );\n return (\n <div className=\"w-full min-w-[300px] \">\n {/* <PayloadAsyncSelect\n fetchData={fetchContentTypes as any}\n handleChange={(val: string) => {\n setOptionType(val);\n }}\n defaultValue={opts?.find((option) => {\n return option.value === optionType;\n })}\n cacheOptions={null}\n /> */}\n\n {/* <CustomRelationShipComponent\n label={`${\n opts?.find((option) => {\n return option.value === optionType\n })?.label\n } Content`}\n collection={optionType}\n key={optionType}\n value={relationOption?.id ?? null}\n handleChange={(val: any) => {\n setRelationOption(val)\n }}\n handleInitialLoad={(val: any) => {\n setRelationOption(val)\n }}\n /> */}\n\n <div>\n <Button\n onClick={() => {\n let url = \"\";\n const topic = relationOption?.topics?.[0]?.slug ?? \"\";\n switch (optionType) {\n case \"articles\":\n url = `/${topic}/${relationOption?.slug}`;\n break;\n case \"video\":\n url = `/video/${relationOption?.slug}`;\n\n break;\n case \"audios\":\n url = `/audio/${relationOption?.slug}`;\n break;\n }\n setRelationship({\n id: relationOption?.id,\n type: optionType,\n thumbnail: relationOption?.thumbnail?.url,\n title: relationOption?.title,\n url: url,\n });\n }}\n >\n Save\n </Button>\n\n {/* <Button\n onClick={() => {\n cancelSelection()\n }}\n >\n Cancel\n </Button> */}\n </div>\n </div>\n );\n};\n"],"names":["Button","useCallback","useState","limit","ContentRelationship","setRelationship","cancelSelection","optionType","setOptionType","relationOption","setRelationOption","opts","label","value","fetchContentTypes","search","loadedOptions","page","options","hasMore","length","additional","error","div","className","onClick","url","topic","topics","slug","id","type","thumbnail","title"],"mappings":"AAAA;;AAEA,yFAAyF;AACzF,uEAAuE;AACvE,SAASA,MAAM,QAAQ,iCAAiC;AACxD,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAE9C,MAAMC,QAAQ;AACd,OAAO,MAAMC,sBAAsB,CAAC,EAClCC,eAAe,EACfC,eAAe,EAkBhB;IACC,MAAM,CAACC,YAAYC,cAAc,GAAGN,SAAS;IAC7C,MAAM,CAACO,gBAAgBC,kBAAkB,GAAGR,SAAc;IAC1D,MAAMS,OAAO;QACX;YACEC,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;KAKD;IAED,MAAMC,oBAAoBb,YACxB,OAAOc,QAAaC,eAAoB,EAAEC,IAAI,EAAO;QACnD,IAAI;YACF,yDAAyD;YAEzD,OAAO;gBACLC,SAASP;gBACTQ,SAASR,MAAMS,WAAWjB;gBAC1BkB,YAAY;oBACVJ,MAAMA,OAAO;gBACf;YACF;QACF,EAAE,OAAOK,OAAO;QACd,+CAA+C;QACjD;IACF,GACA,EAAE;IAEJ,qBACE,KAACC;QAAIC,WAAU;kBA6Bb,cAAA,KAACD;sBACC,cAAA,KAACvB;gBACCyB,SAAS;oBACP,IAAIC,MAAM;oBACV,MAAMC,QAAQlB,gBAAgBmB,QAAQ,CAAC,EAAE,EAAEC,QAAQ;oBACnD,OAAQtB;wBACN,KAAK;4BACHmB,MAAM,CAAC,CAAC,EAAEC,MAAM,CAAC,EAAElB,gBAAgBoB,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/InsideLinks/InsideLink.client.tsx"],"sourcesContent":["\"use client\";\n\n// import { CustomRelationShipComponent } from '@/components/CustomRelationshipComponent'\n// import { PayloadAsyncSelect } from '@/components/PayloadAsyncSelect'\nimport { Button } from \"@payloadcms/ui/elements/Button\";\nimport { useCallback, useState } from \"react\";\n\nconst limit = 10;\nexport const ContentRelationship = ({\n setRelationship,\n cancelSelection,\n}: {\n type?: string;\n relationId?: string;\n cancelSelection: () => void;\n setRelationship: ({\n id,\n type,\n thumbnail,\n title,\n url,\n }: {\n id: string;\n type: string;\n thumbnail: string;\n title: string;\n url: string;\n }) => void;\n}) => {\n const [optionType, setOptionType] = useState(\"articles\");\n const [relationOption, setRelationOption] = useState<any>(null);\n const opts = [\n {\n label: \"Article\",\n value: \"articles\",\n },\n {\n label: \"Video\",\n value: \"video\",\n },\n {\n label: \"Audio\",\n value: \"audios\",\n },\n // {\n // label: 'Media',\n // value: 'media',\n // },\n ];\n\n const fetchContentTypes = useCallback(\n async (search: any, loadedOptions: any, { page }: any) => {\n try {\n // Perform your API call with the endpoint and inputValue\n\n return {\n options: opts,\n hasMore: opts?.length === limit,\n additional: {\n page: page + 1,\n },\n };\n } catch (error) {\n // console.error('Error fetching data:', error)\n }\n },\n []\n );\n return (\n <div className=\"w-full min-w-[300px] \">\n {/* <PayloadAsyncSelect\n fetchData={fetchContentTypes as any}\n handleChange={(val: string) => {\n setOptionType(val);\n }}\n defaultValue={opts?.find((option) => {\n return option.value === optionType;\n })}\n cacheOptions={null}\n /> */}\n\n {/* <CustomRelationShipComponent\n label={`${\n opts?.find((option) => {\n return option.value === optionType\n })?.label\n } Content`}\n collection={optionType}\n key={optionType}\n value={relationOption?.id ?? null}\n handleChange={(val: any) => {\n setRelationOption(val)\n }}\n handleInitialLoad={(val: any) => {\n setRelationOption(val)\n }}\n /> */}\n\n <div>\n <Button\n onClick={() => {\n let url = \"\";\n const topic = relationOption?.topics?.[0]?.slug ?? \"\";\n switch (optionType) {\n case \"articles\":\n url = `/${topic}/${relationOption?.slug}`;\n break;\n case \"video\":\n url = `/video/${relationOption?.slug}`;\n\n break;\n case \"audios\":\n url = `/audio/${relationOption?.slug}`;\n break;\n }\n setRelationship({\n id: relationOption?.id,\n type: optionType,\n thumbnail: relationOption?.thumbnail?.url,\n title: relationOption?.title,\n url: url,\n });\n }}\n >\n Save\n </Button>\n\n {/* <Button\n onClick={() => {\n cancelSelection()\n }}\n >\n Cancel\n </Button> */}\n </div>\n </div>\n );\n};\n"],"names":["Button","useCallback","useState","limit","ContentRelationship","setRelationship","cancelSelection","optionType","setOptionType","relationOption","setRelationOption","opts","label","value","fetchContentTypes","search","loadedOptions","page","options","hasMore","length","additional","error","div","className","onClick","url","topic","topics","slug","id","type","thumbnail","title"],"mappings":"AAAA;;AAEA,yFAAyF;AACzF,uEAAuE;AACvE,SAASA,MAAM,QAAQ,iCAAiC;AACxD,SAASC,WAAW,EAAEC,QAAQ,QAAQ,QAAQ;AAE9C,MAAMC,QAAQ;AACd,OAAO,MAAMC,sBAAsB,CAAC,EAClCC,eAAe,EACfC,eAAe,EAkBhB;IACC,MAAM,CAACC,YAAYC,cAAc,GAAGN,SAAS;IAC7C,MAAM,CAACO,gBAAgBC,kBAAkB,GAAGR,SAAc;IAC1D,MAAMS,OAAO;QACX;YACEC,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;QACA;YACED,OAAO;YACPC,OAAO;QACT;KAKD;IAED,MAAMC,oBAAoBb,YACxB,OAAOc,QAAaC,eAAoB,EAAEC,IAAI,EAAO;QACnD,IAAI;YACF,yDAAyD;YAEzD,OAAO;gBACLC,SAASP;gBACTQ,SAASR,MAAMS,WAAWjB;gBAC1BkB,YAAY;oBACVJ,MAAMA,OAAO;gBACf;YACF;QACF,EAAE,OAAOK,OAAO;QACd,+CAA+C;QACjD;IACF,GACA,EAAE;IAEJ,qBACE,KAACC;QAAIC,WAAU;kBA6Bb,cAAA,KAACD;sBACC,cAAA,KAACvB;gBACCyB,SAAS;oBACP,IAAIC,MAAM;oBACV,MAAMC,QAAQlB,gBAAgBmB,QAAQ,CAAC,EAAE,EAAEC,QAAQ;oBACnD,OAAQtB;wBACN,KAAK;4BACHmB,MAAM,CAAC,CAAC,EAAEC,MAAM,CAAC,EAAElB,gBAAgBoB,KAAK,CAAC;4BACzC;wBACF,KAAK;4BACHH,MAAM,CAAC,OAAO,EAAEjB,gBAAgBoB,KAAK,CAAC;4BAEtC;wBACF,KAAK;4BACHH,MAAM,CAAC,OAAO,EAAEjB,gBAAgBoB,KAAK,CAAC;4BACtC;oBACJ;oBACAxB,gBAAgB;wBACdyB,IAAIrB,gBAAgBqB;wBACpBC,MAAMxB;wBACNyB,WAAWvB,gBAAgBuB,WAAWN;wBACtCO,OAAOxB,gBAAgBwB;wBACvBP,KAAKA;oBACP;gBACF;0BACD;;;;AAcT,EAAE"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Node } from '@tiptap/core';
|
|
2
|
-
export var ColumnLayout
|
|
2
|
+
export var ColumnLayout;
|
|
3
|
+
(function(ColumnLayout) {
|
|
3
4
|
ColumnLayout["SidebarLeft"] = "sidebar-left";
|
|
4
5
|
ColumnLayout["SidebarRight"] = "sidebar-right";
|
|
5
6
|
ColumnLayout["TwoColumn"] = "two-column";
|
|
6
|
-
|
|
7
|
-
}({});
|
|
7
|
+
})(ColumnLayout || (ColumnLayout = {}));
|
|
8
8
|
export const Columns = Node.create({
|
|
9
9
|
name: 'columns',
|
|
10
10
|
group: 'columns',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/Columns.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\n\nexport enum ColumnLayout {\n SidebarLeft = 'sidebar-left',\n SidebarRight = 'sidebar-right',\n TwoColumn = 'two-column',\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n columns: {\n setColumns: () => ReturnType\n setLayout: (layout: ColumnLayout) => ReturnType\n }\n }\n}\n\nexport const Columns = Node.create({\n name: 'columns',\n\n group: 'columns',\n\n content: 'column column',\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n layout: {\n default: ColumnLayout.TwoColumn,\n },\n }\n },\n\n addCommands() {\n return {\n setColumns:\n () =>\n ({ commands }) =>\n commands.insertContent(\n `<div data-type=\"columns\"><div data-type=\"column\" data-position=\"left\"><p></p></div><div data-type=\"column\" data-position=\"right\"><p></p></div></div>`,\n ),\n setLayout:\n (layout: ColumnLayout) =>\n ({ commands }) =>\n commands.updateAttributes('columns', { layout }),\n }\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['div', { 'data-type': 'columns', class: `layout-${HTMLAttributes.layout}` }, 0]\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"columns\"]',\n },\n ]\n },\n})\n\nexport default Columns\n"],"names":["Node","ColumnLayout","Columns","create","name","group","content","defining","isolating","addAttributes","layout","default","addCommands","setColumns","commands","insertContent","setLayout","updateAttributes","renderHTML","HTMLAttributes","class","parseHTML","tag"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/Columns.ts"],"sourcesContent":["import { Node } from '@tiptap/core'\n\nexport enum ColumnLayout {\n SidebarLeft = 'sidebar-left',\n SidebarRight = 'sidebar-right',\n TwoColumn = 'two-column',\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n columns: {\n setColumns: () => ReturnType\n setLayout: (layout: ColumnLayout) => ReturnType\n }\n }\n}\n\nexport const Columns = Node.create({\n name: 'columns',\n\n group: 'columns',\n\n content: 'column column',\n\n defining: true,\n\n isolating: true,\n\n addAttributes() {\n return {\n layout: {\n default: ColumnLayout.TwoColumn,\n },\n }\n },\n\n addCommands() {\n return {\n setColumns:\n () =>\n ({ commands }) =>\n commands.insertContent(\n `<div data-type=\"columns\"><div data-type=\"column\" data-position=\"left\"><p></p></div><div data-type=\"column\" data-position=\"right\"><p></p></div></div>`,\n ),\n setLayout:\n (layout: ColumnLayout) =>\n ({ commands }) =>\n commands.updateAttributes('columns', { layout }),\n }\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['div', { 'data-type': 'columns', class: `layout-${HTMLAttributes.layout}` }, 0]\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"columns\"]',\n },\n ]\n },\n})\n\nexport default Columns\n"],"names":["Node","ColumnLayout","Columns","create","name","group","content","defining","isolating","addAttributes","layout","default","addCommands","setColumns","commands","insertContent","setLayout","updateAttributes","renderHTML","HTMLAttributes","class","parseHTML","tag"],"mappings":"AAAA,SAASA,IAAI,QAAQ,eAAc;;UAEvBC;;;;GAAAA,iBAAAA;AAeZ,OAAO,MAAMC,UAAUF,KAAKG,MAAM,CAAC;IACjCC,MAAM;IAENC,OAAO;IAEPC,SAAS;IAETC,UAAU;IAEVC,WAAW;IAEXC;QACE,OAAO;YACLC,QAAQ;gBACNC,OAAO;YACT;QACF;IACF;IAEAC;QACE,OAAO;YACLC,YACE,IACA,CAAC,EAAEC,QAAQ,EAAE,GACXA,SAASC,aAAa,CACpB,CAAC,oJAAoJ,CAAC;YAE5JC,WACE,CAACN,SACD,CAAC,EAAEI,QAAQ,EAAE,GACXA,SAASG,gBAAgB,CAAC,WAAW;wBAAEP;oBAAO;QACpD;IACF;IAEAQ,YAAW,EAAEC,cAAc,EAAE;QAC3B,OAAO;YAAC;YAAO;gBAAE,aAAa;gBAAWC,OAAO,CAAC,OAAO,EAAED,eAAeT,MAAM,CAAC,CAAC;YAAC;YAAG;SAAE;IACzF;IAEAW;QACE,OAAO;YACL;gBACEC,KAAK;YACP;SACD;IACH;AACF,GAAE;AAEF,eAAepB,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\nimport { sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { Columns2, PanelLeft, PanelRight } from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { ColumnLayout } from \"../Columns.js\";\nimport i18next from \"i18next\";\n\nexport const ColumnsMenu = ({ editor, appendTo }: MenuProps) => {\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"columns\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isColumns = editor.isActive(\"columns\");\n return isColumns;\n }, [editor]);\n\n const onColumnLeft = useCallback(() => {\n editor.chain().focus().setLayout(ColumnLayout.SidebarLeft).run();\n }, [editor]);\n\n const onColumnRight = useCallback(() => {\n editor.chain().focus().setLayout(ColumnLayout.SidebarRight).run();\n }, [editor]);\n\n const onColumnTwo = useCallback(() => {\n editor.chain().focus().setLayout(ColumnLayout.TwoColumn).run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`columnsMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n appendTo: () => appendTo?.current,\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"sidebarLeft\") || \"Sidebar left\"}\n active={editor.isActive(\"columns\", {\n layout: ColumnLayout.SidebarLeft,\n })}\n onClick={onColumnLeft}\n >\n <Icon icon={PanelLeft} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"twoColumns\") || \"Two columns\"}\n active={editor.isActive(\"columns\", {\n layout: ColumnLayout.TwoColumn,\n })}\n onClick={onColumnTwo}\n >\n <Icon icon={Columns2} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"sidebarRight\") || \"Sidebar right\"}\n active={editor.isActive(\"columns\", {\n layout: ColumnLayout.SidebarRight,\n })}\n onClick={onColumnRight}\n >\n <Icon icon={PanelRight} />\n </Toolbar.Button>\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default ColumnsMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","sticky","v4","uuid","Columns2","PanelLeft","PanelRight","Icon","Toolbar","getRenderContainer","ColumnLayout","i18next","ColumnsMenu","editor","appendTo","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isColumns","isActive","onColumnLeft","chain","focus","setLayout","SidebarLeft","run","onColumnRight","SidebarRight","onColumnTwo","TwoColumn","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","current","plugins","Wrapper","Button","type","tooltip","t","active","layout","onClick","icon"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AACpC,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAElC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,QAAQ,eAAe;AAE/D,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,cAAc,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IACzD,MAAMC,yBAAyBf,YAAY;QACzC,MAAMgB,kBAAkBP,mBAAmBI,QAAQ;QACnD,MAAMI,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMO,aAAapB,YAAY;QAC7B,MAAMqB,YAAYR,OAAOS,QAAQ,CAAC;QAClC,OAAOD;IACT,GAAG;QAACR;KAAO;IAEX,MAAMU,eAAevB,YAAY;QAC/Ba,OAAOW,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAChB,aAAaiB,WAAW,EAAEC,GAAG;IAChE,GAAG;QAACf;KAAO;IAEX,MAAMgB,gBAAgB7B,YAAY;QAChCa,OAAOW,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAChB,aAAaoB,YAAY,EAAEF,GAAG;IACjE,GAAG;QAACf;KAAO;IAEX,MAAMkB,cAAc/B,YAAY;QAC9Ba,OAAOW,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAChB,aAAasB,SAAS,EAAEJ,GAAG;IAC9D,GAAG;QAACf;KAAO;IAEX,qBACE,KAACd;QACCc,QAAQA;QACRoB,WAAW,CAAC,YAAY,EAAE9B,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/fields/TiptapEditor/extensions/MultiColumn/menus/ColumnsMenu.tsx"],"sourcesContent":["import { BubbleMenu as BaseBubbleMenu } from \"@tiptap/react\";\nimport { useCallback } from \"react\";\nimport { sticky } from \"tippy.js\";\nimport { v4 as uuid } from \"uuid\";\n\nimport { Columns2, PanelLeft, PanelRight } from \"lucide-react\";\nimport { MenuProps } from \"../../../features/menus/types.js\";\nimport { Icon } from \"../../../features/ui/Icon.js\";\nimport { Toolbar } from \"../../../features/ui/Toolbar.js\";\nimport { getRenderContainer } from \"../../../lib/utils/index.js\";\nimport { ColumnLayout } from \"../Columns.js\";\nimport i18next from \"i18next\";\n\nexport const ColumnsMenu = ({ editor, appendTo }: MenuProps) => {\n const getReferenceClientRect = useCallback(() => {\n const renderContainer = getRenderContainer(editor, \"columns\");\n const rect =\n renderContainer?.getBoundingClientRect() ||\n new DOMRect(-1000, -1000, 0, 0);\n\n return rect;\n }, [editor]);\n\n const shouldShow = useCallback(() => {\n const isColumns = editor.isActive(\"columns\");\n return isColumns;\n }, [editor]);\n\n const onColumnLeft = useCallback(() => {\n editor.chain().focus().setLayout(ColumnLayout.SidebarLeft).run();\n }, [editor]);\n\n const onColumnRight = useCallback(() => {\n editor.chain().focus().setLayout(ColumnLayout.SidebarRight).run();\n }, [editor]);\n\n const onColumnTwo = useCallback(() => {\n editor.chain().focus().setLayout(ColumnLayout.TwoColumn).run();\n }, [editor]);\n\n return (\n <BaseBubbleMenu\n editor={editor}\n pluginKey={`columnsMenu-${uuid()}`}\n shouldShow={shouldShow}\n updateDelay={0}\n tippyOptions={{\n offset: [0, 8],\n popperOptions: {\n modifiers: [{ name: \"flip\", enabled: false }],\n },\n getReferenceClientRect,\n appendTo: () => appendTo?.current,\n plugins: [sticky],\n sticky: \"popper\",\n }}\n >\n <Toolbar.Wrapper>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"sidebarLeft\") || \"Sidebar left\"}\n active={editor.isActive(\"columns\", {\n layout: ColumnLayout.SidebarLeft,\n })}\n onClick={onColumnLeft}\n >\n <Icon icon={PanelLeft} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"twoColumns\") || \"Two columns\"}\n active={editor.isActive(\"columns\", {\n layout: ColumnLayout.TwoColumn,\n })}\n onClick={onColumnTwo}\n >\n <Icon icon={Columns2} />\n </Toolbar.Button>\n <Toolbar.Button\n type=\"button\"\n tooltip={i18next.t(\"sidebarRight\") || \"Sidebar right\"}\n active={editor.isActive(\"columns\", {\n layout: ColumnLayout.SidebarRight,\n })}\n onClick={onColumnRight}\n >\n <Icon icon={PanelRight} />\n </Toolbar.Button>\n </Toolbar.Wrapper>\n </BaseBubbleMenu>\n );\n};\n\nexport default ColumnsMenu;\n"],"names":["BubbleMenu","BaseBubbleMenu","useCallback","sticky","v4","uuid","Columns2","PanelLeft","PanelRight","Icon","Toolbar","getRenderContainer","ColumnLayout","i18next","ColumnsMenu","editor","appendTo","getReferenceClientRect","renderContainer","rect","getBoundingClientRect","DOMRect","shouldShow","isColumns","isActive","onColumnLeft","chain","focus","setLayout","SidebarLeft","run","onColumnRight","SidebarRight","onColumnTwo","TwoColumn","pluginKey","updateDelay","tippyOptions","offset","popperOptions","modifiers","name","enabled","current","plugins","Wrapper","Button","type","tooltip","t","active","layout","onClick","icon"],"mappings":";AAAA,SAASA,cAAcC,cAAc,QAAQ,gBAAgB;AAC7D,SAASC,WAAW,QAAQ,QAAQ;AACpC,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAElC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,QAAQ,eAAe;AAE/D,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,OAAO,QAAQ,kCAAkC;AAC1D,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,OAAOC,aAAa,UAAU;AAE9B,OAAO,MAAMC,cAAc,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAa;IACzD,MAAMC,yBAAyBf,YAAY;QACzC,MAAMgB,kBAAkBP,mBAAmBI,QAAQ;QACnD,MAAMI,OACJD,iBAAiBE,2BACjB,IAAIC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;QAE/B,OAAOF;IACT,GAAG;QAACJ;KAAO;IAEX,MAAMO,aAAapB,YAAY;QAC7B,MAAMqB,YAAYR,OAAOS,QAAQ,CAAC;QAClC,OAAOD;IACT,GAAG;QAACR;KAAO;IAEX,MAAMU,eAAevB,YAAY;QAC/Ba,OAAOW,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAChB,aAAaiB,WAAW,EAAEC,GAAG;IAChE,GAAG;QAACf;KAAO;IAEX,MAAMgB,gBAAgB7B,YAAY;QAChCa,OAAOW,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAChB,aAAaoB,YAAY,EAAEF,GAAG;IACjE,GAAG;QAACf;KAAO;IAEX,MAAMkB,cAAc/B,YAAY;QAC9Ba,OAAOW,KAAK,GAAGC,KAAK,GAAGC,SAAS,CAAChB,aAAasB,SAAS,EAAEJ,GAAG;IAC9D,GAAG;QAACf;KAAO;IAEX,qBACE,KAACd;QACCc,QAAQA;QACRoB,WAAW,CAAC,YAAY,EAAE9B,OAAO,CAAC;QAClCiB,YAAYA;QACZc,aAAa;QACbC,cAAc;YACZC,QAAQ;gBAAC;gBAAG;aAAE;YACdC,eAAe;gBACbC,WAAW;oBAAC;wBAAEC,MAAM;wBAAQC,SAAS;oBAAM;iBAAE;YAC/C;YACAzB;YACAD,UAAU,IAAMA,UAAU2B;YAC1BC,SAAS;gBAACzC;aAAO;YACjBA,QAAQ;QACV;kBAEA,cAAA,MAACO,QAAQmC,OAAO;;8BACd,KAACnC,QAAQoC,MAAM;oBACbC,MAAK;oBACLC,SAASnC,QAAQoC,CAAC,CAAC,kBAAkB;oBACrCC,QAAQnC,OAAOS,QAAQ,CAAC,WAAW;wBACjC2B,QAAQvC,aAAaiB,WAAW;oBAClC;oBACAuB,SAAS3B;8BAET,cAAA,KAAChB;wBAAK4C,MAAM9C;;;8BAEd,KAACG,QAAQoC,MAAM;oBACbC,MAAK;oBACLC,SAASnC,QAAQoC,CAAC,CAAC,iBAAiB;oBACpCC,QAAQnC,OAAOS,QAAQ,CAAC,WAAW;wBACjC2B,QAAQvC,aAAasB,SAAS;oBAChC;oBACAkB,SAASnB;8BAET,cAAA,KAACxB;wBAAK4C,MAAM/C;;;8BAEd,KAACI,QAAQoC,MAAM;oBACbC,MAAK;oBACLC,SAASnC,QAAQoC,CAAC,CAAC,mBAAmB;oBACtCC,QAAQnC,OAAOS,QAAQ,CAAC,WAAW;wBACjC2B,QAAQvC,aAAaoB,YAAY;oBACnC;oBACAoB,SAASrB;8BAET,cAAA,KAACtB;wBAAK4C,MAAM7C;;;;;;AAKtB,EAAE;AAEF,eAAeM,YAAY"}
|