{"version":3,"file":"373-906b7150cb730295596b.js","mappings":"0QAWA,MAAMA,GAAYC,EAAAA,EAAAA,IAAY,EAAGC,kBAAa,CAC1CC,KAAM,CACF,CAACD,EAAYE,GAAG,OAAQ,CACpBC,MAAOA,EAAGA,WAAcA,EAAQ,GAAGA,KAAW,SAGtDC,aAAc,CACV,CAACJ,EAAYE,GAAG,OAAQ,CACpBC,MAAO,QAGfE,YAAa,CACTC,WAAY,OACZC,YAAa,QAEjBC,WAAY,CACRF,WAAY,OACZC,YAAa,GAEjBE,UAAW,CACPH,WAAY,EACZC,YAAa,QAEjBG,KAAM,CACFC,OAAQ,SACRR,MAAO,WAGf,CAAES,gBAAiB,eAEbC,EAAYC,IAEd,GAAIA,EAAMC,eAAe,QAAS,OAAOD,EAAME,KAG/C,IAAIF,EAAMC,eAAe,YAMpB,OAAO,KALR,IAAK,IAAIE,KAAKH,EAAMI,SAChB,OAAOL,EAASC,EAAMI,SAASD,GAIvB,EAcdE,GAAaC,EAAAA,EAAAA,aAAW,EAAGC,UAASH,WAAUF,OAAMM,aAAaC,KACnE,MAAMC,GAAQC,EAAAA,EAAAA,SAAIJ,EAAS,QAAS,IAAIG,MAAM,kCACxCE,EAAWC,IAAUN,IACpBO,EAAOC,GAdMX,KACpB,MAAMY,EAAaC,IAAKb,IAAa,CAAC,EAChCc,EAAeF,EAAWT,SAAW,CAAC,EAE5C,OAAKW,EAAaC,OAAS,IAAIC,SAAS,yBAC7B,CAACrB,EAASiB,GAAaE,EAAaG,MAGxC,CAAC,KAAM,KAAK,EAMEC,CAAelB,GAC9BmB,EAAWvC,EAAU,CAAEK,OAAOsB,EAAAA,EAAAA,SAAID,EAAO,SACzCc,EAAiBP,KAAKN,EAAAA,EAAAA,SAAIC,EAAU,QAAS,IAAIF,MAAM,sCACvDe,GAASd,EAAAA,EAAAA,SAAIP,EAAU,mBAAoB,IAEjD,IAAIsB,EACAC,GAAW,EACf,MAAMC,EAAYhB,EAASO,MAAMC,SAAS,cAGtCM,EADAd,EAASO,MAAMC,SAAS,kBAChB,UACDR,EAASO,MAAMC,SAAS,oBACvB,YACDR,EAASO,MAAMC,SAAS,mBACvB,WAEA,UAGRR,EAASO,MAAMC,SAAS,cACxBO,GAAW,GAGf,MAAME,EAAkBC,IACpBP,EAASpC,KACT,CAAE,CAACoC,EAASjC,eAAgBsC,GAC5BL,EAASC,GACTZ,EAASO,MAAMY,QAAQ,mBAAoB,IAAIA,QAAQ,6BAA8B,KAGnFC,GAAOrB,EAAAA,EAAAA,SAAIT,EAAM,oBAAsB+B,EAAAA,cAACC,EAAAA,QAAK,CAAC1B,UAAWe,EAAS3B,KAAMuC,KAAKxB,EAAAA,EAAAA,SAAIT,EAAM,oBAAqBkC,KAAK,iBAAoB,KAErIC,EAAe,CACjBX,QACAZ,OAAOH,EAAAA,EAAAA,SAAIC,EAAU,+BAAgCE,GACrDW,SACAG,YACAU,UAAWN,EACXO,QAAS,CAAEpD,KAAM2C,IAAWD,EAAiBrB,IAC7CgC,QAAS,YACTC,cAAe7B,EAAS,wBAA0BA,EAAS,8BAC3D,aAAcA,EAAS,6BAG3B,OAAIG,EAEIkB,EAAAA,cAACS,EAAAA,GAAIC,EAAAA,EAAAA,GAAA,GAAKN,EAAY,CAAEhB,KAAMN,EAAK6B,UAAWnC,EAAKkB,SAAUA,IACxDb,GAMTmB,EAAAA,cAACY,EAAAA,SAAMF,EAAAA,EAAAA,GAAA,GAAKN,EAAY,CAAEO,UAAWnC,EAAKkB,SAAUA,IAC/Cb,EACI,IAIjB,W,wBChIA,IAAIgC,EAAY,EAAQ,MA4BxBC,EAAOC,QAJP,SAAmBC,GACjB,OAAOH,EAAUG,EAAOC,EAC1B,C","sources":["webpack://thecoalitionweb/./src/templates/components/buttonSwap.js","webpack://thecoalitionweb/./node_modules/lodash/cloneDeep.js"],"sourcesContent":["import React, { forwardRef } from 'react'\r\nimport head from 'lodash/head'\r\nimport cloneDeep from 'lodash/cloneDeep'\r\nimport { makeStyles } from '@material-ui/styles'\r\nimport classnames from 'classnames'\r\nimport Button from 'tcweb-material-components/core/button'\r\nimport Image from 'tcweb-material-components/core/image'\r\nimport get from 'tcweb-material-components/core/poly/get'\r\n\r\nimport Link from '../../components/common/link'\r\n\r\nconst useStyles = makeStyles( ({ breakpoints }) => ({\r\n root: {\r\n [breakpoints.up('md')]: {\r\n width: ({ width }) => !!width ? `${width}%` : 'auto'\r\n }\r\n },\r\n partialWidth: {\r\n [breakpoints.up('md')]: {\r\n width: '50%'\r\n }\r\n },\r\n aligncenter: {\r\n marginLeft: 'auto',\r\n marginRight: 'auto'\r\n },\r\n alignright: {\r\n marginLeft: 'auto',\r\n marginRight: 0\r\n },\r\n alignleft: {\r\n marginLeft: 0,\r\n marginRight: 'auto'\r\n },\r\n icon: {\r\n height: '1.33em',\r\n width: 'auto'\r\n }\r\n}),\r\n{ classNamePrefix: 'ButtonSwap' })\r\n\r\nconst getTitle = (child) => {\r\n // if found child with text, return it\r\n if (child.hasOwnProperty('data')) return child.data\r\n\r\n // Keep searching\r\n if (child.hasOwnProperty('children')) {\r\n for (let i in child.children) {\r\n return getTitle(child.children[i])\r\n }\r\n }\r\n // No more to search / didn't find\r\n else return null\r\n}\r\n\r\nconst getTitleAndUrl = (children) => {\r\n const firstChild = head(children) || {}\r\n const childAttribs = firstChild.attribs || {}\r\n\r\n if ((childAttribs.class || '').includes('wp-block-button__link')) {\r\n return [getTitle(firstChild), childAttribs.href]\r\n }\r\n\r\n return [null, null]\r\n}\r\n\r\nconst ButtonSwap = forwardRef(({ attribs, children, data, className }, ref) => {\r\n const match = get(attribs, 'class', '').match(/wp-block-button__width-(\\w*)\\b/)\r\n const _attribs = cloneDeep(attribs)\r\n const [title, url] = getTitleAndUrl(children)\r\n const _classes = useStyles({ width: get(match, '[1]') })\r\n const alignmentClass = head(get(_attribs, 'class', '').match(/aligncenter|alignleft|alignright/g)) // Remove from button component when WP is at version 5.4.1 on prod\r\n const target = get(children, '0.attribs.target', '')\r\n\r\n let color\r\n let disabled = false\r\n const fullWidth = _attribs.class.includes('full-width')\r\n\r\n if (_attribs.class.includes('action-primary')) {\r\n color = 'primary'\r\n } else if (_attribs.class.includes('action-secondary')) {\r\n color = 'secondary'\r\n } else if (_attribs.class.includes('action-tertiary')) {\r\n color = 'tertiary'\r\n } else {\r\n color = 'primary'\r\n }\r\n\r\n if (_attribs.class.includes('disabled')) {\r\n disabled = true\r\n }\r\n\r\n const buttonClassName = classnames(\r\n _classes.root,\r\n { [_classes.partialWidth]: !fullWidth },\r\n _classes[alignmentClass],\r\n _attribs.class.replace(/wp-block-button/g, '').replace(/\\S*is-style-btn-action\\S*/g, '')\r\n )\r\n\r\n const Icon = get(data, 'media.mobile.url') ? : null\r\n\r\n const defaultProps = {\r\n color,\r\n title: get(_attribs, `['data-screen-reader-title']`, title),\r\n target,\r\n fullWidth,\r\n startIcon: Icon,\r\n classes: { root: classnames(buttonClassName, className) },\r\n variant: 'contained',\r\n telemetryName: _attribs['data-telemetry-name'] || _attribs['data-mobile-telemetry-name'], // data-mobile-telemetry-name -old, depricate once all buttons are redone in cms\r\n 'aria-label': _attribs['data-screen-reader-title']\r\n }\r\n\r\n if (url) {\r\n return (\r\n \r\n {title}\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n})\r\n\r\nexport default ButtonSwap","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n"],"names":["useStyles","makeStyles","breakpoints","root","up","width","partialWidth","aligncenter","marginLeft","marginRight","alignright","alignleft","icon","height","classNamePrefix","getTitle","child","hasOwnProperty","data","i","children","ButtonSwap","forwardRef","attribs","className","ref","match","get","_attribs","cloneDeep","title","url","firstChild","head","childAttribs","class","includes","href","getTitleAndUrl","_classes","alignmentClass","target","color","disabled","fullWidth","buttonClassName","classnames","replace","Icon","React","Image","src","role","defaultProps","startIcon","classes","variant","telemetryName","Link","_extends","buttonRef","Button","baseClone","module","exports","value","CLONE_DEEP_FLAG"],"sourceRoot":""}