@lumx/react 2.1.3 → 2.1.6-alpha.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 (37) hide show
  1. package/esm/_internal/Avatar2.js +5 -1
  2. package/esm/_internal/Avatar2.js.map +1 -1
  3. package/esm/_internal/Dialog2.js +13 -8
  4. package/esm/_internal/Dialog2.js.map +1 -1
  5. package/esm/_internal/DragHandle.js +1 -1
  6. package/esm/_internal/DragHandle.js.map +1 -1
  7. package/esm/_internal/Flag2.js +1 -3
  8. package/esm/_internal/Flag2.js.map +1 -1
  9. package/esm/_internal/Message2.js +2 -2
  10. package/esm/_internal/Message2.js.map +1 -1
  11. package/esm/_internal/SlideshowControls.js +2 -2
  12. package/esm/_internal/SlideshowControls.js.map +1 -1
  13. package/esm/_internal/Thumbnail2.js +29 -34
  14. package/esm/_internal/Thumbnail2.js.map +1 -1
  15. package/esm/_internal/UserBlock.js +44 -14
  16. package/esm/_internal/UserBlock.js.map +1 -1
  17. package/esm/_internal/user-block.js +1 -0
  18. package/esm/_internal/user-block.js.map +1 -1
  19. package/package.json +16 -17
  20. package/src/components/avatar/Avatar.tsx +8 -0
  21. package/src/components/dialog/Dialog.stories.tsx +44 -2
  22. package/src/components/dialog/Dialog.tsx +15 -11
  23. package/src/components/dialog/__snapshots__/Dialog.test.tsx.snap +76 -0
  24. package/src/components/drag-handle/DragHandle.tsx +5 -1
  25. package/src/components/flag/Flag.test.tsx +1 -2
  26. package/src/components/flag/Flag.tsx +2 -10
  27. package/src/components/flag/__snapshots__/Flag.test.tsx.snap +0 -15
  28. package/src/components/message/Message.tsx +2 -2
  29. package/src/components/slideshow/useKeyNavigate.ts +2 -2
  30. package/src/components/thumbnail/Thumbnail.stories.tsx +21 -0
  31. package/src/components/thumbnail/Thumbnail.test.tsx +20 -2
  32. package/src/components/thumbnail/Thumbnail.tsx +40 -15
  33. package/src/components/thumbnail/__snapshots__/Thumbnail.test.tsx.snap +53 -6
  34. package/src/components/user-block/UserBlock.stories.tsx +27 -4
  35. package/src/components/user-block/UserBlock.tsx +40 -16
  36. package/src/components/user-block/__snapshots__/UserBlock.test.tsx.snap +244 -145
  37. package/types.d.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Thumbnail2.js","sources":["../../../src/utils/isInternetExplorer.ts","../../../../../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../../../../../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/element.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/global.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/process.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../../../src/hooks/useOnResize.ts","../../../src/components/thumbnail/useFocusPoint.ts","../../../src/components/thumbnail/useImageLoad.ts","../../../src/components/thumbnail/useClickable.ts","../../../src/components/thumbnail/Thumbnail.tsx"],"sourcesContent":["import { WINDOW } from '@lumx/react/constants';\n\n/**\n * Check if browser is IE\n * @return Browser is IE or not\n */\nexport const isInternetExplorer = () => {\n const userAgent = WINDOW?.navigator?.userAgent;\n if (!userAgent) {\n return false;\n }\n const msie = userAgent.indexOf('MSIE ');\n const isIEVersion = !!userAgent.match(/Trident.*rv:11\\./);\n return msie > 0 || isIEVersion;\n};\n","var resizeObservers = [];\nexport { resizeObservers };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","var DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return Object.freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a, _b;\n var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return Object.freeze({\n inlineSize: (switchSizes ? blockSize : inlineSize) || 0,\n blockSize: (switchSizes ? inlineSize : blockSize) || 0\n });\n};\nvar zeroBoxes = Object.freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = Object.freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = [boxes.borderBoxSize];\n this.contentBoxSize = [boxes.contentBoxSize];\n this.devicePixelContentBoxSize = [boxes.devicePixelContentBoxSize];\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\" + (toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\n","import { Callback, Falsy } from '@lumx/react/utils';\nimport { MutableRefObject, RefObject, useEffect, useRef } from 'react';\nimport { WINDOW } from '@lumx/react/constants';\nimport { ResizeObserver as Polyfill } from '@juggle/resize-observer';\n\nconst ResizeObserver: typeof Polyfill = (WINDOW as any)?.ResizeObserver || Polyfill;\n\nexport function useOnResize(element: HTMLElement | Falsy, update: RefObject<Callback>): void {\n const observerRef = useRef(null) as MutableRefObject<Polyfill | null>;\n const previousSize = useRef<{ width: number; height: number }>();\n\n useEffect(() => {\n if (!element || !update) {\n return undefined;\n }\n\n previousSize.current = undefined;\n const observer =\n observerRef.current ||\n new ResizeObserver(([entry]) => {\n const updateFunction = update.current;\n if (!updateFunction) {\n return;\n }\n\n const { width, height } = entry.contentRect;\n if (previousSize.current?.width === width && previousSize.current?.height === height) {\n return;\n }\n\n window.requestAnimationFrame(() => updateFunction());\n previousSize.current = entry.contentRect;\n });\n if (!observerRef.current) observerRef.current = observer;\n\n observer.observe(element);\n return () => {\n observer.unobserve(element);\n };\n }, [element, update]);\n}\n","import { CSSProperties, MutableRefObject, RefObject, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useOnResize } from '@lumx/react/hooks/useOnResize';\nimport { AspectRatio } from '@lumx/react';\nimport { clamp } from '@lumx/react/utils/clamp';\nimport { LoadingState } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { Callback } from '@lumx/react/utils';\nimport { isEqual } from 'lodash';\nimport { FocusPoint } from './types';\n\nconst IMG_STYLES: CSSProperties = {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n minHeight: '100%',\n minWidth: '100%',\n};\n\nconst WRAPPER_STYLES: CSSProperties = {\n overflow: 'hidden',\n position: 'relative',\n};\n\ntype Sizes = {\n imgWidth?: number;\n imgHeight?: number;\n containerWidth?: number;\n containerHeight?: number;\n aspectRatio?: AspectRatio;\n};\n\nfunction calculateSizes(\n imageElement?: HTMLImageElement | null | undefined,\n parentElement?: HTMLElement | null,\n aspectRatio?: AspectRatio,\n): Sizes | undefined {\n if (!imageElement || !parentElement || !aspectRatio || aspectRatio === AspectRatio.original) return undefined;\n const { naturalWidth: imgWidth, naturalHeight: imgHeight } = imageElement || { naturalWidth: 0, naturalHeight: 0 };\n const { width: containerWidth, height: containerHeight } = parentElement?.getBoundingClientRect() || {\n width: 0,\n height: 0,\n };\n return { imgWidth, imgHeight, containerWidth, containerHeight, aspectRatio };\n}\n\nconst parseFocusPoint = (point: FocusPoint = {}): Required<FocusPoint> => {\n return { x: point.x ? clamp(point.x, -1, 1) : 0, y: point.y ? clamp(point.y, -1, 1) : 0 };\n};\n\nfunction calculateImageShift(\n containerToImageSizeRatio: number,\n containerSize: number,\n imageSize: number,\n focusSize: number,\n toMinus?: boolean,\n) {\n const containerCenter = Math.floor(containerSize / 2); // Container center in px\n const focusFactor = (focusSize + 1) / 2; // Focus point of resize image in px\n const scaledImage = Math.floor(imageSize / containerToImageSizeRatio); // Can't use width() as images may be display:none\n let focus = Math.floor(focusFactor * scaledImage);\n if (toMinus) {\n focus = scaledImage - focus;\n }\n let focusOffset = focus - containerCenter; // Calculate difference between focus point and center\n const remainder = scaledImage - focus; // Reduce offset if necessary so image remains filled\n const containerRemainder = containerSize - containerCenter;\n if (remainder < containerRemainder) {\n focusOffset -= containerRemainder - remainder;\n }\n if (focusOffset < 0) {\n focusOffset = 0;\n }\n return (focusOffset * -100) / containerSize;\n}\n\ntype Styles = { wrapper: CSSProperties; image: CSSProperties };\n\nfunction calculateImageStyle(sizes: Sizes, point: Required<FocusPoint>): Styles | undefined {\n if (!sizes.imgWidth || !sizes.imgHeight || !sizes.containerWidth || !sizes.containerHeight) {\n return undefined;\n }\n\n // Which is over by more?\n const widthRatio = sizes.imgWidth / sizes.containerWidth;\n const heightRatio = sizes.imgHeight / sizes.containerHeight;\n\n const image: CSSProperties = { ...IMG_STYLES };\n\n // Minimize image while still filling space\n if (sizes.imgWidth > sizes.containerWidth && sizes.imgHeight > sizes.containerHeight) {\n image[widthRatio > heightRatio ? 'maxHeight' : 'maxWidth'] = '100%';\n }\n\n if (widthRatio > heightRatio) {\n image.left = `${calculateImageShift(heightRatio, sizes.containerWidth, sizes.imgWidth, point.x)}%`;\n } else if (widthRatio < heightRatio) {\n image.top = `${calculateImageShift(widthRatio, sizes.containerHeight, sizes.imgHeight, point.y, true)}%`;\n }\n\n return {\n image,\n wrapper: WRAPPER_STYLES,\n };\n}\n\n/**\n * Hook that calculate CSS style to shift the image in it's container according to the focus point.\n */\nexport const useFocusPoint = (options: {\n image: string;\n focusPoint?: FocusPoint;\n aspectRatio?: AspectRatio;\n imgRef: RefObject<HTMLImageElement>;\n loadingState: LoadingState;\n wrapper?: HTMLElement;\n}): Styles | undefined => {\n const { image, aspectRatio, focusPoint, imgRef, loadingState, wrapper } = options;\n\n const point = parseFocusPoint(focusPoint);\n\n const previousPoint = useRef<Required<FocusPoint>>();\n const previousSizes = useRef<Sizes>({});\n const [style, setStyle] = useState<Styles>();\n\n // Update style.\n const updateRef = useRef<Callback>(null);\n const update = useMemo(\n () => {\n const updateFunction = () => {\n const sizes = calculateSizes(imgRef?.current, wrapper, aspectRatio);\n if (!sizes || (isEqual(sizes, previousSizes.current) && isEqual(point, previousPoint.current))) {\n // Nothing changed.\n return;\n }\n setStyle(calculateImageStyle(sizes, point));\n previousPoint.current = point;\n previousSizes.current = sizes;\n };\n (updateRef as MutableRefObject<Callback>).current = updateFunction;\n return updateFunction;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...Object.values(point), imgRef, wrapper, aspectRatio],\n );\n\n // Update on image loaded.\n useLayoutEffect(update, [image, update, loadingState]);\n\n // Update on parent resize.\n useOnResize(wrapper, updateRef);\n\n return style;\n};\n","import { RefObject, useCallback, useEffect, useState } from 'react';\n\nexport type LoadingState = 'isLoading' | 'isLoaded' | 'hasError';\n\nexport function useImageLoad(imgRef?: RefObject<HTMLImageElement>): LoadingState {\n const [state, setState] = useState<LoadingState>('isLoading');\n\n const update = useCallback(\n (event?: any) => {\n const img = imgRef?.current;\n if (!img || !img.complete) {\n setState('isLoading');\n return;\n }\n\n if (event?.type === 'error' || (img.complete && img?.naturalWidth === 0)) {\n setState('hasError');\n return;\n }\n\n setState('isLoaded');\n },\n [imgRef],\n );\n\n useEffect(() => {\n const img = imgRef?.current;\n if (!img) return undefined;\n\n update();\n img.addEventListener('load', update);\n img.addEventListener('error', update);\n return () => {\n img.removeEventListener('load', update);\n img.removeEventListener('error', update);\n };\n }, [update, imgRef, imgRef?.current?.src]);\n return state;\n}\n","import { KeyboardEventHandler, MouseEventHandler, useMemo } from 'react';\n\ninterface Props {\n role: 'button';\n tabIndex: 0;\n onClick: MouseEventHandler;\n onKeyPress: KeyboardEventHandler;\n}\n\nexport const useClickable = ({ onClick, onKeyPress }: { onClick?: any; onKeyPress?: any }): Props | undefined => {\n return useMemo(() => {\n if (!onClick) return undefined;\n\n return {\n role: 'button',\n tabIndex: 0,\n onClick,\n onKeyPress(event) {\n onKeyPress?.(event);\n if (event.key === 'Enter' || event.key === ' ') {\n onClick?.();\n }\n },\n };\n }, [onClick, onKeyPress]);\n};\n","import React, {\n forwardRef,\n ImgHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactElement,\n ReactNode,\n Ref,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\n\nimport { AspectRatio, HorizontalAlignment, Icon, Size, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\nimport { mdiImageBrokenVariant } from '@lumx/icons';\nimport { isInternetExplorer } from '@lumx/react/utils/isInternetExplorer';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\nimport { useFocusPoint } from '@lumx/react/components/thumbnail/useFocusPoint';\nimport { useImageLoad } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { useClickable } from '@lumx/react/components/thumbnail/useClickable';\nimport { FocusPoint, ThumbnailSize, ThumbnailVariant } from './types';\n\ntype ImgHTMLProps = ImgHTMLAttributes<HTMLImageElement>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ThumbnailProps extends GenericProps {\n /** Alignment of the thumbnail in it's parent (requires flex parent). */\n align?: HorizontalAlignment;\n /** Image alternative text. */\n alt: string;\n /** Image aspect ratio. */\n aspectRatio?: AspectRatio;\n /** Badge. */\n badge?: ReactElement;\n /** Image cross origin resource policy. */\n crossOrigin?: ImgHTMLProps['crossOrigin'];\n /** Fallback icon (SVG path) or react node when image fails to load. */\n fallback?: string | ReactNode;\n /** Whether the thumbnail should fill it's parent size (requires flex parent) or not. */\n fillHeight?: boolean;\n /** Apply relative vertical and horizontal shift (from -1 to 1) on the image position inside the thumbnail. */\n focusPoint?: FocusPoint;\n /** Image URL. */\n image: string;\n /** Props to inject into the native <img> element. */\n imgProps?: ImgHTMLProps;\n /** Reference to the native <img> element. */\n imgRef?: Ref<HTMLImageElement>;\n /** Size variant of the component. */\n size?: ThumbnailSize;\n /** Image loading mode. */\n loading?: ImgHTMLProps['loading'];\n /** On click callback. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** On key press callback. */\n onKeyPress?: KeyboardEventHandler<HTMLDivElement>;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Variant of the component. */\n variant?: ThumbnailVariant;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Thumbnail';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ThumbnailProps> = {\n fallback: mdiImageBrokenVariant,\n loading: 'lazy',\n theme: Theme.light,\n};\n\n/**\n * Thumbnail component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Thumbnail: Comp<ThumbnailProps> = forwardRef((props, ref) => {\n const {\n align,\n alt,\n aspectRatio,\n badge,\n className,\n crossOrigin,\n fallback,\n fillHeight,\n focusPoint,\n image,\n imgProps,\n imgRef: propImgRef,\n loading,\n size,\n theme,\n variant,\n ...forwardedProps\n } = props;\n const imgRef = useRef<HTMLImageElement>(null);\n\n // Image loading state.\n const loadingState = useImageLoad(imgRef);\n const hasError = loadingState === 'hasError';\n const isLoading = loadingState === 'isLoading';\n\n const [wrapper, setWrapper] = useState<HTMLElement>();\n const wrapperProps: any = {\n ...forwardedProps,\n ref: mergeRefs(setWrapper, ref),\n className: classNames(\n className,\n handleBasicClasses({ align, aspectRatio, prefix: CLASSNAME, size, theme, variant, hasBadge: !!badge }),\n isLoading && wrapper?.getBoundingClientRect()?.height && 'lumx-color-background-dark-L6',\n fillHeight && `${CLASSNAME}--fill-height`,\n ),\n // Handle clickable Thumbnail a11y.\n ...useClickable(props),\n };\n\n // Update img style according to focus point and aspect ratio.\n const style = useFocusPoint({ image, focusPoint, aspectRatio, imgRef, loadingState, wrapper });\n\n return (\n <div {...wrapperProps}>\n <div\n className={`${CLASSNAME}__background`}\n style={{\n ...style?.wrapper,\n // Remove from layout if image not loaded correctly (use fallback)\n display: hasError ? 'none' : undefined,\n // Hide while loading.\n visibility: isLoading ? 'hidden' : undefined,\n }}\n >\n <img\n {...imgProps}\n style={{\n ...imgProps?.style,\n ...style?.image,\n }}\n ref={mergeRefs(imgRef, propImgRef)}\n className={style?.image ? `${CLASSNAME}__focused-image` : `${CLASSNAME}__image`}\n crossOrigin={crossOrigin && !isInternetExplorer() ? crossOrigin : undefined}\n src={image}\n alt={alt}\n loading={loading}\n />\n </div>\n {hasError &&\n (typeof fallback === 'string' ? (\n <Icon className={`${CLASSNAME}__fallback`} icon={fallback} size={size || Size.m} theme={theme} />\n ) : (\n <div className={`${CLASSNAME}__fallback`}>{fallback}</div>\n ))}\n {badge &&\n React.cloneElement(badge, { className: classNames(`${CLASSNAME}__badge`, badge.props.className) })}\n </div>\n );\n});\nThumbnail.displayName = COMPONENT_NAME;\nThumbnail.className = CLASSNAME;\nThumbnail.defaultProps = DEFAULT_PROPS;\n"],"names":["isInternetExplorer","userAgent","WINDOW","navigator","msie","indexOf","isIEVersion","match","ResizeObserver","Polyfill","useOnResize","element","update","observerRef","useRef","previousSize","useEffect","undefined","current","observer","entry","updateFunction","contentRect","width","height","window","requestAnimationFrame","observe","unobserve","IMG_STYLES","bottom","left","position","right","top","minHeight","minWidth","WRAPPER_STYLES","overflow","calculateSizes","imageElement","parentElement","aspectRatio","AspectRatio","original","naturalWidth","naturalHeight","imgWidth","imgHeight","getBoundingClientRect","containerWidth","containerHeight","parseFocusPoint","point","x","clamp","y","calculateImageShift","containerToImageSizeRatio","containerSize","imageSize","focusSize","toMinus","containerCenter","Math","floor","focusFactor","scaledImage","focus","focusOffset","remainder","containerRemainder","calculateImageStyle","sizes","widthRatio","heightRatio","image","wrapper","useFocusPoint","options","focusPoint","imgRef","loadingState","previousPoint","previousSizes","useState","style","setStyle","updateRef","useMemo","isEqual","Object","values","useLayoutEffect","useImageLoad","state","setState","useCallback","event","img","complete","type","addEventListener","removeEventListener","src","useClickable","onClick","onKeyPress","role","tabIndex","key","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","fallback","mdiImageBrokenVariant","loading","theme","Theme","light","Thumbnail","forwardRef","props","ref","align","alt","badge","className","crossOrigin","fillHeight","imgProps","propImgRef","size","variant","forwardedProps","hasError","isLoading","setWrapper","wrapperProps","mergeRefs","classNames","handleBasicClasses","prefix","hasBadge","display","visibility","Size","m","React","cloneElement","displayName","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"Thumbnail2.js","sources":["../../../src/utils/isInternetExplorer.ts","../../../../../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../../../../../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/element.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/global.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../../../../../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/process.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../../../../../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../../../../../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../../../src/hooks/useOnResize.ts","../../../src/components/thumbnail/useFocusPoint.ts","../../../src/components/thumbnail/useImageLoad.ts","../../../src/components/thumbnail/Thumbnail.tsx"],"sourcesContent":["import { WINDOW } from '@lumx/react/constants';\n\n/**\n * Check if browser is IE\n * @return Browser is IE or not\n */\nexport const isInternetExplorer = () => {\n const userAgent = WINDOW?.navigator?.userAgent;\n if (!userAgent) {\n return false;\n }\n const msie = userAgent.indexOf('MSIE ');\n const isIEVersion = !!userAgent.match(/Trident.*rv:11\\./);\n return msie > 0 || isIEVersion;\n};\n","var resizeObservers = [];\nexport { resizeObservers };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n var event;\n if (typeof ErrorEvent === 'function') {\n event = new ErrorEvent('error', {\n message: msg\n });\n }\n else {\n event = document.createEvent('Event');\n event.initEvent('error', false, false);\n event.message = msg;\n }\n window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","var DOMRectReadOnly = (function () {\n function DOMRectReadOnly(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n this.top = this.y;\n this.left = this.x;\n this.bottom = this.top + this.height;\n this.right = this.left + this.width;\n return Object.freeze(this);\n }\n DOMRectReadOnly.prototype.toJSON = function () {\n var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n };\n DOMRectReadOnly.fromRect = function (rectangle) {\n return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n };\n return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n if (isSVG(target)) {\n var _a = target.getBBox(), width = _a.width, height = _a.height;\n return !width && !height;\n }\n var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n var _a, _b;\n var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;\n return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n switch (target.tagName) {\n case 'INPUT':\n if (target.type !== 'image') {\n break;\n }\n case 'VIDEO':\n case 'AUDIO':\n case 'EMBED':\n case 'OBJECT':\n case 'CANVAS':\n case 'IFRAME':\n case 'IMG':\n return true;\n }\n return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n if (inlineSize === void 0) { inlineSize = 0; }\n if (blockSize === void 0) { blockSize = 0; }\n if (switchSizes === void 0) { switchSizes = false; }\n return Object.freeze({\n inlineSize: (switchSizes ? blockSize : inlineSize) || 0,\n blockSize: (switchSizes ? inlineSize : blockSize) || 0\n });\n};\nvar zeroBoxes = Object.freeze({\n devicePixelContentBoxSize: size(),\n borderBoxSize: size(),\n contentBoxSize: size(),\n contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n if (forceRecalculation === void 0) { forceRecalculation = false; }\n if (cache.has(target) && !forceRecalculation) {\n return cache.get(target);\n }\n if (isHidden(target)) {\n cache.set(target, zeroBoxes);\n return zeroBoxes;\n }\n var cs = getComputedStyle(target);\n var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n var removePadding = !IE && cs.boxSizing === 'border-box';\n var switchSizes = verticalRegexp.test(cs.writingMode || '');\n var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n var horizontalPadding = paddingLeft + paddingRight;\n var verticalPadding = paddingTop + paddingBottom;\n var horizontalBorderArea = borderLeft + borderRight;\n var verticalBorderArea = borderTop + borderBottom;\n var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n var boxes = Object.freeze({\n devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n });\n cache.set(target, boxes);\n return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n switch (observedBox) {\n case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n return devicePixelContentBoxSize;\n case ResizeObserverBoxOptions.BORDER_BOX:\n return borderBoxSize;\n default:\n return contentBoxSize;\n }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nvar ResizeObserverEntry = (function () {\n function ResizeObserverEntry(target) {\n var boxes = calculateBoxSizes(target);\n this.target = target;\n this.contentRect = boxes.contentRect;\n this.borderBoxSize = [boxes.borderBoxSize];\n this.contentBoxSize = [boxes.contentBoxSize];\n this.devicePixelContentBoxSize = [boxes.devicePixelContentBoxSize];\n }\n return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n if (isHidden(node)) {\n return Infinity;\n }\n var depth = 0;\n var parent = node.parentNode;\n while (parent) {\n depth += 1;\n parent = parent.parentNode;\n }\n return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n var shallowestDepth = Infinity;\n var callbacks = [];\n resizeObservers.forEach(function processObserver(ro) {\n if (ro.activeTargets.length === 0) {\n return;\n }\n var entries = [];\n ro.activeTargets.forEach(function processTarget(ot) {\n var entry = new ResizeObserverEntry(ot.target);\n var targetDepth = calculateDepthForNode(ot.target);\n entries.push(entry);\n ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n if (targetDepth < shallowestDepth) {\n shallowestDepth = targetDepth;\n }\n });\n callbacks.push(function resizeObserverCallback() {\n ro.callback.call(ro.observer, entries, ro.observer);\n });\n ro.activeTargets.splice(0, ro.activeTargets.length);\n });\n for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n var callback = callbacks_1[_i];\n callback();\n }\n return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n resizeObservers.forEach(function processObserver(ro) {\n ro.activeTargets.splice(0, ro.activeTargets.length);\n ro.skippedTargets.splice(0, ro.skippedTargets.length);\n ro.observationTargets.forEach(function processTarget(ot) {\n if (ot.isActive()) {\n if (calculateDepthForNode(ot.target) > depth) {\n ro.activeTargets.push(ot);\n }\n else {\n ro.skippedTargets.push(ot);\n }\n }\n });\n });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n var depth = 0;\n gatherActiveObservationsAtDepth(depth);\n while (hasActiveObservations()) {\n depth = broadcastActiveObservations();\n gatherActiveObservationsAtDepth(depth);\n }\n if (hasSkippedObservations()) {\n deliverResizeLoopError();\n }\n return depth > 0;\n};\nexport { process };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n if (!trigger) {\n var toggle_1 = 0;\n var el_1 = document.createTextNode('');\n var config = { characterData: true };\n new MutationObserver(function () { return notify(); }).observe(el_1, config);\n trigger = function () { el_1.textContent = \"\" + (toggle_1 ? toggle_1-- : toggle_1++); };\n }\n callbacks.push(callback);\n trigger();\n};\nexport { queueMicroTask };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n queueMicroTask(function ResizeObserver() {\n requestAnimationFrame(cb);\n });\n};\nexport { queueResizeObserver };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n 'resize',\n 'load',\n 'transitionend',\n 'animationend',\n 'animationstart',\n 'animationiteration',\n 'keyup',\n 'keydown',\n 'mouseup',\n 'mousedown',\n 'mouseover',\n 'mouseout',\n 'blur',\n 'focus'\n];\nvar time = function (timeout) {\n if (timeout === void 0) { timeout = 0; }\n return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n function Scheduler() {\n var _this = this;\n this.stopped = true;\n this.listener = function () { return _this.schedule(); };\n }\n Scheduler.prototype.run = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = CATCH_PERIOD; }\n if (scheduled) {\n return;\n }\n scheduled = true;\n var until = time(timeout);\n queueResizeObserver(function () {\n var elementsHaveResized = false;\n try {\n elementsHaveResized = process();\n }\n finally {\n scheduled = false;\n timeout = until - time();\n if (!isWatching()) {\n return;\n }\n if (elementsHaveResized) {\n _this.run(1000);\n }\n else if (timeout > 0) {\n _this.run(timeout);\n }\n else {\n _this.start();\n }\n }\n });\n };\n Scheduler.prototype.schedule = function () {\n this.stop();\n this.run();\n };\n Scheduler.prototype.observe = function () {\n var _this = this;\n var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n };\n Scheduler.prototype.start = function () {\n var _this = this;\n if (this.stopped) {\n this.stopped = false;\n this.observer = new MutationObserver(this.listener);\n this.observe();\n events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n }\n };\n Scheduler.prototype.stop = function () {\n var _this = this;\n if (!this.stopped) {\n this.observer && this.observer.disconnect();\n events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n this.stopped = true;\n }\n };\n return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n !watching && n > 0 && scheduler.start();\n watching += n;\n !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n return !isSVG(target)\n && !isReplacedElement(target)\n && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n function ResizeObservation(target, observedBox) {\n this.target = target;\n this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n this.lastReportedSize = {\n inlineSize: 0,\n blockSize: 0\n };\n }\n ResizeObservation.prototype.isActive = function () {\n var size = calculateBoxSize(this.target, this.observedBox, true);\n if (skipNotifyOnElement(this.target)) {\n this.lastReportedSize = size;\n }\n if (this.lastReportedSize.inlineSize !== size.inlineSize\n || this.lastReportedSize.blockSize !== size.blockSize) {\n return true;\n }\n return false;\n };\n return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n function ResizeObserverDetail(resizeObserver, callback) {\n this.activeTargets = [];\n this.skippedTargets = [];\n this.observationTargets = [];\n this.observer = resizeObserver;\n this.callback = callback;\n }\n return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n for (var i = 0; i < observationTargets.length; i += 1) {\n if (observationTargets[i].target === target) {\n return i;\n }\n }\n return -1;\n};\nvar ResizeObserverController = (function () {\n function ResizeObserverController() {\n }\n ResizeObserverController.connect = function (resizeObserver, callback) {\n var detail = new ResizeObserverDetail(resizeObserver, callback);\n observerMap.set(resizeObserver, detail);\n };\n ResizeObserverController.observe = function (resizeObserver, target, options) {\n var detail = observerMap.get(resizeObserver);\n var firstObservation = detail.observationTargets.length === 0;\n if (getObservationIndex(detail.observationTargets, target) < 0) {\n firstObservation && resizeObservers.push(detail);\n detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n updateCount(1);\n scheduler.schedule();\n }\n };\n ResizeObserverController.unobserve = function (resizeObserver, target) {\n var detail = observerMap.get(resizeObserver);\n var index = getObservationIndex(detail.observationTargets, target);\n var lastObservation = detail.observationTargets.length === 1;\n if (index >= 0) {\n lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n detail.observationTargets.splice(index, 1);\n updateCount(-1);\n }\n };\n ResizeObserverController.disconnect = function (resizeObserver) {\n var _this = this;\n var detail = observerMap.get(resizeObserver);\n detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n detail.activeTargets.splice(0, detail.activeTargets.length);\n };\n return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n function ResizeObserver(callback) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (typeof callback !== 'function') {\n throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n }\n ResizeObserverController.connect(this, callback);\n }\n ResizeObserver.prototype.observe = function (target, options) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.observe(this, target, options);\n };\n ResizeObserver.prototype.unobserve = function (target) {\n if (arguments.length === 0) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n }\n if (!isElement(target)) {\n throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n }\n ResizeObserverController.unobserve(this, target);\n };\n ResizeObserver.prototype.disconnect = function () {\n ResizeObserverController.disconnect(this);\n };\n ResizeObserver.toString = function () {\n return 'function ResizeObserver () { [polyfill code] }';\n };\n return ResizeObserver;\n}());\nexport { ResizeObserver };\n","import { Callback, Falsy } from '@lumx/react/utils';\nimport { MutableRefObject, RefObject, useEffect, useRef } from 'react';\nimport { WINDOW } from '@lumx/react/constants';\nimport { ResizeObserver as Polyfill } from '@juggle/resize-observer';\n\nconst ResizeObserver: typeof Polyfill = (WINDOW as any)?.ResizeObserver || Polyfill;\n\nexport function useOnResize(element: HTMLElement | Falsy, update: RefObject<Callback>): void {\n const observerRef = useRef(null) as MutableRefObject<Polyfill | null>;\n const previousSize = useRef<{ width: number; height: number }>();\n\n useEffect(() => {\n if (!element || !update) {\n return undefined;\n }\n\n previousSize.current = undefined;\n const observer =\n observerRef.current ||\n new ResizeObserver(([entry]) => {\n const updateFunction = update.current;\n if (!updateFunction) {\n return;\n }\n\n const { width, height } = entry.contentRect;\n if (previousSize.current?.width === width && previousSize.current?.height === height) {\n return;\n }\n\n window.requestAnimationFrame(() => updateFunction());\n previousSize.current = entry.contentRect;\n });\n if (!observerRef.current) observerRef.current = observer;\n\n observer.observe(element);\n return () => {\n observer.unobserve(element);\n };\n }, [element, update]);\n}\n","import { CSSProperties, MutableRefObject, RefObject, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useOnResize } from '@lumx/react/hooks/useOnResize';\nimport { AspectRatio } from '@lumx/react';\nimport { clamp } from '@lumx/react/utils/clamp';\nimport { LoadingState } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { Callback } from '@lumx/react/utils';\nimport { isEqual } from 'lodash';\nimport { FocusPoint } from './types';\n\nconst IMG_STYLES: CSSProperties = {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n top: 0,\n minHeight: '100%',\n minWidth: '100%',\n};\n\nconst WRAPPER_STYLES: CSSProperties = {\n overflow: 'hidden',\n position: 'relative',\n};\n\ntype Sizes = {\n imgWidth?: number;\n imgHeight?: number;\n containerWidth?: number;\n containerHeight?: number;\n aspectRatio?: AspectRatio;\n};\n\nfunction calculateSizes(\n imageElement?: HTMLImageElement | null | undefined,\n parentElement?: HTMLElement | null,\n aspectRatio?: AspectRatio,\n): Sizes | undefined {\n if (!imageElement || !parentElement || !aspectRatio || aspectRatio === AspectRatio.original) return undefined;\n const { naturalWidth: imgWidth, naturalHeight: imgHeight } = imageElement || { naturalWidth: 0, naturalHeight: 0 };\n const { width: containerWidth, height: containerHeight } = parentElement?.getBoundingClientRect() || {\n width: 0,\n height: 0,\n };\n return { imgWidth, imgHeight, containerWidth, containerHeight, aspectRatio };\n}\n\nconst parseFocusPoint = (point: FocusPoint = {}): Required<FocusPoint> => {\n return { x: point.x ? clamp(point.x, -1, 1) : 0, y: point.y ? clamp(point.y, -1, 1) : 0 };\n};\n\nfunction calculateImageShift(\n containerToImageSizeRatio: number,\n containerSize: number,\n imageSize: number,\n focusSize: number,\n toMinus?: boolean,\n) {\n const containerCenter = Math.floor(containerSize / 2); // Container center in px\n const focusFactor = (focusSize + 1) / 2; // Focus point of resize image in px\n const scaledImage = Math.floor(imageSize / containerToImageSizeRatio); // Can't use width() as images may be display:none\n let focus = Math.floor(focusFactor * scaledImage);\n if (toMinus) {\n focus = scaledImage - focus;\n }\n let focusOffset = focus - containerCenter; // Calculate difference between focus point and center\n const remainder = scaledImage - focus; // Reduce offset if necessary so image remains filled\n const containerRemainder = containerSize - containerCenter;\n if (remainder < containerRemainder) {\n focusOffset -= containerRemainder - remainder;\n }\n if (focusOffset < 0) {\n focusOffset = 0;\n }\n return (focusOffset * -100) / containerSize;\n}\n\ntype Styles = { wrapper: CSSProperties; image: CSSProperties };\n\nfunction calculateImageStyle(sizes: Sizes, point: Required<FocusPoint>): Styles | undefined {\n if (!sizes.imgWidth || !sizes.imgHeight || !sizes.containerWidth || !sizes.containerHeight) {\n return undefined;\n }\n\n // Which is over by more?\n const widthRatio = sizes.imgWidth / sizes.containerWidth;\n const heightRatio = sizes.imgHeight / sizes.containerHeight;\n\n const image: CSSProperties = { ...IMG_STYLES };\n\n // Minimize image while still filling space\n if (sizes.imgWidth > sizes.containerWidth && sizes.imgHeight > sizes.containerHeight) {\n image[widthRatio > heightRatio ? 'maxHeight' : 'maxWidth'] = '100%';\n }\n\n if (widthRatio > heightRatio) {\n image.left = `${calculateImageShift(heightRatio, sizes.containerWidth, sizes.imgWidth, point.x)}%`;\n } else if (widthRatio < heightRatio) {\n image.top = `${calculateImageShift(widthRatio, sizes.containerHeight, sizes.imgHeight, point.y, true)}%`;\n }\n\n return {\n image,\n wrapper: WRAPPER_STYLES,\n };\n}\n\n/**\n * Hook that calculate CSS style to shift the image in it's container according to the focus point.\n */\nexport const useFocusPoint = (options: {\n image: string;\n focusPoint?: FocusPoint;\n aspectRatio?: AspectRatio;\n imgRef: RefObject<HTMLImageElement>;\n loadingState: LoadingState;\n wrapper?: HTMLElement;\n}): Styles | undefined => {\n const { image, aspectRatio, focusPoint, imgRef, loadingState, wrapper } = options;\n\n const point = parseFocusPoint(focusPoint);\n\n const previousPoint = useRef<Required<FocusPoint>>();\n const previousSizes = useRef<Sizes>({});\n const [style, setStyle] = useState<Styles>();\n\n // Update style.\n const updateRef = useRef<Callback>(null);\n const update = useMemo(\n () => {\n const updateFunction = () => {\n const sizes = calculateSizes(imgRef?.current, wrapper, aspectRatio);\n if (!sizes || (isEqual(sizes, previousSizes.current) && isEqual(point, previousPoint.current))) {\n // Nothing changed.\n return;\n }\n setStyle(calculateImageStyle(sizes, point));\n previousPoint.current = point;\n previousSizes.current = sizes;\n };\n (updateRef as MutableRefObject<Callback>).current = updateFunction;\n return updateFunction;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...Object.values(point), imgRef, wrapper, aspectRatio],\n );\n\n // Update on image loaded.\n useLayoutEffect(update, [image, update, loadingState]);\n\n // Update on parent resize.\n useOnResize(wrapper, updateRef);\n\n return style;\n};\n","import { RefObject, useCallback, useEffect, useState } from 'react';\n\nexport type LoadingState = 'isLoading' | 'isLoaded' | 'hasError';\n\nexport function useImageLoad(imgRef?: RefObject<HTMLImageElement>): LoadingState {\n const [state, setState] = useState<LoadingState>('isLoading');\n\n const update = useCallback(\n (event?: any) => {\n const img = imgRef?.current;\n if (!img || !img.complete) {\n setState('isLoading');\n return;\n }\n\n if (event?.type === 'error' || (img.complete && img?.naturalWidth === 0)) {\n setState('hasError');\n return;\n }\n\n setState('isLoaded');\n },\n [imgRef],\n );\n\n useEffect(() => {\n const img = imgRef?.current;\n if (!img) return undefined;\n\n update();\n img.addEventListener('load', update);\n img.addEventListener('error', update);\n return () => {\n img.removeEventListener('load', update);\n img.removeEventListener('error', update);\n };\n }, [update, imgRef, imgRef?.current?.src]);\n return state;\n}\n","import React, {\n forwardRef,\n ImgHTMLAttributes,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactElement,\n ReactNode,\n Ref,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\n\nimport { AspectRatio, HorizontalAlignment, Icon, Size, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\n\nimport { mdiImageBrokenVariant } from '@lumx/icons';\nimport { isInternetExplorer } from '@lumx/react/utils/isInternetExplorer';\nimport { mergeRefs } from '@lumx/react/utils/mergeRefs';\nimport { useFocusPoint } from '@lumx/react/components/thumbnail/useFocusPoint';\nimport { useImageLoad } from '@lumx/react/components/thumbnail/useImageLoad';\nimport { FocusPoint, ThumbnailSize, ThumbnailVariant } from './types';\n\ntype ImgHTMLProps = ImgHTMLAttributes<HTMLImageElement>;\n\n/**\n * Defines the props of the component.\n */\nexport interface ThumbnailProps extends GenericProps {\n /** Alignment of the thumbnail in it's parent (requires flex parent). */\n align?: HorizontalAlignment;\n /** Image alternative text. */\n alt: string;\n /** Image aspect ratio. */\n aspectRatio?: AspectRatio;\n /** Badge. */\n badge?: ReactElement;\n /** Image cross origin resource policy. */\n crossOrigin?: ImgHTMLProps['crossOrigin'];\n /** Fallback icon (SVG path) or react node when image fails to load. */\n fallback?: string | ReactNode;\n /** Whether the thumbnail should fill it's parent size (requires flex parent) or not. */\n fillHeight?: boolean;\n /** Apply relative vertical and horizontal shift (from -1 to 1) on the image position inside the thumbnail. */\n focusPoint?: FocusPoint;\n /** Image URL. */\n image: string;\n /** Props to inject into the native <img> element. */\n imgProps?: ImgHTMLProps;\n /** Reference to the native <img> element. */\n imgRef?: Ref<HTMLImageElement>;\n /** Size variant of the component. */\n size?: ThumbnailSize;\n /** Image loading mode. */\n loading?: ImgHTMLProps['loading'];\n /** On click callback. */\n onClick?: MouseEventHandler<HTMLDivElement>;\n /** On key press callback. */\n onKeyPress?: KeyboardEventHandler<HTMLDivElement>;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** Variant of the component. */\n variant?: ThumbnailVariant;\n /** Props to pass to the link wrapping the thumbnail. */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'Thumbnail';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<ThumbnailProps> = {\n fallback: mdiImageBrokenVariant,\n loading: 'lazy',\n theme: Theme.light,\n};\n\n/**\n * Thumbnail component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const Thumbnail: Comp<ThumbnailProps> = forwardRef((props, ref) => {\n const {\n align,\n alt,\n aspectRatio,\n badge,\n className,\n crossOrigin,\n fallback,\n fillHeight,\n focusPoint,\n image,\n imgProps,\n imgRef: propImgRef,\n loading,\n size,\n theme,\n variant,\n linkProps,\n linkAs,\n ...forwardedProps\n } = props;\n const imgRef = useRef<HTMLImageElement>(null);\n\n // Image loading state.\n const loadingState = useImageLoad(imgRef);\n const hasError = loadingState === 'hasError';\n const isLoading = loadingState === 'isLoading';\n\n const [wrapper, setWrapper] = useState<HTMLElement>();\n\n const isLink = Boolean(linkProps?.href || linkAs);\n const isButton = !!forwardedProps.onClick;\n const isClickable = isButton || isLink;\n\n let Wrapper: any = 'div';\n const wrapperProps = { ...forwardedProps };\n if (isLink) {\n Wrapper = linkAs || 'a';\n Object.assign(wrapperProps, linkProps);\n } else if (isButton) {\n Wrapper = 'button';\n }\n\n // Update img style according to focus point and aspect ratio.\n const style = useFocusPoint({ image, focusPoint, aspectRatio, imgRef, loadingState, wrapper });\n\n return (\n <Wrapper\n {...wrapperProps}\n ref={mergeRefs(setWrapper, ref) as any}\n className={classNames(\n linkProps?.className,\n className,\n handleBasicClasses({\n align,\n aspectRatio,\n prefix: CLASSNAME,\n size,\n theme,\n variant,\n isClickable,\n hasBadge: !!badge,\n }),\n isLoading && wrapper?.getBoundingClientRect()?.height && 'lumx-color-background-dark-L6',\n fillHeight && `${CLASSNAME}--fill-height`,\n )}\n >\n <div\n className={`${CLASSNAME}__background`}\n style={{\n ...style?.wrapper,\n // Remove from layout if image not loaded correctly (use fallback)\n display: hasError ? 'none' : undefined,\n // Hide while loading.\n visibility: isLoading ? 'hidden' : undefined,\n }}\n >\n <img\n {...imgProps}\n style={{\n ...imgProps?.style,\n ...style?.image,\n }}\n ref={mergeRefs(imgRef, propImgRef)}\n className={style?.image ? `${CLASSNAME}__focused-image` : `${CLASSNAME}__image`}\n crossOrigin={crossOrigin && !isInternetExplorer() ? crossOrigin : undefined}\n src={image}\n alt={alt}\n loading={loading}\n />\n </div>\n {hasError &&\n (typeof fallback === 'string' ? (\n <Icon className={`${CLASSNAME}__fallback`} icon={fallback} size={size || Size.m} theme={theme} />\n ) : (\n <div className={`${CLASSNAME}__fallback`}>{fallback}</div>\n ))}\n {badge &&\n React.cloneElement(badge, { className: classNames(`${CLASSNAME}__badge`, badge.props.className) })}\n </Wrapper>\n );\n});\nThumbnail.displayName = COMPONENT_NAME;\nThumbnail.className = CLASSNAME;\nThumbnail.defaultProps = DEFAULT_PROPS;\n"],"names":["isInternetExplorer","userAgent","WINDOW","navigator","msie","indexOf","isIEVersion","match","ResizeObserver","Polyfill","useOnResize","element","update","observerRef","useRef","previousSize","useEffect","undefined","current","observer","entry","updateFunction","contentRect","width","height","window","requestAnimationFrame","observe","unobserve","IMG_STYLES","bottom","left","position","right","top","minHeight","minWidth","WRAPPER_STYLES","overflow","calculateSizes","imageElement","parentElement","aspectRatio","AspectRatio","original","naturalWidth","naturalHeight","imgWidth","imgHeight","getBoundingClientRect","containerWidth","containerHeight","parseFocusPoint","point","x","clamp","y","calculateImageShift","containerToImageSizeRatio","containerSize","imageSize","focusSize","toMinus","containerCenter","Math","floor","focusFactor","scaledImage","focus","focusOffset","remainder","containerRemainder","calculateImageStyle","sizes","widthRatio","heightRatio","image","wrapper","useFocusPoint","options","focusPoint","imgRef","loadingState","previousPoint","previousSizes","useState","style","setStyle","updateRef","useMemo","isEqual","Object","values","useLayoutEffect","useImageLoad","state","setState","useCallback","event","img","complete","type","addEventListener","removeEventListener","src","COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","fallback","mdiImageBrokenVariant","loading","theme","Theme","light","Thumbnail","forwardRef","props","ref","align","alt","badge","className","crossOrigin","fillHeight","imgProps","propImgRef","size","variant","linkProps","linkAs","forwardedProps","hasError","isLoading","setWrapper","isLink","Boolean","href","isButton","onClick","isClickable","Wrapper","wrapperProps","assign","mergeRefs","classNames","handleBasicClasses","prefix","hasBadge","display","visibility","Size","m","React","cloneElement","displayName","defaultProps"],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- import { b as _objectWithoutProperties, c as _extends } from './_rollupPluginBabelHelpers.js';
1
+ import { b as _objectWithoutProperties, _ as _objectSpread2, c as _extends } from './_rollupPluginBabelHelpers.js';
2
2
  import { Size, Orientation, Theme } from './components.js';
3
3
  import React, { forwardRef } from 'react';
4
4
  import { g as getRootClassName, c as classnames, h as handleBasicClasses } from './getRootClassName.js';
5
5
  import { A as Avatar } from './Avatar2.js';
6
+ import { r as renderLink } from './renderLink.js';
7
+ import { isEmpty } from 'lodash';
6
8
 
7
9
  /**
8
10
  * Component display name.
@@ -43,7 +45,9 @@ var UserBlock = forwardRef(function (props, ref) {
43
45
  simpleAction = props.simpleAction,
44
46
  size = props.size,
45
47
  theme = props.theme,
46
- forwardedProps = _objectWithoutProperties(props, ["avatarProps", "className", "fields", "multipleActions", "name", "onClick", "onMouseEnter", "onMouseLeave", "orientation", "simpleAction", "size", "theme"]);
48
+ linkProps = props.linkProps,
49
+ linkAs = props.linkAs,
50
+ forwardedProps = _objectWithoutProperties(props, ["avatarProps", "className", "fields", "multipleActions", "name", "onClick", "onMouseEnter", "onMouseLeave", "orientation", "simpleAction", "size", "theme", "linkProps", "linkAs"]);
47
51
 
48
52
  var componentSize = size; // Special case - When using vertical orientation force the size to be Sizes.l.
49
53
 
@@ -52,12 +56,37 @@ var UserBlock = forwardRef(function (props, ref) {
52
56
  }
53
57
 
54
58
  var shouldDisplayActions = orientation === Orientation.vertical;
55
- var nameBlock = name && // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-tabindex,jsx-a11y/no-static-element-interactions
56
- React.createElement("span", {
57
- className: "".concat(CLASSNAME, "__name"),
58
- onClick: onClick,
59
- tabIndex: onClick ? 0 : -1
60
- }, name);
59
+ var isLink = Boolean((linkProps === null || linkProps === void 0 ? void 0 : linkProps.href) || linkAs);
60
+ var isClickable = !!onClick || isLink;
61
+ var nameBlock = React.useMemo(function () {
62
+ if (isEmpty(name)) {
63
+ return null;
64
+ }
65
+
66
+ var nameClassName = classnames(handleBasicClasses({
67
+ prefix: "".concat(CLASSNAME, "__name"),
68
+ isClickable: isClickable
69
+ }), isLink && (linkProps === null || linkProps === void 0 ? void 0 : linkProps.className));
70
+
71
+ if (isLink) {
72
+ return renderLink(_objectSpread2({}, linkProps, {
73
+ linkAs: linkAs,
74
+ className: nameClassName
75
+ }), name);
76
+ }
77
+
78
+ if (onClick) {
79
+ return React.createElement("button", {
80
+ onClick: onClick,
81
+ type: "button",
82
+ className: nameClassName
83
+ }, name);
84
+ }
85
+
86
+ return React.createElement("span", {
87
+ className: nameClassName
88
+ }, name);
89
+ }, [isClickable, isLink, linkAs, linkProps, name, onClick]);
61
90
  var fieldsBlock = fields && componentSize !== Size.s && React.createElement("div", {
62
91
  className: "".concat(CLASSNAME, "__fields")
63
92
  }, fields.map(function (aField, idx) {
@@ -73,18 +102,19 @@ var UserBlock = forwardRef(function (props, ref) {
73
102
  prefix: CLASSNAME,
74
103
  orientation: orientation,
75
104
  size: componentSize,
76
- theme: theme
105
+ theme: theme,
106
+ isClickable: isClickable
77
107
  })),
78
108
  onMouseLeave: onMouseLeave,
79
109
  onMouseEnter: onMouseEnter
80
- }), avatarProps && React.createElement("div", {
81
- className: "".concat(CLASSNAME, "__avatar")
82
- }, React.createElement(Avatar, _extends({}, avatarProps, {
110
+ }), avatarProps && React.createElement(Avatar, _extends({
111
+ linkProps: linkProps
112
+ }, avatarProps, {
113
+ className: classnames("".concat(CLASSNAME, "__avatar"), avatarProps.className),
83
114
  size: componentSize,
84
115
  onClick: onClick,
85
- tabIndex: onClick ? 0 : -1,
86
116
  theme: theme
87
- }))), (fields || name) && React.createElement("div", {
117
+ })), (fields || name) && React.createElement("div", {
88
118
  className: "".concat(CLASSNAME, "__wrapper")
89
119
  }, nameBlock, fieldsBlock), shouldDisplayActions && simpleAction && React.createElement("div", {
90
120
  className: "".concat(CLASSNAME, "__action")
@@ -1 +1 @@
1
- {"version":3,"file":"UserBlock.js","sources":["../../../src/components/user-block/UserBlock.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Avatar, Orientation, Size, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * User block sizes.\n */\nexport type UserBlockSize = Extract<Size, 's' | 'm' | 'l'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface UserBlockProps extends GenericProps {\n /** Props to pass to the avatar. */\n avatarProps?: AvatarProps;\n /** Simple action toolbar content. */\n simpleAction?: ReactNode;\n /** Multiple action toolbar content. */\n multipleActions?: ReactNode;\n /** Additional fields used to describe the user. */\n fields?: string[];\n /** User name. */\n name?: string;\n /** Orientation. */\n orientation?: Orientation;\n /** Size variant. */\n size?: UserBlockSize;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** On click callback. */\n onClick?(): void;\n /** On mouse enter callback. */\n onMouseEnter?(): void;\n /** On mouse leave callback. */\n onMouseLeave?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'UserBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<UserBlockProps> = {\n orientation: Orientation.horizontal,\n size: Size.m,\n theme: Theme.light,\n};\n\n/**\n * UserBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const UserBlock: Comp<UserBlockProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n avatarProps,\n className,\n fields,\n multipleActions,\n name,\n onClick,\n onMouseEnter,\n onMouseLeave,\n orientation,\n simpleAction,\n size,\n theme,\n ...forwardedProps\n } = props;\n let componentSize = size;\n\n // Special case - When using vertical orientation force the size to be Sizes.l.\n if (orientation === Orientation.vertical) {\n componentSize = Size.l;\n }\n\n const shouldDisplayActions: boolean = orientation === Orientation.vertical;\n\n const nameBlock: ReactNode = name && (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-tabindex,jsx-a11y/no-static-element-interactions\n <span className={`${CLASSNAME}__name`} onClick={onClick} tabIndex={onClick ? 0 : -1}>\n {name}\n </span>\n );\n\n const fieldsBlock: ReactNode = fields && componentSize !== Size.s && (\n <div className={`${CLASSNAME}__fields`}>\n {fields.map((aField: string, idx: number) => (\n <span key={idx} className={`${CLASSNAME}__field`}>\n {aField}\n </span>\n ))}\n </div>\n );\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({ prefix: CLASSNAME, orientation, size: componentSize, theme }),\n )}\n onMouseLeave={onMouseLeave}\n onMouseEnter={onMouseEnter}\n >\n {avatarProps && (\n <div className={`${CLASSNAME}__avatar`}>\n <Avatar\n {...avatarProps}\n size={componentSize}\n onClick={onClick}\n tabIndex={onClick ? 0 : -1}\n theme={theme}\n />\n </div>\n )}\n {(fields || name) && (\n <div className={`${CLASSNAME}__wrapper`}>\n {nameBlock}\n {fieldsBlock}\n </div>\n )}\n {shouldDisplayActions && simpleAction && <div className={`${CLASSNAME}__action`}>{simpleAction}</div>}\n {shouldDisplayActions && multipleActions && (\n <div className={`${CLASSNAME}__actions`}>{multipleActions}</div>\n )}\n </div>\n );\n});\nUserBlock.displayName = COMPONENT_NAME;\nUserBlock.className = CLASSNAME;\nUserBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","orientation","Orientation","horizontal","size","Size","m","theme","Theme","light","UserBlock","forwardRef","props","ref","avatarProps","className","fields","multipleActions","name","onClick","onMouseEnter","onMouseLeave","simpleAction","forwardedProps","componentSize","vertical","l","shouldDisplayActions","nameBlock","fieldsBlock","s","map","aField","idx","classNames","handleBasicClasses","prefix","displayName","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"UserBlock.js","sources":["../../../src/components/user-block/UserBlock.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Avatar, Orientation, Size, Theme } from '@lumx/react';\n\nimport { Comp, GenericProps, getRootClassName, handleBasicClasses } from '@lumx/react/utils';\nimport { isEmpty } from 'lodash';\nimport { renderLink } from '@lumx/react/utils/renderLink';\nimport { AvatarProps } from '../avatar/Avatar';\n\n/**\n * User block sizes.\n */\nexport type UserBlockSize = Extract<Size, 's' | 'm' | 'l'>;\n\n/**\n * Defines the props of the component.\n */\nexport interface UserBlockProps extends GenericProps {\n /** Props to pass to the avatar. */\n avatarProps?: AvatarProps;\n /** Props to pass to the link wrapping the avatar thumbnail. */\n linkProps?: React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n /** Custom react component for the link (can be used to inject react router Link). */\n linkAs?: 'a' | any;\n /** Simple action toolbar content. */\n simpleAction?: ReactNode;\n /** Multiple action toolbar content. */\n multipleActions?: ReactNode;\n /** Additional fields used to describe the user. */\n fields?: string[];\n /** User name. */\n name?: string;\n /** Orientation. */\n orientation?: Orientation;\n /** Size variant. */\n size?: UserBlockSize;\n /** Theme adapting the component to light or dark background. */\n theme?: Theme;\n /** On click callback. */\n onClick?(): void;\n /** On mouse enter callback. */\n onMouseEnter?(): void;\n /** On mouse leave callback. */\n onMouseLeave?(): void;\n}\n\n/**\n * Component display name.\n */\nconst COMPONENT_NAME = 'UserBlock';\n\n/**\n * Component default class name and class prefix.\n */\nconst CLASSNAME = getRootClassName(COMPONENT_NAME);\n\n/**\n * Component default props.\n */\nconst DEFAULT_PROPS: Partial<UserBlockProps> = {\n orientation: Orientation.horizontal,\n size: Size.m,\n theme: Theme.light,\n};\n\n/**\n * UserBlock component.\n *\n * @param props Component props.\n * @param ref Component ref.\n * @return React element.\n */\nexport const UserBlock: Comp<UserBlockProps, HTMLDivElement> = forwardRef((props, ref) => {\n const {\n avatarProps,\n className,\n fields,\n multipleActions,\n name,\n onClick,\n onMouseEnter,\n onMouseLeave,\n orientation,\n simpleAction,\n size,\n theme,\n linkProps,\n linkAs,\n ...forwardedProps\n } = props;\n let componentSize = size;\n\n // Special case - When using vertical orientation force the size to be Sizes.l.\n if (orientation === Orientation.vertical) {\n componentSize = Size.l;\n }\n\n const shouldDisplayActions: boolean = orientation === Orientation.vertical;\n\n const isLink = Boolean(linkProps?.href || linkAs);\n const isClickable = !!onClick || isLink;\n\n const nameBlock: ReactNode = React.useMemo(() => {\n if (isEmpty(name)) {\n return null;\n }\n const nameClassName = classNames(\n handleBasicClasses({ prefix: `${CLASSNAME}__name`, isClickable }),\n isLink && linkProps?.className,\n );\n if (isLink) {\n return renderLink({ ...linkProps, linkAs, className: nameClassName }, name);\n }\n if (onClick) {\n return (\n <button onClick={onClick} type=\"button\" className={nameClassName}>\n {name}\n </button>\n );\n }\n return <span className={nameClassName}>{name}</span>;\n }, [isClickable, isLink, linkAs, linkProps, name, onClick]);\n\n const fieldsBlock: ReactNode = fields && componentSize !== Size.s && (\n <div className={`${CLASSNAME}__fields`}>\n {fields.map((aField: string, idx: number) => (\n <span key={idx} className={`${CLASSNAME}__field`}>\n {aField}\n </span>\n ))}\n </div>\n );\n\n return (\n <div\n ref={ref}\n {...forwardedProps}\n className={classNames(\n className,\n handleBasicClasses({ prefix: CLASSNAME, orientation, size: componentSize, theme, isClickable }),\n )}\n onMouseLeave={onMouseLeave}\n onMouseEnter={onMouseEnter}\n >\n {avatarProps && (\n <Avatar\n linkProps={linkProps}\n {...avatarProps}\n className={classNames(`${CLASSNAME}__avatar`, avatarProps.className)}\n size={componentSize}\n onClick={onClick}\n theme={theme}\n />\n )}\n {(fields || name) && (\n <div className={`${CLASSNAME}__wrapper`}>\n {nameBlock}\n {fieldsBlock}\n </div>\n )}\n {shouldDisplayActions && simpleAction && <div className={`${CLASSNAME}__action`}>{simpleAction}</div>}\n {shouldDisplayActions && multipleActions && (\n <div className={`${CLASSNAME}__actions`}>{multipleActions}</div>\n )}\n </div>\n );\n});\nUserBlock.displayName = COMPONENT_NAME;\nUserBlock.className = CLASSNAME;\nUserBlock.defaultProps = DEFAULT_PROPS;\n"],"names":["COMPONENT_NAME","CLASSNAME","getRootClassName","DEFAULT_PROPS","orientation","Orientation","horizontal","size","Size","m","theme","Theme","light","UserBlock","forwardRef","props","ref","avatarProps","className","fields","multipleActions","name","onClick","onMouseEnter","onMouseLeave","simpleAction","linkProps","linkAs","forwardedProps","componentSize","vertical","l","shouldDisplayActions","isLink","Boolean","href","isClickable","nameBlock","React","useMemo","isEmpty","nameClassName","classNames","handleBasicClasses","prefix","renderLink","fieldsBlock","s","map","aField","idx","displayName","defaultProps"],"mappings":"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"}
@@ -10,6 +10,7 @@ import 'lodash/noop';
10
10
  import './constants.js';
11
11
  import './mergeRefs.js';
12
12
  import './Avatar2.js';
13
+ import './renderLink.js';
13
14
  import './Icon2.js';
14
15
  import './clamp.js';
15
16
  import './Thumbnail2.js';
@@ -1 +1 @@
1
- {"version":3,"file":"user-block.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"user-block.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -7,8 +7,8 @@
7
7
  },
8
8
  "dependencies": {
9
9
  "@juggle/resize-observer": "^3.2.0",
10
- "@lumx/core": "^2.1.3",
11
- "@lumx/icons": "^2.1.3",
10
+ "@lumx/core": "^2.1.6-alpha.1",
11
+ "@lumx/icons": "^2.1.6-alpha.1",
12
12
  "@popperjs/core": "^2.5.4",
13
13
  "body-scroll-lock": "^3.1.5",
14
14
  "classnames": "^2.2.6",
@@ -28,12 +28,13 @@
28
28
  "@babel/preset-typescript": "^7.12.7",
29
29
  "@rollup/plugin-commonjs": "^15.0.0",
30
30
  "@rollup/plugin-node-resolve": "9.0.0",
31
- "@storybook/addon-a11y": "^5.3.12",
32
- "@storybook/addon-actions": "^5.3.19",
33
- "@storybook/addon-knobs": "^5.3.12",
34
- "@storybook/addon-storysource": "^5.3.12",
35
- "@storybook/addon-viewport": "^5.3.12",
36
- "@storybook/react": "^5.3.12",
31
+ "@storybook/addon-a11y": "^5.3.21",
32
+ "@storybook/addon-actions": "^5.3.21",
33
+ "@storybook/addon-knobs": "^5.3.21",
34
+ "@storybook/addon-storysource": "^5.3.21",
35
+ "@storybook/addon-viewport": "^5.3.21",
36
+ "@storybook/core": "^5.3.21",
37
+ "@storybook/react": "^5.3.21",
37
38
  "@types/body-scroll-lock": "^2.6.1",
38
39
  "@types/classnames": "^2.2.9",
39
40
  "@types/enzyme": "^3.10.5",
@@ -78,7 +79,6 @@
78
79
  "ts-jest": "^26.2.0",
79
80
  "tsconfig-paths-webpack-plugin": "^3.2.0",
80
81
  "typescript": "^4.1.2",
81
- "version-changelog": "^3.1.1",
82
82
  "yargs": "^15.4.1",
83
83
  "yarn": "^1.19.1"
84
84
  },
@@ -115,17 +115,16 @@
115
115
  "url": "git+https://github.com/lumapps/design-system.git"
116
116
  },
117
117
  "scripts": {
118
- "build": "rollup -c",
119
- "postbuild": "dts-bundle-generator --no-check --external-types=react --external-imports=moment -o dist/types.d.ts src/index.ts",
118
+ "build": "rollup -c && yarn generate:types",
119
+ "generate:types": "dts-bundle-generator --no-check --external-types=react --external-imports=moment -o dist/types.d.ts src/index.ts",
120
120
  "prepare": "install-peers || exit 0",
121
121
  "prepublishOnly": "yarn build",
122
122
  "test": "jest --config jest/index.js --coverage --notify --passWithNoTests --detectOpenHandles --runInBand",
123
- "storybook": "start-storybook -s ../site-demo/static/ -p 9000"
123
+ "prepare:storybook": "mkdir -p node_modules",
124
+ "storybook": "yarn prepare:storybook && start-storybook -s ../site-demo/static/ -p 9000",
125
+ "build:storybook": "yarn prepare:storybook && build-storybook -s ../site-demo/static"
124
126
  },
125
127
  "sideEffects": false,
126
- "version": "2.1.3",
127
- "resolutions": {
128
- "**/style-loader": "^1.0.0"
129
- },
130
- "gitHead": "70a2a3a7c4dff43bf7fb264eb1a75913e798dfa9"
128
+ "version": "2.1.6-alpha.1",
129
+ "gitHead": "939f0791835c4f65400932c6a5ccb088828b54f5"
131
130
  }