@aarsteinmedia/dotlottie-player 2.2.11 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -61,41 +61,37 @@ const addExt = (ext, str)=>{
61
61
  default:
62
62
  return 'xMidYMid meet';
63
63
  }
64
- }, base64ToU8 = (str)=>{
65
- const parsedStr = str.substring(str.indexOf(',') + 1);
66
- return strToU8(isServer() ? Buffer.from(parsedStr, 'base64').toString('binary') : atob(parsedStr));
67
- }, createDotLottie = async (animations, manifest, filename, triggerDownload = true)=>{
64
+ }, base64ToU8 = (str)=>fflate.strToU8(isServer() ? Buffer.from(parseBase64(str), 'base64').toString('binary') : atob(parseBase64(str)), true), createDotLottie = async (animations, manifest, filename, triggerDownload = true)=>{
68
65
  try {
69
66
  if (!animations?.length || !manifest) {
70
67
  throw new Error(`Missing or malformed required parameter(s):\n ${!animations?.length ? '- animations\n' : ''} ${!manifest ? '- manifest \n' : ''}`);
71
68
  }
72
69
  const name = addExt('lottie', filename) || `${useId()}.lottie`, dotlottie = {
73
70
  'manifest.json': [
74
- strToU8(JSON.stringify(manifest)),
71
+ fflate.strToU8(JSON.stringify(manifest), true),
75
72
  {
76
73
  level: 0
77
74
  }
78
75
  ]
79
76
  };
80
77
  for (const [i, animation] of animations.entries()){
81
- if (animation.assets?.length) {
82
- for (const asset of animation.assets){
83
- const { id, p } = asset;
84
- if (id && p) {
85
- const ext = getExtFromB64(p);
86
- asset.p = `${id}.${ext}`;
87
- asset.e = 0;
88
- dotlottie[`images/${id}.${ext}`] = [
89
- base64ToU8(p),
90
- {
91
- level: 9
92
- }
93
- ];
94
- }
78
+ for (const asset of animation.assets ?? []){
79
+ if (!asset.p || !isImage(asset) && !isAudio(asset)) {
80
+ continue;
95
81
  }
82
+ const { p: file, u: path } = asset, assetId = asset.id || useId(), isEncoded = file.startsWith('data:'), ext = isEncoded ? getExtFromB64(file) : getExt(file), dataURL = isEncoded ? file : await fileToBase64(path ? path.endsWith('/') && `${path}${file}` || `${path}/${file}` : file);
83
+ asset.p = `${assetId}.${ext}`;
84
+ asset.u = '';
85
+ asset.e = 1;
86
+ dotlottie[`${isAudio(asset) ? 'audio' : 'images'}/${assetId}.${ext}`] = [
87
+ base64ToU8(dataURL),
88
+ {
89
+ level: 9
90
+ }
91
+ ];
96
92
  }
97
93
  dotlottie[`animations/${manifest.animations[i].id}.json`] = [
98
- strToU8(JSON.stringify(animation)),
94
+ fflate.strToU8(JSON.stringify(animation), true),
99
95
  {
100
96
  level: 9
101
97
  }
@@ -124,20 +120,23 @@ const addExt = (ext, str)=>{
124
120
  link.remove();
125
121
  URL.revokeObjectURL(dataURL);
126
122
  }, 1000);
127
- }, handleErrors = (err)=>{
128
- const res = {
129
- message: 'Unknown error',
130
- status: isServer() ? 500 : 400
131
- };
132
- if (err && typeof err === 'object') {
133
- if ('message' in err && typeof err.message === 'string') {
134
- res.message = err.message;
135
- }
136
- if ('status' in err) {
137
- res.status = Number(err.status);
123
+ }, fileToBase64 = async (url)=>{
124
+ const response = await fetch(url), blob = await response.blob();
125
+ return new Promise((resolve, reject)=>{
126
+ try {
127
+ const reader = new FileReader();
128
+ reader.onload = ()=>{
129
+ if (typeof reader.result === 'string') {
130
+ resolve(reader.result);
131
+ return;
132
+ }
133
+ reject();
134
+ };
135
+ reader.readAsDataURL(blob);
136
+ } catch (e) {
137
+ reject(e);
138
138
  }
139
- }
140
- return res;
139
+ });
141
140
  }, frameOutput = (frame)=>((frame ?? 0) + 1).toString().padStart(3, '0'), getAnimationData = async (input)=>{
142
141
  try {
143
142
  if (!input || typeof input !== 'string' && typeof input !== 'object') {
@@ -149,7 +148,8 @@ const addExt = (ext, str)=>{
149
148
  ];
150
149
  return {
151
150
  animations,
152
- manifest: null
151
+ manifest: null,
152
+ isDotLottie: false
153
153
  };
154
154
  }
155
155
  const result = await fetch(input);
@@ -166,7 +166,8 @@ const addExt = (ext, str)=>{
166
166
  animations: [
167
167
  lottie
168
168
  ],
169
- manifest: null
169
+ manifest: null,
170
+ isDotLottie: false
170
171
  };
171
172
  }
172
173
  const text = await result.clone().text();
@@ -176,9 +177,12 @@ const addExt = (ext, str)=>{
176
177
  animations: [
177
178
  lottie
178
179
  ],
179
- manifest: null
180
+ manifest: null,
181
+ isDotLottie: false
180
182
  };
181
- } catch {}
183
+ } catch (e) {
184
+ console.warn(e);
185
+ }
182
186
  }
183
187
  const { data, manifest } = await getLottieJSON(result);
184
188
  return {
@@ -190,7 +194,8 @@ const addExt = (ext, str)=>{
190
194
  console.error(`❌ ${handleErrors(err).message}`);
191
195
  return {
192
196
  animations: null,
193
- manifest: null
197
+ manifest: null,
198
+ isDotLottie: false
194
199
  };
195
200
  }
196
201
  }, getArrayBuffer = async (zippable)=>{
@@ -214,14 +219,15 @@ const addExt = (ext, str)=>{
214
219
  return mime.split('/')[1].split('+')[0];
215
220
  }, getFilename = (src, keepExt)=>{
216
221
  const ext = getExt(src);
217
- return `${src.replace(/\.[^.]*$/, '').replace(/\W+/g, '')}${keepExt && ext ? `.${ext}` : ''}`.toLowerCase();
222
+ return `${src.split('/').pop()?.replace(/\.[^.]*$/, '').replace(/\W+/g, '')}${keepExt && ext ? `.${ext}` : ''}`;
218
223
  }, getLottieJSON = async (resp)=>{
219
- const unzipped = await unzip(resp), manifest = getManifest(unzipped), data = [];
224
+ const unzipped = await unzip(resp), manifest = getManifest(unzipped), data = [], toResolve = [];
220
225
  for (const { id } of manifest.animations){
221
226
  const str = fflate.strFromU8(unzipped[`animations/${id}.json`]), lottie = JSON.parse(str);
222
- await resolveAssets(unzipped, lottie.assets);
227
+ toResolve.push(resolveAssets(unzipped, lottie.assets));
223
228
  data.push(lottie);
224
229
  }
230
+ await Promise.all(toResolve);
225
231
  return {
226
232
  data,
227
233
  manifest
@@ -250,16 +256,28 @@ const addExt = (ext, str)=>{
250
256
  default:
251
257
  return '';
252
258
  }
259
+ }, handleErrors = (err)=>{
260
+ const res = {
261
+ message: 'Unknown error',
262
+ status: isServer() ? 500 : 400
263
+ };
264
+ if (err && typeof err === 'object') {
265
+ if ('message' in err && typeof err.message === 'string') {
266
+ res.message = err.message;
267
+ }
268
+ if ('status' in err) {
269
+ res.status = Number(err.status);
270
+ }
271
+ }
272
+ return res;
253
273
  }, hasExt = (path)=>{
254
274
  const lastDotIndex = path?.split('/').pop()?.lastIndexOf('.');
255
275
  return (lastDotIndex ?? 0) > 1 && path && path.length - 1 > (lastDotIndex ?? 0);
256
- }, isAudio = (asset)=>!('h' in asset) && !('w' in asset) && 'p' in asset && 'e' in asset && 'u' in asset && 'id' in asset, isImage = (asset)=>'w' in asset && 'h' in asset && !('xt' in asset) && 'p' in asset, isServer = ()=>!(typeof window !== 'undefined' && window.document), strToU8 = (str)=>{
257
- const u8 = new Uint8Array(str.length);
258
- for(let i = 0; i < str.length; i++){
259
- u8[i] = str.charCodeAt(i);
260
- }
261
- return u8;
262
- }, resolveAssets = async (unzipped, assets)=>{
276
+ }, isAudio = (asset)=>!('h' in asset) && !('w' in asset) && 'p' in asset && 'e' in asset && 'u' in asset && 'id' in asset, isBase64 = (str)=>{
277
+ if (!str) return false;
278
+ const regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
279
+ return regex.test(parseBase64(str));
280
+ }, isImage = (asset)=>'w' in asset && 'h' in asset && !('xt' in asset) && 'p' in asset, isServer = ()=>!(typeof window !== 'undefined' && window.document), parseBase64 = (str)=>str.substring(str.indexOf(',') + 1), resolveAssets = async (unzipped, assets)=>{
263
281
  if (!Array.isArray(assets)) return;
264
282
  const toResolve = [];
265
283
  for (const asset of assets){
@@ -267,8 +285,8 @@ const addExt = (ext, str)=>{
267
285
  const type = isImage(asset) ? 'images' : 'audio', u8 = unzipped?.[`${type}/${asset.p}`];
268
286
  if (!u8) continue;
269
287
  toResolve.push(new Promise((resolveAsset)=>{
270
- const assetB64 = isServer() ? Buffer.from(u8).toString('base64') : btoa(u8.reduce((dat, byte)=>dat + String.fromCharCode(byte), ''));
271
- asset.p = `data:${getMimeFromExt(getExt(asset.p))};base64,${assetB64}`;
288
+ const assetB64 = isServer() ? Buffer.from(u8).toString('base64') : btoa(u8.reduce((dat, byte)=>`${dat}${String.fromCharCode(byte)}`, ''));
289
+ asset.p = asset.p?.startsWith('data:') || isBase64(asset.p) ? asset.p : `data:${getMimeFromExt(getExt(asset.p))};base64,${assetB64}`;
272
290
  asset.e = 1;
273
291
  asset.u = '';
274
292
  resolveAsset();
@@ -292,7 +310,7 @@ const addExt = (ext, str)=>{
292
310
  return `${prefix ?? `:${s4()}`}-${s4()}`;
293
311
  };
294
312
 
295
- var name="@aarsteinmedia/dotlottie-player";var version="2.2.11";var description="Web Component for playing Lottie animations in your web app. Previously @johanaarstein/dotlottie-player";var exports$1={".":{"import":"./dist/esm/index.js",node:"./dist/esm/index.js",require:"./dist/cjs/index.js",types:"./dist/index.d.ts"}};var main="./dist/esm/index.js";var unpkg="./dist/index.js";var module$1="./dist/esm/index.js";var types="./dist/index.d.ts";var type="module";var homepage="https://www.aarstein.media/en/dotlottie-player";var repository={url:"https://github.com/aarsteinmedia/dotlottie-player.git",type:"git"};var bugs="https://github.com/aarsteinmedia/dotlottie-player/issues";var author={name:"Johan Martin Aarstein",email:"johan@aarstein.media",url:"https://www.aarstein.media",organization:"Aarstein Media"};var license="GPL-2.0-or-later";var scripts={build:"rimraf ./dist && rollup -c","build:types":"rimraf ./types && tsc","build:cem":"npx cem analyze --config 'cem.config.mjs'",prod:"pnpm build:types && pnpm build && pnpm build:cem",dev:"rollup -c -w --environment NODE_ENV:development",lint:"tsc && eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix"};var dependencies={fflate:"^0.8.1",lit:"^2.8.0","lottie-web":"^5.12.2"};var peerDependencies={"@types/react":">= 16.0.0"};var devDependencies={"@custom-elements-manifest/analyzer":"^0.6.9","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-replace":"^5.0.5","@swc/core":"^1.3.102","@types/node":"^20.10.6","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0",autoprefixer:"^10.4.16","esbuild-sass-plugin":"^2.16.1",eslint:"^8.56.0","eslint-plugin-lit":"^1.11.0","postcss-flexbugs-fixes":"^5.0.2",rimraf:"^5.0.5",rollup:"^3.29.4","rollup-plugin-dts":"^6.1.0","rollup-plugin-html-literals":"^1.1.8","rollup-plugin-livereload":"^2.0.5","rollup-plugin-postcss":"^4.0.2","rollup-plugin-postcss-lit":"^2.1.0","rollup-plugin-serve":"^1.1.1","rollup-plugin-summary":"^2.0.0","rollup-plugin-swc3":"^0.9.1",sass:"^1.69.6","ts-lit-plugin":"^1.2.1",typescript:"^5.3.3"};var customElements="dist/custom-elements.json";var files=["dist","README.md"];var keywords=["lottie","dotlottie","animation","web component","component","lit-element","svg","vector","player"];var publishConfig={access:"public"};var engines={node:">= 8.17.0"};var funding={type:"paypal",url:"https://www.paypal.com/donate/?hosted_button_id=E7C7DMN8KSQ6A"};var pkg = {name:name,version:version,description:description,exports:exports$1,main:main,unpkg:unpkg,module:module$1,types:types,type:type,homepage:homepage,repository:repository,bugs:bugs,author:author,license:license,scripts:scripts,dependencies:dependencies,peerDependencies:peerDependencies,devDependencies:devDependencies,customElements:customElements,files:files,keywords:keywords,publishConfig:publishConfig,engines:engines,funding:funding};
313
+ var name="@aarsteinmedia/dotlottie-player";var version="2.3.0";var description="Web Component for playing Lottie animations in your web app. Previously @johanaarstein/dotlottie-player";var exports$1={".":{"import":"./dist/esm/index.js",node:"./dist/esm/index.js",require:"./dist/cjs/index.js",types:"./dist/index.d.ts"}};var main="./dist/esm/index.js";var unpkg="./dist/index.js";var module$1="./dist/esm/index.js";var types="./dist/index.d.ts";var type="module";var homepage="https://www.aarstein.media/en/dotlottie-player";var repository={url:"https://github.com/aarsteinmedia/dotlottie-player.git",type:"git"};var bugs="https://github.com/aarsteinmedia/dotlottie-player/issues";var author={name:"Johan Martin Aarstein",email:"johan@aarstein.media",url:"https://www.aarstein.media",organization:"Aarstein Media"};var license="GPL-2.0-or-later";var scripts={build:"rimraf ./dist && rollup -c","build:types":"rimraf ./types && tsc","build:cem":"npx cem analyze --config 'cem.config.mjs'",prod:"pnpm build:types && pnpm build && pnpm build:cem",dev:"rollup -c -w --environment NODE_ENV:development",lint:"tsc && eslint . --ext .ts","lint:fix":"eslint . --ext .ts --fix"};var dependencies={fflate:"^0.8.1",lit:"^2.8.0","lottie-web":"^5.12.2"};var peerDependencies={"@types/react":">= 16.0.0"};var devDependencies={"@custom-elements-manifest/analyzer":"^0.6.9","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-replace":"^5.0.5","@swc/core":"^1.3.102","@types/node":"^20.10.6","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0",autoprefixer:"^10.4.16","esbuild-sass-plugin":"^2.16.1",eslint:"^8.56.0","eslint-plugin-lit":"^1.11.0","postcss-flexbugs-fixes":"^5.0.2",rimraf:"^5.0.5",rollup:"^3.29.4","rollup-plugin-dts":"^6.1.0","rollup-plugin-html-literals":"^1.1.8","rollup-plugin-livereload":"^2.0.5","rollup-plugin-postcss":"^4.0.2","rollup-plugin-postcss-lit":"^2.1.0","rollup-plugin-serve":"^1.1.1","rollup-plugin-summary":"^2.0.0","rollup-plugin-swc3":"^0.9.1",sass:"^1.69.6","ts-lit-plugin":"^1.2.1",typescript:"^5.3.3"};var customElements="dist/custom-elements.json";var files=["dist","README.md"];var keywords=["lottie","dotlottie","animation","web component","component","lit-element","svg","vector","player"];var publishConfig={access:"public"};var engines={node:">= 8.17.0"};var funding={type:"paypal",url:"https://www.paypal.com/donate/?hosted_button_id=E7C7DMN8KSQ6A"};var pkg = {name:name,version:version,description:description,exports:exports$1,main:main,unpkg:unpkg,module:module$1,types:types,type:type,homepage:homepage,repository:repository,bugs:bugs,author:author,license:license,scripts:scripts,dependencies:dependencies,peerDependencies:peerDependencies,devDependencies:devDependencies,customElements:customElements,files:files,keywords:keywords,publishConfig:publishConfig,engines:engines,funding:funding};
296
314
 
297
315
  var css_248z = lit.css`*{box-sizing:border-box}:host{--lottie-player-toolbar-height:35px;--lottie-player-toolbar-background-color:#FFF;--lottie-player-toolbar-icon-color:#000;--lottie-player-toolbar-icon-hover-color:#000;--lottie-player-toolbar-icon-active-color:#4285f4;--lottie-player-seeker-track-color:rgba(0, 0, 0, 0.2);--lottie-player-seeker-thumb-color:#4285f4;--lottie-player-seeker-display:block;display:block;width:100%;height:100%}@media (prefers-color-scheme:dark){:host{--lottie-player-toolbar-background-color:#000;--lottie-player-toolbar-icon-color:#FFF;--lottie-player-toolbar-icon-hover-color:#FFF;--lottie-player-seeker-track-color:rgba(255, 255, 255, 0.6)}}.main{display:flex;flex-direction:column;height:100%;width:100%;margin:0;padding:0}.animation{width:100%;height:100%;display:flex}[data-controls=true] .animation{height:calc(100% - 35px)}.animation-container{position:relative}.popover{position:absolute;right:5px;bottom:40px;background-color:var(--lottie-player-toolbar-background-color);border-radius:5px;padding:10px 15px;border:solid 2px var(--lottie-player-toolbar-icon-color);animation:fadeIn .2s ease-in-out}.popover::before{content:"";right:10px;border:7px solid transparent;border-top-color:transparent;margin-right:-7px;height:0;width:0;position:absolute;pointer-events:none;top:100%;border-top-color:var(--lottie-player-toolbar-icon-color)}.toolbar{display:flex;align-items:center;justify-items:center;background:var(--lottie-player-toolbar-background-color);margin:0;height:35px;padding:5px;border-radius:5px;gap:5px}.toolbar.has-error{pointer-events:none;opacity:.5}.toolbar button{cursor:pointer;fill:var(--lottie-player-toolbar-icon-color);color:var(--lottie-player-toolbar-icon-color);display:flex;background:0 0;border:0;padding:0;outline:0;height:100%;margin:0;align-items:center;gap:5px;opacity:.9}.toolbar button:hover{opacity:1}.toolbar button[data-active=true]{opacity:1;fill:var(--lottie-player-toolbar-icon-active-color)}.toolbar button:disabled{opacity:.5}.toolbar button:focus{outline:0}.toolbar button svg{pointer-events:none}.toolbar button svg>*{fill:inherit}.toolbar button.disabled svg{display:none}.progress-container{position:relative;width:100%}.progress-container.simple{margin-right:12px}.seeker{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0}.seeker::-webkit-slider-runnable-track,.seeker::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;outline:0}progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:0}.seeker{width:100%;height:20px;border-radius:3px;border:0;cursor:pointer;background-color:transparent;display:var(--lottie-player-seeker-display);color:var(--lottie-player-seeker-thumb-color);margin:0;padding:7.5px 0;position:relative;z-index:1}progress{position:absolute;width:100%;height:5px;border-radius:3px;border:0;top:0;left:0;margin:7.5px 0;background-color:var(--lottie-player-seeker-track-color);pointer-events:none}::-moz-progress-bar{background-color:var(--lottie-player-seeker-thumb-color)}::-webkit-progress-inner-element{border-radius:3px;overflow:hidden}::-webkit-slider-runnable-track{background-color:transparent}::-webkit-progress-value{background-color:var(--lottie-player-seeker-thumb-color)}.seeker::-webkit-slider-thumb{height:15px;width:15px;border-radius:50%;border:0;background-color:var(--lottie-player-seeker-thumb-color);cursor:pointer;-webkit-transition:transform .2s ease-in-out;transition:transform .2s ease-in-out;transform:scale(0)}.seeker:focus::-webkit-slider-thumb,.seeker:hover::-webkit-slider-thumb{transform:scale(1)}.seeker::-moz-range-progress{background-color:var(--lottie-player-seeker-thumb-color);height:5px;border-radius:3px}.seeker::-moz-range-thumb{height:15px;width:15px;border-radius:50%;background-color:var(--lottie-player-seeker-thumb-color);border:0;cursor:pointer;-moz-transition:transform .2s ease-in-out;transition:transform .2s ease-in-out;transform:scale(0)}.seeker:focus::-moz-range-thumb,.seeker:hover::-moz-range-thumb{transform:scale(1)}.seeker::-ms-track{width:100%;height:5px;cursor:pointer;background:0 0;border-color:transparent;color:transparent}.seeker::-ms-fill-upper{background:var(--lottie-player-seeker-track-color);border-radius:3px}.seeker::-ms-fill-lower{background-color:var(--lottie-player-seeker-thumb-color);border-radius:3px}.seeker::-ms-thumb{border:0;height:15px;width:15px;border-radius:50%;background:var(--lottie-player-seeker-thumb-color);cursor:pointer;-ms-transition:transform .2s ease-in-out;transition:transform .2s ease-in-out;transform:scale(0)}.seeker:hover::-ms-thumb{transform:scale(1)}.seeker:focus::-ms-thumb{transform:scale(1)}.seeker:focus::-ms-fill-lower,.seeker:focus::-ms-fill-upper{background:var(--lottie-player-seeker-track-color)}.error{display:flex;margin:auto;justify-content:center;height:100%;align-items:center}.error svg{width:100%;height:auto}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}`;
298
316
 
@@ -492,14 +510,15 @@ class DotLottiePlayer extends lit.LitElement {
492
510
  return mandatory.every((field)=>Object.prototype.hasOwnProperty.call(json, field));
493
511
  }
494
512
  async addAnimation(configs, fileName, triggerDownload = true) {
513
+ const { animations: _animations, manifest: _manifest } = await getAnimationData(this.src);
495
514
  try {
496
- const oldManifest = this._manifest || {
515
+ const oldManifest = _manifest || {
497
516
  animations: []
498
517
  };
499
518
  let manifest = {
500
519
  ...oldManifest,
501
520
  generator: pkg.name
502
- }, animations = this._animations || [];
521
+ }, animations = _animations || [];
503
522
  for (const config of configs){
504
523
  const { url } = config, { animations: animationsToAdd } = await getAnimationData(url);
505
524
  if (!animationsToAdd) {
@@ -723,13 +742,13 @@ class DotLottiePlayer extends lit.LitElement {
723
742
  this._currentAnimation--;
724
743
  this._switchInstance(true);
725
744
  }
726
- convert(typeCheck, manifest, animations, fileName, download = true) {
745
+ async convert({ typeCheck, manifest, animations, fileName, download = true }) {
727
746
  if (typeCheck || this._isDotLottie) return;
728
747
  const oldManifest = manifest || this._manifest, newManifest = {
729
748
  ...oldManifest,
730
749
  generator: pkg.name
731
750
  };
732
- return createDotLottie(animations || this._animations, newManifest, `${getFilename(fileName || this.src)}.lottie`, download);
751
+ return createDotLottie(animations || (await getAnimationData(this.src)).animations, newManifest, `${getFilename(fileName || this.src)}.lottie`, download);
733
752
  }
734
753
  static get styles() {
735
754
  return css_248z;
@@ -811,6 +830,7 @@ class DotLottiePlayer extends lit.LitElement {
811
830
  this._onVisibilityChange = this._onVisibilityChange.bind(this);
812
831
  this._mouseEnter = this._mouseEnter.bind(this);
813
832
  this._mouseLeave = this._mouseLeave.bind(this);
833
+ this.convert = this.convert.bind(this);
814
834
  }
815
835
  }
816
836
  _ts_decorate([
@@ -468,7 +468,7 @@
468
468
  {
469
469
  "name": "triggerDownload",
470
470
  "default": "true",
471
- "description": "Whether to trigger a download in the browser.\nIf set to false the function returns an ArrayBuffer. Defaults to true.",
471
+ "description": "Whether to trigger a download in the browser.\nIf set to false the function returns an ArrayBuffer. Defaults to true.\n\nTODO: Rewrite this function so we don't create so many redundant copies of complex objects",
472
472
  "type": {
473
473
  "text": "boolean"
474
474
  }
@@ -687,46 +687,12 @@
687
687
  "privacy": "public",
688
688
  "parameters": [
689
689
  {
690
- "name": "typeCheck",
691
- "optional": true,
690
+ "name": "{\n typeCheck,\n manifest,\n animations,\n fileName,\n download = true\n }",
692
691
  "type": {
693
- "text": "boolean | undefined"
694
- },
695
- "description": "External type safety"
696
- },
697
- {
698
- "name": "manifest",
699
- "optional": true,
700
- "type": {
701
- "text": "LottieManifest | undefined"
702
- },
703
- "description": "Externally added manifest"
704
- },
705
- {
706
- "name": "animations",
707
- "optional": true,
708
- "type": {
709
- "text": "LottieJSON[] | undefined"
710
- },
711
- "description": "Externally added animations"
712
- },
713
- {
714
- "name": "fileName",
715
- "optional": true,
716
- "type": {
717
- "text": "string"
718
- }
719
- },
720
- {
721
- "name": "download",
722
- "default": "true",
723
- "description": "Whether to trigger a download in the browser",
724
- "type": {
725
- "text": "boolean"
692
+ "text": "{\n /** External type safety */\n typeCheck?: boolean,\n\n /** Externally added manifest */\n manifest?: LottieManifest,\n\n /** Externally added animations */\n animations?: LottieJSON[],\n\n fileName?: string,\n\n /** Whether to trigger a download in the browser. Defaults to true */\n download?: boolean\n }"
726
693
  }
727
694
  }
728
- ],
729
- "description": "Convert JSON Lottie to dotLottie"
695
+ ]
730
696
  },
731
697
  {
732
698
  "kind": "method",
@@ -1006,7 +972,7 @@
1006
972
  },
1007
973
  {
1008
974
  "kind": "variable",
1009
- "name": "handleErrors"
975
+ "name": "fileToBase64"
1010
976
  },
1011
977
  {
1012
978
  "kind": "variable",
@@ -1044,6 +1010,10 @@
1044
1010
  "kind": "variable",
1045
1011
  "name": "getMimeFromExt"
1046
1012
  },
1013
+ {
1014
+ "kind": "variable",
1015
+ "name": "handleErrors"
1016
+ },
1047
1017
  {
1048
1018
  "kind": "variable",
1049
1019
  "name": "hasExt"
@@ -1052,6 +1022,10 @@
1052
1022
  "kind": "variable",
1053
1023
  "name": "isAudio"
1054
1024
  },
1025
+ {
1026
+ "kind": "variable",
1027
+ "name": "isBase64"
1028
+ },
1055
1029
  {
1056
1030
  "kind": "variable",
1057
1031
  "name": "isImage"
@@ -1062,7 +1036,7 @@
1062
1036
  },
1063
1037
  {
1064
1038
  "kind": "variable",
1065
- "name": "strToU8"
1039
+ "name": "parseBase64"
1066
1040
  },
1067
1041
  {
1068
1042
  "kind": "variable",
@@ -1128,9 +1102,9 @@
1128
1102
  },
1129
1103
  {
1130
1104
  "kind": "js",
1131
- "name": "handleErrors",
1105
+ "name": "fileToBase64",
1132
1106
  "declaration": {
1133
- "name": "handleErrors",
1107
+ "name": "fileToBase64",
1134
1108
  "module": "src/component/utils.ts"
1135
1109
  }
1136
1110
  },
@@ -1206,6 +1180,14 @@
1206
1180
  "module": "src/component/utils.ts"
1207
1181
  }
1208
1182
  },
1183
+ {
1184
+ "kind": "js",
1185
+ "name": "handleErrors",
1186
+ "declaration": {
1187
+ "name": "handleErrors",
1188
+ "module": "src/component/utils.ts"
1189
+ }
1190
+ },
1209
1191
  {
1210
1192
  "kind": "js",
1211
1193
  "name": "hasExt",
@@ -1222,6 +1204,14 @@
1222
1204
  "module": "src/component/utils.ts"
1223
1205
  }
1224
1206
  },
1207
+ {
1208
+ "kind": "js",
1209
+ "name": "isBase64",
1210
+ "declaration": {
1211
+ "name": "isBase64",
1212
+ "module": "src/component/utils.ts"
1213
+ }
1214
+ },
1225
1215
  {
1226
1216
  "kind": "js",
1227
1217
  "name": "isImage",
@@ -1240,9 +1230,9 @@
1240
1230
  },
1241
1231
  {
1242
1232
  "kind": "js",
1243
- "name": "strToU8",
1233
+ "name": "parseBase64",
1244
1234
  "declaration": {
1245
- "name": "strToU8",
1235
+ "name": "parseBase64",
1246
1236
  "module": "src/component/utils.ts"
1247
1237
  }
1248
1238
  },