UNPKG

svelte-lightweight-charts

Version:

Svelte wrapper for financial lightweight charts built with HTML5 canvas

75 lines (74 loc) 3.23 kB
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); } }; }