const options = config.createResolver(config.chartOptionScopes(), this.getContext());
this.platform = new (config.platform || _detectPlatform(initialCanvas))();
+ this.platform.updateConfig(config);
const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);
const canvas = context && context.canvas;
isAttached(canvas) { // eslint-disable-line no-unused-vars
return true;
}
+
+ /**
+ * Updates config with platform specific requirements
+ * @param {import("../core/core.config").default} config
+ */
+ updateConfig(config) { // eslint-disable-line no-unused-vars
+ // no-op
+ }
}
/**
// https://github.com/chartjs/Chart.js/issues/2807
return item && item.getContext && item.getContext('2d') || null;
}
+ updateConfig(config) {
+ config.options.animation = false;
+ }
}
chart.destroy();
});
+ it('should disable animations', function() {
+ const chart = acquireChart({type: 'line', options: {animation: {}}}, {useOffscreenCanvas: true});
+
+ expect(chart.options.animation).toEqual(false);
+
+ chart.destroy();
+ });
+
+
it('supports choosing the BasicPlatform in a web worker', function(done) {
const canvas = document.createElement('canvas');
if (!canvas.transferControlToOffscreen) {
* @returns {boolean} true if the canvas is attached to the platform, false if not.
*/
isAttached(canvas: HTMLCanvasElement): boolean;
+ /**
+ * Updates config with platform specific requirements
+ * @param {ChartConfiguration} config
+ */
+ updateConfig(config: ChartConfiguration): void;
}
export class BasicPlatform extends BasePlatform {}