@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.
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 +44 -29
  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":"Flip.mjs","sources":["../src/Flip.jsx"],"sourcesContent":["import React, {useLayoutEffect} from 'react'\nimport _ from 'lodash/fp'\nimport {_s, animationTiming, callIfFunction, oneWayAnimation} from '@startlibs/utils'\nimport {useConstant, useHiddenFill, willUseSharedCallback} from '@startlibs/core'\nimport {ifUndefined} from '@startlibs/utils'\n\nconst getMargins = (domNode) => {\n const {marginTop,marginLeft,marginBottom,marginRight,paddingTop} = window.getComputedStyle(domNode);\n return {marginTop,marginLeft,marginBottom,marginRight,paddingTop}\n}\n\nconst getParentProperties = (parentNode) => {\n if (!parentNode) return {}\n const {marginTop,marginLeft,marginBottom,marginRight,paddingBottom,paddingTop} = window.getComputedStyle(parentNode);\n return {parentStyle:{marginTop,marginLeft,marginBottom,marginRight,paddingBottom,paddingTop},parentNode}\n\n}\n\nexport const toPosition = (domNode, parentRect = (domNode.offsetParent ? domNode.offsetParent.getBoundingClientRect() : {\n top: 0,\n left: 0\n}), {allowFixed, finalPosition,withMargins} = {}) => {\n if ((!allowFixed && domNode.style.position === 'fixed') || domNode.style.display === 'none') return\n const {left, top, height, width} = domNode.getBoundingClientRect()\n const margins = withMargins ? getMargins(domNode) : {}\n\n // const {offsetLeft, offsetTop} = domNode\n return {\n domNode,\n nextSibling: domNode.nextSibling,\n top: finalPosition ? domNode.offsetTop : (top - parentRect.top),\n left: finalPosition ? domNode.offsetLeft : (left - parentRect.left),\n height, width,\n ...getParentProperties(domNode.parentNode),\n ...margins\n }\n}\n\nconst sumWithPx = (...args) => args.map(parseFloat).reduce((a, b) => a + b, 0) + 'px'\n\nconst childMAp = (childs, fn) => {\n for (var c of childs) {\n fn(c)\n }\n}\n\nexport const defaultAnimationMaker = animationTiming('0.25s ease-out')\nconst defaultEnterAnimation = oneWayAnimation('opacity: 0;', 'opacity: 1;')\nconst defaultSwitchAnimation = oneWayAnimation(`opacity: 1;`, `opacity: 0;`, `opacity: 0;`)\n\nconst SHORT_ANIMATIONS = {\n fadeIn: defaultEnterAnimation\n}\nconst applyDefault = (k) => SHORT_ANIMATIONS[k] || k\n\nexport const formatAnimation = (animationName /* array or string or fn with array or string*/, animationTimer /* string or fn */, reverse) => {\n const animationMaker = typeof animationTimer === 'string' ? ((k) => k + ' ' + animationTimer) : animationTimer\n const animationNameExecuted = typeof animationName === 'function' ? animationName() : animationName\n const keyframes = [].concat(typeof animationNameExecuted === 'string' ? animationNameExecuted.split(',') : animationNameExecuted)\n const applyReverse = (k) => reverse ? k + ' reverse' : k\n return keyframes.map(k => applyReverse(k.trim().indexOf(' ') < 0 ? animationMaker(k) : applyDefault(k))).join(', ')\n}\n\nconst cloneWrapper = (element) => {\n const cloned = element.cloneNode(true)\n const tempWrapper = document.createElement('div');\n [].slice.call(cloned.childNodes).forEach(c => tempWrapper.append(c))\n const {display, width, height, padding, borderLeftWidth, borderRightWidth, borderBottomWidth, borderTopWidth} = window.getComputedStyle(element)\n Object.assign(tempWrapper.style, {\n display,\n width: sumWithPx(width, '-' + borderLeftWidth, '-' + borderRightWidth),\n height: sumWithPx(height, '-' + borderBottomWidth, '-' + borderTopWidth),\n padding,\n position: 'absolute',\n top: 0,\n left: 0\n })\n return tempWrapper\n}\n\nconst morphingEndEvents = new Map()\nconst morphTime = new Map()\nconst continueSwitchCallbacks = new Map()\n\nconst continueSwitchOnClone = (oldWrapper) => (newWrapper) => {\n const prevOldClone = oldWrapper.querySelector('.JS-old-snap')\n const prevNewClone = oldWrapper.querySelector('.JS-new-snap')\n const oldClone = newWrapper.querySelector('.JS-old-snap')\n const newClone = newWrapper.querySelector('.JS-new-snap')\n oldClone.style.animationDelay = getDelays(prevOldClone, oldClone.style.animation)\n newClone.style.animationDelay = getDelays(prevNewClone, newClone.style.animation)\n morphTime.set(oldClone, morphTime.get(prevOldClone))\n morphTime.set(newClone, morphTime.get(prevNewClone))\n oldClone.addEventListener('animationend', oldClone.remove)\n newClone.addEventListener('animationend', finishSwitchNew(newClone, newWrapper))\n continueSwitchCallbacks.delete(oldWrapper)\n continueSwitchCallbacks.set(newWrapper, continueSwitchOnClone(newWrapper))\n}\n\nconst finishSwitchNew = (clone, wrapper) => () => {\n clone.remove()\n const newChildren = [].slice.call(wrapper.children)\n childMAp(newChildren, c => {\n if (c.dataset) {\n // Guard against stale \"0\" from a prior uncompleted cycle: always restore\n // to empty when prev is \"0\" since \"0\" is never a legitimate captured value.\n const prev = c.dataset.prevOpacity\n c.style.opacity = (prev && prev !== '0') ? prev : ''\n }\n })\n // wrapper.style.willChange = ''\n continueSwitchCallbacks.delete(wrapper)\n}\nconst supportsEvent = \"onanimationend\" in HTMLElement.prototype\nexport const morph = (node, animation, callback) => {\n if (!animation) {return}\n const [cachedAnimation, cachedCallback] = morphingEndEvents.get(node) || []\n const oldAnimation = cachedAnimation || node.style.animation\n morphTime.set(node, Date.now())\n const didNotStartPromise = Promise\n .race([\n new Promise(res => node.addEventListener('animationstart', res)),\n new Promise((res,rej) => setTimeout(rej,supportsEvent? 1000 : 200)),\n ])\n\n node.style.animation = animation\n if (!cachedCallback) {\n const end = ({target}) => {\n if (target !== node) return\n morphTime.delete(node)\n morphingEndEvents.delete(node)\n node.removeEventListener('animationend', end)\n callback && callback()\n node.style.animation = oldAnimation\n }\n didNotStartPromise\n .catch(() => end({target:node}))\n node.addEventListener('animationend', end)\n morphingEndEvents.set(node, [oldAnimation, end])\n }\n}\n\nconst hasClientRectChanged = (oldSnap, newSnap) => !['top', 'left', 'height', 'width'].every(_ => oldSnap[_] === newSnap[_])\n\nexport const getClientRectAnimation = (oldSnap, newSnap, {skipTransform, smallJumpFix } = {}) => {\n if (oldSnap && newSnap && hasClientRectChanged(oldSnap, newSnap)) {\n const node = newSnap.domNode\n const {offsetLeft, offsetTop, scrollHeight, clientHeight, scrollWidth, clientWidth} = node\n const scrollTop = (node.parentNode && node.parentNode.scrollTop) || 0\n const scrollLeft = (node.parentNode && node.parentNode.scrollLeft) || 0\n const left = oldSnap.left - offsetLeft + scrollLeft\n const top = oldSnap.top - offsetTop + scrollTop\n const deltaHeight = oldSnap.height - newSnap.height\n let heightFix = ''\n let finalPadding = ''\n if (deltaHeight > 0) {\n const {paddingBottom} = window.getComputedStyle(node)\n finalPadding = 'padding-bottom:' + paddingBottom + ';'\n heightFix = `padding-bottom: ${sumWithPx(deltaHeight, paddingBottom) + (smallJumpFix || 0)};`\n }\n const overflowFix = scrollHeight > clientHeight || scrollWidth > clientWidth ? `overflow: hidden;` : ``\n const transform = ((left !== 0 || top !== 0) && !skipTransform) ? `transform: translate(${left}px,${top}px);` : ''\n const parentPaddingTopDelta = (parseInt(oldSnap.parentStyle?.paddingTop) || 0) - (parseInt(newSnap.parentStyle?.paddingTop) || 0)\n const parentPaddingBottomDelta = (parseInt(oldSnap.parentStyle?.paddingBottom) || 0) - (parseInt(newSnap.parentStyle?.paddingBottom) || 0)\n const oldMarginTop = (parseInt(oldSnap.marginTop) || 0) + parentPaddingTopDelta\n const oldMarginBottom = (parseInt(oldSnap.marginBottom) || 0) + parentPaddingBottomDelta\n\n const oldTransform = node.style.transform\n return [oneWayAnimation(`\n ${transform}\n ${heightFix}\n ${overflowFix}\n margin-top: ${oldMarginTop}px;\n margin-bottom: ${oldMarginBottom}px;\n width: ${oldSnap.width}px;\n height: ${Math.max(0,oldSnap.height+(smallJumpFix || 0))}px;\n `, `\n ${finalPadding}\n ${oldTransform ? `transform:${oldTransform};` : ''}\n ${overflowFix}\n margin-top:${parseInt(newSnap.marginTop) || 0}px;\n margin-bottom:${parseInt(newSnap.marginBottom) || 0}px;\n width: ${newSnap.width}px;\n height: ${Math.max(0,newSnap.height+(smallJumpFix || 0))}px;\n `)]\n } else {\n return []\n }\n}\n\nconst getClientRectAnimationForSwitch = (oldSnap, newSnap, {skipTransform } = {}) => {\n if (hasClientRectChanged(oldSnap, newSnap)) {\n const node = newSnap.domNode\n const {offsetLeft, offsetTop, scrollHeight, clientHeight, scrollWidth, clientWidth} = node\n const scrollTop = node.parentNode?.scrollTop || 0\n const scrollLeft = node.parentNode?.scrollLeft || 0\n\n\n // get margin-bottom\n const prevBorder = node.style.border\n node.style.border = '1px solid transparent'\n const borderHeight = node.clientHeight\n node.style.border = prevBorder\n\n // get negative margin top\n const prevPadding = newSnap.paddingTop\n const nonPaddingFixTop = newSnap.clonedNode.getBoundingClientRect().top\n let topWithPaddingFix = nonPaddingFixTop\n if (!parseInt(prevPadding)) {\n node.style.paddingTop = '1px'\n topWithPaddingFix = newSnap.clonedNode.getBoundingClientRect().top\n node.style.paddingTop = ''\n }\n\n const newSnapNegativeTopMarginDelta = topWithPaddingFix - nonPaddingFixTop\n const newSnapBottomMarginDelta = clientHeight - borderHeight\n\n const left = oldSnap.left - offsetLeft + scrollLeft\n const top = oldSnap.top - offsetTop + scrollTop - newSnapNegativeTopMarginDelta\n\n\n const deltaHeight = oldSnap.height - newSnap.height\n let heightFix = ''\n let finalPadding = ''\n if (deltaHeight > 0) {\n const {paddingBottom} = window.getComputedStyle(node)\n finalPadding = 'padding-bottom:' + paddingBottom + ';'\n heightFix = `padding-bottom: ${sumWithPx(deltaHeight, paddingBottom)};`\n }\n const overflowFix = scrollHeight > clientHeight || scrollWidth > clientWidth ? `overflow: hidden;` : ``\n const transform = ((left !== 0 || top !== 0) && !skipTransform) ? `transform: translate(${left}px,${top}px);` : ''\n\n\n const oldTransform = node.style.transform\n return [oneWayAnimation(`\n ${transform}\n ${heightFix}\n ${overflowFix}\n width: ${oldSnap.width}px;\n height: ${oldSnap.height}px;\n `, `\n ${finalPadding}\n ${oldTransform ? `transform:${oldTransform};` : ''}\n ${overflowFix}\n width: ${newSnap.width}px;\n height: ${(newSnap.height - newSnapBottomMarginDelta)}px;\n `)]\n } else {\n return []\n }\n}\n\nconst willPlaySwitch = (oldSnap, newSnap, {switchIn, switchOut, switchAnimation, timing, transformHeight = _.identity}) => {\n const realWrapper = newSnap.domNode\n const newChildren = [].slice.call(realWrapper.children)\n // realWrapper.style.willChange = 'width,height,margin-top;'\n if (realWrapper.firstChild) {\n realWrapper.insertBefore(oldSnap.clonedNode, realWrapper.firstChild)\n realWrapper.insertBefore(newSnap.clonedNode, realWrapper.firstChild)\n } else {\n realWrapper.append(oldSnap.clonedNode)\n realWrapper.append(newSnap.clonedNode)\n }\n\n oldSnap.clonedNode.className = oldSnap.clonedNode.className + ' JS-old-snap'\n newSnap.clonedNode.className = newSnap.clonedNode.className + ' JS-new-snap'\n // newSnap.clonedNode.style.willChange = 'width,height,opacity'\n // oldSnap.clonedNode.style.willChange = 'width,height,opacity'\n const realWrapperRect = realWrapper.getBoundingClientRect()\n const resizeToNew = oneWayAnimation(`\n overflow: hidden;\n width: ${oldSnap.width}px;\n height: ${oldSnap.height}px;\n `, `\n overflow: hidden;\n width: ${newSnap.clonedNode.style.width};\n height: ${callIfFunction(transformHeight,newSnap.clonedNode.style.height,realWrapperRect)};\n `)\n\n childMAp(newChildren, c => {\n if (c.dataset && !c.dataset.noFlip) {\n // Don't capture \"0\" as prevOpacity — it's always a transient value from\n // a prior uncompleted willPlaySwitch. Otherwise finishSwitchNew restores\n // opacity to \"0\" permanently, leaving content invisible.\n if (c.style.opacity && c.style.opacity !== '0') {\n c.dataset.prevOpacity = c.style.opacity\n }\n c.style.opacity = '0'\n }\n })\n childMAp([].slice.call(oldSnap.clonedNode.children), c => {\n if (c.dataset && c.dataset.noFlip) {\n c.style.opacity = '0'\n }\n })\n\n const resizeOld = (oldSnap.width > newSnap.width || oldSnap.height > newSnap.height) ? [resizeToNew] : [resizeToNew]\n const resizeNew = (oldSnap.width < newSnap.width || oldSnap.height < newSnap.height) ? [resizeToNew] : [resizeToNew]\n\n return () => {\n morph(oldSnap.clonedNode,\n formatAnimation([].concat(switchOut || switchAnimation, resizeOld), timing),\n () => oldSnap.clonedNode.remove()\n )\n newSnap.clonedNode.style.opacity = '0'\n continueSwitchCallbacks.set(realWrapper, continueSwitchOnClone(realWrapper))\n\n morph(newSnap.clonedNode,\n formatAnimation([formatAnimation(\n switchIn || switchAnimation,\n timing,\n !switchIn\n )].concat(resizeNew), timing),\n finishSwitchNew(newSnap.clonedNode, realWrapper)\n )\n }\n}\n\n\nconst getDelays = (el, animation) => {\n const delayStr = (morphTime.get(el) - Date.now()) + 'ms'\n return animation.split(',').map(_ => delayStr).join(',')\n}\n\nclass Snapshoter extends React.Component {\n\n getSnapshotBeforeUpdate(oldProps) {\n if (oldProps.on !== this.props.on) {\n console.log('on', 'UHUL')\n } else if (oldProps.moveOn !== this.props.moveOn) {\n console.log('moveOn', 'UHUL')\n }\n return null\n }\n\n render() {\n return null\n }\n}\n\nexport const useFlip = ({on, moveOn}) => {\n useHiddenFill(<Snapshoter on={on} moveOn={moveOn} callback={console.log}/>)\n}\n\nconst getAnimationNames = (animation) => animation.split(',').map(_ => _.replace(/\\s*(\\S+).*/, '$1'))\n\nexport const willUseFlip = () => {\n\n let controlElement = null\n let morphEnabled = false\n const disableMorph = () => {\n controlElement = null\n morphEnabled = false\n }\n const [useRegisterEnter, enterChildrenCallback] = willUseSharedCallback(useLayoutEffect)\n const [useRegisterLeave, leaveChildrenCallback] = willUseSharedCallback(useLayoutEffect)\n const [useRegisterMorph, morphChildrenCallback, getSize] = willUseSharedCallback(useLayoutEffect)\n\n\n const useEnterAnimation = (ref, onEnter = defaultEnterAnimation, {onEnterEnd, timing = defaultAnimationMaker, enterEffect} = {}) => {\n useLayoutEffect(() => {\n if (!morphEnabled && onEnter && ref.current) {\n const el = ref.current\n const animation = formatAnimation(onEnter, timing)\n const endEffect = callIfFunction(enterEffect,el)\n morph(\n el,\n animation,\n () => {\n callIfFunction(onEnterEnd)\n callIfFunction(endEffect,el)\n }\n )\n enterChildrenCallback(timing)\n }\n }, [onEnter])\n }\n\n const useLeaveAnimation = (ref, onLeave = defaultEnterAnimation, {ref: removeRef, leaveEffect, timing = defaultAnimationMaker, nestedFlip = false, events = {}, reverse = true} = {}) => {\n useLayoutEffect(() => () => {\n if (onLeave && ref.current) {\n const el = ref.current\n const animation = formatAnimation(onLeave, timing, reverse)\n // on leave animations require a clone, as the real node will be intantaneousy removed by react\n leaveChildrenCallback(timing)\n const isNested = callIfFunction(nestedFlip)\n const clone = isNested ? el : el.cloneNode(true)\n _s.each((callback, type) => clone.addEventListener(type, callback), events)\n\n const endEffect = callIfFunction(leaveEffect,clone,el)\n\n if (removeRef) { removeRef.current = clone }\n if (!isNested) {\n el.parentNode.insertBefore(clone, el)\n }\n // sometimes the clone may need to trigger events (usual case: onmouseover to reopen the element)\n\n // allow clone to be continued by another animation\n controlElement = clone\n // the animation\n const animate = () => {\n morph(\n clone,\n animation,\n () => {\n clone.remove()\n disableMorph()\n callIfFunction(endEffect,clone,el)\n }\n )\n }\n\n // wait for current animation to end and then animate\n if (clone.style.animation) {\n const maxAnimationTime = _.max((clone.style.animationDuration.split(\",\") || [\"0.25s\"]).map(s => parseFloat(s.trim() || \"0.25\") * (s.indexOf(\"m\")>0 ? 1 : 1000)))\n const timeoutRef = {}\n const animationEnd = (e) => {\n clearTimeout(timeoutRef.current || -1)\n clone.removeEventListener('animationend', animationEnd)\n clone.style.animationDelay = ''\n e?.stopImmediatePropagation()\n setTimeout(animate, 1)\n }\n timeoutRef.current = setTimeout(animationEnd,maxAnimationTime)\n clone.addEventListener('animationend', animationEnd)\n\n clone.style.animationDelay = getDelays(el, clone.style.animation)\n } else {\n animate()\n }\n }\n }, [onLeave])\n }\n\n const useMorphAnimation = (ref, ready = true, {timing = defaultAnimationMaker} = {}) => {\n useLayoutEffect(() => {\n if (ready && controlElement && ref.current) {\n // const controlElement =getControlElement()\n const el = ref.current\n const animation = oneWayAnimation(`opacity:${window.getComputedStyle(controlElement).opacity};`, `opacity: 1`)\n const oldSnap = {\n ...toPosition(controlElement, undefined, {allowFixed: true}),\n clonedNode: cloneWrapper(controlElement)\n }\n const newSnap = {...toPosition(el, undefined, {allowFixed: true}), clonedNode: cloneWrapper(el)}\n const rectAnimation = getClientRectAnimation(oldSnap, newSnap)\n morph(newSnap.domNode, formatAnimation(rectAnimation.concat(animation), timing), disableMorph)\n morphChildrenCallback((executeAnimation) => executeAnimation(timing))\n if (rectAnimation.length) {\n willPlaySwitch(oldSnap, newSnap, {switchAnimation: defaultSwitchAnimation, timing})()\n }\n controlElement.remove()\n disableMorph()\n }\n return () => {\n morphEnabled = true\n // continue existing switch animation on the clone\n if (continueSwitchCallbacks.has(ref.current)) {\n continueSwitchCallbacks.get(ref.current)(controlElement)\n }\n }\n }, [ready])\n }\n\n const useNestedEnterAnimation = (ref, onEnter, {timing} = {}) => {\n useRegisterEnter((parentTiming) => {\n const el = ref.current\n const animation = formatAnimation(onEnter, timing || parentTiming)\n morph(el, animation)\n return getAnimationNames(animation)\n })\n }\n const useNestLeaveAnimation = (ref, onLeave, {timing, events} = {}) => {\n useRegisterLeave((parentTiming) => {\n const el = ref.current\n const animation = formatAnimation(onLeave, timing || parentTiming)\n morph(el, animation)\n return getAnimationNames(animation)\n })\n }\n\n const willUseNestedMorphAnimation = () => {\n const morphId = _.uniqueId('JS-')\n return (ref) => {\n useLayoutEffect(() => {\n if (ref.current?.dataset) {\n ref.current.dataset.morphId = morphId\n }\n })\n const executeAnimation = useConstant((timing) => {\n const prev = controlElement.querySelector(`[data-morph-id='${morphId}']`)\n const next = ref.current\n if (next.dataset) {\n next.dataset.noFlip = true\n }\n next.style.opacity = '1'\n const prevPos = prev.getBoundingClientRect()\n const nextPos = next.getBoundingClientRect()\n const originalTransform = next.style.transform || ''\n const deltaX = Math.round(nextPos.left - prevPos.left)\n const deltaY = Math.round(nextPos.top - prevPos.top)\n const newLeft = deltaX > 0 ? -deltaX : -deltaX\n const animation = oneWayAnimation(`\n transform: translate(${newLeft}px,${deltaY}px) ${originalTransform};\n `, `\n transform: translate(0,0) ${originalTransform};\n `)\n morph(next, formatAnimation(animation, timing))\n })\n useRegisterMorph(executeAnimation)\n }\n }\n\n return [[useEnterAnimation, useLeaveAnimation, useMorphAnimation], [useNestedEnterAnimation, useNestLeaveAnimation], willUseNestedMorphAnimation]\n}\n\nexport const willUseFlipSwitch = () => {\n let oldSnap = null\n const getTempWrapper = (parent,positionConfig = {}) => {\n const tempWrapper = cloneWrapper(parent)\n return {...toPosition(parent,undefined,positionConfig), clonedNode: tempWrapper}\n }\n\n return (ref, onEnter, onLeave, {timing = defaultAnimationMaker, switchAnimation = defaultSwitchAnimation, effect} = {}) => {\n useLayoutEffect(() => {\n if (oldSnap && ref.current) {\n const newSnap = getTempWrapper(ref.current,{withMargins:true})\n let switchToPlay = _.identity\n if (oldSnap.clonedNode) {\n switchToPlay = willPlaySwitch(oldSnap, newSnap, {\n switchIn: callIfFunction(onEnter),\n switchOut: callIfFunction(onLeave),\n switchAnimation: callIfFunction(switchAnimation),\n timing\n })\n }\n const animation = getClientRectAnimationForSwitch(oldSnap, newSnap)\n const endEffect = callIfFunction(effect,oldSnap.clonedNode,newSnap.clonedNode,ref.current)\n switchToPlay()\n morph(newSnap.domNode, formatAnimation(animation, timing), () => callIfFunction(endEffect,oldSnap.clonedNode,newSnap.clonedNode))\n }\n return () => {\n oldSnap = getTempWrapper(ref.current,{withMargins:true})\n }\n }, [])\n }\n}\n\nconst flipHooks = willUseFlip()\nconst useFlipEnter = flipHooks[0][0]\nconst useFlipLeave = flipHooks[0][1]\nexport {useFlipEnter, useFlipLeave}\n\nexport const useFlipAnimation = (ref, onEnterOrBoth, onLeaveOrIgnore = true, config = {}) => {\n const onEnter = ifUndefined(onEnterOrBoth && onEnterOrBoth.onEnter,onEnterOrBoth)\n const onLeave = ifUndefined(onEnterOrBoth && onEnterOrBoth.onLeave,onLeaveOrIgnore)\n useFlipEnter(ref, onEnter, config)\n useFlipLeave(ref, onLeave === true ? onEnter : onLeave, {...config, reverse: onLeave === true})\n}\n\n"],"names":["getMargins","domNode","marginTop","marginLeft","marginBottom","marginRight","paddingTop","window","getComputedStyle","getParentProperties","parentNode","paddingBottom","parentStyle","toPosition","parentRect","arguments","length","undefined","offsetParent","getBoundingClientRect","top","left","allowFixed","finalPosition","withMargins","style","position","display","height","width","margins","_objectSpread","nextSibling","offsetTop","offsetLeft","sumWithPx","_len","args","Array","_key","map","parseFloat","reduce","a","b","childMAp","childs","fn","c","defaultAnimationMaker","animationTiming","defaultEnterAnimation","oneWayAnimation","defaultSwitchAnimation","SHORT_ANIMATIONS","fadeIn","applyDefault","k","formatAnimation","animationName","animationTimer","reverse","animationMaker","animationNameExecuted","keyframes","concat","split","applyReverse","trim","indexOf","join","cloneWrapper","element","cloned","cloneNode","tempWrapper","document","createElement","slice","call","childNodes","forEach","append","padding","borderLeftWidth","borderRightWidth","borderBottomWidth","borderTopWidth","Object","assign","morphingEndEvents","Map","morphTime","continueSwitchCallbacks","continueSwitchOnClone","oldWrapper","newWrapper","prevOldClone","querySelector","prevNewClone","oldClone","newClone","animationDelay","getDelays","animation","set","get","addEventListener","remove","finishSwitchNew","delete","clone","wrapper","newChildren","children","dataset","prev","prevOpacity","opacity","supportsEvent","HTMLElement","prototype","morph","node","callback","cachedAnimation","cachedCallback","oldAnimation","Date","now","didNotStartPromise","Promise","race","res","rej","setTimeout","end","_ref","target","removeEventListener","catch","hasClientRectChanged","oldSnap","newSnap","every","_","getClientRectAnimation","skipTransform","smallJumpFix","_oldSnap$parentStyle","_newSnap$parentStyle","_oldSnap$parentStyle2","_newSnap$parentStyle2","scrollHeight","clientHeight","scrollWidth","clientWidth","scrollTop","scrollLeft","deltaHeight","heightFix","finalPadding","overflowFix","transform","parentPaddingTopDelta","parseInt","parentPaddingBottomDelta","oldMarginTop","oldMarginBottom","oldTransform","Math","max","getClientRectAnimationForSwitch","_node$parentNode","_node$parentNode2","prevBorder","border","borderHeight","prevPadding","nonPaddingFixTop","clonedNode","topWithPaddingFix","newSnapNegativeTopMarginDelta","newSnapBottomMarginDelta","willPlaySwitch","_ref2","switchIn","switchOut","switchAnimation","timing","transformHeight","_identity","realWrapper","firstChild","insertBefore","className","realWrapperRect","resizeToNew","callIfFunction","noFlip","resizeOld","resizeNew","el","delayStr","Snapshoter","React","Component","getSnapshotBeforeUpdate","oldProps","on","props","console","log","moveOn","render","useFlip","_ref3","useHiddenFill","getAnimationNames","replace","willUseFlip","controlElement","morphEnabled","disableMorph","useRegisterEnter","enterChildrenCallback","willUseSharedCallback","useLayoutEffect","useRegisterLeave","leaveChildrenCallback","useRegisterMorph","morphChildrenCallback","getSize","useEnterAnimation","ref","onEnter","onEnterEnd","enterEffect","current","endEffect","useLeaveAnimation","onLeave","removeRef","leaveEffect","nestedFlip","events","isNested","_s","each","type","animate","maxAnimationTime","_max","animationDuration","s","timeoutRef","animationEnd","e","clearTimeout","stopImmediatePropagation","useMorphAnimation","ready","rectAnimation","executeAnimation","has","useNestedEnterAnimation","parentTiming","useNestLeaveAnimation","willUseNestedMorphAnimation","morphId","_uniqueId","_ref$current","useConstant","next","prevPos","nextPos","originalTransform","deltaX","round","deltaY","newLeft","willUseFlipSwitch","getTempWrapper","parent","positionConfig","effect","switchToPlay","flipHooks","useFlipEnter","useFlipLeave","useFlipAnimation","onEnterOrBoth","onLeaveOrIgnore","config","ifUndefined"],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
+ import React from 'react';
4
+ import ReactDOM from 'react-dom';
5
+ import { getClientRectAnimation, morph, formatAnimation, toPosition, defaultAnimationMaker } from './Flip.mjs';
6
+ import { callIfFunction, oneWayAnimation } from '@startlibs/utils';
7
+
8
+ const _excluded = ["children", "as", "play", "on", "onStartAnimation", "onEndAnimation"];
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ class FlipList extends React.Component {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.play = (oldSnap, newSnap) => {
15
+ var _newSnap$parent;
16
+ const {
17
+ animation,
18
+ insertAnimation,
19
+ removeAnimation,
20
+ onEndAnimation,
21
+ onStartAnimation,
22
+ effect,
23
+ skipChromeFix,
24
+ timing,
25
+ skipParentMorph
26
+ } = this.props;
27
+ newSnap.children.forEach(newItemSnap => {
28
+ const oldItemSnap = oldSnap.children.get(newItemSnap.domNode);
29
+ if (!oldItemSnap) return;
30
+ const rectAnimation = getClientRectAnimation(oldItemSnap, newItemSnap);
31
+ morph(newItemSnap.domNode, formatAnimation(rectAnimation, timing));
32
+ });
33
+ if (newSnap.children.size > oldSnap.children.size) {
34
+ const newItems = Array.from(newSnap.children.values()).filter(item => !oldSnap.children.has(item.domNode));
35
+ newItems.forEach(newItem => {
36
+ morph(newItem.domNode, formatAnimation(insertAnimation || animation, timing, !insertAnimation));
37
+ });
38
+ } else if (newSnap.children.size < oldSnap.children.size) {
39
+ const oldItems = Array.from(oldSnap.children.values()).filter(item => !newSnap.children.has(item.domNode));
40
+ oldItems.forEach(oldItem => {
41
+ const reinserted = this.reinsertSnap(oldItem, oldSnap.scrollTop - newSnap.scrollTop, oldItems);
42
+ if (!reinserted) {
43
+ return;
44
+ }
45
+ new Promise(res => {
46
+ morph(oldItem.domNode, formatAnimation(removeAnimation || animation, timing), res);
47
+ setTimeout(res, 1500);
48
+ }).then(() => {
49
+ oldItem.domNode.remove();
50
+ });
51
+ });
52
+ }
53
+ const rectAnimation = getClientRectAnimation(oldSnap.parent, newSnap.parent, {
54
+ skipTransform: true,
55
+ smallJumpFix: this.props.smallJumpFix
56
+ });
57
+ if ((_newSnap$parent = newSnap.parent) !== null && _newSnap$parent !== void 0 && _newSnap$parent.domNode && !skipParentMorph) {
58
+ const endEffect = callIfFunction(effect, newSnap.parent.domNode, {
59
+ newSnap,
60
+ oldSnap
61
+ });
62
+ callIfFunction(onStartAnimation);
63
+ morph(newSnap.parent.domNode, formatAnimation(rectAnimation, timing), endEffect || onEndAnimation);
64
+ }
65
+ };
66
+ this.reinsertSnap = (item, scrollDelta, allChildren) => {
67
+ if (item.nextSibling) {
68
+ var _item$nextSibling$par;
69
+ if (!item.nextSibling.parentNode) {
70
+ const next = allChildren.find(possible => item.nextSibling === possible.domNode);
71
+ if (next) {
72
+ return this.reinsertSnap(_objectSpread(_objectSpread({}, item), {}, {
73
+ nextSibling: next.nextSibling
74
+ }), scrollDelta, allChildren);
75
+ }
76
+ return false;
77
+ }
78
+ (_item$nextSibling$par = item.nextSibling.parentNode) === null || _item$nextSibling$par === void 0 || _item$nextSibling$par.insertBefore(item.domNode, item.nextSibling);
79
+ } else {
80
+ item.parentNode.appendChild(item.domNode);
81
+ }
82
+ const {
83
+ width,
84
+ height
85
+ } = item.domNode.getBoundingClientRect();
86
+ item.domNode.style.left = item.domNode.offsetLeft + 'px';
87
+ item.domNode.style.top = item.domNode.offsetTop - scrollDelta + 'px';
88
+ if (!this.props.anchoredDownList) {
89
+ item.domNode.style.marginTop = 0;
90
+ }
91
+ item.domNode.style.marginLeft = 0;
92
+ item.domNode.style.width = width + 'px';
93
+ item.domNode.style.height = height + 'px';
94
+ item.domNode.style.position = 'absolute';
95
+ callIfFunction(this.props.onReinsert, item.domNode, item);
96
+ return true;
97
+ };
98
+ this.getParents = () => {
99
+ const node = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this);
100
+ const {
101
+ parentNode,
102
+ offsetParent: possibleOffsetParent
103
+ } = node;
104
+ const offsetParent = possibleOffsetParent || (window.getComputedStyle(parentNode).position !== 'static' ? parentNode : parentNode.offsetParent);
105
+ if (!offsetParent) return {};
106
+ const parentRect = offsetParent.getBoundingClientRect();
107
+ return {
108
+ offsetParent,
109
+ parentNode,
110
+ parentRect
111
+ };
112
+ };
113
+ this.calculatePositionForAnimation = lockedParentRect => {
114
+ const {
115
+ parentRect,
116
+ parentNode,
117
+ offsetParent
118
+ } = this.getParents();
119
+ if (!offsetParent) return null;
120
+ const effectiveParentRect = lockedParentRect || parentRect;
121
+ const children = new Map();
122
+ [].slice.call(parentNode.children).map(node => {
123
+ const position = toPosition(node, effectiveParentRect, {
124
+ withMargins: true,
125
+ numberOfSiblings: this.props.numberOfElements || 1
126
+ });
127
+ if (position) {
128
+ children.set(node, position);
129
+ }
130
+ });
131
+ return {
132
+ children,
133
+ parent: toPosition(offsetParent, undefined, {
134
+ withMargins: true
135
+ }),
136
+ parentRect: effectiveParentRect,
137
+ scrollTop: offsetParent.scrollTop
138
+ };
139
+ };
140
+ }
141
+ componentDidUpdate(prevProps, prevState, snap) {
142
+ if (snap) {
143
+ const useLockedParentRect = this.props.anchoredDownList && snap.parentRect;
144
+ const newSnap = this.calculatePositionForAnimation(useLockedParentRect ? snap.parentRect : undefined);
145
+ if (newSnap) {
146
+ // se não tiver parentNode, verficar se há uma div sendo offsetParent, body não serve
147
+ this.play(snap, newSnap);
148
+ }
149
+ }
150
+ }
151
+ getSnapshotBeforeUpdate(oldProps) {
152
+ if (this.props.play || this.props.on !== oldProps.on || this.props.children.length !== oldProps.children.length) {
153
+ return this.calculatePositionForAnimation();
154
+ }
155
+ return null;
156
+ }
157
+ render() {
158
+ const _this$props = this.props,
159
+ {
160
+ children,
161
+ as,
162
+ play,
163
+ on,
164
+ onStartAnimation,
165
+ onEndAnimation
166
+ } = _this$props,
167
+ rest = _objectWithoutProperties(_this$props, _excluded);
168
+ const result = React.Children.count(children) ? children : /*#__PURE__*/React.createElement("div", {
169
+ style: {
170
+ display: 'none'
171
+ }
172
+ });
173
+ if (as) {
174
+ const RenderAs = as;
175
+ return /*#__PURE__*/React.createElement(RenderAs, rest, result);
176
+ }
177
+ return result;
178
+ }
179
+ }
180
+ FlipList.defaultProps = {
181
+ timing: defaultAnimationMaker,
182
+ animation: oneWayAnimation("transform: scale(1); transform-origin: center; opacity: 1;", "transform: scale(0); transform-origin: center; opacity: 0;")
183
+ };
184
+
185
+ export { FlipList };
186
+ //# sourceMappingURL=FlipList.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlipList.mjs","sources":["../src/FlipList.jsx"],"sourcesContent":["import React from 'react'\nimport ReactDOM from 'react-dom'\nimport {defaultAnimationMaker, morph, formatAnimation, getClientRectAnimation, toPosition} from './Flip'\nimport {oneWayAnimation} from '@startlibs/utils'\nimport {callIfFunction} from '@startlibs/utils'\n\n\nexport class FlipList extends React.Component {\n\n static defaultProps = {\n timing: defaultAnimationMaker,\n animation: oneWayAnimation(`transform: scale(1); transform-origin: center; opacity: 1;`, `transform: scale(0); transform-origin: center; opacity: 0;`)\n }\n\n componentDidUpdate(prevProps, prevState, snap) {\n if (snap) {\n const useLockedParentRect = (this.props.anchoredDownList) && snap.parentRect\n const newSnap = this.calculatePositionForAnimation(useLockedParentRect ? snap.parentRect : undefined)\n if (newSnap) { // se não tiver parentNode, verficar se há uma div sendo offsetParent, body não serve\n this.play(snap, newSnap)\n }\n }\n }\n\n play = (oldSnap, newSnap) => {\n const {animation,insertAnimation,removeAnimation, onEndAnimation, onStartAnimation, effect, skipChromeFix, timing, skipParentMorph} = this.props\n newSnap.children.forEach(newItemSnap => {\n const oldItemSnap = oldSnap.children.get(newItemSnap.domNode)\n if (!oldItemSnap) return\n const rectAnimation = getClientRectAnimation(oldItemSnap, newItemSnap)\n morph(newItemSnap.domNode,formatAnimation(rectAnimation,timing))\n })\n if (newSnap.children.size > oldSnap.children.size) {\n const newItems = Array.from(newSnap.children.values()).filter(item => !oldSnap.children.has(item.domNode))\n newItems.forEach((newItem) => {\n morph(newItem.domNode, formatAnimation(insertAnimation || animation, timing, !insertAnimation))\n })\n } else if (newSnap.children.size < oldSnap.children.size) {\n const oldItems = Array.from(oldSnap.children.values()).filter(item => !newSnap.children.has(item.domNode))\n\n oldItems.forEach((oldItem) => {\n const reinserted = this.reinsertSnap(oldItem,oldSnap.scrollTop - newSnap.scrollTop, oldItems)\n if (!reinserted) { return }\n new Promise(res => {\n morph(oldItem.domNode, formatAnimation(removeAnimation || animation, timing), res)\n setTimeout(res,1500)\n }).then(() => {\n oldItem.domNode.remove()\n })\n })\n\n }\n const rectAnimation = getClientRectAnimation(oldSnap.parent, newSnap.parent,{skipTransform:true,smallJumpFix: this.props.smallJumpFix})\n if (newSnap.parent?.domNode && !skipParentMorph) {\n const endEffect = callIfFunction(effect, newSnap.parent.domNode, {newSnap, oldSnap})\n callIfFunction(onStartAnimation)\n morph(newSnap.parent.domNode,formatAnimation(rectAnimation, timing),endEffect || onEndAnimation)\n }\n }\n\n reinsertSnap = (item,scrollDelta, allChildren) => {\n if (item.nextSibling) {\n\n if (!item.nextSibling.parentNode) {\n const next = allChildren.find(possible => item.nextSibling === possible.domNode)\n if (next) {\n return this.reinsertSnap({...item,nextSibling:next.nextSibling},scrollDelta,allChildren)\n }\n return false;\n }\n item.nextSibling.parentNode?.insertBefore(item.domNode, item.nextSibling)\n } else {\n item.parentNode.appendChild(item.domNode)\n }\n const {width,height} = item.domNode.getBoundingClientRect()\n item.domNode.style.left = item.domNode.offsetLeft + 'px'\n item.domNode.style.top = item.domNode.offsetTop - scrollDelta + 'px'\n if (!this.props.anchoredDownList) {\n item.domNode.style.marginTop = 0\n }\n item.domNode.style.marginLeft = 0\n item.domNode.style.width = width + 'px'\n item.domNode.style.height = height + 'px'\n item.domNode.style.position = 'absolute'\n callIfFunction(this.props.onReinsert,item.domNode,item)\n return true\n }\n\n getSnapshotBeforeUpdate(oldProps) {\n if (this.props.play || this.props.on !== oldProps.on || (this.props.children.length !== oldProps.children.length)) {\n return this.calculatePositionForAnimation()\n }\n return null\n }\n\n getParents = () => {\n const node = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE.findDOMNode(this)\n const {parentNode, offsetParent: possibleOffsetParent} = node\n const offsetParent = possibleOffsetParent || (window.getComputedStyle(parentNode).position !== 'static' ? parentNode : parentNode.offsetParent)\n if (!offsetParent) return {};\n const parentRect = offsetParent.getBoundingClientRect()\n return {\n offsetParent,\n parentNode,\n parentRect\n }\n }\n\n calculatePositionForAnimation = (lockedParentRect) => {\n const {parentRect, parentNode, offsetParent} = this.getParents()\n if (!offsetParent) return null\n const effectiveParentRect = lockedParentRect || parentRect\n const children = new Map();\n [].slice.call(parentNode.children).map((node) => {\n const position = toPosition(node, effectiveParentRect, {withMargins:true, numberOfSiblings: this.props.numberOfElements || 1})\n if (position) { children.set(node, position) }\n })\n return {\n children,\n parent: toPosition(offsetParent,undefined, {withMargins:true}),\n parentRect: effectiveParentRect,\n scrollTop:offsetParent.scrollTop\n }\n }\n\n render() {\n const {children, as, play, on, onStartAnimation, onEndAnimation, ...rest} = this.props\n const result = React.Children.count(children) ? children : <div style={{display: 'none'}}/>\n if (as) {\n const RenderAs = as\n return <RenderAs {...rest}>{result}</RenderAs>\n }\n return result\n }\n\n}\n"],"names":["FlipList","React","Component","constructor","arguments","play","oldSnap","newSnap","_newSnap$parent","animation","insertAnimation","removeAnimation","onEndAnimation","onStartAnimation","effect","skipChromeFix","timing","skipParentMorph","props","children","forEach","newItemSnap","oldItemSnap","get","domNode","rectAnimation","getClientRectAnimation","morph","formatAnimation","size","newItems","Array","from","values","filter","item","has","newItem","oldItems","oldItem","reinserted","reinsertSnap","scrollTop","Promise","res","setTimeout","then","remove","parent","skipTransform","smallJumpFix","endEffect","callIfFunction","scrollDelta","allChildren","nextSibling","_item$nextSibling$par","parentNode","next","find","possible","_objectSpread","insertBefore","appendChild","width","height","getBoundingClientRect","style","left","offsetLeft","top","offsetTop","anchoredDownList","marginTop","marginLeft","position","onReinsert","getParents","node","ReactDOM","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","findDOMNode","offsetParent","possibleOffsetParent","window","getComputedStyle","parentRect","calculatePositionForAnimation","lockedParentRect","effectiveParentRect","Map","slice","call","map","toPosition","withMargins","numberOfSiblings","numberOfElements","set","undefined","componentDidUpdate","prevProps","prevState","snap","useLockedParentRect","getSnapshotBeforeUpdate","oldProps","on","length","render","_this$props","as","rest","_objectWithoutProperties","_excluded","result","Children","count","createElement","display","RenderAs","defaultProps","defaultAnimationMaker","oneWayAnimation"],"mappings":";;;;;;;;;;AAOO,MAAMA,QAAQ,SAASC,KAAK,CAACC,SAAS,CAAC;EAAAC,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAAC,SAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CAiB5CC,IAAI,GAAG,CAACC,OAAO,EAAEC,OAAO,KAAK;AAAA,MAAA,IAAAC,eAAA,CAAA;MAC3B,MAAM;QAACC,SAAS;QAACC,eAAe;QAACC,eAAe;QAAEC,cAAc;QAAEC,gBAAgB;QAAEC,MAAM;QAAEC,aAAa;QAAEC,MAAM;AAAEC,QAAAA,eAAAA;OAAgB,GAAG,IAAI,CAACC,KAAK,CAAA;AAChJX,MAAAA,OAAO,CAACY,QAAQ,CAACC,OAAO,CAACC,WAAW,IAAI;QACtC,MAAMC,WAAW,GAAGhB,OAAO,CAACa,QAAQ,CAACI,GAAG,CAACF,WAAW,CAACG,OAAO,CAAC,CAAA;QAC7D,IAAI,CAACF,WAAW,EAAE,OAAA;AAClB,QAAA,MAAMG,aAAa,GAAGC,sBAAsB,CAACJ,WAAW,EAAED,WAAW,CAAC,CAAA;QACtEM,KAAK,CAACN,WAAW,CAACG,OAAO,EAACI,eAAe,CAACH,aAAa,EAACT,MAAM,CAAC,CAAC,CAAA;AAClE,OAAC,CAAC,CAAA;MACF,IAAIT,OAAO,CAACY,QAAQ,CAACU,IAAI,GAAGvB,OAAO,CAACa,QAAQ,CAACU,IAAI,EAAE;AACjD,QAAA,MAAMC,QAAQ,GAAGC,KAAK,CAACC,IAAI,CAACzB,OAAO,CAACY,QAAQ,CAACc,MAAM,EAAE,CAAC,CAACC,MAAM,CAACC,IAAI,IAAI,CAAC7B,OAAO,CAACa,QAAQ,CAACiB,GAAG,CAACD,IAAI,CAACX,OAAO,CAAC,CAAC,CAAA;AAC1GM,QAAAA,QAAQ,CAACV,OAAO,CAAEiB,OAAO,IAAK;AAC5BV,UAAAA,KAAK,CAACU,OAAO,CAACb,OAAO,EAAEI,eAAe,CAAClB,eAAe,IAAID,SAAS,EAAEO,MAAM,EAAE,CAACN,eAAe,CAAC,CAAC,CAAA;AACjG,SAAC,CAAC,CAAA;AACJ,OAAC,MAAM,IAAIH,OAAO,CAACY,QAAQ,CAACU,IAAI,GAAGvB,OAAO,CAACa,QAAQ,CAACU,IAAI,EAAE;AACxD,QAAA,MAAMS,QAAQ,GAAGP,KAAK,CAACC,IAAI,CAAC1B,OAAO,CAACa,QAAQ,CAACc,MAAM,EAAE,CAAC,CAACC,MAAM,CAACC,IAAI,IAAI,CAAC5B,OAAO,CAACY,QAAQ,CAACiB,GAAG,CAACD,IAAI,CAACX,OAAO,CAAC,CAAC,CAAA;AAE1Gc,QAAAA,QAAQ,CAAClB,OAAO,CAAEmB,OAAO,IAAK;AAC5B,UAAA,MAAMC,UAAU,GAAG,IAAI,CAACC,YAAY,CAACF,OAAO,EAACjC,OAAO,CAACoC,SAAS,GAAGnC,OAAO,CAACmC,SAAS,EAAEJ,QAAQ,CAAC,CAAA;UAC7F,IAAI,CAACE,UAAU,EAAE;AAAE,YAAA,OAAA;AAAO,WAAA;UAC1B,IAAIG,OAAO,CAACC,GAAG,IAAI;AACjBjB,YAAAA,KAAK,CAACY,OAAO,CAACf,OAAO,EAAEI,eAAe,CAACjB,eAAe,IAAIF,SAAS,EAAEO,MAAM,CAAC,EAAE4B,GAAG,CAAC,CAAA;AAClFC,YAAAA,UAAU,CAACD,GAAG,EAAC,IAAI,CAAC,CAAA;AACtB,WAAC,CAAC,CAACE,IAAI,CAAC,MAAM;AACZP,YAAAA,OAAO,CAACf,OAAO,CAACuB,MAAM,EAAE,CAAA;AAC1B,WAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;AAEJ,OAAA;MACA,MAAMtB,aAAa,GAAGC,sBAAsB,CAACpB,OAAO,CAAC0C,MAAM,EAAEzC,OAAO,CAACyC,MAAM,EAAC;AAACC,QAAAA,aAAa,EAAC,IAAI;AAACC,QAAAA,YAAY,EAAE,IAAI,CAAChC,KAAK,CAACgC,YAAAA;AAAY,OAAC,CAAC,CAAA;AACvI,MAAA,IAAI,CAAA1C,eAAA,GAAAD,OAAO,CAACyC,MAAM,MAAA,IAAA,IAAAxC,eAAA,KAAA,KAAA,CAAA,IAAdA,eAAA,CAAgBgB,OAAO,IAAI,CAACP,eAAe,EAAE;QAC/C,MAAMkC,SAAS,GAAGC,cAAc,CAACtC,MAAM,EAAEP,OAAO,CAACyC,MAAM,CAACxB,OAAO,EAAE;UAACjB,OAAO;AAAED,UAAAA,OAAAA;AAAO,SAAC,CAAC,CAAA;QACpF8C,cAAc,CAACvC,gBAAgB,CAAC,CAAA;AAChCc,QAAAA,KAAK,CAACpB,OAAO,CAACyC,MAAM,CAACxB,OAAO,EAACI,eAAe,CAACH,aAAa,EAAET,MAAM,CAAC,EAACmC,SAAS,IAAIvC,cAAc,CAAC,CAAA;AAClG,OAAA;KACD,CAAA;IAAA,IAED6B,CAAAA,YAAY,GAAG,CAACN,IAAI,EAACkB,WAAW,EAAEC,WAAW,KAAK;MAChD,IAAInB,IAAI,CAACoB,WAAW,EAAE;AAAA,QAAA,IAAAC,qBAAA,CAAA;AAEpB,QAAA,IAAI,CAACrB,IAAI,CAACoB,WAAW,CAACE,UAAU,EAAE;AAChC,UAAA,MAAMC,IAAI,GAAGJ,WAAW,CAACK,IAAI,CAACC,QAAQ,IAAIzB,IAAI,CAACoB,WAAW,KAAKK,QAAQ,CAACpC,OAAO,CAAC,CAAA;AAChF,UAAA,IAAIkC,IAAI,EAAE;YACR,OAAO,IAAI,CAACjB,YAAY,CAAAoB,aAAA,CAAAA,aAAA,KAAK1B,IAAI,CAAA,EAAA,EAAA,EAAA;cAACoB,WAAW,EAACG,IAAI,CAACH,WAAAA;aAAaF,CAAAA,EAAAA,WAAW,EAACC,WAAW,CAAC,CAAA;AAC1F,WAAA;AACA,UAAA,OAAO,KAAK,CAAA;AACd,SAAA;QACA,CAAAE,qBAAA,GAAArB,IAAI,CAACoB,WAAW,CAACE,UAAU,cAAAD,qBAAA,KAAA,KAAA,CAAA,IAA3BA,qBAAA,CAA6BM,YAAY,CAAC3B,IAAI,CAACX,OAAO,EAAEW,IAAI,CAACoB,WAAW,CAAC,CAAA;AAC3E,OAAC,MAAM;QACLpB,IAAI,CAACsB,UAAU,CAACM,WAAW,CAAC5B,IAAI,CAACX,OAAO,CAAC,CAAA;AAC3C,OAAA;MACA,MAAM;QAACwC,KAAK;AAACC,QAAAA,MAAAA;AAAM,OAAC,GAAG9B,IAAI,CAACX,OAAO,CAAC0C,qBAAqB,EAAE,CAAA;AAC3D/B,MAAAA,IAAI,CAACX,OAAO,CAAC2C,KAAK,CAACC,IAAI,GAAGjC,IAAI,CAACX,OAAO,CAAC6C,UAAU,GAAG,IAAI,CAAA;AACxDlC,MAAAA,IAAI,CAACX,OAAO,CAAC2C,KAAK,CAACG,GAAG,GAAGnC,IAAI,CAACX,OAAO,CAAC+C,SAAS,GAAGlB,WAAW,GAAG,IAAI,CAAA;AACpE,MAAA,IAAI,CAAC,IAAI,CAACnC,KAAK,CAACsD,gBAAgB,EAAE;AAChCrC,QAAAA,IAAI,CAACX,OAAO,CAAC2C,KAAK,CAACM,SAAS,GAAG,CAAC,CAAA;AAClC,OAAA;AACAtC,MAAAA,IAAI,CAACX,OAAO,CAAC2C,KAAK,CAACO,UAAU,GAAG,CAAC,CAAA;MACjCvC,IAAI,CAACX,OAAO,CAAC2C,KAAK,CAACH,KAAK,GAAGA,KAAK,GAAG,IAAI,CAAA;MACvC7B,IAAI,CAACX,OAAO,CAAC2C,KAAK,CAACF,MAAM,GAAGA,MAAM,GAAG,IAAI,CAAA;AACzC9B,MAAAA,IAAI,CAACX,OAAO,CAAC2C,KAAK,CAACQ,QAAQ,GAAG,UAAU,CAAA;AACxCvB,MAAAA,cAAc,CAAC,IAAI,CAAClC,KAAK,CAAC0D,UAAU,EAACzC,IAAI,CAACX,OAAO,EAACW,IAAI,CAAC,CAAA;AACvD,MAAA,OAAO,IAAI,CAAA;KACZ,CAAA;IAAA,IASD0C,CAAAA,UAAU,GAAG,MAAM;MACjB,MAAMC,IAAI,GAAGC,QAAQ,CAACC,4DAA4D,CAACC,WAAW,CAAC,IAAI,CAAC,CAAA;MACpG,MAAM;QAACxB,UAAU;AAAEyB,QAAAA,YAAY,EAAEC,oBAAAA;AAAoB,OAAC,GAAGL,IAAI,CAAA;MAC7D,MAAMI,YAAY,GAAGC,oBAAoB,KAAKC,MAAM,CAACC,gBAAgB,CAAC5B,UAAU,CAAC,CAACkB,QAAQ,KAAK,QAAQ,GAAGlB,UAAU,GAAGA,UAAU,CAACyB,YAAY,CAAC,CAAA;AAC/I,MAAA,IAAI,CAACA,YAAY,EAAE,OAAO,EAAE,CAAA;AAC5B,MAAA,MAAMI,UAAU,GAAGJ,YAAY,CAAChB,qBAAqB,EAAE,CAAA;MACvD,OAAO;QACLgB,YAAY;QACZzB,UAAU;AACV6B,QAAAA,UAAAA;OACD,CAAA;KACF,CAAA;IAAA,IAEDC,CAAAA,6BAA6B,GAAIC,gBAAgB,IAAK;MACpD,MAAM;QAACF,UAAU;QAAE7B,UAAU;AAAEyB,QAAAA,YAAAA;AAAY,OAAC,GAAG,IAAI,CAACL,UAAU,EAAE,CAAA;AAChE,MAAA,IAAI,CAACK,YAAY,EAAE,OAAO,IAAI,CAAA;AAC9B,MAAA,MAAMO,mBAAmB,GAAGD,gBAAgB,IAAIF,UAAU,CAAA;AAC1D,MAAA,MAAMnE,QAAQ,GAAG,IAAIuE,GAAG,EAAE,CAAA;AAC1B,MAAA,EAAE,CAACC,KAAK,CAACC,IAAI,CAACnC,UAAU,CAACtC,QAAQ,CAAC,CAAC0E,GAAG,CAAEf,IAAI,IAAK;AAC/C,QAAA,MAAMH,QAAQ,GAAGmB,UAAU,CAAChB,IAAI,EAAEW,mBAAmB,EAAE;AAACM,UAAAA,WAAW,EAAC,IAAI;AAAEC,UAAAA,gBAAgB,EAAE,IAAI,CAAC9E,KAAK,CAAC+E,gBAAgB,IAAI,CAAA;AAAC,SAAC,CAAC,CAAA;AAC9H,QAAA,IAAItB,QAAQ,EAAE;AAAExD,UAAAA,QAAQ,CAAC+E,GAAG,CAACpB,IAAI,EAAEH,QAAQ,CAAC,CAAA;AAAC,SAAA;AAC/C,OAAC,CAAC,CAAA;MACF,OAAO;QACLxD,QAAQ;AACR6B,QAAAA,MAAM,EAAE8C,UAAU,CAACZ,YAAY,EAACiB,SAAS,EAAE;AAACJ,UAAAA,WAAW,EAAC,IAAA;AAAI,SAAC,CAAC;AAC9DT,QAAAA,UAAU,EAAEG,mBAAmB;QAC/B/C,SAAS,EAACwC,YAAY,CAACxC,SAAAA;OACxB,CAAA;KACF,CAAA;AAAA,GAAA;AA7GD0D,EAAAA,kBAAkBA,CAACC,SAAS,EAAEC,SAAS,EAAEC,IAAI,EAAE;AAC7C,IAAA,IAAIA,IAAI,EAAE;MACR,MAAMC,mBAAmB,GAAI,IAAI,CAACtF,KAAK,CAACsD,gBAAgB,IAAK+B,IAAI,CAACjB,UAAU,CAAA;AAC5E,MAAA,MAAM/E,OAAO,GAAG,IAAI,CAACgF,6BAA6B,CAACiB,mBAAmB,GAAGD,IAAI,CAACjB,UAAU,GAAGa,SAAS,CAAC,CAAA;AACpG,MAAA,IAAI5F,OAAO,EAAE;AAAE;AACb,QAAA,IAAI,CAACF,IAAI,CAACkG,IAAI,EAAEhG,OAAO,CAAC,CAAA;AAC3B,OAAA;AACF,KAAA;AACF,GAAA;EAkEAkG,uBAAuBA,CAACC,QAAQ,EAAE;AAChC,IAAA,IAAI,IAAI,CAACxF,KAAK,CAACb,IAAI,IAAI,IAAI,CAACa,KAAK,CAACyF,EAAE,KAAKD,QAAQ,CAACC,EAAE,IAAK,IAAI,CAACzF,KAAK,CAACC,QAAQ,CAACyF,MAAM,KAAKF,QAAQ,CAACvF,QAAQ,CAACyF,MAAO,EAAE;AACjH,MAAA,OAAO,IAAI,CAACrB,6BAA6B,EAAE,CAAA;AAC7C,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAgCAsB,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAAC,WAAA,GAA4E,IAAI,CAAC5F,KAAK;AAAhF,MAAA;QAACC,QAAQ;QAAE4F,EAAE;QAAE1G,IAAI;QAAEsG,EAAE;QAAE9F,gBAAgB;AAAED,QAAAA,cAAAA;AAAuB,OAAC,GAAAkG,WAAA;AAALE,MAAAA,IAAI,GAAAC,wBAAA,CAAAH,WAAA,EAAAI,SAAA,CAAA,CAAA;AACxE,IAAA,MAAMC,MAAM,GAAGlH,KAAK,CAACmH,QAAQ,CAACC,KAAK,CAAClG,QAAQ,CAAC,GAAGA,QAAQ,gBAAGlB,KAAA,CAAAqH,aAAA,CAAA,KAAA,EAAA;AAAKnD,MAAAA,KAAK,EAAE;AAACoD,QAAAA,OAAO,EAAE,MAAA;AAAM,OAAA;AAAE,KAAC,CAAC,CAAA;AAC3F,IAAA,IAAIR,EAAE,EAAE;MACN,MAAMS,QAAQ,GAAGT,EAAE,CAAA;MACnB,oBAAO9G,KAAA,CAAAqH,aAAA,CAACE,QAAQ,EAAKR,IAAI,EAAGG,MAAiB,CAAC,CAAA;AAChD,KAAA;AACA,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;AAEF,CAAA;AAhIanH,QAAQ,CAEZyH,YAAY,GAAG;AACpBzG,EAAAA,MAAM,EAAE0G,qBAAqB;EAC7BjH,SAAS,EAAEkH,eAAe,CAA2H,4DAAA,EAAA,4DAAA,CAAA;AACvJ,CAAC;;;;"}
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { StartlibsConsumer } from '@startlibs/core';
3
+ import { formatDate } from '@startlibs/utils';
4
+
5
+ const FormatDate = _ref => {
6
+ let {
7
+ date,
8
+ format,
9
+ noUTC,
10
+ children
11
+ } = _ref;
12
+ return /*#__PURE__*/React.createElement(StartlibsConsumer, null, _ref2 => {
13
+ let {
14
+ dateMessages
15
+ } = _ref2;
16
+ if (!date) {
17
+ return null;
18
+ }
19
+ const formatted = formatDate(new Date(date), format, dateMessages, noUTC);
20
+ return children ? children(formatted) : formatted;
21
+ });
22
+ };
23
+
24
+ export { FormatDate };
25
+ //# sourceMappingURL=FormatDate.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormatDate.mjs","sources":["../src/FormatDate.jsx"],"sourcesContent":["import React from 'react'\nimport {StartlibsConsumer} from '@startlibs/core'\nimport {formatDate} from '@startlibs/utils'\n\nexport const FormatDate = ({date,format, noUTC,children}) => <StartlibsConsumer>{({dateMessages}) => {\n if (!date) { return null }\n const formatted = formatDate(new Date(date), format, dateMessages, noUTC)\n return children ? children(formatted) : formatted\n}}</StartlibsConsumer>"],"names":["FormatDate","_ref","date","format","noUTC","children","React","createElement","StartlibsConsumer","_ref2","dateMessages","formatted","formatDate","Date"],"mappings":";;;;AAIO,MAAMA,UAAU,GAAGC,IAAA,IAAA;EAAA,IAAC;IAACC,IAAI;IAACC,MAAM;IAAEC,KAAK;AAACC,IAAAA,QAAAA;AAAQ,GAAC,GAAAJ,IAAA,CAAA;AAAA,EAAA,oBAAKK,KAAA,CAAAC,aAAA,CAACC,iBAAiB,EAAA,IAAA,EAAEC,KAAA,IAAoB;IAAA,IAAnB;AAACC,MAAAA,YAAAA;AAAY,KAAC,GAAAD,KAAA,CAAA;IAC9F,IAAI,CAACP,IAAI,EAAE;AAAE,MAAA,OAAO,IAAI,CAAA;AAAC,KAAA;AACzB,IAAA,MAAMS,SAAS,GAAGC,UAAU,CAAC,IAAIC,IAAI,CAACX,IAAI,CAAC,EAAEC,MAAM,EAAEO,YAAY,EAAEN,KAAK,CAAC,CAAA;AACzE,IAAA,OAAOC,QAAQ,GAAGA,QAAQ,CAACM,SAAS,CAAC,GAAGA,SAAS,CAAA;AACnD,GAAqB,CAAC,CAAA;AAAA;;;;"}
package/lib/Icon.mjs ADDED
@@ -0,0 +1,50 @@
1
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
2
+ import React from 'react';
3
+ import styled, { withTheme } from 'styled-components';
4
+
5
+ const _excluded = ["icon", "children", "theme", "clickable", "customIcon", "colorSet", "color"];
6
+ class IconComponent extends React.Component {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.state = {};
10
+ }
11
+ componentDidMount() {
12
+ const icon = this.props.icon;
13
+ if ((this.props.theme.svgIcons || {})[icon]) {
14
+ this.props.theme.svgLoader(icon).then(i => this.setState({
15
+ Svg: i.default
16
+ }));
17
+ }
18
+ }
19
+ render() {
20
+ const _this$props = this.props,
21
+ {
22
+ icon,
23
+ children,
24
+ theme,
25
+ clickable,
26
+ customIcon,
27
+ colorSet,
28
+ color
29
+ } = _this$props,
30
+ rest = _objectWithoutProperties(_this$props, _excluded);
31
+ if ((theme.svgIcons || {})[icon]) {
32
+ if (this.state.Svg) {
33
+ return /*#__PURE__*/React.createElement(this.state.Svg, rest);
34
+ } else {
35
+ return null;
36
+ }
37
+ }
38
+ return /*#__PURE__*/React.createElement("span", rest, theme.icons[icon] || customIcon && icon, children);
39
+ }
40
+ }
41
+ const Icon = /*#__PURE__*/styled(withTheme(IconComponent)).withConfig({
42
+ displayName: "Icon",
43
+ componentId: "sc-wsq54u-0"
44
+ })(["font-family:'", "' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none;", ""], props => {
45
+ var _props$theme;
46
+ return (_props$theme = props.theme) === null || _props$theme === void 0 ? void 0 : _props$theme.iconFont;
47
+ }, props => props.clickable && "\n cursor: pointer;\n &:hover {\n opacity: 0.85;\n }\n ");
48
+
49
+ export { Icon };
50
+ //# sourceMappingURL=Icon.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icon.mjs","sources":["../src/Icon.jsx"],"sourcesContent":["import React from 'react'\nimport styled from 'styled-components'\nimport { withTheme } from 'styled-components'\n\n\nclass IconComponent extends React.Component {\n\n state = {}\n\n componentDidMount() {\n const icon = this.props.icon\n if ((this.props.theme.svgIcons || {})[icon]) {\n this.props.theme.svgLoader(icon).then((i) => this.setState({Svg: i.default}))\n }\n }\n\n render() {\n const {icon, children, theme, clickable, customIcon, colorSet, color, ...rest} = this.props\n if ((theme.svgIcons || {})[icon]) {\n if (this.state.Svg) {\n return <this.state.Svg {...rest} />\n } else {\n return null\n }\n }\n return <span {...rest}>{theme.icons[icon] || (customIcon && icon)}{children}</span>\n }\n}\n\nexport const Icon = styled(withTheme(IconComponent))`\n font-family: '${props => props.theme?.iconFont}' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n \n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n user-select: none; \n ${props => props.clickable && `\n cursor: pointer;\n &:hover {\n opacity: 0.85;\n }\n `}\n`"],"names":["IconComponent","React","Component","constructor","arguments","state","componentDidMount","icon","props","theme","svgIcons","svgLoader","then","i","setState","Svg","default","render","_this$props","children","clickable","customIcon","colorSet","color","rest","_objectWithoutProperties","_excluded","createElement","icons","Icon","styled","withTheme","withConfig","displayName","componentId","_props$theme","iconFont"],"mappings":";;;;;AAKA,MAAMA,aAAa,SAASC,KAAK,CAACC,SAAS,CAAC;EAAAC,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAAC,SAAA,CAAA,CAAA;IAAA,IAE1CC,CAAAA,KAAK,GAAG,EAAE,CAAA;AAAA,GAAA;AAEVC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,MAAMC,IAAI,GAAG,IAAI,CAACC,KAAK,CAACD,IAAI,CAAA;AAC5B,IAAA,IAAI,CAAC,IAAI,CAACC,KAAK,CAACC,KAAK,CAACC,QAAQ,IAAI,EAAE,EAAEH,IAAI,CAAC,EAAE;AAC3C,MAAA,IAAI,CAACC,KAAK,CAACC,KAAK,CAACE,SAAS,CAACJ,IAAI,CAAC,CAACK,IAAI,CAAEC,CAAC,IAAK,IAAI,CAACC,QAAQ,CAAC;QAACC,GAAG,EAAEF,CAAC,CAACG,OAAAA;AAAO,OAAC,CAAC,CAAC,CAAA;AAC/E,KAAA;AACF,GAAA;AAEAC,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAAC,WAAA,GAAiF,IAAI,CAACV,KAAK;AAArF,MAAA;QAACD,IAAI;QAAEY,QAAQ;QAAEV,KAAK;QAAEW,SAAS;QAAEC,UAAU;QAAEC,QAAQ;AAAEC,QAAAA,KAAAA;AAAc,OAAC,GAAAL,WAAA;AAALM,MAAAA,IAAI,GAAAC,wBAAA,CAAAP,WAAA,EAAAQ,SAAA,CAAA,CAAA;IAC7E,IAAI,CAACjB,KAAK,CAACC,QAAQ,IAAI,EAAE,EAAEH,IAAI,CAAC,EAAE;AAChC,MAAA,IAAI,IAAI,CAACF,KAAK,CAACU,GAAG,EAAE;QAClB,oBAAOd,KAAA,CAAA0B,aAAA,CAAA,IAAA,CAAMtB,KAAK,CAACU,GAAG,EAAKS,IAAO,CAAC,CAAA;AACrC,OAAC,MAAM;AACL,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;AACF,KAAA;AACA,IAAA,oBAAOvB,KAAA,CAAA0B,aAAA,SAAUH,IAAI,EAAGf,KAAK,CAACmB,KAAK,CAACrB,IAAI,CAAC,IAAKc,UAAU,IAAId,IAAK,EAAEY,QAAe,CAAC,CAAA;AACrF,GAAA;AACF,CAAA;AAEO,MAAMU,IAAI,gBAAGC,MAAM,CAACC,SAAS,CAAC/B,aAAa,CAAC,CAAC,CAAAgC,UAAA,CAAA;EAAAC,WAAA,EAAA,MAAA;EAAAC,WAAA,EAAA,aAAA;AAAA,CAAA,CAAA,CAAA,CAAA,eAAA,EAAA,2MAAA,EAAA,EAAA,CAAA,EAClC1B,KAAK,IAAA;AAAA,EAAA,IAAA2B,YAAA,CAAA;EAAA,OAAAA,CAAAA,YAAA,GAAI3B,KAAK,CAACC,KAAK,cAAA0B,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAXA,YAAA,CAAaC,QAAQ,CAAA;AAAA,CAAA,EAY5C5B,KAAK,IAAIA,KAAK,CAACY,SAAS,4EAKzB;;;;"}
package/lib/Image.mjs ADDED
@@ -0,0 +1,41 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import _extends from '@babel/runtime/helpers/extends';
3
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
4
+ import React, { forwardRef, useState, useEffect } from 'react';
5
+
6
+ const _excluded = ["dom", "src", "style"];
7
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
+ const Image = /*#__PURE__*/forwardRef((_ref, ref) => {
10
+ let {
11
+ dom,
12
+ src,
13
+ style
14
+ } = _ref,
15
+ rest = _objectWithoutProperties(_ref, _excluded);
16
+ const [image, setImage] = useState(typeof src === 'string' ? src : src && URL.createObjectURL(src));
17
+ useEffect(() => {
18
+ if (src) {
19
+ const imageStr = typeof src === 'string' ? src : URL.createObjectURL(src);
20
+ const img = document.createElement('img');
21
+ img.onload = () => {
22
+ setImage(imageStr);
23
+ };
24
+ img.src = imageStr;
25
+ } else {
26
+ setImage("");
27
+ }
28
+ }, [src]);
29
+ return dom ? /*#__PURE__*/React.createElement("img", _extends({}, rest, {
30
+ src: image,
31
+ ref: ref
32
+ })) : /*#__PURE__*/React.createElement("div", _extends({}, rest, {
33
+ style: _objectSpread(_objectSpread({}, style), {}, {
34
+ backgroundImage: image && "url(\"".concat(image, "\")")
35
+ }),
36
+ ref: ref
37
+ }));
38
+ });
39
+
40
+ export { Image };
41
+ //# sourceMappingURL=Image.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.mjs","sources":["../src/Image.jsx"],"sourcesContent":["import React, {forwardRef, useEffect, useState} from 'react'\n\nexport const Image = forwardRef(({dom,src,style, ...rest}, ref) => {\n\n const [image, setImage] = useState(typeof src === 'string' ? src : (src && URL.createObjectURL(src)))\n\n useEffect(() => {\n if (src) {\n const imageStr = typeof src === 'string' ? src : URL.createObjectURL(src)\n const img = document.createElement('img')\n img.onload = () => {\n setImage(imageStr)\n }\n img.src = imageStr\n } else {\n setImage(\"\")\n }\n }, [src])\n\n return dom\n ? <img {...rest} src={image} ref={ref}/>\n : <div {...rest} style={{...style,backgroundImage:image && `url(\"${image}\")`}} ref={ref}/>\n})"],"names":["Image","forwardRef","_ref","ref","dom","src","style","rest","_objectWithoutProperties","_excluded","image","setImage","useState","URL","createObjectURL","useEffect","imageStr","img","document","createElement","onload","React","_extends","_objectSpread","backgroundImage","concat"],"mappings":";;;;;;;;AAEO,MAAMA,KAAK,gBAAGC,UAAU,CAAC,CAAAC,IAAA,EAA2BC,GAAG,KAAK;EAAA,IAAlC;MAACC,GAAG;MAACC,GAAG;AAACC,MAAAA,KAAAA;AAAc,KAAC,GAAAJ,IAAA;AAALK,IAAAA,IAAI,GAAAC,wBAAA,CAAAN,IAAA,EAAAO,SAAA,CAAA,CAAA;EAEtD,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,QAAQ,CAAC,OAAOP,GAAG,KAAK,QAAQ,GAAGA,GAAG,GAAIA,GAAG,IAAIQ,GAAG,CAACC,eAAe,CAACT,GAAG,CAAE,CAAC,CAAA;AAErGU,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAIV,GAAG,EAAE;AACP,MAAA,MAAMW,QAAQ,GAAG,OAAOX,GAAG,KAAK,QAAQ,GAAGA,GAAG,GAAGQ,GAAG,CAACC,eAAe,CAACT,GAAG,CAAC,CAAA;AACzE,MAAA,MAAMY,GAAG,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;MACzCF,GAAG,CAACG,MAAM,GAAG,MAAM;QACjBT,QAAQ,CAACK,QAAQ,CAAC,CAAA;OACnB,CAAA;MACDC,GAAG,CAACZ,GAAG,GAAGW,QAAQ,CAAA;AACpB,KAAC,MAAM;MACLL,QAAQ,CAAC,EAAE,CAAC,CAAA;AACd,KAAA;AACF,GAAC,EAAE,CAACN,GAAG,CAAC,CAAC,CAAA;EAET,OAAOD,GAAG,gBACNiB,KAAA,CAAAF,aAAA,CAAAG,KAAAA,EAAAA,QAAA,KAASf,IAAI,EAAA;AAAEF,IAAAA,GAAG,EAAEK,KAAM;AAACP,IAAAA,GAAG,EAAEA,GAAAA;GAAK,CAAA,CAAC,gBACtCkB,KAAA,CAAAF,aAAA,CAAAG,KAAAA,EAAAA,QAAA,KAASf,IAAI,EAAA;AAAED,IAAAA,KAAK,EAAAiB,aAAA,CAAAA,aAAA,KAAMjB,KAAK,CAAA,EAAA,EAAA,EAAA;AAACkB,MAAAA,eAAe,EAACd,KAAK,IAAAe,QAAAA,CAAAA,MAAA,CAAYf,KAAK,EAAA,KAAA,CAAA;KAAM,CAAA;AAACP,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAA,CAAC,CAAC,CAAA;AAC9F,CAAC;;;;"}
package/lib/Link.mjs ADDED
@@ -0,0 +1,116 @@
1
+ import _extends from '@babel/runtime/helpers/extends';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
+ import _fromPairs from 'lodash/fp/fromPairs';
4
+ import _filter from 'lodash/fp/filter';
5
+ import _toPairs from 'lodash/fp/toPairs';
6
+ import _flow from 'lodash/fp/flow';
7
+ import _isFunction from 'lodash/fp/isFunction';
8
+ import _assign from 'lodash/fp/assign';
9
+ import _isObject from 'lodash/fp/isObject';
10
+ import _isString from 'lodash/fp/isString';
11
+ import React, { useMemo } from 'react';
12
+ import * as Wouter from 'wouter';
13
+ export { useBrowserLocation } from 'wouter/use-browser-location';
14
+ import { useCallbackStable } from '@startlibs/core';
15
+ import { callIfFunction, addQueryString } from '@startlibs/utils';
16
+
17
+ const _excluded = ["href"],
18
+ _excluded2 = ["to", "onClick"],
19
+ _excluded3 = ["element", "children"];
20
+ const Link = _ref => {
21
+ let {
22
+ href
23
+ } = _ref,
24
+ props = _objectWithoutProperties(_ref, _excluded);
25
+ return _isString(props.to) ? /*#__PURE__*/React.createElement(Wouter.Link, props) : /*#__PURE__*/React.createElement("a", _extends({}, props, {
26
+ href: href === null || href === void 0 ? void 0 : href.replace("~", "")
27
+ }));
28
+ };
29
+ const HistoryLink = _ref2 => {
30
+ let {
31
+ to,
32
+ onClick
33
+ } = _ref2,
34
+ props = _objectWithoutProperties(_ref2, _excluded2);
35
+ return /*#__PURE__*/React.createElement("a", _extends({
36
+ onClick: e => {
37
+ if (onClick && !callIfFunction(onClick, e)) {
38
+ return;
39
+ }
40
+ if (e.isDefaultPrevented()) {
41
+ return;
42
+ }
43
+ if (!to) {
44
+ return;
45
+ }
46
+ e.preventDefault();
47
+ const {
48
+ state,
49
+ pathname,
50
+ search,
51
+ hash
52
+ } = _isObject(to) ? to : {
53
+ pathname: to
54
+ };
55
+ const url = (pathname || "") + (search ? "?" + search.replace(/^\?/, "") : "") + (hash ? "#" + hash.replace(/^#/, "") : "");
56
+ window.history.pushState(state, '', url);
57
+ var popStateEvent = new PopStateEvent('popstate', {
58
+ state: state
59
+ });
60
+ window.dispatchEvent(popStateEvent);
61
+ }
62
+ }, props));
63
+ };
64
+ const Route = _ref3 => {
65
+ let {
66
+ element,
67
+ children
68
+ } = _ref3,
69
+ props = _objectWithoutProperties(_ref3, _excluded3);
70
+ return /*#__PURE__*/React.createElement(Wouter.Route, props, element || children);
71
+ };
72
+ const Routes = Wouter.Switch;
73
+ const Navigate = Wouter.Redirect;
74
+ const useLocation = () => {
75
+ const [path] = Wouter.useLocation();
76
+ const [search] = Wouter.useSearchParams();
77
+ return {
78
+ pathname: path,
79
+ search: search ? "?" + search : "",
80
+ state: window.history.state
81
+ };
82
+ };
83
+ const useAbsolutePath = () => {
84
+ const router = Wouter.useRouter();
85
+ const [path] = Wouter.useLocation();
86
+ return router.base + path;
87
+ };
88
+ const useAbsoluteLocation = () => {
89
+ const router = Wouter.useRouter();
90
+ const {
91
+ pathname,
92
+ search
93
+ } = useLocation();
94
+ return router.base + pathname + search;
95
+ };
96
+ const useNavigate = () => Wouter.useLocation()[1];
97
+ const useParams = Wouter.useParams;
98
+ const useSearchParams = defaultParams => {
99
+ const [location, navigate] = Wouter.useLocation();
100
+ const search = Wouter.useSearch();
101
+ const searchParams = useMemo(() => _assign(defaultParams, Object.fromEntries(new URLSearchParams(search).entries())), [search]);
102
+ let tempSearchParams = searchParams;
103
+ const setSearchParams = useCallbackStable((nextParams, options) => {
104
+ tempSearchParams = _isFunction(nextParams) ? nextParams(tempSearchParams) : _assign(tempSearchParams, nextParams);
105
+ const cleanParams = defaultParams ? _flow(_toPairs, _filter(_ref4 => {
106
+ let [k, v] = _ref4;
107
+ return defaultParams[k] !== v;
108
+ }), _fromPairs)(tempSearchParams) : tempSearchParams;
109
+ navigate(addQueryString(location, cleanParams), options);
110
+ });
111
+ return [searchParams, setSearchParams];
112
+ };
113
+ const Router = Wouter.Router;
114
+
115
+ export { HistoryLink, Link, Navigate, Route, Router, Routes, useAbsoluteLocation, useAbsolutePath, useLocation, useNavigate, useParams, useSearchParams };
116
+ //# sourceMappingURL=Link.mjs.map