{"ast":null,"code":"import { clamp } from '../utils';\nimport { eventScope, getPosition } from '../utils/';\nexport function selectHandler(scrollbar) {\n  var addEvent = eventScope(scrollbar);\n  var containerEl = scrollbar.containerEl,\n    contentEl = scrollbar.contentEl;\n  var isSelected = false;\n  var isContextMenuOpened = false; // flag to prevent selection when context menu is opened\n  var animationID;\n  function scroll(_a) {\n    var x = _a.x,\n      y = _a.y;\n    if (!x && !y) return;\n    var offset = scrollbar.offset,\n      limit = scrollbar.limit;\n    // DISALLOW delta transformation\n    scrollbar.setMomentum(clamp(offset.x + x, 0, limit.x) - offset.x, clamp(offset.y + y, 0, limit.y) - offset.y);\n    animationID = requestAnimationFrame(function () {\n      scroll({\n        x: x,\n        y: y\n      });\n    });\n  }\n  addEvent(window, 'mousemove', function (evt) {\n    if (!isSelected) return;\n    cancelAnimationFrame(animationID);\n    var dir = calcMomentum(scrollbar, evt);\n    scroll(dir);\n  });\n  // prevent scrolling when context menu is opened\n  // NOTE: `contextmenu` event may be fired\n  //          1. BEFORE `selectstart`: when user right-clicks on the text content -> prevent future scrolling,\n  //          2. AFTER `selectstart`: when user right-clicks on the blank area -> cancel current scrolling,\n  //        so we need to both set the flag and cancel current scrolling\n  addEvent(contentEl, 'contextmenu', function () {\n    // set the flag to prevent future scrolling\n    isContextMenuOpened = true;\n    // stop current scrolling\n    cancelAnimationFrame(animationID);\n    isSelected = false;\n  });\n  // reset context menu flag on mouse down\n  // to ensure the scrolling is allowed in the next selection\n  addEvent(contentEl, 'mousedown', function () {\n    isContextMenuOpened = false;\n  });\n  addEvent(contentEl, 'selectstart', function () {\n    if (isContextMenuOpened) {\n      return;\n    }\n    cancelAnimationFrame(animationID);\n    isSelected = true;\n  });\n  addEvent(window, 'mouseup blur', function () {\n    cancelAnimationFrame(animationID);\n    isSelected = false;\n    isContextMenuOpened = false;\n  });\n  // patch for touch devices\n  addEvent(containerEl, 'scroll', function (evt) {\n    evt.preventDefault();\n    containerEl.scrollTop = containerEl.scrollLeft = 0;\n  });\n}\nfunction calcMomentum(scrollbar, evt) {\n  var _a = scrollbar.bounding,\n    top = _a.top,\n    right = _a.right,\n    bottom = _a.bottom,\n    left = _a.left;\n  var _b = getPosition(evt),\n    x = _b.x,\n    y = _b.y;\n  var res = {\n    x: 0,\n    y: 0\n  };\n  var padding = 20;\n  if (x === 0 && y === 0) return res;\n  if (x > right - padding) {\n    res.x = x - right + padding;\n  } else if (x < left + padding) {\n    res.x = x - left - padding;\n  }\n  if (y > bottom - padding) {\n    res.y = y - bottom + padding;\n  } else if (y < top + padding) {\n    res.y = y - top - padding;\n  }\n  res.x *= 2;\n  res.y *= 2;\n  return res;\n}","map":{"version":3,"names":["clamp","eventScope","getPosition","selectHandler","scrollbar","addEvent","containerEl","contentEl","isSelected","isContextMenuOpened","animationID","scroll","_a","x","y","offset","limit","setMomentum","requestAnimationFrame","window","evt","cancelAnimationFrame","dir","calcMomentum","preventDefault","scrollTop","scrollLeft","bounding","top","right","bottom","left","_b","res","padding"],"sources":["C:\\Users\\user\\Desktop\\000newport\\node_modules\\smooth-scrollbar\\src\\events\\select.ts"],"sourcesContent":["import { clamp } from '../utils';\nimport * as I from '../interfaces/';\n\nimport {\n  eventScope,\n  getPosition,\n} from '../utils/';\n\nexport function selectHandler(scrollbar: I.Scrollbar) {\n  const addEvent = eventScope(scrollbar);\n  const { containerEl, contentEl } = scrollbar;\n\n  let isSelected = false;\n  let isContextMenuOpened = false; // flag to prevent selection when context menu is opened\n  let animationID: number;\n\n  function scroll({ x, y }) {\n    if (!x && !y) return;\n\n    const { offset, limit } = scrollbar;\n    // DISALLOW delta transformation\n    scrollbar.setMomentum(\n      clamp(offset.x + x, 0, limit.x) - offset.x,\n      clamp(offset.y + y, 0, limit.y) - offset.y,\n    );\n\n    animationID = requestAnimationFrame(() => {\n      scroll({ x, y });\n    });\n  }\n\n  addEvent(window, 'mousemove', (evt: MouseEvent) => {\n    if (!isSelected) return;\n\n    cancelAnimationFrame(animationID);\n\n    const dir = calcMomentum(scrollbar, evt);\n\n    scroll(dir);\n  });\n\n  // prevent scrolling when context menu is opened\n  // NOTE: `contextmenu` event may be fired\n  //          1. BEFORE `selectstart`: when user right-clicks on the text content -> prevent future scrolling,\n  //          2. AFTER `selectstart`: when user right-clicks on the blank area -> cancel current scrolling,\n  //        so we need to both set the flag and cancel current scrolling\n  addEvent(contentEl, 'contextmenu', () => {\n    // set the flag to prevent future scrolling\n    isContextMenuOpened = true;\n\n    // stop current scrolling\n    cancelAnimationFrame(animationID);\n    isSelected = false;\n  });\n\n  // reset context menu flag on mouse down\n  // to ensure the scrolling is allowed in the next selection\n  addEvent(contentEl, 'mousedown', () => {\n    isContextMenuOpened = false;\n  });\n\n  addEvent(contentEl, 'selectstart', () => {\n    if (isContextMenuOpened) {\n      return;\n    }\n\n    cancelAnimationFrame(animationID);\n\n    isSelected = true;\n  });\n\n  addEvent(window, 'mouseup blur', () => {\n    cancelAnimationFrame(animationID);\n\n    isSelected = false;\n    isContextMenuOpened = false;\n  });\n\n  // patch for touch devices\n  addEvent(containerEl, 'scroll', (evt: Event) => {\n    evt.preventDefault();\n    containerEl.scrollTop = containerEl.scrollLeft = 0;\n  });\n}\n\nfunction calcMomentum(\n  scrollbar: I.Scrollbar,\n  evt: MouseEvent,\n) {\n  const { top, right, bottom, left } = scrollbar.bounding;\n  const { x, y } = getPosition(evt);\n\n  const res = {\n    x: 0,\n    y: 0,\n  };\n\n  const padding = 20;\n\n  if (x === 0 && y === 0) return res;\n\n  if (x > right - padding) {\n    res.x = (x - right + padding);\n  } else if (x < left + padding) {\n    res.x = (x - left - padding);\n  }\n\n  if (y > bottom - padding) {\n    res.y = (y - bottom + padding);\n  } else if (y < top + padding) {\n    res.y = (y - top - padding);\n  }\n\n  res.x *= 2;\n  res.y *= 2;\n\n  return res;\n}\n"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}