@wordpress/block-editor
Version:
8 lines (7 loc) • 3.31 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../../src/components/inserter/hooks/use-patterns-paging.js"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useMemo, useState, useEffect } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport { getScrollContainer } from '@wordpress/dom';\n\nconst PAGE_SIZE = 20;\n\n/**\n * Supplies values needed to page the patterns list client side.\n *\n * @param {Array} currentCategoryPatterns An array of the current patterns to display.\n * @param {string} currentCategory The currently selected category.\n * @param {Object} scrollContainerRef Ref of container to to find scroll container for when moving between pages.\n * @param {string} currentFilter The currently search filter.\n *\n * @return {Object} Returns the relevant paging values. (totalItems, categoryPatternsList, numPages, changePage, currentPage)\n */\nexport default function usePatternsPaging(\n\tcurrentCategoryPatterns,\n\tcurrentCategory,\n\tscrollContainerRef,\n\tcurrentFilter = ''\n) {\n\tconst [ currentPage, setCurrentPage ] = useState( 1 );\n\tconst previousCategory = usePrevious( currentCategory );\n\tconst previousFilter = usePrevious( currentFilter );\n\tif (\n\t\t( previousCategory !== currentCategory ||\n\t\t\tpreviousFilter !== currentFilter ) &&\n\t\tcurrentPage !== 1\n\t) {\n\t\tsetCurrentPage( 1 );\n\t}\n\tconst totalItems = currentCategoryPatterns.length;\n\tconst pageIndex = currentPage - 1;\n\tconst categoryPatterns = useMemo( () => {\n\t\treturn currentCategoryPatterns.slice(\n\t\t\tpageIndex * PAGE_SIZE,\n\t\t\tpageIndex * PAGE_SIZE + PAGE_SIZE\n\t\t);\n\t}, [ pageIndex, currentCategoryPatterns ] );\n\tconst numPages = Math.ceil( currentCategoryPatterns.length / PAGE_SIZE );\n\tconst changePage = ( page ) => {\n\t\tconst scrollContainer = getScrollContainer(\n\t\t\tscrollContainerRef?.current\n\t\t);\n\t\tscrollContainer?.scrollTo( 0, 0 );\n\n\t\tsetCurrentPage( page );\n\t};\n\n\tuseEffect(\n\t\tfunction scrollToTopOnCategoryChange() {\n\t\t\tconst scrollContainer = getScrollContainer(\n\t\t\t\tscrollContainerRef?.current\n\t\t\t);\n\t\t\tscrollContainer?.scrollTo( 0, 0 );\n\t\t},\n\t\t[ currentCategory, scrollContainerRef ]\n\t);\n\n\treturn {\n\t\ttotalItems,\n\t\tcategoryPatterns,\n\t\tnumPages,\n\t\tchangePage,\n\t\tcurrentPage,\n\t};\n}\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAA6C;AAC7C,qBAA4B;AAC5B,iBAAmC;AAEnC,IAAM,YAAY;AAYH,SAAR,kBACN,yBACA,iBACA,oBACA,gBAAgB,IACf;AACD,QAAM,CAAE,aAAa,cAAe,QAAI,yBAAU,CAAE;AACpD,QAAM,uBAAmB,4BAAa,eAAgB;AACtD,QAAM,qBAAiB,4BAAa,aAAc;AAClD,OACG,qBAAqB,mBACtB,mBAAmB,kBACpB,gBAAgB,GACf;AACD,mBAAgB,CAAE;AAAA,EACnB;AACA,QAAM,aAAa,wBAAwB;AAC3C,QAAM,YAAY,cAAc;AAChC,QAAM,uBAAmB,wBAAS,MAAM;AACvC,WAAO,wBAAwB;AAAA,MAC9B,YAAY;AAAA,MACZ,YAAY,YAAY;AAAA,IACzB;AAAA,EACD,GAAG,CAAE,WAAW,uBAAwB,CAAE;AAC1C,QAAM,WAAW,KAAK,KAAM,wBAAwB,SAAS,SAAU;AACvE,QAAM,aAAa,CAAE,SAAU;AAC9B,UAAM,sBAAkB;AAAA,MACvB,oBAAoB;AAAA,IACrB;AACA,qBAAiB,SAAU,GAAG,CAAE;AAEhC,mBAAgB,IAAK;AAAA,EACtB;AAEA;AAAA,IACC,SAAS,8BAA8B;AACtC,YAAM,sBAAkB;AAAA,QACvB,oBAAoB;AAAA,MACrB;AACA,uBAAiB,SAAU,GAAG,CAAE;AAAA,IACjC;AAAA,IACA,CAAE,iBAAiB,kBAAmB;AAAA,EACvC;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;",
"names": []
}