componentes-sinco 1.1.22 → 1.1.24
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 +67 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -4
- package/dist/index.d.ts +18 -4
- package/dist/index.js +66 -24
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -715,14 +715,28 @@ interface SCDatePickerProps {
|
|
|
715
715
|
required?: boolean;
|
|
716
716
|
disabled?: boolean;
|
|
717
717
|
background?: string;
|
|
718
|
-
state: Dayjs
|
|
719
|
-
setState: (value: Dayjs
|
|
718
|
+
state: Dayjs;
|
|
719
|
+
setState: (value: Dayjs) => void;
|
|
720
|
+
width?: string;
|
|
721
|
+
minDate?: Dayjs;
|
|
722
|
+
maxDate?: Dayjs;
|
|
723
|
+
}
|
|
724
|
+
declare const SCDatePicker: ({ label, required, disabled, background, state, setState, width, minDate, maxDate }: SCDatePickerProps) => React__default.JSX.Element;
|
|
725
|
+
|
|
726
|
+
interface SCAlertProps {
|
|
727
|
+
title: string;
|
|
728
|
+
subtitle?: string;
|
|
729
|
+
severity?: 'success' | 'error' | 'warning' | 'info';
|
|
730
|
+
variant?: 'filled' | 'outlined' | 'standard';
|
|
720
731
|
width?: string;
|
|
732
|
+
close?: boolean;
|
|
733
|
+
openState: boolean;
|
|
734
|
+
setOpenState: any;
|
|
721
735
|
}
|
|
722
|
-
declare const
|
|
736
|
+
declare const SCAlert: ({ title, subtitle, severity, variant, width, close, openState, setOpenState, }: SCAlertProps) => React__default.JSX.Element;
|
|
723
737
|
|
|
724
738
|
declare const SincoTheme: _mui_material_styles.Theme;
|
|
725
739
|
declare let AdproSincoTheme: _mui_material_styles.Theme;
|
|
726
740
|
declare let ADCSincoTheme: _mui_material_styles.Theme;
|
|
727
741
|
|
|
728
|
-
export { ADCSincoTheme, AdproSincoTheme, Attachment, AttachmentMobile, BasicMenu, type BasicMenuProps, CALENDAR_CONSTANTS, Calendar, type CalendarEvent, type CalendarProps, type CalendarView, type CellBorderType, DayEventsList, EmptyState, type EmptyStateProperties, type EmptyStateSize, type EmptyStateStates, type EventState, FooterAction, type FooterActionsProperties, type ModalProps, type ModalStates, MultiSelect, type MultiSelectProps, type NavigationAction, PageHeader, type PageheaderProperties, type ReplyButtonVariants, type ReplyPalette$1 as ReplyPalette, type ReplyTextPalette, type ReplyVariants, type RepplyAnchorPositions, type RepplySizeVariants, SCActivityCalendar, SCAppBar, SCAutocomplete, SCCalendarSwipeable, SCCard, SCDataGrid, SCDataGridInitial, SCDatePicker, SCDateRange, SCDialog, SCDrawer, SCListContent, SCMenu, SCModal, SCSelect, SCSnackBar, SCTabs, SCTextArea, type SCTextAreaProps, SCTextField, type SCTextFieldProps, SCTime, SCToastNotification, SincoTheme, StopEvent, type ToastBaseProperties, ToastProgress, type ToastType, capitalize, clampEventToVisibleRange, filterEventsForDay, getButtonColor, getCellBorderType, getIcon, getIconComponent, getIconMultiSelect, getModalColor, modalStateConfig, useCalendarNavigation, useFilteredItems, useMultiSelectHandlers, useProgress };
|
|
742
|
+
export { ADCSincoTheme, AdproSincoTheme, Attachment, AttachmentMobile, BasicMenu, type BasicMenuProps, CALENDAR_CONSTANTS, Calendar, type CalendarEvent, type CalendarProps, type CalendarView, type CellBorderType, DayEventsList, EmptyState, type EmptyStateProperties, type EmptyStateSize, type EmptyStateStates, type EventState, FooterAction, type FooterActionsProperties, type ModalProps, type ModalStates, MultiSelect, type MultiSelectProps, type NavigationAction, PageHeader, type PageheaderProperties, type ReplyButtonVariants, type ReplyPalette$1 as ReplyPalette, type ReplyTextPalette, type ReplyVariants, type RepplyAnchorPositions, type RepplySizeVariants, SCActivityCalendar, SCAlert, SCAppBar, SCAutocomplete, SCCalendarSwipeable, SCCard, SCDataGrid, SCDataGridInitial, SCDatePicker, SCDateRange, SCDialog, SCDrawer, SCListContent, SCMenu, SCModal, SCSelect, SCSnackBar, SCTabs, SCTextArea, type SCTextAreaProps, SCTextField, type SCTextFieldProps, SCTime, SCToastNotification, SincoTheme, StopEvent, type ToastBaseProperties, ToastProgress, type ToastType, capitalize, clampEventToVisibleRange, filterEventsForDay, getButtonColor, getCellBorderType, getIcon, getIconComponent, getIconMultiSelect, getModalColor, modalStateConfig, useCalendarNavigation, useFilteredItems, useMultiSelectHandlers, useProgress };
|
package/dist/index.d.ts
CHANGED
|
@@ -715,14 +715,28 @@ interface SCDatePickerProps {
|
|
|
715
715
|
required?: boolean;
|
|
716
716
|
disabled?: boolean;
|
|
717
717
|
background?: string;
|
|
718
|
-
state: Dayjs
|
|
719
|
-
setState: (value: Dayjs
|
|
718
|
+
state: Dayjs;
|
|
719
|
+
setState: (value: Dayjs) => void;
|
|
720
|
+
width?: string;
|
|
721
|
+
minDate?: Dayjs;
|
|
722
|
+
maxDate?: Dayjs;
|
|
723
|
+
}
|
|
724
|
+
declare const SCDatePicker: ({ label, required, disabled, background, state, setState, width, minDate, maxDate }: SCDatePickerProps) => React__default.JSX.Element;
|
|
725
|
+
|
|
726
|
+
interface SCAlertProps {
|
|
727
|
+
title: string;
|
|
728
|
+
subtitle?: string;
|
|
729
|
+
severity?: 'success' | 'error' | 'warning' | 'info';
|
|
730
|
+
variant?: 'filled' | 'outlined' | 'standard';
|
|
720
731
|
width?: string;
|
|
732
|
+
close?: boolean;
|
|
733
|
+
openState: boolean;
|
|
734
|
+
setOpenState: any;
|
|
721
735
|
}
|
|
722
|
-
declare const
|
|
736
|
+
declare const SCAlert: ({ title, subtitle, severity, variant, width, close, openState, setOpenState, }: SCAlertProps) => React__default.JSX.Element;
|
|
723
737
|
|
|
724
738
|
declare const SincoTheme: _mui_material_styles.Theme;
|
|
725
739
|
declare let AdproSincoTheme: _mui_material_styles.Theme;
|
|
726
740
|
declare let ADCSincoTheme: _mui_material_styles.Theme;
|
|
727
741
|
|
|
728
|
-
export { ADCSincoTheme, AdproSincoTheme, Attachment, AttachmentMobile, BasicMenu, type BasicMenuProps, CALENDAR_CONSTANTS, Calendar, type CalendarEvent, type CalendarProps, type CalendarView, type CellBorderType, DayEventsList, EmptyState, type EmptyStateProperties, type EmptyStateSize, type EmptyStateStates, type EventState, FooterAction, type FooterActionsProperties, type ModalProps, type ModalStates, MultiSelect, type MultiSelectProps, type NavigationAction, PageHeader, type PageheaderProperties, type ReplyButtonVariants, type ReplyPalette$1 as ReplyPalette, type ReplyTextPalette, type ReplyVariants, type RepplyAnchorPositions, type RepplySizeVariants, SCActivityCalendar, SCAppBar, SCAutocomplete, SCCalendarSwipeable, SCCard, SCDataGrid, SCDataGridInitial, SCDatePicker, SCDateRange, SCDialog, SCDrawer, SCListContent, SCMenu, SCModal, SCSelect, SCSnackBar, SCTabs, SCTextArea, type SCTextAreaProps, SCTextField, type SCTextFieldProps, SCTime, SCToastNotification, SincoTheme, StopEvent, type ToastBaseProperties, ToastProgress, type ToastType, capitalize, clampEventToVisibleRange, filterEventsForDay, getButtonColor, getCellBorderType, getIcon, getIconComponent, getIconMultiSelect, getModalColor, modalStateConfig, useCalendarNavigation, useFilteredItems, useMultiSelectHandlers, useProgress };
|
|
742
|
+
export { ADCSincoTheme, AdproSincoTheme, Attachment, AttachmentMobile, BasicMenu, type BasicMenuProps, CALENDAR_CONSTANTS, Calendar, type CalendarEvent, type CalendarProps, type CalendarView, type CellBorderType, DayEventsList, EmptyState, type EmptyStateProperties, type EmptyStateSize, type EmptyStateStates, type EventState, FooterAction, type FooterActionsProperties, type ModalProps, type ModalStates, MultiSelect, type MultiSelectProps, type NavigationAction, PageHeader, type PageheaderProperties, type ReplyButtonVariants, type ReplyPalette$1 as ReplyPalette, type ReplyTextPalette, type ReplyVariants, type RepplyAnchorPositions, type RepplySizeVariants, SCActivityCalendar, SCAlert, SCAppBar, SCAutocomplete, SCCalendarSwipeable, SCCard, SCDataGrid, SCDataGridInitial, SCDatePicker, SCDateRange, SCDialog, SCDrawer, SCListContent, SCMenu, SCModal, SCSelect, SCSnackBar, SCTabs, SCTextArea, type SCTextAreaProps, SCTextField, type SCTextFieldProps, SCTime, SCToastNotification, SincoTheme, StopEvent, type ToastBaseProperties, ToastProgress, type ToastType, capitalize, clampEventToVisibleRange, filterEventsForDay, getButtonColor, getCellBorderType, getIcon, getIconComponent, getIconMultiSelect, getModalColor, modalStateConfig, useCalendarNavigation, useFilteredItems, useMultiSelectHandlers, useProgress };
|
package/dist/index.js
CHANGED
|
@@ -1572,7 +1572,10 @@ var SCTextArea = ({
|
|
|
1572
1572
|
setState(e.target.value.substring(0, maxLength));
|
|
1573
1573
|
}
|
|
1574
1574
|
},
|
|
1575
|
-
autoComplete: "off"
|
|
1575
|
+
autoComplete: "off",
|
|
1576
|
+
InputLabelProps: {
|
|
1577
|
+
shrink: true
|
|
1578
|
+
}
|
|
1576
1579
|
}
|
|
1577
1580
|
)), /* @__PURE__ */ React9.createElement(Stack4, null, /* @__PURE__ */ React9.createElement(
|
|
1578
1581
|
Typography5,
|
|
@@ -3065,6 +3068,7 @@ function SCDataGridInitial({ data, columns, getRowId, groupColumns, rowsTable, r
|
|
|
3065
3068
|
const [pageSize, setPageSize] = useState13(rows);
|
|
3066
3069
|
const [arrayRows, setArrayRows] = useState13([]);
|
|
3067
3070
|
const [selectionModel, setSelectionModel] = useState13([]);
|
|
3071
|
+
debugger;
|
|
3068
3072
|
useEffect13(() => {
|
|
3069
3073
|
var _a;
|
|
3070
3074
|
if (setSelectedRow) {
|
|
@@ -3236,8 +3240,8 @@ function SCDataGridInitial({ data, columns, getRowId, groupColumns, rowsTable, r
|
|
|
3236
3240
|
"maxHeight": "0px !important"
|
|
3237
3241
|
},
|
|
3238
3242
|
"& .MuiDataGrid-cell": {
|
|
3239
|
-
|
|
3240
|
-
|
|
3243
|
+
padding: groupColumns != void 0 ? "0px !important" : "0px 10px !important",
|
|
3244
|
+
backgroundColor: "white"
|
|
3241
3245
|
},
|
|
3242
3246
|
// Fila seleccionada (cuando selectionModel selecciona filas)
|
|
3243
3247
|
"& .MuiDataGrid-row.Mui-selected .MuiDataGrid-cell": {
|
|
@@ -4008,12 +4012,13 @@ var isToday = (date) => {
|
|
|
4008
4012
|
return date.isSame(dayjs3(), "day");
|
|
4009
4013
|
};
|
|
4010
4014
|
var stateColors = {
|
|
4011
|
-
Asignada: "warning.
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4015
|
+
Asignada: "warning.200",
|
|
4016
|
+
Generada: "default.main",
|
|
4017
|
+
EnProgreso: "primary.200",
|
|
4018
|
+
Aplazada: "secondary.A400",
|
|
4019
|
+
Vencida: "error.200",
|
|
4020
|
+
Finalizada: "success.200"
|
|
4021
|
+
//#FCE4C0
|
|
4017
4022
|
};
|
|
4018
4023
|
|
|
4019
4024
|
// src/Components/Calendario/Event.tsx
|
|
@@ -4311,7 +4316,7 @@ var MonthView = ({ events, isLoading, onDayClick, onMoreClick, currentDate, onEv
|
|
|
4311
4316
|
{
|
|
4312
4317
|
key: `${event2.id}-${day.toString()}`,
|
|
4313
4318
|
event: event2,
|
|
4314
|
-
color: stateColors[event2.state],
|
|
4319
|
+
color: stateColors[event2.state == "En progreso" ? "EnProgreso" : event2.state],
|
|
4315
4320
|
onClick: () => onEventClick == null ? void 0 : onEventClick(event2, day),
|
|
4316
4321
|
onHover: onEventHover
|
|
4317
4322
|
}
|
|
@@ -5115,10 +5120,10 @@ var SCActivityCalendar = ({
|
|
|
5115
5120
|
key: idx,
|
|
5116
5121
|
options: [{
|
|
5117
5122
|
title: event2.activityDescription,
|
|
5118
|
-
subtitle: /* @__PURE__ */ React42.createElement(React42.Fragment, null, configRangeHour && new Date(event2.date
|
|
5123
|
+
subtitle: /* @__PURE__ */ React42.createElement(React42.Fragment, null, configRangeHour && (/* @__PURE__ */ new Date(event2.date + "T" + event2.startTime)).getHours() === (/* @__PURE__ */ new Date(event2.date + "T" + configRangeHour.split("-")[0])).getHours() && (/* @__PURE__ */ new Date(event2.date + "T" + event2.finalTime)).getHours() === (/* @__PURE__ */ new Date(event2.date + "T" + configRangeHour.split("-")[1])).getHours() && (/* @__PURE__ */ new Date(event2.date + "T" + event2.startTime)).getMinutes() === (/* @__PURE__ */ new Date(event2.date + "T" + configRangeHour.split("-")[0])).getMinutes() && (/* @__PURE__ */ new Date(event2.date + "T" + event2.finalTime)).getMinutes() === (/* @__PURE__ */ new Date(event2.date + "T" + configRangeHour.split("-")[1])).getMinutes() ? /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(Typography25, { variant: "body2" }, "Todo el dia"), /* @__PURE__ */ React42.createElement(LightModeOutlinedIcon, { fontSize: "small" })) : /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(Typography25, { variant: "body2" }, (/* @__PURE__ */ new Date(event2.date + "T" + event2.startTime)).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", hour12: true })), /* @__PURE__ */ React42.createElement(ArrowForwardIcon, { fontSize: "small" }), /* @__PURE__ */ React42.createElement(Typography25, { variant: "body2" }, (/* @__PURE__ */ new Date(event2.date + "T" + event2.finalTime)).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", hour12: true })))),
|
|
5119
5124
|
iconLeftColor: event2.state === "Finalizada" ? "#C7E49D" : "action",
|
|
5120
5125
|
iconLeft: event2.state === "Finalizada" ? "CheckCircle" : event2.state === "Aplazada" ? "EventBusyOutlined" : event2.state === "En progreso" ? "PendingOutlined" : "RadioButtonUnchecked",
|
|
5121
|
-
description: /* @__PURE__ */ React42.createElement(
|
|
5126
|
+
description: /* @__PURE__ */ React42.createElement(Grid11, { display: "flex", flexDirection: "column", alignItems: "flex-start" }, event2.state === "Aplazada" || event2.state === "En progreso" || event2.state === "Auto asignada" ? /* @__PURE__ */ React42.createElement(Grid11, { display: "flex", flexDirection: "row", alignItems: "center", gap: 0.5, sx: { marginLeft: "7px" } }, /* @__PURE__ */ React42.createElement(Badge2, { variant: "dot", badgeContent: "", sx: { display: "flex", alignItems: "center", "& .MuiBadge-badge": { top: "50%", transform: "translateY(-50%)" }, color: "action" } }), /* @__PURE__ */ React42.createElement(Typography25, { variant: "body2" }, event2.state == "Auto asignada" ? "Adicional" : event2.state)) : null, /* @__PURE__ */ React42.createElement(Typography25, { variant: "body1" }, event2.equipmentDescription)),
|
|
5122
5127
|
divider: eventosDelDia.length === idx + 1 ? false : true,
|
|
5123
5128
|
colorDisabled: event2.state === "Finalizada" || event2.state === "Aplazada" || event2.state === "En progreso" ? true : false,
|
|
5124
5129
|
fn: fn ? () => fn(event2) : void 0
|
|
@@ -5706,7 +5711,7 @@ import "dayjs/locale/es";
|
|
|
5706
5711
|
import { LocalizationProvider as LocalizationProvider5 } from "@mui/x-date-pickers/LocalizationProvider";
|
|
5707
5712
|
import { AdapterDayjs as AdapterDayjs3 } from "@mui/x-date-pickers/AdapterDayjs";
|
|
5708
5713
|
import InsertInvitationOutlinedIcon from "@mui/icons-material/InsertInvitationOutlined";
|
|
5709
|
-
var SCDatePicker = ({ label, required, disabled, background, state, setState, width }) => {
|
|
5714
|
+
var SCDatePicker = ({ label, required, disabled, background, state, setState, width, minDate, maxDate }) => {
|
|
5710
5715
|
return /* @__PURE__ */ React47.createElement(LocalizationProvider5, { dateAdapter: AdapterDayjs3, adapterLocale: "es" }, /* @__PURE__ */ React47.createElement(
|
|
5711
5716
|
DatePicker,
|
|
5712
5717
|
{
|
|
@@ -5715,21 +5720,21 @@ var SCDatePicker = ({ label, required, disabled, background, state, setState, wi
|
|
|
5715
5720
|
value: state,
|
|
5716
5721
|
onChange: (value) => {
|
|
5717
5722
|
if (value && dayjs11.isDayjs(value) && value.isValid()) {
|
|
5718
|
-
const
|
|
5719
|
-
const
|
|
5720
|
-
if (value.isBefore(
|
|
5723
|
+
const minDate2 = dayjs11("2015-01-01");
|
|
5724
|
+
const maxDate2 = dayjs11().add(3, "month");
|
|
5725
|
+
if (value.isBefore(minDate2, "day")) {
|
|
5721
5726
|
alert("La fecha no puede ser anterior al 01/01/2015");
|
|
5722
5727
|
return;
|
|
5723
5728
|
}
|
|
5724
|
-
if (value.isAfter(
|
|
5729
|
+
if (value.isAfter(maxDate2, "day")) {
|
|
5725
5730
|
alert("La fecha no puede ser posterior a 3 meses desde hoy");
|
|
5726
5731
|
return;
|
|
5727
5732
|
}
|
|
5728
5733
|
setState(value);
|
|
5729
5734
|
}
|
|
5730
5735
|
},
|
|
5731
|
-
minDate: dayjs11("2015-01-01"),
|
|
5732
|
-
maxDate: dayjs11().add(3, "month"),
|
|
5736
|
+
minDate: minDate != null ? minDate : dayjs11("2015-01-01"),
|
|
5737
|
+
maxDate: maxDate != null ? maxDate : dayjs11().add(3, "month"),
|
|
5733
5738
|
sx: {
|
|
5734
5739
|
minWidth: 120,
|
|
5735
5740
|
width: width || "100%",
|
|
@@ -5762,11 +5767,47 @@ var SCDatePicker = ({ label, required, disabled, background, state, setState, wi
|
|
|
5762
5767
|
));
|
|
5763
5768
|
};
|
|
5764
5769
|
|
|
5770
|
+
// src/Components/SCAlert.tsx
|
|
5771
|
+
import React48 from "react";
|
|
5772
|
+
import { Alert, AlertTitle, Typography as Typography28 } from "@mui/material";
|
|
5773
|
+
var SCAlert = ({
|
|
5774
|
+
title,
|
|
5775
|
+
subtitle,
|
|
5776
|
+
severity = "success",
|
|
5777
|
+
variant = "standard",
|
|
5778
|
+
width,
|
|
5779
|
+
close = true,
|
|
5780
|
+
openState,
|
|
5781
|
+
setOpenState
|
|
5782
|
+
}) => {
|
|
5783
|
+
const handleClose = (event2) => {
|
|
5784
|
+
setOpenState(false);
|
|
5785
|
+
};
|
|
5786
|
+
return /* @__PURE__ */ React48.createElement(React48.Fragment, null, openState && /* @__PURE__ */ React48.createElement(
|
|
5787
|
+
Alert,
|
|
5788
|
+
__spreadProps(__spreadValues({
|
|
5789
|
+
severity,
|
|
5790
|
+
variant
|
|
5791
|
+
}, close ? { onClose: handleClose } : {}), {
|
|
5792
|
+
sx: __spreadValues({
|
|
5793
|
+
width: width != null ? width : "auto",
|
|
5794
|
+
alignItems: subtitle ? "flex-start" : "center"
|
|
5795
|
+
}, variant !== "filled" && {
|
|
5796
|
+
"& .MuiAlert-icon": {
|
|
5797
|
+
background: severity == "info" ? "#C0E2EE" : severity == "warning" ? "#FEDAB3" : severity == "error" ? "#F1C7C7" : "#DDEFC4"
|
|
5798
|
+
}
|
|
5799
|
+
})
|
|
5800
|
+
}),
|
|
5801
|
+
/* @__PURE__ */ React48.createElement(AlertTitle, null, title),
|
|
5802
|
+
subtitle ? /* @__PURE__ */ React48.createElement(Typography28, { variant: "body3" }, subtitle) : null
|
|
5803
|
+
));
|
|
5804
|
+
};
|
|
5805
|
+
|
|
5765
5806
|
// src/Theme/index.ts
|
|
5766
5807
|
import { createTheme } from "@mui/material/styles";
|
|
5767
5808
|
|
|
5768
5809
|
// src/Theme/components.ts
|
|
5769
|
-
import
|
|
5810
|
+
import React49 from "react";
|
|
5770
5811
|
import {
|
|
5771
5812
|
InfoRounded as InfoRounded2,
|
|
5772
5813
|
CheckCircleRounded as CheckCircleRounded2,
|
|
@@ -6470,10 +6511,10 @@ var components = {
|
|
|
6470
6511
|
MuiAlert: {
|
|
6471
6512
|
defaultProps: {
|
|
6472
6513
|
iconMapping: {
|
|
6473
|
-
success:
|
|
6474
|
-
error:
|
|
6475
|
-
warning:
|
|
6476
|
-
info:
|
|
6514
|
+
success: React49.createElement(CheckCircleRounded2),
|
|
6515
|
+
error: React49.createElement(ErrorRounded2),
|
|
6516
|
+
warning: React49.createElement(WarningRounded2),
|
|
6517
|
+
info: React49.createElement(InfoRounded2)
|
|
6477
6518
|
}
|
|
6478
6519
|
},
|
|
6479
6520
|
variants: [
|
|
@@ -7525,6 +7566,7 @@ export {
|
|
|
7525
7566
|
MultiSelect,
|
|
7526
7567
|
PageHeader,
|
|
7527
7568
|
SCActivityCalendar,
|
|
7569
|
+
SCAlert,
|
|
7528
7570
|
SCAppBar,
|
|
7529
7571
|
SCAutocomplete,
|
|
7530
7572
|
SCCalendarSwipeable,
|