@sunsama/event-calendar 0.11.4 → 0.11.6
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/components/timed-event-container.js +5 -2
- package/lib/commonjs/components/timed-event-container.js.map +1 -1
- package/lib/commonjs/utils/generate-event-layouts.js +12 -12
- package/lib/commonjs/utils/generate-event-layouts.js.map +1 -1
- package/lib/module/components/timed-event-container.js +5 -2
- package/lib/module/components/timed-event-container.js.map +1 -1
- package/lib/module/utils/generate-event-layouts.js +12 -12
- package/lib/module/utils/generate-event-layouts.js.map +1 -1
- package/lib/typescript/commonjs/components/timed-event-container.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/generate-event-layouts.d.ts.map +1 -1
- package/lib/typescript/module/components/timed-event-container.d.ts.map +1 -1
- package/lib/typescript/module/utils/generate-event-layouts.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/timed-event-container.tsx +7 -3
- package/src/utils/__tests___/generate-event-layout.test.ts +112 -0
- package/src/utils/generate-event-layouts.ts +16 -15
|
@@ -41,10 +41,13 @@ const TimedEventContainer = ({
|
|
|
41
41
|
const startEditing = (0, _react.useCallback)(() => {
|
|
42
42
|
setIsEditing(layout);
|
|
43
43
|
}, [layout, setIsEditing]);
|
|
44
|
-
const
|
|
44
|
+
const onPressOverride = (0, _react.useCallback)(() => {
|
|
45
45
|
if (onPressEvent) {
|
|
46
|
-
|
|
46
|
+
onPressEvent(layout.event);
|
|
47
47
|
}
|
|
48
|
+
}, [layout, onPressEvent]);
|
|
49
|
+
const gestureTap = _reactNativeGestureHandler.Gesture.Tap().enabled(!isEditing).onStart(() => {
|
|
50
|
+
(0, _reactNativeReanimated.runOnJS)(onPressOverride)();
|
|
48
51
|
});
|
|
49
52
|
const startY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
50
53
|
const initialRender = (0, _react.useRef)(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNativeReanimated","_interopRequireWildcard","require","_globals","_react","_reactNativeGestureHandler","_reactNative","_useIsEditing","_panEditEventGesture","_interopRequireDefault","_doubleTapResetZoomGesture","_types","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TimedEventContainer","layout","refNewEvent","currentY","setIsEditing","isEditing","useIsEditing","onPressEvent","maximumHour","fiveMinuteInterval","zoomLevel","renderEvent","initialZoomLevel","onZoomChange","initialEventEdit","useContext","ConfigProvider","height","useSharedValue","top","startEditing","useCallback","gestureTap","Gesture","Tap","enabled","onStart","runOnJS","
|
|
1
|
+
{"version":3,"names":["_reactNativeReanimated","_interopRequireWildcard","require","_globals","_react","_reactNativeGestureHandler","_reactNative","_useIsEditing","_panEditEventGesture","_interopRequireDefault","_doubleTapResetZoomGesture","_types","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TimedEventContainer","layout","refNewEvent","currentY","setIsEditing","isEditing","useIsEditing","onPressEvent","maximumHour","fiveMinuteInterval","zoomLevel","renderEvent","initialZoomLevel","onZoomChange","initialEventEdit","useContext","ConfigProvider","height","useSharedValue","top","startEditing","useCallback","onPressOverride","event","gestureTap","Gesture","Tap","enabled","onStart","runOnJS","startY","initialRender","useRef","useEffect","current","id","gestures","Exclusive","doubleTapGesture","gesturePan","activateAfterLongPress","useAnimatedReaction","value","newZoomLevel","start","Date","end","diff","valueOf","Math","max","MIN_EVENT_HEIGHT_PX","position","render","useMemo","EventExtend","None","stylePosition","useAnimatedStyle","basePosition","opacity","width","marginLeft","pointerEvents","jsx","GestureDetector","gesture","children","View","style","styles","hairline","StyleSheet","create","marginHorizontal","hairlineWidth","flex","_default","exports"],"sourceRoot":"../../../src","sources":["components/timed-event-container.tsx"],"mappings":";;;;;;AAAA,IAAAA,sBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAMA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAQA,IAAAG,0BAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,oBAAA,GAAAC,sBAAA,CAAAP,OAAA;AACA,IAAAQ,0BAAA,GAAAD,sBAAA,CAAAP,OAAA;AACA,IAAAS,MAAA,GAAAT,OAAA;AAIkB,IAAAU,WAAA,GAAAV,OAAA;AAAA,SAAAO,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAZ,wBAAAY,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAOlB,MAAMW,mBAAmB,GAAGA,CAA0B;EACpDC,MAAM;EACNC;AAC2B,CAAC,KAAK;EACjC,MAAM;IAAEC,QAAQ;IAAEC,YAAY;IAAEC;EAAU,CAAC,GAAG,IAAAC,0BAAY,EAAC,CAAC;EAC5D,MAAM;IACJC,YAAY;IACZC,WAAW;IACXC,kBAAkB;IAClBC,SAAS;IACTC,WAAW;IACXC,gBAAgB;IAChBC,YAAY;IACZC;EACF,CAAC,GAAG,IAAAC,iBAAU,EAACC,uBAAc,CAAC;EAE9B,MAAMC,MAAM,GAAG,IAAAC,qCAAc,EAAC,CAAC,CAAC;EAChC,MAAMC,GAAG,GAAG,IAAAD,qCAAc,EAAC,CAAC,CAAC;EAE7B,MAAME,YAAY,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACrCjB,YAAY,CAACH,MAAM,CAAC;EACtB,CAAC,EAAE,CAACA,MAAM,EAAEG,YAAY,CAAC,CAAC;EAE1B,MAAMkB,eAAe,GAAG,IAAAD,kBAAW,EAAC,MAAM;IACxC,IAAId,YAAY,EAAE;MAChBA,YAAY,CAACN,MAAM,CAACsB,KAAK,CAAC;IAC5B;EACF,CAAC,EAAE,CAACtB,MAAM,EAAEM,YAAY,CAAC,CAAC;EAE1B,MAAMiB,UAAU,GAAGC,kCAAO,CAACC,GAAG,CAAC,CAAC,CAC7BC,OAAO,CAAC,CAACtB,SAAS,CAAC,CACnBuB,OAAO,CAAC,MAAM;IACb,IAAAC,8BAAO,EAACP,eAAe,CAAC,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEJ,MAAMQ,MAAM,GAAG,IAAAZ,qCAAc,EAAC,CAAC,CAAC;EAEhC,MAAMa,aAAa,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EAElC,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACF,aAAa,CAACG,OAAO,EAAE;MAC1B;IACF;IAEAH,aAAa,CAACG,OAAO,GAAG,KAAK;IAE7B,IAAI,CAACpB,gBAAgB,IAAIA,gBAAgB,KAAKb,MAAM,CAACsB,KAAK,CAACY,EAAE,EAAE;MAC7D;IACF;IAEAf,YAAY,CAAC,CAAC;EAChB,CAAC,EAAE,CAACN,gBAAgB,EAAEb,MAAM,CAACsB,KAAK,CAACY,EAAE,EAAEf,YAAY,CAAC,CAAC;EAErD,MAAMgB,QAAQ,GAAGX,kCAAO,CAACY,SAAS,CAChC,IAAAC,kCAAgB,EAAC5B,SAAS,EAAEE,gBAAgB,EAAEC,YAAY,CAAC,EAC3DW,UAAU,EACV,IAAAe,4BAAU,EACRT,MAAM,EACNX,GAAG,EACHhB,QAAQ,EACRO,SAAS,EACTF,WAAW,EACXS,MAAM,EACNf,WAAW,EACXO,kBAAkB,EAClBJ,SAAS,EACTe,YACF,CAAC,CAACoB,sBAAsB,CAAC,GAAG,CAC9B,CAAC;EAED,IAAAC,0CAAmB,EACjB,MAAM/B,SAAS,CAACgC,KAAK,EACpBC,YAAY,IAAK;IAChB,MAAMC,KAAK,GAAG,IAAIC,IAAI,CAAC5C,MAAM,CAACsB,KAAK,CAACqB,KAAK,CAAC;IAC1C,MAAME,GAAG,GAAG,IAAID,IAAI,CAAC5C,MAAM,CAACsB,KAAK,CAACuB,GAAG,CAAC;IACtC,MAAMC,IAAI,GAAG,CAACD,GAAG,CAACE,OAAO,CAAC,CAAC,GAAGJ,KAAK,CAACI,OAAO,CAAC,CAAC,IAAI,MAAM;IAEvD/B,MAAM,CAACyB,KAAK,GAAGO,IAAI,CAACC,GAAG,CAACC,4BAAmB,EAAER,YAAY,GAAGI,IAAI,CAAC;EACnE,CAAC,EACD,CAAC9C,MAAM,CAACsB,KAAK,CACf,CAAC;EAED,IAAAkB,0CAAmB,EACjB,MAAM/B,SAAS,CAACgC,KAAK,EACpBC,YAAY,IAAK;IAChBxB,GAAG,CAACuB,KAAK,GAAGC,YAAY,GAAG1C,MAAM,CAACmD,QAAQ,CAACjC,GAAG;EAChD,CAAC,EACD,CAAClB,MAAM,CAACmD,QAAQ,CAACjC,GAAG,CACtB,CAAC;EAED,MAAMkC,MAAM,GAAG,IAAAC,cAAO,EACpB,MAAM3C,WAAW,CAACV,MAAM,CAACsB,KAAK,EAAEgC,kBAAW,CAACC,IAAI,EAAEvC,MAAM,CAAC,EACzD,CAACA,MAAM,EAAEhB,MAAM,CAACsB,KAAK,EAAEZ,WAAW,CACpC,CAAC;EAED,MAAM8C,aAAa,GAAG,IAAAC,uCAAgB,EAAC,MAAM;IAC3C,MAAMC,YAAiB,GAAG;MACxBP,QAAQ,EAAE,UAAU;MACpBnC,MAAM,EAAEA,MAAM,CAACyB,KAAK;MACpBvB,GAAG,EAAEA,GAAG,CAACuB,KAAK;MACdkB,OAAO,EAAE,CAAC;MACVC,KAAK,EAAE5D,MAAM,CAACmD,QAAQ,CAACS,KAAK;MAC5BC,UAAU,EAAE7D,MAAM,CAACmD,QAAQ,CAACU,UAAU;MAEtC;MACAC,aAAa,EAAE1D,SAAS,GAAG,MAAM,GAAG;IACtC,CAAC;IAED,IAAIA,SAAS,EAAEkB,KAAK,CAACY,EAAE,KAAKlC,MAAM,CAACsB,KAAK,CAACY,EAAE,EAAE;MAC3CwB,YAAY,CAACC,OAAO,GAAG,GAAG;IAC5B;IAEA,OAAOD,YAAY;EACrB,CAAC,EAAE,CAAC1D,MAAM,EAAEI,SAAS,CAAC,CAAC;EAEvB,oBACE,IAAA1B,WAAA,CAAAqF,GAAA,EAAC5F,0BAAA,CAAA6F,eAAe;IAACC,OAAO,EAAE9B,QAAS;IAAA+B,QAAA,eACjC,IAAAxF,WAAA,CAAAqF,GAAA,EAACjG,sBAAA,CAAAe,OAAQ,CAACsF,IAAI;MAACC,KAAK,EAAEZ,aAAc;MAAAU,QAAA,eAClC,IAAAxF,WAAA,CAAAqF,GAAA,EAAC3F,YAAA,CAAA+F,IAAI;QAACC,KAAK,EAAEC,MAAM,CAACC,QAAS;QAAAJ,QAAA,EAAEd;MAAM,CAAO;IAAC,CAChC;EAAC,CACD,CAAC;AAEtB,CAAC;AAED,MAAMiB,MAAM,GAAGE,uBAAU,CAACC,MAAM,CAAC;EAC/BF,QAAQ,EAAE;IAAEG,gBAAgB,EAAEF,uBAAU,CAACG,aAAa;IAAEC,IAAI,EAAE;EAAE;AAClE,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAhG,OAAA,GAEYkB,mBAAmB","ignoreList":[]}
|
|
@@ -127,12 +127,14 @@ const combineEventPosition = (dayDate, timezone, collisionObject) => {
|
|
|
127
127
|
};
|
|
128
128
|
};
|
|
129
129
|
const handleCollisions = (allEvents, userCalendarId, dayDate, timezone) => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
130
|
+
// Sort by start asc (primary), then primary calendar flag, then duration asc,
|
|
131
|
+
// then id (stable tiebreaker)
|
|
132
|
+
const sortById = event => event.id;
|
|
133
|
+
const sortByDuration = event => (0, _dateUtils.getDuration)(event);
|
|
134
|
+
const sortByStartDate = event => new Date(event.start).valueOf();
|
|
135
|
+
const sortByPrimaryCalendar = event => event.calendarId && event.calendarId !== userCalendarId;
|
|
136
|
+
const stackableEvents = (0, _sortBy2.default)([...allEvents], [sortByStartDate, sortByPrimaryCalendar, sortByDuration, sortById]);
|
|
137
|
+
|
|
136
138
|
// calculate overlap stack properties
|
|
137
139
|
const stackedEvtsByPos = {};
|
|
138
140
|
let curStack = [];
|
|
@@ -142,14 +144,12 @@ const handleCollisions = (allEvents, userCalendarId, dayDate, timezone) => {
|
|
|
142
144
|
const stackEvt = curStack[idx];
|
|
143
145
|
if (stackEvt) {
|
|
144
146
|
const stackEvtEnd = new Date(stackEvt.event.end).valueOf();
|
|
145
|
-
const stackEvtStart = new Date(stackEvt.event.start).valueOf();
|
|
146
147
|
const eventStart = new Date(evt.start).valueOf();
|
|
147
148
|
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (endDate <= eventStart) {
|
|
149
|
+
// Use half-open interval semantics [start, end):
|
|
150
|
+
// an active event is removed when its end is less than or equal to the next start.
|
|
151
|
+
// Do not pad short events when determining overlap/collision.
|
|
152
|
+
if (stackEvtEnd <= eventStart) {
|
|
153
153
|
// null out this event's position in stack
|
|
154
154
|
curStack[idx] = null;
|
|
155
155
|
if (curStack.length > 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_partition2","_interopRequireDefault","require","_reduce2","_sortBy2","_reverse2","_momentTimezone","_calendarLayout","_dateUtils","_computePositioning","_types","e","__esModule","default","generateEventLayouts","events","startCalendarDate","endCalendarDate","userCalendarId","calendarViewInterval","startDayOfWeekOffset","timezone","allDayEvents","partDayEvents","_partition","event","isAllDayOrSpansMidnight","allDayEventsSorted","_sortBy","id","getDurationInDays","_reverse","Date","start","valueOf","partDayEventsSorted","getDuration","calendarViewDayEvents","visibleDayCount","moment","tz","diff","visibleDays","dayCount","push","add","format","calendarViewDateRanges","map","visibleDay","computeCalendarDateRange","result","forEach","date","calendarLayoutOptions","visibleX","dayIndexes","enableWeekBreaks","startOfWeekXOffset","basisDate","startOfUserWeek","calendarViewDayLayout","_reduce","calendarLayout","eventStartIndex","startOf","eventDurationDays","findFitAndInsert","CalendarLayout","calendarViewDayRowHeight","height","calendarDates","calendarDate","currentDayDate","startDate","toDate","endDate","endOf","showHours","includes","dayId","allDayEventsLayout","partDayEventsLayout","x","y","visibleWidthDays","extend","EventExtend","None","isPrimaryRendered","getViewAt","rowIndex","concat","handleCollisions","filter","dateRangeIntersect","end","exports","combineEventPosition","dayDate","collisionObject","position","computePositioning","startOfDayMoment","allEvents","
|
|
1
|
+
{"version":3,"names":["_partition2","_interopRequireDefault","require","_reduce2","_sortBy2","_reverse2","_momentTimezone","_calendarLayout","_dateUtils","_computePositioning","_types","e","__esModule","default","generateEventLayouts","events","startCalendarDate","endCalendarDate","userCalendarId","calendarViewInterval","startDayOfWeekOffset","timezone","allDayEvents","partDayEvents","_partition","event","isAllDayOrSpansMidnight","allDayEventsSorted","_sortBy","id","getDurationInDays","_reverse","Date","start","valueOf","partDayEventsSorted","getDuration","calendarViewDayEvents","visibleDayCount","moment","tz","diff","visibleDays","dayCount","push","add","format","calendarViewDateRanges","map","visibleDay","computeCalendarDateRange","result","forEach","date","calendarLayoutOptions","visibleX","dayIndexes","enableWeekBreaks","startOfWeekXOffset","basisDate","startOfUserWeek","calendarViewDayLayout","_reduce","calendarLayout","eventStartIndex","startOf","eventDurationDays","findFitAndInsert","CalendarLayout","calendarViewDayRowHeight","height","calendarDates","calendarDate","currentDayDate","startDate","toDate","endDate","endOf","showHours","includes","dayId","allDayEventsLayout","partDayEventsLayout","x","y","visibleWidthDays","extend","EventExtend","None","isPrimaryRendered","getViewAt","rowIndex","concat","handleCollisions","filter","dateRangeIntersect","end","exports","combineEventPosition","dayDate","collisionObject","position","computePositioning","startOfDayMoment","allEvents","sortById","sortByDuration","sortByStartDate","sortByPrimaryCalendar","calendarId","stackableEvents","stackedEvtsByPos","curStack","evt","idx","length","stackEvt","stackEvtEnd","eventStart","collisions","total","order","some","el","spliceIdx","findIndex","splice","stackedEvents","Object","keys","pos","_default"],"sourceRoot":"../../../src","sources":["utils/generate-event-layouts.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,10 +34,13 @@ const TimedEventContainer = ({
|
|
|
34
34
|
const startEditing = useCallback(() => {
|
|
35
35
|
setIsEditing(layout);
|
|
36
36
|
}, [layout, setIsEditing]);
|
|
37
|
-
const
|
|
37
|
+
const onPressOverride = useCallback(() => {
|
|
38
38
|
if (onPressEvent) {
|
|
39
|
-
|
|
39
|
+
onPressEvent(layout.event);
|
|
40
40
|
}
|
|
41
|
+
}, [layout, onPressEvent]);
|
|
42
|
+
const gestureTap = Gesture.Tap().enabled(!isEditing).onStart(() => {
|
|
43
|
+
runOnJS(onPressOverride)();
|
|
41
44
|
});
|
|
42
45
|
const startY = useSharedValue(0);
|
|
43
46
|
const initialRender = useRef(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","ConfigProvider","MIN_EVENT_HEIGHT_PX","useCallback","useContext","useEffect","useMemo","useRef","Gesture","GestureDetector","StyleSheet","View","useIsEditing","gesturePan","doubleTapGesture","EventExtend","jsx","_jsx","TimedEventContainer","layout","refNewEvent","currentY","setIsEditing","isEditing","onPressEvent","maximumHour","fiveMinuteInterval","zoomLevel","renderEvent","initialZoomLevel","onZoomChange","initialEventEdit","height","top","startEditing","gestureTap","Tap","enabled","onStart","
|
|
1
|
+
{"version":3,"names":["Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","ConfigProvider","MIN_EVENT_HEIGHT_PX","useCallback","useContext","useEffect","useMemo","useRef","Gesture","GestureDetector","StyleSheet","View","useIsEditing","gesturePan","doubleTapGesture","EventExtend","jsx","_jsx","TimedEventContainer","layout","refNewEvent","currentY","setIsEditing","isEditing","onPressEvent","maximumHour","fiveMinuteInterval","zoomLevel","renderEvent","initialZoomLevel","onZoomChange","initialEventEdit","height","top","startEditing","onPressOverride","event","gestureTap","Tap","enabled","onStart","startY","initialRender","current","id","gestures","Exclusive","activateAfterLongPress","value","newZoomLevel","start","Date","end","diff","valueOf","Math","max","position","render","None","stylePosition","basePosition","opacity","width","marginLeft","pointerEvents","gesture","children","style","styles","hairline","create","marginHorizontal","hairlineWidth","flex"],"sourceRoot":"../../../src","sources":["components/timed-event-container.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -121,12 +121,14 @@ const combineEventPosition = (dayDate, timezone, collisionObject) => {
|
|
|
121
121
|
};
|
|
122
122
|
};
|
|
123
123
|
const handleCollisions = (allEvents, userCalendarId, dayDate, timezone) => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
// Sort by start asc (primary), then primary calendar flag, then duration asc,
|
|
125
|
+
// then id (stable tiebreaker)
|
|
126
|
+
const sortById = event => event.id;
|
|
127
|
+
const sortByDuration = event => getDuration(event);
|
|
128
|
+
const sortByStartDate = event => new Date(event.start).valueOf();
|
|
129
|
+
const sortByPrimaryCalendar = event => event.calendarId && event.calendarId !== userCalendarId;
|
|
130
|
+
const stackableEvents = _sortBy([...allEvents], [sortByStartDate, sortByPrimaryCalendar, sortByDuration, sortById]);
|
|
131
|
+
|
|
130
132
|
// calculate overlap stack properties
|
|
131
133
|
const stackedEvtsByPos = {};
|
|
132
134
|
let curStack = [];
|
|
@@ -136,14 +138,12 @@ const handleCollisions = (allEvents, userCalendarId, dayDate, timezone) => {
|
|
|
136
138
|
const stackEvt = curStack[idx];
|
|
137
139
|
if (stackEvt) {
|
|
138
140
|
const stackEvtEnd = new Date(stackEvt.event.end).valueOf();
|
|
139
|
-
const stackEvtStart = new Date(stackEvt.event.start).valueOf();
|
|
140
141
|
const eventStart = new Date(evt.start).valueOf();
|
|
141
142
|
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (endDate <= eventStart) {
|
|
143
|
+
// Use half-open interval semantics [start, end):
|
|
144
|
+
// an active event is removed when its end is less than or equal to the next start.
|
|
145
|
+
// Do not pad short events when determining overlap/collision.
|
|
146
|
+
if (stackEvtEnd <= eventStart) {
|
|
147
147
|
// null out this event's position in stack
|
|
148
148
|
curStack[idx] = null;
|
|
149
149
|
if (curStack.length > 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_partition","_reduce","_sortBy","_reverse","moment","CalendarLayout","computeCalendarDateRange","dateRangeIntersect","getDuration","getDurationInDays","isAllDayOrSpansMidnight","startOfUserWeek","computePositioning","EventExtend","generateEventLayouts","events","startCalendarDate","endCalendarDate","userCalendarId","calendarViewInterval","startDayOfWeekOffset","timezone","allDayEvents","partDayEvents","event","allDayEventsSorted","id","Date","start","valueOf","partDayEventsSorted","calendarViewDayEvents","visibleDayCount","tz","diff","visibleDays","dayCount","push","add","format","calendarViewDateRanges","map","visibleDay","result","forEach","date","calendarLayoutOptions","visibleX","dayIndexes","enableWeekBreaks","startOfWeekXOffset","basisDate","calendarViewDayLayout","calendarLayout","eventStartIndex","startOf","eventDurationDays","findFitAndInsert","calendarViewDayRowHeight","height","calendarDates","calendarDate","currentDayDate","startDate","toDate","endDate","endOf","showHours","includes","dayId","allDayEventsLayout","partDayEventsLayout","x","y","visibleWidthDays","extend","None","isPrimaryRendered","getViewAt","rowIndex","concat","handleCollisions","filter","end","combineEventPosition","dayDate","collisionObject","position","startOfDayMoment","allEvents","
|
|
1
|
+
{"version":3,"names":["_partition","_reduce","_sortBy","_reverse","moment","CalendarLayout","computeCalendarDateRange","dateRangeIntersect","getDuration","getDurationInDays","isAllDayOrSpansMidnight","startOfUserWeek","computePositioning","EventExtend","generateEventLayouts","events","startCalendarDate","endCalendarDate","userCalendarId","calendarViewInterval","startDayOfWeekOffset","timezone","allDayEvents","partDayEvents","event","allDayEventsSorted","id","Date","start","valueOf","partDayEventsSorted","calendarViewDayEvents","visibleDayCount","tz","diff","visibleDays","dayCount","push","add","format","calendarViewDateRanges","map","visibleDay","result","forEach","date","calendarLayoutOptions","visibleX","dayIndexes","enableWeekBreaks","startOfWeekXOffset","basisDate","calendarViewDayLayout","calendarLayout","eventStartIndex","startOf","eventDurationDays","findFitAndInsert","calendarViewDayRowHeight","height","calendarDates","calendarDate","currentDayDate","startDate","toDate","endDate","endOf","showHours","includes","dayId","allDayEventsLayout","partDayEventsLayout","x","y","visibleWidthDays","extend","None","isPrimaryRendered","getViewAt","rowIndex","concat","handleCollisions","filter","end","combineEventPosition","dayDate","collisionObject","position","startOfDayMoment","allEvents","sortById","sortByDuration","sortByStartDate","sortByPrimaryCalendar","calendarId","stackableEvents","stackedEvtsByPos","curStack","evt","idx","length","stackEvt","stackEvtEnd","eventStart","collisions","total","order","some","el","spliceIdx","findIndex","splice","stackedEvents","Object","keys","pos"],"sourceRoot":"../../../src","sources":["utils/generate-event-layouts.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timed-event-container.d.ts","sourceRoot":"","sources":["../../../../src/components/timed-event-container.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAMf,OAAO,EACL,KAAK,aAAa,EAElB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,KAAK,wBAAwB,CAAC,CAAC,SAAS,aAAa,IAAI;IACvD,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,CAAC,SAAS,aAAa,4BAGjD,wBAAwB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"timed-event-container.d.ts","sourceRoot":"","sources":["../../../../src/components/timed-event-container.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAMf,OAAO,EACL,KAAK,aAAa,EAElB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,KAAK,wBAAwB,CAAC,CAAC,SAAS,aAAa,IAAI;IACvD,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,CAAC,SAAS,aAAa,4BAGjD,wBAAwB,CAAC,CAAC,CAAC,gCAuH7B,CAAC;AAMF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-event-layouts.d.ts","sourceRoot":"","sources":["../../../../src/utils/generate-event-layouts.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,aAAa,EACb,wBAAwB,EAGxB,uBAAuB,EAExB,MAAM,UAAU,CAAC;AAElB,UAAU,oBAAoB,CAAC,CAAC,SAAS,aAAa;IACpD,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,yHAQzD,oBAAoB,CAAC,CAAC,CAAC;;CA8JzB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-event-layouts.d.ts","sourceRoot":"","sources":["../../../../src/utils/generate-event-layouts.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,aAAa,EACb,wBAAwB,EAGxB,uBAAuB,EAExB,MAAM,UAAU,CAAC;AAElB,UAAU,oBAAoB,CAAC,CAAC,SAAS,aAAa;IACpD,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,yHAQzD,oBAAoB,CAAC,CAAC,CAAC;;CA8JzB,CAAC;AAiHF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timed-event-container.d.ts","sourceRoot":"","sources":["../../../../src/components/timed-event-container.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAMf,OAAO,EACL,KAAK,aAAa,EAElB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,KAAK,wBAAwB,CAAC,CAAC,SAAS,aAAa,IAAI;IACvD,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,CAAC,SAAS,aAAa,4BAGjD,wBAAwB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"timed-event-container.d.ts","sourceRoot":"","sources":["../../../../src/components/timed-event-container.tsx"],"names":[],"mappings":"AAOA,OAAO,EACL,SAAS,EAMV,MAAM,OAAO,CAAC;AAMf,OAAO,EACL,KAAK,aAAa,EAElB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,KAAK,wBAAwB,CAAC,CAAC,SAAS,aAAa,IAAI;IACvD,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,CAAC,SAAS,aAAa,4BAGjD,wBAAwB,CAAC,CAAC,CAAC,gCAuH7B,CAAC;AAMF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-event-layouts.d.ts","sourceRoot":"","sources":["../../../../src/utils/generate-event-layouts.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,aAAa,EACb,wBAAwB,EAGxB,uBAAuB,EAExB,MAAM,UAAU,CAAC;AAElB,UAAU,oBAAoB,CAAC,CAAC,SAAS,aAAa;IACpD,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,yHAQzD,oBAAoB,CAAC,CAAC,CAAC;;CA8JzB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-event-layouts.d.ts","sourceRoot":"","sources":["../../../../src/utils/generate-event-layouts.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,aAAa,EACb,wBAAwB,EAGxB,uBAAuB,EAExB,MAAM,UAAU,CAAC;AAElB,UAAU,oBAAoB,CAAC,CAAC,SAAS,aAAa;IACpD,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;CACjD;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,yHAQzD,oBAAoB,CAAC,CAAC,CAAC;;CA8JzB,CAAC;AAiHF,eAAe,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -52,12 +52,16 @@ const TimedEventContainer = <T extends CalendarEvent>({
|
|
|
52
52
|
setIsEditing(layout);
|
|
53
53
|
}, [layout, setIsEditing]);
|
|
54
54
|
|
|
55
|
+
const onPressOverride = useCallback(() => {
|
|
56
|
+
if (onPressEvent) {
|
|
57
|
+
onPressEvent(layout.event);
|
|
58
|
+
}
|
|
59
|
+
}, [layout, onPressEvent]);
|
|
60
|
+
|
|
55
61
|
const gestureTap = Gesture.Tap()
|
|
56
62
|
.enabled(!isEditing)
|
|
57
63
|
.onStart(() => {
|
|
58
|
-
|
|
59
|
-
runOnJS(onPressEvent)(layout.event);
|
|
60
|
-
}
|
|
64
|
+
runOnJS(onPressOverride)();
|
|
61
65
|
});
|
|
62
66
|
|
|
63
67
|
const startY = useSharedValue(0);
|
|
@@ -107,6 +107,118 @@ describe("generateEventLayouts", () => {
|
|
|
107
107
|
expect(partDayEventsLayout[1].collisions).toBe(undefined);
|
|
108
108
|
});
|
|
109
109
|
|
|
110
|
+
it("should treat touching events as non-overlapping: [09:00,10:00) and [10:00,11:00)", () => {
|
|
111
|
+
const events: CalendarEvent[] = [
|
|
112
|
+
{
|
|
113
|
+
id: "1",
|
|
114
|
+
calendarId: "primary-calendar",
|
|
115
|
+
title: "Event A",
|
|
116
|
+
start: "2023-10-10T09:00:00Z",
|
|
117
|
+
end: "2023-10-10T10:00:00Z",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: "2",
|
|
121
|
+
calendarId: "primary-calendar",
|
|
122
|
+
title: "Event B",
|
|
123
|
+
start: "2023-10-10T10:00:00Z",
|
|
124
|
+
end: "2023-10-10T11:00:00Z",
|
|
125
|
+
},
|
|
126
|
+
];
|
|
127
|
+
|
|
128
|
+
const layouts = generateEventLayouts({
|
|
129
|
+
startCalendarDate: "2023-10-10",
|
|
130
|
+
endCalendarDate: "2023-10-10",
|
|
131
|
+
events,
|
|
132
|
+
timezone: "UTC",
|
|
133
|
+
userCalendarId: "primary-calendar",
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const dayLayout = layouts["2023-10-10"];
|
|
137
|
+
expect(dayLayout).toBeDefined();
|
|
138
|
+
const { partDayEventsLayout } = dayLayout;
|
|
139
|
+
expect(partDayEventsLayout.length).toBe(2);
|
|
140
|
+
// Touching at boundary should not collide
|
|
141
|
+
expect(partDayEventsLayout[0].collisions).toBeUndefined();
|
|
142
|
+
expect(partDayEventsLayout[1].collisions).toBeUndefined();
|
|
143
|
+
// Both should have full width
|
|
144
|
+
expect(partDayEventsLayout[0].position.width).toBe("100%");
|
|
145
|
+
expect(partDayEventsLayout[1].position.width).toBe("100%");
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("should treat touching events as non-overlapping: reversed order [10:00,11:00) then [09:00,10:00)", () => {
|
|
149
|
+
const events: CalendarEvent[] = [
|
|
150
|
+
{
|
|
151
|
+
id: "1",
|
|
152
|
+
calendarId: "primary-calendar",
|
|
153
|
+
title: "Event A",
|
|
154
|
+
start: "2023-10-10T10:00:00Z",
|
|
155
|
+
end: "2023-10-10T11:00:00Z",
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: "0",
|
|
159
|
+
calendarId: "primary-calendar",
|
|
160
|
+
title: "Event B",
|
|
161
|
+
start: "2023-10-10T09:00:00Z",
|
|
162
|
+
end: "2023-10-10T10:00:00Z",
|
|
163
|
+
},
|
|
164
|
+
];
|
|
165
|
+
|
|
166
|
+
const layouts = generateEventLayouts({
|
|
167
|
+
startCalendarDate: "2023-10-10",
|
|
168
|
+
endCalendarDate: "2023-10-10",
|
|
169
|
+
events,
|
|
170
|
+
timezone: "UTC",
|
|
171
|
+
userCalendarId: "primary-calendar",
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
const dayLayout = layouts["2023-10-10"];
|
|
175
|
+
expect(dayLayout).toBeDefined();
|
|
176
|
+
const { partDayEventsLayout } = dayLayout;
|
|
177
|
+
expect(partDayEventsLayout.length).toBe(2);
|
|
178
|
+
expect(partDayEventsLayout[0].collisions).toBeUndefined();
|
|
179
|
+
expect(partDayEventsLayout[1].collisions).toBeUndefined();
|
|
180
|
+
expect(partDayEventsLayout[0].position.width).toBe("100%");
|
|
181
|
+
expect(partDayEventsLayout[1].position.width).toBe("100%");
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
it("should not collide zero-duration event with an event starting at the same time", () => {
|
|
185
|
+
const events: CalendarEvent[] = [
|
|
186
|
+
{
|
|
187
|
+
id: "1",
|
|
188
|
+
calendarId: "primary-calendar",
|
|
189
|
+
title: "Instant",
|
|
190
|
+
start: "2023-10-10T10:00:00Z",
|
|
191
|
+
end: "2023-10-10T10:00:00Z",
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
id: "2",
|
|
195
|
+
calendarId: "primary-calendar",
|
|
196
|
+
title: "One hour",
|
|
197
|
+
start: "2023-10-10T10:00:00Z",
|
|
198
|
+
end: "2023-10-10T11:00:00Z",
|
|
199
|
+
},
|
|
200
|
+
];
|
|
201
|
+
|
|
202
|
+
const layouts = generateEventLayouts({
|
|
203
|
+
startCalendarDate: "2023-10-10",
|
|
204
|
+
endCalendarDate: "2023-10-10",
|
|
205
|
+
events,
|
|
206
|
+
timezone: "UTC",
|
|
207
|
+
userCalendarId: "primary-calendar",
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
const dayLayout = layouts["2023-10-10"];
|
|
211
|
+
expect(dayLayout).toBeDefined();
|
|
212
|
+
const { partDayEventsLayout } = dayLayout;
|
|
213
|
+
expect(partDayEventsLayout.length).toBe(2);
|
|
214
|
+
// Neither should have collisions
|
|
215
|
+
expect(partDayEventsLayout[0].collisions).toBeUndefined();
|
|
216
|
+
expect(partDayEventsLayout[1].collisions).toBeUndefined();
|
|
217
|
+
// Both should be full width
|
|
218
|
+
expect(partDayEventsLayout[0].position.width).toBe("100%");
|
|
219
|
+
expect(partDayEventsLayout[1].position.width).toBe("100%");
|
|
220
|
+
});
|
|
221
|
+
|
|
110
222
|
it("should handle an empty event list", () => {
|
|
111
223
|
const events: CalendarEvent[] = [];
|
|
112
224
|
|
|
@@ -224,14 +224,19 @@ const handleCollisions = <T extends CalendarEvent>(
|
|
|
224
224
|
dayDate: Moment,
|
|
225
225
|
timezone: string
|
|
226
226
|
): PartDayEventLayoutType<T>[] => {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
227
|
+
// Sort by start asc (primary), then primary calendar flag, then duration asc,
|
|
228
|
+
// then id (stable tiebreaker)
|
|
229
|
+
const sortById = (event: T) => event.id;
|
|
230
|
+
const sortByDuration = (event: T) => getDuration(event);
|
|
231
|
+
const sortByStartDate = (event: T) => new Date(event.start).valueOf();
|
|
232
|
+
const sortByPrimaryCalendar = (event: T) =>
|
|
233
|
+
event.calendarId && event.calendarId !== userCalendarId;
|
|
234
|
+
|
|
235
|
+
const stackableEvents = _sortBy(
|
|
236
|
+
[...allEvents],
|
|
237
|
+
[sortByStartDate, sortByPrimaryCalendar, sortByDuration, sortById]
|
|
234
238
|
);
|
|
239
|
+
|
|
235
240
|
// calculate overlap stack properties
|
|
236
241
|
const stackedEvtsByPos: Record<string, PartDayEventLayoutType<T>[]> = {};
|
|
237
242
|
let curStack: (CollisionObject<T> | null)[] = [];
|
|
@@ -243,16 +248,12 @@ const handleCollisions = <T extends CalendarEvent>(
|
|
|
243
248
|
|
|
244
249
|
if (stackEvt) {
|
|
245
250
|
const stackEvtEnd = new Date(stackEvt.event.end).valueOf();
|
|
246
|
-
const stackEvtStart = new Date(stackEvt.event.start).valueOf();
|
|
247
251
|
const eventStart = new Date(evt.start).valueOf();
|
|
248
252
|
|
|
249
|
-
//
|
|
250
|
-
//
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
duration < 15 ? stackEvtStart + 15 * 60 * 1000 : stackEvtEnd;
|
|
254
|
-
|
|
255
|
-
if (endDate <= eventStart) {
|
|
253
|
+
// Use half-open interval semantics [start, end):
|
|
254
|
+
// an active event is removed when its end is less than or equal to the next start.
|
|
255
|
+
// Do not pad short events when determining overlap/collision.
|
|
256
|
+
if (stackEvtEnd <= eventStart) {
|
|
256
257
|
// null out this event's position in stack
|
|
257
258
|
curStack[idx] = null;
|
|
258
259
|
|