{"version":3,"sources":["jsdelivr-header.js","/npm/@cnbritain/merlin-www-figure@3.3.6/js/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,oBAEO,QAAS,qCAEZ,aACG,kDAEH,SACA,SACA,SACA,UACA,YACA,eACG,qDAEH,eACA,WACA,qBACA,mBACA,4BACG,qBAEH,0BACA,8BACG,2BACA,cAAe,kCAEP,CAKX,KAAQ,WACJ,IAAI,OACJ,mBACJ,GAIJ,IAAI,cAAgB,KAEpB,SAAS,oBACL,IAAI,EAAY,SAAS,iBAAiB,IAAM,YAChD,GAAK,EAAL,CAIA,IAFA,IAAI,GAAK,EACL,EAAM,EAAU,SACX,EAAI,GACL,oBAAoB,EAAU,MAClC,qBAAqB,EAAU,IAC/B,oBAAoB,EAAU,IAC9B,wBAAwB,EAAU,KAGtC,oBAXsB,CAY1B,CAEA,SAAS,oBAAoB,GAEzB,IAAI,EAAY,0BAA0B,GACtC,EAAY,0BAA0B,GACtC,GAAa,GACb,UAAU,YAAY,EAE9B,CAEA,IAAI,mBAAoB,EACpB,cAAgB,KAEpB,SAAS,YAAY,GACjB,cAAgB,EAChB,EAAS,aAAa,cAAc,GACpC,SAAS,EAAS,cAAc,IAAM,oBAAqB,eAC/D,CAEA,SAAS,WAAW,GAChB,EAAS,gBAAgB,cACzB,YACI,EAAS,cAAc,IAAM,oBAAqB,gBACtD,cAAgB,IACpB,CAEA,SAAS,eAAe,GACpB,EAAE,gBACN,CAEA,SAAS,wBAAwB,GACxB,WAEL,YAAY,EAAI,YAChB,SAAS,EAAI,YAEb,SAAS,EAAG,cAAc,IAAM,oBAAqB,QAAS,aAC9D,SAAS,EAAG,cAAc,IAAM,oBAAqB,OAAQ,YAE7D,SAAS,EAAG,cAAc,IAAM,sBAAuB,SAAS,SAAU,GACtD,QAAQ,KAAK,aAAa,eAKtC,WAAW,MAFX,YAAY,KAIpB,IAEA,SACI,EAAG,cAAc,IAAM,wBAA0B,MAAO,QACxD,gBACR,CAEA,SAAS,qBACD,oBAEJ,mBAAoB,EACpB,SAAS,SAAS,KAAM,YAAY,SAAU,GAC1C,GAAsB,OAAlB,cAAwB,CACxB,IAAI,EAAS,UAAU,EAAE,OAAQ,IAAM,sBAGvC,GAAI,gBAAkB,EAAQ,OAC9B,WAAW,cACf,CACJ,IACJ,CAEA,SAAS,oBAAoB,GACzB,OAAO,GAAM,EAAG,aAAa,0BACjC,CAEA,SAAS,qBAAqB,GAC1B,EAAG,aAAa,2BAA2B,EAC/C","file":"/npm/@cnbritain/merlin-www-figure@3.3.6/js/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@cnbritain/merlin-www-figure@3.3.6/js/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nimport img from '@cnbritain/merlin-www-image';\nimport {\n    hasTouch\n} from '@cnbritain/merlin-www-js-utils/js/detect';\nimport {\n    addClass,\n    addEvent,\n    hasClass,\n    getParent,\n    removeClass,\n    toggleClas,\n} from '@cnbritain/merlin-www-js-utils/js/functions';\nimport {\n    CLS_IS_VISIBLE,\n    CLS_FIGURE,\n    CLS_FIGURE_CONTAINER,\n    CLS_FIGURE_TOOLBAR,\n    CLS_FIGURE_TOOLBAR_MORE\n} from './constants';\nimport {\n    hasElementMagnifierConfig,\n    hasElementMagnifierButton\n} from './magnifier/utils';\nimport Magnifier from './magnifier/index';\n\nexport default {\n\n    /**\n     * Initialises the loading of images\n     */\n    'init': function () {\n        img.init();\n        initialiseFigures();\n    }\n\n};\n\nvar focusedFigure = null;\n\nfunction initialiseFigures() {\n    var figureEls = document.querySelectorAll('.' + CLS_FIGURE);\n    if (!figureEls) return;\n\n    var i = -1;\n    var len = figureEls.length;\n    while (++i < len) {\n        if (isFigureInitialised(figureEls[i])) continue;\n        setFigureInitialised(figureEls[i]);\n        initialiseMagnifier(figureEls[i]);\n        initialiseToolbarToggle(figureEls[i]);\n    }\n\n    initBackgroundBlur();\n}\n\nfunction initialiseMagnifier(el) {\n    // Check for config and the magnifier button\n    var hasConfig = hasElementMagnifierConfig(el);\n    var hasButton = hasElementMagnifierButton(el);\n    if (hasConfig && hasButton) {\n        Magnifier.bindElement(el);\n    }\n}\n\nvar hasBackgroundBlur = false;\nvar focusedFigure = null;\n\nfunction focusFigure(elFigure) {\n    focusedFigure = elFigure;\n    elFigure.setAttribute('is-focused', true);\n    addClass(elFigure.querySelector('.' + CLS_FIGURE_TOOLBAR), CLS_IS_VISIBLE);\n}\n\nfunction blurFigure(elFigure) {\n    elFigure.removeAttribute('is-focused');\n    removeClass(\n        elFigure.querySelector('.' + CLS_FIGURE_TOOLBAR), CLS_IS_VISIBLE);\n    focusedFigure = null;\n}\n\nfunction preventDefault(e) {\n    e.preventDefault();\n}\n\nfunction initialiseToolbarToggle(el) {\n    if (!hasTouch) return;\n\n    removeClass(el, 'is-hover');\n    addClass(el, 'is-touch');\n\n    addEvent(el.querySelector('.' + CLS_FIGURE_TOOLBAR), 'focus', focusFigure);\n    addEvent(el.querySelector('.' + CLS_FIGURE_TOOLBAR), 'blur', blurFigure);\n\n    addEvent(el.querySelector('.' + CLS_FIGURE_CONTAINER), 'click', function (e) {\n        var isFocused = Boolean(this.getAttribute('is-focused'));\n\n        if (!isFocused) {\n            focusFigure(this);\n        } else {\n            blurFigure(this);\n        }\n    });\n\n    addEvent(\n        el.querySelector('.' + CLS_FIGURE_TOOLBAR_MORE + ' a'), 'click',\n        preventDefault);\n}\n\nfunction initBackgroundBlur() {\n    if (hasBackgroundBlur) return;\n\n    hasBackgroundBlur = true;\n    addEvent(document.body, 'touchend', function (e) {\n        if (focusedFigure !== null) {\n            var parent = getParent(e.target, '.' + CLS_FIGURE_CONTAINER);\n            // If the parent also happens to be a figure, ignore triggering\n            // a blur because the figure will do it\n            if (focusedFigure === parent) return;\n            blurFigure(focusedFigure);\n        }\n    });\n}\n\nfunction isFigureInitialised(el) {\n    return el && el.hasAttribute('data-figure-initialised');\n}\n\nfunction setFigureInitialised(el) {\n    el.setAttribute('data-figure-initialised', true);\n}"]}