svelte-lightweight-charts
Version:
Svelte wrapper for financial lightweight charts built with HTML5 canvas
75 lines (74 loc) • 3.23 kB
JavaScript
export function timeScale(target, params) {
let { options, onVisibleTimeRangeChange, onVisibleLogicalRangeChange, onSizeChange, } = params;
const subject = target.timeScale();
let reference;
if (options) {
subject.applyOptions(options);
}
if (onVisibleTimeRangeChange) {
subject.subscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);
}
if (onVisibleLogicalRangeChange) {
subject.subscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);
}
if (onSizeChange) {
subject.subscribeSizeChange(onSizeChange);
}
return {
update(nextParams) {
const { options: nextOptions, onVisibleTimeRangeChange: nextOnVisibleTimeRangeChange, onVisibleLogicalRangeChange: nextOnVisibleLogicalRangeChange, onSizeChange: nextOnSizeChange, } = nextParams;
if (nextOptions !== options) {
options = nextOptions;
if (options) {
subject.applyOptions(options);
}
}
if (nextOnVisibleTimeRangeChange !== onVisibleTimeRangeChange) {
if (onVisibleTimeRangeChange) {
subject.unsubscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);
}
onVisibleTimeRangeChange = nextOnVisibleTimeRangeChange;
if (onVisibleTimeRangeChange) {
subject.subscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);
}
}
if (nextOnVisibleLogicalRangeChange !== onVisibleLogicalRangeChange) {
if (onVisibleLogicalRangeChange) {
subject.unsubscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);
}
onVisibleLogicalRangeChange = nextOnVisibleLogicalRangeChange;
if (onVisibleLogicalRangeChange) {
subject.subscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);
}
}
if (nextOnSizeChange !== onSizeChange) {
if (onSizeChange) {
subject.unsubscribeSizeChange(onSizeChange);
}
onSizeChange = nextOnSizeChange;
if (onSizeChange) {
subject.subscribeSizeChange(onSizeChange);
}
}
},
updateReference(nextReference) {
if (nextReference !== reference) {
reference === null || reference === void 0 ? void 0 : reference(null);
reference = nextReference;
reference === null || reference === void 0 ? void 0 : reference(subject);
}
},
destroy() {
if (onVisibleTimeRangeChange) {
subject.unsubscribeVisibleTimeRangeChange(onVisibleTimeRangeChange);
}
if (onVisibleLogicalRangeChange) {
subject.unsubscribeVisibleLogicalRangeChange(onVisibleLogicalRangeChange);
}
if (onSizeChange) {
subject.unsubscribeSizeChange(onSizeChange);
}
reference === null || reference === void 0 ? void 0 : reference(null);
}
};
}