11import { fetchPost , fetchSyncPost } from "@/utils/fetch" ;
22import { compilePseudocode } from "@/pseudocode" ;
33
4+ export function turnOnAllPseudocodeView ( ) {
5+ document . querySelectorAll ( ".code-block[data-type='NodeCodeBlock'][custom-view='pseudocode']" ) . forEach ( ( blockElement : HTMLElement ) => {
6+ const blockID = blockElement . getAttribute ( "data-node-id" ) ;
7+ const code = getBlockPseudocodeCode ( blockElement ) ;
8+ const pseudocodeConfig = getBlockPseudocodeConfigByElement ( blockElement ) ;
9+ setAutoAlgorithmNumber ( blockElement , pseudocodeConfig ) ;
10+ const compileResult = compilePseudocode ( code , pseudocodeConfig ) ;
11+ updatePseudocodeViewAttribute ( blockID , pseudocodeConfig . view ) ;
12+ updatePseudocodeElements ( blockID , pseudocodeConfig , compileResult ) ;
13+ } ) ;
14+ }
15+
16+ export function turnOffAllPseudocodeView ( ) {
17+ document . querySelectorAll ( ".code-block[data-type='NodeCodeBlock'][custom-view='pseudocode']" ) . forEach ( ( blockElement : HTMLElement ) => {
18+ switchPseudocodeView ( "off" , blockElement ) ;
19+ } ) ;
20+ }
21+
422export function setAutoCompileMuatationObserver ( element : HTMLElement ) : MutationObserver {
523 const mutationObserver = new MutationObserver ( mutations => {
624 for ( const mutation of mutations ) {
@@ -88,11 +106,10 @@ export function switchPseudocodeView(mode: "on" | "off", blockElement: HTMLEleme
88106 if ( codeElement ) {
89107 codeElement . classList . toggle ( "fn__none" , mode === "on" ) ;
90108 blockElement . querySelector ( ".protyle-action__language" ) . classList . toggle ( "fn__none" , mode === "on" ) ;
91- blockElement . setAttribute ( "custom-view" , mode === "on" ? "pseudocode" : "" ) ;
92109 const containerElement = blockElement . querySelector ( ".pseudocode-container" ) ;
93110 if ( mode === "on" ) {
94111 if ( ! containerElement ) {
95- codeElement . insertAdjacentHTML ( 'afterend' , '<div class="pseudocode-container"></div>' ) ;
112+ codeElement . insertAdjacentHTML ( 'afterend' , '<div class="pseudocode-container" contenteditable="false" ></div>' ) ;
96113 }
97114 } else {
98115 if ( containerElement ) containerElement . remove ( ) ;
@@ -101,6 +118,9 @@ export function switchPseudocodeView(mode: "on" | "off", blockElement: HTMLEleme
101118}
102119
103120export function updatePseudocodeViewAttribute ( blockID : string , view : string ) {
121+ document . querySelectorAll ( `.code-block[data-node-id="${ blockID } "]` ) . forEach ( ( blockElement : HTMLElement ) => {
122+ blockElement . setAttribute ( "custom-view" , view ) ;
123+ } ) ;
104124 fetchPost ( "/api/attr/setBlockAttrs" , {
105125 id : blockID ,
106126 attrs : {
0 commit comments