{ "version": 3, "sources": ["../../../../node_modules/compute-scroll-into-view/src/index.ts", "../../../../node_modules/scroll-into-view-if-needed/es/index.js", "../../../../node_modules/smooth-scroll-into-view-if-needed/es/index.js"], "sourcesContent": ["// Compute what scrolling needs to be done on required scrolling boxes for target to be in view\n\n// The type names here are named after the spec to make it easier to find more information around what they mean:\n// To reduce churn and reduce things that need be maintained things from the official TS DOM library is used here\n// https://drafts.csswg.org/cssom-view/\n\n// For a definition on what is \"block flow direction\" exactly, check this: https://drafts.csswg.org/css-writing-modes-4/#block-flow-direction\n\n// add support for visualViewport object currently implemented in chrome\ninterface visualViewport {\n height: number\n width: number\n}\n\ntype ScrollLogicalPosition = 'start' | 'center' | 'end' | 'nearest'\n// This new option is tracked in this PR, which is the most likely candidate at the time: https://github.com/w3c/csswg-drafts/pull/1805\ntype ScrollMode = 'always' | 'if-needed'\n// New option that skips auto-scrolling all nodes with overflow: hidden set\n// See FF implementation: https://hg.mozilla.org/integration/fx-team/rev/c48c3ec05012#l7.18\ntype SkipOverflowHiddenElements = boolean\n\ninterface Options {\n block?: ScrollLogicalPosition\n inline?: ScrollLogicalPosition\n scrollMode?: ScrollMode\n boundary?: CustomScrollBoundary\n skipOverflowHiddenElements?: SkipOverflowHiddenElements\n}\n\n// Custom behavior, not in any spec\ntype CustomScrollBoundaryCallback = (parent: Element) => boolean\ntype CustomScrollBoundary = Element | CustomScrollBoundaryCallback | null\ninterface CustomScrollAction {\n el: Element\n top: number\n left: number\n}\n\n// @TODO better shadowdom test, 11 = document fragment\nfunction isElement(el: any): el is Element {\n return typeof el === 'object' && el != null && el.nodeType === 1\n}\n\nfunction canOverflow(\n overflow: string | null,\n skipOverflowHiddenElements?: boolean\n) {\n if (skipOverflowHiddenElements && overflow === 'hidden') {\n return false\n }\n\n return overflow !== 'visible' && overflow !== 'clip'\n}\n\nfunction getFrameElement(el: Element) {\n if (!el.ownerDocument || !el.ownerDocument.defaultView) {\n return null\n }\n\n try {\n return el.ownerDocument.defaultView.frameElement\n } catch (e) {\n return null\n }\n}\n\nfunction isHiddenByFrame(el: Element): boolean {\n const frame = getFrameElement(el)\n if (!frame) {\n return false\n }\n\n return (\n frame.clientHeight < el.scrollHeight || frame.clientWidth < el.scrollWidth\n )\n}\n\nfunction isScrollable(el: Element, skipOverflowHiddenElements?: boolean) {\n if (el.clientHeight < el.scrollHeight || el.clientWidth < el.scrollWidth) {\n const style = getComputedStyle(el, null)\n return (\n canOverflow(style.overflowY, skipOverflowHiddenElements) ||\n canOverflow(style.overflowX, skipOverflowHiddenElements) ||\n isHiddenByFrame(el)\n )\n }\n\n return false\n}\n/**\n * Find out which edge to align against when logical scroll position is \"nearest\"\n * Interesting fact: \"nearest\" works similarily to \"if-needed\", if the element is fully visible it will not scroll it\n *\n * Legends:\n * ┌────────┠┠┠┠┠┓\n * │ target │ frame\n * └────────┘ â”— â” â” â” â”›\n */\nfunction alignNearest(\n scrollingEdgeStart: number,\n scrollingEdgeEnd: number,\n scrollingSize: number,\n scrollingBorderStart: number,\n scrollingBorderEnd: number,\n elementEdgeStart: number,\n elementEdgeEnd: number,\n elementSize: number\n) {\n /**\n * If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B\n *\n * ┌──â”\n * â”â”│â”â”│â”┓\n * │ │\n * ┃ │ │ ┃ do nothing\n * │ │\n * â”—â”│â”â”│â”â”›\n * └──┘\n *\n * If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D\n *\n * ┠┠┠┠┠┓\n * ┌───────────â”\n * │┃ ┃│ do nothing\n * └───────────┘\n * â”— â” â” â” â” â”›\n */\n if (\n (elementEdgeStart < scrollingEdgeStart &&\n elementEdgeEnd > scrollingEdgeEnd) ||\n (elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd)\n ) {\n return 0\n }\n\n /**\n * If element edge A is outside scrolling box edge A and element height is less than scrolling box height\n *\n * ┌──â”\n * â”â”│â”â”│â”┓ â”â”┌â”â”â”â”┓\n * └──┘ │ │\n * from ┃ ┃ to ┃ └──┘ ┃\n *\n * â”—â” â”â” â”â”› â”—â” â”â” â”â”›\n *\n * If element edge B is outside scrolling box edge B and element height is greater than scrolling box height\n *\n * â”â” â”â” â”┓ â”â”┌â”â”â”â”┓\n * │ │\n * from ┃ ┌──┠┃ to ┃ │ │ ┃\n * │ │ │ │\n * â”—â”│â”â”│â”â”› â”—â”│â”â”│â”â”›\n * │ │ └──┘\n * │ │\n * └──┘\n *\n * If element edge C is outside scrolling box edge C and element width is less than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───┠┌───â”\n * │ ┃ │ ┃ ┃ │ ┃\n * └───┘ └───┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n *\n * If element edge D is outside scrolling box edge D and element width is greater than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───────────┠┌───────────â”\n * ┃ │ ┃ │ ┃ ┃ │\n * └───────────┘ └───────────┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n */\n if (\n (elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize) ||\n (elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize)\n ) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart\n }\n\n /**\n * If element edge B is outside scrolling box edge B and element height is less than scrolling box height\n *\n * â”â” â”â” â”┓ â”â” â”â” â”┓\n *\n * from ┃ ┃ to ┃ ┌──┠┃\n * ┌──┠│ │\n * â”—â”│â”â”│â”â”› â”—â”â””â”â”┘â”â”›\n * └──┘\n *\n * If element edge A is outside scrolling box edge A and element height is greater than scrolling box height\n *\n * ┌──â”\n * │ │\n * │ │ ┌──â”\n * â”â”│â”â”│â”┓ â”â”│â”â”│â”┓\n * │ │ │ │\n * from ┃ └──┘ ┃ to ┃ │ │ ┃\n * │ │\n * â”—â” â”â” â”â”› â”—â”â””â”â”┘â”â”›\n *\n * If element edge C is outside scrolling box edge C and element width is greater than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───────────┠┌───────────â”\n * │ ┃ │ ┃ │ ┃ ┃\n * └───────────┘ └───────────┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n *\n * If element edge D is outside scrolling box edge D and element width is less than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───┠┌───â”\n * ┃ │ ┃ │ ┃ │ ┃\n * └───┘ └───┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n *\n */\n if (\n (elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize) ||\n (elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize)\n ) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd\n }\n\n return 0\n}\n\nexport default (target: Element, options: Options): CustomScrollAction[] => {\n //TODO: remove this hack when microbundle will support typescript >= 4.0\n const windowWithViewport = (window as unknown) as Window & {\n visualViewport: visualViewport\n }\n\n const {\n scrollMode,\n block,\n inline,\n boundary,\n skipOverflowHiddenElements,\n } = options\n // Allow using a callback to check the boundary\n // The default behavior is to check if the current target matches the boundary element or not\n // If undefined it'll check that target is never undefined (can happen as we recurse up the tree)\n const checkBoundary =\n typeof boundary === 'function' ? boundary : (node: any) => node !== boundary\n\n if (!isElement(target)) {\n throw new TypeError('Invalid target')\n }\n\n // Used to handle the top most element that can be scrolled\n const scrollingElement = document.scrollingElement || document.documentElement\n\n // Collect all the scrolling boxes, as defined in the spec: https://drafts.csswg.org/cssom-view/#scrolling-box\n const frames: Element[] = []\n let cursor: Element | null = target\n while (isElement(cursor) && checkBoundary(cursor)) {\n // Move cursor to parent\n cursor = cursor.parentElement\n\n // Stop when we reach the viewport\n if (cursor === scrollingElement) {\n frames.push(cursor)\n break\n }\n\n // Skip document.body if it's not the scrollingElement and documentElement isn't independently scrollable\n if (\n cursor != null &&\n cursor === document.body &&\n isScrollable(cursor) &&\n !isScrollable(document.documentElement)\n ) {\n continue\n }\n\n // Now we check if the element is scrollable, this code only runs if the loop haven't already hit the viewport or a custom boundary\n if (cursor != null && isScrollable(cursor, skipOverflowHiddenElements)) {\n frames.push(cursor)\n }\n }\n\n // Support pinch-zooming properly, making sure elements scroll into the visual viewport\n // Browsers that don't support visualViewport will report the layout viewport dimensions on document.documentElement.clientWidth/Height\n // and viewport dimensions on window.innerWidth/Height\n // https://www.quirksmode.org/mobile/viewports2.html\n // https://bokand.github.io/viewport/index.html\n const viewportWidth = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.width\n : innerWidth\n const viewportHeight = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.height\n : innerHeight\n\n // Newer browsers supports scroll[X|Y], page[X|Y]Offset is\n const viewportX = window.scrollX || pageXOffset\n const viewportY = window.scrollY || pageYOffset\n\n const {\n height: targetHeight,\n width: targetWidth,\n top: targetTop,\n right: targetRight,\n bottom: targetBottom,\n left: targetLeft,\n } = target.getBoundingClientRect()\n\n // These values mutate as we loop through and generate scroll coordinates\n let targetBlock: number =\n block === 'start' || block === 'nearest'\n ? targetTop\n : block === 'end'\n ? targetBottom\n : targetTop + targetHeight / 2 // block === 'center\n let targetInline: number =\n inline === 'center'\n ? targetLeft + targetWidth / 2\n : inline === 'end'\n ? targetRight\n : targetLeft // inline === 'start || inline === 'nearest\n\n // Collect new scroll positions\n const computations: CustomScrollAction[] = []\n // In chrome there's no longer a difference between caching the `frames.length` to a var or not, so we don't in this case (size > speed anyways)\n for (let index = 0; index < frames.length; index++) {\n const frame = frames[index]\n\n // @TODO add a shouldScroll hook here that allows userland code to take control\n\n const {\n height,\n width,\n top,\n right,\n bottom,\n left,\n } = frame.getBoundingClientRect()\n\n // If the element is already visible we can end it here\n // @TODO targetBlock and targetInline should be taken into account to be compliant with https://github.com/w3c/csswg-drafts/pull/1805/files#diff-3c17f0e43c20f8ecf89419d49e7ef5e0R1333\n if (\n scrollMode === 'if-needed' &&\n targetTop >= 0 &&\n targetLeft >= 0 &&\n targetBottom <= viewportHeight &&\n targetRight <= viewportWidth &&\n targetTop >= top &&\n targetBottom <= bottom &&\n targetLeft >= left &&\n targetRight <= right\n ) {\n // Break the loop and return the computations for things that are not fully visible\n return computations\n }\n\n const frameStyle = getComputedStyle(frame)\n const borderLeft = parseInt(frameStyle.borderLeftWidth as string, 10)\n const borderTop = parseInt(frameStyle.borderTopWidth as string, 10)\n const borderRight = parseInt(frameStyle.borderRightWidth as string, 10)\n const borderBottom = parseInt(frameStyle.borderBottomWidth as string, 10)\n\n let blockScroll: number = 0\n let inlineScroll: number = 0\n\n // The property existance checks for offfset[Width|Height] is because only HTMLElement objects have them, but any Element might pass by here\n // @TODO find out if the \"as HTMLElement\" overrides can be dropped\n const scrollbarWidth =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth -\n (frame as HTMLElement).clientWidth -\n borderLeft -\n borderRight\n : 0\n const scrollbarHeight =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight -\n (frame as HTMLElement).clientHeight -\n borderTop -\n borderBottom\n : 0\n\n if (scrollingElement === frame) {\n // Handle viewport logic (document.documentElement or document.body)\n\n if (block === 'start') {\n blockScroll = targetBlock\n } else if (block === 'end') {\n blockScroll = targetBlock - viewportHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n viewportY,\n viewportY + viewportHeight,\n viewportHeight,\n borderTop,\n borderBottom,\n viewportY + targetBlock,\n viewportY + targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - viewportHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline\n } else if (inline === 'center') {\n inlineScroll = targetInline - viewportWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - viewportWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n viewportX,\n viewportX + viewportWidth,\n viewportWidth,\n borderLeft,\n borderRight,\n viewportX + targetInline,\n viewportX + targetInline + targetWidth,\n targetWidth\n )\n }\n\n // Apply scroll position offsets and ensure they are within bounds\n // @TODO add more test cases to cover this 100%\n blockScroll = Math.max(0, blockScroll + viewportY)\n inlineScroll = Math.max(0, inlineScroll + viewportX)\n } else {\n // Handle each scrolling frame that might exist between the target and the viewport\n\n if (block === 'start') {\n blockScroll = targetBlock - top - borderTop\n } else if (block === 'end') {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n top,\n bottom,\n height,\n borderTop,\n borderBottom + scrollbarHeight,\n targetBlock,\n targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline - left - borderLeft\n } else if (inline === 'center') {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n left,\n right,\n width,\n borderLeft,\n borderRight + scrollbarWidth,\n targetInline,\n targetInline + targetWidth,\n targetWidth\n )\n }\n\n const { scrollLeft, scrollTop } = frame\n // Ensure scroll coordinates are not out of bounds while applying scroll offsets\n blockScroll = Math.max(\n 0,\n Math.min(\n scrollTop + blockScroll,\n frame.scrollHeight - height + scrollbarHeight\n )\n )\n inlineScroll = Math.max(\n 0,\n Math.min(\n scrollLeft + inlineScroll,\n frame.scrollWidth - width + scrollbarWidth\n )\n )\n\n // Cache the offset so that parent frames can scroll this into view correctly\n targetBlock += scrollTop - blockScroll\n targetInline += scrollLeft - inlineScroll\n }\n\n computations.push({ el: frame, top: blockScroll, left: inlineScroll })\n }\n\n return computations\n}\n", "import compute from 'compute-scroll-into-view';\n\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\n\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\n\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n\n if (isOptionsObject(options)) {\n return options;\n }\n\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\n\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n\n if (!isTargetAttached) {\n return;\n }\n\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\n\nexport default scrollIntoView;", "import scrollIntoView from 'scroll-into-view-if-needed';\nvar memoizedNow;\n\nvar now = function now() {\n if (!memoizedNow) {\n memoizedNow = 'performance' in window ? performance.now.bind(performance) : Date.now;\n }\n\n return memoizedNow();\n};\n\nfunction step(context) {\n var time = now();\n var elapsed = Math.min((time - context.startTime) / context.duration, 1);\n var value = context.ease(elapsed);\n var currentX = context.startX + (context.x - context.startX) * value;\n var currentY = context.startY + (context.y - context.startY) * value;\n context.method(currentX, currentY);\n\n if (currentX !== context.x || currentY !== context.y) {\n requestAnimationFrame(function () {\n return step(context);\n });\n } else {\n context.cb();\n }\n}\n\nfunction smoothScroll(el, x, y, duration, ease, cb) {\n if (duration === void 0) {\n duration = 600;\n }\n\n if (ease === void 0) {\n ease = function ease(t) {\n return 1 + --t * t * t * t * t;\n };\n }\n\n var scrollable;\n var startX;\n var startY;\n var method;\n scrollable = el;\n startX = el.scrollLeft;\n startY = el.scrollTop;\n\n method = function method(x, y) {\n el.scrollLeft = Math.ceil(x);\n el.scrollTop = Math.ceil(y);\n };\n\n step({\n scrollable: scrollable,\n method: method,\n startTime: now(),\n startX: startX,\n startY: startY,\n x: x,\n y: y,\n duration: duration,\n ease: ease,\n cb: cb\n });\n}\n\nvar shouldSmoothScroll = function shouldSmoothScroll(options) {\n return options && !options.behavior || options.behavior === 'smooth';\n};\n\nfunction scroll(target, options) {\n var overrides = options || {};\n\n if (shouldSmoothScroll(overrides)) {\n return scrollIntoView(target, {\n block: overrides.block,\n inline: overrides.inline,\n scrollMode: overrides.scrollMode,\n boundary: overrides.boundary,\n behavior: function behavior(actions) {\n return Promise.all(actions.reduce(function (results, _ref) {\n var el = _ref.el,\n left = _ref.left,\n top = _ref.top;\n var startLeft = el.scrollLeft;\n var startTop = el.scrollTop;\n\n if (startLeft === left && startTop === top) {\n return results;\n }\n\n return [].concat(results, [new Promise(function (resolve) {\n return smoothScroll(el, left, top, overrides.duration, overrides.ease, function () {\n return resolve({\n el: el,\n left: [startLeft, left],\n top: [startTop, top]\n });\n });\n })]);\n }, []));\n }\n });\n }\n\n return Promise.resolve(scrollIntoView(target, options));\n}\n\nvar smoothScrollIntoView = scroll;\nexport default smoothScrollIntoView;"], "mappings": "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", "names": ["isElement", "el", "nodeType", "canOverflow", "overflow", "skipOverflowHiddenElements", "isScrollable", "clientHeight", "scrollHeight", "clientWidth", "scrollWidth", "style", "getComputedStyle", "overflowY", "overflowX", "frame", "ownerDocument", "defaultView", "frameElement", "e", "alignNearest", "scrollingEdgeStart", "scrollingEdgeEnd", "scrollingSize", "scrollingBorderStart", "scrollingBorderEnd", "elementEdgeStart", "elementEdgeEnd", "elementSize", "target", "options", "windowWithViewport", "window", "scrollMode", "block", "inline", "boundary", "checkBoundary", "node", "TypeError", "scrollingElement", "document", "documentElement", "frames", "cursor", "parentElement", "push", "body", "viewportWidth", "visualViewport", "width", "innerWidth", "viewportHeight", "height", "innerHeight", "viewportX", "scrollX", "pageXOffset", "viewportY", "scrollY", "pageYOffset", "getBoundingClientRect", "targetHeight", "targetWidth", "targetTop", "top", "targetRight", "right", "targetBottom", "bottom", "targetLeft", "left", "targetBlock", "targetInline", "computations", "index", "length", "frameStyle", "borderLeft", "parseInt", "borderLeftWidth", "borderTop", "borderTopWidth", "borderRight", "borderRightWidth", "borderBottom", "borderBottomWidth", "blockScroll", "inlineScroll", "scrollbarWidth", "offsetWidth", "scrollbarHeight", "offsetHeight", "Math", "max", "scrollLeft", "scrollTop", "min", "isOptionsObject", "options", "__name", "defaultBehavior", "actions", "behavior", "canSmoothScroll", "_ref", "el", "top", "left", "getOptions", "scrollIntoView", "target", "isTargetAttached", "index_module_default", "computeOptions", "es_default", "memoizedNow", "now", "__name", "step", "context", "time", "elapsed", "value", "currentX", "currentY", "smoothScroll", "el", "x", "y", "duration", "ease", "cb", "t", "scrollable", "startX", "startY", "method", "shouldSmoothScroll", "options", "scroll", "target", "overrides", "es_default", "actions", "results", "_ref", "left", "top", "startLeft", "startTop", "resolve", "smoothScrollIntoView"] }