orn-ui 0.2.3 → 0.2.5
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/lib/commonjs/molecules/Steps.js +14 -6
- package/lib/commonjs/molecules/Steps.js.map +1 -1
- package/lib/commonjs/molecules/SymmetricGrid.js +84 -0
- package/lib/commonjs/molecules/SymmetricGrid.js.map +1 -0
- package/lib/commonjs/molecules/index.js +7 -0
- package/lib/commonjs/molecules/index.js.map +1 -1
- package/lib/commonjs/organisms/AlertProvider.js +12 -4
- package/lib/commonjs/organisms/AlertProvider.js.map +1 -1
- package/lib/commonjs/organisms/BottomSheet.js +58 -50
- package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
- package/lib/commonjs/organisms/Modal.js +44 -42
- package/lib/commonjs/organisms/Modal.js.map +1 -1
- package/lib/commonjs/organisms/ReorderableList.js +165 -0
- package/lib/commonjs/organisms/ReorderableList.js.map +1 -0
- package/lib/commonjs/organisms/Screen.js +1 -2
- package/lib/commonjs/organisms/Screen.js.map +1 -1
- package/lib/commonjs/organisms/index.js +7 -0
- package/lib/commonjs/organisms/index.js.map +1 -1
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js +38 -30
- package/lib/commonjs/safe-area/SafeAreaUIProvider.js.map +1 -1
- package/lib/commonjs/theme/UIProvider.js +35 -8
- package/lib/commonjs/theme/UIProvider.js.map +1 -1
- package/lib/module/molecules/Steps.js +14 -6
- package/lib/module/molecules/Steps.js.map +1 -1
- package/lib/module/molecules/SymmetricGrid.js +79 -0
- package/lib/module/molecules/SymmetricGrid.js.map +1 -0
- package/lib/module/molecules/index.js +1 -0
- package/lib/module/molecules/index.js.map +1 -1
- package/lib/module/organisms/AlertProvider.js +12 -4
- package/lib/module/organisms/AlertProvider.js.map +1 -1
- package/lib/module/organisms/BottomSheet.js +59 -51
- package/lib/module/organisms/BottomSheet.js.map +1 -1
- package/lib/module/organisms/Modal.js +45 -43
- package/lib/module/organisms/Modal.js.map +1 -1
- package/lib/module/organisms/ReorderableList.js +159 -0
- package/lib/module/organisms/ReorderableList.js.map +1 -0
- package/lib/module/organisms/Screen.js +1 -2
- package/lib/module/organisms/Screen.js.map +1 -1
- package/lib/module/organisms/index.js +1 -0
- package/lib/module/organisms/index.js.map +1 -1
- package/lib/module/safe-area/SafeAreaUIProvider.js +39 -31
- package/lib/module/safe-area/SafeAreaUIProvider.js.map +1 -1
- package/lib/module/theme/UIProvider.js +36 -10
- package/lib/module/theme/UIProvider.js.map +1 -1
- package/lib/typescript/molecules/Steps.d.ts.map +1 -1
- package/lib/typescript/molecules/SymmetricGrid.d.ts +26 -0
- package/lib/typescript/molecules/SymmetricGrid.d.ts.map +1 -0
- package/lib/typescript/molecules/index.d.ts +2 -0
- package/lib/typescript/molecules/index.d.ts.map +1 -1
- package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
- package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/organisms/Modal.d.ts.map +1 -1
- package/lib/typescript/organisms/ReorderableList.d.ts +48 -0
- package/lib/typescript/organisms/ReorderableList.d.ts.map +1 -0
- package/lib/typescript/organisms/Screen.d.ts.map +1 -1
- package/lib/typescript/organisms/index.d.ts +2 -0
- package/lib/typescript/organisms/index.d.ts.map +1 -1
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts +0 -38
- package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts.map +1 -1
- package/lib/typescript/theme/UIProvider.d.ts +21 -1
- package/lib/typescript/theme/UIProvider.d.ts.map +1 -1
- package/package.json +11 -1
- package/registry/alert-provider.json +1 -1
- package/registry/bottom-sheet.json +1 -1
- package/registry/core.json +1 -1
- package/registry/index.json +30 -6
- package/registry/manifest.json +14 -0
- package/registry/modal.json +1 -1
- package/registry/reorderable-list.json +18 -0
- package/registry/screen.json +1 -1
- package/registry/steps.json +1 -1
- package/registry/symmetric-grid.json +18 -0
- package/src/molecules/Steps.tsx +14 -8
- package/src/molecules/SymmetricGrid.tsx +82 -0
- package/src/molecules/index.ts +2 -0
- package/src/organisms/AlertProvider.tsx +13 -5
- package/src/organisms/BottomSheet.tsx +58 -44
- package/src/organisms/Modal.tsx +63 -55
- package/src/organisms/ReorderableList.tsx +183 -0
- package/src/organisms/Screen.tsx +1 -2
- package/src/organisms/index.ts +2 -0
- package/src/safe-area/SafeAreaUIProvider.tsx +46 -41
- package/src/theme/UIProvider.tsx +50 -8
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useRef, useState } from 'react';
|
|
4
|
+
import { Animated, PanResponder, View } from 'react-native';
|
|
5
|
+
import { createStyles } from '../theme/createStyles';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
/** Reordena moviendo el ítem de `from` a `to`, sin mutar `data`. Exportada aparte por ser testeable sin simular gestos. */
|
|
8
|
+
export function move(data, from, to) {
|
|
9
|
+
const next = data.slice();
|
|
10
|
+
const [item] = next.splice(from, 1);
|
|
11
|
+
next.splice(to, 0, item);
|
|
12
|
+
return next;
|
|
13
|
+
}
|
|
14
|
+
const useStyles = createStyles(() => ({
|
|
15
|
+
row: {
|
|
16
|
+
width: '100%'
|
|
17
|
+
}
|
|
18
|
+
}));
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* ReorderableList
|
|
22
|
+
* Ley de destino común (common fate): al arrastrar una fila, las filas que
|
|
23
|
+
* tiene que atravesar se desplazan juntas en el mismo sentido — eso es lo
|
|
24
|
+
* que comunica "van a intercambiar lugar" antes de soltar el dedo, no un
|
|
25
|
+
* simple resaltado del ítem activo.
|
|
26
|
+
*
|
|
27
|
+
* Sin dependencias de gestos/animación externas (reanimated, gesture-handler):
|
|
28
|
+
* PanResponder + Animated alcanzan porque el cálculo de índice destino
|
|
29
|
+
* necesita el valor de arrastre en JS en cada movimiento (no algo que
|
|
30
|
+
* useNativeDriver pueda resolver solo).
|
|
31
|
+
*
|
|
32
|
+
* Dentro de un scroll vertical hay que cablear `onDragStart`/`onDragEnd` a
|
|
33
|
+
* `scrollEnabled`, o en iOS el arrastre no llega a empezar:
|
|
34
|
+
*
|
|
35
|
+
* ```tsx
|
|
36
|
+
* const [dragging, setDragging] = useState(false);
|
|
37
|
+
* <ScrollView scrollEnabled={!dragging}>
|
|
38
|
+
* <ReorderableList onDragStart={() => setDragging(true)} onDragEnd={() => setDragging(false)} … />
|
|
39
|
+
* </ScrollView>
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export function ReorderableList({
|
|
43
|
+
data,
|
|
44
|
+
keyExtractor,
|
|
45
|
+
itemHeight,
|
|
46
|
+
renderItem,
|
|
47
|
+
onReorder,
|
|
48
|
+
onDragStart,
|
|
49
|
+
onDragEnd,
|
|
50
|
+
disabled = false,
|
|
51
|
+
style
|
|
52
|
+
}) {
|
|
53
|
+
const styles = useStyles();
|
|
54
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
55
|
+
const [targetIndex, setTargetIndex] = useState(null);
|
|
56
|
+
const dy = useRef(new Animated.Value(0)).current;
|
|
57
|
+
const activeIndexRef = useRef(null);
|
|
58
|
+
// El PanResponder de cada fila se crea una sola vez (se cachea en el Map de
|
|
59
|
+
// abajo) y su closure queda fijo al render de esa primera vez: leer
|
|
60
|
+
// `targetIndex` (state) directamente ahí siempre daría el valor del
|
|
61
|
+
// montaje. Un ref sí refleja la última escritura sin importar cuándo se
|
|
62
|
+
// creó la closure que lo lee.
|
|
63
|
+
const targetIndexRef = useRef(null);
|
|
64
|
+
const dataRef = useRef(data);
|
|
65
|
+
dataRef.current = data;
|
|
66
|
+
// Igual razón que targetIndexRef: el responder de cada fila se crea una
|
|
67
|
+
// sola vez, así que leer `disabled` directo del closure congelaría el
|
|
68
|
+
// valor del momento en que esa fila se creó.
|
|
69
|
+
const disabledRef = useRef(disabled);
|
|
70
|
+
disabledRef.current = disabled;
|
|
71
|
+
// Misma razón: los callbacks se leen desde closures creadas una sola vez.
|
|
72
|
+
const onReorderRef = useRef(onReorder);
|
|
73
|
+
onReorderRef.current = onReorder;
|
|
74
|
+
const onDragStartRef = useRef(onDragStart);
|
|
75
|
+
onDragStartRef.current = onDragStart;
|
|
76
|
+
const onDragEndRef = useRef(onDragEnd);
|
|
77
|
+
onDragEndRef.current = onDragEnd;
|
|
78
|
+
const panResponders = useRef(new Map()).current;
|
|
79
|
+
// Si `data` se achica, los responders de índices que ya no existen quedan
|
|
80
|
+
// colgados en el Map para siempre: se podan en cada render.
|
|
81
|
+
for (const index of panResponders.keys()) {
|
|
82
|
+
if (index >= data.length) panResponders.delete(index);
|
|
83
|
+
}
|
|
84
|
+
function panResponderFor(index) {
|
|
85
|
+
let responder = panResponders.get(index);
|
|
86
|
+
if (responder) return responder;
|
|
87
|
+
const endDrag = () => {
|
|
88
|
+
dy.setValue(0);
|
|
89
|
+
activeIndexRef.current = null;
|
|
90
|
+
targetIndexRef.current = null;
|
|
91
|
+
setActiveIndex(null);
|
|
92
|
+
setTargetIndex(null);
|
|
93
|
+
onDragEndRef.current?.();
|
|
94
|
+
};
|
|
95
|
+
responder = PanResponder.create({
|
|
96
|
+
onStartShouldSetPanResponder: () => !disabledRef.current,
|
|
97
|
+
onMoveShouldSetPanResponder: (_, gesture) => !disabledRef.current && Math.abs(gesture.dy) > 2,
|
|
98
|
+
// Un scroll padre pide el responder apenas su gesto vertical arranca —
|
|
99
|
+
// el mismo eje que el arrastre. Cederlo cancelaría el drag a mitad de
|
|
100
|
+
// camino, así que la fila se lo queda hasta soltar.
|
|
101
|
+
onPanResponderTerminationRequest: () => false,
|
|
102
|
+
onPanResponderGrant: () => {
|
|
103
|
+
activeIndexRef.current = index;
|
|
104
|
+
targetIndexRef.current = index;
|
|
105
|
+
setActiveIndex(index);
|
|
106
|
+
setTargetIndex(index);
|
|
107
|
+
dy.setValue(0);
|
|
108
|
+
onDragStartRef.current?.(index);
|
|
109
|
+
},
|
|
110
|
+
onPanResponderMove: (_, gesture) => {
|
|
111
|
+
dy.setValue(gesture.dy);
|
|
112
|
+
const from = activeIndexRef.current;
|
|
113
|
+
if (from === null) return;
|
|
114
|
+
const rawTarget = from + Math.round(gesture.dy / itemHeight);
|
|
115
|
+
const clamped = Math.max(0, Math.min(dataRef.current.length - 1, rawTarget));
|
|
116
|
+
targetIndexRef.current = clamped;
|
|
117
|
+
setTargetIndex(prev => prev === clamped ? prev : clamped);
|
|
118
|
+
},
|
|
119
|
+
onPanResponderRelease: () => {
|
|
120
|
+
const from = activeIndexRef.current;
|
|
121
|
+
const to = targetIndexRef.current;
|
|
122
|
+
endDrag();
|
|
123
|
+
if (from === null || to === null || from === to) return;
|
|
124
|
+
onReorderRef.current(move(dataRef.current, from, to));
|
|
125
|
+
},
|
|
126
|
+
onPanResponderTerminate: endDrag
|
|
127
|
+
});
|
|
128
|
+
panResponders.set(index, responder);
|
|
129
|
+
return responder;
|
|
130
|
+
}
|
|
131
|
+
return /*#__PURE__*/_jsx(View, {
|
|
132
|
+
style: style,
|
|
133
|
+
children: data.map((item, index) => {
|
|
134
|
+
const isActive = activeIndex === index;
|
|
135
|
+
// Filas entre el origen y el destino se corren un lugar entero en el
|
|
136
|
+
// sentido del arrastre: es el efecto de "grupo que se mueve junto".
|
|
137
|
+
let shift = 0;
|
|
138
|
+
if (activeIndex !== null && targetIndex !== null && !isActive) {
|
|
139
|
+
if (activeIndex < targetIndex && index > activeIndex && index <= targetIndex) shift = -itemHeight;else if (activeIndex > targetIndex && index < activeIndex && index >= targetIndex) shift = itemHeight;
|
|
140
|
+
}
|
|
141
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
142
|
+
style: [styles.row, isActive ? {
|
|
143
|
+
transform: [{
|
|
144
|
+
translateY: dy
|
|
145
|
+
}],
|
|
146
|
+
zIndex: 1,
|
|
147
|
+
elevation: 4
|
|
148
|
+
} : {
|
|
149
|
+
transform: [{
|
|
150
|
+
translateY: shift
|
|
151
|
+
}]
|
|
152
|
+
}],
|
|
153
|
+
...panResponderFor(index).panHandlers,
|
|
154
|
+
children: renderItem(item, index, isActive)
|
|
155
|
+
}, keyExtractor(item, index));
|
|
156
|
+
})
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=ReorderableList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useRef","useState","Animated","PanResponder","View","createStyles","jsx","_jsx","move","data","from","to","next","slice","item","splice","useStyles","row","width","ReorderableList","keyExtractor","itemHeight","renderItem","onReorder","onDragStart","onDragEnd","disabled","style","styles","activeIndex","setActiveIndex","targetIndex","setTargetIndex","dy","Value","current","activeIndexRef","targetIndexRef","dataRef","disabledRef","onReorderRef","onDragStartRef","onDragEndRef","panResponders","Map","index","keys","length","delete","panResponderFor","responder","get","endDrag","setValue","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_","gesture","Math","abs","onPanResponderTerminationRequest","onPanResponderGrant","onPanResponderMove","rawTarget","round","clamped","max","min","prev","onPanResponderRelease","onPanResponderTerminate","set","children","map","isActive","shift","transform","translateY","zIndex","elevation","panHandlers"],"sourceRoot":"../../../src","sources":["organisms/ReorderableList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -54,11 +54,10 @@ export const Screen = /*#__PURE__*/memo(({
|
|
|
54
54
|
...keyboardProps,
|
|
55
55
|
children: scrollable ? /*#__PURE__*/_jsx(ScrollView, {
|
|
56
56
|
style: styles.container,
|
|
57
|
-
contentInsetAdjustmentBehavior: "automatic",
|
|
58
57
|
automaticallyAdjustKeyboardInsets: true,
|
|
59
58
|
contentContainerStyle: [styles.contentContainer, {
|
|
60
59
|
paddingTop: applyTop ? insets.top : 0
|
|
61
|
-
},
|
|
60
|
+
}, applyBottom && {
|
|
62
61
|
paddingBottom: insets.bottom
|
|
63
62
|
}, contentContainerStyle],
|
|
64
63
|
keyboardShouldPersistTaps: "handled",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","KeyboardAvoidingView","Platform","ScrollView","View","createStyles","useInsets","jsx","_jsx","useStyles","theme","wrapper","flex","backgroundColor","colors","background","container","contentContainer","flexGrow","Screen","children","style","scrollable","contentContainerStyle","edges","keyboardAvoiding","insets","styles","applyTop","includes","applyBottom","avoidWithView","OS","KeyboardWrapper","keyboardProps","behavior","keyboardVerticalOffset","
|
|
1
|
+
{"version":3,"names":["React","memo","KeyboardAvoidingView","Platform","ScrollView","View","createStyles","useInsets","jsx","_jsx","useStyles","theme","wrapper","flex","backgroundColor","colors","background","container","contentContainer","flexGrow","Screen","children","style","scrollable","contentContainerStyle","edges","keyboardAvoiding","insets","styles","applyTop","includes","applyBottom","avoidWithView","OS","KeyboardWrapper","keyboardProps","behavior","keyboardVerticalOffset","automaticallyAdjustKeyboardInsets","paddingTop","top","paddingBottom","bottom","keyboardShouldPersistTaps","displayName"],"sourceRoot":"../../../src","sources":["organisms/Screen.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,oBAAoB,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAwB,cAAc;AAC/F,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,SAAS,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAsBhD,MAAMC,SAAS,GAAGJ,YAAY,CAAEK,KAAK,KAAM;EACzCC,OAAO,EAAE;IAAEC,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAEH,KAAK,CAACI,MAAM,CAACC;EAAW,CAAC;EAC9DC,SAAS,EAAE;IAAEJ,IAAI,EAAE;EAAE,CAAC;EACtBK,gBAAgB,EAAE;IAAEC,QAAQ,EAAE;EAAE;AAClC,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,MAAM,gBAAGnB,IAAI,CAAC,CAAC;EAC1BoB,QAAQ;EACRC,KAAK;EACLC,UAAU,GAAG,IAAI;EACjBC,qBAAqB;EACrBC,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;EACzBC,gBAAgB,GAAG;AACR,CAAC,KAAK;EACjB,MAAMC,MAAM,GAAGpB,SAAS,CAAC,CAAC;EAC1B,MAAMqB,MAAM,GAAGlB,SAAS,CAAC,CAAC;EAC1B,MAAMmB,QAAQ,GAAGJ,KAAK,CAACK,QAAQ,CAAC,KAAK,CAAC;EACtC,MAAMC,WAAW,GAAGN,KAAK,CAACK,QAAQ,CAAC,QAAQ,CAAC;;EAE5C;EACA;EACA;EACA;EACA;EACA,MAAME,aAAa,GAAGN,gBAAgB,IAAI,EAAEH,UAAU,IAAIpB,QAAQ,CAAC8B,EAAE,KAAK,KAAK,CAAC;EAEhF,MAAMC,eAAyC,GAAGF,aAAa,GAAG9B,oBAAoB,GAAGG,IAAI;EAC7F,MAAM8B,aAAa,GAAGH,aAAa,GAC/B;IACEI,QAAQ,EAAEjC,QAAQ,CAAC8B,EAAE,KAAK,KAAK,GAAI,SAAS,GAAc,QAAkB;IAC5EI,sBAAsB,EAAElC,QAAQ,CAAC8B,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG;EACtD,CAAC,GACD,CAAC,CAAC;EAEN,oBACExB,IAAA,CAACJ,IAAI;IAACiB,KAAK,EAAE,CAACM,MAAM,CAAChB,OAAO,EAAEU,KAAK,CAAE;IAAAD,QAAA,eACnCZ,IAAA,CAACyB,eAAe;MAACZ,KAAK,EAAEM,MAAM,CAACX,SAAU;MAAA,GAAKkB,aAAa;MAAAd,QAAA,EACxDE,UAAU,gBACTd,IAAA,CAACL,UAAU;QACTkB,KAAK,EAAEM,MAAM,CAACX,SAAU;QACxBqB,iCAAiC;QACjCd,qBAAqB,EAAE,CACrBI,MAAM,CAACV,gBAAgB,EACvB;UAAEqB,UAAU,EAAEV,QAAQ,GAAGF,MAAM,CAACa,GAAG,GAAG;QAAE,CAAC,EACzCT,WAAW,IAAI;UAAEU,aAAa,EAAEd,MAAM,CAACe;QAAO,CAAC,EAC/ClB,qBAAqB,CACrB;QACFmB,yBAAyB,EAAC,SAAS;QAAAtB,QAAA,EAElCA;MAAQ,CACC,CAAC,gBAEbZ,IAAA,CAACJ,IAAI;QAACiB,KAAK,EAAE,CAACM,MAAM,CAACX,SAAS,EAAE;UAAEsB,UAAU,EAAEV,QAAQ,GAAGF,MAAM,CAACa,GAAG,GAAG,CAAC;UAAEC,aAAa,EAAEV,WAAW,GAAGJ,MAAM,CAACe,MAAM,GAAG;QAAE,CAAC,CAAE;QAAArB,QAAA,EACxHA;MAAQ,CACL;IACP,CACc;EAAC,CACd,CAAC;AAEX,CAAC,CAAC;AACFD,MAAM,CAACwB,WAAW,GAAG,QAAQ","ignoreList":[]}
|
|
@@ -15,4 +15,5 @@ export { DateField } from './DateField';
|
|
|
15
15
|
export { Wizard } from './Wizard';
|
|
16
16
|
export { ThemeToggle } from './ThemeToggle';
|
|
17
17
|
export { NavigationBar } from './NavigationBar';
|
|
18
|
+
export { ReorderableList } from './ReorderableList';
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Modal","BottomSheet","Select","Alert","AlertProvider","useAlert","showAlert","showConfirm","hideAlert","Screen","List","SearchList","Toast","ToastProvider","useToast","showToast","hideToast","hideAllToasts","DatePicker","buildMonthGrid","DEFAULT_MONTH_NAMES","DEFAULT_WEEKDAY_NAMES","DateField","Wizard","ThemeToggle","NavigationBar"],"sourceRoot":"../../../src","sources":["organisms/index.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,SAAS;AAE/B,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AAE5F,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AAE9F,SAASC,UAAU,EAAEC,cAAc,EAAEC,mBAAmB,EAAEC,qBAAqB,QAAQ,cAAc;AAErG,SAASC,SAAS,QAAQ,aAAa;AAEvC,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,aAAa,QAAQ,iBAAiB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Modal","BottomSheet","Select","Alert","AlertProvider","useAlert","showAlert","showConfirm","hideAlert","Screen","List","SearchList","Toast","ToastProvider","useToast","showToast","hideToast","hideAllToasts","DatePicker","buildMonthGrid","DEFAULT_MONTH_NAMES","DEFAULT_WEEKDAY_NAMES","DateField","Wizard","ThemeToggle","NavigationBar","ReorderableList"],"sourceRoot":"../../../src","sources":["organisms/index.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,SAAS;AAE/B,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AAE5F,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,IAAI,QAAQ,QAAQ;AAE7B,SAASC,UAAU,QAAQ,cAAc;AAEzC,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAASC,aAAa,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AAE9F,SAASC,UAAU,EAAEC,cAAc,EAAEC,mBAAmB,EAAEC,qBAAqB,QAAQ,cAAc;AAErG,SAASC,SAAS,QAAQ,aAAa;AAEvC,SAASC,MAAM,QAAQ,UAAU;AAEjC,SAASC,WAAW,QAAQ,eAAe;AAE3C,SAASC,aAAa,QAAQ,iBAAiB;AAE/C,SAASC,eAAe,QAAQ,mBAAmB","ignoreList":[]}
|
|
@@ -1,9 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React from 'react';
|
|
3
|
+
import React, { useEffect, useState } from 'react';
|
|
4
4
|
import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
5
|
-
import { UIProvider } from '../theme/UIProvider';
|
|
6
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { UIProvider, useInsets } from '../theme/UIProvider';
|
|
6
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const probeStyle = {
|
|
8
|
+
position: 'absolute',
|
|
9
|
+
top: 0,
|
|
10
|
+
left: 0,
|
|
11
|
+
right: 0,
|
|
12
|
+
bottom: 0
|
|
13
|
+
};
|
|
14
|
+
function sameInsets(a, b) {
|
|
15
|
+
return a.top === b.top && a.right === b.right && a.bottom === b.bottom && a.left === b.left;
|
|
16
|
+
}
|
|
17
|
+
function InsetsProbe({
|
|
18
|
+
onMeasure
|
|
19
|
+
}) {
|
|
20
|
+
const insets = useSafeAreaInsets();
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
onMeasure(insets);
|
|
23
|
+
}, [insets, onMeasure]);
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
function RemeasuringModalSafeAreaBoundary({
|
|
27
|
+
children
|
|
28
|
+
}) {
|
|
29
|
+
const ambient = useInsets();
|
|
30
|
+
const [measured, setMeasured] = useState(null);
|
|
31
|
+
const onMeasure = React.useCallback(next => setMeasured(prev => prev && sameInsets(prev, next) ? prev : next), []);
|
|
32
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
33
|
+
children: [/*#__PURE__*/_jsx(SafeAreaProvider, {
|
|
34
|
+
style: probeStyle,
|
|
35
|
+
pointerEvents: "none",
|
|
36
|
+
children: /*#__PURE__*/_jsx(InsetsProbe, {
|
|
37
|
+
onMeasure: onMeasure
|
|
38
|
+
})
|
|
39
|
+
}), children(measured ?? ambient)]
|
|
40
|
+
});
|
|
41
|
+
}
|
|
7
42
|
function Measured({
|
|
8
43
|
insets: override,
|
|
9
44
|
children,
|
|
@@ -12,38 +47,11 @@ function Measured({
|
|
|
12
47
|
const measured = useSafeAreaInsets();
|
|
13
48
|
return /*#__PURE__*/_jsx(UIProvider, {
|
|
14
49
|
insets: override ?? measured,
|
|
50
|
+
ModalSafeAreaBoundary: RemeasuringModalSafeAreaBoundary,
|
|
15
51
|
...rest,
|
|
16
52
|
children: children
|
|
17
53
|
});
|
|
18
54
|
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* SafeAreaUIProvider
|
|
22
|
-
* `UIProvider` con los insets ya cableados desde `react-native-safe-area-context`.
|
|
23
|
-
*
|
|
24
|
-
* Vive en su propio subpath (`orn-ui/safe-area`) a propósito: es el único
|
|
25
|
-
* archivo de la librería que importa un paquete de terceros. Nada del entry
|
|
26
|
-
* principal lo referencia, así que quien hace `import { Button } from 'orn-ui'`
|
|
27
|
-
* nunca lo resuelve y el bundle sigue sin dependencias de runtime.
|
|
28
|
-
*
|
|
29
|
-
* ```tsx
|
|
30
|
-
* import { SafeAreaUIProvider } from 'orn-ui/safe-area';
|
|
31
|
-
*
|
|
32
|
-
* export default function App() {
|
|
33
|
-
* return (
|
|
34
|
-
* <SafeAreaUIProvider defaultMode="system">
|
|
35
|
-
* <RootNavigator />
|
|
36
|
-
* </SafeAreaUIProvider>
|
|
37
|
-
* );
|
|
38
|
-
* }
|
|
39
|
-
* ```
|
|
40
|
-
*
|
|
41
|
-
* El equivalente a mano — pasarle `insets={useSafeAreaInsets()}` a `UIProvider`
|
|
42
|
-
* desde un componente que ya esté dentro de `<SafeAreaProvider>` — sigue
|
|
43
|
-
* siendo válido. Esto sólo evita el error silencioso de olvidarlo: `insets`
|
|
44
|
-
* por defecto es `{0,0,0,0}`, y con ceros el bottom sheet queda pegado contra
|
|
45
|
-
* la barra de gestos y el modal `full` se mete abajo del notch.
|
|
46
|
-
*/
|
|
47
55
|
export function SafeAreaUIProvider({
|
|
48
56
|
mountSafeAreaProvider = true,
|
|
49
57
|
...props
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","SafeAreaProvider","useSafeAreaInsets","UIProvider","jsx","_jsx","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","SafeAreaProvider","useSafeAreaInsets","UIProvider","useInsets","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","probeStyle","position","top","left","right","bottom","sameInsets","a","b","InsetsProbe","onMeasure","insets","RemeasuringModalSafeAreaBoundary","children","ambient","measured","setMeasured","useCallback","next","prev","style","pointerEvents","Measured","override","rest","ModalSafeAreaBoundary","SafeAreaUIProvider","mountSafeAreaProvider","props"],"sourceRoot":"../../../src","sources":["safe-area/SafeAreaUIProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAElD,SAASC,gBAAgB,EAAEC,iBAAiB,QAAQ,gCAAgC;AACpF,SACEC,UAAU,EACVC,SAAS,QAGJ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ7B,MAAMC,UAAqB,GAAG;EAAEC,QAAQ,EAAE,UAAU;EAAEC,GAAG,EAAE,CAAC;EAAEC,IAAI,EAAE,CAAC;EAAEC,KAAK,EAAE,CAAC;EAAEC,MAAM,EAAE;AAAE,CAAC;AAE5F,SAASC,UAAUA,CAACC,CAAa,EAAEC,CAAa,EAAE;EAChD,OAAOD,CAAC,CAACL,GAAG,KAAKM,CAAC,CAACN,GAAG,IAAIK,CAAC,CAACH,KAAK,KAAKI,CAAC,CAACJ,KAAK,IAAIG,CAAC,CAACF,MAAM,KAAKG,CAAC,CAACH,MAAM,IAAIE,CAAC,CAACJ,IAAI,KAAKK,CAAC,CAACL,IAAI;AAC7F;AAEA,SAASM,WAAWA,CAAC;EAAEC;AAAuD,CAAC,EAAE;EAC/E,MAAMC,MAAM,GAAGpB,iBAAiB,CAAC,CAAC;EAClCH,SAAS,CAAC,MAAM;IACdsB,SAAS,CAACC,MAAM,CAAC;EACnB,CAAC,EAAE,CAACA,MAAM,EAAED,SAAS,CAAC,CAAC;EACvB,OAAO,IAAI;AACb;AAEA,SAASE,gCAAgCA,CAAC;EAAEC;AAAqC,CAAC,EAAE;EAClF,MAAMC,OAAO,GAAGrB,SAAS,CAAC,CAAC;EAC3B,MAAM,CAACsB,QAAQ,EAAEC,WAAW,CAAC,GAAG3B,QAAQ,CAAoB,IAAI,CAAC;EACjE,MAAMqB,SAAS,GAAGvB,KAAK,CAAC8B,WAAW,CAChCC,IAAgB,IAAKF,WAAW,CAAEG,IAAI,IAAMA,IAAI,IAAIb,UAAU,CAACa,IAAI,EAAED,IAAI,CAAC,GAAGC,IAAI,GAAGD,IAAK,CAAC,EAC3F,EACF,CAAC;EAED,oBACEnB,KAAA,CAAAF,SAAA;IAAAgB,QAAA,gBACElB,IAAA,CAACL,gBAAgB;MAAC8B,KAAK,EAAEpB,UAAW;MAACqB,aAAa,EAAC,MAAM;MAAAR,QAAA,eACvDlB,IAAA,CAACc,WAAW;QAACC,SAAS,EAAEA;MAAU,CAAE;IAAC,CACrB,CAAC,EAClBG,QAAQ,CAACE,QAAQ,IAAID,OAAO,CAAC;EAAA,CAC9B,CAAC;AAEP;AAEA,SAASQ,QAAQA,CAAC;EAAEX,MAAM,EAAEY,QAAQ;EAAEV,QAAQ;EAAE,GAAGW;AAA8B,CAAC,EAAE;EAClF,MAAMT,QAAQ,GAAGxB,iBAAiB,CAAC,CAAC;EACpC,oBACEI,IAAA,CAACH,UAAU;IACTmB,MAAM,EAAEY,QAAQ,IAAIR,QAAS;IAC7BU,qBAAqB,EAAEb,gCAAiC;IAAA,GACpDY,IAAI;IAAAX,QAAA,EAEPA;EAAQ,CACC,CAAC;AAEjB;AAEA,OAAO,SAASa,kBAAkBA,CAAC;EACjCC,qBAAqB,GAAG,IAAI;EAC5B,GAAGC;AACoB,CAAC,EAAE;EAC1B,IAAI,CAACD,qBAAqB,EAAE,oBAAOhC,IAAA,CAAC2B,QAAQ;IAAA,GAAKM;EAAK,CAAG,CAAC;EAC1D,oBACEjC,IAAA,CAACL,gBAAgB;IAAAuB,QAAA,eACflB,IAAA,CAAC2B,QAAQ;MAAA,GAAKM;IAAK,CAAG;EAAC,CACP,CAAC;AAEvB","ignoreList":[]}
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { createContext, useContext, useMemo, useState, useCallback } from 'react';
|
|
3
|
+
import React, { createContext, useContext, useMemo, useState, useCallback, useRef } from 'react';
|
|
4
4
|
import { Appearance, useColorScheme } from 'react-native';
|
|
5
5
|
import { defaultTheme } from './createTheme';
|
|
6
6
|
import { defaultLabels } from './labels';
|
|
7
7
|
import { zeroInsets } from './insets';
|
|
8
8
|
import { renderDefaultIcon } from '../icons/defaultIcons';
|
|
9
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
-
const UIContext = /*#__PURE__*/createContext(undefined);
|
|
11
9
|
|
|
12
|
-
/**
|
|
13
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Un `<Modal>`/`<BottomSheet>` nativo abre su propia ventana (en Android
|
|
12
|
+
* siempre; en iOS según `presentationStyle`), así que los insets medidos en
|
|
13
|
+
* la raíz de la app pueden no valer ahí adentro. Este boundary es el punto de
|
|
14
|
+
* inyección: el default sólo repite los insets ambientes (comportamiento de
|
|
15
|
+
* siempre, cero deps), pero `SafeAreaUIProvider` lo reemplaza por uno que
|
|
16
|
+
* monta un `<SafeAreaProvider>` nuevo y remide dentro de esa ventana.
|
|
17
|
+
*/
|
|
18
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
19
|
+
function DefaultModalSafeAreaBoundary({
|
|
20
|
+
children
|
|
21
|
+
}) {
|
|
22
|
+
const insets = useInsets();
|
|
23
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
24
|
+
children: children(insets)
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const UIContext = /*#__PURE__*/createContext(undefined);
|
|
14
28
|
/**
|
|
15
29
|
* UIProvider
|
|
16
30
|
* Único punto de entrada de la librería: resuelve el theme activo (sistema u
|
|
@@ -27,7 +41,8 @@ export function UIProvider({
|
|
|
27
41
|
icons = renderDefaultIcon,
|
|
28
42
|
insets = zeroInsets,
|
|
29
43
|
labels: labelOverrides,
|
|
30
|
-
allowFontScaling = false
|
|
44
|
+
allowFontScaling = false,
|
|
45
|
+
ModalSafeAreaBoundary = DefaultModalSafeAreaBoundary
|
|
31
46
|
}) {
|
|
32
47
|
const systemScheme = useColorScheme();
|
|
33
48
|
const [uncontrolledMode, setUncontrolledMode] = useState(defaultMode);
|
|
@@ -38,11 +53,16 @@ export function UIProvider({
|
|
|
38
53
|
onModeChange?.(next);
|
|
39
54
|
}, [isControlled, onModeChange]);
|
|
40
55
|
|
|
56
|
+
// Por instancia, no por módulo: dos `<UIProvider>` en el mismo árbol (tests,
|
|
57
|
+
// un modal con su propio provider) avisan cada uno si le faltan insets, en
|
|
58
|
+
// vez de que el segundo se calle porque el primero ya avisó una vez.
|
|
59
|
+
const warnedAboutInsets = useRef(false);
|
|
60
|
+
|
|
41
61
|
// Olvidar `insets` no rompe nada visible al montar: el default de ceros
|
|
42
62
|
// recién se nota cuando abrís un Modal `full` (se mete abajo del notch) o un
|
|
43
63
|
// BottomSheet (queda pegado a la barra de gestos). El aviso llega antes.
|
|
44
|
-
if (__DEV__ && insets === zeroInsets && !warnedAboutInsets) {
|
|
45
|
-
warnedAboutInsets = true;
|
|
64
|
+
if (__DEV__ && insets === zeroInsets && !warnedAboutInsets.current) {
|
|
65
|
+
warnedAboutInsets.current = true;
|
|
46
66
|
console.warn('orn-ui: <UIProvider> sin `insets`, se usan {top:0,bottom:0,left:0,right:0}. ' + 'Los modales y el Screen quedan sin safe area. Pasá `insets={useSafeAreaInsets()}` ' + "o usá <SafeAreaUIProvider> de 'orn-ui/safe-area', que lo cablea solo.");
|
|
47
67
|
}
|
|
48
68
|
const scheme = mode === 'system' ? systemScheme === 'dark' ? 'dark' : 'light' : mode;
|
|
@@ -58,8 +78,9 @@ export function UIProvider({
|
|
|
58
78
|
icons,
|
|
59
79
|
insets,
|
|
60
80
|
labels,
|
|
61
|
-
allowFontScaling
|
|
62
|
-
|
|
81
|
+
allowFontScaling,
|
|
82
|
+
ModalSafeAreaBoundary
|
|
83
|
+
}), [resolvedTheme, mode, setMode, icons, insets, labels, allowFontScaling, ModalSafeAreaBoundary]);
|
|
63
84
|
return /*#__PURE__*/_jsx(UIContext.Provider, {
|
|
64
85
|
value: value,
|
|
65
86
|
children: children
|
|
@@ -101,6 +122,11 @@ export function useAllowFontScaling() {
|
|
|
101
122
|
return useUIContext().allowFontScaling;
|
|
102
123
|
}
|
|
103
124
|
|
|
125
|
+
/** Interno: lo consumen `Modal`/`BottomSheet` para remedir insets dentro de su propia ventana nativa. */
|
|
126
|
+
export function useModalSafeAreaBoundary() {
|
|
127
|
+
return useUIContext().ModalSafeAreaBoundary;
|
|
128
|
+
}
|
|
129
|
+
|
|
104
130
|
/** Re-exportado para que tests/consumidores puedan simular cambios de sistema sin RN real. */
|
|
105
131
|
export const __testUtils = {
|
|
106
132
|
Appearance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useContext","useMemo","useState","useCallback","Appearance","useColorScheme","defaultTheme","defaultLabels","zeroInsets","renderDefaultIcon","jsx","_jsx","
|
|
1
|
+
{"version":3,"names":["React","createContext","useContext","useMemo","useState","useCallback","useRef","Appearance","useColorScheme","defaultTheme","defaultLabels","zeroInsets","renderDefaultIcon","Fragment","_Fragment","jsx","_jsx","DefaultModalSafeAreaBoundary","children","insets","useInsets","UIContext","undefined","UIProvider","theme","defaultMode","mode","controlledMode","onModeChange","icons","labels","labelOverrides","allowFontScaling","ModalSafeAreaBoundary","systemScheme","uncontrolledMode","setUncontrolledMode","isControlled","setMode","next","warnedAboutInsets","__DEV__","current","console","warn","scheme","resolvedTheme","value","Provider","useUIContext","ctx","Error","useTheme","useColors","colors","useThemeMode","useIcons","useLabels","useAllowFontScaling","useModalSafeAreaBoundary","__testUtils"],"sourceRoot":"../../../src","sources":["theme/UIProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Steps.d.ts","sourceRoot":"","sources":["../../../src/molecules/Steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAA4C,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKxG,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAsDD;;;;GAIG;AACH,eAAO,MAAM,KAAK,sGACmF,UAAU,
|
|
1
|
+
{"version":3,"file":"Steps.d.ts","sourceRoot":"","sources":["../../../src/molecules/Steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAA4C,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKxG,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAsDD;;;;GAIG;AACH,eAAO,MAAM,KAAK,sGACmF,UAAU,uBAsI9G,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
export interface SymmetricGridProps<T> {
|
|
4
|
+
data: T[];
|
|
5
|
+
renderItem: (item: T, index: number) => React.ReactElement;
|
|
6
|
+
keyExtractor: (item: T, index: number) => string;
|
|
7
|
+
/** Columnas por fila. @default 2 */
|
|
8
|
+
columns?: number;
|
|
9
|
+
/** Separación entre celdas, en ambos ejes. @default theme.tokens.spacing.md */
|
|
10
|
+
gap?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Última fila incompleta: centrada (simétrica) en vez de pegada a la
|
|
13
|
+
* izquierda con un hueco a la derecha. @default true
|
|
14
|
+
*/
|
|
15
|
+
balanceLastRow?: boolean;
|
|
16
|
+
style?: StyleProp<ViewStyle>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* SymmetricGrid
|
|
20
|
+
* Ley de Prägnanz (buena forma): agrupa en filas parejas de N columnas.
|
|
21
|
+
* La última fila, cuando queda incompleta, se centra por defecto en vez de
|
|
22
|
+
* quedar pegada a un borde — eso es lo que la lee como "fila corta" y no
|
|
23
|
+
* como un layout roto con un hueco a un lado.
|
|
24
|
+
*/
|
|
25
|
+
export declare function SymmetricGrid<T>({ data, renderItem, keyExtractor, columns, gap, balanceLastRow, style, }: SymmetricGridProps<T>): React.JSX.Element;
|
|
26
|
+
//# sourceMappingURL=SymmetricGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SymmetricGrid.d.ts","sourceRoot":"","sources":["../../../src/molecules/SymmetricGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC;IAC3D,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAgBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,OAAW,EACX,GAAG,EACH,cAAqB,EACrB,KAAK,GACN,EAAE,kBAAkB,CAAC,CAAC,CAAC,qBAgCvB"}
|
|
@@ -12,4 +12,6 @@ export { SegmentedControl } from './SegmentedControl';
|
|
|
12
12
|
export type { SegmentedControlProps, SegmentedControlOption } from './SegmentedControl';
|
|
13
13
|
export { Steps } from './Steps';
|
|
14
14
|
export type { StepsProps, StepItem, StepStatus } from './Steps';
|
|
15
|
+
export { SymmetricGrid } from './SymmetricGrid';
|
|
16
|
+
export type { SymmetricGridProps } from './SymmetricGrid';
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/molecules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertProvider.d.ts","sourceRoot":"","sources":["../../../src/organisms/AlertProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuF,MAAM,OAAO,CAAC;AAC5G,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,oEAAoE;IACpE,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,qFAAqF;IACrF,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAKD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAErE;AAED,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAYD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"AlertProvider.d.ts","sourceRoot":"","sources":["../../../src/organisms/AlertProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuF,MAAM,OAAO,CAAC;AAC5G,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,iBAAiB;IACzB,oEAAoE;IACpE,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,qFAAqF;IACrF,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAKD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAErE;AAED,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAYD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,qBAuFxE;AAED,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/organisms/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,EAWL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAUtB,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,oBAAoB,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmCD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+LAenB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"BottomSheet.d.ts","sourceRoot":"","sources":["../../../src/organisms/BottomSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,EAWL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAUtB,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,oBAAoB,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmCD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+LAenB,gBAAgB,8BAyJpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/organisms/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAQL,KAAK,UAAU,IAAI,YAAY,EAC/B,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/organisms/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAQL,KAAK,UAAU,IAAI,YAAY,EAC/B,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAUtB,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;AAE7D,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAsCD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,oNAeb,UAAU,8BAqJd,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
export interface ReorderableListProps<T> {
|
|
4
|
+
data: T[];
|
|
5
|
+
keyExtractor: (item: T, index: number) => string;
|
|
6
|
+
/** Alto fijo de cada fila: necesario para calcular el índice destino sin medir layout async. */
|
|
7
|
+
itemHeight: number;
|
|
8
|
+
renderItem: (item: T, index: number, dragging: boolean) => React.ReactElement;
|
|
9
|
+
/** Se llama al soltar, con el arreglo ya reordenado. No muta `data`. */
|
|
10
|
+
onReorder: (data: T[]) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Empieza el arrastre de la fila `index`. Úsalo para apagar el scroll del
|
|
13
|
+
* contenedor (`scrollEnabled={false}`) mientras dura: en iOS el
|
|
14
|
+
* `UIScrollView` padre cancela los toques del contenido apenas su gesto
|
|
15
|
+
* vertical arranca, y sin eso el arrastre muere a los pocos píxeles.
|
|
16
|
+
*/
|
|
17
|
+
onDragStart?: (index: number) => void;
|
|
18
|
+
/** Termina el arrastre — soltando o por cancelación. Siempre corre si corrió `onDragStart`. */
|
|
19
|
+
onDragEnd?: () => void;
|
|
20
|
+
disabled?: boolean;
|
|
21
|
+
style?: StyleProp<ViewStyle>;
|
|
22
|
+
}
|
|
23
|
+
/** Reordena moviendo el ítem de `from` a `to`, sin mutar `data`. Exportada aparte por ser testeable sin simular gestos. */
|
|
24
|
+
export declare function move<T>(data: T[], from: number, to: number): T[];
|
|
25
|
+
/**
|
|
26
|
+
* ReorderableList
|
|
27
|
+
* Ley de destino común (common fate): al arrastrar una fila, las filas que
|
|
28
|
+
* tiene que atravesar se desplazan juntas en el mismo sentido — eso es lo
|
|
29
|
+
* que comunica "van a intercambiar lugar" antes de soltar el dedo, no un
|
|
30
|
+
* simple resaltado del ítem activo.
|
|
31
|
+
*
|
|
32
|
+
* Sin dependencias de gestos/animación externas (reanimated, gesture-handler):
|
|
33
|
+
* PanResponder + Animated alcanzan porque el cálculo de índice destino
|
|
34
|
+
* necesita el valor de arrastre en JS en cada movimiento (no algo que
|
|
35
|
+
* useNativeDriver pueda resolver solo).
|
|
36
|
+
*
|
|
37
|
+
* Dentro de un scroll vertical hay que cablear `onDragStart`/`onDragEnd` a
|
|
38
|
+
* `scrollEnabled`, o en iOS el arrastre no llega a empezar:
|
|
39
|
+
*
|
|
40
|
+
* ```tsx
|
|
41
|
+
* const [dragging, setDragging] = useState(false);
|
|
42
|
+
* <ScrollView scrollEnabled={!dragging}>
|
|
43
|
+
* <ReorderableList onDragStart={() => setDragging(true)} onDragEnd={() => setDragging(false)} … />
|
|
44
|
+
* </ScrollView>
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function ReorderableList<T>({ data, keyExtractor, itemHeight, renderItem, onReorder, onDragStart, onDragEnd, disabled, style, }: ReorderableListProps<T>): React.JSX.Element;
|
|
48
|
+
//# sourceMappingURL=ReorderableList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReorderableList.d.ts","sourceRoot":"","sources":["../../../src/organisms/ReorderableList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,EAAgC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG5F,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC,YAAY,CAAC;IAC9E,wEAAwE;IACxE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,+FAA+F;IAC/F,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,2HAA2H;AAC3H,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,CAKhE;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,EACjC,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAgB,EAChB,KAAK,GACN,EAAE,oBAAoB,CAAC,CAAC,CAAC,qBAiHzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/organisms/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIhG,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,kEAAkE;IAClE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAQD;;;;GAIG;AACH,eAAO,MAAM,MAAM,+GAOhB,WAAW,
|
|
1
|
+
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/organisms/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AACpC,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIhG,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,kEAAkE;IAClE,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAQD;;;;GAIG;AACH,eAAO,MAAM,MAAM,+GAOhB,WAAW,uBA8CZ,CAAC"}
|
|
@@ -28,4 +28,6 @@ export { ThemeToggle } from './ThemeToggle';
|
|
|
28
28
|
export type { ThemeToggleProps } from './ThemeToggle';
|
|
29
29
|
export { NavigationBar } from './NavigationBar';
|
|
30
30
|
export type { NavigationBarProps, NavigationBarItem } from './NavigationBar';
|
|
31
|
+
export { ReorderableList } from './ReorderableList';
|
|
32
|
+
export type { ReorderableListProps } from './ReorderableList';
|
|
31
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACtG,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACtG,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|