@startlibs/components 1.0.4 → 1.1.1

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.
Files changed (115) hide show
  1. package/lib/BasicBulletList.mjs +9 -0
  2. package/lib/BasicBulletList.mjs.map +1 -0
  3. package/lib/Button.mjs +95 -0
  4. package/lib/Button.mjs.map +1 -0
  5. package/lib/ContextMenu.mjs +452 -0
  6. package/lib/ContextMenu.mjs.map +1 -0
  7. package/lib/Dialog.mjs +232 -0
  8. package/lib/Dialog.mjs.map +1 -0
  9. package/lib/Draggable.mjs +880 -0
  10. package/lib/Draggable.mjs.map +1 -0
  11. package/lib/ErrorBoundary.mjs +108 -0
  12. package/lib/ErrorBoundary.mjs.map +1 -0
  13. package/lib/FillLastLineResizer.mjs +238 -0
  14. package/lib/FillLastLineResizer.mjs.map +1 -0
  15. package/lib/Flip.mjs +604 -0
  16. package/lib/Flip.mjs.map +1 -0
  17. package/lib/FlipList.mjs +186 -0
  18. package/lib/FlipList.mjs.map +1 -0
  19. package/lib/FormatDate.mjs +25 -0
  20. package/lib/FormatDate.mjs.map +1 -0
  21. package/lib/Icon.mjs +50 -0
  22. package/lib/Icon.mjs.map +1 -0
  23. package/lib/Image.mjs +41 -0
  24. package/lib/Image.mjs.map +1 -0
  25. package/lib/Link.mjs +116 -0
  26. package/lib/Link.mjs.map +1 -0
  27. package/lib/Loading.mjs +10 -0
  28. package/lib/Loading.mjs.map +1 -0
  29. package/lib/LoadingDiv.mjs +83 -0
  30. package/lib/LoadingDiv.mjs.map +1 -0
  31. package/lib/Notifications.mjs +63 -0
  32. package/lib/Notifications.mjs.map +1 -0
  33. package/lib/PageLoader.mjs +42 -0
  34. package/lib/PageLoader.mjs.map +1 -0
  35. package/lib/PersistentNotifications.mjs +130 -0
  36. package/lib/PersistentNotifications.mjs.map +1 -0
  37. package/lib/Popup.mjs +49 -0
  38. package/lib/Popup.mjs.map +1 -0
  39. package/lib/SplitColumnsContainer.mjs +43 -0
  40. package/lib/SplitColumnsContainer.mjs.map +1 -0
  41. package/lib/SwitchDiv.mjs +61 -0
  42. package/lib/SwitchDiv.mjs.map +1 -0
  43. package/lib/TextButton.mjs +41 -0
  44. package/lib/TextButton.mjs.map +1 -0
  45. package/lib/ToastNotifications.mjs +215 -0
  46. package/lib/ToastNotifications.mjs.map +1 -0
  47. package/lib/Tooltip.mjs +160 -0
  48. package/lib/Tooltip.mjs.map +1 -0
  49. package/lib/TransitionDiv.mjs +56 -0
  50. package/lib/TransitionDiv.mjs.map +1 -0
  51. package/lib/WarningDialog.mjs +84 -0
  52. package/lib/WarningDialog.mjs.map +1 -0
  53. package/lib/alt/buttons/OnClickLoadingButton.mjs +36 -0
  54. package/lib/alt/buttons/OnClickLoadingButton.mjs.map +1 -0
  55. package/lib/alt/dialogs/DialogWithImageHeader.mjs +14 -0
  56. package/lib/alt/dialogs/DialogWithImageHeader.mjs.map +1 -0
  57. package/lib/alt/dialogs/DialogWithSidebar.mjs +106 -0
  58. package/lib/alt/dialogs/DialogWithSidebar.mjs.map +1 -0
  59. package/lib/alt/dialogs/MobileBubbleDialog.mjs +49 -0
  60. package/lib/alt/dialogs/MobileBubbleDialog.mjs.map +1 -0
  61. package/lib/containers/DialogContainer.mjs +413 -0
  62. package/lib/containers/DialogContainer.mjs.map +1 -0
  63. package/lib/containers/Reposition.mjs +35 -0
  64. package/lib/containers/Reposition.mjs.map +1 -0
  65. package/lib/containers/usePositioning.mjs +294 -0
  66. package/lib/containers/usePositioning.mjs.map +1 -0
  67. package/lib/index.cjs +5000 -0
  68. package/lib/index.cjs.map +1 -0
  69. package/lib/index.mjs +37 -0
  70. package/lib/index.mjs.map +1 -0
  71. package/lib/useDialogWithToggle.mjs +18 -0
  72. package/lib/useDialogWithToggle.mjs.map +1 -0
  73. package/lib/willUseIsSticky.mjs +123 -0
  74. package/lib/willUseIsSticky.mjs.map +1 -0
  75. package/package.json +47 -30
  76. package/src/BasicBulletList.jsx +21 -0
  77. package/src/Button.jsx +288 -0
  78. package/src/ContextMenu.jsx +621 -0
  79. package/src/Dialog.jsx +413 -0
  80. package/src/Draggable.jsx +801 -0
  81. package/src/ErrorBoundary.jsx +75 -0
  82. package/src/FillLastLineResizer.jsx +226 -0
  83. package/src/Flip.jsx +560 -0
  84. package/src/FlipList.jsx +136 -0
  85. package/src/FormatDate.jsx +9 -0
  86. package/src/Icon.jsx +49 -0
  87. package/src/Image.jsx +23 -0
  88. package/src/Link.jsx +68 -0
  89. package/src/Loading.jsx +29 -0
  90. package/src/LoadingDiv.jsx +75 -0
  91. package/src/Notifications.jsx +89 -0
  92. package/src/PageLoader.jsx +48 -0
  93. package/src/PersistentNotifications.jsx +182 -0
  94. package/src/Popup.jsx +49 -0
  95. package/src/SplitColumnsContainer.jsx +63 -0
  96. package/src/SwitchDiv.jsx +30 -0
  97. package/src/TextButton.jsx +34 -0
  98. package/src/ToastNotifications.jsx +298 -0
  99. package/src/Tooltip.jsx +158 -0
  100. package/src/TransitionDiv.jsx +34 -0
  101. package/src/WarningDialog.jsx +70 -0
  102. package/src/alt/buttons/OnClickLoadingButton.jsx +16 -0
  103. package/src/alt/dialogs/DialogWithImageHeader.jsx +42 -0
  104. package/src/alt/dialogs/DialogWithSidebar.jsx +135 -0
  105. package/src/alt/dialogs/MobileBubbleDialog.jsx +56 -0
  106. package/src/containers/DialogContainer.jsx +423 -0
  107. package/src/containers/Reposition.jsx +24 -0
  108. package/src/containers/usePositioning.jsx +305 -0
  109. package/src/index.js +35 -0
  110. package/src/useDialogWithToggle.jsx +12 -0
  111. package/src/willUseIsSticky.jsx +113 -0
  112. package/.babelrc +0 -27
  113. package/lib/index.js +0 -5429
  114. package/rollup.config.js +0 -52
  115. 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":"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"}