@eightshift/ui-components 7.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/assets/style-admin.css +55 -55
  2. package/dist/assets/style-editor.css +55 -55
  3. package/dist/assets/style.css +55 -55
  4. package/dist/assets/wp-overrides/allow-full-width-blocks.css +1 -1
  5. package/dist/assets/wp-overrides/fix-label-text-case.css +1 -1
  6. package/dist/assets/wp-overrides/increase-sidebar-width.css +1 -1
  7. package/dist/assets/wp-overrides/make-block-messages-nicer.css +1 -1
  8. package/dist/assets/wp-overrides/replace-fonts.css +1 -1
  9. package/dist/assets/wp-overrides/restyle-tooltips.css +3 -3
  10. package/dist/assets/wp-overrides/round-corners.css +1 -1
  11. package/dist/assets/wp-overrides/unify-button-sizes.css +1 -1
  12. package/dist/components/color-pickers/gradient-editor.js +2 -2
  13. package/dist/components/index.js +2 -2
  14. package/dist/components/option-select/option-select.js +1 -1
  15. package/dist/components/select/async-multi-select.js +8 -11
  16. package/dist/components/select/async-select.js +7 -9
  17. package/dist/components/select/multi-select.js +5 -7
  18. package/dist/components/select/shared.js +1 -1
  19. package/dist/components/select/single-select.js +5 -7
  20. package/dist/components/slider/column-config-slider.js +1 -1
  21. package/dist/components/slider/slider.js +1 -1
  22. package/dist/{general-D-7dwhuF.js → general-BKOvs-AO.js} +1 -2
  23. package/dist/{gradient-editor-DbH8NU2p.js → gradient-editor-BAd_Gzx4.js} +1 -1
  24. package/dist/index.js +2 -2
  25. package/dist/{proxy-BG7-_Ou3.js → proxy-DjkEpeDL.js} +43 -21
  26. package/dist/{shared-DFDimxvX.js → shared-D_OXizRt.js} +2 -2
  27. package/dist/utilities/general.js +1 -1
  28. package/dist/utilities/index.js +1 -1
  29. package/dist/workers/image-analysis.worker.js +1 -1
  30. package/package.json +11 -11
@@ -3,7 +3,7 @@ import { u as $e1995378a142960e$export$fb8073518f34e6ec } from "../../SelectionM
3
3
  import { l as $07b14b47974efb58$export$5b6b19405a83ff9d, p as $72a5793c14baf454$export$8b251419efc915eb } from "../../Dialog-i5VLQw1o.js";
4
4
  import { a as $eed445e0843c11d0$export$dca12b0bb56e4fc, t as $eed445e0843c11d0$export$41f133550aa26f48 } from "../../ListBox-B21SgugS.js";
5
5
  import { n as $d2b4bc8c273e7be6$export$353f5b6fc5456de1 } from "../../Button-h6xF_WrP.js";
6
- import { i as getValue, n as SelectClearButton, o as $82d7e5349645de74$export$e288731fd71264f0, r as getGroupedOptions, s as $82d7e5349645de74$export$ef9b1a59e592288f, t as OptionItemBase } from "../../shared-DFDimxvX.js";
6
+ import { i as getValue, n as SelectClearButton, o as $82d7e5349645de74$export$e288731fd71264f0, r as getGroupedOptions, s as $82d7e5349645de74$export$ef9b1a59e592288f, t as OptionItemBase } from "../../shared-D_OXizRt.js";
7
7
  import { t as $bb77f239b46e8c72$export$3274cf84b703fff } from "../../useFilter-OiMnf6sb.js";
8
8
  import { n as $3985021b0ad6602f$export$f5b8910cec6cf069 } from "../../Input-BURqyJXW.js";
9
9
  import { n as $d2f53cda644affe3$export$2f2b9559550c7bbc, t as $440f4836bcb56932$export$b94867ecbd698f21 } from "../../SearchField-DR_I4_yn.js";
@@ -98,14 +98,13 @@ var MultiSelect = (props) => {
98
98
  groupValueMapping
99
99
  ]);
