@chayns-components/core 5.0.0-beta.932 → 5.0.0-beta.933

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.
@@ -9,7 +9,7 @@ const selectFiles = ({
9
9
  type,
10
10
  multiple,
11
11
  maxFileSizeInMB
12
- }) => new Promise(resolve => {
12
+ }) => new Promise((resolve, reject) => {
13
13
  const input = document.createElement('input');
14
14
  input.type = 'file';
15
15
  input.style.visibility = 'none';
@@ -23,8 +23,13 @@ const selectFiles = ({
23
23
  input.multiple = true;
24
24
  }
25
25
  document.body.appendChild(input);
26
- input.addEventListener('change', event => {
26
+ const abortController = new AbortController();
27
+ const {
28
+ signal
29
+ } = abortController;
30
+ const onChange = event => {
27
31
  document.body.removeChild(input);
32
+ abortController.abort();
28
33
  if (!event.target) {
29
34
  resolve([]);
30
35
  return;
@@ -55,6 +60,17 @@ const selectFiles = ({
55
60
  }).open();
56
61
  }
57
62
  resolve(filteredFileArray);
63
+ };
64
+ const onCancel = () => {
65
+ document.body.removeChild(input);
66
+ abortController.abort();
67
+ reject(new Error('File selection was cancelled.'));
68
+ };
69
+ input.addEventListener('change', onChange, {
70
+ signal
71
+ });
72
+ input.addEventListener('focusout', onCancel, {
73
+ signal
58
74
  });
59
75
  input.click();
60
76
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fileDialog.js","names":["_chaynsApi","require","selectFiles","type","multiple","maxFileSizeInMB","Promise","resolve","input","document","createElement","style","visibility","width","height","display","accept","body","appendChild","addEventListener","event","removeChild","target","files","fileArray","Object","values","filteredFileArray","filter","file","sizeInMB","size","includes","length","createDialog","DialogType","ALERT","text","open","click","exports","getFileAsArrayBuffer","reject","reader","FileReader","onload","e","_e$target","result","Error","onerror","readAsArrayBuffer"],"sources":["../../../src/utils/fileDialog.ts"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\n\ninterface SelectFilesOptions {\n type?: string;\n multiple: boolean;\n maxFileSizeInMB?: number;\n}\n\nexport const selectFiles = ({\n type,\n multiple,\n maxFileSizeInMB,\n}: SelectFilesOptions): Promise<File[]> =>\n new Promise((resolve) => {\n const input = document.createElement('input');\n\n input.type = 'file';\n input.style.visibility = 'none';\n input.style.width = '0';\n input.style.height = '0';\n input.style.display = 'none';\n\n if (type !== '*/*' && type) {\n input.accept = type;\n }\n\n if (multiple) {\n input.multiple = true;\n }\n\n document.body.appendChild(input);\n\n input.addEventListener('change', (event) => {\n document.body.removeChild(input);\n\n if (!event.target) {\n resolve([]);\n\n return;\n }\n\n const target = event.target as HTMLInputElement;\n\n const { files } = target;\n\n if (!files) {\n resolve([]);\n\n return;\n }\n\n const fileArray = Object.values(files);\n\n const filteredFileArray = fileArray.filter((file) => {\n const sizeInMB = file.size / 1024 / 1024;\n\n if (maxFileSizeInMB && maxFileSizeInMB < sizeInMB) {\n return false;\n }\n\n if (file.type.includes('video/') && sizeInMB > 500) {\n return false;\n }\n\n return !(file.type.includes('image/') && sizeInMB > 64);\n });\n\n if (fileArray.length !== filteredFileArray.length) {\n void createDialog({\n type: DialogType.ALERT,\n text: 'Einige Deiner ausgewählten Dateien sind zu groß.',\n }).open();\n }\n\n resolve(filteredFileArray);\n });\n\n input.click();\n });\n\nexport const getFileAsArrayBuffer = (file: File): Promise<string | ArrayBuffer> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (e) => {\n if (e.target?.result) {\n resolve(e.target.result);\n } else {\n reject(Error('Could not get array buffer.'));\n }\n };\n\n reader.onerror = reject;\n\n reader.readAsArrayBuffer(file);\n });\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAQO,MAAMC,WAAW,GAAGA,CAAC;EACxBC,IAAI;EACJC,QAAQ;EACRC;AACgB,CAAC,KACjB,IAAIC,OAAO,CAAEC,OAAO,IAAK;EACrB,MAAMC,KAAK,GAAGC,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;EAE7CF,KAAK,CAACL,IAAI,GAAG,MAAM;EACnBK,KAAK,CAACG,KAAK,CAACC,UAAU,GAAG,MAAM;EAC/BJ,KAAK,CAACG,KAAK,CAACE,KAAK,GAAG,GAAG;EACvBL,KAAK,CAACG,KAAK,CAACG,MAAM,GAAG,GAAG;EACxBN,KAAK,CAACG,KAAK,CAACI,OAAO,GAAG,MAAM;EAE5B,IAAIZ,IAAI,KAAK,KAAK,IAAIA,IAAI,EAAE;IACxBK,KAAK,CAACQ,MAAM,GAAGb,IAAI;EACvB;EAEA,IAAIC,QAAQ,EAAE;IACVI,KAAK,CAACJ,QAAQ,GAAG,IAAI;EACzB;EAEAK,QAAQ,CAACQ,IAAI,CAACC,WAAW,CAACV,KAAK,CAAC;EAEhCA,KAAK,CAACW,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;IACxCX,QAAQ,CAACQ,IAAI,CAACI,WAAW,CAACb,KAAK,CAAC;IAEhC,IAAI,CAACY,KAAK,CAACE,MAAM,EAAE;MACff,OAAO,CAAC,EAAE,CAAC;MAEX;IACJ;IAEA,MAAMe,MAAM,GAAGF,KAAK,CAACE,MAA0B;IAE/C,MAAM;MAAEC;IAAM,CAAC,GAAGD,MAAM;IAExB,IAAI,CAACC,KAAK,EAAE;MACRhB,OAAO,CAAC,EAAE,CAAC;MAEX;IACJ;IAEA,MAAMiB,SAAS,GAAGC,MAAM,CAACC,MAAM,CAACH,KAAK,CAAC;IAEtC,MAAMI,iBAAiB,GAAGH,SAAS,CAACI,MAAM,CAAEC,IAAI,IAAK;MACjD,MAAMC,QAAQ,GAAGD,IAAI,CAACE,IAAI,GAAG,IAAI,GAAG,IAAI;MAExC,IAAI1B,eAAe,IAAIA,eAAe,GAAGyB,QAAQ,EAAE;QAC/C,OAAO,KAAK;MAChB;MAEA,IAAID,IAAI,CAAC1B,IAAI,CAAC6B,QAAQ,CAAC,QAAQ,CAAC,IAAIF,QAAQ,GAAG,GAAG,EAAE;QAChD,OAAO,KAAK;MAChB;MAEA,OAAO,EAAED,IAAI,CAAC1B,IAAI,CAAC6B,QAAQ,CAAC,QAAQ,CAAC,IAAIF,QAAQ,GAAG,EAAE,CAAC;IAC3D,CAAC,CAAC;IAEF,IAAIN,SAAS,CAACS,MAAM,KAAKN,iBAAiB,CAACM,MAAM,EAAE;MAC/C,KAAK,IAAAC,uBAAY,EAAC;QACd/B,IAAI,EAAEgC,qBAAU,CAACC,KAAK;QACtBC,IAAI,EAAE;MACV,CAAC,CAAC,CAACC,IAAI,CAAC,CAAC;IACb;IAEA/B,OAAO,CAACoB,iBAAiB,CAAC;EAC9B,CAAC,CAAC;EAEFnB,KAAK,CAAC+B,KAAK,CAAC,CAAC;AACjB,CAAC,CAAC;AAACC,OAAA,CAAAtC,WAAA,GAAAA,WAAA;AAEA,MAAMuC,oBAAoB,GAAIZ,IAAU,IAC3C,IAAIvB,OAAO,CAAC,CAACC,OAAO,EAAEmC,MAAM,KAAK;EAC7B,MAAMC,MAAM,GAAG,IAAIC,UAAU,CAAC,CAAC;EAE/BD,MAAM,CAACE,MAAM,GAAIC,CAAC,IAAK;IAAA,IAAAC,SAAA;IACnB,KAAAA,SAAA,GAAID,CAAC,CAACxB,MAAM,cAAAyB,SAAA,eAARA,SAAA,CAAUC,MAAM,EAAE;MAClBzC,OAAO,CAACuC,CAAC,CAACxB,MAAM,CAAC0B,MAAM,CAAC;IAC5B,CAAC,MAAM;MACHN,MAAM,CAACO,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD;EACJ,CAAC;EAEDN,MAAM,CAACO,OAAO,GAAGR,MAAM;EAEvBC,MAAM,CAACQ,iBAAiB,CAACtB,IAAI,CAAC;AAClC,CAAC,CAAC;AAACW,OAAA,CAAAC,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"file":"fileDialog.js","names":["_chaynsApi","require","selectFiles","type","multiple","maxFileSizeInMB","Promise","resolve","reject","input","document","createElement","style","visibility","width","height","display","accept","body","appendChild","abortController","AbortController","signal","onChange","event","removeChild","abort","target","files","fileArray","Object","values","filteredFileArray","filter","file","sizeInMB","size","includes","length","createDialog","DialogType","ALERT","text","open","onCancel","Error","addEventListener","click","exports","getFileAsArrayBuffer","reader","FileReader","onload","e","_e$target","result","onerror","readAsArrayBuffer"],"sources":["../../../src/utils/fileDialog.ts"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\n\ninterface SelectFilesOptions {\n type?: string;\n multiple: boolean;\n maxFileSizeInMB?: number;\n}\n\nexport const selectFiles = ({\n type,\n multiple,\n maxFileSizeInMB,\n }: SelectFilesOptions): Promise<File[]> =>\n new Promise((resolve, reject) => {\n const input = document.createElement('input');\n\n input.type = 'file';\n input.style.visibility = 'none';\n input.style.width = '0';\n input.style.height = '0';\n input.style.display = 'none';\n\n if (type !== '*/*' && type) {\n input.accept = type;\n }\n\n if (multiple) {\n input.multiple = true;\n }\n\n document.body.appendChild(input);\n\n const abortController = new AbortController();\n const { signal } = abortController;\n\n const onChange = (event: Event) => {\n document.body.removeChild(input);\n abortController.abort();\n\n if (!event.target) {\n resolve([]);\n return;\n }\n\n const target = event.target as HTMLInputElement;\n const { files } = target;\n\n if (!files) {\n resolve([]);\n return;\n }\n\n const fileArray = Object.values(files);\n\n const filteredFileArray = fileArray.filter((file) => {\n const sizeInMB = file.size / 1024 / 1024;\n\n if (maxFileSizeInMB && maxFileSizeInMB < sizeInMB) {\n return false;\n }\n\n if (file.type.includes('video/') && sizeInMB > 500) {\n return false;\n }\n\n return !(file.type.includes('image/') && sizeInMB > 64);\n });\n\n if (fileArray.length !== filteredFileArray.length) {\n void createDialog({\n type: DialogType.ALERT,\n text: 'Einige Deiner ausgewählten Dateien sind zu groß.',\n }).open();\n }\n\n resolve(filteredFileArray);\n };\n\n const onCancel = () => {\n document.body.removeChild(input);\n abortController.abort();\n reject(new Error('File selection was cancelled.'));\n };\n\n input.addEventListener('change', onChange, { signal });\n input.addEventListener('focusout', onCancel, { signal });\n\n input.click();\n });\n\nexport const getFileAsArrayBuffer = (file: File): Promise<string | ArrayBuffer> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (e) => {\n if (e.target?.result) {\n resolve(e.target.result);\n } else {\n reject(Error('Could not get array buffer.'));\n }\n };\n\n reader.onerror = reject;\n\n reader.readAsArrayBuffer(file);\n });\n"],"mappings":"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","ignoreList":[]}
@@ -5,7 +5,7 @@ export const selectFiles = _ref => {
5
5
  multiple,
6
6
  maxFileSizeInMB
7
7
  } = _ref;
8
- return new Promise(resolve => {
8
+ return new Promise((resolve, reject) => {
9
9
  const input = document.createElement('input');
10
10
  input.type = 'file';
11
11
  input.style.visibility = 'none';
@@ -19,8 +19,13 @@ export const selectFiles = _ref => {
19
19
  input.multiple = true;
20
20
  }
21
21
  document.body.appendChild(input);
22
- input.addEventListener('change', event => {
22
+ const abortController = new AbortController();
23
+ const {
24
+ signal
25
+ } = abortController;
26
+ const onChange = event => {
23
27
  document.body.removeChild(input);
28
+ abortController.abort();
24
29
  if (!event.target) {
25
30
  resolve([]);
26
31
  return;
@@ -51,6 +56,17 @@ export const selectFiles = _ref => {
51
56
  }).open();
52
57
  }
53
58
  resolve(filteredFileArray);
59
+ };
60
+ const onCancel = () => {
61
+ document.body.removeChild(input);
62
+ abortController.abort();
63
+ reject(new Error('File selection was cancelled.'));
64
+ };
65
+ input.addEventListener('change', onChange, {
66
+ signal
67
+ });
68
+ input.addEventListener('focusout', onCancel, {
69
+ signal
54
70
  });
55
71
  input.click();
56
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fileDialog.js","names":["createDialog","DialogType","selectFiles","_ref","type","multiple","maxFileSizeInMB","Promise","resolve","input","document","createElement","style","visibility","width","height","display","accept","body","appendChild","addEventListener","event","removeChild","target","files","fileArray","Object","values","filteredFileArray","filter","file","sizeInMB","size","includes","length","ALERT","text","open","click","getFileAsArrayBuffer","reject","reader","FileReader","onload","e","result","Error","onerror","readAsArrayBuffer"],"sources":["../../../src/utils/fileDialog.ts"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\n\ninterface SelectFilesOptions {\n type?: string;\n multiple: boolean;\n maxFileSizeInMB?: number;\n}\n\nexport const selectFiles = ({\n type,\n multiple,\n maxFileSizeInMB,\n}: SelectFilesOptions): Promise<File[]> =>\n new Promise((resolve) => {\n const input = document.createElement('input');\n\n input.type = 'file';\n input.style.visibility = 'none';\n input.style.width = '0';\n input.style.height = '0';\n input.style.display = 'none';\n\n if (type !== '*/*' && type) {\n input.accept = type;\n }\n\n if (multiple) {\n input.multiple = true;\n }\n\n document.body.appendChild(input);\n\n input.addEventListener('change', (event) => {\n document.body.removeChild(input);\n\n if (!event.target) {\n resolve([]);\n\n return;\n }\n\n const target = event.target as HTMLInputElement;\n\n const { files } = target;\n\n if (!files) {\n resolve([]);\n\n return;\n }\n\n const fileArray = Object.values(files);\n\n const filteredFileArray = fileArray.filter((file) => {\n const sizeInMB = file.size / 1024 / 1024;\n\n if (maxFileSizeInMB && maxFileSizeInMB < sizeInMB) {\n return false;\n }\n\n if (file.type.includes('video/') && sizeInMB > 500) {\n return false;\n }\n\n return !(file.type.includes('image/') && sizeInMB > 64);\n });\n\n if (fileArray.length !== filteredFileArray.length) {\n void createDialog({\n type: DialogType.ALERT,\n text: 'Einige Deiner ausgewählten Dateien sind zu groß.',\n }).open();\n }\n\n resolve(filteredFileArray);\n });\n\n input.click();\n });\n\nexport const getFileAsArrayBuffer = (file: File): Promise<string | ArrayBuffer> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (e) => {\n if (e.target?.result) {\n resolve(e.target.result);\n } else {\n reject(Error('Could not get array buffer.'));\n }\n };\n\n reader.onerror = reject;\n\n reader.readAsArrayBuffer(file);\n });\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fileDialog.js","names":["createDialog","DialogType","selectFiles","_ref","type","multiple","maxFileSizeInMB","Promise","resolve","reject","input","document","createElement","style","visibility","width","height","display","accept","body","appendChild","abortController","AbortController","signal","onChange","event","removeChild","abort","target","files","fileArray","Object","values","filteredFileArray","filter","file","sizeInMB","size","includes","length","ALERT","text","open","onCancel","Error","addEventListener","click","getFileAsArrayBuffer","reader","FileReader","onload","e","result","onerror","readAsArrayBuffer"],"sources":["../../../src/utils/fileDialog.ts"],"sourcesContent":["import { createDialog, DialogType } from 'chayns-api';\n\ninterface SelectFilesOptions {\n type?: string;\n multiple: boolean;\n maxFileSizeInMB?: number;\n}\n\nexport const selectFiles = ({\n type,\n multiple,\n maxFileSizeInMB,\n }: SelectFilesOptions): Promise<File[]> =>\n new Promise((resolve, reject) => {\n const input = document.createElement('input');\n\n input.type = 'file';\n input.style.visibility = 'none';\n input.style.width = '0';\n input.style.height = '0';\n input.style.display = 'none';\n\n if (type !== '*/*' && type) {\n input.accept = type;\n }\n\n if (multiple) {\n input.multiple = true;\n }\n\n document.body.appendChild(input);\n\n const abortController = new AbortController();\n const { signal } = abortController;\n\n const onChange = (event: Event) => {\n document.body.removeChild(input);\n abortController.abort();\n\n if (!event.target) {\n resolve([]);\n return;\n }\n\n const target = event.target as HTMLInputElement;\n const { files } = target;\n\n if (!files) {\n resolve([]);\n return;\n }\n\n const fileArray = Object.values(files);\n\n const filteredFileArray = fileArray.filter((file) => {\n const sizeInMB = file.size / 1024 / 1024;\n\n if (maxFileSizeInMB && maxFileSizeInMB < sizeInMB) {\n return false;\n }\n\n if (file.type.includes('video/') && sizeInMB > 500) {\n return false;\n }\n\n return !(file.type.includes('image/') && sizeInMB > 64);\n });\n\n if (fileArray.length !== filteredFileArray.length) {\n void createDialog({\n type: DialogType.ALERT,\n text: 'Einige Deiner ausgewählten Dateien sind zu groß.',\n }).open();\n }\n\n resolve(filteredFileArray);\n };\n\n const onCancel = () => {\n document.body.removeChild(input);\n abortController.abort();\n reject(new Error('File selection was cancelled.'));\n };\n\n input.addEventListener('change', onChange, { signal });\n input.addEventListener('focusout', onCancel, { signal });\n\n input.click();\n });\n\nexport const getFileAsArrayBuffer = (file: File): Promise<string | ArrayBuffer> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (e) => {\n if (e.target?.result) {\n resolve(e.target.result);\n } else {\n reject(Error('Could not get array buffer.'));\n }\n };\n\n reader.onerror = reject;\n\n reader.readAsArrayBuffer(file);\n });\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/core",
3
- "version": "5.0.0-beta.932",
3
+ "version": "5.0.0-beta.933",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -87,5 +87,5 @@
87
87
  "publishConfig": {
88
88
  "access": "public"
89
89
  },
90
- "gitHead": "8aceef4077c0fa44dad040511d148109af8a96e4"
90
+ "gitHead": "9b04996902b926f6ad8f62d08286a40144142eb8"
91
91
  }