UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 4.46 kB
{ "version": 3, "sources": ["../../src/query-pagination-numbers/edit.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { InspectorControls, useBlockProps } from '@wordpress/block-editor';\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tRangeControl,\n} from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst createPaginationItem = ( content, Tag = 'a', extraClass = '' ) => (\n\t<Tag key={ content } className={ `page-numbers ${ extraClass }` }>\n\t\t{ content }\n\t</Tag>\n);\n\nconst previewPaginationNumbers = ( midSize ) => {\n\tconst paginationItems = [];\n\n\t// First set of pagination items.\n\tfor ( let i = 1; i <= midSize; i++ ) {\n\t\tpaginationItems.push( createPaginationItem( i ) );\n\t}\n\n\t// Current pagination item.\n\tpaginationItems.push(\n\t\tcreatePaginationItem( midSize + 1, 'span', 'current' )\n\t);\n\n\t// Second set of pagination items.\n\tfor ( let i = 1; i <= midSize; i++ ) {\n\t\tpaginationItems.push( createPaginationItem( midSize + 1 + i ) );\n\t}\n\n\t// Dots.\n\tpaginationItems.push( createPaginationItem( '...', 'span', 'dots' ) );\n\n\t// Last pagination item.\n\tpaginationItems.push( createPaginationItem( midSize * 2 + 3 ) );\n\n\treturn <>{ paginationItems }</>;\n};\n\nexport default function QueryPaginationNumbersEdit( {\n\tattributes,\n\tsetAttributes,\n} ) {\n\tconst { midSize } = attributes;\n\tconst paginationNumbers = previewPaginationNumbers(\n\t\tparseInt( midSize, 10 )\n\t);\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => setAttributes( { midSize: 2 } ) }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Number of links' ) }\n\t\t\t\t\t\thasValue={ () => midSize !== 2 }\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { midSize: 2 } ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t>\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\tlabel={ __( 'Number of links' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Specify how many links can appear before and after the current page number. Links to the first, current and last page are always visible.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ midSize }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tmidSize: parseInt( value, 10 ),\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tmin={ 0 }\n\t\t\t\t\t\t\tmax={ 5 }\n\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...useBlockProps() }>{ paginationNumbers }</div>\n\t\t</>\n\t);\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,0BAAiD;AACjD,wBAIO;AAKP,mBAA+C;AAG9C;AADD,IAAM,uBAAuB,CAAE,SAAS,MAAM,KAAK,aAAa,OAC/D,4CAAC,OAAoB,WAAY,gBAAiB,UAAW,IAC1D,qBADQ,OAEX;AAGD,IAAM,2BAA2B,CAAE,YAAa;AAC/C,QAAM,kBAAkB,CAAC;AAGzB,WAAU,IAAI,GAAG,KAAK,SAAS,KAAM;AACpC,oBAAgB,KAAM,qBAAsB,CAAE,CAAE;AAAA,EACjD;AAGA,kBAAgB;AAAA,IACf,qBAAsB,UAAU,GAAG,QAAQ,SAAU;AAAA,EACtD;AAGA,WAAU,IAAI,GAAG,KAAK,SAAS,KAAM;AACpC,oBAAgB,KAAM,qBAAsB,UAAU,IAAI,CAAE,CAAE;AAAA,EAC/D;AAGA,kBAAgB,KAAM,qBAAsB,OAAO,QAAQ,MAAO,CAAE;AAGpE,kBAAgB,KAAM,qBAAsB,UAAU,IAAI,CAAE,CAAE;AAE9D,SAAO,2EAAI,2BAAiB;AAC7B;AAEe,SAAR,2BAA6C;AAAA,EACnD;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,QAAQ,IAAI;AACpB,QAAM,oBAAoB;AAAA,IACzB,SAAU,SAAS,EAAG;AAAA,EACvB;AACA,QAAM,wBAAoB,6CAA+B;AAEzD,SACC,4EACC;AAAA,gDAAC,yCACA;AAAA,MAAC,kBAAAA;AAAA,MAAA;AAAA,QACA,WAAQ,gBAAI,UAAW;AAAA,QACvB,UAAW,MAAM,cAAe,EAAE,SAAS,EAAE,CAAE;AAAA,QAC/C;AAAA,QAEA;AAAA,UAAC,kBAAAC;AAAA,UAAA;AAAA,YACA,WAAQ,gBAAI,iBAAkB;AAAA,YAC9B,UAAW,MAAM,YAAY;AAAA,YAC7B,YAAa,MAAM,cAAe,EAAE,SAAS,EAAE,CAAE;AAAA,YACjD,kBAAgB;AAAA,YAEhB;AAAA,cAAC;AAAA;AAAA,gBACA,uBAAqB;AAAA,gBACrB,WAAQ,gBAAI,iBAAkB;AAAA,gBAC9B,UAAO;AAAA,kBACN;AAAA,gBACD;AAAA,gBACA,OAAQ;AAAA,gBACR,UAAW,CAAE,UAAW;AACvB,gCAAe;AAAA,oBACd,SAAS,SAAU,OAAO,EAAG;AAAA,kBAC9B,CAAE;AAAA,gBACH;AAAA,gBACA,KAAM;AAAA,gBACN,KAAM;AAAA,gBACN,gBAAiB;AAAA;AAAA,YAClB;AAAA;AAAA,QACD;AAAA;AAAA,IACD,GACD;AAAA,IACA,4CAAC,SAAM,OAAG,mCAAc,GAAM,6BAAmB;AAAA,KAClD;AAEF;", "names": ["ToolsPanel", "ToolsPanelItem"] }