With the latest sandbox build (2025.3.6611), you can use a custom onTimeRangeSelecting handler to implement this rule:
{
allowMultiRange: true,
allowEventOverlap: true,
onTimeRangeSelecting: args => {
const overlapsExisting = args.multirange.some(item => {
return DayPilot.Util.overlaps(item.start, item.end, args.start, args.end) &&
item.resource === args.resource;
});
args.allowed = !overlapsExisting;
},
// ...
}