@bestime/utils_browser 1.0.6 → 1.0.8
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/{jUtilsBrowser.esm.d.ts → esm/index.d.ts} +149 -0
- package/dist/esm/index.min.mjs +5 -0
- package/dist/{jUtilsBrowser.global.d.ts → umd/index.d.ts} +149 -0
- package/dist/umd/index.min.cjs +5 -0
- package/package.json +5 -5
- package/README.md +0 -15
- package/dist/jUtilsBrowser.esm.min.mjs +0 -8
- package/dist/jUtilsBrowser.umd.min.cjs +0 -8
|
@@ -97,6 +97,7 @@ interface LibraryFileConfig {
|
|
|
97
97
|
dependencies?: LibraryFileConfig[];
|
|
98
98
|
with?: LibraryFileConfig[];
|
|
99
99
|
attribute?: Record<string, string>;
|
|
100
|
+
interceptor?: (libInstence: any) => void;
|
|
100
101
|
}
|
|
101
102
|
type SuccessCallback = (...args: any[]) => void;
|
|
102
103
|
/**
|
|
@@ -178,19 +179,167 @@ declare const _default: {
|
|
|
178
179
|
*/
|
|
179
180
|
declare function getRatio(): number;
|
|
180
181
|
|
|
182
|
+
type Direction = 1 | -1;
|
|
183
|
+
/**
|
|
184
|
+
*
|
|
185
|
+
* @param el DOM元素
|
|
186
|
+
* @param callback 滚动回调
|
|
187
|
+
* @param isPrevent 是否阻止原生滚动,仅用来获取滚动方向
|
|
188
|
+
* @returns
|
|
189
|
+
*/
|
|
190
|
+
declare function export_default$1(
|
|
191
|
+
el: HTMLElement,
|
|
192
|
+
callback: (direction: Direction) => void,
|
|
193
|
+
isPrevent: boolean
|
|
194
|
+
): {
|
|
195
|
+
dispose: () => void;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
type TCallbackHandler = (next: () => void) => void;
|
|
199
|
+
interface IOptions$1 {
|
|
200
|
+
onBottom?: TCallbackHandler;
|
|
201
|
+
onTop?: TCallbackHandler;
|
|
202
|
+
/** Y轴触底、触顶的差值 */
|
|
203
|
+
offetY?: number;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 监听dom滚动到顶部或头部
|
|
207
|
+
* @param el
|
|
208
|
+
* @param config
|
|
209
|
+
*/
|
|
210
|
+
declare function export_default(
|
|
211
|
+
el: HTMLElement,
|
|
212
|
+
config?: IOptions$1
|
|
213
|
+
): {
|
|
214
|
+
/**
|
|
215
|
+
* 销毁
|
|
216
|
+
*/
|
|
217
|
+
dispose: () => void;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
type TElementFullCallback = () => void;
|
|
221
|
+
type TFullScreenActionCallback = (isSuccess: boolean) => void;
|
|
222
|
+
type TElement = HTMLElement & {
|
|
223
|
+
webkitRequestFullScreen?: TElementFullCallback;
|
|
224
|
+
mozRequestFullScreen?: TElementFullCallback;
|
|
225
|
+
msRequestFullscreen?: TElementFullCallback;
|
|
226
|
+
};
|
|
227
|
+
declare function fullScreen(
|
|
228
|
+
element: TElement,
|
|
229
|
+
value: boolean,
|
|
230
|
+
callabck?: TFullScreenActionCallback
|
|
231
|
+
): void;
|
|
232
|
+
|
|
233
|
+
declare function createXLSX(options: {
|
|
234
|
+
pluginUrl: string;
|
|
235
|
+
header: any[];
|
|
236
|
+
body: any[];
|
|
237
|
+
}): Promise<HTMLTableElement>;
|
|
238
|
+
|
|
239
|
+
interface IPluginSrc {
|
|
240
|
+
index: string;
|
|
241
|
+
worker: string;
|
|
242
|
+
}
|
|
243
|
+
declare function pdfToImage(
|
|
244
|
+
url: string,
|
|
245
|
+
canvas: HTMLCanvasElement,
|
|
246
|
+
src?: IPluginSrc
|
|
247
|
+
): Promise<unknown>;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* 动态计算弹出框位置,使之保持在可是范围内。多用于跟随鼠标移动的菜单或信息框
|
|
251
|
+
* @param options - 配置项
|
|
252
|
+
* @returns - 计算后的位置
|
|
253
|
+
*/
|
|
254
|
+
declare function infoContainerPosition(options: {
|
|
255
|
+
/** 需要将容器设置到:坐标X */
|
|
256
|
+
x: number;
|
|
257
|
+
/** 需要将容器设置到:坐标Y */
|
|
258
|
+
y: number;
|
|
259
|
+
/** 容器宽度 */
|
|
260
|
+
width: number;
|
|
261
|
+
/** 容器高度 */
|
|
262
|
+
height: number;
|
|
263
|
+
/** 与目标位置X偏移量。默认 10 */
|
|
264
|
+
offsetX?: number;
|
|
265
|
+
/** 与目标位置Y偏移量。默认 10 */
|
|
266
|
+
offsetY?: number;
|
|
267
|
+
/** 距离视口多少时表示超出可视范围。默认 10*/
|
|
268
|
+
padding?: number;
|
|
269
|
+
mode?: 'top-right';
|
|
270
|
+
}): {
|
|
271
|
+
x: number;
|
|
272
|
+
y: number;
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
interface IOptions {
|
|
276
|
+
text?: string;
|
|
277
|
+
fontSize?: number;
|
|
278
|
+
color?: string;
|
|
279
|
+
reverse?: boolean;
|
|
280
|
+
interval?: number;
|
|
281
|
+
}
|
|
282
|
+
interface IPointItem {
|
|
283
|
+
text: string;
|
|
284
|
+
x: number;
|
|
285
|
+
y: number;
|
|
286
|
+
speed: number;
|
|
287
|
+
}
|
|
288
|
+
declare class TextRainCanvas {
|
|
289
|
+
text: string;
|
|
290
|
+
fontSize: number;
|
|
291
|
+
color: number[];
|
|
292
|
+
reverse: boolean;
|
|
293
|
+
isStop: boolean;
|
|
294
|
+
interval: number;
|
|
295
|
+
width: number;
|
|
296
|
+
height: number;
|
|
297
|
+
textLineHeight: number;
|
|
298
|
+
count: number;
|
|
299
|
+
oCanvas: HTMLCanvasElement;
|
|
300
|
+
ctx: CanvasRenderingContext2D;
|
|
301
|
+
timer: any;
|
|
302
|
+
pointList: {
|
|
303
|
+
currentIndex: number;
|
|
304
|
+
list: IPointItem[];
|
|
305
|
+
}[];
|
|
306
|
+
constructor(oCanvas: HTMLCanvasElement, option?: IOptions);
|
|
307
|
+
draw(): void;
|
|
308
|
+
createColumn(
|
|
309
|
+
x: number,
|
|
310
|
+
y: number
|
|
311
|
+
): {
|
|
312
|
+
currentIndex: number;
|
|
313
|
+
list: IPointItem[];
|
|
314
|
+
};
|
|
315
|
+
dispose(): void;
|
|
316
|
+
start(): void;
|
|
317
|
+
getPointList(): {
|
|
318
|
+
currentIndex: number;
|
|
319
|
+
list: IPointItem[];
|
|
320
|
+
}[];
|
|
321
|
+
}
|
|
322
|
+
|
|
181
323
|
export {
|
|
324
|
+
TextRainCanvas,
|
|
182
325
|
addClass,
|
|
183
326
|
_default as browser,
|
|
327
|
+
createXLSX,
|
|
184
328
|
downloadFileByArrayBuffer,
|
|
185
329
|
downloadFileByUrl,
|
|
330
|
+
fullScreen,
|
|
186
331
|
getCookie,
|
|
187
332
|
getJsFileBaseUrl,
|
|
188
333
|
getRatio,
|
|
189
334
|
getRelativePos,
|
|
190
335
|
getStorage,
|
|
191
336
|
getWindowSize,
|
|
337
|
+
infoContainerPosition,
|
|
192
338
|
libraryFile,
|
|
193
339
|
observeDomResize,
|
|
340
|
+
export_default as observeDomScroll,
|
|
341
|
+
export_default$1 as observeMouseWheel,
|
|
342
|
+
pdfToImage,
|
|
194
343
|
prevent,
|
|
195
344
|
removeClass,
|
|
196
345
|
removeCookie,
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 浏览器工具库 => jUtilsBrowser
|
|
3
|
+
* @update 2024-08-27 10:45:06
|
|
4
|
+
*/
|
|
5
|
+
import{defualtFormatter,isString,variableHasValue,isArray,forEach,_KvPair,_Number,parseTreeToTableHeader,isNull,getRandom}from"@bestime/utils_base";function getWindowSize(){return{width:document.documentElement.clientWidth||document.body.clientWidth||window.innerWidth||0,height:document.documentElement.clientHeight||document.body.clientHeight||window.innerHeight||0}}let htivId=0,idName="",isStart=!1;const records={};let timer;function stop(){isStart=!1,clearInterval(timer),timer=undefined}function startRun(){clearInterval(timer),isStart=!0,timer=setInterval(function(){for(var e in records){const t=records[e];t.current=+new Date,t.current-t.start>=t.interval&&(t.start=t.current,records[e].handler())}},17)}function add(e,t){return idName="HI-"+ ++htivId,records[idName]={start:+new Date,current:0,handler:e,interval:t},isStart||startRun(),idName}function remove(e){delete records[e],0===Object.keys(records).length&&stop()}var hpInterval={add:add,remove:remove};function observeDomResize(n,o,i,e){let r=[0,0,!1],l=[0,0,!1],s=[0,0,!1],a=[0,0,!1];const t=hpInterval.add(c,e=e||500);function c(){if(document.body.contains(n)){let e=!1;var t;i?.includes("position")&&(t=n.getBoundingClientRect(),s[0]=t.left,s[2]=s[0]!==s[1],a[0]=t.top,a[2]=a[0]!==a[1]),r[0]=n.offsetWidth,r[2]=r[0]!==r[1],l[0]=n.offsetHeight,l[2]=l[0]!==l[1],r[2]&&(r[1]=r[0],i?.includes("width")&&(e=!0)),l[2]&&(l[1]=l[0],i?.includes("height")&&(e=!0)),(a[2]||s[2])&&(a[1]=a[0],s[1]=s[0],i?.includes("position")&&(e=!0)),i&&0!==i.length||(r[2]||l[2]||a[2]||s[2])&&(e=!0),e&&o(n)}else u()}function u(){hpInterval.remove(t),r=undefined,l=undefined}return c(),u}function downloadFileByUrl(e,t){const n=document.createElement("a");n.style.display="none",n.download=t,n.setAttribute("href",e),n.setAttribute("target","_blank"),n.setAttribute("download",t),document.body.appendChild(n),n.click(),n.remove()}const $undefinedValue=void 0,$decodeURIComponent=decodeURIComponent,$browserGlobal=window,$headElement=document.getElementsByTagName("head")[0];function downloadFileByArrayBuffer(e,t){const n=$browserGlobal.URL;e=n.createObjectURL(new Blob([e]));downloadFileByUrl(e,t),n.revokeObjectURL(e),undefined}function removeElement(e){e.parentNode&&e.parentNode.removeChild(e)}function prevent(e,t,n){e=e||$browserGlobal.event,n=!1!==n,(t=!1!==t)&&$browserGlobal.event?$browserGlobal.event.cancelBubble=!0:e.stopPropagation(),n&&$browserGlobal.event?$browserGlobal.event.returnValue=!1:e.preventDefault()}function getStorage(e){e=localStorage.getItem(e);return defualtFormatter("",e)}function removeStorage(e){localStorage.removeItem(e)}function hpSetStringValue(e){return e=isString(e)?e:JSON.stringify(e)}function setStorage(e,t){localStorage.setItem(e,hpSetStringValue(t))}function getRelativePos(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top,height:e.offsetHeight,width:e.offsetWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight}}function getJsFileBaseUrl(e){e=e||0;for(var t="/[^/]*",n=document.scripts,o=0;o<e;o++)t+=t;return n[n.length-1].src.replace(new RegExp(t+"$"),"")}function hpCreateFileLoaderElement(t,n,o,i){if($headElement){let e;if("js"===t?(e=document.createElement("script")).src=n:((e=document.createElement("link")).setAttribute("rel","stylesheet"),e.href=n),i)for(var r in i)e.setAttribute(r,i[r]);e.onload=e.onerror=o,$headElement.appendChild(e)}}const cache={};function loadMultiple(n,o){const i=[];let r=0;for(let t=0;t<n.length;t++)loadSingle(n[t],function(e){i[t]=e,++r===n.length&&o.apply($undefinedValue,i)})}function loadSingle(e,t){var n=e.dependencies&&e.dependencies.length,o=e["with"]&&e["with"].length;cache[e.url]||(cache[e.url]={count:0,dependencies:!n,"with":!o,complete:!1,create:!1,url:e.url});const i=cache[e.url];function r(){return $browserGlobal[e.module]}function l(){i.complete&&i.dependencies&&i["with"]&&(e.module?t(r()):t())}i.count++,!i.dependencies&&n?(i.dependencies=!0,loadMultiple(e.dependencies,function(){loadSingle(e,t)})):!i["with"]&&o?(i["with"]=!0,loadMultiple(e["with"].concat(e),l)):i.create?variableHasValue(function(){return i.complete},l,300):(i.create=!0,hpCreateFileLoaderElement(e.type,e.url,function(){i.complete=!0,e.interceptor&&e.interceptor(r()),l()},e.attribute))}function libraryFile(e,t){(e instanceof Array?loadMultiple:loadSingle)(e,t)}function setObjectToString(e){return e=isString(e)?e:JSON.stringify(e)}function setCookie(e,t,n){t=setObjectToString(t);let o=e+"="+encodeURI(t)+";path=/;";"number"==typeof n&&((e=new Date).setTime(e.getTime()+n),o+="expires="+e.toUTCString()),document.cookie=o}function getCookie(e,t){t=t||document.cookie;let o="";return t.replace(new RegExp("(^|;\\s?)"+e+"=(.*?)($|(;\\s?))"),function(e,t,n){o=$decodeURIComponent(n)}),o}function removeCookie(e){setCookie(e,"",-1)}function removeClass(t,e){isArray(e)?forEach(e,function(e){t.classList.remove(e)}):t.classList.remove(e)}function addClass(t,e){isArray(e)?forEach(e,function(e){t.classList.add(e)}):t.classList.add(e)}function replaceClass(e,t,n){removeClass(e,t),addClass(e,n)}function toggleClass(t,e){isArray(e)?forEach(e,function(e){t.classList.toggle(e)}):t.classList.toggle(e)}const agent=$browserGlobal.navigator.userAgent;var browser={isChrome:/Chrome/.test(agent),isIPhone:/iPhone/.test(agent)};function getRatio(){return window.devicePixelRatio||1}function observeMouseWheel(e,n,o){function t(e){let t;if(t=e.wheelDelta?0<e.wheelDelta?1:-1:e.detail<0?1:-1,n(t),o)return e.preventDefault&&e.preventDefault(),!1}return e.addEventListener("mousewheel",t),e.addEventListener("DOMMouseScroll",t),{dispose:function(){e.removeEventListener("mousewheel",t),e.removeEventListener("DOMMouseScroll",t)}}}function observeDomScroll(n,e){const o=_KvPair(e),i=_Number(o.offetY);let r=!1,l=0;function t(){var e,t;r||(t=(e=n.scrollTop)-l,l=e,0!=t?t<0&&o.onTop&&e<=0+i?(r=!0,o.onTop(function(){r=!1})):0<t&&o.onBottom&&e>=n.scrollHeight-n.offsetHeight-i?(r=!0,o.onBottom(function(){r=!1})):r=!1:(r=!1,console.log("未处理")))}return n.addEventListener("scroll",t),{dispose:function(){n.removeEventListener("scroll",t)}}}const defaultCallback=e=>{};function open(e,t){const n=t||defaultCallback;e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen(),n(!0)}function close(e){const t=e||defaultCallback,n=document;document.exitFullscreen?document.exitFullscreen().then(function(){t(!0)})["catch"](function(){t(!1)}):n.webkitCancelFullScreen?(n.webkitCancelFullScreen(),t(!0)):n.mozCancelFullScreen?(n.mozCancelFullScreen(),t(!0)):n.msExitFullscreen&&(n.msExitFullscreen(),t(!0))}function fullScreen(e,t,n){t?open(e,n):close(n)}async function createXLSX(e){const t=document.createElement("table"),n=parseTreeToTableHeader(e.header);var o=n.data.map(function(e){return`<tr>${e.map(function(e){if(e&&0!==e.colSpan)return`<td align="center" rowSpan="${e.rowSpan}" colSpan="${e.colSpan}">${e?.title}</td>`}).join("")}</tr>`}).join(""),e=e.body.map(function(o){return`<tr>${n.columns.map(function(e){var t=o.$colField?.[e]??1,n=o.$rowSpan?.[e]??1;if(0!==t&&0!==n)return`<td align="center" colSpan="${t}" rowSpan="${n}">${o[e]??""}</td>`}).filter(function(e){return!isNull(e)}).join("")}</tr>`}).join("");return t.innerHTML=`<thead>${o}</thead><tbody>${e}</tbody>`,t.setAttribute("border","1"),t}async function loadPdfPlugin(e){const t=e||{index:"//mozilla.github.io/pdf.js/build/pdf.mjs",worker:"//mozilla.github.io/pdf.js/build/pdf.worker.mjs"};return new Promise(function(e){libraryFile({type:"js",module:"pdfjsLib",attribute:{type:"module"},url:t.index,interceptor:function(e){e.GlobalWorkerOptions.workerSrc=t.worker}},e)})}async function pdfToImage(e,i,t){const n=await loadPdfPlugin(t);return new Promise(function(o){n.getDocument(e).promise.then(function(e){e.getPage(1).then(function(e){var t=e.getViewport({scale:1}),n=i.getContext("2d");i.height=t.height,i.width=t.width,e.render({canvasContext:n,viewport:t}).promise.then(function(){o({width:t.width,height:t.height})})})},function(e){console.error(e),o({width:0,height:0})})})}function infoContainerPosition(e){var t=e.mode||"top-right",n=e.width,o=e.height,i=defualtFormatter(10,e.offsetY),r=defualtFormatter(10,e.offsetX),l=defualtFormatter(10,e.padding);let s=e.x,a=e.y;var e=getWindowSize(),c=[l,e.width-n-l],e=[l,e.height-o-l];return"top-right"===t?(s+=r,a=a-o-i,s<c[0]?s=c[0]:s>c[1]&&(l=s-n-2*r,s=c[0]<l?l:c[1]),a<e[0]?(l=a+o+2*i,a=l<e[1]?l:e[0]):a>e[1]&&(a=a-o-2*i)):"bottom-right"===t?(s+=r,a+=i):"top-left"===t&&(s=s-n-r,a=a-o-i),{x:s,y:a}}function hexToRgb(e){for(var t=[],n=1;n<7;n+=2)t.push(parseInt("0x"+e.slice(n,n+2)));return t}class TextRainCanvas{text="abcdefghijklmnopqrstuvwxyz";fontSize=14;color=[0,255,0];reverse=!1;isStop=!1;interval=100;width;height;textLineHeight;count;oCanvas;ctx;timer;pointList=[];constructor(e,t){this.draw=this.draw.bind(this);var n=e.offsetWidth,o=e.offsetHeight;e.width=n,e.height=o,this.width=n,this.height=o,t&&(this.text=t.text||this.text,this.fontSize=t.fontSize||this.fontSize,this.color=t.color?hexToRgb(t.color):this.color,this.reverse=(null!=t.reverse?t:this).reverse,this.interval=t.interval||this.interval),this.oCanvas=e,this.ctx=e.getContext("2d"),this.textLineHeight=1.2*this.fontSize,this.count=Math.ceil(this.height/this.textLineHeight),this.getPointList(),this.draw()}draw(){if(this.isStop)return clearTimeout(this.timer);this.ctx.font=this.fontSize+'px "Microsoft YaHei"',this.ctx.textBaseline="top",this.ctx.clearRect(0,0,this.width,this.height),this.pointList.forEach(o=>{o.list.forEach((e,t)=>{let n;this.reverse?(n=(t-o.currentIndex)/10,n=1-e.speed*n,t<o.currentIndex&&(n=0)):(n=(o.currentIndex-t)/10,n=1-e.speed*n,t>o.currentIndex&&(n=0)),0<n&&(this.ctx.fillStyle=`rgba(${this.color.join(",")}, ${n})`,this.ctx.fillText(e.text,e.x,e.y))}),this.reverse?(o.currentIndex--,o.currentIndex+10<0&&(o.currentIndex=this.count+getRandom(0,this.count))):(o.currentIndex++,o.currentIndex-10>o.list.length-1&&(o.currentIndex=-getRandom(0,this.count)))}),clearTimeout(this.timer),this.timer=setTimeout(this.draw,this.interval)}createColumn(t,e){const n=[];for(let e=0;e<this.count;e++){var o=getRandom(0,this.text.length-1);n.push({text:this.text[o],x:t,y:Math.floor(e*this.textLineHeight),speed:1})}return{currentIndex:e,list:n}}dispose(){this.isStop=!0,clearTimeout(this.timer)}start(){this.isStop=!1,this.draw()}getPointList(){const o=[];var i=this.fontSize,e=Math.floor(this.width/i);for(let n=0;n<e;n++){let t=0;for(let e=0;e<this.count&&(e?t+=getRandom(t+10,this.count):t+=getRandom(t,10),!(t>this.count));e++)this.reverse?o.push(this.createColumn(n*i,this.count+t)):o.push(this.createColumn(n*i,-t))}return this.pointList=o}}export{TextRainCanvas,addClass,browser,createXLSX,downloadFileByArrayBuffer,downloadFileByUrl,fullScreen,getCookie,getJsFileBaseUrl,getRatio,getRelativePos,getStorage,getWindowSize,infoContainerPosition,libraryFile,observeDomResize,observeDomScroll,observeMouseWheel,pdfToImage,prevent,removeClass,removeCookie,removeElement,removeStorage,replaceClass,setCookie,setStorage,toggleClass};
|
|
@@ -97,6 +97,7 @@ interface LibraryFileConfig {
|
|
|
97
97
|
dependencies?: LibraryFileConfig[];
|
|
98
98
|
with?: LibraryFileConfig[];
|
|
99
99
|
attribute?: Record<string, string>;
|
|
100
|
+
interceptor?: (libInstence: any) => void;
|
|
100
101
|
}
|
|
101
102
|
type SuccessCallback = (...args: any[]) => void;
|
|
102
103
|
/**
|
|
@@ -178,24 +179,172 @@ declare const _default: {
|
|
|
178
179
|
*/
|
|
179
180
|
declare function getRatio(): number;
|
|
180
181
|
|
|
182
|
+
type Direction = 1 | -1;
|
|
183
|
+
/**
|
|
184
|
+
*
|
|
185
|
+
* @param el DOM元素
|
|
186
|
+
* @param callback 滚动回调
|
|
187
|
+
* @param isPrevent 是否阻止原生滚动,仅用来获取滚动方向
|
|
188
|
+
* @returns
|
|
189
|
+
*/
|
|
190
|
+
declare function export_default$1(
|
|
191
|
+
el: HTMLElement,
|
|
192
|
+
callback: (direction: Direction) => void,
|
|
193
|
+
isPrevent: boolean
|
|
194
|
+
): {
|
|
195
|
+
dispose: () => void;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
type TCallbackHandler = (next: () => void) => void;
|
|
199
|
+
interface IOptions$1 {
|
|
200
|
+
onBottom?: TCallbackHandler;
|
|
201
|
+
onTop?: TCallbackHandler;
|
|
202
|
+
/** Y轴触底、触顶的差值 */
|
|
203
|
+
offetY?: number;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 监听dom滚动到顶部或头部
|
|
207
|
+
* @param el
|
|
208
|
+
* @param config
|
|
209
|
+
*/
|
|
210
|
+
declare function export_default(
|
|
211
|
+
el: HTMLElement,
|
|
212
|
+
config?: IOptions$1
|
|
213
|
+
): {
|
|
214
|
+
/**
|
|
215
|
+
* 销毁
|
|
216
|
+
*/
|
|
217
|
+
dispose: () => void;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
type TElementFullCallback = () => void;
|
|
221
|
+
type TFullScreenActionCallback = (isSuccess: boolean) => void;
|
|
222
|
+
type TElement = HTMLElement & {
|
|
223
|
+
webkitRequestFullScreen?: TElementFullCallback;
|
|
224
|
+
mozRequestFullScreen?: TElementFullCallback;
|
|
225
|
+
msRequestFullscreen?: TElementFullCallback;
|
|
226
|
+
};
|
|
227
|
+
declare function fullScreen(
|
|
228
|
+
element: TElement,
|
|
229
|
+
value: boolean,
|
|
230
|
+
callabck?: TFullScreenActionCallback
|
|
231
|
+
): void;
|
|
232
|
+
|
|
233
|
+
declare function createXLSX(options: {
|
|
234
|
+
pluginUrl: string;
|
|
235
|
+
header: any[];
|
|
236
|
+
body: any[];
|
|
237
|
+
}): Promise<HTMLTableElement>;
|
|
238
|
+
|
|
239
|
+
interface IPluginSrc {
|
|
240
|
+
index: string;
|
|
241
|
+
worker: string;
|
|
242
|
+
}
|
|
243
|
+
declare function pdfToImage(
|
|
244
|
+
url: string,
|
|
245
|
+
canvas: HTMLCanvasElement,
|
|
246
|
+
src?: IPluginSrc
|
|
247
|
+
): Promise<unknown>;
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* 动态计算弹出框位置,使之保持在可是范围内。多用于跟随鼠标移动的菜单或信息框
|
|
251
|
+
* @param options - 配置项
|
|
252
|
+
* @returns - 计算后的位置
|
|
253
|
+
*/
|
|
254
|
+
declare function infoContainerPosition(options: {
|
|
255
|
+
/** 需要将容器设置到:坐标X */
|
|
256
|
+
x: number;
|
|
257
|
+
/** 需要将容器设置到:坐标Y */
|
|
258
|
+
y: number;
|
|
259
|
+
/** 容器宽度 */
|
|
260
|
+
width: number;
|
|
261
|
+
/** 容器高度 */
|
|
262
|
+
height: number;
|
|
263
|
+
/** 与目标位置X偏移量。默认 10 */
|
|
264
|
+
offsetX?: number;
|
|
265
|
+
/** 与目标位置Y偏移量。默认 10 */
|
|
266
|
+
offsetY?: number;
|
|
267
|
+
/** 距离视口多少时表示超出可视范围。默认 10*/
|
|
268
|
+
padding?: number;
|
|
269
|
+
mode?: 'top-right';
|
|
270
|
+
}): {
|
|
271
|
+
x: number;
|
|
272
|
+
y: number;
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
interface IOptions {
|
|
276
|
+
text?: string;
|
|
277
|
+
fontSize?: number;
|
|
278
|
+
color?: string;
|
|
279
|
+
reverse?: boolean;
|
|
280
|
+
interval?: number;
|
|
281
|
+
}
|
|
282
|
+
interface IPointItem {
|
|
283
|
+
text: string;
|
|
284
|
+
x: number;
|
|
285
|
+
y: number;
|
|
286
|
+
speed: number;
|
|
287
|
+
}
|
|
288
|
+
declare class TextRainCanvas {
|
|
289
|
+
text: string;
|
|
290
|
+
fontSize: number;
|
|
291
|
+
color: number[];
|
|
292
|
+
reverse: boolean;
|
|
293
|
+
isStop: boolean;
|
|
294
|
+
interval: number;
|
|
295
|
+
width: number;
|
|
296
|
+
height: number;
|
|
297
|
+
textLineHeight: number;
|
|
298
|
+
count: number;
|
|
299
|
+
oCanvas: HTMLCanvasElement;
|
|
300
|
+
ctx: CanvasRenderingContext2D;
|
|
301
|
+
timer: any;
|
|
302
|
+
pointList: {
|
|
303
|
+
currentIndex: number;
|
|
304
|
+
list: IPointItem[];
|
|
305
|
+
}[];
|
|
306
|
+
constructor(oCanvas: HTMLCanvasElement, option?: IOptions);
|
|
307
|
+
draw(): void;
|
|
308
|
+
createColumn(
|
|
309
|
+
x: number,
|
|
310
|
+
y: number
|
|
311
|
+
): {
|
|
312
|
+
currentIndex: number;
|
|
313
|
+
list: IPointItem[];
|
|
314
|
+
};
|
|
315
|
+
dispose(): void;
|
|
316
|
+
start(): void;
|
|
317
|
+
getPointList(): {
|
|
318
|
+
currentIndex: number;
|
|
319
|
+
list: IPointItem[];
|
|
320
|
+
}[];
|
|
321
|
+
}
|
|
322
|
+
|
|
181
323
|
declare global {
|
|
182
324
|
/**
|
|
183
325
|
* 该声明文件用于全局声明(不用npm安装时拷贝到项目中直接使用)
|
|
184
326
|
*/
|
|
185
327
|
namespace jUtilsBrowser {
|
|
186
328
|
export {
|
|
329
|
+
TextRainCanvas,
|
|
187
330
|
addClass,
|
|
188
331
|
_default as browser,
|
|
332
|
+
createXLSX,
|
|
189
333
|
downloadFileByArrayBuffer,
|
|
190
334
|
downloadFileByUrl,
|
|
335
|
+
fullScreen,
|
|
191
336
|
getCookie,
|
|
192
337
|
getJsFileBaseUrl,
|
|
193
338
|
getRatio,
|
|
194
339
|
getRelativePos,
|
|
195
340
|
getStorage,
|
|
196
341
|
getWindowSize,
|
|
342
|
+
infoContainerPosition,
|
|
197
343
|
libraryFile,
|
|
198
344
|
observeDomResize,
|
|
345
|
+
export_default as observeDomScroll,
|
|
346
|
+
export_default$1 as observeMouseWheel,
|
|
347
|
+
pdfToImage,
|
|
199
348
|
prevent,
|
|
200
349
|
removeClass,
|
|
201
350
|
removeCookie,
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 浏览器工具库 => jUtilsBrowser
|
|
3
|
+
* @update 2024-08-27 10:45:06
|
|
4
|
+
*/
|
|
5
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@bestime/utils_base")):"function"==typeof define&&define.amd?define(["exports","@bestime/utils_base"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jUtilsBrowser={},e.jUtilsBase)}(this,function(e,a){"use strict";function d(){return{width:document.documentElement.clientWidth||document.body.clientWidth||window.innerWidth||0,height:document.documentElement.clientHeight||document.body.clientHeight||window.innerHeight||0}}let n=0,i,o=!1;const r={};let s;var h={add:function(e,t){return i="HI-"+ ++n,r[i]={start:+new Date,current:0,handler:e,interval:t},o||(clearInterval(s),o=!0,s=setInterval(function(){for(var e in r){const t=r[e];t.current=+new Date,t.current-t.start>=t.interval&&(t.start=t.current,r[e].handler())}},17)),i},remove:function(e){delete r[e],0===Object.keys(r).length&&(o=!1,clearInterval(s),s=undefined)}};function c(e,t){const n=document.createElement("a");n.style.display="none",n.download=t,n.setAttribute("href",e),n.setAttribute("target","_blank"),n.setAttribute("download",t),document.body.appendChild(n),n.click(),n.remove()}const l=void 0,u=decodeURIComponent,f=window,m=document.getElementsByTagName("head")[0];const p={};function g(n,i){const o=[];let r=0;for(let t=0;t<n.length;t++)v(n[t],function(e){o[t]=e,++r===n.length&&i.apply(l,o)})}function v(e,t){var n=e.dependencies&&e.dependencies.length,i=e["with"]&&e["with"].length;p[e.url]||(p[e.url]={count:0,dependencies:!n,"with":!i,complete:!1,create:!1,url:e.url});const o=p[e.url];function r(){return f[e.module]}function s(){o.complete&&o.dependencies&&o["with"]&&(e.module?t(r()):t())}if(o.count++,!o.dependencies&&n)o.dependencies=!0,g(e.dependencies,function(){v(e,t)});else if(!o["with"]&&i)o["with"]=!0,g(e["with"].concat(e),s);else if(o.create)a.variableHasValue(function(){return o.complete},s,300);else{o.create=!0;var n=e.type,i=e.url,c=function(){o.complete=!0,e.interceptor&&e.interceptor(r()),s()},l=e.attribute;if(m){let e;if("js"===n?(e=document.createElement("script")).src=i:((e=document.createElement("link")).setAttribute("rel","stylesheet"),e.href=i),l)for(var u in l)e.setAttribute(u,l[u]);e.onload=e.onerror=c,m.appendChild(e)}}}function w(e,t){(e instanceof Array?g:v)(e,t)}function t(e,t,n){var i;i=t,t=i=a.isString(i)?i:JSON.stringify(i);let o=e+"="+encodeURI(t)+";path=/;";"number"==typeof n&&((i=new Date).setTime(i.getTime()+n),o+="expires="+i.toUTCString()),document.cookie=o}function x(t,e){a.isArray(e)?a.forEach(e,function(e){t.classList.remove(e)}):t.classList.remove(e)}function b(t,e){a.isArray(e)?a.forEach(e,function(e){t.classList.add(e)}):t.classList.add(e)}var S=f.navigator.userAgent,S={isChrome:/Chrome/.test(S),isIPhone:/iPhone/.test(S)};const y=e=>{};class C{text="abcdefghijklmnopqrstuvwxyz";fontSize=14;color=[0,255,0];reverse=!1;isStop=!1;interval=100;width;height;textLineHeight;count;oCanvas;ctx;timer;pointList=[];constructor(e,t){this.draw=this.draw.bind(this);var n=e.offsetWidth,i=e.offsetHeight;e.width=n,e.height=i,this.width=n,this.height=i,t&&(this.text=t.text||this.text,this.fontSize=t.fontSize||this.fontSize,this.color=t.color?function(e){for(var t=[],n=1;n<7;n+=2)t.push(parseInt("0x"+e.slice(n,n+2)));return t}(t.color):this.color,this.reverse=(null!=t.reverse?t:this).reverse,this.interval=t.interval||this.interval),this.oCanvas=e,this.ctx=e.getContext("2d"),this.textLineHeight=1.2*this.fontSize,this.count=Math.ceil(this.height/this.textLineHeight),this.getPointList(),this.draw()}draw(){if(this.isStop)return clearTimeout(this.timer);this.ctx.font=this.fontSize+'px "Microsoft YaHei"',this.ctx.textBaseline="top",this.ctx.clearRect(0,0,this.width,this.height),this.pointList.forEach(i=>{i.list.forEach((e,t)=>{let n;this.reverse?(n=(t-i.currentIndex)/10,n=1-e.speed*n,t<i.currentIndex&&(n=0)):(n=(i.currentIndex-t)/10,n=1-e.speed*n,t>i.currentIndex&&(n=0)),0<n&&(this.ctx.fillStyle=`rgba(${this.color.join(",")}, ${n})`,this.ctx.fillText(e.text,e.x,e.y))}),this.reverse?(i.currentIndex--,i.currentIndex+10<0&&(i.currentIndex=this.count+a.getRandom(0,this.count))):(i.currentIndex++,i.currentIndex-10>i.list.length-1&&(i.currentIndex=-a.getRandom(0,this.count)))}),clearTimeout(this.timer),this.timer=setTimeout(this.draw,this.interval)}createColumn(t,e){const n=[];for(let e=0;e<this.count;e++){var i=a.getRandom(0,this.text.length-1);n.push({text:this.text[i],x:t,y:Math.floor(e*this.textLineHeight),speed:1})}return{currentIndex:e,list:n}}dispose(){this.isStop=!0,clearTimeout(this.timer)}start(){this.isStop=!1,this.draw()}getPointList(){const i=[];var o=this.fontSize,e=Math.floor(this.width/o);for(let n=0;n<e;n++){let t=0;for(let e=0;e<this.count&&(e?t+=a.getRandom(t+10,this.count):t+=a.getRandom(t,10),!(t>this.count));e++)this.reverse?i.push(this.createColumn(n*o,this.count+t)):i.push(this.createColumn(n*o,-t))}return this.pointList=i}}e.TextRainCanvas=C,e.addClass=b,e.browser=S,e.createXLSX=async function(e){const t=document.createElement("table"),n=a.parseTreeToTableHeader(e.header);var i=n.data.map(function(e){return`<tr>${e.map(function(e){if(e&&0!==e.colSpan)return`<td align="center" rowSpan="${e.rowSpan}" colSpan="${e.colSpan}">${e?.title}</td>`}).join("")}</tr>`}).join(""),e=e.body.map(function(i){return`<tr>${n.columns.map(function(e){var t=i.$colField?.[e]??1,n=i.$rowSpan?.[e]??1;if(0!==t&&0!==n)return`<td align="center" colSpan="${t}" rowSpan="${n}">${i[e]??""}</td>`}).filter(function(e){return!a.isNull(e)}).join("")}</tr>`}).join("");return t.innerHTML=`<thead>${i}</thead><tbody>${e}</tbody>`,t.setAttribute("border","1"),t},e.downloadFileByArrayBuffer=function(e,t){const n=f.URL;c(e=n.createObjectURL(new Blob([e])),t),n.revokeObjectURL(e),undefined},e.downloadFileByUrl=c,e.fullScreen=function(e,t,n){if(t){t=e;e=n;const i=e||y;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullScreen?t.webkitRequestFullScreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen(),i(!0)}else{e=n;const o=e||y,r=document;document.exitFullscreen?document.exitFullscreen().then(function(){o(!0)})["catch"](function(){o(!1)}):r.webkitCancelFullScreen?(r.webkitCancelFullScreen(),o(!0)):r.mozCancelFullScreen?(r.mozCancelFullScreen(),o(!0)):r.msExitFullscreen&&(r.msExitFullscreen(),o(!0))}},e.getCookie=function(e,t){t=t||document.cookie;let i="";return t.replace(new RegExp("(^|;\\s?)"+e+"=(.*?)($|(;\\s?))"),function(e,t,n){i=u(n)}),i},e.getJsFileBaseUrl=function(e){e=e||0;for(var t="/[^/]*",n=document.scripts,i=0;i<e;i++)t+=t;return n[n.length-1].src.replace(new RegExp(t+"$"),"")},e.getRatio=function(){return window.devicePixelRatio||1},e.getRelativePos=function(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top,height:e.offsetHeight,width:e.offsetWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight}},e.getStorage=function(e){return e=localStorage.getItem(e),a.defualtFormatter("",e)},e.getWindowSize=d,e.infoContainerPosition=function(e){var t=e.mode||"top-right",n=e.width,i=e.height,o=a.defualtFormatter(10,e.offsetY),r=a.defualtFormatter(10,e.offsetX),s=a.defualtFormatter(10,e.padding);let c=e.x,l=e.y;var e=d(),u=[s,e.width-n-s],e=[s,e.height-i-s];return"top-right"===t?(c+=r,l=l-i-o,c<u[0]?c=u[0]:c>u[1]&&(s=c-n-2*r,c=u[0]<s?s:u[1]),l<e[0]?(s=l+i+2*o,l=s<e[1]?s:e[0]):l>e[1]&&(l=l-i-2*o)):"bottom-right"===t?(c+=r,l+=o):"top-left"===t&&(c=c-n-r,l=l-i-o),{x:c,y:l}},e.libraryFile=w,e.observeDomResize=function(n,i,o,e){let r=[0,0,!1],s=[0,0,!1],c=[0,0,!1],l=[0,0,!1];const t=h.add(u,e=e||500);function u(){if(document.body.contains(n)){let e=!1;var t;o?.includes("position")&&(t=n.getBoundingClientRect(),c[0]=t.left,c[2]=c[0]!==c[1],l[0]=t.top,l[2]=l[0]!==l[1]),r[0]=n.offsetWidth,r[2]=r[0]!==r[1],s[0]=n.offsetHeight,s[2]=s[0]!==s[1],r[2]&&(r[1]=r[0],o?.includes("width")&&(e=!0)),s[2]&&(s[1]=s[0],o?.includes("height")&&(e=!0)),(l[2]||c[2])&&(l[1]=l[0],c[1]=c[0],o?.includes("position")&&(e=!0)),o&&0!==o.length||(r[2]||s[2]||l[2]||c[2])&&(e=!0),e&&i(n)}else a()}function a(){h.remove(t),r=undefined,s=undefined}return u(),a},e.observeDomScroll=function(n,e){const i=a._KvPair(e),o=a._Number(i.offetY);let r=!1,s=0;function t(){var e,t;r||(t=(e=n.scrollTop)-s,s=e,0!=t?t<0&&i.onTop&&e<=0+o?(r=!0,i.onTop(function(){r=!1})):0<t&&i.onBottom&&e>=n.scrollHeight-n.offsetHeight-o?(r=!0,i.onBottom(function(){r=!1})):r=!1:(r=!1,console.log("未处理")))}return n.addEventListener("scroll",t),{dispose:function(){n.removeEventListener("scroll",t)}}},e.observeMouseWheel=function(e,n,i){function t(e){let t;if(t=e.wheelDelta?0<e.wheelDelta?1:-1:e.detail<0?1:-1,n(t),i)return e.preventDefault&&e.preventDefault(),!1}return e.addEventListener("mousewheel",t),e.addEventListener("DOMMouseScroll",t),{dispose:function(){e.removeEventListener("mousewheel",t),e.removeEventListener("DOMMouseScroll",t)}}},e.pdfToImage=async function(e,o,t){const n=await async function(e){const t=e||{index:"//mozilla.github.io/pdf.js/build/pdf.mjs",worker:"//mozilla.github.io/pdf.js/build/pdf.worker.mjs"};return new Promise(function(e){w({type:"js",module:"pdfjsLib",attribute:{type:"module"},url:t.index,interceptor:function(e){e.GlobalWorkerOptions.workerSrc=t.worker}},e)})}(t);return new Promise(function(i){n.getDocument(e).promise.then(function(e){e.getPage(1).then(function(e){var t=e.getViewport({scale:1}),n=o.getContext("2d");o.height=t.height,o.width=t.width,e.render({canvasContext:n,viewport:t}).promise.then(function(){i({width:t.width,height:t.height})})})},function(e){console.error(e),i({width:0,height:0})})})},e.prevent=function(e,t,n){e=e||f.event,n=!1!==n,(t=!1!==t)&&f.event?f.event.cancelBubble=!0:e.stopPropagation(),n&&f.event?f.event.returnValue=!1:e.preventDefault()},e.removeClass=x,e.removeCookie=function(e){t(e,"",-1)},e.removeElement=function(e){e.parentNode&&e.parentNode.removeChild(e)},e.removeStorage=function(e){localStorage.removeItem(e)},e.replaceClass=function(e,t,n){x(e,t),b(e,n)},e.setCookie=t,e.setStorage=function(e,t){localStorage.setItem(e,(e=t,e=a.isString(e)?e:JSON.stringify(e)))},e.toggleClass=function(t,e){a.isArray(e)?a.forEach(e,function(e){t.classList.toggle(e)}):t.classList.toggle(e)}});
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bestime/utils_browser",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"main": "./dist/
|
|
5
|
-
"module": "./dist/
|
|
6
|
-
"types": "./dist/
|
|
3
|
+
"version": "1.0.8",
|
|
4
|
+
"main": "./dist/esm/index.min.mjs",
|
|
5
|
+
"module": "./dist/esm/index.min.mjs",
|
|
6
|
+
"types": "./dist/esm/index.d.ts",
|
|
7
7
|
"description": "个人常用工具库,浏览器使用",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"files": [
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@bestime/utils_base": "
|
|
18
|
+
"@bestime/utils_base": "1.0.8"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@babel/core": "7.18.6",
|
package/README.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
### 不同git项目,使用不同用户名和邮箱
|
|
2
|
-
|
|
3
|
-
修改配置文件 ~/.gitconfig
|
|
4
|
-
|
|
5
|
-
```cmd
|
|
6
|
-
[core]
|
|
7
|
-
autocrlf = false
|
|
8
|
-
[includeIf "gitdir:D:/bestime/git/"]
|
|
9
|
-
path = D:/bestime/config/.gitconfig
|
|
10
|
-
[includeIf "gitdir:D:/work-qssoft/git/qs-t/"]
|
|
11
|
-
path = D:/bestime/config/qssoft.gitconfig
|
|
12
|
-
[includeIf "gitdir:D:/work-qssoft/git/rdc-cq/"]
|
|
13
|
-
path = D:/bestime/config/sitian.gitconfig
|
|
14
|
-
|
|
15
|
-
```
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 浏览器工具库 => jUtilsBrowser
|
|
3
|
-
* @QQ 1174295440
|
|
4
|
-
* @author Bestime
|
|
5
|
-
* @see https://github.com/bestime/tool
|
|
6
|
-
* @update 2023-11-15 21:10:20
|
|
7
|
-
*/
|
|
8
|
-
import{defaultValue,isString,variableHasValue,isArray,forEach}from"@bestime/utils_base";function getWindowSize(){return{width:document.documentElement.clientWidth||document.body.clientWidth||window.innerWidth||0,height:document.documentElement.clientHeight||document.body.clientHeight||window.innerHeight||0}}var timer,htivId=0,idName="",isStart=!1,records={};function stop(){isStart=!1,clearInterval(timer),timer=undefined}function startRun(){clearInterval(timer),isStart=!0,timer=setInterval(function(){for(var e in records){var t=records[e];t.current=+new Date,t.current-t.start>=t.interval&&(t.start=t.current,records[e].handler())}},17)}function add(e,t){return idName="HI-"+ ++htivId,records[idName]={start:+new Date,current:0,handler:e,interval:t},isStart||startRun(),idName}function remove(e){delete records[e],0===Object.keys(records).length&&stop()}var hpInterval={add:add,remove:remove};function observeDomResize(n,o,r,e){var i=[0,0,!1],l=[0,0,!1],a=[0,0,!1],c=[0,0,!1],t=hpInterval.add(d,e=e||500);function d(){var e,t;document.body.contains(n)?(e=!1,null!=r&&r.includes("position")&&(t=n.getBoundingClientRect(),a[0]=t.left,a[2]=a[0]!==a[1],c[0]=t.top,c[2]=c[0]!==c[1]),i[0]=n.offsetWidth,i[2]=i[0]!==i[1],l[0]=n.offsetHeight,l[2]=l[0]!==l[1],i[2]&&(i[1]=i[0],null!=r&&r.includes("width")&&(e=!0)),l[2]&&(l[1]=l[0],null!=r&&r.includes("height")&&(e=!0)),(c[2]||a[2])&&(c[1]=c[0],a[1]=a[0],null!=r&&r.includes("position")&&(e=!0)),r&&0!==r.length||(i[2]||l[2]||c[2]||a[2])&&(e=!0),e&&o(n)):s()}function s(){hpInterval.remove(t),i=undefined,l=undefined}return d(),s}function downloadFileByUrl(e,t){var n=document.createElement("a");n.style.display="none",n.download=t,n.setAttribute("href",e),n.setAttribute("target","_blank"),n.setAttribute("download",t),document.body.appendChild(n),n.click(),n.remove()}var $undefinedValue=void 0,$decodeURIComponent=decodeURIComponent,$browserGlobal=window,$headElement=document.getElementsByTagName("head")[0];function downloadFileByArrayBuffer(e,t){var n=$browserGlobal.URL,e=n.createObjectURL(new Blob([e]));downloadFileByUrl(e,t),n.revokeObjectURL(e),undefined}function removeElement(e){e.parentNode&&e.parentNode.removeChild(e)}function prevent(e,t,n){e=e||$browserGlobal.event,n=!1!==n,(t=!1!==t)&&$browserGlobal.event?$browserGlobal.event.cancelBubble=!0:e.stopPropagation(),n&&$browserGlobal.event?$browserGlobal.event.returnValue=!1:e.preventDefault()}function getStorage(e){e=localStorage.getItem(e);return defaultValue(e,"")}function removeStorage(e){localStorage.removeItem(e)}function hpSetStringValue(e){return e=isString(e)?e:JSON.stringify(e)}function setStorage(e,t){localStorage.setItem(e,hpSetStringValue(t))}function getRelativePos(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top,height:e.offsetHeight,width:e.offsetWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight}}function getJsFileBaseUrl(e){e=e||0;for(var t="/[^/]*",n=document.scripts,o=0;o<e;o++)t+=t;return n[n.length-1].src.replace(new RegExp(t+"$"),"")}function hpCreateFileLoaderElement(e,t,n,o){if($headElement){var r;if("js"===e?(r=document.createElement("script")).src=t:((r=document.createElement("link")).setAttribute("rel","stylesheet"),r.href=t),o)for(var i in o)r.setAttribute(i,o[i]);r.onload=r.onerror=n,$headElement.appendChild(r)}}var cache={};function loadMultiple(n,o){for(var r=[],i=0,e=0;e<n.length;e++)!function(t){loadSingle(n[t],function(e){r[t]=e,++i===n.length&&o.apply($undefinedValue,r)})}(e)}function loadSingle(e,t){var n=e.dependencies&&e.dependencies.length,o=e["with"]&&e["with"].length,r=(cache[e.url]||(cache[e.url]={count:0,dependencies:!n,"with":!o,complete:!1,create:!1,url:e.url}),cache[e.url]);function i(){r.complete&&r.dependencies&&r["with"]&&(e.module?t($browserGlobal[e.module]):t())}r.count++,!r.dependencies&&n?(r.dependencies=!0,loadMultiple(e.dependencies,function(){loadSingle(e,t)})):!r["with"]&&o?(r["with"]=!0,loadMultiple(e["with"].concat(e),i)):r.create?variableHasValue(function(){return r.complete},i,300):(r.create=!0,hpCreateFileLoaderElement(e.type,e.url,function(){r.complete=!0,i()},e.attribute))}function libraryFile(e,t){(e instanceof Array?loadMultiple:loadSingle)(e,t)}function setObjectToString(e){return e=isString(e)?e:JSON.stringify(e)}function setCookie(e,t,n){t=setObjectToString(t);e=e+"="+encodeURI(t)+";path=/;";"number"==typeof n&&((t=new Date).setTime(t.getTime()+n),e+="expires="+t.toUTCString()),document.cookie=e}function getCookie(e,t){t=t||document.cookie;var o="";return t.replace(new RegExp("(^|;\\s)"+e+"=(.*?)($|(;\\s))"),function(e,t,n){o=$decodeURIComponent(n)}),o}function removeCookie(e){setCookie(e,"",-1)}function removeClass(t,e){isArray(e)?forEach(e,function(e){t.classList.remove(e)}):t.classList.remove(e)}function addClass(t,e){isArray(e)?forEach(e,function(e){t.classList.add(e)}):t.classList.add(e)}function replaceClass(e,t,n){removeClass(e,t),addClass(e,n)}function toggleClass(t,e){isArray(e)?forEach(e,function(e){t.classList.toggle(e)}):t.classList.toggle(e)}var agent=$browserGlobal.navigator.userAgent,browser={isChrome:/Chrome/.test(agent),isIPhone:/iPhone/.test(agent)};function getRatio(){return window.devicePixelRatio||1}export{addClass,browser,downloadFileByArrayBuffer,downloadFileByUrl,getCookie,getJsFileBaseUrl,getRatio,getRelativePos,getStorage,getWindowSize,libraryFile,observeDomResize,prevent,removeClass,removeCookie,removeElement,removeStorage,replaceClass,setCookie,setStorage,toggleClass};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 浏览器工具库 => jUtilsBrowser
|
|
3
|
-
* @QQ 1174295440
|
|
4
|
-
* @author Bestime
|
|
5
|
-
* @see https://github.com/bestime/tool
|
|
6
|
-
* @update 2023-11-15 21:10:20
|
|
7
|
-
*/
|
|
8
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@bestime/utils_base")):"function"==typeof define&&define.amd?define(["exports","@bestime/utils_base"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jUtilsBrowser={},e.jUtilsBase)}(this,function(e,u){"use strict";var n,i,o=0,r=!1,c={};var d={add:function(e,t){return n="HI-"+ ++o,c[n]={start:+new Date,current:0,handler:e,interval:t},r||(clearInterval(i),r=!0,i=setInterval(function(){for(var e in c){var t=c[e];t.current=+new Date,t.current-t.start>=t.interval&&(t.start=t.current,c[e].handler())}},17)),n},remove:function(e){delete c[e],0===Object.keys(c).length&&(r=!1,clearInterval(i),i=undefined)}};function l(e,t){var n=document.createElement("a");n.style.display="none",n.download=t,n.setAttribute("href",e),n.setAttribute("target","_blank"),n.setAttribute("download",t),document.body.appendChild(n),n.click(),n.remove()}var a=void 0,s=decodeURIComponent,f=window,h=document.getElementsByTagName("head")[0];var g={};function m(n,i){for(var o=[],r=0,e=0;e<n.length;e++)!function(t){v(n[t],function(e){o[t]=e,++r===n.length&&i.apply(a,o)})}(e)}function v(e,t){var n=e.dependencies&&e.dependencies.length,i=e["with"]&&e["with"].length,o=(g[e.url]||(g[e.url]={count:0,dependencies:!n,"with":!i,complete:!1,create:!1,url:e.url}),g[e.url]);function r(){o.complete&&o.dependencies&&o["with"]&&(e.module?t(f[e.module]):t())}if(o.count++,!o.dependencies&&n)o.dependencies=!0,m(e.dependencies,function(){v(e,t)});else if(!o["with"]&&i)o["with"]=!0,m(e["with"].concat(e),r);else if(o.create)u.variableHasValue(function(){return o.complete},r,300);else{o.create=!0;var c,n=e.type,i=e.url,l=function(){o.complete=!0,r()},a=e.attribute;if(h){if("js"===n?(c=document.createElement("script")).src=i:((c=document.createElement("link")).setAttribute("rel","stylesheet"),c.href=i),a)for(var s in a)c.setAttribute(s,a[s]);c.onload=c.onerror=l,h.appendChild(c)}}}function t(e,t,n){i=t,t=i=u.isString(i)?i:JSON.stringify(i);var i=e+"="+encodeURI(t)+";path=/;";"number"==typeof n&&((e=new Date).setTime(e.getTime()+n),i+="expires="+e.toUTCString()),document.cookie=i}function p(t,e){u.isArray(e)?u.forEach(e,function(e){t.classList.remove(e)}):t.classList.remove(e)}function w(t,e){u.isArray(e)?u.forEach(e,function(e){t.classList.add(e)}):t.classList.add(e)}var b=f.navigator.userAgent,b={isChrome:/Chrome/.test(b),isIPhone:/iPhone/.test(b)};e.addClass=w,e.browser=b,e.downloadFileByArrayBuffer=function(e,t){var n=f.URL;l(e=n.createObjectURL(new Blob([e])),t),n.revokeObjectURL(e),undefined},e.downloadFileByUrl=l,e.getCookie=function(e,t){t=t||document.cookie;var i="";return t.replace(new RegExp("(^|;\\s)"+e+"=(.*?)($|(;\\s))"),function(e,t,n){i=s(n)}),i},e.getJsFileBaseUrl=function(e){e=e||0;for(var t="/[^/]*",n=document.scripts,i=0;i<e;i++)t+=t;return n[n.length-1].src.replace(new RegExp(t+"$"),"")},e.getRatio=function(){return window.devicePixelRatio||1},e.getRelativePos=function(e){var t=e.getBoundingClientRect();return{x:t.left,y:t.top,height:e.offsetHeight,width:e.offsetWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight}},e.getStorage=function(e){return e=localStorage.getItem(e),u.defaultValue(e,"")},e.getWindowSize=function(){return{width:document.documentElement.clientWidth||document.body.clientWidth||window.innerWidth||0,height:document.documentElement.clientHeight||document.body.clientHeight||window.innerHeight||0}},e.libraryFile=function(e,t){(e instanceof Array?m:v)(e,t)},e.observeDomResize=function(n,i,o,e){var r=[0,0,!1],c=[0,0,!1],l=[0,0,!1],a=[0,0,!1],t=d.add(s,e=e||500);function s(){var e,t;document.body.contains(n)?(e=!1,null!=o&&o.includes("position")&&(t=n.getBoundingClientRect(),l[0]=t.left,l[2]=l[0]!==l[1],a[0]=t.top,a[2]=a[0]!==a[1]),r[0]=n.offsetWidth,r[2]=r[0]!==r[1],c[0]=n.offsetHeight,c[2]=c[0]!==c[1],r[2]&&(r[1]=r[0],null!=o&&o.includes("width")&&(e=!0)),c[2]&&(c[1]=c[0],null!=o&&o.includes("height")&&(e=!0)),(a[2]||l[2])&&(a[1]=a[0],l[1]=l[0],null!=o&&o.includes("position")&&(e=!0)),o&&0!==o.length||(r[2]||c[2]||a[2]||l[2])&&(e=!0),e&&i(n)):u()}function u(){d.remove(t),r=undefined,c=undefined}return s(),u},e.prevent=function(e,t,n){e=e||f.event,n=!1!==n,(t=!1!==t)&&f.event?f.event.cancelBubble=!0:e.stopPropagation(),n&&f.event?f.event.returnValue=!1:e.preventDefault()},e.removeClass=p,e.removeCookie=function(e){t(e,"",-1)},e.removeElement=function(e){e.parentNode&&e.parentNode.removeChild(e)},e.removeStorage=function(e){localStorage.removeItem(e)},e.replaceClass=function(e,t,n){p(e,t),w(e,n)},e.setCookie=t,e.setStorage=function(e,t){localStorage.setItem(e,(e=t,e=u.isString(e)?e:JSON.stringify(e)))},e.toggleClass=function(t,e){u.isArray(e)?u.forEach(e,function(e){t.classList.toggle(e)}):t.classList.toggle(e)}});
|