@jinming6/ming-tool
Version:
Front-end tool library
2 lines (1 loc) • 4.79 kB
JavaScript
import{i as t,a as e,b as n,c as r,d as a,e as o}from"./chunks/vendor-CmaBeCR6.js";function i(t){console.warn(`[@jinming6/ming-tool warn] ${t}`)}const l="--",u=",";function c(t,e=l){return null==t||""===t?e:t}function s(r){t(r)||i("options必须是一个对象");const{addressStr:a,needSplit:o=!0,splitFlag:l=u,needJoin:c=!0,joinFlag:s=u,extraStrArr:d=[]}=r;if(!e(a))return i("addressStr必须是一个字符串"),a;let f=[];return o&&(f=a.split(l).filter((t=>""!==t))),n(d)?f.push(...d):i("extraStrArr必须是一个数组"),c?f.join(s):f}const d={label:"label",value:"value"};class f{constructor(e){this.dataSource=[],this.fieldsName=d;const{dataSource:a,fieldsName:o}=e;this.dataSource=n(a)?r(a):[],this.fieldsName=t(o)?o:d}get options(){return this.dataSource}get labelMap(){const t={};return this.dataSource.forEach((e=>{if(this.fieldsName.value in e&&this.fieldsName.label in e){const n=e[this.fieldsName.value],r=e[this.fieldsName.label];t[n]=r}})),t}getLabel(e){t(e)||i("getLabel的参数必须是一个对象");const{key:n,allowReplaceEmpty:r=!1,replaceStr:a=l}=e,o=this.labelMap[n];return r?c(o,a):o}update(e){t(e)||i("update的参数必须是一个对象");const{dataSource:a,fieldsName:o}=e;n(a)&&(this.dataSource=r(a)),t(o)&&(this.fieldsName=o)}}var h,m;function p(t,e){try{const n=new Blob([t],{type:"application/octet-stream"}),r=URL.createObjectURL(n),a=document.createElement("a");return a.href=r,a.download=e,a.target="_blank",a.click(),URL.revokeObjectURL(r),!0}catch(t){return i(`下载文件流失败 ${t.message}`),!1}}function b(t,e=.8){return new Promise(((n,r)=>{if(!t.type.startsWith("image/"))return void r(new Error("不是图片类型"));if("image/webp"===t.type)return void n(t);const a=window.URL.createObjectURL(t),o=new window.Image;o.src=a,o.onload=()=>{const t=document.createElement("canvas");t.width=o.width,t.height=o.height;const i=t.getContext("2d");if(null===i)return r(new Error("无法获取canvas上下文")),void window.URL.revokeObjectURL(a);i.drawImage(o,0,0,o.width,o.height),t.toBlob((t=>{if(null==t)return r(new Error("无法获取blob对象")),void window.URL.revokeObjectURL(a);n(t),window.URL.revokeObjectURL(a)}),"image/webp",e)},o.onerror=t=>{r(t),window.URL.revokeObjectURL(a)}}))}function g(t,e){try{const n=document.createElement("a");return n.href=t,n.setAttribute("download",e),n.target="_blank",n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),!0}catch(t){return i(`下载文件失败 ${t.message}`),!1}}function w(t){const{inputType:n=h.URL,filename:r,url:o,arrayBuffer:l}=t;return e(r)?n===h.ArrayBuffer?a(l)?p(l,r):(i("arrayBuffer 不能为空"),!1):e(o)?g(o,r):(i("url 不能为空"),!1):(i("filename 不能为空"),!1)}function R(t){const{type:n=h.URL,filename:r,dataSource:o}=t;return e(r)?n===h.ArrayBuffer?a(o)?p(o,r):(i("dataSource 不能为空"),!1):e(o)?g(o,r):(i("dataSource 不能为空"),!1):(i("filename 不能为空"),!1)}!function(t){t.ArrayBuffer="arrayBuffer",t.URL="url"}(h||(h={})),function(t){t.RGB="rgb",t.HEX="hex"}(m||(m={}));const y=()=>{const t=()=>Math.floor(256*Math.random());return`rgb(${t()}, ${t()}, ${t()})`},S=()=>{const t=()=>Math.floor(256*Math.random()).toString(16);return`#${t()}${t()}${t()}`},L=t=>{const{type:e,lightColor:n}=t,r=null!=n&&n?256:201,a=()=>Math.floor(Math.random()*r);if(e===m.RGB)return`rgb(${a()}, ${a()}, ${a()})`;const o=()=>a().toString(16);return`#${o()}${o()}${o()}`};function v(t){if(!e(t)||""===t)return i("url为空"),"";const n=t.split("/");return n[n.length-1]}function U(t,n=!0,r=decodeURIComponent){if(!e(t))return null;const a=t.match(/filename\*=[^;]+/);if(null!=a){const t=a[0].split("'");if(3===t.length)return n?r(t[2]):t[2]}const o=t.match(/filename="([^"]+)"/);if(null!=o)return n?r(o[1]):o[1];const i=t.match(/filename=([^;]+)/);return null!=i?n?r(i[1]):i[1]:null}const $={startDate:"startDate",endDate:"endDate"};function j(t){return e(t)||o(t)}function k(e){if(!t(e))return i("options必须是一个对象"),{};const{dateRange:r,outStartField:a=$.startDate,outEndField:o=$.endDate,defaultValue:l=null}=e,u={[a]:l,[o]:l};return n(r)&&2===r.length?(u[a]=r[0],u[o]=r[1],u):u}function E(e){const n=[];if(!t(e))return i("options必须是一个对象"),n;const{obj:r,inStartField:a=$.startDate,inEndField:o=$.endDate}=e;if(!t(r))return i("obj必须是一个对象"),n;const l=r[a],u=r[o];return j(l)&&j(u)?(n.push(l),n.push(u),n):n}export{d as DefaultFieldsName,l as DefaultReplaceStr,u as DefaultSplitStr,f as Option,E as combineDateRange,b as convert2Webp,p as downloadArrayBuffer,w as downloadFile,R as downloadFileV2,g as downloadUrl,s as fmtAddressStr,U as getFilenameFromDisposition,v as getFilenameFromUrl,L as getRandomColor,S as getRandomHex,y as getRandomRgb,c as replaceEmpty,k as splitDateRange};