@startlibs/components 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/BasicBulletList.mjs +9 -0
- package/lib/BasicBulletList.mjs.map +1 -0
- package/lib/Button.mjs +95 -0
- package/lib/Button.mjs.map +1 -0
- package/lib/ContextMenu.mjs +452 -0
- package/lib/ContextMenu.mjs.map +1 -0
- package/lib/Dialog.mjs +232 -0
- package/lib/Dialog.mjs.map +1 -0
- package/lib/Draggable.mjs +880 -0
- package/lib/Draggable.mjs.map +1 -0
- package/lib/ErrorBoundary.mjs +108 -0
- package/lib/ErrorBoundary.mjs.map +1 -0
- package/lib/FillLastLineResizer.mjs +238 -0
- package/lib/FillLastLineResizer.mjs.map +1 -0
- package/lib/Flip.mjs +604 -0
- package/lib/Flip.mjs.map +1 -0
- package/lib/FlipList.mjs +186 -0
- package/lib/FlipList.mjs.map +1 -0
- package/lib/FormatDate.mjs +25 -0
- package/lib/FormatDate.mjs.map +1 -0
- package/lib/Icon.mjs +50 -0
- package/lib/Icon.mjs.map +1 -0
- package/lib/Image.mjs +41 -0
- package/lib/Image.mjs.map +1 -0
- package/lib/Link.mjs +116 -0
- package/lib/Link.mjs.map +1 -0
- package/lib/Loading.mjs +10 -0
- package/lib/Loading.mjs.map +1 -0
- package/lib/LoadingDiv.mjs +83 -0
- package/lib/LoadingDiv.mjs.map +1 -0
- package/lib/Notifications.mjs +63 -0
- package/lib/Notifications.mjs.map +1 -0
- package/lib/PageLoader.mjs +42 -0
- package/lib/PageLoader.mjs.map +1 -0
- package/lib/PersistentNotifications.mjs +130 -0
- package/lib/PersistentNotifications.mjs.map +1 -0
- package/lib/Popup.mjs +49 -0
- package/lib/Popup.mjs.map +1 -0
- package/lib/SplitColumnsContainer.mjs +43 -0
- package/lib/SplitColumnsContainer.mjs.map +1 -0
- package/lib/SwitchDiv.mjs +61 -0
- package/lib/SwitchDiv.mjs.map +1 -0
- package/lib/TextButton.mjs +41 -0
- package/lib/TextButton.mjs.map +1 -0
- package/lib/ToastNotifications.mjs +215 -0
- package/lib/ToastNotifications.mjs.map +1 -0
- package/lib/Tooltip.mjs +160 -0
- package/lib/Tooltip.mjs.map +1 -0
- package/lib/TransitionDiv.mjs +56 -0
- package/lib/TransitionDiv.mjs.map +1 -0
- package/lib/WarningDialog.mjs +84 -0
- package/lib/WarningDialog.mjs.map +1 -0
- package/lib/alt/buttons/OnClickLoadingButton.mjs +36 -0
- package/lib/alt/buttons/OnClickLoadingButton.mjs.map +1 -0
- package/lib/alt/dialogs/DialogWithImageHeader.mjs +14 -0
- package/lib/alt/dialogs/DialogWithImageHeader.mjs.map +1 -0
- package/lib/alt/dialogs/DialogWithSidebar.mjs +106 -0
- package/lib/alt/dialogs/DialogWithSidebar.mjs.map +1 -0
- package/lib/alt/dialogs/MobileBubbleDialog.mjs +49 -0
- package/lib/alt/dialogs/MobileBubbleDialog.mjs.map +1 -0
- package/lib/containers/DialogContainer.mjs +413 -0
- package/lib/containers/DialogContainer.mjs.map +1 -0
- package/lib/containers/Reposition.mjs +35 -0
- package/lib/containers/Reposition.mjs.map +1 -0
- package/lib/containers/usePositioning.mjs +294 -0
- package/lib/containers/usePositioning.mjs.map +1 -0
- package/lib/index.cjs +5000 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.mjs +37 -0
- package/lib/index.mjs.map +1 -0
- package/lib/useDialogWithToggle.mjs +18 -0
- package/lib/useDialogWithToggle.mjs.map +1 -0
- package/lib/willUseIsSticky.mjs +123 -0
- package/lib/willUseIsSticky.mjs.map +1 -0
- package/package.json +44 -29
- package/src/BasicBulletList.jsx +21 -0
- package/src/Button.jsx +288 -0
- package/src/ContextMenu.jsx +621 -0
- package/src/Dialog.jsx +413 -0
- package/src/Draggable.jsx +801 -0
- package/src/ErrorBoundary.jsx +75 -0
- package/src/FillLastLineResizer.jsx +226 -0
- package/src/Flip.jsx +560 -0
- package/src/FlipList.jsx +136 -0
- package/src/FormatDate.jsx +9 -0
- package/src/Icon.jsx +49 -0
- package/src/Image.jsx +23 -0
- package/src/Link.jsx +68 -0
- package/src/Loading.jsx +29 -0
- package/src/LoadingDiv.jsx +75 -0
- package/src/Notifications.jsx +89 -0
- package/src/PageLoader.jsx +48 -0
- package/src/PersistentNotifications.jsx +182 -0
- package/src/Popup.jsx +49 -0
- package/src/SplitColumnsContainer.jsx +63 -0
- package/src/SwitchDiv.jsx +30 -0
- package/src/TextButton.jsx +34 -0
- package/src/ToastNotifications.jsx +298 -0
- package/src/Tooltip.jsx +158 -0
- package/src/TransitionDiv.jsx +34 -0
- package/src/WarningDialog.jsx +70 -0
- package/src/alt/buttons/OnClickLoadingButton.jsx +16 -0
- package/src/alt/dialogs/DialogWithImageHeader.jsx +42 -0
- package/src/alt/dialogs/DialogWithSidebar.jsx +135 -0
- package/src/alt/dialogs/MobileBubbleDialog.jsx +56 -0
- package/src/containers/DialogContainer.jsx +423 -0
- package/src/containers/Reposition.jsx +24 -0
- package/src/containers/usePositioning.jsx +305 -0
- package/src/index.js +35 -0
- package/src/useDialogWithToggle.jsx +12 -0
- package/src/willUseIsSticky.jsx +113 -0
- package/.babelrc +0 -27
- package/lib/index.js +0 -5429
- package/rollup.config.js +0 -52
- package/yarn-error.log +0 -3724
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Draggable.mjs","sources":["../src/Draggable.jsx"],"sourcesContent":["import React from 'react'\nimport ReactDOM from 'react-dom'\nimport _ from 'lodash/fp'\nimport styled from 'styled-components'\nimport {getScrollParent, normalizeMouse, normalizeTouch} from '@startlibs/utils'\nimport {FlipList} from './FlipList'\n\nconst {Provider, Consumer} = React.createContext({})\n\nconst areComponentsEqual = (a,b) => a === b\n\nconst DropPosition = styled.div`\n border: 2px dashed rgba(0,0,0,0.1);\n background-color: rgba(0,0,0,0.025);\n border-radius: 18px;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n visibility: visible;\n display: block;\n border-radius: inherit;\n ${props => props.rounded && `\n border-radius: 1000rem;\n `}\n`\nconst EmptyPlaceholder = styled.div`\n position:absolute;\n`\n\nconst HORIZONTAL_DIMENSIONS = {\n min: 'left',\n max: 'right',\n axis: 'x',\n size: 'Width'\n}\nconst VERTICAL_DIMENSIONS = {\n min: 'top',\n max: 'bottom',\n axis: 'y',\n size: 'Height'\n}\n\n\nconst AUTO_SCROLL_BORDER_SIZE = 30\nconst AUTO_SCROLL_MAX_VELOCITY = 20\nconst AUTO_SCROLL_OVERFLOW_BUFFER = 100\n\nfunction easeInCubic(t) { return Math.ceil(t * t * t / (AUTO_SCROLL_MAX_VELOCITY * AUTO_SCROLL_MAX_VELOCITY)) }\n\nconst disableWillChange = (el) => {\n const willChange = el?.closest(\".JS-has-wc\")\n if (willChange) {\n willChange.classList.add('JS-wc-off')\n disableWillChange(willChange.parentNode)\n }\n}\nconst reenableWillChange = (el) => {\n const willChange = el?.closest(\".JS-has-wc\")\n if (willChange) {\n willChange.classList.remove('JS-wc-off')\n reenableWillChange(willChange.parentNode)\n }\n}\n\n\nconst shouldPreventDrag = (e) => !(e.target).closest('body,.drag-drop-item,[data-drag=\"false\"],input,textarea,button').matches('body,.drag-drop-item,[data-drag=\"true\"]')\n\nexport class DraggableItem extends React.Component {\n\n events = this.props.eventHandlers(this)\n\n render() {\n const {DragTag, as = 'div', eventHandlers, className, isDragging, droppable, dragIndex,roundedPlaceholder, inheritRadius, children, ...props} = this.props\n const Wrapper = DragTag || as\n const extraClassName = (isDragging ? ' drag-drop-placeholder' : '') + ' drag-drop-item'\n return typeof children === 'function' ?\n children({className: extraClassName, ...this.events, children: isDragging && <DropPosition rounded={roundedPlaceholder} inheritRadius={inheritRadius}/>}) :\n <Wrapper\n className={className + extraClassName}\n isDragging={isDragging}\n {...props}\n {...this.events}\n >\n {children}\n {\n isDragging &&\n <DropPosition rounded={roundedPlaceholder} inheritRadius={inheritRadius}/>\n }\n\n </Wrapper>\n }\n}\n\nDraggableItem.a = (props) => <DraggableItem {...props} DragTag='a'/>\n\nexport const DroppableContainer = (props) =>\n <Consumer>\n {(dragProps) =>\n <DroppableContainerComponent {...props} {...dragProps} />\n }\n </Consumer>\n\n\nclass DroppableContainerComponent extends React.Component {\n\n static defaultProps = {\n placeholder: () => <EmptyPlaceholder/>\n }\n\n draggables = []\n emptyPlaceholder\n\n addProps = (children, eventHandlers, activeIndex, extraProps) =>\n children.map((c, index) =>\n c.type === DraggableItem ? React.cloneElement(c, {\n isDragging: activeIndex === index,\n dragIndex: index,\n droppable: this,\n ref: (el) => this.draggables[index] = el,\n eventHandlers: eventHandlers\n }) : c\n )\n\n toPosition = (parentRect, {scrollTop, scrollLeft}) => (el, i) => {\n if (el) {\n const domNode = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(el)\n const {width, height} = domNode.getBoundingClientRect()\n return {\n droppable: this,\n index: i,\n width,\n height,\n y: parentRect.top + domNode.offsetTop + (height / 2) + (scrollTop || 0),\n x: parentRect.left + domNode.offsetLeft + (width / 2) + (scrollLeft || 0)\n }\n }\n }\n\n getPosition = (i, scrollXY) => {\n const el = this.draggables[i]\n if (el) {\n const parent = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this).offsetParent\n const parentRect = parent.getBoundingClientRect()\n return this.toPosition(parentRect, 0)(el, i)\n }\n }\n\n getPositions = (scrollXY, dragInfo) => {\n if (this.props.allowDrop && !this.props.allowDrop(_.map(dragInfo, v => v && v.props ? v.props.id : v))) {\n return []\n }\n const parent = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this).offsetParent\n if (!parent) { return []}\n const parentRect = parent.getBoundingClientRect()\n const toPosition = this.toPosition(parentRect, scrollXY)\n const existing = this.draggables.map(toPosition).filter(_ => _)\n if (existing.length || !this.props.placeholder) return existing\n return [ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)].map(toPosition).filter(_ => _)\n }\n\n\n componentDidMount() {\n this.props.addDroppable(this)\n }\n\n componentWillUnmount() {\n this.props.removeDroppable(this)\n }\n\n repositionDragged = (array, {active, startIndex, startDroppable, activeIndex, activeDroppable}, getActiveElement) => {\n // Repositioning dereferences startDroppable.props further down. Rendering with an\n // activeDroppable but no startDroppable would take the whole tree down, so render\n // the list untouched instead and let the next commit reconcile it.\n if (!startDroppable) { return array }\n if (activeDroppable && (activeDroppable === this || startDroppable === this)) {\n // remove\n const removedOrInserted = _.pullAt(startDroppable === this ? startIndex : [], array)\n if (activeDroppable === this) {\n // insert\n removedOrInserted.splice(activeIndex, 0, getActiveElement())\n }\n return removedOrInserted\n }\n return array\n }\n\n\n getPlaceholder = (childArray, dragInfo) => childArray.find(_ => _.props.droppable) || dragInfo.startDroppable.props.children[dragInfo.startIndex]\n\n getDragged = (childArray, dragInfo) => dragInfo.startDroppable === this ?\n childArray[dragInfo.startIndex] :\n React.cloneElement(this.getPlaceholder(childArray, dragInfo), {key: childArray[0].key + 'si' + dragInfo.startIndex})\n\n\n childrenToarray = ({children, list, dragInfo}) => {\n const {startDroppable, startIndex} = dragInfo\n if (list) {\n return React.Children.toArray(children(this.repositionDragged(list, dragInfo, () => startDroppable.props.list[startIndex])))\n } else {\n const childArray = React.Children.toArray(children)\n return this.repositionDragged(childArray, dragInfo, () => this.getDragged(childArray, dragInfo))\n }\n }\n\n render() {\n const {group, placeholder, dragInfo, animation, timing, eventHandlers} = this.props\n const {active, activeIndex, activeDroppable} = dragInfo\n const childArray = this.childrenToarray(this.props)\n if (!childArray.length && placeholder) {\n return placeholder()\n }\n return <FlipList animation={animation} timing={timing} play={active}>{\n this.addProps(childArray, eventHandlers, active && activeDroppable === this && activeIndex)\n }</FlipList>\n }\n}\n\n\nexport class DraggableContainer extends React.Component {\n\n static defaultProps = {\n holdTouchTimer: 500,\n scrollOnDrag: true,\n setDragRef: () => {}\n }\n\n props/*: {\n scrollContainer,\n setItemOrder,\n children,\n noResistance,\n holdTouchTimer\n }*/\n\n ghost\n // dragEnd animates the ghost out over 300ms, so the tail of a drag is asynchronous\n // and a new drag can start before the previous one has finished. Each drag therefore\n // gets its own session holding everything its completion needs (ghost, dragInfo),\n // instead of reading the shared slots a newer drag may already have taken over.\n // dragToken identifies the drag that currently owns the shared state.\n dragToken = 0\n activeSession = null\n positions = {}\n passedResistance = false\n pressedEnough = false\n holdTouchTimer//: number\n\n preventScroll//: boolean\n state = {dragInfo: {}}\n\n droppables = {}\n offsetParent//: HTMLElement\n parent//: HTMLElement\n ghostDimensions//: GhostDimensions\n itemsPositions//: Array<{ index: number, y: number, x: number }>\n scrollContainer//: HTMLElement & any\n\n lastScrollTop//: number\n lastScrollLeft//: number\n\n settedDragRef = false\n\n preventDefault = (e) => {\n if (!shouldPreventDrag(e) && this.preventScroll)\n e.preventDefault()\n }\n\n getScrollContainer = () => {\n return this.scrollContainer = this.scrollContainer || (this.props.scrollContainer ? this.props.scrollContainer : getScrollParent((ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this))))\n }\n\n componentDidMount() {\n this.parent.addEventListener('touchmove', this.preventDefault)\n }\n\n componentWillUnmount() {\n this.parent.removeEventListener('touchmove', this.preventDefault)\n }\n\n componentDidUpdate(_, prevState) {\n if (!isNaN(this.lastScrollTop) || !isNaN(this.lastScrollLeft)) {\n this.getScrollContainer().scroll(this.lastScrollLeft, this.lastScrollTop)\n this.lastScrollLeft = this.lastScrollTop = undefined\n }\n if (this.ghost && this.ghost.parentNode) {\n this.ghost.parentNode.appendChild(this.ghost)\n }\n if (this.state.dragInfo !== prevState.dragInfo) {\n this.resetPositions()\n }\n }\n\n\n removeItem = (el) => {\n this.domItems = this.domItems.filter(e => e !== el)\n }\n\n setOffsetParent = (e) => {\n this.parent = e\n this.offsetParent = e && (window.getComputedStyle(e).position !== 'static' ? e : e.offsetParent)\n }\n\n getConstraintDimensions = () => {\n if (!this.offsetParent)\n return {left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0}\n return this.offsetParent.getBoundingClientRect()\n }\n\n\n dragStart = (draggable) => (e, {pageX, pageY, clientX, clientY}) => {\n const currentTarget = e.currentTarget\n if (shouldPreventDrag(e) || this.props.disabled) {\n return\n }\n if (e.type === 'mousedown' && e.button !== 0) {\n return\n }\n e.stopPropagation()\n this.passedResistance = false\n const holdTouchTimer = this.props.holdTouchTimer\n this.pressedEnough = !holdTouchTimer\n if (holdTouchTimer) {\n e.persist()\n this.holdTouchTimer = setTimeout(() => {\n this.pressedEnough = true\n if (window.navigator.vibrate)\n window.navigator.vibrate([65])\n if (!this.state.dragInfo.active) {\n this.dragMove(e, {pageX, pageY, clientX, clientY}, )\n }\n }, holdTouchTimer)\n }\n const {width, height, top, left} = currentTarget.getBoundingClientRect()\n const targetStyle = window.getComputedStyle(currentTarget)\n const {top: parentTop, left: parentLeft} = this.getConstraintDimensions()\n const offsetTop = parentTop + pageY - top + parseInt(targetStyle['margin-top'], 10)\n const offsetLeft = parentLeft + pageX - left + parseInt(targetStyle['margin-left'], 10)\n const {scrollTop, scrollLeft, scrollY, scrollX} = this.getScrollContainer()\n this.positions = {\n originalX: pageX, originalY: pageY,\n offsetTop, offsetLeft, ghostHeight: height, ghostWidth: width,\n ghostMarginTop: parseInt(targetStyle['margin-top'], 10),\n ghostMarginLeft: parseInt(targetStyle['margin-left'], 10),\n scrollLeft: scrollLeft || 0, scrollTop: scrollTop || 0,\n scrollY: scrollY || 0, scrollX: scrollX || 0\n }\n\n\n const ghost = currentTarget.cloneNode(true)\n ghost.className += ' dragging'\n Object.assign(ghost.style, {\n transition: '',\n position: 'fixed', display: 'none', zIndex: '10', width: width + 'px', height: height + 'px', margin: '0',\n top: (top - clientY) + 'px', left: (left - clientX) + 'px'\n })\n\n this.setupMove(ghost, currentTarget.offsetParent, draggable, {\n width,\n height,\n offsetX: pageX - left,\n offsetY: pageY - top\n })\n window.addEventListener('mousemove', this.mouseMove)\n window.addEventListener('touchmove', this.touchMove, {passive: false})\n window.addEventListener('mouseup', this.dragEnd)\n window.addEventListener('touchend', this.dragEnd)\n window.addEventListener('visibilitychange', this.dragEnd)\n window.addEventListener('blur', this.dragEnd, false)\n window.addEventListener('selectstart', this.disableSelect)\n }\n\n\n setupMove = (el, parent, item, ghostDimensions) => {\n this.ghostDimensions = ghostDimensions\n parent.click() // close popups\n this.ghost = el\n // Open this drag's session and take ownership of the shared state. Any previous\n // session is now superseded: it still holds its own ghost and dragInfo, so it can\n // finish animating and clean itself up without touching anything below.\n this.dragToken++\n this.activeSession = {\n token: this.dragToken,\n ghost: el,\n dragInfo: null,\n ended: false,\n endTimeout: null,\n onTransitionEnd: null\n }\n parent.appendChild(this.ghost)\n disableWillChange(this.ghost)\n this.setState({\n dragInfo: {\n active: false,\n startIndex: item.props.dragIndex,\n activeGroup: item.props.droppable.props.group,\n startDroppable: item.props.droppable\n }\n })\n this.settedDragRef = false\n }\n\n getScrollPosition = () => {\n const {scrollY, scrollX, scrollLeft, scrollTop} = this.getScrollContainer()\n const left = (scrollX || 0 + scrollLeft || 0) - this.positions.scrollX - this.positions.scrollLeft\n const top = (scrollY || 0 + scrollTop || 0) - this.positions.scrollY - this.positions.scrollTop\n return {scrollLeft: left, scrollTop: top}\n }\n\n resetPositions = (group = this.state.dragInfo.activeGroup) => {\n this.itemsPositions =\n this.droppables[group]\n .reduce((acc, _) => acc.concat(_.getPositions(this.getScrollPosition(), this.state.dragInfo)), [])\n .sort((a, b) => a.y - b.y || a.x - b.x)\n }\n\n move = (x, y) => {\n if (!this.settedDragRef && this.props.setDragRef) {\n this.props.setDragRef(this.ghost)\n this.settedDragRef = true\n }\n const {scrollTop, scrollLeft} = this.getScrollPosition()\n this.preventScroll = true\n let item = this.findGhostIndex(x - this.ghostDimensions.offsetX + (scrollLeft || 0), y - this.ghostDimensions.offsetY + (scrollTop || 0), this.ghostDimensions.width, this.ghostDimensions.height)\n if (!item) {\n return\n }\n const dragInfo = this.state.dragInfo\n if (item.index !== dragInfo.activeIndex || item.droppable !== dragInfo.activeDroppable) {\n this.setState({\n dragInfo: _.assign(dragInfo, {\n active: true,\n activePosition: item,\n activeIndex: item.index,\n activeDroppable: item.droppable\n })\n })\n }\n }\n\n findGhostIndex = (ghostX1, ghostY1, ghostWidth, ghostHeight) => {\n const ghostY2 = ghostY1 + ghostHeight\n const ghostX2 = ghostX1 + ghostWidth\n const centerInsideGhost = this.itemsPositions.filter(position =>\n position.y >= ghostY1 &&\n position.x >= ghostX1 &&\n position.y <= ghostY2 &&\n position.x <= ghostX2\n )\n const ghostX = ghostX1 + (ghostWidth / 2)\n const ghostY = ghostY1 + (ghostHeight / 2)\n const rectanglesIntersection = (a, b) => Math.max(0, Math.min(a.x2, b.x2) - Math.max(a.x1, b.x1)) * Math.max(0, Math.min(a.y2, b.y2) - Math.max(a.y1, b.y1))\n const closestIndex = centerInsideGhost\n .map((item) => {\n const {x, y, width, height} = item\n const area = width * height\n const intersectionArea = rectanglesIntersection(\n //at least 1px wide\n {\n x1: x - (Math.max(1, width) / 2),\n x2: x + (width / 2),\n y1: y - (Math.max(1, height) / 2),\n y2: y + (height / 2)\n },\n {x1: ghostX1, x2: ghostX2, y1: ghostY1, y2: ghostY2}\n )\n const distance = Math.sqrt(Math.pow(x - ghostX, 2) + Math.pow(y - ghostY, 2))\n return {area: intersectionArea / area, distance}\n }).reduce((iMax, {area, distance}, i, arr) => area > arr[iMax].area || (area === arr[iMax].area && distance < arr[iMax].distance) ? i : iMax, 0)\n return centerInsideGhost[closestIndex]\n }\n\n stopMoving = (session) => {\n // Completion runs from mouseup, from a transitionend, or from the 300ms fallback\n // timer, so it can be reached more than once for the same drag.\n if (!session || session.ended) { return }\n session.ended = true\n\n const {token, ghost, dragInfo} = session\n const {activeIndex, startIndex, activeGroup, activeDroppable, startDroppable} = dragInfo || {}\n if (session.endTimeout) {\n clearTimeout(session.endTimeout)\n session.endTimeout = null\n }\n if (ghost && session.onTransitionEnd) {\n ghost.removeEventListener('transitionend', session.onTransitionEnd)\n session.onTransitionEnd = null\n }\n\n // Everything below acts on this session's own ghost and dragInfo, so it stays\n // correct even once a newer drag has replaced this.ghost and this.state.dragInfo.\n const finish = () => {\n if (ghost?.parentNode) {\n reenableWillChange(ghost)\n ghost.parentNode.removeChild(ghost)\n }\n if ((activeIndex !== startIndex && activeIndex !== undefined) || (activeDroppable !== startDroppable && activeDroppable !== undefined)) {\n const promise = this.props.setItemOrder(startIndex, activeIndex, startDroppable?.props?.id, activeDroppable?.props?.id, activeGroup)\n if (promise && promise.then) {\n promise.then(() => this.clearChangedOrder(token), () => this.clearChangedOrder(token))\n } else {\n this.clearChangedOrder(token)\n }\n } else {\n this.clearChangedOrder(token)\n }\n }\n\n if (token !== this.dragToken) {\n // Superseded: a newer drag owns the shared state and the render output. Drop\n // our ghost and commit our reorder, but leave that drag's state alone.\n finish()\n return\n }\n\n this.setState({\n saving: {\n list: this.props.list,\n children: this.props.children,\n dragInfo: _.set('active', false, dragInfo || {})\n }\n }, () => {\n this.preventScroll = false\n this.props.setDragRef(null)\n this.settedDragRef = false\n finish()\n })\n }\n\n clearChangedOrder = (token) => {\n // Only the drag that still owns the shared state may reset it — a superseded\n // session clearing dragInfo here would wipe the drag currently in progress.\n if (token !== undefined && token !== this.dragToken) { return }\n this.setState({dragInfo: {}, saving: false})\n }\n\n dragMove = (e, {pageX, pageY, clientX, clientY}) => {\n const distance = Math.sqrt((this.positions.originalX - pageX) ** 2 + (this.positions.originalY - pageY) ** 2)\n if (e.type === 'mousemove') { // get touchstart and touchmove\n if (!this.passedResistance && !this.props.noResistance && distance < 5) {\n return\n }\n } else {\n if (!this.pressedEnough) {\n if (distance > 5) {\n this.dragEnd()\n }\n return\n }\n e.preventDefault()\n }\n this.passedResistance = true\n\n this.processAutoScroll(pageX, pageY, clientX, clientY)\n }\n\n completeMove = (pageX, pageY) => {\n const {scrollTop, scrollLeft} = this.getScrollContainer()\n const scrollYDelta = this.positions.scrollTop - (scrollTop || 0)\n const scrollXDelta = this.positions.scrollLeft - (scrollLeft || 0)\n const ghostLeft = pageX - this.positions.offsetLeft\n const ghostTop = pageY - this.positions.offsetTop\n const {height: parentHeight, width: parentWidth} = this.getConstraintDimensions()\n const normalizedLeft = Math.max(Math.min(ghostLeft, parentWidth - this.positions.ghostWidth - this.positions.ghostMarginLeft + scrollXDelta), 0 - this.positions.ghostMarginLeft + scrollXDelta)\n const normalizedTop = Math.max(Math.min(ghostTop, parentHeight - this.positions.ghostHeight - this.positions.ghostMarginTop + scrollYDelta), 0 - this.positions.ghostMarginTop + scrollYDelta)\n const x = (normalizedLeft - ghostLeft) + pageX - window.scrollX\n const y = (normalizedTop - ghostTop) + pageY - window.scrollY\n\n if (this.ghost) {\n this.ghost.style.transform = `translate(${x}px,${y}px)` + (this.props.ghostScale ? ' scale(' + this.props.ghostScale + ')' : '')\n this.ghost.style.display = ''\n }\n this.move(pageX - (ghostLeft - normalizedLeft), pageY - (ghostTop - normalizedTop))\n if (!this.state.dragInfo.active) {\n this.setState({\n dragInfo: _.assign(this.state.dragInfo,\n {\n activeIndex: this.state.dragInfo.startIndex,\n activeDroppable: this.state.dragInfo.startDroppable,\n active: true\n })\n }\n )\n }\n }\n\n autoScrollAnimation\n autoScrollX\n autoScrollY\n\n getFixedParentRect = (node, not) => {\n if (node) {\n if (window.getComputedStyle(node)['position'].toLowerCase() === 'fixed' && not !== node)\n return node.getBoundingClientRect()\n else\n return this.getFixedParentRect((node).offsetParent, not)\n } else {\n return {}\n }\n }\n\n calculateDistanceFromBorder = (ghost, position, getElementBeforeBorder, scrollContainer, parentRect, keys) => {\n const fixedUnderMouse = scrollContainer === window ? this.getFixedParentRect(getElementBeforeBorder(+AUTO_SCROLL_BORDER_SIZE), ghost) : {}\n const min = scrollContainer !== window ? scrollContainer.getBoundingClientRect()[keys.min] :\n (fixedUnderMouse)[keys.max] || (this.getFixedParentRect(getElementBeforeBorder(-AUTO_SCROLL_BORDER_SIZE), ghost))[keys.max] || 0\n const max = scrollContainer !== window ? scrollContainer.getBoundingClientRect()[keys.max] :\n (fixedUnderMouse)[keys.min] || (this.getFixedParentRect(getElementBeforeBorder(+AUTO_SCROLL_BORDER_SIZE), ghost))[keys.min] || window['inner' + keys.size]\n const distanceMin = position - AUTO_SCROLL_BORDER_SIZE - min\n const distanceMax = position + AUTO_SCROLL_BORDER_SIZE - max\n\n const containerMin = scrollContainer === window ? 0 : Math.max(scrollContainer.getBoundingClientRect()[keys.min], 0)\n const containerMax = scrollContainer === window ? window['inner' + keys.size] : Math.min(scrollContainer.getBoundingClientRect()[keys.max], window['inner' + keys.size])\n const afterCenter = ((position - containerMin) * 2 / (containerMax - containerMin)) > 1\n if (distanceMin < 0 && !afterCenter) return distanceMin\n if (distanceMax > 0) return distanceMax\n return 0\n }\n\n processAutoScroll = (pageX, pageY, clientX, clientY) => {\n const scrollContainer = this.getScrollContainer()\n const parentRect = this.getConstraintDimensions()\n this.autoScrollY = this.calculateDistanceFromBorder(this.ghost, clientY, (diff) => document.elementFromPoint(clientX, clientY + diff), scrollContainer, parentRect, VERTICAL_DIMENSIONS)\n // this.autoScrollX = this.calculateDistanceFromBorder(clientX, (diff) => document.elementFromPoint(clientX + diff, clientY), scrollContainer, parentRect, HORIZONTAL_DIMENSIONS)\n this.autoScrollX = 0\n // noinspection JSSuspiciousNameCombination\n const keepY = this.autoScrollX === 0 || (this.autoScrollY !== 0 && Math.abs(this.autoScrollY) < Math.abs(this.autoScrollX))\n\n this.autoScrollY = this.props.scrollOnDrag && keepY ? this.autoScrollY : 0\n this.autoScrollX = this.props.scrollOnDrag && !keepY ? this.autoScrollX : 0\n\n if (this.autoScrollX || this.autoScrollY) {\n\n this.startAutoScroll(pageX, pageY, scrollContainer)\n } else {\n if (this.autoScrollAnimation) {\n this.stopAutoScroll()\n }\n this.completeMove(pageX, pageY)\n }\n }\n\n checkLimits = (delta, boundRect, constraintRect, scrollRect, keys) => {\n if (delta > 0) {\n if (constraintRect[keys.max] + AUTO_SCROLL_OVERFLOW_BUFFER < scrollRect[keys.max]) {\n return 0\n }\n }\n if (delta < 0) {\n if (constraintRect[keys.min] - AUTO_SCROLL_OVERFLOW_BUFFER > scrollRect[keys.min]) {\n return 0\n }\n }\n return delta\n }\n\n startAutoScroll = (pageX, pageY, scrollContainer) => {\n if (!this.autoScrollAnimation) {\n this.autoScrollAnimation = window.requestAnimationFrame((timestamp) => {\n const ghostRect = (this.ghost).getBoundingClientRect()\n const parentRect = this.getConstraintDimensions()\n const scrollRect = scrollContainer === window ?\n {top: 0, bottom: window.innerHeight, left: 0, right: window.innerWidth} :\n scrollContainer.getBoundingClientRect()\n const deltaScrollX = easeInCubic(this.checkLimits(\n this.autoScrollX < 0 ? Math.max(this.autoScrollX, -AUTO_SCROLL_MAX_VELOCITY) : Math.min(this.autoScrollX, AUTO_SCROLL_MAX_VELOCITY),\n ghostRect,\n parentRect,\n scrollRect,\n HORIZONTAL_DIMENSIONS\n ))\n const deltaScrollY = easeInCubic(this.checkLimits(\n this.autoScrollY < 0 ? Math.max(this.autoScrollY, -AUTO_SCROLL_MAX_VELOCITY) : Math.min(this.autoScrollY, AUTO_SCROLL_MAX_VELOCITY),\n ghostRect,\n parentRect,\n scrollRect,\n VERTICAL_DIMENSIONS\n ))\n\n const willScroll = deltaScrollX !== 0 || deltaScrollY !== 0\n if (willScroll) {\n\n scrollContainer.scroll(\n (isNaN(scrollContainer.scrollLeft) ? scrollContainer.pageXOffset : scrollContainer.scrollLeft) + deltaScrollX,\n (isNaN(scrollContainer.scrollTop) ? scrollContainer.pageYOffset : scrollContainer.scrollTop) + deltaScrollY\n )\n }\n\n this.autoScrollAnimation = 0\n this.completeMove(pageX, pageY)\n if (willScroll) {\n this.startAutoScroll(pageX + (scrollContainer === window ? deltaScrollX : 0), pageY + (scrollContainer === window ? deltaScrollY : 0), scrollContainer)\n }\n }\n )\n } else {\n this.completeMove(pageX, pageY)\n }\n }\n\n stopAutoScroll = () => {\n window.cancelAnimationFrame(this.autoScrollAnimation)\n this.autoScrollAnimation = 0\n }\n\n dragEnd = () => {\n window.removeEventListener('touchmove', this.touchMove)\n window.removeEventListener('mousemove', this.mouseMove)\n window.removeEventListener('mouseup', this.dragEnd)\n window.removeEventListener('touchend', this.dragEnd)\n window.removeEventListener('visibilitychange', this.dragEnd)\n window.removeEventListener('blur', this.dragEnd)\n window.removeEventListener('selectstart', this.disableSelect)\n this.stopAutoScroll()\n this.props.setDragRef && this.props.setDragRef(null)\n clearTimeout(this.holdTouchTimer)\n // Wired to mouseup, touchend, visibilitychange and blur, so this can fire several\n // times for one drag. Only the first call owns the session and completes it.\n const session = this.activeSession\n if (!session) { return }\n this.activeSession = null\n session.dragInfo = this.state.dragInfo\n\n const ghost = session.ghost\n const {activeDroppable, activeIndex} = session.dragInfo\n const finalPosition = activeDroppable && activeDroppable.getPosition(activeIndex, this.getScrollPosition())\n if (activeDroppable && ghost && finalPosition) {\n const {marginTop, marginLeft, left, top} = window.getComputedStyle(ghost)\n const finalLeft = finalPosition.x - (Math.max(1, finalPosition.width) / 2) - parseInt(left) - parseInt(marginLeft)\n const finalTop = finalPosition.y - (Math.max(1, finalPosition.height) / 2) - parseInt(top) - parseInt(marginTop)\n ghost.style.transition = `transform 300ms ease-in-out 0ms, opacity 300ms ease-in-out 0ms`\n const newTransform = `translate(${finalLeft}px,${finalTop}px)`\n if ((ghost.style.transform||\"\").replace(/\\s/g,'') === newTransform) {\n this.stopMoving(session)\n } else {\n ghost.style.transform = newTransform\n session.onTransitionEnd = () => this.stopMoving(session)\n ghost.addEventListener('transitionend', session.onTransitionEnd)\n session.endTimeout = setTimeout(session.onTransitionEnd, 300)\n }\n } else {\n this.stopMoving(session)\n }\n }\n\n disableSelect(event) {\n event.preventDefault()\n }\n\n\n addDroppable = (el) => {\n this.droppables[el.props.group] = (this.droppables[el.props.group] || []).concat(el)\n }\n\n remoevDroppable = (el) => {\n this.droppables[el.props.group] = this.droppables[el.props.group].filter(_ => _ !== el)\n }\n\n mouseDown = (draggable) => normalizeMouse(this.dragStart(draggable),this.dragEnd)\n mouseMove = normalizeMouse(this.dragMove,this.dragEnd)\n touchStart = (draggable) => normalizeTouch(this.dragStart(draggable), this.dragEnd)\n touchMove = normalizeTouch(this.dragMove, this.dragEnd)\n\n providerValue = {}\n\n providerEvents = (draggable) => ({\n onMouseDown: this.mouseDown(draggable),\n onTouchStart: this.touchStart(draggable)\n })\n\n render() {\n const {setItemOrder, noResistance, animation, timing, disabled, list, ghostScale, setDragRef, scrollOnDrag, holdTouchTimer, children, ...rest} = this.props\n const {saving, dragInfo} = this.state\n this.providerValue = _.assign(\n this.providerValue,\n {\n addDroppable: this.addDroppable,\n removeDroppable: this.remoevDroppable,\n dragInfo: saving ? saving.dragInfo : dragInfo,\n eventHandlers: this.providerEvents\n }\n )\n if (this.scrollContainer) {\n const scrollContainer = this.getScrollContainer()\n this.lastScrollTop = (isNaN(scrollContainer['scrollTop']) ? scrollContainer['pageYOffset'] : scrollContainer['scrollTop']) || undefined\n this.lastScrollLeft = (isNaN(scrollContainer['scrollLeft']) ? scrollContainer['pageXOffset'] : scrollContainer['scrollLeft']) || undefined\n }\n return (\n <Provider value={this.providerValue}>\n <div {...rest} ref={this.setOffsetParent}>\n <DroppableContainer animation={animation} timing={timing} list={saving ? saving.list : list} placeholder={false}>\n {saving ? saving.children : children}\n </DroppableContainer>\n </div>\n </Provider>\n )\n }\n}\n\n\n// type GhostDimensions = { offsetX: number, offsetY: number, width: number, height: number }\n"],"names":["Provider","Consumer","React","createContext","DropPosition","styled","div","withConfig","displayName","componentId","props","rounded","EmptyPlaceholder","HORIZONTAL_DIMENSIONS","min","max","axis","size","VERTICAL_DIMENSIONS","AUTO_SCROLL_BORDER_SIZE","AUTO_SCROLL_MAX_VELOCITY","AUTO_SCROLL_OVERFLOW_BUFFER","easeInCubic","t","Math","ceil","disableWillChange","el","willChange","closest","classList","add","parentNode","reenableWillChange","remove","shouldPreventDrag","e","target","matches","DraggableItem","Component","constructor","arguments","events","eventHandlers","render","_this$props","DragTag","as","className","isDragging","droppable","dragIndex","roundedPlaceholder","inheritRadius","children","_objectWithoutProperties","_excluded","Wrapper","extraClassName","_objectSpread","createElement","_extends","a","DroppableContainer","dragProps","DroppableContainerComponent","draggables","emptyPlaceholder","addProps","activeIndex","extraProps","map","c","index","type","cloneElement","ref","toPosition","parentRect","_ref","scrollTop","scrollLeft","i","domNode","ReactDOM","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","findDOMNode","width","height","getBoundingClientRect","y","top","offsetTop","x","left","offsetLeft","getPosition","scrollXY","parent","offsetParent","getPositions","dragInfo","allowDrop","_map","v","id","existing","filter","_","length","placeholder","repositionDragged","array","_ref2","getActiveElement","active","startIndex","startDroppable","activeDroppable","removedOrInserted","_pullAt","splice","getPlaceholder","childArray","find","getDragged","key","childrenToarray","_ref3","list","Children","toArray","componentDidMount","addDroppable","componentWillUnmount","removeDroppable","group","animation","timing","FlipList","play","defaultProps","DraggableContainer","_this","this","ghost","dragToken","activeSession","positions","passedResistance","pressedEnough","holdTouchTimer","preventScroll","state","droppables","ghostDimensions","itemsPositions","scrollContainer","lastScrollTop","lastScrollLeft","settedDragRef","preventDefault","getScrollContainer","getScrollParent","removeItem","domItems","setOffsetParent","window","getComputedStyle","position","getConstraintDimensions","bottom","right","dragStart","draggable","_ref4","pageX","pageY","clientX","clientY","currentTarget","disabled","button","stopPropagation","persist","setTimeout","navigator","vibrate","dragMove","targetStyle","parentTop","parentLeft","parseInt","scrollY","scrollX","originalX","originalY","ghostHeight","ghostWidth","ghostMarginTop","ghostMarginLeft","cloneNode","Object","assign","style","transition","display","zIndex","margin","setupMove","offsetX","offsetY","addEventListener","mouseMove","touchMove","passive","dragEnd","disableSelect","item","click","token","ended","endTimeout","onTransitionEnd","appendChild","setState","activeGroup","getScrollPosition","resetPositions","undefined","reduce","acc","concat","sort","b","move","setDragRef","findGhostIndex","_assign","activePosition","ghostX1","ghostY1","ghostY2","ghostX2","centerInsideGhost","ghostX","ghostY","rectanglesIntersection","x2","x1","y2","y1","closestIndex","area","intersectionArea","distance","sqrt","pow","iMax","_ref5","arr","stopMoving","session","clearTimeout","removeEventListener","finish","removeChild","_startDroppable$props","_activeDroppable$prop","promise","setItemOrder","then","clearChangedOrder","saving","_set","_ref6","noResistance","processAutoScroll","completeMove","scrollYDelta","scrollXDelta","ghostLeft","ghostTop","parentHeight","parentWidth","normalizedLeft","normalizedTop","transform","ghostScale","autoScrollAnimation","autoScrollX","autoScrollY","getFixedParentRect","node","not","toLowerCase","calculateDistanceFromBorder","getElementBeforeBorder","keys","fixedUnderMouse","distanceMin","distanceMax","containerMin","containerMax","afterCenter","diff","document","elementFromPoint","keepY","abs","scrollOnDrag","startAutoScroll","stopAutoScroll","checkLimits","delta","boundRect","constraintRect","scrollRect","requestAnimationFrame","timestamp","ghostRect","innerHeight","innerWidth","deltaScrollX","deltaScrollY","willScroll","scroll","isNaN","pageXOffset","pageYOffset","cancelAnimationFrame","finalPosition","marginTop","marginLeft","finalLeft","finalTop","newTransform","replace","remoevDroppable","mouseDown","normalizeMouse","touchStart","normalizeTouch","providerValue","providerEvents","onMouseDown","onTouchStart","componentDidUpdate","prevState","event","_this$props2","rest","_excluded2","value"],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/extends';
|
|
2
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
3
|
+
import _get from 'lodash/fp/get';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { useUpdateEffect } from '@startlibs/core';
|
|
6
|
+
import { postFetcher } from '@startlibs/utils';
|
|
7
|
+
import { useLocation } from './Link.mjs';
|
|
8
|
+
|
|
9
|
+
const _excluded = ["Error", "children"];
|
|
10
|
+
const ResetOnLocationChange = _ref => {
|
|
11
|
+
let {
|
|
12
|
+
children,
|
|
13
|
+
reset
|
|
14
|
+
} = _ref;
|
|
15
|
+
const location = useLocation();
|
|
16
|
+
useUpdateEffect(() => {
|
|
17
|
+
reset();
|
|
18
|
+
}, [location]);
|
|
19
|
+
return children;
|
|
20
|
+
};
|
|
21
|
+
class ErrorBoundary extends React.Component {
|
|
22
|
+
constructor(props) {
|
|
23
|
+
super(props);
|
|
24
|
+
this.state = {
|
|
25
|
+
hasError: false
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
componentDidUpdate(prevProps) {
|
|
29
|
+
if (this.props.location !== prevProps.location) {
|
|
30
|
+
this.setState({
|
|
31
|
+
hasError: false
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (this.props.resetOn !== prevProps.resetOn) {
|
|
35
|
+
this.setState({
|
|
36
|
+
hasError: false
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
componentDidCatch(e, info) {
|
|
41
|
+
if (_get([0], e) === 'login' && _get([1, 'status'], e) === 401) {
|
|
42
|
+
window.location = "/login";
|
|
43
|
+
}
|
|
44
|
+
if (e !== null && e !== void 0 && e.notFound) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
var error = e && e.stack;
|
|
48
|
+
try {
|
|
49
|
+
if (!e || !e.stack) {
|
|
50
|
+
error = JSON.stringify(e);
|
|
51
|
+
}
|
|
52
|
+
} catch (exception) {
|
|
53
|
+
error = e.toString();
|
|
54
|
+
}
|
|
55
|
+
if (!/bot|spider|crawl/i.test(window.navigator.userAgent)) {
|
|
56
|
+
postFetcher("/log/errorBoundary", {
|
|
57
|
+
error,
|
|
58
|
+
message: e === null || e === void 0 ? void 0 : e.message,
|
|
59
|
+
name: e === null || e === void 0 ? void 0 : e.name,
|
|
60
|
+
componentStack: info === null || info === void 0 ? void 0 : info.componentStack,
|
|
61
|
+
url: window.location.href
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
static getDerivedStateFromError(error) {
|
|
66
|
+
// Update state so the next render will show the fallback UI.
|
|
67
|
+
return {
|
|
68
|
+
hasError: true,
|
|
69
|
+
error
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
render() {
|
|
73
|
+
const _this$props = this.props,
|
|
74
|
+
{
|
|
75
|
+
Error,
|
|
76
|
+
children
|
|
77
|
+
} = _this$props,
|
|
78
|
+
props = _objectWithoutProperties(_this$props, _excluded);
|
|
79
|
+
const {
|
|
80
|
+
hasError,
|
|
81
|
+
error
|
|
82
|
+
} = this.state;
|
|
83
|
+
const reset = () => this.setState({
|
|
84
|
+
hasError: false,
|
|
85
|
+
error: null
|
|
86
|
+
});
|
|
87
|
+
if (hasError) {
|
|
88
|
+
if (/*#__PURE__*/React.isValidElement(Error)) {
|
|
89
|
+
return /*#__PURE__*/React.createElement(ResetOnLocationChange, {
|
|
90
|
+
reset: reset
|
|
91
|
+
}, Error);
|
|
92
|
+
}
|
|
93
|
+
// You can render any custom fallback UI
|
|
94
|
+
return /*#__PURE__*/React.createElement(ResetOnLocationChange, {
|
|
95
|
+
reset: reset
|
|
96
|
+
}, /*#__PURE__*/React.createElement(Error, _extends({}, props, {
|
|
97
|
+
error: error,
|
|
98
|
+
fixed: reset
|
|
99
|
+
})));
|
|
100
|
+
}
|
|
101
|
+
return children;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// StartlibsProvider.registerInternal('ErrorBoundary',ErrorBoundary)
|
|
106
|
+
|
|
107
|
+
export { ErrorBoundary };
|
|
108
|
+
//# sourceMappingURL=ErrorBoundary.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.mjs","sources":["../src/ErrorBoundary.jsx"],"sourcesContent":["import React from 'react'\nimport _ from 'lodash/fp'\nimport {useUpdateEffect} from '@startlibs/core'\nimport {postFetcher} from '@startlibs/utils'\nimport {useLocation} from './Link'\n\nconst ResetOnLocationChange = ({children,reset}) => {\n const location = useLocation()\n useUpdateEffect(() => {\n reset()\n }, [location]);\n return children\n}\nexport class ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.location !== prevProps.location) {\n this.setState({hasError:false})\n }\n if (this.props.resetOn !== prevProps.resetOn) {\n this.setState({hasError:false})\n }\n }\n\n componentDidCatch(e, info) {\n if (_.get([0],e) === 'login' && _.get([1,'status'],e) === 401) {\n window.location = \"/login\"\n }\n if (e?.notFound) {\n return;\n }\n var error = e && e.stack\n try {\n if (!e || !e.stack) {\n error = JSON.stringify(e)\n }\n } catch (exception) {\n error = e.toString()\n }\n if (!(/bot|spider|crawl/i.test(window.navigator.userAgent))) {\n postFetcher(\"/log/errorBoundary\", {\n error,\n message: e?.message,\n name: e?.name,\n componentStack: info?.componentStack,\n url: window.location.href,\n })\n }\n }\n\n static getDerivedStateFromError(error) {\n // Update state so the next render will show the fallback UI.\n return { hasError: true, error};\n }\n\n render() {\n const {Error,children,...props} = this.props\n const {hasError,error} = this.state\n const reset =() => this.setState({hasError:false,error:null})\n if (hasError) {\n if (React.isValidElement(Error)) {\n return <ResetOnLocationChange reset={reset}>{Error}</ResetOnLocationChange>\n }\n // You can render any custom fallback UI\n return <ResetOnLocationChange reset={reset}><Error {...props} error={error} fixed={reset}/></ResetOnLocationChange>;\n }\n return children;\n }\n}\n\n// StartlibsProvider.registerInternal('ErrorBoundary',ErrorBoundary)"],"names":["ResetOnLocationChange","_ref","children","reset","location","useLocation","useUpdateEffect","ErrorBoundary","React","Component","constructor","props","state","hasError","componentDidUpdate","prevProps","setState","resetOn","componentDidCatch","e","info","_get","window","notFound","error","stack","JSON","stringify","exception","toString","test","navigator","userAgent","postFetcher","message","name","componentStack","url","href","getDerivedStateFromError","render","_this$props","Error","_objectWithoutProperties","_excluded","isValidElement","createElement","_extends","fixed"],"mappings":"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"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/extends';
|
|
2
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { isMobile } from '@startlibs/utils';
|
|
5
|
+
|
|
6
|
+
const _excluded = ["Tag", "linkColor", "resizeOnMount", "shouldCancelResize"];
|
|
7
|
+
const isNodeJunction = nextNode => nextNode && !nextNode.hasChangedLine && nextNode.words[0] !== '';
|
|
8
|
+
const calculateCanvasFillWidth = (nodes, maxWidth, ctx) => {
|
|
9
|
+
let lineCount = 0;
|
|
10
|
+
let currentNodeLine = [];
|
|
11
|
+
let biggestWidth = 0;
|
|
12
|
+
let previousNodesLineWidth = 0;
|
|
13
|
+
let currentMultiNodeWordWidth = 0;
|
|
14
|
+
nodes.forEach((_ref, nodeIndex) => {
|
|
15
|
+
let {
|
|
16
|
+
font,
|
|
17
|
+
hasChangedLine,
|
|
18
|
+
words
|
|
19
|
+
} = _ref;
|
|
20
|
+
ctx.font = font;
|
|
21
|
+
const nextNode = nodes[nodeIndex + 1];
|
|
22
|
+
words.forEach((word, wordIndex) => {
|
|
23
|
+
const {
|
|
24
|
+
width
|
|
25
|
+
} = ctx.measureText(currentNodeLine.concat(word || (currentNodeLine.length ? '' : ' ')).join(' '));
|
|
26
|
+
const realizedWidth = width + previousNodesLineWidth;
|
|
27
|
+
const overflowed = realizedWidth >= maxWidth;
|
|
28
|
+
const lastWord = wordIndex === words.length - 1;
|
|
29
|
+
if (!overflowed) {
|
|
30
|
+
if (lastWord && nextNode && !nextNode.hasChangedLine) {
|
|
31
|
+
previousNodesLineWidth = realizedWidth;
|
|
32
|
+
currentNodeLine = [];
|
|
33
|
+
if (word !== '' && isNodeJunction(nextNode)) {
|
|
34
|
+
currentMultiNodeWordWidth += ctx.measureText(word || ' ').width;
|
|
35
|
+
}
|
|
36
|
+
} else {
|
|
37
|
+
currentNodeLine.push(word);
|
|
38
|
+
currentMultiNodeWordWidth = 0;
|
|
39
|
+
biggestWidth = biggestWidth > realizedWidth ? biggestWidth : realizedWidth;
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
lineCount++;
|
|
43
|
+
if (lastWord) {
|
|
44
|
+
currentMultiNodeWordWidth += ctx.measureText(word || ' ').width;
|
|
45
|
+
previousNodesLineWidth = currentMultiNodeWordWidth;
|
|
46
|
+
currentNodeLine = [];
|
|
47
|
+
} else {
|
|
48
|
+
previousNodesLineWidth = currentMultiNodeWordWidth;
|
|
49
|
+
currentMultiNodeWordWidth = 0;
|
|
50
|
+
currentNodeLine = [word];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (lastWord && (!nextNode || nextNode !== null && nextNode !== void 0 && nextNode.hasChangedLine)) {
|
|
54
|
+
lineCount++;
|
|
55
|
+
currentMultiNodeWordWidth = 0;
|
|
56
|
+
currentNodeLine = [];
|
|
57
|
+
previousNodesLineWidth = 0;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
max: biggestWidth,
|
|
63
|
+
lines: lineCount
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
const getCanvasFillWidth = (nodes, maxWidth, ctx, maxLines) => {
|
|
67
|
+
const {
|
|
68
|
+
max,
|
|
69
|
+
lines
|
|
70
|
+
} = calculateCanvasFillWidth(nodes, maxWidth - 1, ctx);
|
|
71
|
+
if (lines > maxLines) {
|
|
72
|
+
return null;
|
|
73
|
+
} else {
|
|
74
|
+
const smallerResult = getCanvasFillWidth(nodes, max - 1, ctx, lines);
|
|
75
|
+
if (smallerResult === null || max === smallerResult) {
|
|
76
|
+
return maxLines === undefined ? maxWidth : Math.ceil(max);
|
|
77
|
+
} else {
|
|
78
|
+
return smallerResult;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
class FillLastLineResizer extends React.Component {
|
|
83
|
+
constructor() {
|
|
84
|
+
super(...arguments);
|
|
85
|
+
this.fontIsLoaded = false;
|
|
86
|
+
this.setRef = el => {
|
|
87
|
+
this.el = el;
|
|
88
|
+
if (el && parseInt(this.el.style.maxWidth, 10) !== parseInt(this.lastMaxWidth, 10)) {
|
|
89
|
+
this.resizeEvent();
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
this.resizeEvent = fontLoadedOrEvent => {
|
|
93
|
+
const fromDialog = typeof fontLoadedOrEvent === 'object' ? fontLoadedOrEvent.detail && fontLoadedOrEvent.detail.dialog : false;
|
|
94
|
+
if (fromDialog) return;
|
|
95
|
+
const fontAlreadyLoaded = window.getComputedStyle(this.el).fontWeight === '500' && window.getComputedStyle(this.el).fontFamily.indexOf('Roboto') > 0;
|
|
96
|
+
if (fontAlreadyLoaded) {
|
|
97
|
+
this.el.style.fontFamily = 'Roboto, sans-serif';
|
|
98
|
+
this.fontIsLoaded = true;
|
|
99
|
+
}
|
|
100
|
+
if (this.fontIsLoaded || this.props.resizeOnMount || fontLoadedOrEvent === true || document.readyState === 'complete') {
|
|
101
|
+
this.fontIsLoaded = true;
|
|
102
|
+
} else {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this.el.style.removeProperty('max-width');
|
|
106
|
+
if (this.props.shouldCancelResize === true || typeof this.props.shouldCancelResize === 'function' && this.props.shouldCancelResize()) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (isMobile() && this.el.firstElementChild) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const {
|
|
113
|
+
offsetWidth,
|
|
114
|
+
offsetHeight
|
|
115
|
+
} = this.el;
|
|
116
|
+
if (offsetWidth && offsetHeight) {
|
|
117
|
+
const range = document.createRange();
|
|
118
|
+
range.setStart(this.el, 0);
|
|
119
|
+
range.setEnd(this.el, this.el.childNodes.length);
|
|
120
|
+
if (range.getClientRects().length <= 1) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
let newMaxWidth = 0;
|
|
124
|
+
if (this.props.withoutCanvas) {
|
|
125
|
+
newMaxWidth = this.getMaxWidth(this.el, offsetHeight, offsetWidth, 256, offsetWidth);
|
|
126
|
+
} else {
|
|
127
|
+
try {
|
|
128
|
+
const canvasCtx = document.createElement("canvas").getContext("2d");
|
|
129
|
+
const nodeIterator = document.createNodeIterator(this.el, NodeFilter.SHOW_TEXT);
|
|
130
|
+
const text = this.el.innerText;
|
|
131
|
+
let lastIndex = -1;
|
|
132
|
+
let node;
|
|
133
|
+
const nodes = [];
|
|
134
|
+
while (node = nodeIterator.nextNode()) {
|
|
135
|
+
const currentText = node.textContent.replace(/ +/g, ' ');
|
|
136
|
+
const currentIndex = text.indexOf(currentText, lastIndex + 1);
|
|
137
|
+
nodes.push({
|
|
138
|
+
font: window.getComputedStyle(node.parentElement).font,
|
|
139
|
+
hasChangedLine: text[currentIndex - 1] === '\n',
|
|
140
|
+
words: currentText.split(' ')
|
|
141
|
+
});
|
|
142
|
+
lastIndex = currentIndex;
|
|
143
|
+
}
|
|
144
|
+
newMaxWidth = getCanvasFillWidth(nodes, offsetWidth, canvasCtx);
|
|
145
|
+
} catch (e) {
|
|
146
|
+
console.log(e);
|
|
147
|
+
newMaxWidth = offsetWidth;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
this.el.style.maxWidth = newMaxWidth + 'px';
|
|
151
|
+
const {
|
|
152
|
+
offsetHeight: newOffsetHeight
|
|
153
|
+
} = this.el;
|
|
154
|
+
|
|
155
|
+
// confere se o maxWidth antigo ainda serve, garantir que não haja influencia de um ou outro pixel
|
|
156
|
+
if (this.lastMaxWidth) {
|
|
157
|
+
this.el.style.maxWidth = this.lastMaxWidth + 'px';
|
|
158
|
+
const {
|
|
159
|
+
offsetHeight: lastOffsetHeight
|
|
160
|
+
} = this.el;
|
|
161
|
+
if (newOffsetHeight !== lastOffsetHeight || this.lastMaxWidth >= this.el.offsetWidth) {
|
|
162
|
+
// if (this.el.tagName.toLowerCase()==='ul') {
|
|
163
|
+
// console.log(newMaxWidth)
|
|
164
|
+
// }
|
|
165
|
+
this.lastMaxWidth = newMaxWidth;
|
|
166
|
+
this.el.style.maxWidth = this.lastMaxWidth + 'px';
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
169
|
+
this.lastMaxWidth = newMaxWidth;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
this.getMaxWidth = (element, prevHeight, prevWidth, window, originalWidth) => {
|
|
174
|
+
const newWidth = Math.max(1, prevWidth - window);
|
|
175
|
+
element.style.maxWidth = newWidth + 'px';
|
|
176
|
+
if (element.offsetHeight === prevHeight && prevWidth > 10) {
|
|
177
|
+
return this.getMaxWidth(element, prevHeight, newWidth, window, originalWidth);
|
|
178
|
+
} else if (window > 1) {
|
|
179
|
+
return this.getMaxWidth(element, prevHeight, prevWidth, window / 2, originalWidth);
|
|
180
|
+
} else if (prevWidth < 10) {
|
|
181
|
+
return originalWidth > prevWidth ? originalWidth : 10;
|
|
182
|
+
} else {
|
|
183
|
+
return prevWidth + 1;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
componentDidMount() {
|
|
188
|
+
window.addEventListener('stepResize', this.resizeEvent);
|
|
189
|
+
if (document.readyState === 'complete') {
|
|
190
|
+
this.resizeEvent();
|
|
191
|
+
} else {
|
|
192
|
+
window.addEventListener('load', this.resizeEvent);
|
|
193
|
+
if (window.document.fonts && window.document.fonts.ready && window.document.fonts.ready.catch) {
|
|
194
|
+
window.document.fonts.ready.catch(_ => _).then(() => {
|
|
195
|
+
window.removeEventListener('load', this.resizeEvent);
|
|
196
|
+
this.resizeEvent(true);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
componentWillUnmount() {
|
|
202
|
+
window.removeEventListener('stepResize', this.resizeEvent);
|
|
203
|
+
window.removeEventListener('load', this.resizeEvent);
|
|
204
|
+
}
|
|
205
|
+
componentDidUpdate() {
|
|
206
|
+
this.resizeEvent();
|
|
207
|
+
}
|
|
208
|
+
shouldComponentUpdate(nextProps) {
|
|
209
|
+
const ignoreHtml = nextProps.dangerouslySetInnerHTML && this.props.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html === this.props.dangerouslySetInnerHTML.__html;
|
|
210
|
+
const isShallowEqual = Object.keys(nextProps).every(key => this.props[key] === nextProps[key] || ignoreHtml && key === "dangerouslySetInnerHTML");
|
|
211
|
+
return !isShallowEqual;
|
|
212
|
+
}
|
|
213
|
+
render() {
|
|
214
|
+
const _this$props = this.props,
|
|
215
|
+
{
|
|
216
|
+
Tag,
|
|
217
|
+
linkColor,
|
|
218
|
+
resizeOnMount,
|
|
219
|
+
shouldCancelResize
|
|
220
|
+
} = _this$props,
|
|
221
|
+
rest = _objectWithoutProperties(_this$props, _excluded);
|
|
222
|
+
return /*#__PURE__*/React.createElement(Tag, _extends({
|
|
223
|
+
ref: this.setRef
|
|
224
|
+
}, rest));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
FillLastLineResizer.defaultProps = {
|
|
228
|
+
Tag: 'div'
|
|
229
|
+
};
|
|
230
|
+
FillLastLineResizer.ul = props => /*#__PURE__*/React.createElement(FillLastLineResizer, _extends({
|
|
231
|
+
Tag: "ul"
|
|
232
|
+
}, props));
|
|
233
|
+
FillLastLineResizer.h2 = props => /*#__PURE__*/React.createElement(FillLastLineResizer, _extends({
|
|
234
|
+
Tag: "h2"
|
|
235
|
+
}, props));
|
|
236
|
+
|
|
237
|
+
export { FillLastLineResizer };
|
|
238
|
+
//# sourceMappingURL=FillLastLineResizer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FillLastLineResizer.mjs","sources":["../src/FillLastLineResizer.jsx"],"sourcesContent":["import React from 'react'\nimport {isMobile} from '@startlibs/utils'\n\nconst isNodeJunction = (nextNode) => nextNode && !nextNode.hasChangedLine && nextNode.words[0]!==''\n\nconst calculateCanvasFillWidth = (nodes, maxWidth, ctx) => {\n let lineCount = 0\n let currentNodeLine = [];\n let biggestWidth = 0\n\n let previousWidth = 0;\n let previousNodesLineWidth = 0\n let currentMultiNodeWordWidth = 0\n\n let lineWordsDebug = ''\n\n nodes.forEach(({font,hasChangedLine,words}, nodeIndex) => {\n ctx.font = font\n const nextNode = nodes[nodeIndex+1]\n\n\n words.forEach((word,wordIndex) => {\n const {width} = ctx.measureText(currentNodeLine.concat(word || (currentNodeLine.length ? '' : ' ')).join(' '));\n const realizedWidth = width + previousNodesLineWidth\n const overflowed = realizedWidth >= maxWidth\n const lastWord = wordIndex === words.length - 1\n if (!overflowed) {\n if (lastWord && (nextNode && !nextNode.hasChangedLine)) {\n previousNodesLineWidth = realizedWidth\n currentNodeLine = []\n if (word!=='' && isNodeJunction(nextNode)) {\n currentMultiNodeWordWidth += ctx.measureText(word || ' ').width\n }\n } else {\n currentNodeLine.push(word);\n currentMultiNodeWordWidth = 0;\n biggestWidth = biggestWidth > realizedWidth ? biggestWidth : realizedWidth\n }\n lineWordsDebug += ' ' + word\n previousWidth = realizedWidth;\n } else {\n lineCount++;\n lineWordsDebug = ''\n if (lastWord) {\n currentMultiNodeWordWidth += ctx.measureText(word || ' ').width;\n previousNodesLineWidth = currentMultiNodeWordWidth;\n currentNodeLine = []\n } else {\n previousNodesLineWidth = currentMultiNodeWordWidth;\n currentMultiNodeWordWidth = 0;\n currentNodeLine = [word]\n }\n previousWidth = 0\n }\n if (lastWord && (!nextNode || nextNode?.hasChangedLine)) {\n lineCount++;\n currentMultiNodeWordWidth =0;\n currentNodeLine = [];\n previousWidth = 0;\n previousNodesLineWidth=0;\n }\n })\n });\n return {max: biggestWidth, lines:lineCount}\n}\n\nconst getCanvasFillWidth = (nodes, maxWidth, ctx, maxLines) => {\n const {max, lines} = calculateCanvasFillWidth(nodes, maxWidth-1, ctx)\n if (lines > maxLines) {\n return null\n } else {\n const smallerResult = getCanvasFillWidth(nodes, max-1, ctx, lines)\n if (smallerResult === null || max === smallerResult) {\n return maxLines === undefined ? maxWidth : Math.ceil(max)\n } else {\n return smallerResult\n }\n }\n}\n\nexport class FillLastLineResizer extends React.Component {\n static defaultProps = {\n Tag: 'div'\n }\n fontIsLoaded = false\n\n\n setRef = (el) => {\n this.el = el\n if (el && parseInt(this.el.style.maxWidth, 10) !== parseInt(this.lastMaxWidth, 10)) {\n this.resizeEvent()\n }\n }\n\n resizeEvent = (fontLoadedOrEvent) => {\n const fromDialog = typeof fontLoadedOrEvent === 'object' ? fontLoadedOrEvent.detail && fontLoadedOrEvent.detail.dialog : false\n if (fromDialog) return;\n const fontAlreadyLoaded = window.getComputedStyle(this.el).fontWeight === '500' && window.getComputedStyle(this.el).fontFamily.indexOf('Roboto') > 0\n if (fontAlreadyLoaded) {\n this.el.style.fontFamily = 'Roboto, sans-serif'\n this.fontIsLoaded = true\n }\n if (this.fontIsLoaded || this.props.resizeOnMount || fontLoadedOrEvent === true || document.readyState === 'complete') {\n this.fontIsLoaded = true\n } else {\n return\n }\n this.el.style.removeProperty('max-width')\n if (this.props.shouldCancelResize === true || (typeof this.props.shouldCancelResize === 'function' && this.props.shouldCancelResize())) {\n return\n }\n\n if (isMobile() && this.el.firstElementChild) {\n return\n }\n\n const {offsetWidth, offsetHeight} = this.el\n if (offsetWidth && offsetHeight) {\n const range = document.createRange()\n range.setStart(this.el, 0)\n range.setEnd(this.el, this.el.childNodes.length)\n if (range.getClientRects().length <= 1) {\n return;\n }\n let newMaxWidth = 0;\n if (this.props.withoutCanvas) {\n newMaxWidth = this.getMaxWidth(this.el, offsetHeight, offsetWidth, 256, offsetWidth)\n } else {\n try {\n const canvasCtx = document.createElement(\"canvas\").getContext(\"2d\");\n const nodeIterator = document.createNodeIterator(this.el, NodeFilter.SHOW_TEXT)\n const text = this.el.innerText\n let lastIndex = -1\n let node;\n const nodes = []\n while (node = nodeIterator.nextNode()) {\n const currentText = node.textContent.replace( / +/g, ' ' )\n const currentIndex = text.indexOf(currentText,lastIndex+1)\n nodes.push({\n font:window.getComputedStyle(node.parentElement).font,\n hasChangedLine:text[currentIndex-1]==='\\n',\n words:currentText.split(' ')\n })\n lastIndex = currentIndex\n }\n newMaxWidth = getCanvasFillWidth(nodes, offsetWidth, canvasCtx)\n } catch (e) {\n console.log(e)\n newMaxWidth = offsetWidth\n }\n }\n\n this.el.style.maxWidth = newMaxWidth + 'px'\n const {offsetHeight: newOffsetHeight} = this.el\n\n // confere se o maxWidth antigo ainda serve, garantir que não haja influencia de um ou outro pixel\n if (this.lastMaxWidth) {\n this.el.style.maxWidth = this.lastMaxWidth + 'px'\n const {offsetHeight: lastOffsetHeight} = this.el\n if (newOffsetHeight !== lastOffsetHeight || this.lastMaxWidth >= this.el.offsetWidth) {\n // if (this.el.tagName.toLowerCase()==='ul') {\n // console.log(newMaxWidth)\n // }\n this.lastMaxWidth = newMaxWidth\n this.el.style.maxWidth = this.lastMaxWidth + 'px'\n }\n } else {\n this.lastMaxWidth = newMaxWidth\n }\n }\n }\n\n getMaxWidth = (element, prevHeight, prevWidth, window, originalWidth) => {\n const newWidth = Math.max(1, prevWidth - window)\n element.style.maxWidth = newWidth + 'px'\n if (element.offsetHeight === prevHeight && prevWidth > 10) {\n return this.getMaxWidth(element, prevHeight, newWidth, window, originalWidth)\n } else if (window > 1) {\n return this.getMaxWidth(element, prevHeight, prevWidth, window / 2, originalWidth)\n } else if (prevWidth < 10) {\n return originalWidth > prevWidth ? originalWidth : 10\n } else {\n return prevWidth + 1\n }\n }\n\n componentDidMount() {\n window.addEventListener('stepResize', this.resizeEvent)\n if (document.readyState === 'complete') {\n this.resizeEvent()\n } else {\n window.addEventListener('load', this.resizeEvent)\n if (window.document.fonts && window.document.fonts.ready && window.document.fonts.ready.catch) {\n window.document.fonts.ready.catch(_ => _).then(() => {\n window.removeEventListener('load', this.resizeEvent)\n this.resizeEvent(true)\n })\n }\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('stepResize', this.resizeEvent)\n window.removeEventListener('load', this.resizeEvent)\n }\n\n componentDidUpdate() {\n this.resizeEvent()\n }\n\n shouldComponentUpdate(nextProps) {\n const ignoreHtml = nextProps.dangerouslySetInnerHTML && this.props.dangerouslySetInnerHTML &&\n nextProps.dangerouslySetInnerHTML.__html === this.props.dangerouslySetInnerHTML.__html\n const isShallowEqual = Object.keys(nextProps).every(key => this.props[key] === nextProps[key] || (ignoreHtml && key === \"dangerouslySetInnerHTML\"))\n return !isShallowEqual;\n\n }\n\n render() {\n const {Tag, linkColor, resizeOnMount, shouldCancelResize, ...rest} = this.props\n return <Tag ref={this.setRef} {...rest}/>\n }\n}\n\nFillLastLineResizer.ul = (props) => <FillLastLineResizer Tag='ul' {...props}/>\nFillLastLineResizer.h2 = (props) => <FillLastLineResizer Tag='h2' {...props}/>"],"names":["isNodeJunction","nextNode","hasChangedLine","words","calculateCanvasFillWidth","nodes","maxWidth","ctx","lineCount","currentNodeLine","biggestWidth","previousNodesLineWidth","currentMultiNodeWordWidth","forEach","_ref","nodeIndex","font","word","wordIndex","width","measureText","concat","length","join","realizedWidth","overflowed","lastWord","push","max","lines","getCanvasFillWidth","maxLines","smallerResult","undefined","Math","ceil","FillLastLineResizer","React","Component","constructor","arguments","fontIsLoaded","setRef","el","parseInt","style","lastMaxWidth","resizeEvent","fontLoadedOrEvent","fromDialog","detail","dialog","fontAlreadyLoaded","window","getComputedStyle","fontWeight","fontFamily","indexOf","props","resizeOnMount","document","readyState","removeProperty","shouldCancelResize","isMobile","firstElementChild","offsetWidth","offsetHeight","range","createRange","setStart","setEnd","childNodes","getClientRects","newMaxWidth","withoutCanvas","getMaxWidth","canvasCtx","createElement","getContext","nodeIterator","createNodeIterator","NodeFilter","SHOW_TEXT","text","innerText","lastIndex","node","currentText","textContent","replace","currentIndex","parentElement","split","e","console","log","newOffsetHeight","lastOffsetHeight","element","prevHeight","prevWidth","originalWidth","newWidth","componentDidMount","addEventListener","fonts","ready","catch","_","then","removeEventListener","componentWillUnmount","componentDidUpdate","shouldComponentUpdate","nextProps","ignoreHtml","dangerouslySetInnerHTML","__html","isShallowEqual","Object","keys","every","key","render","_this$props","Tag","linkColor","rest","_objectWithoutProperties","_excluded","_extends","ref","defaultProps","ul","h2"],"mappings":";;;;;;AAGA,MAAMA,cAAc,GAAIC,QAAQ,IAAKA,QAAQ,IAAI,CAACA,QAAQ,CAACC,cAAc,IAAID,QAAQ,CAACE,KAAK,CAAC,CAAC,CAAC,KAAG,EAAE,CAAA;AAEnG,MAAMC,wBAAwB,GAAGA,CAACC,KAAK,EAAEC,QAAQ,EAAEC,GAAG,KAAK;EACzD,IAAIC,SAAS,GAAG,CAAC,CAAA;EACjB,IAAIC,eAAe,GAAG,EAAE,CAAA;EACxB,IAAIC,YAAY,GAAG,CAAC,CAAA;EAGpB,IAAIC,sBAAsB,GAAG,CAAC,CAAA;EAC9B,IAAIC,yBAAyB,GAAG,CAAC,CAAA;AAIjCP,EAAAA,KAAK,CAACQ,OAAO,CAAC,CAAAC,IAAA,EAA8BC,SAAS,KAAK;IAAA,IAA3C;MAACC,IAAI;MAACd,cAAc;AAACC,MAAAA,KAAAA;AAAK,KAAC,GAAAW,IAAA,CAAA;IACxCP,GAAG,CAACS,IAAI,GAAGA,IAAI,CAAA;AACf,IAAA,MAAMf,QAAQ,GAAGI,KAAK,CAACU,SAAS,GAAC,CAAC,CAAC,CAAA;AAGnCZ,IAAAA,KAAK,CAACU,OAAO,CAAC,CAACI,IAAI,EAACC,SAAS,KAAK;MAChC,MAAM;AAACC,QAAAA,KAAAA;OAAM,GAAGZ,GAAG,CAACa,WAAW,CAACX,eAAe,CAACY,MAAM,CAACJ,IAAI,KAAKR,eAAe,CAACa,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC9G,MAAA,MAAMC,aAAa,GAAGL,KAAK,GAAGR,sBAAsB,CAAA;AACpD,MAAA,MAAMc,UAAU,GAAGD,aAAa,IAAIlB,QAAQ,CAAA;MAC5C,MAAMoB,QAAQ,GAAGR,SAAS,KAAKf,KAAK,CAACmB,MAAM,GAAG,CAAC,CAAA;MAC/C,IAAI,CAACG,UAAU,EAAE;QACf,IAAIC,QAAQ,IAAKzB,QAAQ,IAAI,CAACA,QAAQ,CAACC,cAAe,EAAE;AACtDS,UAAAA,sBAAsB,GAAGa,aAAa,CAAA;AACtCf,UAAAA,eAAe,GAAG,EAAE,CAAA;UACpB,IAAIQ,IAAI,KAAG,EAAE,IAAIjB,cAAc,CAACC,QAAQ,CAAC,EAAE;YACzCW,yBAAyB,IAAKL,GAAG,CAACa,WAAW,CAACH,IAAI,IAAI,GAAG,CAAC,CAACE,KAAK,CAAA;AAClE,WAAA;AACF,SAAC,MAAM;AACLV,UAAAA,eAAe,CAACkB,IAAI,CAACV,IAAI,CAAC,CAAA;AAC1BL,UAAAA,yBAAyB,GAAG,CAAC,CAAA;AAC7BF,UAAAA,YAAY,GAAGA,YAAY,GAAGc,aAAa,GAAGd,YAAY,GAAGc,aAAa,CAAA;AAC5E,SAAA;AAGF,OAAC,MAAM;AACLhB,QAAAA,SAAS,EAAE,CAAA;AAEX,QAAA,IAAIkB,QAAQ,EAAE;UACZd,yBAAyB,IAAIL,GAAG,CAACa,WAAW,CAACH,IAAI,IAAI,GAAG,CAAC,CAACE,KAAK,CAAA;AAC/DR,UAAAA,sBAAsB,GAAGC,yBAAyB,CAAA;AAClDH,UAAAA,eAAe,GAAG,EAAE,CAAA;AACtB,SAAC,MAAM;AACLE,UAAAA,sBAAsB,GAAGC,yBAAyB,CAAA;AAClDA,UAAAA,yBAAyB,GAAG,CAAC,CAAA;UAC7BH,eAAe,GAAG,CAACQ,IAAI,CAAC,CAAA;AAC1B,SAAA;AAEF,OAAA;AACA,MAAA,IAAIS,QAAQ,KAAK,CAACzB,QAAQ,IAAIA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,IAAAA,QAAQ,CAAEC,cAAc,CAAC,EAAE;AACvDM,QAAAA,SAAS,EAAE,CAAA;AACXI,QAAAA,yBAAyB,GAAE,CAAC,CAAA;AAC5BH,QAAAA,eAAe,GAAG,EAAE,CAAA;AAEpBE,QAAAA,sBAAsB,GAAC,CAAC,CAAA;AAC1B,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;EACF,OAAO;AAACiB,IAAAA,GAAG,EAAElB,YAAY;AAAEmB,IAAAA,KAAK,EAACrB,SAAAA;GAAU,CAAA;AAC7C,CAAC,CAAA;AAED,MAAMsB,kBAAkB,GAAGA,CAACzB,KAAK,EAAEC,QAAQ,EAAEC,GAAG,EAAEwB,QAAQ,KAAK;EAC7D,MAAM;IAACH,GAAG;AAAEC,IAAAA,KAAAA;GAAM,GAAGzB,wBAAwB,CAACC,KAAK,EAAEC,QAAQ,GAAC,CAAC,EAAEC,GAAG,CAAC,CAAA;EACrE,IAAIsB,KAAK,GAAGE,QAAQ,EAAE;AACpB,IAAA,OAAO,IAAI,CAAA;AACb,GAAC,MAAM;AACL,IAAA,MAAMC,aAAa,GAAGF,kBAAkB,CAACzB,KAAK,EAAEuB,GAAG,GAAC,CAAC,EAAErB,GAAG,EAAEsB,KAAK,CAAC,CAAA;AAClE,IAAA,IAAIG,aAAa,KAAK,IAAI,IAAIJ,GAAG,KAAKI,aAAa,EAAE;MACnD,OAAOD,QAAQ,KAAKE,SAAS,GAAG3B,QAAQ,GAAG4B,IAAI,CAACC,IAAI,CAACP,GAAG,CAAC,CAAA;AAC3D,KAAC,MAAM;AACL,MAAA,OAAOI,aAAa,CAAA;AACtB,KAAA;AACF,GAAA;AACF,CAAC,CAAA;AAEM,MAAMI,mBAAmB,SAASC,KAAK,CAACC,SAAS,CAAC;EAAAC,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAAC,SAAA,CAAA,CAAA;IAAA,IAIvDC,CAAAA,YAAY,GAAG,KAAK,CAAA;IAAA,IAGpBC,CAAAA,MAAM,GAAIC,EAAE,IAAK;MACf,IAAI,CAACA,EAAE,GAAGA,EAAE,CAAA;MACZ,IAAIA,EAAE,IAAIC,QAAQ,CAAC,IAAI,CAACD,EAAE,CAACE,KAAK,CAACvC,QAAQ,EAAE,EAAE,CAAC,KAAKsC,QAAQ,CAAC,IAAI,CAACE,YAAY,EAAE,EAAE,CAAC,EAAE;QAClF,IAAI,CAACC,WAAW,EAAE,CAAA;AACpB,OAAA;KACD,CAAA;IAAA,IAEDA,CAAAA,WAAW,GAAIC,iBAAiB,IAAK;AACnC,MAAA,MAAMC,UAAU,GAAG,OAAOD,iBAAiB,KAAK,QAAQ,GAAGA,iBAAiB,CAACE,MAAM,IAAIF,iBAAiB,CAACE,MAAM,CAACC,MAAM,GAAG,KAAK,CAAA;AAC9H,MAAA,IAAIF,UAAU,EAAE,OAAA;AAChB,MAAA,MAAMG,iBAAiB,GAAGC,MAAM,CAACC,gBAAgB,CAAC,IAAI,CAACX,EAAE,CAAC,CAACY,UAAU,KAAK,KAAK,IAAIF,MAAM,CAACC,gBAAgB,CAAC,IAAI,CAACX,EAAE,CAAC,CAACa,UAAU,CAACC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACpJ,MAAA,IAAIL,iBAAiB,EAAE;AACrB,QAAA,IAAI,CAACT,EAAE,CAACE,KAAK,CAACW,UAAU,GAAG,oBAAoB,CAAA;QAC/C,IAAI,CAACf,YAAY,GAAG,IAAI,CAAA;AAC1B,OAAA;AACA,MAAA,IAAI,IAAI,CAACA,YAAY,IAAI,IAAI,CAACiB,KAAK,CAACC,aAAa,IAAIX,iBAAiB,KAAK,IAAI,IAAIY,QAAQ,CAACC,UAAU,KAAK,UAAU,EAAE;QACrH,IAAI,CAACpB,YAAY,GAAG,IAAI,CAAA;AAC1B,OAAC,MAAM;AACL,QAAA,OAAA;AACF,OAAA;MACA,IAAI,CAACE,EAAE,CAACE,KAAK,CAACiB,cAAc,CAAC,WAAW,CAAC,CAAA;MACzC,IAAI,IAAI,CAACJ,KAAK,CAACK,kBAAkB,KAAK,IAAI,IAAK,OAAO,IAAI,CAACL,KAAK,CAACK,kBAAkB,KAAK,UAAU,IAAI,IAAI,CAACL,KAAK,CAACK,kBAAkB,EAAG,EAAE;AACtI,QAAA,OAAA;AACF,OAAA;MAEA,IAAIC,QAAQ,EAAE,IAAI,IAAI,CAACrB,EAAE,CAACsB,iBAAiB,EAAE;AAC3C,QAAA,OAAA;AACF,OAAA;MAEA,MAAM;QAACC,WAAW;AAAEC,QAAAA,YAAAA;OAAa,GAAG,IAAI,CAACxB,EAAE,CAAA;MAC3C,IAAIuB,WAAW,IAAIC,YAAY,EAAE;AAC/B,QAAA,MAAMC,KAAK,GAAGR,QAAQ,CAACS,WAAW,EAAE,CAAA;QACpCD,KAAK,CAACE,QAAQ,CAAC,IAAI,CAAC3B,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1ByB,QAAAA,KAAK,CAACG,MAAM,CAAC,IAAI,CAAC5B,EAAE,EAAE,IAAI,CAACA,EAAE,CAAC6B,UAAU,CAAClD,MAAM,CAAC,CAAA;QAChD,IAAI8C,KAAK,CAACK,cAAc,EAAE,CAACnD,MAAM,IAAI,CAAC,EAAE;AACtC,UAAA,OAAA;AACF,SAAA;QACA,IAAIoD,WAAW,GAAG,CAAC,CAAA;AACnB,QAAA,IAAI,IAAI,CAAChB,KAAK,CAACiB,aAAa,EAAE;AAC5BD,UAAAA,WAAW,GAAG,IAAI,CAACE,WAAW,CAAC,IAAI,CAACjC,EAAE,EAAEwB,YAAY,EAAED,WAAW,EAAE,GAAG,EAAEA,WAAW,CAAC,CAAA;AACtF,SAAC,MAAM;UACL,IAAI;AACF,YAAA,MAAMW,SAAS,GAAGjB,QAAQ,CAACkB,aAAa,CAAC,QAAQ,CAAC,CAACC,UAAU,CAAC,IAAI,CAAC,CAAA;AACnE,YAAA,MAAMC,YAAY,GAAGpB,QAAQ,CAACqB,kBAAkB,CAAC,IAAI,CAACtC,EAAE,EAAEuC,UAAU,CAACC,SAAS,CAAC,CAAA;AAC/E,YAAA,MAAMC,IAAI,GAAG,IAAI,CAACzC,EAAE,CAAC0C,SAAS,CAAA;YAC9B,IAAIC,SAAS,GAAG,CAAC,CAAC,CAAA;AAClB,YAAA,IAAIC,IAAI,CAAA;YACR,MAAMlF,KAAK,GAAG,EAAE,CAAA;AAChB,YAAA,OAAOkF,IAAI,GAAGP,YAAY,CAAC/E,QAAQ,EAAE,EAAE;cACrC,MAAMuF,WAAW,GAAGD,IAAI,CAACE,WAAW,CAACC,OAAO,CAAE,KAAK,EAAE,GAAI,CAAC,CAAA;cAC1D,MAAMC,YAAY,GAAGP,IAAI,CAAC3B,OAAO,CAAC+B,WAAW,EAACF,SAAS,GAAC,CAAC,CAAC,CAAA;cAC1DjF,KAAK,CAACsB,IAAI,CAAC;gBACTX,IAAI,EAACqC,MAAM,CAACC,gBAAgB,CAACiC,IAAI,CAACK,aAAa,CAAC,CAAC5E,IAAI;gBACrDd,cAAc,EAACkF,IAAI,CAACO,YAAY,GAAC,CAAC,CAAC,KAAG,IAAI;AAC1CxF,gBAAAA,KAAK,EAACqF,WAAW,CAACK,KAAK,CAAC,GAAG,CAAA;AAC7B,eAAC,CAAC,CAAA;AACFP,cAAAA,SAAS,GAAGK,YAAY,CAAA;AAC1B,aAAA;YACAjB,WAAW,GAAG5C,kBAAkB,CAACzB,KAAK,EAAE6D,WAAW,EAAEW,SAAS,CAAC,CAAA;WAChE,CAAC,OAAOiB,CAAC,EAAE;AACVC,YAAAA,OAAO,CAACC,GAAG,CAACF,CAAC,CAAC,CAAA;AACdpB,YAAAA,WAAW,GAAGR,WAAW,CAAA;AAC3B,WAAA;AACF,SAAA;QAEA,IAAI,CAACvB,EAAE,CAACE,KAAK,CAACvC,QAAQ,GAAGoE,WAAW,GAAG,IAAI,CAAA;QAC3C,MAAM;AAACP,UAAAA,YAAY,EAAE8B,eAAAA;SAAgB,GAAG,IAAI,CAACtD,EAAE,CAAA;;AAE/C;QACA,IAAI,IAAI,CAACG,YAAY,EAAE;UACrB,IAAI,CAACH,EAAE,CAACE,KAAK,CAACvC,QAAQ,GAAG,IAAI,CAACwC,YAAY,GAAG,IAAI,CAAA;UACjD,MAAM;AAACqB,YAAAA,YAAY,EAAE+B,gBAAAA;WAAiB,GAAG,IAAI,CAACvD,EAAE,CAAA;AAChD,UAAA,IAAIsD,eAAe,KAAKC,gBAAgB,IAAI,IAAI,CAACpD,YAAY,IAAI,IAAI,CAACH,EAAE,CAACuB,WAAW,EAAE;AACpF;AACA;AACA;YACA,IAAI,CAACpB,YAAY,GAAG4B,WAAW,CAAA;YAC/B,IAAI,CAAC/B,EAAE,CAACE,KAAK,CAACvC,QAAQ,GAAG,IAAI,CAACwC,YAAY,GAAG,IAAI,CAAA;AACnD,WAAA;AACF,SAAC,MAAM;UACL,IAAI,CAACA,YAAY,GAAG4B,WAAW,CAAA;AACjC,SAAA;AACF,OAAA;KACD,CAAA;AAAA,IAAA,IAAA,CAEDE,WAAW,GAAG,CAACuB,OAAO,EAAEC,UAAU,EAAEC,SAAS,EAAEhD,MAAM,EAAEiD,aAAa,KAAK;MACvE,MAAMC,QAAQ,GAAGrE,IAAI,CAACN,GAAG,CAAC,CAAC,EAAEyE,SAAS,GAAGhD,MAAM,CAAC,CAAA;AAChD8C,MAAAA,OAAO,CAACtD,KAAK,CAACvC,QAAQ,GAAGiG,QAAQ,GAAG,IAAI,CAAA;MACxC,IAAIJ,OAAO,CAAChC,YAAY,KAAKiC,UAAU,IAAIC,SAAS,GAAG,EAAE,EAAE;AACzD,QAAA,OAAO,IAAI,CAACzB,WAAW,CAACuB,OAAO,EAAEC,UAAU,EAAEG,QAAQ,EAAElD,MAAM,EAAEiD,aAAa,CAAC,CAAA;AAC/E,OAAC,MAAM,IAAIjD,MAAM,GAAG,CAAC,EAAE;AACrB,QAAA,OAAO,IAAI,CAACuB,WAAW,CAACuB,OAAO,EAAEC,UAAU,EAAEC,SAAS,EAAEhD,MAAM,GAAG,CAAC,EAAEiD,aAAa,CAAC,CAAA;AACpF,OAAC,MAAM,IAAID,SAAS,GAAG,EAAE,EAAE;AACzB,QAAA,OAAOC,aAAa,GAAGD,SAAS,GAAGC,aAAa,GAAG,EAAE,CAAA;AACvD,OAAC,MAAM;QACL,OAAOD,SAAS,GAAG,CAAC,CAAA;AACtB,OAAA;KACD,CAAA;AAAA,GAAA;AAEDG,EAAAA,iBAAiBA,GAAG;IAClBnD,MAAM,CAACoD,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC1D,WAAW,CAAC,CAAA;AACvD,IAAA,IAAIa,QAAQ,CAACC,UAAU,KAAK,UAAU,EAAE;MACtC,IAAI,CAACd,WAAW,EAAE,CAAA;AACpB,KAAC,MAAM;MACLM,MAAM,CAACoD,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC1D,WAAW,CAAC,CAAA;MACjD,IAAIM,MAAM,CAACO,QAAQ,CAAC8C,KAAK,IAAIrD,MAAM,CAACO,QAAQ,CAAC8C,KAAK,CAACC,KAAK,IAAItD,MAAM,CAACO,QAAQ,CAAC8C,KAAK,CAACC,KAAK,CAACC,KAAK,EAAE;AAC7FvD,QAAAA,MAAM,CAACO,QAAQ,CAAC8C,KAAK,CAACC,KAAK,CAACC,KAAK,CAACC,CAAC,IAAIA,CAAC,CAAC,CAACC,IAAI,CAAC,MAAM;UACnDzD,MAAM,CAAC0D,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAChE,WAAW,CAAC,CAAA;AACpD,UAAA,IAAI,CAACA,WAAW,CAAC,IAAI,CAAC,CAAA;AACxB,SAAC,CAAC,CAAA;AACJ,OAAA;AACF,KAAA;AACF,GAAA;AAEAiE,EAAAA,oBAAoBA,GAAG;IACrB3D,MAAM,CAAC0D,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAChE,WAAW,CAAC,CAAA;IAC1DM,MAAM,CAAC0D,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAChE,WAAW,CAAC,CAAA;AACtD,GAAA;AAEAkE,EAAAA,kBAAkBA,GAAG;IACnB,IAAI,CAAClE,WAAW,EAAE,CAAA;AACpB,GAAA;EAEAmE,qBAAqBA,CAACC,SAAS,EAAE;IAC/B,MAAMC,UAAU,GAAGD,SAAS,CAACE,uBAAuB,IAAI,IAAI,CAAC3D,KAAK,CAAC2D,uBAAuB,IACxFF,SAAS,CAACE,uBAAuB,CAACC,MAAM,KAAK,IAAI,CAAC5D,KAAK,CAAC2D,uBAAuB,CAACC,MAAM,CAAA;AACxF,IAAA,MAAMC,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACN,SAAS,CAAC,CAACO,KAAK,CAACC,GAAG,IAAI,IAAI,CAACjE,KAAK,CAACiE,GAAG,CAAC,KAAKR,SAAS,CAACQ,GAAG,CAAC,IAAKP,UAAU,IAAIO,GAAG,KAAK,yBAA0B,CAAC,CAAA;AACnJ,IAAA,OAAO,CAACJ,cAAc,CAAA;AAExB,GAAA;AAEAK,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAAC,WAAA,GAAqE,IAAI,CAACnE,KAAK;AAAzE,MAAA;QAACoE,GAAG;QAAEC,SAAS;QAAEpE,aAAa;AAAEI,QAAAA,kBAAAA;AAA2B,OAAC,GAAA8D,WAAA;AAALG,MAAAA,IAAI,GAAAC,wBAAA,CAAAJ,WAAA,EAAAK,SAAA,CAAA,CAAA;AACjE,IAAA,oBAAO7F,KAAA,CAAAyC,aAAA,CAACgD,GAAG,EAAAK,QAAA,CAAA;MAACC,GAAG,EAAE,IAAI,CAAC1F,MAAAA;KAAYsF,EAAAA,IAAI,CAAE,CAAC,CAAA;AAC3C,GAAA;AACF,CAAA;AA9Ia5F,mBAAmB,CACvBiG,YAAY,GAAG;AACpBP,EAAAA,GAAG,EAAE,KAAA;AACP,CAAC,CAAA;AA6IH1F,mBAAmB,CAACkG,EAAE,GAAI5E,KAAK,iBAAKrB,KAAA,CAAAyC,aAAA,CAAC1C,mBAAmB,EAAA+F,QAAA,CAAA;AAACL,EAAAA,GAAG,EAAC,IAAA;AAAI,CAAKpE,EAAAA,KAAK,CAAE,CAAC,CAAA;AAC9EtB,mBAAmB,CAACmG,EAAE,GAAI7E,KAAK,iBAAKrB,KAAA,CAAAyC,aAAA,CAAC1C,mBAAmB,EAAA+F,QAAA,CAAA;AAACL,EAAAA,GAAG,EAAC,IAAA;AAAI,CAAKpE,EAAAA,KAAK,CAAE,CAAC;;;;"}
|