@bigbinary/neeto-molecules 3.15.24 → 3.15.26

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.
@@ -107,14 +107,11 @@ var DndIndicator = function DndIndicator(_ref) {
107
107
 
108
108
  function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
109
109
  function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
110
- var ItemContainer = function ItemContainer(_ref) {
110
+ var DragDropContainer$1 = function DragDropContainer(_ref) {
111
111
  var id = _ref.id,
112
112
  index = _ref.index,
113
113
  data = _ref.data,
114
114
  render = _ref.render;
115
- var mutables = React.useRef({
116
- containerHeight: 128
117
- }).current;
118
115
  var _useDraggable = core.useDraggable({
119
116
  data: _objectSpread$3(_objectSpread$3({}, data), {}, {
120
117
  index: index,
@@ -135,6 +132,25 @@ var ItemContainer = function ItemContainer(_ref) {
135
132
  }),
136
133
  isOver = _useDroppable.isOver,
137
134
  setDroppableNodeRef = _useDroppable.setNodeRef;
135
+ var isIndicatorVisible = !isDragging && isOver;
136
+ return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread$3(_objectSpread$3(_objectSpread$3({
137
+ className: classnames("relative h-full w-full", {
138
+ "opacity-65": isDragging
139
+ }),
140
+ ref: function ref(node) {
141
+ setDraggableNodeRef(node);
142
+ setDroppableNodeRef(node);
143
+ }
144
+ }, attributes), listeners), {}, {
145
+ children: [render(), isIndicatorVisible && /*#__PURE__*/jsxRuntime.jsx(DndIndicator, {
146
+ layout: "horizontal"
147
+ })]
148
+ }));
149
+ };
150
+ var ItemContainer = function ItemContainer(props) {
151
+ var mutables = React.useRef({
152
+ containerHeight: 128
153
+ }).current;
138
154
  var _useInView = reactIntersectionObserver.useInView({
139
155
  onChange: function onChange(inView, entry) {
140
156
  if (inView) return; // We need the last height value when elements moves out.
@@ -144,26 +160,17 @@ var ItemContainer = function ItemContainer(_ref) {
144
160
  _useInView2 = _slicedToArray(_useInView, 2),
145
161
  setViewRef = _useInView2[0],
146
162
  inView = _useInView2[1];
147
- var isIndicatorVisible = !isDragging && isOver;
148
- return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread$3(_objectSpread$3({
149
- className: classnames("relative mt-4", {
150
- "opacity-65": isDragging
151
- }),
152
- ref: function ref(node) {
153
- setDraggableNodeRef(node);
154
- setDroppableNodeRef(node);
155
- setViewRef(node);
156
- }
157
- }, _objectSpread$3(_objectSpread$3({
158
- id: id
159
- }, attributes), listeners)), {}, {
163
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
164
+ className: "relative mt-4",
165
+ id: props.id,
160
166
  style: {
161
167
  height: inView ? undefined : mutables.containerHeight
162
168
  },
163
- children: [inView && render(), isIndicatorVisible && /*#__PURE__*/jsxRuntime.jsx(DndIndicator, {
164
- layout: "horizontal"
165
- })]
166
- }));
169
+ ref: function ref(node) {
170
+ setViewRef(node);
171
+ },
172
+ children: inView && /*#__PURE__*/jsxRuntime.jsx(DragDropContainer$1, _objectSpread$3({}, props))
173
+ });
167
174
  };
168
175
 
169
176
  function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -240,15 +247,11 @@ Section.propTypes = {
240
247
 
241
248
  function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
242
249
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
243
- var SectionContainer = function SectionContainer(_ref) {
250
+ var DragDropContainer = function DragDropContainer(_ref) {
244
251
  var id = _ref.id,
245
252
  index = _ref.index,
246
253
  data = _ref.data,
247
254
  render = _ref.render;
248
- var _useInView = reactIntersectionObserver.useInView(),
249
- _useInView2 = _slicedToArray(_useInView, 2),
250
- setViewRef = _useInView2[0],
251
- inView = _useInView2[1];
252
255
  var _useDraggable = core.useDraggable({
253
256
  data: _objectSpread$1(_objectSpread$1({}, data), {}, {
254
257
  type: DRAGGABLE_TYPES.SECTION,
@@ -271,19 +274,31 @@ var SectionContainer = function SectionContainer(_ref) {
271
274
  setDroppableNodeRef = _useDroppable.setNodeRef;
272
275
  var isIndicatorVisible = !isDragging && isOver;
273
276
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread$1(_objectSpread$1(_objectSpread$1({}, listeners), attributes), {}, {
274
- className: classnames("neeto-molecules-boardview-section relative mr-3 flex h-full flex-col last-of-type:mr-0", {
277
+ className: classnames("relative h-full w-full flex-col", {
275
278
  "opacity-65": isDragging
276
279
  }),
277
280
  ref: function ref(node) {
278
281
  setDraggableNodeRef(node);
279
282
  setDroppableNodeRef(node);
280
- setViewRef(node);
281
283
  },
282
- children: [inView && render(), isIndicatorVisible && /*#__PURE__*/jsxRuntime.jsx(DndIndicator, {
284
+ children: [render(), isIndicatorVisible && /*#__PURE__*/jsxRuntime.jsx(DndIndicator, {
283
285
  layout: "vertical"
284
286
  })]
285
287
  }));
286
288
  };
289
+ var SectionContainer = function SectionContainer(props) {
290
+ var _useInView = reactIntersectionObserver.useInView(),
291
+ _useInView2 = _slicedToArray(_useInView, 2),
292
+ setViewRef = _useInView2[0],
293
+ inView = _useInView2[1];
294
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
295
+ className: "neeto-molecules-boardview-section relative mr-3 h-full last-of-type:mr-0",
296
+ ref: function ref(node) {
297
+ setViewRef(node);
298
+ },
299
+ children: inView && /*#__PURE__*/jsxRuntime.jsx(DragDropContainer, _objectSpread$1({}, props))
300
+ });
301
+ };
287
302
 
288
303
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
289
304
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -1 +1 @@
1
- {"version":3,"file":"BoardView.js","sources":["../../src/components/BoardView/closestCenter.js","../../src/components/BoardView/constants.js","../../src/components/BoardView/Overlay.jsx","../../src/components/BoardView/Indicator.jsx","../../src/components/BoardView/Item/Container.jsx","../../src/components/BoardView/Item/Placeholder.jsx","../../src/components/BoardView/Section/index.jsx","../../src/components/BoardView/Section/Container.jsx","../../src/components/BoardView/Section/Placeholder.jsx","../../src/components/BoardView/index.jsx"],"sourcesContent":["// Customised collision detection algorithm based on `closestCenter` implementation for dnd-kit\n// Extracts collisions by respecting `accepts` property\n\nconst distanceBetween = (p1, p2) =>\n Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n\nconst centerOfRectangle = (rect, left = rect.left, top = rect.top) => ({\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5,\n});\n\nconst matchType = (draggable, droppable) =>\n droppable.data.current.accepts.includes(draggable.data.current.type);\n\n// `active` attribute from the `dnd-kit` is unreliable since the data can be lost on unmount during a drag.\nexport const closestCenter =\n ({ active }) =>\n ({ collisionRect, droppableRects, droppableContainers }) => {\n const centerRect = centerOfRectangle(\n collisionRect,\n collisionRect.left,\n collisionRect.top\n );\n\n let minDistance = Number.POSITIVE_INFINITY;\n let collision = { id: undefined };\n\n // eslint-disable-next-line @bigbinary/neeto/use-array-methods\n for (const droppableContainer of droppableContainers) {\n const rect = droppableRects.get(droppableContainer.id);\n\n if (!rect || droppableContainer.id === active.id) continue;\n else if (!matchType(active, droppableContainer)) continue;\n\n const distance = distanceBetween(centerOfRectangle(rect), centerRect);\n if (distance < minDistance) {\n minDistance = distance;\n collision = {\n id: droppableContainer.id,\n data: { droppableContainer, value: distance },\n };\n }\n }\n\n return [collision];\n };\n","export const DRAGGABLE_TYPES = { SECTION: \"section\", ITEM: \"item\" };\n","import { DragOverlay } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"./constants\";\n\nconst DndOverlay = ({ props, state }) => {\n const { renderSectionOverlay, renderItemOverlay } = props;\n const data = state.active?.data.current || {};\n\n return (\n <DragOverlay>\n {data.type === DRAGGABLE_TYPES.ITEM && renderItemOverlay?.(data)}\n {data.type === DRAGGABLE_TYPES.SECTION && renderSectionOverlay?.(data)}\n </DragOverlay>\n );\n};\n\nexport default DndOverlay;\n","import classNames from \"classnames\";\n\nconst DndIndicator = ({ layout = \"vertical\" }) => (\n <div\n className={classNames(\n \"neeto-ui-rounded-xl neeto-ui-bg-accent-600 absolute\",\n {\n \"-bottom-3 left-0 right-0 h-1\": layout === \"horizontal\",\n \"-right-2 bottom-0 top-0 w-1\": layout === \"vertical\",\n }\n )}\n />\n);\n\nexport default DndIndicator;\n","import { useRef } from \"react\";\n\nimport { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst ItemContainer = ({ id, index, data, render }) => {\n const mutables = useRef({ containerHeight: 128 }).current;\n\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, index, type: DRAGGABLE_TYPES.ITEM },\n id: `draggable-item--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index: index + 1 },\n id: `droppable-item--${id}`,\n });\n\n const [setViewRef, inView] = useInView({\n onChange: (inView, entry) => {\n if (inView) return; // We need the last height value when elements moves out.\n mutables.containerHeight = entry.target.clientHeight;\n },\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n className={classNames(\"relative mt-4\", {\n \"opacity-65\": isDragging,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n setViewRef(node);\n }}\n {...{ id, ...attributes, ...listeners }}\n style={{ height: inView ? undefined : mutables.containerHeight }}\n >\n {inView && render()}\n {isIndicatorVisible && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nexport default ItemContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst ItemPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index },\n id: `droppable-item--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nexport default ItemPlaceholder;\n","import { forwardRef } from \"react\";\n\nimport PropTypes from \"prop-types\";\n\nimport ItemContainer from \"../Item/Container\";\nimport ItemPlaceholder from \"../Item/Placeholder\";\n\nconst Section = forwardRef(({ section, items, renderItem }, ref) => (\n <div {...{ ref }} className=\"relative min-h-0 flex-1 basis-0 overflow-auto\">\n <ItemPlaceholder data={{ section }} />\n {items.map((item, index) => (\n <ItemContainer\n {...{ index }}\n data={{ section, item }}\n id={`${section.id}--${item.id}`}\n key={`${section.id}--${item.id}`}\n render={() => renderItem({ index, item, section })}\n />\n ))}\n </div>\n));\n\nSection.displayName = \"Section\";\nSection.propTypes = {\n /** A reference to the section container element. */\n ref: PropTypes.any,\n\n /** The current section data */\n section: PropTypes.shape({ id: PropTypes.string.isRequired }).isRequired,\n\n /** An array of items belonging to the current section. */\n items: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.string.isRequired }))\n .isRequired,\n\n /** A function that renders the content of each item in the list. */\n renderItem: PropTypes.func.isRequired,\n};\n\nexport default Section;\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst SectionContainer = ({ id, index, data, render }) => {\n const [setViewRef, inView] = useInView();\n\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, type: DRAGGABLE_TYPES.SECTION, index },\n id: `draggable-section--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index: index + 1 },\n id: `droppable-section--${id}`,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n {...listeners}\n {...attributes}\n className={classNames(\n \"neeto-molecules-boardview-section relative mr-3 flex h-full flex-col last-of-type:mr-0\",\n { \"opacity-65\": isDragging }\n )}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n setViewRef(node);\n }}\n >\n {inView && render()}\n {isIndicatorVisible && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nexport default SectionContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst SectionPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index },\n id: `droppable-section--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nexport default SectionPlaceholder;\n","import { forwardRef, useState } from \"react\";\n\nimport {\n DndContext,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport \"./boardview.scss\";\nimport { closestCenter } from \"./closestCenter\";\nimport { DRAGGABLE_TYPES } from \"./constants\";\nimport DndOverlay from \"./Overlay\";\nimport Section from \"./Section\";\nimport SectionContainer from \"./Section/Container\";\nimport SectionPlaceholder from \"./Section/Placeholder\";\n\nconst sensorConfig = { activationConstraint: { distance: 8 } };\nconst measuringConfig = { droppable: { frequency: 500 } };\n\nconst BoardView = forwardRef((props, ref) => {\n const { sections, onMoveSection, onMoveItem, renderSection, className } =\n props;\n\n const [dragState, setDragState] = useState({});\n const sensors = useSensors(useSensor(PointerSensor, sensorConfig));\n\n const onDragEnd = drag => {\n const active = dragState.active.data.current;\n const over = drag.over?.data.current;\n if (!active || !over) return;\n\n if (active.type === DRAGGABLE_TYPES.ITEM) {\n onMoveItem?.(active, over);\n } else if (active.type === DRAGGABLE_TYPES.SECTION) {\n onMoveSection?.(active, over);\n }\n };\n\n return (\n <DndContext\n {...{ onDragEnd, sensors }}\n collisionDetection={closestCenter(dragState)}\n measuring={measuringConfig}\n onDragStart={setDragState}\n >\n <div\n {...{ ref }}\n className={classNames(\n \"neeto-molecules-boardview-outer-wrapper flex w-full flex-1 overflow-x-auto\",\n className\n )}\n >\n <SectionPlaceholder />\n {sections.map((section, index) => (\n <SectionContainer\n {...{ index }}\n data={{ section }}\n id={section.id}\n key={section.id}\n render={() => renderSection({ index, section })}\n />\n ))}\n </div>\n <DndOverlay {...{ props }} state={dragState} />\n </DndContext>\n );\n});\n\nBoardView.displayName = \"BoardView\";\nBoardView.Section = Section;\nBoardView.propTypes = {\n /** A reference to the container element. */\n ref: PropTypes.any,\n\n /**\n An array of sections, each defined by an object with an `id` string.\n */\n sections: PropTypes.arrayOf(\n PropTypes.shape({ id: PropTypes.string.isRequired })\n ).isRequired,\n\n /** function to render each section content in the board view */\n renderSection: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual sections (drag preview) */\n renderSectionOverlay: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual items (drag preview) */\n renderItemOverlay: PropTypes.func.isRequired,\n\n /** Callback function triggered when a section is reordered */\n onMoveSection: PropTypes.func,\n\n /** Callback function triggered when an item is moved */\n onMoveItem: PropTypes.func,\n /**\n * Additional classes passed on to the board view.\n */\n className: PropTypes.string,\n};\n\nexport default BoardView;\n"],"names":["distanceBetween","p1","p2","Math","sqrt","pow","x","y","centerOfRectangle","rect","left","arguments","length","undefined","top","width","height","matchType","draggable","droppable","data","current","accepts","includes","type","closestCenter","_ref","active","_ref2","collisionRect","droppableRects","droppableContainers","centerRect","minDistance","Number","POSITIVE_INFINITY","collision","id","_iterator","_createForOfIteratorHelper","_step","s","n","done","droppableContainer","value","get","distance","err","e","f","DRAGGABLE_TYPES","SECTION","ITEM","DndOverlay","_state$active","props","state","renderSectionOverlay","renderItemOverlay","_jsxs","DragOverlay","children","DndIndicator","_ref$layout","layout","_jsx","className","classNames","ItemContainer","index","render","mutables","useRef","containerHeight","_useDraggable","useDraggable","_objectSpread","concat","attributes","listeners","isDragging","setDraggableNodeRef","setNodeRef","_useDroppable","useDroppable","isOver","setDroppableNodeRef","_useInView","useInView","onChange","inView","entry","target","clientHeight","_useInView2","_slicedToArray","setViewRef","isIndicatorVisible","ref","node","style","ItemPlaceholder","_ref$index","useId","Section","forwardRef","section","items","renderItem","map","item","_createElement","key","displayName","propTypes","PropTypes","any","shape","string","isRequired","arrayOf","func","SectionContainer","SectionPlaceholder","sensorConfig","activationConstraint","measuringConfig","frequency","BoardView","sections","onMoveSection","onMoveItem","renderSection","_useState","useState","_useState2","dragState","setDragState","sensors","useSensors","useSensor","PointerSensor","onDragEnd","drag","_drag$over","over","DndContext","collisionDetection","measuring","onDragStart"],"mappings":"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"}
1
+ {"version":3,"file":"BoardView.js","sources":["../../src/components/BoardView/closestCenter.js","../../src/components/BoardView/constants.js","../../src/components/BoardView/Overlay.jsx","../../src/components/BoardView/Indicator.jsx","../../src/components/BoardView/Item/Container.jsx","../../src/components/BoardView/Item/Placeholder.jsx","../../src/components/BoardView/Section/index.jsx","../../src/components/BoardView/Section/Container.jsx","../../src/components/BoardView/Section/Placeholder.jsx","../../src/components/BoardView/index.jsx"],"sourcesContent":["// Customised collision detection algorithm based on `closestCenter` implementation for dnd-kit\n// Extracts collisions by respecting `accepts` property\n\nconst distanceBetween = (p1, p2) =>\n Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n\nconst centerOfRectangle = (rect, left = rect.left, top = rect.top) => ({\n x: left + rect.width * 0.5,\n y: top + rect.height * 0.5,\n});\n\nconst matchType = (draggable, droppable) =>\n droppable.data.current.accepts.includes(draggable.data.current.type);\n\n// `active` attribute from the `dnd-kit` is unreliable since the data can be lost on unmount during a drag.\nexport const closestCenter =\n ({ active }) =>\n ({ collisionRect, droppableRects, droppableContainers }) => {\n const centerRect = centerOfRectangle(\n collisionRect,\n collisionRect.left,\n collisionRect.top\n );\n\n let minDistance = Number.POSITIVE_INFINITY;\n let collision = { id: undefined };\n\n // eslint-disable-next-line @bigbinary/neeto/use-array-methods\n for (const droppableContainer of droppableContainers) {\n const rect = droppableRects.get(droppableContainer.id);\n\n if (!rect || droppableContainer.id === active.id) continue;\n else if (!matchType(active, droppableContainer)) continue;\n\n const distance = distanceBetween(centerOfRectangle(rect), centerRect);\n if (distance < minDistance) {\n minDistance = distance;\n collision = {\n id: droppableContainer.id,\n data: { droppableContainer, value: distance },\n };\n }\n }\n\n return [collision];\n };\n","export const DRAGGABLE_TYPES = { SECTION: \"section\", ITEM: \"item\" };\n","import { DragOverlay } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"./constants\";\n\nconst DndOverlay = ({ props, state }) => {\n const { renderSectionOverlay, renderItemOverlay } = props;\n const data = state.active?.data.current || {};\n\n return (\n <DragOverlay>\n {data.type === DRAGGABLE_TYPES.ITEM && renderItemOverlay?.(data)}\n {data.type === DRAGGABLE_TYPES.SECTION && renderSectionOverlay?.(data)}\n </DragOverlay>\n );\n};\n\nexport default DndOverlay;\n","import classNames from \"classnames\";\n\nconst DndIndicator = ({ layout = \"vertical\" }) => (\n <div\n className={classNames(\n \"neeto-ui-rounded-xl neeto-ui-bg-accent-600 absolute\",\n {\n \"-bottom-3 left-0 right-0 h-1\": layout === \"horizontal\",\n \"-right-2 bottom-0 top-0 w-1\": layout === \"vertical\",\n }\n )}\n />\n);\n\nexport default DndIndicator;\n","import { useRef } from \"react\";\n\nimport { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst DragDropContainer = ({ id, index, data, render }) => {\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, index, type: DRAGGABLE_TYPES.ITEM },\n id: `draggable-item--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index: index + 1 },\n id: `droppable-item--${id}`,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n className={classNames(\"relative h-full w-full\", {\n \"opacity-65\": isDragging,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n }}\n {...attributes}\n {...listeners}\n >\n {render()}\n {isIndicatorVisible && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nconst ItemContainer = props => {\n const mutables = useRef({ containerHeight: 128 }).current;\n\n const [setViewRef, inView] = useInView({\n onChange: (inView, entry) => {\n if (inView) return; // We need the last height value when elements moves out.\n mutables.containerHeight = entry.target.clientHeight;\n },\n });\n\n return (\n <div\n className=\"relative mt-4\"\n id={props.id}\n style={{ height: inView ? undefined : mutables.containerHeight }}\n ref={node => {\n setViewRef(node);\n }}\n >\n {inView && <DragDropContainer {...props} />}\n </div>\n );\n};\n\nexport default ItemContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst ItemPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.ITEM], index },\n id: `droppable-item--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"horizontal\" />}\n </div>\n );\n};\n\nexport default ItemPlaceholder;\n","import { forwardRef } from \"react\";\n\nimport PropTypes from \"prop-types\";\n\nimport ItemContainer from \"../Item/Container\";\nimport ItemPlaceholder from \"../Item/Placeholder\";\n\nconst Section = forwardRef(({ section, items, renderItem }, ref) => (\n <div {...{ ref }} className=\"relative min-h-0 flex-1 basis-0 overflow-auto\">\n <ItemPlaceholder data={{ section }} />\n {items.map((item, index) => (\n <ItemContainer\n {...{ index }}\n data={{ section, item }}\n id={`${section.id}--${item.id}`}\n key={`${section.id}--${item.id}`}\n render={() => renderItem({ index, item, section })}\n />\n ))}\n </div>\n));\n\nSection.displayName = \"Section\";\nSection.propTypes = {\n /** A reference to the section container element. */\n ref: PropTypes.any,\n\n /** The current section data */\n section: PropTypes.shape({ id: PropTypes.string.isRequired }).isRequired,\n\n /** An array of items belonging to the current section. */\n items: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.string.isRequired }))\n .isRequired,\n\n /** A function that renders the content of each item in the list. */\n renderItem: PropTypes.func.isRequired,\n};\n\nexport default Section;\n","import { useDraggable, useDroppable } from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport { useInView } from \"react-intersection-observer\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst DragDropContainer = ({ id, index, data, render }) => {\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef: setDraggableNodeRef,\n } = useDraggable({\n data: { ...data, type: DRAGGABLE_TYPES.SECTION, index },\n id: `draggable-section--${id}`,\n });\n\n const { isOver, setNodeRef: setDroppableNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index: index + 1 },\n id: `droppable-section--${id}`,\n });\n\n const isIndicatorVisible = !isDragging && isOver;\n\n return (\n <div\n {...listeners}\n {...attributes}\n className={classNames(\"relative h-full w-full flex-col\", {\n \"opacity-65\": isDragging,\n })}\n ref={node => {\n setDraggableNodeRef(node);\n setDroppableNodeRef(node);\n }}\n >\n {render()}\n {isIndicatorVisible && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nconst SectionContainer = props => {\n const [setViewRef, inView] = useInView();\n\n return (\n <div\n className=\"neeto-molecules-boardview-section relative mr-3 h-full last-of-type:mr-0\"\n ref={node => {\n setViewRef(node);\n }}\n >\n {inView && <DragDropContainer {...props} />}\n </div>\n );\n};\n\nexport default SectionContainer;\n","import { useId } from \"react\";\n\nimport { useDroppable } from \"@dnd-kit/core\";\n\nimport { DRAGGABLE_TYPES } from \"../constants\";\nimport DndIndicator from \"../Indicator\";\n\nconst SectionPlaceholder = ({ data, index = 0 }) => {\n const id = useId();\n\n const { isOver, setNodeRef } = useDroppable({\n data: { ...data, accepts: [DRAGGABLE_TYPES.SECTION], index },\n id: `droppable-section--${id}`,\n });\n\n return (\n <div className=\"relative\" ref={setNodeRef}>\n {isOver && <DndIndicator layout=\"vertical\" />}\n </div>\n );\n};\n\nexport default SectionPlaceholder;\n","import { forwardRef, useState } from \"react\";\n\nimport {\n DndContext,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport classNames from \"classnames\";\nimport PropTypes from \"prop-types\";\n\nimport \"./boardview.scss\";\nimport { closestCenter } from \"./closestCenter\";\nimport { DRAGGABLE_TYPES } from \"./constants\";\nimport DndOverlay from \"./Overlay\";\nimport Section from \"./Section\";\nimport SectionContainer from \"./Section/Container\";\nimport SectionPlaceholder from \"./Section/Placeholder\";\n\nconst sensorConfig = { activationConstraint: { distance: 8 } };\nconst measuringConfig = { droppable: { frequency: 500 } };\n\nconst BoardView = forwardRef((props, ref) => {\n const { sections, onMoveSection, onMoveItem, renderSection, className } =\n props;\n\n const [dragState, setDragState] = useState({});\n const sensors = useSensors(useSensor(PointerSensor, sensorConfig));\n\n const onDragEnd = drag => {\n const active = dragState.active.data.current;\n const over = drag.over?.data.current;\n if (!active || !over) return;\n\n if (active.type === DRAGGABLE_TYPES.ITEM) {\n onMoveItem?.(active, over);\n } else if (active.type === DRAGGABLE_TYPES.SECTION) {\n onMoveSection?.(active, over);\n }\n };\n\n return (\n <DndContext\n {...{ onDragEnd, sensors }}\n collisionDetection={closestCenter(dragState)}\n measuring={measuringConfig}\n onDragStart={setDragState}\n >\n <div\n {...{ ref }}\n className={classNames(\n \"neeto-molecules-boardview-outer-wrapper flex w-full flex-1 overflow-x-auto\",\n className\n )}\n >\n <SectionPlaceholder />\n {sections.map((section, index) => (\n <SectionContainer\n {...{ index }}\n data={{ section }}\n id={section.id}\n key={section.id}\n render={() => renderSection({ index, section })}\n />\n ))}\n </div>\n <DndOverlay {...{ props }} state={dragState} />\n </DndContext>\n );\n});\n\nBoardView.displayName = \"BoardView\";\nBoardView.Section = Section;\nBoardView.propTypes = {\n /** A reference to the container element. */\n ref: PropTypes.any,\n\n /**\n An array of sections, each defined by an object with an `id` string.\n */\n sections: PropTypes.arrayOf(\n PropTypes.shape({ id: PropTypes.string.isRequired })\n ).isRequired,\n\n /** function to render each section content in the board view */\n renderSection: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual sections (drag preview) */\n renderSectionOverlay: PropTypes.func.isRequired,\n\n /** A function to render a drag overlay for individual items (drag preview) */\n renderItemOverlay: PropTypes.func.isRequired,\n\n /** Callback function triggered when a section is reordered */\n onMoveSection: PropTypes.func,\n\n /** Callback function triggered when an item is moved */\n onMoveItem: PropTypes.func,\n /**\n * Additional classes passed on to the board view.\n */\n className: PropTypes.string,\n};\n\nexport default BoardView;\n"],"names":["distanceBetween","p1","p2","Math","sqrt","pow","x","y","centerOfRectangle","rect","left","arguments","length","undefined","top","width","height","matchType","draggable","droppable","data","current","accepts","includes","type","closestCenter","_ref","active","_ref2","collisionRect","droppableRects","droppableContainers","centerRect","minDistance","Number","POSITIVE_INFINITY","collision","id","_iterator","_createForOfIteratorHelper","_step","s","n","done","droppableContainer","value","get","distance","err","e","f","DRAGGABLE_TYPES","SECTION","ITEM","DndOverlay","_state$active","props","state","renderSectionOverlay","renderItemOverlay","_jsxs","DragOverlay","children","DndIndicator","_ref$layout","layout","_jsx","className","classNames","DragDropContainer","index","render","_useDraggable","useDraggable","_objectSpread","concat","attributes","listeners","isDragging","setDraggableNodeRef","setNodeRef","_useDroppable","useDroppable","isOver","setDroppableNodeRef","isIndicatorVisible","ref","node","ItemContainer","mutables","useRef","containerHeight","_useInView","useInView","onChange","inView","entry","target","clientHeight","_useInView2","_slicedToArray","setViewRef","style","ItemPlaceholder","_ref$index","useId","Section","forwardRef","section","items","renderItem","map","item","_createElement","key","displayName","propTypes","PropTypes","any","shape","string","isRequired","arrayOf","func","SectionContainer","SectionPlaceholder","sensorConfig","activationConstraint","measuringConfig","frequency","BoardView","sections","onMoveSection","onMoveItem","renderSection","_useState","useState","_useState2","dragState","setDragState","sensors","useSensors","useSensor","PointerSensor","onDragEnd","drag","_drag$over","over","DndContext","collisionDetection","measuring","onDragStart"],"mappings":"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"}
@@ -2,15 +2,17 @@
2
2
 
3
3
  var neetoCist = require('@bigbinary/neeto-cist');
4
4
  var ramda = require('ramda');
5
+ var classnames = require('classnames');
6
+ var Typography = require('@bigbinary/neetoui/Typography');
7
+ var reactI18next = require('react-i18next');
8
+ var jsxRuntime = require('react/jsx-runtime');
5
9
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
6
10
  var React = require('react');
7
11
  var ExternalLink = require('@bigbinary/neeto-icons/ExternalLink');
8
12
  var Button = require('@bigbinary/neetoui/Button');
9
- var reactI18next = require('react-i18next');
10
13
  var CopyToClipboardButton = require('./CopyToClipboardButton.js');
11
14
  var MoreDropdown = require('./MoreDropdown.js');
12
15
  var formik = require('formik');
13
- var Typography = require('@bigbinary/neetoui/Typography');
14
16
  var Pane = require('@bigbinary/neetoui/Pane');
15
17
  var Input = require('@bigbinary/neetoui/formik/Input');
16
18
  var ActionBlock = require('@bigbinary/neetoui/formik/ActionBlock');
@@ -21,11 +23,12 @@ var Twitter = require('@bigbinary/neeto-icons/Twitter');
21
23
  var yup = require('yup');
22
24
  var general = require('@bigbinary/neeto-commons-frontend/utils/general');
23
25
  var injectCss = require('./inject-css-vQvjPR2x.js');
24
- var jsxRuntime = require('react/jsx-runtime');
26
+ var utils = require('@bigbinary/neeto-commons-frontend/utils');
25
27
  var Modal = require('@bigbinary/neetoui/Modal');
26
28
  var Input$1 = require('@bigbinary/neetoui/Input');
29
+ var Select = require('@bigbinary/neetoui/Select');
30
+ var DatePicker = require('@bigbinary/neetoui/DatePicker');
27
31
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
28
- var classnames = require('classnames');
29
32
  var reactRouterDom = require('react-router-dom');
30
33
  require('@babel/runtime/helpers/objectWithoutProperties');
31
34
  require('@bigbinary/neeto-icons/Copy');
@@ -54,6 +57,32 @@ function _interopNamespaceDefault(e) {
54
57
 
55
58
  var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
56
59
 
60
+ var ExpiryNotice = function ExpiryNotice(_ref) {
61
+ var expiryConfiguration = _ref.expiryConfiguration;
62
+ var _useTranslation = reactI18next.useTranslation(),
63
+ t = _useTranslation.t;
64
+ var daysBeforeExpiry = expiryConfiguration.daysBeforeExpiry;
65
+ var notice = t("neetoMolecules.shareViaLink.expiryNotice.daysRemaining", {
66
+ count: daysBeforeExpiry
67
+ });
68
+ if (daysBeforeExpiry < 1) {
69
+ notice = t("neetoMolecules.shareViaLink.expiryNotice.expiresToday");
70
+ }
71
+ if (daysBeforeExpiry <= 0) {
72
+ notice = t("neetoMolecules.shareViaLink.expiryNotice.expired");
73
+ }
74
+ return /*#__PURE__*/jsxRuntime.jsx(Typography, {
75
+ "data-testid": "expiry-notice",
76
+ lineHeight: "normal",
77
+ style: "body2",
78
+ className: classnames({
79
+ "neeto-ui-text-error-800": daysBeforeExpiry <= 1,
80
+ "neeto-ui-text-gray-700": daysBeforeExpiry > 1
81
+ }),
82
+ children: notice
83
+ });
84
+ };
85
+
57
86
  var facebookShareLink = function facebookShareLink(_ref) {
58
87
  var url = _ref.url;
59
88
  return general.buildUrl("https://www.facebook.com/sharer/sharer.php", {
@@ -227,14 +256,42 @@ var EditURL = function EditURL(_ref) {
227
256
  };
228
257
 
229
258
  var RegenerateURL = function RegenerateURL(_ref) {
259
+ var _regenerateConfig$exp, _regenerateConfig$exp2, _globalProps$user$dat, _globalProps;
230
260
  var isOpen = _ref.isOpen,
231
261
  onClose = _ref.onClose,
232
262
  url = _ref.url,
233
263
  isLoading = _ref.isLoading,
234
- handleRegenerate = _ref.handleRegenerate;
264
+ handleRegenerate = _ref.handleRegenerate,
265
+ _ref$regenerateConfig = _ref.regenerateConfig,
266
+ regenerateConfig = _ref$regenerateConfig === void 0 ? {
267
+ expiresInOptions: []
268
+ } : _ref$regenerateConfig;
235
269
  var _useTranslation = reactI18next.useTranslation(),
236
270
  t = _useTranslation.t;
237
271
  var prevIsLoadingRef = React.useRef(isLoading);
272
+ var regenerateStrategy = neetoCist.isPresent(regenerateConfig === null || regenerateConfig === void 0 ? void 0 : regenerateConfig.expiresInOptions) ? "expiryBased" : "basic";
273
+ var _useState = React.useState(regenerateConfig === null || regenerateConfig === void 0 || (_regenerateConfig$exp = regenerateConfig.expiresInOptions) === null || _regenerateConfig$exp === void 0 || (_regenerateConfig$exp = _regenerateConfig$exp[0]) === null || _regenerateConfig$exp === void 0 ? void 0 : _regenerateConfig$exp.value),
274
+ _useState2 = _slicedToArray(_useState, 2),
275
+ selectedExpiresInOption = _useState2[0],
276
+ setSelectedExpiresInOption = _useState2[1];
277
+ var _useState3 = React.useState(utils.dayjs().add(10, "day").toDate()),
278
+ _useState4 = _slicedToArray(_useState3, 2),
279
+ selectedExpiresOnDate = _useState4[0],
280
+ setSelectedExpiresOnDate = _useState4[1];
281
+ var isSelectedExpiresInOptionNever = selectedExpiresInOption === "never";
282
+ var isSelectedExpiresInOptionCustom = selectedExpiresInOption === "custom";
283
+ var isSelectedExpiresInOptionValidNumberOfDays = neetoCist.isPresent(selectedExpiresInOption) && !isSelectedExpiresInOptionCustom && !isSelectedExpiresInOptionNever;
284
+ var isValidExpiryConfig = isSelectedExpiresInOptionNever || isSelectedExpiresInOptionCustom && neetoCist.isPresent(selectedExpiresOnDate) || isSelectedExpiresInOptionValidNumberOfDays;
285
+ var expiryConfigPayload = isSelectedExpiresInOptionValidNumberOfDays ? {
286
+ expiresInDays: selectedExpiresInOption
287
+ } : {
288
+ expiresOnDate: selectedExpiresOnDate
289
+ };
290
+ var onSubmit = function onSubmit() {
291
+ return regenerateStrategy === "basic" || isSelectedExpiresInOptionNever ? handleRegenerate() : handleRegenerate({
292
+ payload: expiryConfigPayload
293
+ });
294
+ };
238
295
  React.useEffect(function () {
239
296
  if (prevIsLoadingRef.current && !isLoading) onClose();
240
297
  prevIsLoadingRef.current = isLoading;
@@ -243,6 +300,7 @@ var RegenerateURL = function RegenerateURL(_ref) {
243
300
  isOpen: isOpen,
244
301
  onClose: onClose,
245
302
  "data-testid": "regenerate-url-modal",
303
+ size: regenerateStrategy === "basic" ? "medium" : "large",
246
304
  children: [/*#__PURE__*/jsxRuntime.jsx(Modal.Header, {
247
305
  children: /*#__PURE__*/jsxRuntime.jsx(Typography, {
248
306
  lineHeight: "normal",
@@ -253,10 +311,36 @@ var RegenerateURL = function RegenerateURL(_ref) {
253
311
  }), /*#__PURE__*/jsxRuntime.jsx(Modal.Body, {
254
312
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
255
313
  className: "w-full space-y-6",
256
- children: [/*#__PURE__*/jsxRuntime.jsx(Input$1, {
314
+ children: [regenerateStrategy === "basic" && /*#__PURE__*/jsxRuntime.jsx(Input$1, {
257
315
  disabled: true,
258
316
  label: t("neetoMolecules.shareViaLink.regenerateUrl.inputLabel"),
259
317
  value: url
318
+ }), regenerateStrategy === "expiryBased" && /*#__PURE__*/jsxRuntime.jsxs("div", {
319
+ className: "flex flex-row gap-2",
320
+ children: [/*#__PURE__*/jsxRuntime.jsx(Select, {
321
+ "data-testid": "expires-in-select",
322
+ defaultValue: (_regenerateConfig$exp2 = regenerateConfig.expiresInOptions) === null || _regenerateConfig$exp2 === void 0 ? void 0 : _regenerateConfig$exp2[0],
323
+ options: regenerateConfig.expiresInOptions,
324
+ className: classnames({
325
+ "w-1/2": isSelectedExpiresInOptionCustom,
326
+ "w-full": !isSelectedExpiresInOptionCustom
327
+ }),
328
+ label: t("neetoMolecules.shareViaLink.regenerateUrl.expiresInLabel"),
329
+ onChange: function onChange(option) {
330
+ return setSelectedExpiresInOption(option.value);
331
+ }
332
+ }), isSelectedExpiresInOptionCustom && /*#__PURE__*/jsxRuntime.jsx(DatePicker, {
333
+ "data-testid": "expires-on-date-picker",
334
+ dateFormat: (_globalProps$user$dat = (_globalProps = globalProps) === null || _globalProps === void 0 || (_globalProps = _globalProps.user) === null || _globalProps === void 0 ? void 0 : _globalProps.dateFormat) !== null && _globalProps$user$dat !== void 0 ? _globalProps$user$dat : undefined,
335
+ disabledDate: function disabledDate(d) {
336
+ return !d || d.isBefore(utils.dayjs());
337
+ },
338
+ picker: "date",
339
+ type: "date",
340
+ value: selectedExpiresOnDate,
341
+ label: t("neetoMolecules.shareViaLink.regenerateUrl.expiresOnLabel"),
342
+ onChange: setSelectedExpiresOnDate
343
+ })]
260
344
  }), /*#__PURE__*/jsxRuntime.jsx(Typography, {
261
345
  className: "neeto-ui-text-gray-700",
262
346
  lineHeight: "normal",
@@ -270,8 +354,9 @@ var RegenerateURL = function RegenerateURL(_ref) {
270
354
  "data-cy": "regenerate-url-confirm-button",
271
355
  "data-testid": "regenerate-url-confirm-button",
272
356
  loading: isLoading,
357
+ disabled: regenerateStrategy === "expiryBased" && !isValidExpiryConfig,
273
358
  label: t("neetoMolecules.shareViaLink.regenerateUrl.submitButtonLabel"),
274
- onClick: handleRegenerate
359
+ onClick: onSubmit
275
360
  }), /*#__PURE__*/jsxRuntime.jsx(Button, {
276
361
  "data-cy": "regenerate-url-cancel-button",
277
362
  "data-testid": "regenerate-url-cancel-button",
@@ -337,7 +422,7 @@ var Link = function Link(_ref) {
337
422
  }), isDropdownEnabled && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
338
423
  children: [/*#__PURE__*/jsxRuntime.jsx(MoreDropdown, {
339
424
  menuItems: [{
340
- isVisible: enabledOptions.regenerate,
425
+ isVisible: enabledOptions.regenerate || neetoCist.isPresent(enabledOptions.regenerate),
341
426
  "data-testid": "regenerate-url-button",
342
427
  "data-cy": "regenerate-url-button",
343
428
  onClick: function onClick() {
@@ -360,6 +445,7 @@ var Link = function Link(_ref) {
360
445
  isLoading: isLoading,
361
446
  url: url,
362
447
  isOpen: isRegenerateURLModalOpen,
448
+ regenerateConfig: enabledOptions.regenerate,
363
449
  onClose: function onClose() {
364
450
  return setIsRegenerateURLModalOpen(false);
365
451
  }
@@ -1427,7 +1513,9 @@ var ShareViaLink = function ShareViaLink(_ref) {
1427
1513
  _ref$disableShareSoci = _ref.disableShareSocialMedia,
1428
1514
  disableShareSocialMedia = _ref$disableShareSoci === void 0 ? false : _ref$disableShareSoci,
1429
1515
  _ref$disableQRDownloa = _ref.disableQRDownload,
1430
- disableQRDownload = _ref$disableQRDownloa === void 0 ? false : _ref$disableQRDownloa;
1516
+ disableQRDownload = _ref$disableQRDownloa === void 0 ? false : _ref$disableQRDownloa,
1517
+ _ref$publicLinkExpiry = _ref.publicLinkExpiryConfiguration,
1518
+ publicLinkExpiryConfiguration = _ref$publicLinkExpiry === void 0 ? {} : _ref$publicLinkExpiry;
1431
1519
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
1432
1520
  className: "neeto-ui-border-gray-300 neeto-ui-rounded-lg neeto-ui-bg-white col-span-2 space-y-4 border p-6 sm:p-8",
1433
1521
  "data-testid": "share-via-link",
@@ -1443,6 +1531,8 @@ var ShareViaLink = function ShareViaLink(_ref) {
1443
1531
  previewUrl: urlOption.previewUrl,
1444
1532
  url: urlOption.url
1445
1533
  });
1534
+ }), neetoCist.isPresent(publicLinkExpiryConfiguration) && /*#__PURE__*/jsxRuntime.jsx(ExpiryNotice, {
1535
+ expiryConfiguration: publicLinkExpiryConfiguration
1446
1536
  }), isOtherShareOptionsEnabled && /*#__PURE__*/jsxRuntime.jsx(ShareBlock, {
1447
1537
  disableQRDownload: disableQRDownload,
1448
1538
  disableShareSocialMedia: disableShareSocialMedia,