UNPKG

@wordpress/blocks

Version:
8 lines (7 loc) 2.79 kB
{ "version": 3, "sources": ["../../../src/api/raw-handling/list-reducer.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { unwrap } from '@wordpress/dom';\n\nfunction isList( node ) {\n\treturn node.nodeName === 'OL' || node.nodeName === 'UL';\n}\n\nfunction shallowTextContent( element ) {\n\treturn Array.from( element.childNodes )\n\t\t.map( ( { nodeValue = '' } ) => nodeValue )\n\t\t.join( '' );\n}\n\nexport default function listReducer( node ) {\n\tif ( ! isList( node ) ) {\n\t\treturn;\n\t}\n\n\tconst list = node;\n\tconst prevElement = node.previousElementSibling;\n\n\t// Merge with previous list if:\n\t// * There is a previous list of the same type.\n\t// * There is only one list item.\n\tif (\n\t\tprevElement &&\n\t\tprevElement.nodeName === node.nodeName &&\n\t\tlist.children.length === 1\n\t) {\n\t\t// Move all child nodes, including any text nodes, if any.\n\t\twhile ( list.firstChild ) {\n\t\t\tprevElement.appendChild( list.firstChild );\n\t\t}\n\n\t\tlist.parentNode.removeChild( list );\n\t}\n\n\tconst parentElement = node.parentNode;\n\n\t// Nested list with empty parent item.\n\tif (\n\t\tparentElement &&\n\t\tparentElement.nodeName === 'LI' &&\n\t\tparentElement.children.length === 1 &&\n\t\t! /\\S/.test( shallowTextContent( parentElement ) )\n\t) {\n\t\tconst parentListItem = parentElement;\n\t\tconst prevListItem = parentListItem.previousElementSibling;\n\t\tconst parentList = parentListItem.parentNode;\n\n\t\tif ( prevListItem ) {\n\t\t\tprevListItem.appendChild( list );\n\t\t\tparentList.removeChild( parentListItem );\n\t\t}\n\t}\n\n\t// Invalid: OL/UL > OL/UL.\n\tif ( parentElement && isList( parentElement ) ) {\n\t\tconst prevListItem = node.previousElementSibling;\n\n\t\tif ( prevListItem ) {\n\t\t\tprevListItem.appendChild( node );\n\t\t} else {\n\t\t\tunwrap( node );\n\t\t}\n\t}\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAuB;AAEvB,SAAS,OAAQ,MAAO;AACvB,SAAO,KAAK,aAAa,QAAQ,KAAK,aAAa;AACpD;AAEA,SAAS,mBAAoB,SAAU;AACtC,SAAO,MAAM,KAAM,QAAQ,UAAW,EACpC,IAAK,CAAE,EAAE,YAAY,GAAG,MAAO,SAAU,EACzC,KAAM,EAAG;AACZ;AAEe,SAAR,YAA8B,MAAO;AAC3C,MAAK,CAAE,OAAQ,IAAK,GAAI;AACvB;AAAA,EACD;AAEA,QAAM,OAAO;AACb,QAAM,cAAc,KAAK;AAKzB,MACC,eACA,YAAY,aAAa,KAAK,YAC9B,KAAK,SAAS,WAAW,GACxB;AAED,WAAQ,KAAK,YAAa;AACzB,kBAAY,YAAa,KAAK,UAAW;AAAA,IAC1C;AAEA,SAAK,WAAW,YAAa,IAAK;AAAA,EACnC;AAEA,QAAM,gBAAgB,KAAK;AAG3B,MACC,iBACA,cAAc,aAAa,QAC3B,cAAc,SAAS,WAAW,KAClC,CAAE,KAAK,KAAM,mBAAoB,aAAc,CAAE,GAChD;AACD,UAAM,iBAAiB;AACvB,UAAM,eAAe,eAAe;AACpC,UAAM,aAAa,eAAe;AAElC,QAAK,cAAe;AACnB,mBAAa,YAAa,IAAK;AAC/B,iBAAW,YAAa,cAAe;AAAA,IACxC;AAAA,EACD;AAGA,MAAK,iBAAiB,OAAQ,aAAc,GAAI;AAC/C,UAAM,eAAe,KAAK;AAE1B,QAAK,cAAe;AACnB,mBAAa,YAAa,IAAK;AAAA,IAChC,OAAO;AACN,6BAAQ,IAAK;AAAA,IACd;AAAA,EACD;AACD;", "names": [] }