{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-lockscreen/index.ts"],"sourcesContent":["import { watch, isRef, onUnmounted } from 'vue'\n\nimport getScrollBarWidth from '@element-plus/utils/scrollbar-width'\nimport { throwError } from '@element-plus/utils/error'\nimport {\n  addClass,\n  removeClass,\n  hasClass,\n  getStyle,\n} from '@element-plus/utils/dom'\n\nimport type { Ref } from 'vue'\n\n/**\n * Hook that monitoring the ref value to lock or unlock the screen.\n * When the trigger became true, it assumes modal is now opened and vice versa.\n * @param trigger {Ref<boolean>}\n */\nexport default (trigger: Ref<boolean>) => {\n  if (!isRef(trigger)) {\n    throwError(\n      '[useLockScreen]',\n      'You need to pass a ref param to this function'\n    )\n  }\n  let scrollBarWidth = 0\n  let withoutHiddenClass = false\n  let bodyPaddingRight = '0'\n  let computedBodyPaddingRight = 0\n\n  onUnmounted(() => {\n    cleanup()\n  })\n\n  const cleanup = () => {\n    removeClass(document.body, 'el-popup-parent--hidden')\n    if (withoutHiddenClass) {\n      document.body.style.paddingRight = bodyPaddingRight\n    }\n  }\n  watch(trigger, (val) => {\n    if (val) {\n      withoutHiddenClass = !hasClass(document.body, 'el-popup-parent--hidden')\n      if (withoutHiddenClass) {\n        bodyPaddingRight = document.body.style.paddingRight\n        computedBodyPaddingRight = parseInt(\n          getStyle(document.body, 'paddingRight'),\n          10\n        )\n      }\n      scrollBarWidth = getScrollBarWidth()\n      const bodyHasOverflow =\n        document.documentElement.clientHeight < document.body.scrollHeight\n      const bodyOverflowY = getStyle(document.body, 'overflowY')\n      if (\n        scrollBarWidth > 0 &&\n        (bodyHasOverflow || bodyOverflowY === 'scroll') &&\n        withoutHiddenClass\n      ) {\n        document.body.style.paddingRight = `${\n          computedBodyPaddingRight + scrollBarWidth\n        }px`\n      }\n      addClass(document.body, 'el-popup-parent--hidden')\n    } else {\n      cleanup()\n    }\n  })\n}\n"],"names":["getScrollBarWidth"],"mappings":";;;;;AAkBA,oBAAe,CAAC,YAA0B;AACxC,MAAI,CAAC,MAAM,UAAU;AACnB,eACE,mBACA;AAAA;AAGJ,MAAI,iBAAiB;AACrB,MAAI,qBAAqB;AACzB,MAAI,mBAAmB;AACvB,MAAI,2BAA2B;AAE/B,cAAY,MAAM;AAChB;AAAA;AAGF,QAAM,UAAU,MAAM;AACpB,gBAAY,SAAS,MAAM;AAC3B,QAAI,oBAAoB;AACtB,eAAS,KAAK,MAAM,eAAe;AAAA;AAAA;AAGvC,QAAM,SAAS,CAAC,QAAQ;AACtB,QAAI,KAAK;AACP,2BAAqB,CAAC,SAAS,SAAS,MAAM;AAC9C,UAAI,oBAAoB;AACtB,2BAAmB,SAAS,KAAK,MAAM;AACvC,mCAA2B,SACzB,SAAS,SAAS,MAAM,iBACxB;AAAA;AAGJ,uBAAiBA;AACjB,YAAM,kBACJ,SAAS,gBAAgB,eAAe,SAAS,KAAK;AACxD,YAAM,gBAAgB,SAAS,SAAS,MAAM;AAC9C,UACE,iBAAiB,yBACG,kBAAkB,aACtC,oBACA;AACA,iBAAS,KAAK,MAAM,eAAe,GACjC,2BAA2B;AAAA;AAG/B,eAAS,SAAS,MAAM;AAAA,WACnB;AACL;AAAA;AAAA;AAAA;;;;"}