UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 5.52 kB
{ "version": 3, "sources": ["../../../src/components/block-bindings/source-fields-list.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6/index.js';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockBindingsSource } from '@wordpress/blocks';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport useBlockBindingsUtils from './use-block-bindings-utils';\nimport { unlock } from '../../lock-unlock';\nimport BlockContext from '../block-context';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction BlockBindingsSourceFieldsListItem( {\n\targs,\n\tattribute,\n\tfield,\n\tsource,\n\tsourceKey,\n} ) {\n\tconst itemBindings = useMemo(\n\t\t() => ( {\n\t\t\tsource: sourceKey,\n\t\t\targs: field.args || {\n\t\t\t\tkey: field.key,\n\t\t\t},\n\t\t} ),\n\t\t[ field.args, field.key, sourceKey ]\n\t);\n\n\tconst blockContext = useContext( BlockContext );\n\tconst values = useSelect(\n\t\t( select ) =>\n\t\t\tsource.getValues( {\n\t\t\t\tselect,\n\t\t\t\tcontext: blockContext,\n\t\t\t\tbindings: {\n\t\t\t\t\t[ attribute ]: itemBindings,\n\t\t\t\t},\n\t\t\t} ),\n\t\t[ attribute, blockContext, itemBindings, source ]\n\t);\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\n\treturn (\n\t\t<Menu.CheckboxItem\n\t\t\tonChange={ () => {\n\t\t\t\tconst isCurrentlySelected =\n\t\t\t\t\tfastDeepEqual( args, field.args ) ??\n\t\t\t\t\t// Deprecate key dependency in 7.0.\n\t\t\t\t\tfield.key === args?.key;\n\n\t\t\t\tif ( isCurrentlySelected ) {\n\t\t\t\t\t// Unset if the same field is selected again.\n\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t[ attribute ]: undefined,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t[ attribute ]: itemBindings,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tname={ attribute + '-binding' }\n\t\t\tvalue={ values[ attribute ] }\n\t\t\tchecked={\n\t\t\t\tfastDeepEqual( args, field.args ) ??\n\t\t\t\t// Deprecate key dependency in 7.0.\n\t\t\t\tfield.key === args?.key\n\t\t\t}\n\t\t>\n\t\t\t<Menu.ItemLabel>{ field.label }</Menu.ItemLabel>\n\t\t\t<Menu.ItemHelpText>{ values[ attribute ] }</Menu.ItemHelpText>\n\t\t</Menu.CheckboxItem>\n\t);\n}\n\nexport default function BlockBindingsSourceFieldsList( {\n\targs,\n\tattribute,\n\tsourceKey,\n\tfields,\n} ) {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\t// Only render source if it has compatible fields.\n\tif ( ! fields || fields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst source = getBlockBindingsSource( sourceKey );\n\n\treturn (\n\t\t<Menu\n\t\t\tkey={ sourceKey }\n\t\t\tplacement={ isMobile ? 'bottom-start' : 'left-start' }\n\t\t>\n\t\t\t<Menu.SubmenuTriggerItem>\n\t\t\t\t<Menu.ItemLabel>{ source.label }</Menu.ItemLabel>\n\t\t\t</Menu.SubmenuTriggerItem>\n\t\t\t<Menu.Popover gutter={ 8 }>\n\t\t\t\t<Menu.Group>\n\t\t\t\t\t{ fields.map( ( field ) => (\n\t\t\t\t\t\t<BlockBindingsSourceFieldsListItem\n\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\tsourceKey + JSON.stringify( field.args ) ||\n\t\t\t\t\t\t\t\tfield.key\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targs={ args }\n\t\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\tsource={ source }\n\t\t\t\t\t\t\tsourceKey={ sourceKey }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Menu.Group>\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAA0B;AAK1B,oBAAuC;AACvC,wBAAqD;AACrD,kBAA0B;AAC1B,qBAAoC;AACpC,qBAAiC;AAKjC,sCAAkC;AAClC,yBAAuB;AACvB,2BAAyB;AAoCvB;AAlCF,IAAM,EAAE,KAAK,QAAI,2BAAQ,kBAAAA,WAAsB;AAE/C,SAAS,kCAAmC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,mBAAe;AAAA,IACpB,OAAQ;AAAA,MACP,QAAQ;AAAA,MACR,MAAM,MAAM,QAAQ;AAAA,QACnB,KAAK,MAAM;AAAA,MACZ;AAAA,IACD;AAAA,IACA,CAAE,MAAM,MAAM,MAAM,KAAK,SAAU;AAAA,EACpC;AAEA,QAAM,mBAAe,2BAAY,qBAAAC,OAAa;AAC9C,QAAM,aAAS;AAAA,IACd,CAAE,WACD,OAAO,UAAW;AAAA,MACjB;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,QACT,CAAE,SAAU,GAAG;AAAA,MAChB;AAAA,IACD,CAAE;AAAA,IACH,CAAE,WAAW,cAAc,cAAc,MAAO;AAAA,EACjD;AACA,QAAM,EAAE,oBAAoB,QAAI,gCAAAC,SAAsB;AAEtD,SACC;AAAA,IAAC,KAAK;AAAA,IAAL;AAAA,MACA,UAAW,MAAM;AAChB,cAAM,0BACL,WAAAC,SAAe,MAAM,MAAM,IAAK;AAAA,QAEhC,MAAM,QAAQ,MAAM;AAErB,YAAK,qBAAsB;AAE1B,8BAAqB;AAAA,YACpB,CAAE,SAAU,GAAG;AAAA,UAChB,CAAE;AAAA,QACH,OAAO;AACN,8BAAqB;AAAA,YACpB,CAAE,SAAU,GAAG;AAAA,UAChB,CAAE;AAAA,QACH;AAAA,MACD;AAAA,MACA,MAAO,YAAY;AAAA,MACnB,OAAQ,OAAQ,SAAU;AAAA,MAC1B,aACC,WAAAA,SAAe,MAAM,MAAM,IAAK;AAAA,MAEhC,MAAM,QAAQ,MAAM;AAAA,MAGrB;AAAA,oDAAC,KAAK,WAAL,EAAiB,gBAAM,OAAO;AAAA,QAC/B,4CAAC,KAAK,cAAL,EAAoB,iBAAQ,SAAU,GAAG;AAAA;AAAA;AAAA,EAC3C;AAEF;AAEe,SAAR,8BAAgD;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,eAAW,iCAAkB,UAAU,GAAI;AAGjD,MAAK,CAAE,UAAU,OAAO,WAAW,GAAI;AACtC,WAAO;AAAA,EACR;AAEA,QAAM,aAAS,sCAAwB,SAAU;AAEjD,SACC;AAAA,IAAC;AAAA;AAAA,MAEA,WAAY,WAAW,iBAAiB;AAAA,MAExC;AAAA,oDAAC,KAAK,oBAAL,EACA,sDAAC,KAAK,WAAL,EAAiB,iBAAO,OAAO,GACjC;AAAA,QACA,4CAAC,KAAK,SAAL,EAAa,QAAS,GACtB,sDAAC,KAAK,OAAL,EACE,iBAAO,IAAK,CAAE,UACf;AAAA,UAAC;AAAA;AAAA,YAKA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAPC,YAAY,KAAK,UAAW,MAAM,IAAK,KACvC,MAAM;AAAA,QAOR,CACC,GACH,GACD;AAAA;AAAA;AAAA,IAtBM;AAAA,EAuBP;AAEF;", "names": ["componentsPrivateApis", "BlockContext", "useBlockBindingsUtils", "fastDeepEqual"] }