| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 { 2 "version": 3, 3 "sources": ["../../../../packages/block-library/src/accordion/view.js"], 4 "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { store, getContext, withSyncEvent } from '@wordpress/interactivity';\n\n// Whether the hash has been handled for the current page load.\n// This is used to prevent the hash from being handled multiple times.\nlet hashHandled = false;\n\nconst { actions } = store(\n\t'core/accordion',\n\t{\n\t\tstate: {\n\t\t\tget isOpen() {\n\t\t\t\tconst { id, accordionItems } = getContext();\n\t\t\t\tconst accordionItem = accordionItems.find(\n\t\t\t\t\t( item ) => item.id === id\n\t\t\t\t);\n\t\t\t\treturn accordionItem ? accordionItem.isOpen : false;\n\t\t\t},\n\t\t},\n\t\tactions: {\n\t\t\ttoggle: () => {\n\t\t\t\tconst context = getContext();\n\t\t\t\tconst { id, autoclose, accordionItems } = context;\n\t\t\t\tconst accordionItem = accordionItems.find(\n\t\t\t\t\t( item ) => item.id === id\n\t\t\t\t);\n\n\t\t\t\tif ( autoclose ) {\n\t\t\t\t\taccordionItems.forEach( ( item ) => {\n\t\t\t\t\t\titem.isOpen =\n\t\t\t\t\t\t\titem.id === id ? ! accordionItem.isOpen : false;\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\taccordionItem.isOpen = ! accordionItem.isOpen;\n\t\t\t\t}\n\t\t\t},\n\t\t\thandleKeyDown: withSyncEvent( ( event ) => {\n\t\t\t\tif (\n\t\t\t\t\tevent.key !== 'ArrowUp' &&\n\t\t\t\t\tevent.key !== 'ArrowDown' &&\n\t\t\t\t\tevent.key !== 'Home' &&\n\t\t\t\t\tevent.key !== 'End'\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst context = getContext();\n\t\t\t\tconst { id, accordionItems } = context;\n\t\t\t\tconst currentIndex = accordionItems.findIndex(\n\t\t\t\t\t( item ) => item.id === id\n\t\t\t\t);\n\n\t\t\t\tlet nextIndex;\n\n\t\t\t\tswitch ( event.key ) {\n\t\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\t\tnextIndex = Math.max( 0, currentIndex - 1 );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\t\tnextIndex = Math.min(\n\t\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\t\taccordionItems.length - 1\n\t\t\t\t\t\t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Home':\n\t\t\t\t\t\tnextIndex = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'End':\n\t\t\t\t\t\tnextIndex = accordionItems.length - 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tconst nextId = accordionItems[ nextIndex ].id;\n\t\t\t\tconst nextButton = document.getElementById( nextId );\n\t\t\t\tif ( nextButton ) {\n\t\t\t\t\tnextButton.focus();\n\t\t\t\t}\n\t\t\t} ),\n\t\t\topenPanelByHash: () => {\n\t\t\t\tif ( hashHandled || ! window.location?.hash?.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst context = getContext();\n\t\t\t\tconst { id, accordionItems, autoclose } = context;\n\t\t\t\tconst hash = decodeURIComponent(\n\t\t\t\t\twindow.location.hash.slice( 1 )\n\t\t\t\t);\n\t\t\t\tconst targetElement = window.document.getElementById( hash );\n\n\t\t\t\tif ( ! targetElement ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst panelElement = window.document.querySelector(\n\t\t\t\t\t'.wp-block-accordion-panel[aria-labelledby=\"' + id + '\"]'\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\t! panelElement ||\n\t\t\t\t\t! panelElement.contains( targetElement )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\thashHandled = true;\n\n\t\t\t\tif ( autoclose ) {\n\t\t\t\t\taccordionItems.forEach( ( item ) => {\n\t\t\t\t\t\titem.isOpen = item.id === id;\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tconst targetItem = accordionItems.find(\n\t\t\t\t\t\t( item ) => item.id === id\n\t\t\t\t\t);\n\n\t\t\t\t\tif ( targetItem ) {\n\t\t\t\t\t\ttargetItem.isOpen = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Wait for the panel to be opened before scrolling to it.\n\t\t\t\twindow.setTimeout( () => {\n\t\t\t\t\ttargetElement.scrollIntoView();\n\t\t\t\t}, 0 );\n\t\t\t},\n\t\t},\n\t\tcallbacks: {\n\t\t\tinitAccordionItems: () => {\n\t\t\t\tconst context = getContext();\n\t\t\t\tconst { id, openByDefault, accordionItems } = context;\n\t\t\t\taccordionItems.push( {\n\t\t\t\t\tid,\n\t\t\t\t\tisOpen: openByDefault,\n\t\t\t\t} );\n\t\t\t\tactions.openPanelByHash();\n\t\t\t},\n\t\t\thashChange: () => {\n\t\t\t\thashHandled = false;\n\t\t\t\tactions.openPanelByHash();\n\t\t\t},\n\t\t},\n\t},\n\t{ lock: true }\n);\n"], 5 "mappings": ";AAGA,SAAS,OAAO,YAAY,qBAAqB;AAIjD,IAAI,cAAc;AAElB,IAAM,EAAE,QAAQ,IAAI;EACnB;EACA;IACC,OAAO;MACN,IAAI,SAAS;AACZ,cAAM,EAAE,IAAI,eAAe,IAAI,WAAW;AAC1C,cAAM,gBAAgB,eAAe;UACpC,CAAE,SAAU,KAAK,OAAO;QACzB;AACA,eAAO,gBAAgB,cAAc,SAAS;MAC/C;IACD;IACA,SAAS;MACR,QAAQ,MAAM;AACb,cAAM,UAAU,WAAW;AAC3B,cAAM,EAAE,IAAI,WAAW,eAAe,IAAI;AAC1C,cAAM,gBAAgB,eAAe;UACpC,CAAE,SAAU,KAAK,OAAO;QACzB;AAEA,YAAK,WAAY;AAChB,yBAAe,QAAS,CAAE,SAAU;AACnC,iBAAK,SACJ,KAAK,OAAO,KAAK,CAAE,cAAc,SAAS;UAC5C,CAAE;QACH,OAAO;AACN,wBAAc,SAAS,CAAE,cAAc;QACxC;MACD;MACA,eAAe,cAAe,CAAE,UAAW;AAC1C,YACC,MAAM,QAAQ,aACd,MAAM,QAAQ,eACd,MAAM,QAAQ,UACd,MAAM,QAAQ,OACb;AACD;QACD;AAEA,cAAM,eAAe;AACrB,cAAM,UAAU,WAAW;AAC3B,cAAM,EAAE,IAAI,eAAe,IAAI;AAC/B,cAAM,eAAe,eAAe;UACnC,CAAE,SAAU,KAAK,OAAO;QACzB;AAEA,YAAI;AAEJ,gBAAS,MAAM,KAAM;UACpB,KAAK;AACJ,wBAAY,KAAK,IAAK,GAAG,eAAe,CAAE;AAC1C;UACD,KAAK;AACJ,wBAAY,KAAK;cAChB,eAAe;cACf,eAAe,SAAS;YACzB;AACA;UACD,KAAK;AACJ,wBAAY;AACZ;UACD,KAAK;AACJ,wBAAY,eAAe,SAAS;AACpC;QACF;AAEA,cAAM,SAAS,eAAgB,SAAU,EAAE;AAC3C,cAAM,aAAa,SAAS,eAAgB,MAAO;AACnD,YAAK,YAAa;AACjB,qBAAW,MAAM;QAClB;MACD,CAAE;MACF,iBAAiB,MAAM;AACtB,YAAK,eAAe,CAAE,OAAO,UAAU,MAAM,QAAS;AACrD;QACD;AAEA,cAAM,UAAU,WAAW;AAC3B,cAAM,EAAE,IAAI,gBAAgB,UAAU,IAAI;AAC1C,cAAM,OAAO;UACZ,OAAO,SAAS,KAAK,MAAO,CAAE;QAC/B;AACA,cAAM,gBAAgB,OAAO,SAAS,eAAgB,IAAK;AAE3D,YAAK,CAAE,eAAgB;AACtB;QACD;AAEA,cAAM,eAAe,OAAO,SAAS;UACpC,gDAAgD,KAAK;QACtD;AAEA,YACC,CAAE,gBACF,CAAE,aAAa,SAAU,aAAc,GACtC;AACD;QACD;AAEA,sBAAc;AAEd,YAAK,WAAY;AAChB,yBAAe,QAAS,CAAE,SAAU;AACnC,iBAAK,SAAS,KAAK,OAAO;UAC3B,CAAE;QACH,OAAO;AACN,gBAAM,aAAa,eAAe;YACjC,CAAE,SAAU,KAAK,OAAO;UACzB;AAEA,cAAK,YAAa;AACjB,uBAAW,SAAS;UACrB;QACD;AAGA,eAAO,WAAY,MAAM;AACxB,wBAAc,eAAe;QAC9B,GAAG,CAAE;MACN;IACD;IACA,WAAW;MACV,oBAAoB,MAAM;AACzB,cAAM,UAAU,WAAW;AAC3B,cAAM,EAAE,IAAI,eAAe,eAAe,IAAI;AAC9C,uBAAe,KAAM;UACpB;UACA,QAAQ;QACT,CAAE;AACF,gBAAQ,gBAAgB;MACzB;MACA,YAAY,MAAM;AACjB,sBAAc;AACd,gBAAQ,gBAAgB;MACzB;IACD;EACD;EACA,EAAE,MAAM,KAAK;AACd;", 6 "names": [] 7 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Wed Apr 15 08:20:10 2026 | Cross-referenced by PHPXref |