@@ -46,12 +46,11 @@ const ListFormatter = Module({
4646 process ( opts ) {
4747 const { mediator } = this ;
4848 const canvasDoc = mediator . get ( 'canvas:document' ) ;
49- let toggle = false ;
5049
5150 mediator . exec ( 'canvas:cache:selection' ) ;
51+
5252 switch ( opts . style ) {
5353 case 'ordered' :
54- toggle = mediator . get ( 'selection:in:or:contains' , [ 'OL' ] ) ;
5554 if ( mediator . get ( 'selection:in:or:contains' , [ 'UL' ] ) ) {
5655 mediator . exec ( 'commands:exec' , {
5756 command : 'insertUnorderedList' ,
@@ -63,8 +62,8 @@ const ListFormatter = Module({
6362 contextDocument : canvasDoc
6463 } ) ;
6564 break ;
65+
6666 case 'unordered' :
67- toggle = mediator . get ( 'selection:in:or:contains' , [ 'UL' ] ) ;
6867 if ( mediator . get ( 'selection:in:or:contains' , [ 'OL' ] ) ) {
6968 mediator . exec ( 'commands:exec' , {
7069 command : 'insertOrderedList' ,
@@ -76,12 +75,14 @@ const ListFormatter = Module({
7675 contextDocument : canvasDoc
7776 } ) ;
7877 break ;
78+
7979 case 'outdent' :
8080 mediator . exec ( 'commands:exec' , {
8181 command : 'outdent' ,
8282 contextDocument : canvasDoc
8383 } ) ;
8484 break ;
85+
8586 case 'indent' :
8687 mediator . exec ( 'commands:exec' , {
8788 command : 'indent' ,
@@ -90,14 +91,7 @@ const ListFormatter = Module({
9091 break ;
9192 }
9293
93- if ( toggle ) {
94- // mediator.exec('canvas:select:cachedSelection');
95- this . postProcessToggle ( opts ) ;
96- } else {
97- mediator . exec ( 'canvas:select:ensure:offsets' ) ;
98- }
99-
100- // mediator.exec('canvas:select:cachedSelection');
94+ mediator . exec ( 'canvas:select:ensure:offsets' ) ;
10195 } ,
10296
10397 commit ( ) {
@@ -132,130 +126,6 @@ const ListFormatter = Module({
132126 }
133127 } ,
134128
135- prepListItemsForToggle ( ) {
136- const { mediator } = this ;
137-
138- const canvasDoc = mediator . get ( 'canvas:document' ) ;
139- const canvasBody = mediator . get ( 'canvas:body' ) ;
140-
141- const {
142- anchorNode,
143- focusNode,
144- } = mediator . get ( 'canvas:selection' ) ;
145-
146- const anchorLiNode = DOM . getClosest ( anchorNode , 'LI' , canvasBody ) ;
147- const focusLiNode = DOM . getClosest ( focusNode , 'LI' , canvasBody ) ;
148-
149- mediator . exec ( 'canvas:cache:selection' ) ;
150-
151- let selectedLiNodes = [ anchorLiNode ] ;
152- let nextLiNode = anchorLiNode . nextSibling ;
153- while ( nextLiNode && nextLiNode !== focusLiNode ) {
154- selectedLiNodes . push ( nextLiNode ) ;
155- nextLiNode = nextLiNode . nextSibling ;
156- }
157- selectedLiNodes . push ( focusLiNode ) ;
158-
159- selectedLiNodes . forEach ( ( selectedLiNode ) => {
160- let contentWrapper = canvasDoc . createElement ( 'span' ) ;
161- selectedLiNode . appendChild ( contentWrapper ) ;
162- while ( selectedLiNode . firstChild !== contentWrapper ) {
163- contentWrapper . appendChild ( selectedLiNode . firstChild ) ;
164- }
165- } ) ;
166-
167- mediator . exec ( 'canvas:select:cachedSelection' ) ;
168-
169- return ;
170- // const canvasBody = mediator.get('canvas:body');
171- // const canvasDoc = mediator.get('canvas:document');
172- //
173- // let rootBlock = anchorNode;
174- // while(rootBlock.parentNode !== canvasBody) {
175- // rootBlock = rootBlock.parentNode;
176- // }
177- //
178- // const liNodes = rootBlock.querySelectorAll('li');
179- // liNodes.forEach((liNode) => {
180- // let pNode = canvasDoc.createElement('span');
181- // liNode.appendChild(pNode);
182- // while (liNode.firstChild !== pNode) {
183- // pNode.appendChild(liNode.firstChild);
184- // }
185- // });
186- } ,
187-
188- postProcessToggle ( ) {
189- const { mediator } = this ;
190- // return;
191-
192- const canvasDoc = mediator . get ( 'canvas:document' ) ;
193- const canvasBody = mediator . get ( 'canvas:body' ) ;
194-
195- mediator . exec ( 'canvas:cache:selection' ) ;
196-
197- const {
198- anchorNode,
199- focusNode
200- } = mediator . get ( 'canvas:selection' ) ;
201-
202- const walkToRoot = function ( node ) {
203- let rootNode = node ;
204- while ( rootNode . parentNode !== canvasBody ) {
205- rootNode = rootNode . parentNode ;
206- }
207- return rootNode ;
208- } ;
209-
210- const anchorRootNode = walkToRoot ( anchorNode ) ;
211- const focusRootNode = walkToRoot ( focusNode ) ;
212-
213- let currentNode = anchorRootNode ;
214- let currentParagraph ;
215-
216- const createParagraph = function ( ) {
217- currentParagraph = canvasDoc . createElement ( 'p' ) ;
218- DOM . insertBefore ( currentParagraph , currentNode ) ;
219- } ;
220-
221- const handleBrNode = function ( brNode ) {
222- createParagraph ( ) ;
223- currentNode = brNode . nextSibling ;
224- DOM . removeNode ( brNode ) ;
225- } ;
226-
227- const handleDivNode = function ( divNode ) {
228- createParagraph ( ) ;
229- currentNode = divNode . nextSibling ;
230- while ( divNode . firstChild ) {
231- currentParagraph . appendChild ( divNode . firstChild ) ;
232- }
233- DOM . removeNode ( divNode ) ;
234- } ;
235-
236- createParagraph ( ) ;
237-
238- while ( currentNode !== focusRootNode ) {
239- if ( currentNode . nodeName === 'BR' ) {
240- handleBrNode ( currentNode ) ;
241- } else if ( currentNode . nodeName === 'DIV' ) {
242- handleDivNode ( currentNode ) ;
243- } else {
244- let orphanedNode = currentNode ;
245- currentNode = currentNode . nextSibling ;
246- currentParagraph . appendChild ( orphanedNode ) ;
247- }
248- }
249-
250- if ( focusRootNode . nodeName === 'DIV' ) {
251- handleDivNode ( focusRootNode ) ;
252- } else {
253- currentParagraph . appendChild ( focusRootNode ) ;
254- }
255-
256- mediator . exec ( 'canvas:select:cachedSelection' ) ;
257- } ,
258-
259129 cleanupListDOM ( rootElem ) {
260130 const listContainers = rootElem . querySelectorAll ( 'OL, UL' ) ;
261131
0 commit comments