UNPKG

@bentoproject/accordion

Version:

Displays content sections that can be collapsed and expanded.

1 lines 10.2 kB
var n,r=Object.create,t=Object.defineProperty,e=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,a=function(n){return t(n,"__esModule",{value:!0})},c=function(n){return function(n,r,o){if(r&&"object"==typeof r||"function"==typeof r)for(var a,c=i(r),f=0,l=c.length;f<l;f++)a=c[f],u.call(n,a)||"default"===a||t(n,a,{get:function(n){return r[n]}.bind(null,a),enumerable:!(o=e(r,a))||o.enumerable});return n}(a(t(null!=n?r(o(n)):{},"default",n&&n.__esModule&&"default"in n?{get:function(){return n.default},enumerable:!0}:{value:n,enumerable:!0})),n)};function f(n){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}function l(n){var r=function(n,r){if("object"!==f(n)||null===n)return n;var t=n[Symbol.toPrimitive];if(void 0!==t){var e=t.call(n,"string");if("object"!==f(e))return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(n)}(n);return"symbol"===f(r)?r:String(r)}function v(n,r){(null==r||r>n.length)&&(r=n.length);for(var t=0,e=new Array(r);t<r;t++)e[t]=n[t];return e}function d(){return n||(n=Promise.resolve(void 0))}function b(n,r,t){return r in n?Object.defineProperty(n,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[r]=t,n}function y(n,r){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(n);r&&(e=e.filter((function(r){return Object.getOwnPropertyDescriptor(n,r).enumerable}))),t.push.apply(t,e)}return t}function h(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?y(Object(t),!0).forEach((function(r){b(n,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):y(Object(t)).forEach((function(r){Object.defineProperty(n,r,Object.getOwnPropertyDescriptor(t,r))}))}return n}function p(n,r){return function(n){if(Array.isArray(n))return n}(n)||function(n,r){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var e,i,o=[],u=!0,a=!1;try{for(t=t.call(n);!(u=(e=t.next()).done)&&(o.push(e.value),!r||o.length!==r);u=!0);}catch(n){a=!0,i=n}finally{try{u||null==t.return||t.return()}finally{if(a)throw i}}return o}}(n,r)||function(n,r){if(n){if("string"==typeof n)return v(n,r);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?v(n,r):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(n,r){if(null==n)return{};var t,e,i={},o=Object.keys(n);for(e=0;e<o.length;e++)t=o[e],r.indexOf(t)>=0||(i[t]=n[t]);return i}!function(n,r){for(var e in a(n),r)t(n,e,{get:r[e],enumerable:!0})}(exports,{BentoAccordion:function(){return cn},BentoAccordionContent:function(){return dn},BentoAccordionHeader:function(){return vn},BentoAccordionSection:function(){return ln}});var m=Object.prototype;function g(n,r){return Object.keys(n).reduce((function(t,e){return r.includes(e)||(t[e]=n[e]),t}),{})}m.hasOwnProperty,m.toString;var j=c(require("preact")),O=(c(require("preact")),c(require("preact/hooks")));function S(n,r,t){return j.createElement.apply(void 0,arguments)}function w(n){return j.createContext(n,void 0)}function x(n){return O.useState(n)}function A(n){return O.useRef(n)}function I(n,r){O.useEffect(n,r)}function M(n,r){O.useLayoutEffect(n,r)}function z(n){return O.useContext(n)}function Y(n,r){return O.useMemo(n,r)}function C(n,r){return O.useCallback(n,r)}var E,k,q=c(require("preact")),B=["ref"],H="undefined"!=typeof Symbol&&(null===(E=Symbol.for)||void 0===E?void 0:E.call(Symbol,"react.forward_ref"))||3911,_=q.options.__b;q.options.__b=function(n){var r;null!==(r=n.type)&&void 0!==r&&r.Bl&&n.ref&&(n.props.ref=n.ref,n.ref=null),null==_||_(n)};var P,T=["auto","lazy","eager","unload"],U=(b(k={},"auto",0),b(k,"lazy",1),b(k,"eager",2),b(k,"unload",3),k);function W(n,r){var t=U[n]||0,e=U[r]||0,i=Math.max(t,e);return T[i]}function $(){return P||(P=w({renderable:!0,playable:!0,loading:"auto"}))}function D(n){var r=n.children,t=n.loading,e=void 0===t?"auto":t,i=n.notify,o=n.playable,u=void 0===o||o,a=n.renderable,c=void 0===a||a,f=z($()),l=c&&f.renderable,v=l&&u&&f.playable,d=W(l?"auto":"lazy",W(e,f.loading)),b=i||f.notify,y=Y((function(){return{renderable:l,playable:v,loading:d,notify:b}}),[l,v,d,b]);return S($().Provider,{children:r,value:y})}Array.isArray;var F,G=["Webkit","webkit","Moz","moz","ms","O","o"];function J(n,r,t){if(Q(r))return r;var e;F||(e=Object.create(null),F=e);var i=F[r];if(!i||t){if(i=r,void 0===n[r]){var o=function(n){return n.charAt(0).toUpperCase()+n.slice(1)}(r),u=function(n,r){for(var t=0;t<G.length;t++){var e=G[t]+r;if(void 0!==n[e])return e}return""}(n,o);void 0!==n[u]&&(i=u)}t||(F[r]=i)}return i}function K(n,r,t,e,i){var o=J(n.style,r,i);if(o){var u=e?t+e:t;Q(o)?n.style.setProperty(o,u):n.style[o]=u}}function L(n,r,t){var e=J(n.style,r,t);if(e)return Q(e)?n.style.getPropertyValue(e):n.style[e]}function N(n,r){for(var t in r)K(n,t,r[t])}function Q(n){return n.startsWith("--")}function R(n,r){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;n.classList.add("i-amphtml-animating");var e=r();return e.onfinish=e.oncancel=function(){e=null,t&&t(),n.classList.remove("i-amphtml-animating")},function(){e&&e.cancel()}}function V(n){var r=window.innerHeight,t=Math.abs(n)/r*500;return Math.min(Math.max(t,200),500)}var X,Z=["animate","as","children","expandSingleSection","id"],nn=["animate","as","children","expanded","id","onExpandStateChange"],rn=w({}),tn=w({}),en={},on={},un=(X=0,function(){return String(++X)}),an=function(){return String(Math.floor(1e5*Math.random()))},cn=function(n){function r(n){var r=n.ref;return function(n,r){var t=n.animate,e=void 0!==t&&t,i=n.as,o=void 0===i?"section":i,u=n.children,a=n.expandSingleSection,c=void 0!==a&&a,f=n.id,l=s(n,Z),v=p(x(en),2),y=v[0],m=v[1],j=A(on),w=p(x(an),1)[0],M=f||"a".concat(w);I((function(){c&&m((function(n){var r={},t=0;for(var e in n)r[e]=n[e]&&0==t++;return r}))}),[c]);var z=C((function(n,r,t){var e=t.current;return m((function(t){return fn(n,r,t,c)})),j.current=h(h({},j.current),{},b({},n,e)),function(){m((function(r){return g(r,n)})),j.current=g(j.current,n)}}),[c]),E=C((function(n,r){m((function(t){var e=null!=r?r:!t[n],i=fn(n,e,t,c);return d().then((function(){for(var n in t){var r=j.current[n];r&&t[n]!=i[n]&&r(i[n])}})),i}))}),[c]),k=C((function(n,r){var t;return null!==(t=y[n])&&void 0!==t?t:r}),[y]),q=C((function(n){if(n)n in y&&E(n);else if(!c)for(var r in y)E(r)}),[y,E,c]),B=C((function(n){if(n)k(n,!0)||E(n);else if(!c)for(var r in y)k(r,!0)||E(r)}),[y,E,k,c]),H=C((function(n){if(n)k(n,!1)&&E(n);else for(var r in y)k(r,!1)&&E(r)}),[y,E,k]);!function(n,r,t){O.useImperativeHandle(n,(function(){return{toggle:q,expand:B,collapse:H}}),t)}(r,0,[q,H,B]);var _=Y((function(){return{registerSection:z,toggleExpanded:E,isExpanded:k,animate:e,prefix:M}}),[z,E,k,e,M]);return S(o,h({id:f},l),S(rn.Provider,{value:_},u))}(s(n,B),r)}return r.$$typeof=H,r.render=r,r.prototype.isReactComponent=!0,r.Bl=!0,r}();function fn(n,r,t,e){var i;if(e&&r)for(var o in i=b({},n,r),t)o!=n&&(i[o]=!1);else i=h(h({},t),{},b({},n,r));return i}function ln(n){var r=n.animate,t=void 0!==r&&r,e=n.as,i=void 0===e?"section":e,o=n.children,u=n.expanded,a=void 0!==u&&u,c=n.id,f=n.onExpandStateChange,l=s(n,nn),v=p(x(un),1)[0],b=c||v,y=p(x(an),1)[0],m=p(x(a),2),g=m[0],j=m[1],O=p(x(null),2),w=O[0],I=O[1],E=p(x(null),2),k=E[0],q=E[1],B=z(rn),H=B.animate,_=B.isExpanded,P=B.prefix,T=B.registerSection,U=B.toggleExpanded,W=_?_(b,a):g,$=null!=H?H:t,D=w||"".concat(P||"a","-content-").concat(b,"-").concat(y),F=k||"".concat(P||"a","-header-").concat(b,"-").concat(y),G=A(null);G.current=f,M((function(){if(T)return T(b,a,G)}),[T,b,a]);var J=C((function(n){U?U(b,n):j((function(r){var t=null!=n?n:!r;return d().then((function(){var n=G.current;n&&n(t)})),t}))}),[b,U]),K=Y((function(){return{animate:$,contentId:D,headerId:F,expanded:W,toggleHandler:J,setContentId:I,setHeaderId:q}}),[$,D,F,W,J]);return S(i,h({},l),S(tn.Provider,{value:K},o))}function vn(n){var r="class",t="tabIndex",e=n.as,i=void 0===e?"div":e,o=n.children,u=n.id,a=n.role,c=void 0===a?"button":a,f=n[r],v=void 0===f?"":f,d=n[t],b=void 0===d?0:d,y=s(n,["as","children","id","role",r,t].map(l)),p=z(tn),m=p.contentId,g=p.expanded,j=p.headerId,O=p.setHeaderId,w=p.toggleHandler;return M((function(){O&&O(u)}),[O,u]),S(i,h(h({},y),{},{id:j,role:c,class:"".concat(v," ").concat("section-child-00fce3c"," ").concat("header-00fce3c"),tabIndex:b,"aria-controls":m,onClick:function(){return w()},"aria-expanded":String(g)}),o)}function dn(n){var r="class",t=n.as,e=void 0===t?"div":t,i=n.children,o=n.id,u=n.role,a=void 0===u?"region":u,c=n[r],f=void 0===c?"":c,v=s(n,["as","children","id","role",r].map(l)),d=A(null),b=A(!1),y=z(tn),p=y.animate,m=y.contentId,g=y.expanded,j=y.headerId,O=y.setContentId;return I((function(){return b.current=!0,function(){return b.current=!1}}),[]),M((function(){O&&O(o)}),[O,o]),M((function(){var n=b.current,r=d.current;if(p&&n&&r&&r.animate)return g?function(n){return R(n,(function(){var r=L(n,"height"),t=L(n,"opacity"),e=L(n,"overflowY");N(n,{height:0,opacity:0,overflowY:"auto"});var i=n.scrollHeight;N(n,{height:r,opacity:t,overflowY:e});var o=V(i);return n.animate([{height:0,opacity:0,overflowY:"hidden"},{height:i+"px",opacity:1,overflowY:"hidden"}],{easing:"cubic-bezier(0.47, 0, 0.745, 0.715)",duration:o})}))}(r):function(n){return R(n,(function(){var r=n.offsetHeight,t=V(r);return n.animate([{height:r+"px",opacity:1,overflowY:"hidden"},{height:"0",opacity:0,overflowY:"hidden"}],{easing:"cubic-bezier(0.39, 0.575, 0.565, 1)",duration:t})}))}(r)}),[g,p]),S(D,{renderable:g},S(e,h(h({},v),{},{ref:d,class:f+" section-child-00fce3c"+(g?"":" content-hidden-00fce3c"),id:m,"aria-labelledby":j,role:a}),i))}cn.displayName="Accordion";