@lindle/linoardo 1.0.13 → 1.0.14

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.
package/dist/index.cjs CHANGED
@@ -723,7 +723,55 @@ var Menu = React3__namespace.forwardRef((props, ref) => {
723
723
  });
724
724
  Menu.displayName = "Menu";
725
725
  var Menu_default = Menu;
726
- var ExpansionPanelContext = React3__namespace.createContext(null);
726
+ var EXPANSION_PANEL_CONTEXT_PROP = "__expansionPanelContext";
727
+ var EXPANSION_PANEL_ITEM_MARKER = "__isExpansionPanelItem";
728
+ var hasMarker = (type) => {
729
+ if (!type || typeof type !== "function" && typeof type !== "object") {
730
+ return false;
731
+ }
732
+ if (type[EXPANSION_PANEL_ITEM_MARKER]) {
733
+ return true;
734
+ }
735
+ const innerType = type.type;
736
+ if (innerType && innerType !== type) {
737
+ return hasMarker(innerType);
738
+ }
739
+ return false;
740
+ };
741
+ var traverseNode = (node, value) => {
742
+ if (Array.isArray(node)) {
743
+ let changed = false;
744
+ const nextArray = node.map((child) => {
745
+ const result = traverseNode(child, value);
746
+ if (result.changed) {
747
+ changed = true;
748
+ }
749
+ return result.node;
750
+ });
751
+ return { node: changed ? nextArray : node, changed };
752
+ }
753
+ if (node === null || node === void 0 || typeof node === "boolean" || typeof node === "string" || typeof node === "number") {
754
+ return { node, changed: false };
755
+ }
756
+ if (!React3.isValidElement(node)) {
757
+ return { node, changed: false };
758
+ }
759
+ const { node: mappedChildren, changed: childrenChanged } = traverseNode(node.props.children, value);
760
+ const shouldInject = hasMarker(node.type);
761
+ if (!shouldInject && !childrenChanged) {
762
+ return { node, changed: false };
763
+ }
764
+ const injectedProps = shouldInject ? { [EXPANSION_PANEL_CONTEXT_PROP]: value } : void 0;
765
+ const cloned = mappedChildren === void 0 ? React3.cloneElement(node, injectedProps) : React3.cloneElement(node, injectedProps, mappedChildren);
766
+ return { node: cloned, changed: true };
767
+ };
768
+ var injectExpansionPanelContext = (children, value) => traverseNode(children, value).node;
769
+ var markExpansionPanelItem = (component) => {
770
+ if (typeof component !== "function" && (typeof component !== "object" || component === null)) {
771
+ return;
772
+ }
773
+ component[EXPANSION_PANEL_ITEM_MARKER] = true;
774
+ };
727
775
  var densityClasses2 = {
728
776
  comfortable: "py-5",
729
777
  default: "py-4",
@@ -757,12 +805,13 @@ var generateId = (prefix) => `${prefix}-${++uniqueIdCounter}`;
757
805
  var ExpansionPanelItemInner = class extends React3.Component {
758
806
  constructor(props) {
759
807
  super(props);
808
+ this.getContext = () => this.props.__expansionPanelContext ?? null;
760
809
  this.handleToggle = () => {
761
810
  const { disabled = false } = this.props;
762
811
  if (disabled) {
763
812
  return;
764
813
  }
765
- const context = this.context;
814
+ const context = this.getContext();
766
815
  const panelValue = this.props.value ?? this.generatedValue;
767
816
  if (context) {
768
817
  context.toggle(panelValue, disabled);
@@ -795,7 +844,7 @@ var ExpansionPanelItemInner = class extends React3.Component {
795
844
  forwardedRef,
796
845
  ...rest
797
846
  } = this.props;
798
- const context = this.context;
847
+ const context = this.getContext();
799
848
  const panelValue = value ?? this.generatedValue;
800
849
  const density = context?.density ?? "default";
801
850
  const color = colorOverride ?? context?.color ?? "primary";
@@ -892,9 +941,9 @@ var ExpansionPanelItemInner = class extends React3.Component {
892
941
  );
893
942
  }
894
943
  };
895
- ExpansionPanelItemInner.contextType = ExpansionPanelContext;
896
944
  var ExpansionPanelItem = React3.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(ExpansionPanelItemInner, { ...props, forwardedRef: ref }));
897
945
  ExpansionPanelItem.displayName = "ExpansionPanelItem";
946
+ markExpansionPanelItem(ExpansionPanelItem);
898
947
  var ExpansionPanelItem_default = ExpansionPanelItem;
899
948
  var variantContainerClasses = {
900
949
  elevated: "bg-white border border-gray-200 shadow-lg shadow-gray-900/10",
@@ -1001,15 +1050,16 @@ var ExpansionPanelInner = class extends React3.Component {
1001
1050
  const variantClass = divider ? variantContainerClasses[variant] : "bg-transparent border border-transparent shadow-none";
1002
1051
  const shapeClass = roundedClasses2[rounded] ?? roundedClasses2.lg;
1003
1052
  const layoutClass = divider ? "divide-y divide-gray-100 overflow-hidden" : "gap-4";
1004
- return /* @__PURE__ */ jsxRuntime.jsx(ExpansionPanelContext.Provider, { value: providerValue, children: /* @__PURE__ */ jsxRuntime.jsx(
1053
+ const enhancedChildren = injectExpansionPanelContext(children, providerValue);
1054
+ return /* @__PURE__ */ jsxRuntime.jsx(
1005
1055
  "div",
1006
1056
  {
1007
1057
  ...rest,
1008
1058
  ref: forwardedRef,
1009
1059
  className: tailwindMerge.twMerge("expansion-panel flex w-full flex-col text-gray-900", variantClass, shapeClass, layoutClass, className),
1010
- children
1060
+ children: enhancedChildren
1011
1061
  }
1012
- ) });
1062
+ );
1013
1063
  }
1014
1064
  };
1015
1065
  var ExpansionPanel = React3.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(ExpansionPanelInner, { ...props, forwardedRef: ref }));