import Ember from 'ember';
import hbs from 'htmlbars-inline-precompile';
const { computed } = Ember;
export default Ember.Component.extend({
layout: hbs`{{actionText}}`,
tagName: 'a',
role: 'button',
attributeBindings: ['role', 'download', 'href'],
download: computed('filename', 'extension', function() {
return `${this.get('filename')}-${new Date().toISOString()}.${this.get('extension')}`;
}),
href: computed('data', 'mime', 'stringify', function() {
let data = this.get('data');
const mime = this.get('mime');
if (this.get('stringify')) {
data = JSON.stringify(data, null, 2);
}
const file = new File([data], { type: mime });
return window.URL.createObjectURL(file);
}),
actionText: 'Download',
data: null,
filename: null,
mime: 'text/plain',
extension: 'txt',
stringify: false,
});