Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,114 @@
define(function(require, exports, module) {
'use strict';
function Timespan(startDate, endDate) {
this.start = startDate.valueOf();
this.end = endDate.valueOf();
}
module.exports = Timespan;
Timespan.prototype = {
isEqual: function(inputSpan) {
return (
this.start === inputSpan.start &&
this.end === inputSpan.end
);
},
/**
* If given Timespan overlaps this timespan
* return a new timespan with the overlapping
* parts removed.
*
* See tests for examples...
*/
trimOverlap: function(span) {
if (this.contains(span) || span.contains(this)) {
return null;
}
var start = span.start;
var end = span.end;
var ourEnd = this.end;
var ourStart = this.start;
var overlapsBefore = start >= ourStart && start < ourEnd;
var overlapsAfter = ourStart >= start && ourStart < end;
var newStart = span.start;
var newEnd = span.end;
if (overlapsBefore) {
newStart = ourEnd + 1;
}
if (overlapsAfter) {
newEnd = ourStart - 1;
}
return new Timespan(newStart, newEnd);
},
/**
* Checks if given time overlaps with
* range.
*
* @param {Date|Numeric|Timespan} start range or one position.
* @param {Date|Numeric} [end] do a span comparison.
*/
overlaps: function(start, end) {
var ourStart = this.start;
var ourEnd = this.end;
if (start instanceof Timespan) {
end = start.end;
start = start.start;
} else {
// start/end expected
start = (start instanceof Date) ? start.valueOf() : start;
end = (end instanceof Date) ? end.valueOf() : end;
}
return (
start >= ourStart && start < ourEnd ||
ourStart >= start && ourStart < end
);
},
/**
* When given a date checks if
* date is inside given range.
*
*
* @param {Date} date date or event.
*/
contains: function(date) {
var start = this.start;
var end = this.end;
if (date instanceof Date) {
return start <= date && end >= date;
} else if (date instanceof Timespan) {
return start <= date.start &&
end >= date.end;
} else {
return this.containsNumeric(date);
}
},
/**
* Numeric comparison assumes
* given seconds since epoch.
*
* @param {Numeric} timestamp numeric timestamp.
*/
containsNumeric: function(timestamp) {
var start = this.start;
var end = this.end;
return start <= timestamp &&
end >= timestamp;
}
};
});