100
100
  const renderItem = (item) => {
101
- let icon = item?.icon ?? null;
102
- icon = jsx(Icon, { icon });
101
+ const icon = item?.icon ?? null;
103
102
  return jsxs(OptionItemBase, {
104
103
  id: item?.value ?? randomId(8),
105
104
  className: item?.className,
106
105
  selectIndicator: true,
107
106
  children: [customMenuOption && customMenuOption(item), !customMenuOption && jsx(RichLabel, {
108
- icon,
107
+ icon: icon && jsx(Icon, { icon }),
109
108
  label: item?.label,
110
109
  subtitle: item?.subtitle,
111
110
  noColor: true
@@ -176,8 +175,7 @@ var MultiSelect = (props) => {
176
175
  className: "es:select-none es:pointer-events-none es:pr-6 es:text-sm es:text-surface-500",
177
176
  children: placeholder
178
177
  });
179
- let icon = selectedItem?.icon ?? null;
180
- icon = jsx(Icon, { icon });
178
+ const icon = selectedItem?.icon ?? null;
181
179
  if (selectedItems.length > 1) return jsx(RichLabel, {
182
180
  icon: multiple,
183
181
  label: sprintf(_n("%s item", "%s items", selectedItems.length, "eightshift-ui-components"), selectedItems.length),
@@ -186,7 +184,7 @@ var MultiSelect = (props) => {
186
184
  });
187
185
  if (!isPlaceholder && currentValue && customValueDisplay) return customValueDisplay(selectedItem);
188
186
  return jsx(RichLabel, {
189
- icon,
187
+ icon: icon && jsx(Icon, { icon }),
190
188
  label: selectedItem?.label,
191
189
  subtitle: selectedItem?.subtitle,
192
190
  className: clsx("es:pr-6 es:grow es:w-full", disabled && "es:grayscale es:pointer-events-none"),
@@ -1,3 +1,3 @@
1
- import { a as moveArrayItem, i as getValue, n as SelectClearButton, r as getGroupedOptions, t as OptionItemBase } from "../../shared-DFDimxvX.js";
1
+ import { a as moveArrayItem, i as getValue, n as SelectClearButton, r as getGroupedOptions, t as OptionItemBase } from "../../shared-D_OXizRt.js";
2
2
  import "../../build-module-sxK3nxOK.js";
3
3
  export { OptionItemBase, SelectClearButton, getGroupedOptions, getValue, moveArrayItem };
@@ -3,7 +3,7 @@ import { u as $e1995378a142960e$export$fb8073518f34e6ec } from "../../SelectionM
3
3
  import { l as $07b14b47974efb58$export$5b6b19405a83ff9d, p as $72a5793c14baf454$export$8b251419efc915eb } from "../../Dialog-i5VLQw1o.js";
4
4
  import { a as $eed445e0843c11d0$export$dca12b0bb56e4fc, t as $eed445e0843c11d0$export$41f133550aa26f48 } from "../../ListBox-B21SgugS.js";
5
5
  import { n as $d2b4bc8c273e7be6$export$353f5b6fc5456de1 } from "../../Button-h6xF_WrP.js";
6
- import { n as SelectClearButton, o as $82d7e5349645de74$export$e288731fd71264f0, r as getGroupedOptions, s as $82d7e5349645de74$export$ef9b1a59e592288f, t as OptionItemBase } from "../../shared-DFDimxvX.js";
6
+ import { n as SelectClearButton, o as $82d7e5349645de74$export$e288731fd71264f0, r as getGroupedOptions, s as $82d7e5349645de74$export$ef9b1a59e592288f, t as OptionItemBase } from "../../shared-D_OXizRt.js";
7
7
  import { t as $bb77f239b46e8c72$export$3274cf84b703fff } from "../../useFilter-OiMnf6sb.js";
8
8
  import { n as $3985021b0ad6602f$export$f5b8910cec6cf069 } from "../../Input-BURqyJXW.js";
9
9
  import { n as $d2f53cda644affe3$export$2f2b9559550c7bbc, t as $440f4836bcb56932$export$b94867ecbd698f21 } from "../../SearchField-DR_I4_yn.js";
@@ -93,14 +93,13 @@ var Select = (props) => {
93
93
  ]);
94
94
  const currentValue = simpleValue ? value ?? null : value?.value ?? null;
95
95
  const renderItem = (item) => {
96
- let icon = item?.icon ?? null;
97
- icon = jsx(Icon, { icon });
96
+ const icon = item?.icon ?? null;
98
97
  return jsxs(OptionItemBase, {
99
98
  id: item?.value ?? randomId(8),
100
99
  className: item?.className,
101
100
  selectIndicator: true,
102
101
  children: [customMenuOption && customMenuOption(item), !customMenuOption && jsx(RichLabel, {
103
- icon,
102
+ icon: icon && jsx(Icon, { icon }),
104
103
  label: item?.label,
105
104
  subtitle: item?.subtitle,
106
105
  noColor: true
@@ -163,10 +162,9 @@ var Select = (props) => {
163
162
  className: "es:select-none es:pointer-events-none es:pr-6 es:text-sm es:text-surface-500",
164
163
  children: placeholder
165
164
  });
166
- let icon = selectedItem?.icon ?? null;
167
- icon = jsx(Icon, { icon });
165
+ const icon = selectedItem?.icon ?? null;
168
166
  return jsx(RichLabel, {
169
- icon,
167
+ icon: icon && jsx(Icon, { icon }),
170
168
  label: selectedItem?.label,
171
169
  subtitle: selectedItem?.subtitle,
172
170
  className: clsx("es:pr-6 es:grow es:w-full", disabled && "es:grayscale es:pointer-events-none"),
@@ -1,4 +1,4 @@
1
- import { n as AnimatePresence, t as motion } from "../../proxy-BG7-_Ou3.js";
1
+ import { n as AnimatePresence, t as motion } from "../../proxy-DjkEpeDL.js";
2
2
  import { t as clsx } from "../../clsx-BUU5J41u.js";
3
3
  import { i as $6f909507e6374d18$export$472062a354075cee, o as $6f909507e6374d18$export$a590f758a961cb5b, r as $6f909507e6374d18$export$2c1b491743890dec, t as $6f909507e6374d18$export$105594979f116971 } from "../../Slider-DW1RuMVp.js";
4
4
  import { n as $01b77f81d0f07f68$export$b04be29aa201d4f5 } from "../../Label-DFXXxMKY.js";
@@ -1,4 +1,4 @@
1
- import { n as AnimatePresence, t as motion } from "../../proxy-BG7-_Ou3.js";
1
+ import { n as AnimatePresence, t as motion } from "../../proxy-DjkEpeDL.js";
2
2
  import { t as clsx } from "../../clsx-BUU5J41u.js";
3
3
  import { i as $6f909507e6374d18$export$472062a354075cee, o as $6f909507e6374d18$export$a590f758a961cb5b, r as $6f909507e6374d18$export$2c1b491743890dec, t as $6f909507e6374d18$export$105594979f116971 } from "../../Slider-DW1RuMVp.js";
4
4
  import { n as $01b77f81d0f07f68$export$b04be29aa201d4f5 } from "../../Label-DFXXxMKY.js";
@@ -518,8 +518,7 @@ var __compileToABGR = (chans, hasAlpha) => {
518
518
  return __compileLShift(`((${__compileRShift("x", ch.shift)} & ${mask}) * ${scale})`, 24 - ch.lane * 8);
519
519
  } else return __compileLShift(`(x & ${__hex(ch.maskA)})`, ch.abgrShift);
520
520
  }).join(" | ");
521
- const alpha = !hasAlpha ? `0xff000000 | ` : "";
522
- return new Function("x", `return (${alpha}${body}) >>> 0;`);
521
+ return new Function("x", `return (${!hasAlpha ? `0xff000000 | ` : ""}${body}) >>> 0;`);
523
522
  };
524
523
  //#endregion
525
524
  //#region node_modules/@thi.ng/pixel/format/int-format.js
@@ -4,7 +4,7 @@ import { n as $251c695a52d94a8d$export$cae13e90592f246a } from "./color-swatch-C
4
4
  import { t as SolidColorPicker } from "./solid-color-picker-DbT-aoVx.js";
5
5
  import { t as NumberPicker } from "./number-picker-CkA1iJNZ.js";
6
6
  import { BaseControl } from "./components/base-control/base-control.js";
7
- import { o as isColorDark, s as srgb } from "./general-D-7dwhuF.js";
7
+ import { o as isColorDark, s as srgb } from "./general-BKOvs-AO.js";
8
8
  import { r as sprintf, t as __ } from "./build-module-sxK3nxOK.js";
9
9
  import { add } from "./icons/ui-icons/add.js";
10
10
  import { angle } from "./icons/ui-icons/angle.js";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import "./proxy-BG7-_Ou3.js";
1
+ import "./proxy-DjkEpeDL.js";
2
2
  import { AnimatedVisibility } from "./components/animated-visibility/animated-visibility.js";
3
3
  import { t as LinkInput } from "./link-input-D7iDRpOM.js";
4
4
  import { t as Modal } from "./modal-DbVLYMkH.js";
@@ -35,7 +35,7 @@ import { DraggableHandle } from "./components/draggable/draggable-handle.js";
35
35
  import { t as SmartImage } from "./smart-image-CbSsEASF.js";
36
36
  import { FilePickerShell } from "./components/placeholders/file-picker-shell.js";
37
37
  import { FilePlaceholder } from "./components/placeholders/file-placeholder.js";
38
- import { t as GradientEditor } from "./gradient-editor-DbH8NU2p.js";
38
+ import { t as GradientEditor } from "./gradient-editor-BAd_Gzx4.js";
39
39
  import { Slider } from "./components/slider/slider.js";
40
40
  import { MatrixAlign } from "./components/matrix-align/matrix-align.js";
41
41
  import { Toggle } from "./components/toggle/toggle.js";
@@ -3193,9 +3193,14 @@ function animateTarget(visualElement, targetAndTransition, { delay = 0, transiti
3193
3193
  };
3194
3194
  /**
3195
3195
  * If the value is already at the defined target, skip the animation.
3196
+ * We still re-assert the value via frame.update to take precedence
3197
+ * over any stale transitionEnd callbacks from previous animations.
3196
3198
  */
3197
3199
  const currentValue = value.get();
3198
- if (currentValue !== void 0 && !value.isAnimating && !Array.isArray(valueTarget) && valueTarget === currentValue && !valueTransition.velocity) continue;
3200
+ if (currentValue !== void 0 && !value.isAnimating() && !Array.isArray(valueTarget) && valueTarget === currentValue && !valueTransition.velocity) {
3201
+ frame.update(() => value.set(valueTarget));
3202
+ continue;
3203
+ }
3199
3204
  /**
3200
3205
  * If this is the first time a value is being animated, check
3201
3206
  * to see if we're handling off from an existing animation.
@@ -5583,21 +5588,22 @@ function calcBoxDelta(delta, source, target, origin) {
5583
5588
  calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : void 0);
5584
5589
  calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : void 0);
5585
5590
  }
5586
- function calcRelativeAxis(target, relative, parent) {
5587
- target.min = parent.min + relative.min;
5591
+ function calcRelativeAxis(target, relative, parent, anchor = 0) {
5592
+ target.min = (anchor ? mixNumber$1(parent.min, parent.max, anchor) : parent.min) + relative.min;
5588
5593
  target.max = target.min + calcLength(relative);
5589
5594
  }
5590
- function calcRelativeBox(target, relative, parent) {
5591
- calcRelativeAxis(target.x, relative.x, parent.x);
5592
- calcRelativeAxis(target.y, relative.y, parent.y);
5595
+ function calcRelativeBox(target, relative, parent, anchor) {
5596
+ calcRelativeAxis(target.x, relative.x, parent.x, anchor?.x);
5597
+ calcRelativeAxis(target.y, relative.y, parent.y, anchor?.y);
5593
5598
  }
5594
- function calcRelativeAxisPosition(target, layout, parent) {
5595
- target.min = layout.min - parent.min;
5599
+ function calcRelativeAxisPosition(target, layout, parent, anchor = 0) {
5600
+ const anchorPoint = anchor ? mixNumber$1(parent.min, parent.max, anchor) : parent.min;
5601
+ target.min = layout.min - anchorPoint;
5596
5602
  target.max = target.min + calcLength(layout);
5597
5603
  }
5598
- function calcRelativePosition(target, layout, parent) {
5599
- calcRelativeAxisPosition(target.x, layout.x, parent.x);
5600
- calcRelativeAxisPosition(target.y, layout.y, parent.y);
5604
+ function calcRelativePosition(target, layout, parent, anchor) {
5605
+ calcRelativeAxisPosition(target.x, layout.x, parent.x, anchor?.x);
5606
+ calcRelativeAxisPosition(target.y, layout.y, parent.y, anchor?.y);
5601
5607
  }
5602
5608
  //#endregion
5603
5609
  //#region node_modules/motion-dom/dist/es/projection/geometry/delta-remove.mjs
@@ -6272,8 +6278,16 @@ function createProjectionNode$1({ attachResizeListener, defaultParent, measureSc
6272
6278
  update() {
6273
6279
  this.updateScheduled = false;
6274
6280
  if (this.isUpdateBlocked()) {
6281
+ const wasBlockedByResize = this.updateBlockedByResize;
6275
6282
  this.unblockUpdate();
6283
+ this.updateBlockedByResize = false;
6276
6284
  this.clearAllSnapshots();
6285
+ /**
6286
+ * When blocked by resize, still measure layouts so
6287
+ * callbacks like onLayoutMeasure fire (e.g. Reorder).
6288
+ * Skip notifyLayoutUpdate to prevent animations.
6289
+ */
6290
+ if (wasBlockedByResize) this.nodes.forEach(forceLayoutMeasure);
6277
6291
  this.nodes.forEach(clearMeasurements);
6278
6292
  return;
6279
6293
  }
@@ -6547,7 +6561,7 @@ function createProjectionNode$1({ attachResizeListener, defaultParent, measureSc
6547
6561
  * a relativeParent. This will allow a component to perform scale correction
6548
6562
  * even if no animation has started.
6549
6563
  */
6550
- if (!this.targetDelta && !this.relativeTarget) if (relativeParent && relativeParent.layout) this.createRelativeTarget(relativeParent, this.layout.layoutBox, relativeParent.layout.layoutBox);
6564
+ if (!this.targetDelta && !this.relativeTarget) if (this.options.layoutAnchor !== false && relativeParent && relativeParent.layout) this.createRelativeTarget(relativeParent, this.layout.layoutBox, relativeParent.layout.layoutBox);
6551
6565
  else this.removeRelativeTarget();
6552
6566
  /**
6553
6567
  * If we have no relative target or no target delta our target isn't valid
@@ -6566,7 +6580,7 @@ function createProjectionNode$1({ attachResizeListener, defaultParent, measureSc
6566
6580
  */
6567
6581
  if (this.relativeTarget && this.relativeTargetOrigin && this.relativeParent && this.relativeParent.target) {
6568
6582
  this.forceRelativeParentToResolveTarget();
6569
- calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);
6583
+ calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target, this.options.layoutAnchor || void 0);
6570
6584
  } else if (this.targetDelta) {
6571
6585
  if (Boolean(this.resumingFrom)) this.applyTransform(this.layout.layoutBox, false, this.target);
6572
6586
  else copyBoxInto(this.target, this.layout.layoutBox);
@@ -6581,7 +6595,7 @@ function createProjectionNode$1({ attachResizeListener, defaultParent, measureSc
6581
6595
  */
6582
6596
  if (this.attemptToResolveRelativeTarget) {
6583
6597
  this.attemptToResolveRelativeTarget = false;
6584
- if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) this.createRelativeTarget(relativeParent, this.target, relativeParent.target);
6598
+ if (this.options.layoutAnchor !== false && relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) this.createRelativeTarget(relativeParent, this.target, relativeParent.target);
6585
6599
  else this.relativeParent = this.relativeTarget = void 0;
6586
6600
  }
6587
6601
  /**
@@ -6603,7 +6617,7 @@ function createProjectionNode$1({ attachResizeListener, defaultParent, measureSc
6603
6617
  this.forceRelativeParentToResolveTarget();
6604
6618
  this.relativeTarget = createBox();
6605
6619
  this.relativeTargetOrigin = createBox();
6606
- calcRelativePosition(this.relativeTargetOrigin, layout, parentLayout);
6620
+ calcRelativePosition(this.relativeTargetOrigin, layout, parentLayout, this.options.layoutAnchor || void 0);
6607
6621
  copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);
6608
6622
  }
6609
6623
  removeRelativeTarget() {
@@ -6737,7 +6751,7 @@ function createProjectionNode$1({ attachResizeListener, defaultParent, measureSc
6737
6751
  mixAxisDelta(targetDelta.y, delta.y, progress);
6738
6752
  this.setTargetDelta(targetDelta);
6739
6753
  if (this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout) {
6740
- calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);
6754
+ calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox, this.options.layoutAnchor || void 0);
6741
6755
  mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);
6742
6756
  /**
6743
6757
  * If this is an unchanged relative target we can consider the
@@ -7038,10 +7052,11 @@ function notifyLayoutUpdate(node) {
7038
7052
  if (relativeParent && !relativeParent.resumeFrom) {
7039
7053
  const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;
7040
7054
  if (parentSnapshot && parentLayout) {
7055
+ const anchor = node.options.layoutAnchor || void 0;
7041
7056
  const relativeSnapshot = createBox();
7042
- calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);
7057
+ calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox, anchor);
7043
7058
  const relativeLayout = createBox();
7044
- calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);
7059
+ calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox, anchor);
7045
7060
  if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) hasRelativeLayoutChanged = true;
7046
7061
  if (relativeParent.options.layoutRoot) {
7047
7062
  node.relativeTarget = relativeLayout;
@@ -7100,6 +7115,10 @@ function clearSnapshot(node) {
7100
7115
  function clearMeasurements(node) {
7101
7116
  node.clearMeasurements();
7102
7117
  }
7118
+ function forceLayoutMeasure(node) {
7119
+ node.isLayoutDirty = true;
7120
+ node.updateLayout();
7121
+ }
7103
7122
  function clearIsLayoutDirty(node) {
7104
7123
  node.isLayoutDirty = false;
7105
7124
  }
@@ -8163,7 +8182,7 @@ function useVisualElement(Component, visualState, props, createVisualElement, Pr
8163
8182
  return visualElement;
8164
8183
  }
8165
8184
  function createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {
8166
- const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, layoutCrossfade } = props;
8185
+ const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, layoutAnchor, layoutCrossfade } = props;
8167
8186
  visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props["data-framer-portal-id"] ? void 0 : getClosestProjectingNode(visualElement.parent));
8168
8187
  visualElement.projection.setOptions({
8169
8188
  layoutId,
@@ -8174,7 +8193,8 @@ function createProjectionNode(visualElement, props, ProjectionNodeConstructor, i
8174
8193
  initialPromotionConfig,
8175
8194
  crossfade: layoutCrossfade,
8176
8195
  layoutScroll,
8177
- layoutRoot
8196
+ layoutRoot,
8197
+ layoutAnchor
8178
8198
  });
8179
8199
  }
8180
8200
  function getClosestProjectingNode(visualElement) {
@@ -9371,8 +9391,10 @@ var MeasureLayoutWithContext = class extends Component {
9371
9391
  return null;
9372
9392
  }
9373
9393
  componentDidUpdate() {
9374
- const { projection } = this.props.visualElement;
9394
+ const { visualElement, layoutAnchor } = this.props;
9395
+ const { projection } = visualElement;
9375
9396
  if (projection) {
9397
+ projection.options.layoutAnchor = layoutAnchor;
9376
9398
  projection.root.didUpdate();
9377
9399
  microtask.postRender(() => {
9378
9400
  if (!projection.currentAnimation && projection.isLead()) this.safeToRemove();
@@ -1027,9 +1027,9 @@ var getGroupedOptions = (filteredOptions, groupKey, groupValueMapping) => {
1027
1027
  return {
1028
1028
  key,
1029
1029
  label: mapping?.label ?? (key === "_other" ? __("Other", "eightshift-ui-components") : key),
1030
- icon: jsx(Icon, { icon: mapping?.icon }),
1030
+ icon: mapping?.icon && jsx(Icon, { icon: mapping?.icon }),
1031
1031
  subtitle: mapping?.subtitle || null,
1032
- endIcon: jsx(Icon, { icon: mapping?.endIcon }),
1032
+ endIcon: mapping?.endIcon && jsx(Icon, { icon: mapping?.endIcon }),
1033
1033
  options
1034
1034
  };
1035
1035
  });
@@ -1,2 +1,2 @@
1
- import { a as getFileExtension, i as checkTransparency, n as analyzeImageAsync, o as isColorDark, r as analyzeImageData, t as analyzeImage } from "../general-D-7dwhuF.js";
1
+ import { a as getFileExtension, i as checkTransparency, n as analyzeImageAsync, o as isColorDark, r as analyzeImageData, t as analyzeImage } from "../general-BKOvs-AO.js";
2
2
  export { analyzeImage, analyzeImageAsync, analyzeImageData, checkTransparency, getFileExtension, isColorDark };
@@ -3,7 +3,7 @@ import { arrayMoveMultiple, fixIds } from "./array-helpers.js";
3
3
  import { a as isObject, c as kebabCase, d as snakeCase, f as upperFirst, i as isEqual, l as lowerFirst, n as has, o as isPlainObject, r as isEmpty, s as isString, t as camelCase, u as pascalCase } from "../es-dash-HqXWZZ3_.js";
4
4
  import { truncate, truncateEnd, truncateMiddle, unescapeHTML } from "./text-helpers.js";
5
5
  import { n as throttle, t as debounce } from "../debounce-throttle-DXxSAKpq.js";
6
- import { a as getFileExtension, i as checkTransparency, n as analyzeImageAsync, o as isColorDark, r as analyzeImageData, t as analyzeImage } from "../general-D-7dwhuF.js";
6
+ import { a as getFileExtension, i as checkTransparency, n as analyzeImageAsync, o as isColorDark, r as analyzeImageData, t as analyzeImage } from "../general-BKOvs-AO.js";
7
7
  import { cyrb64Hash, randomId, simpleHash } from "./hash.js";
8
8
  import { t as clsx } from "../utilities-CPFDXC3B.js";
9
9
  export { analyzeImage, analyzeImageAsync, analyzeImageData, arrayMoveMultiple, camelCase, checkTransparency, clsx, clsx$1 as clsxFull, cyrb64Hash, debounce, fixIds, getFileExtension, has, isColorDark, isEmpty, isEqual, isObject, isPlainObject, isString, kebabCase, lowerFirst, pascalCase, randomId, simpleHash, snakeCase, throttle, truncate, truncateEnd, truncateMiddle, unescapeHTML, upperFirst };
@@ -1,4 +1,4 @@
1
- import { c as FLOAT_RGBA, l as floatBufferFromCanvas, r as analyzeImageData } from "../general-D-7dwhuF.js";
1
+ import { c as FLOAT_RGBA, l as floatBufferFromCanvas, r as analyzeImageData } from "../general-BKOvs-AO.js";
2
2
  //#region lib/workers/image-analysis.worker.js
3
3
  /**
4
4
  * Web Worker for image analysis
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eightshift/ui-components",
3
- "version": "7.0.0",
3
+ "version": "7.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -67,20 +67,20 @@
67
67
  "@eslint/compat": "^2.0.3",
68
68
  "@react-stately/collections": "^3.12.10",
69
69
  "@stylistic/eslint-plugin": "^5.10.0",
70
- "@tailwindcss/vite": "^4.2.1",
71
- "@thi.ng/color": "^5.8.16",
72
- "@thi.ng/pixel": "^7.5.25",
73
- "@thi.ng/pixel-analysis": "^2.0.31",
74
- "@thi.ng/pixel-dominant-colors": "^2.0.34",
70
+ "@tailwindcss/vite": "^4.2.2",
71
+ "@thi.ng/color": "^5.8.18",
72
+ "@thi.ng/pixel": "^7.5.26",
73
+ "@thi.ng/pixel-analysis": "^2.0.33",
74
+ "@thi.ng/pixel-dominant-colors": "^2.0.36",
75
75
  "@types/react": "^18.3.28",
76
76
  "@types/react-dom": "^18.3.7",
77
- "@vitejs/plugin-react": "^5.2.0",
78
- "@wordpress/i18n": "^6.14.0",
77
+ "@vitejs/plugin-react": "^6.0.1",
78
+ "@wordpress/i18n": "^6.15.0",
79
79
  "autoprefixer": "^10.4.27",
80
80
  "class-variance-authority": "^0.7.1",
81
81
  "clsx": "^2.1.1",
82
82
  "css-gradient-parser": "^0.0.18",
83
- "eslint": "^10.0.3",
83
+ "eslint": "^10.1.0",
84
84
  "eslint-config-prettier": "^10.1.8",
85
85
  "eslint-plugin-jsdoc": "^62.8.0",
86
86
  "eslint-plugin-prettier": "^5.5.5",
@@ -104,10 +104,10 @@
104
104
  "react-movable": "^3.4.1",
105
105
  "react-stately": "^3.45.0",
106
106
  "svg-to-jsx-string": "^0.1.1",
107
- "tailwindcss": "^4.2.1",
107
+ "tailwindcss": "^4.2.2",
108
108
  "tailwindcss-motion": "^1.1.1",
109
109
  "tailwindcss-react-aria-components": "^2.0.1",
110
- "vite": "^8.0.0",
110
+ "vite": "^8.0.1",
111
111
  "vite-plugin-lib-inject-css": "^2.2.2"
112
112
  },
113
113
  "dependencies": {