+ {showControls && !isChild && isGrid && (
+ <>
+
+
+ {gridToolbarSpecs?.rowTools.slots.map(
+ (slotConfig, index, arr) => (
+
+ {
+ onRowSelect(slotConfig)
+ onExternalSlotSelect &&
+ onExternalSlotSelect(slotConfig, "row")
+ }}
+ controlsEnabled={showControls}
+ selectionOnlyModeEnabled={selectionOnlyModeEnabled}
+ isLast={index === arr.length - 1}
+ rowDeleteHandler={() => onRowDelete(true)}
+ rowInsertHandler={(placement: "before" | "after") =>
+ slots &&
+ gridToolbarSpecs &&
+ GridHelper.insertDimension(
+ "row",
+ gridToolbarSpecs,
+ slots,
+ setSlots,
+ placement,
+ )
+ }
+ rowSelectHandler={(isEntering: boolean) =>
+ onRowSelect(slotConfig, isEntering)
+ }
+ />
+
+ ),
+ )}
+
+
+ {gridToolbarSpecs?.colTools.slots.map(
+ (slotConfig, index, arr) => (
+
+ {
+ onColumnSelect(slotConfig)
+ onExternalSlotSelect &&
+ onExternalSlotSelect(slotConfig, "column")
+ }}
+ controlsEnabled={showControls}
+ selectionOnlyModeEnabled={selectionOnlyModeEnabled}
+ isLast={index === arr.length - 1}
+ columnDeleteHandler={() => onColumnDelete(true)}
+ columnInsertHandler={(
+ placement: "before" | "after",
+ ) =>
+ slots &&
+ gridToolbarSpecs &&
+ GridHelper.insertDimension(
+ "column",
+ gridToolbarSpecs,
+ slots,
+ setSlots,
+ placement,
+ )
+ }
+ columnSelectHandler={(isEntering: boolean) =>
+ onColumnSelect(slotConfig, isEntering)
+ }
+ />
+
+ ),
+ )}
+
+ >
+ )}
+
+ {slots.map((sConfig) => {
+ const props: SlotProps = {
+ demo,
+ config: sConfig,
+ containerDisplayMode: displayMode,
+ controlsEnabled: showControls,
+ hideBuildModePaddings,
+ lastSelected,
+ layoutMode: mode,
+ mode: ArSlotViewMode.BUILD,
+ onClick: onSlotSelect,
+ selectionOnlyModeEnabled,
+ horizontalSplitHandler: (placement: "before" | "after") =>
+ slots &&
+ GridHelper.splitHandler(
+ setSlots,
+ slots,
+ "horizontal",
+ placement,
+ sConfig,
+ ),
+ verticalSplitHandler: (placement: "before" | "after") =>
+ slots &&
+ GridHelper.splitHandler(
+ setSlots,
+ slots,
+ "vertical",
+ placement,
+ sConfig,
+ ),
+ mergeHandler: () => {
+ slots &&
+ minMaxSelections &&
+ mergeEnabled &&
+ GridHelper.mergeHandler(
+ setSlots,
+ slots,
+ minMaxSelections,
+ sConfig,
+ )
+ enableMerge(false)
+ },
+ dropHandler: slotDropHandler,
+ onSlotSelect: onExternalSlotSelect,
+ }
+ return slotRenderer ? (
+ slotRenderer(props)
+ ) : (
+
+ )
+ })}
+
+