{"version":3,"sources":["jsdelivr-header.js","/npm/@lefrancois/alpine-focal@1.0.0/dist/module.cjs.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,UAAY,OAAO,eACnB,eAAkB,GAAW,UAAU,EAAQ,aAAc,CAAC,OAAO,IACrE,SAAW,CAAC,EAAQ,KACtB,IAAK,IAAI,KAAQ,EACf,UAAU,EAAQ,EAAM,CAAC,IAAK,EAAI,GAAO,YAAY,GAAM,EAU/D,SAAS,YAAY,GACnB,EAAO,UAAU,SAAS,CAAC,GAAK,iBAC9B,MAAM,EAAQ,EAAW,MAAM,KAC/B,IAAI,EAAU,EAAM,IAAM,MACtB,EAAU,EAAM,IAAM,MACf,EAAM,KAAM,GAErB,EAAG,MAAM,cAAgB,GACzB,EAAG,QAAW,IACZ,MAAM,EAAO,EAAG,wBACV,GAAK,EAAE,QAAU,EAAK,MAAQ,EAAK,MACnC,GAAK,EAAE,QAAU,EAAK,KAAO,EAAK,OAClC,GAAgB,EAAK,MAAQ,EAAI,EAAI,EAAK,OAAS,EAAK,MACxD,GAAgB,EAAK,OAAS,EAAI,EAAI,EAAK,QAAU,EAAK,OAChE,EAAmC,KAAxB,EAAI,EAAe,GAC9B,EAAmC,KAAxB,EAAI,EAAe,GAC1B,EAAU,MACZ,EAAU,KACR,EAAU,IACZ,EAAU,GACR,EAAU,MACZ,EAAU,KACR,EAAU,IACZ,EAAU,GACZ,EAAU,KAAK,MAAM,GACrB,EAAU,KAAK,MAAM,GACrB,MAAM,EAAe,KAAK,MAAM,EAAU,IAAM,EAAG,cAC7C,EAAe,KAAK,MAAM,EAAU,IAAM,EAAG,eACnD,EAAG,MAAM,cAAgB,QACzB,EAAG,MAAM,mBAAqB,GAAG,MAAY,KAC7C,MAAM,OAAO,MAAY,SAAe,OAAkB,MAAiB,IAGzE,EAAQ,SAAS,OACnB,EAAiC,IAApB,SAAS,GAAiB,EAAG,aAAhC,KAER,EAAQ,SAAS,OACnB,EAAiC,IAApB,SAAS,GAAiB,EAAG,cAAhC,KAEZ,EAAG,MAAM,cAAgB,QACzB,EAAG,MAAM,mBAAqB,GAAG,KAAW,IAC9C,GAEJ,CAjDA,eAAe,SACf,SAAS,QAAS,CAChB,QAAS,IAAM,iBAkDjB,IAAI,eAAiB","file":"/npm/@lefrancois/alpine-focal@1.0.0/dist/module.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/@lefrancois/alpine-focal@1.0.0/dist/module.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", {value: true});\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, {get: all[name], enumerable: true});\n};\n\n// builds/module.js\n__markAsModule(exports);\n__export(exports, {\n  default: () => module_default\n});\n\n// src/index.js\nfunction src_default(Alpine) {\n  Alpine.directive(\"focal\", (el, {expression}) => {\n    const parts = expression.split(\" \");\n    let xOffset = parts[0] || \"50%\";\n    let yOffset = parts[1] || \"50%\";\n    let edit = parts[2] || false;\n    if (edit) {\n      el.style[\"object-fit\"] = \"\";\n      el.onclick = (e) => {\n        const rect = el.getBoundingClientRect();\n        const x = (e.clientX - rect.left) / rect.width;\n        const y = (e.clientY - rect.top) / rect.height;\n        const shiftCenterX = (rect.width / 2 - x * rect.width) / rect.width;\n        const shiftCenterY = (rect.height / 2 - y * rect.height) / rect.height;\n        xOffset = (x - shiftCenterX / 2) * 100;\n        yOffset = (y - shiftCenterY / 2) * 100;\n        if (xOffset > 100)\n          xOffset = 100;\n        if (xOffset < 0)\n          xOffset = 0;\n        if (yOffset > 100)\n          yOffset = 100;\n        if (yOffset < 0)\n          yOffset = 0;\n        xOffset = Math.round(xOffset);\n        yOffset = Math.round(yOffset);\n        const xPixelOffset = Math.round(xOffset / 100 * el.naturalWidth);\n        const yPixelOffset = Math.round(yOffset / 100 * el.naturalHeight);\n        el.style[\"object-fit\"] = \"cover\";\n        el.style[\"object-position\"] = `${xOffset}% ${yOffset}%`;\n        alert(`Use ${xOffset}% ${yOffset}% or ${xPixelOffset}px ${yPixelOffset}px`);\n      };\n    } else {\n      if (xOffset.endsWith(\"x\")) {\n        xOffset = `${parseInt(xOffset) * 100 / el.naturalWidth}%`;\n      }\n      if (yOffset.endsWith(\"x\")) {\n        yOffset = `${parseInt(yOffset) * 100 / el.naturalHeight}%`;\n      }\n      el.style[\"object-fit\"] = \"cover\";\n      el.style[\"object-position\"] = `${xOffset} ${yOffset}`;\n    }\n  });\n}\n\n// builds/module.js\nvar module_default = src_default;\n"]}