@ -132,34 +132,33 @@ class ComboMarkdownEditor {
setupTab ( ) {
setupTab ( ) {
const $container = $ ( this . container ) ;
const $container = $ ( this . container ) ;
const $tabMenu = $container . find ( '.tabular.menu' ) ;
const tabs = $container [ 0 ] . querySelectorAll ( '.tabular.menu > .item' ) ;
const $tabs = $tabMenu . find ( '> .item' ) ;
// Fomantic Tab requires the "data-tab" to be globally unique.
// Fomantic Tab requires the "data-tab" to be globally unique.
// So here it uses our defined "data-tab-for" and "data-tab-panel" to generate the "data-tab" attribute for Fomantic.
// So here it uses our defined "data-tab-for" and "data-tab-panel" to generate the "data-tab" attribute for Fomantic.
const $ tabEditor = $tabs . filter ( ` .item[data-tab-for="markdown-writer"] ` ) ;
const tabEditor = Array . from ( tabs ) . find ( ( tab ) => tab . getAttribute ( 'data-tab-for' ) === 'markdown-writer' ) ;
const $ tabPreviewer = $tabs . filter ( ` .item[data-tab-for="markdown-previewer"] ` ) ;
const tabPreviewer = Array . from ( tabs ) . find ( ( tab ) => tab . getAttribute ( 'data-tab-for' ) === 'markdown-previewer' ) ;
$ tabEditor. attr ( 'data-tab' , ` markdown-writer- ${ elementIdCounter } ` ) ;
tabEditor . setAttribute ( 'data-tab' , ` markdown-writer- ${ elementIdCounter } ` ) ;
$ tabPreviewer. attr ( 'data-tab' , ` markdown-previewer- ${ elementIdCounter } ` ) ;
tabPreviewer . setAttribute ( 'data-tab' , ` markdown-previewer- ${ elementIdCounter } ` ) ;
const $ panelEditor = $container . find ( '.ui.tab[data-tab-panel="markdown-writer"]' ) ;
const panelEditor = $container [ 0 ] . querySelector ( '.ui.tab[data-tab-panel="markdown-writer"]' ) ;
const $ panelPreviewer = $container . find ( '.ui.tab[data-tab-panel="markdown-previewer"]' ) ;
const panelPreviewer = $container [ 0 ] . querySelector ( '.ui.tab[data-tab-panel="markdown-previewer"]' ) ;
$ panelEditor. attr ( 'data-tab' , ` markdown-writer- ${ elementIdCounter } ` ) ;
panelEditor . setAttribute ( 'data-tab' , ` markdown-writer- ${ elementIdCounter } ` ) ;
$ panelPreviewer. attr ( 'data-tab' , ` markdown-previewer- ${ elementIdCounter } ` ) ;
panelPreviewer . setAttribute ( 'data-tab' , ` markdown-previewer- ${ elementIdCounter } ` ) ;
elementIdCounter ++ ;
elementIdCounter ++ ;
$ tabEditor[ 0 ] . addEventListener ( 'click' , ( ) => {
tabEditor . addEventListener ( 'click' , ( ) => {
requestAnimationFrame ( ( ) => {
requestAnimationFrame ( ( ) => {
this . focus ( ) ;
this . focus ( ) ;
} ) ;
} ) ;
} ) ;
} ) ;
$tabs . tab ( ) ;
$ ( tabs ) . tab ( ) ;
this . previewUrl = $ tabPreviewer. attr ( 'data-preview-url' ) ;
this . previewUrl = tabPreviewer . getAttribute ( 'data-preview-url' ) ;
this . previewContext = $ tabPreviewer. attr ( 'data-preview-context' ) ;
this . previewContext = tabPreviewer . getAttribute ( 'data-preview-context' ) ;
this . previewMode = this . options . previewMode ? ? 'comment' ;
this . previewMode = this . options . previewMode ? ? 'comment' ;
this . previewWiki = this . options . previewWiki ? ? false ;
this . previewWiki = this . options . previewWiki ? ? false ;
$ tabPreviewer. on ( 'click' , async ( ) => {
tabPreviewer . addEventListener ( 'click' , async ( ) => {
const formData = new FormData ( ) ;
const formData = new FormData ( ) ;
formData . append ( 'mode' , this . previewMode ) ;
formData . append ( 'mode' , this . previewMode ) ;
formData . append ( 'context' , this . previewContext ) ;
formData . append ( 'context' , this . previewContext ) ;
@ -167,7 +166,7 @@ class ComboMarkdownEditor {
formData . append ( 'wiki' , this . previewWiki ) ;
formData . append ( 'wiki' , this . previewWiki ) ;
const response = await POST ( this . previewUrl , { data : formData } ) ;
const response = await POST ( this . previewUrl , { data : formData } ) ;
const data = await response . text ( ) ;
const data = await response . text ( ) ;
renderPreviewPanelContent ( $panelPreviewer , data ) ;
renderPreviewPanelContent ( $ ( panelPreviewer ) , data ) ;
} ) ;
} ) ;
}
}