{
  "version": 3,
  "sources": ["../../../src/list-item/hooks/use-outdent-list-item.js"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport { useSelect, useDispatch, useRegistry } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { cloneBlock } from '@wordpress/blocks';\n\nexport default function useOutdentListItem() {\n\tconst registry = useRegistry();\n\tconst {\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tinsertBlock,\n\t\tupdateBlockListSettings,\n\t} = useDispatch( blockEditorStore );\n\tconst {\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tgetBlockOrder,\n\t\tgetBlockIndex,\n\t\tgetSelectedBlockClientIds,\n\t\tgetBlock,\n\t\tgetBlockListSettings,\n\t} = useSelect( blockEditorStore );\n\n\tfunction getParentListItemId( id ) {\n\t\tconst listId = getBlockRootClientId( id );\n\t\tconst parentListItemId = getBlockRootClientId( listId );\n\t\tif ( ! parentListItemId ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( getBlockName( parentListItemId ) !== 'core/list-item' ) {\n\t\t\treturn;\n\t\t}\n\t\treturn parentListItemId;\n\t}\n\n\treturn useCallback( ( clientIds = getSelectedBlockClientIds() ) => {\n\t\tif ( ! Array.isArray( clientIds ) ) {\n\t\t\tclientIds = [ clientIds ];\n\t\t}\n\n\t\tif ( ! clientIds.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst firstClientId = clientIds[ 0 ];\n\n\t\t// Can't outdent if it's not a list item.\n\t\tif ( getBlockName( firstClientId ) !== 'core/list-item' ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst parentListItemId = getParentListItemId( firstClientId );\n\n\t\t// Can't outdent if it's at the top level.\n\t\tif ( ! parentListItemId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst parentListId = getBlockRootClientId( firstClientId );\n\t\tconst lastClientId = clientIds[ clientIds.length - 1 ];\n\t\tconst order = getBlockOrder( parentListId );\n\t\tconst followingListItems = order.slice(\n\t\t\tgetBlockIndex( lastClientId ) + 1\n\t\t);\n\n\t\tregistry.batch( () => {\n\t\t\tif ( followingListItems.length ) {\n\t\t\t\tlet nestedListId = getBlockOrder( firstClientId )[ 0 ];\n\n\t\t\t\tif ( ! nestedListId ) {\n\t\t\t\t\tconst nestedListBlock = cloneBlock(\n\t\t\t\t\t\tgetBlock( parentListId ),\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t[]\n\t\t\t\t\t);\n\t\t\t\t\tnestedListId = nestedListBlock.clientId;\n\t\t\t\t\tinsertBlock( nestedListBlock, 0, firstClientId, false );\n\t\t\t\t\t// Immediately update the block list settings, otherwise\n\t\t\t\t\t// blocks can't be moved here due to canInsert checks.\n\t\t\t\t\tupdateBlockListSettings(\n\t\t\t\t\t\tnestedListId,\n\t\t\t\t\t\tgetBlockListSettings( parentListId )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\tfollowingListItems,\n\t\t\t\t\tparentListId,\n\t\t\t\t\tnestedListId\n\t\t\t\t);\n\t\t\t}\n\t\t\tmoveBlocksToPosition(\n\t\t\t\tclientIds,\n\t\t\t\tparentListId,\n\t\t\t\tgetBlockRootClientId( parentListItemId ),\n\t\t\t\tgetBlockIndex( parentListItemId ) + 1\n\t\t\t);\n\t\t\tif ( ! getBlockOrder( parentListId ).length ) {\n\t\t\t\tconst shouldSelectParent = false;\n\t\t\t\tremoveBlock( parentListId, shouldSelectParent );\n\t\t\t}\n\t\t} );\n\n\t\treturn true;\n\t}, [] );\n}\n"],
  "mappings": ";AAGA,SAAS,mBAAmB;AAC5B,SAAS,WAAW,aAAa,mBAAmB;AACpD,SAAS,SAAS,wBAAwB;AAC1C,SAAS,kBAAkB;AAEZ,SAAR,qBAAsC;AAC5C,QAAM,WAAW,YAAY;AAC7B,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,YAAa,gBAAiB;AAClC,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,UAAW,gBAAiB;AAEhC,WAAS,oBAAqB,IAAK;AAClC,UAAM,SAAS,qBAAsB,EAAG;AACxC,UAAM,mBAAmB,qBAAsB,MAAO;AACtD,QAAK,CAAE,kBAAmB;AACzB;AAAA,IACD;AACA,QAAK,aAAc,gBAAiB,MAAM,kBAAmB;AAC5D;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAEA,SAAO,YAAa,CAAE,YAAY,0BAA0B,MAAO;AAClE,QAAK,CAAE,MAAM,QAAS,SAAU,GAAI;AACnC,kBAAY,CAAE,SAAU;AAAA,IACzB;AAEA,QAAK,CAAE,UAAU,QAAS;AACzB;AAAA,IACD;AAEA,UAAM,gBAAgB,UAAW,CAAE;AAGnC,QAAK,aAAc,aAAc,MAAM,kBAAmB;AACzD;AAAA,IACD;AAEA,UAAM,mBAAmB,oBAAqB,aAAc;AAG5D,QAAK,CAAE,kBAAmB;AACzB;AAAA,IACD;AAEA,UAAM,eAAe,qBAAsB,aAAc;AACzD,UAAM,eAAe,UAAW,UAAU,SAAS,CAAE;AACrD,UAAM,QAAQ,cAAe,YAAa;AAC1C,UAAM,qBAAqB,MAAM;AAAA,MAChC,cAAe,YAAa,IAAI;AAAA,IACjC;AAEA,aAAS,MAAO,MAAM;AACrB,UAAK,mBAAmB,QAAS;AAChC,YAAI,eAAe,cAAe,aAAc,EAAG,CAAE;AAErD,YAAK,CAAE,cAAe;AACrB,gBAAM,kBAAkB;AAAA,YACvB,SAAU,YAAa;AAAA,YACvB,CAAC;AAAA,YACD,CAAC;AAAA,UACF;AACA,yBAAe,gBAAgB;AAC/B,sBAAa,iBAAiB,GAAG,eAAe,KAAM;AAGtD;AAAA,YACC;AAAA,YACA,qBAAsB,YAAa;AAAA,UACpC;AAAA,QACD;AAEA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AACA;AAAA,QACC;AAAA,QACA;AAAA,QACA,qBAAsB,gBAAiB;AAAA,QACvC,cAAe,gBAAiB,IAAI;AAAA,MACrC;AACA,UAAK,CAAE,cAAe,YAAa,EAAE,QAAS;AAC7C,cAAM,qBAAqB;AAC3B,oBAAa,cAAc,kBAAmB;AAAA,MAC/C;AAAA,IACD,CAAE;AAEF,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AACP;",
  "names": []
}
