@nokecy/designer-shared 0.0.0-stage → 2.0.0-beta.6
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/LICENSE +21 -0
- package/LICENSE.md +21 -0
- package/PROVENANCE.json +35 -0
- package/README.md +9 -2
- package/esm/animation.d.ts +2 -0
- package/esm/animation.js +34 -0
- package/esm/animation.js.map +1 -0
- package/esm/array.d.ts +37 -0
- package/esm/array.js +112 -0
- package/esm/array.js.map +1 -0
- package/esm/clone.d.ts +4 -0
- package/esm/clone.js +106 -0
- package/esm/clone.js.map +1 -0
- package/esm/compose.d.ts +1 -0
- package/esm/compose.js +8 -0
- package/esm/compose.js.map +1 -0
- package/esm/coordinate.d.ts +106 -0
- package/esm/coordinate.js +485 -0
- package/esm/coordinate.js.map +1 -0
- package/esm/element.d.ts +6 -0
- package/esm/element.js +138 -0
- package/esm/element.js.map +1 -0
- package/esm/event.d.ts +81 -0
- package/esm/event.js +214 -0
- package/esm/event.js.map +1 -0
- package/esm/globalThisPolyfill.d.ts +1 -0
- package/esm/globalThisPolyfill.js +23 -0
- package/esm/globalThisPolyfill.js.map +1 -0
- package/esm/index.d.ts +17 -0
- package/esm/index.js +18 -0
- package/esm/index.js.map +1 -0
- package/esm/instanceof.d.ts +1 -0
- package/esm/instanceof.js +12 -0
- package/esm/instanceof.js.map +1 -0
- package/esm/keycode.d.ts +147 -0
- package/esm/keycode.js +151 -0
- package/esm/keycode.js.map +1 -0
- package/esm/lru.d.ts +73 -0
- package/esm/lru.js +294 -0
- package/esm/lru.js.map +1 -0
- package/esm/observer.d.ts +9 -0
- package/esm/observer.js +30 -0
- package/esm/observer.js.map +1 -0
- package/esm/request-idle.d.ts +10 -0
- package/esm/request-idle.js +9 -0
- package/esm/request-idle.js.map +1 -0
- package/esm/scroller.d.ts +10 -0
- package/esm/scroller.js +83 -0
- package/esm/scroller.js.map +1 -0
- package/esm/subscribable.d.ts +14 -0
- package/esm/subscribable.js +49 -0
- package/esm/subscribable.js.map +1 -0
- package/esm/types.d.ts +13 -0
- package/esm/types.js +22 -0
- package/esm/types.js.map +1 -0
- package/esm/uid.d.ts +1 -0
- package/esm/uid.js +10 -0
- package/esm/uid.js.map +1 -0
- package/lib/animation.d.ts +2 -0
- package/lib/animation.js +39 -0
- package/lib/animation.js.map +1 -0
- package/lib/array.d.ts +37 -0
- package/lib/array.js +126 -0
- package/lib/array.js.map +1 -0
- package/lib/clone.d.ts +4 -0
- package/lib/clone.js +111 -0
- package/lib/clone.js.map +1 -0
- package/lib/compose.d.ts +1 -0
- package/lib/compose.js +12 -0
- package/lib/compose.js.map +1 -0
- package/lib/coordinate.d.ts +106 -0
- package/lib/coordinate.js +514 -0
- package/lib/coordinate.js.map +1 -0
- package/lib/element.d.ts +6 -0
- package/lib/element.js +146 -0
- package/lib/element.js.map +1 -0
- package/lib/event.d.ts +81 -0
- package/lib/event.js +219 -0
- package/lib/event.js.map +1 -0
- package/lib/globalThisPolyfill.d.ts +1 -0
- package/lib/globalThisPolyfill.js +26 -0
- package/lib/globalThisPolyfill.js.map +1 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.js +34 -0
- package/lib/index.js.map +1 -0
- package/lib/instanceof.d.ts +1 -0
- package/lib/instanceof.js +16 -0
- package/lib/instanceof.js.map +1 -0
- package/lib/keycode.d.ts +147 -0
- package/lib/keycode.js +155 -0
- package/lib/keycode.js.map +1 -0
- package/lib/lru.d.ts +73 -0
- package/lib/lru.js +298 -0
- package/lib/lru.js.map +1 -0
- package/lib/observer.d.ts +9 -0
- package/lib/observer.js +34 -0
- package/lib/observer.js.map +1 -0
- package/lib/request-idle.d.ts +10 -0
- package/lib/request-idle.js +14 -0
- package/lib/request-idle.js.map +1 -0
- package/lib/scroller.d.ts +10 -0
- package/lib/scroller.js +89 -0
- package/lib/scroller.js.map +1 -0
- package/lib/subscribable.d.ts +14 -0
- package/lib/subscribable.js +53 -0
- package/lib/subscribable.js.map +1 -0
- package/lib/types.d.ts +13 -0
- package/lib/types.js +30 -0
- package/lib/types.js.map +1 -0
- package/lib/uid.d.ts +1 -0
- package/lib/uid.js +13 -0
- package/lib/uid.js.map +1 -0
- package/package.json +46 -4
- package/src/animation.ts +38 -0
- package/src/array.ts +301 -0
- package/src/clone.ts +105 -0
- package/src/compose.ts +7 -0
- package/src/coordinate.ts +640 -0
- package/src/element.ts +144 -0
- package/src/event.ts +395 -0
- package/src/globalThisPolyfill.ts +19 -0
- package/src/index.ts +17 -0
- package/src/instanceof.ts +10 -0
- package/src/keycode.ts +150 -0
- package/src/lru.ts +322 -0
- package/src/observer.ts +38 -0
- package/src/request-idle.ts +22 -0
- package/src/scroller.ts +113 -0
- package/src/subscribable.ts +60 -0
- package/src/types.ts +27 -0
- package/src/uid.ts +10 -0
package/esm/lru.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru.js","sourceRoot":"","sources":["../src/lru.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * A doubly linked list-based Least Recently Used (LRU) cache. Will keep most\n * recently used items while discarding least recently used items when its limit\n * is reached.\n *\n * Licensed under MIT. Copyright (c) 2010 Rasmus Andersson <http://hunch.se/>\n * See README.md for details.\n *\n * Illustration of the design:\n *\n * entry entry entry entry\n * ______ ______ ______ ______\n * | head |.newer => | |.newer => | |.newer => | tail |\n * | A | | B | | C | | D |\n * |______| <= older.|______| <= older.|______| <= older.|______|\n *\n * removed <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- <-- added\n */\n/* eslint-disable */\n\nconst NEWER = Symbol('newer')\nconst OLDER = Symbol('older')\n\nfunction Entry(key: any, value: any) {\n this.key = key\n this.value = value\n this[NEWER] = undefined\n this[OLDER] = undefined\n}\n\nexport class LRUMap<K, V> {\n size: number\n limit: number\n oldest: any\n newest: any\n _keymap: Map<K, { key: K; value: V }>\n constructor(limit: number, entries?: any) {\n if (typeof limit !== 'number') {\n // called as (entries)\n entries = limit\n limit = 0\n }\n\n this.size = 0\n this.limit = limit\n this.oldest = this.newest = undefined\n this._keymap = new Map()\n\n if (entries) {\n this.assign(entries)\n if (limit < 1) {\n this.limit = this.size\n }\n }\n }\n\n private _markEntryAsUsed(entry: any) {\n if (entry === this.newest) {\n // Already the most recenlty used entry, so no need to update the list\n return\n }\n // HEAD--------------TAIL\n // <.older .newer>\n // <--- add direction --\n // A B C <D> E\n if (entry[NEWER]) {\n if (entry === this.oldest) {\n this.oldest = entry[NEWER]\n }\n entry[NEWER][OLDER] = entry[OLDER] // C <-- E.\n }\n if (entry[OLDER]) {\n entry[OLDER][NEWER] = entry[NEWER] // C. --> E\n }\n entry[NEWER] = undefined // D --x\n entry[OLDER] = this.newest // D. --> E\n if (this.newest) {\n this.newest[NEWER] = entry // E. <-- D\n }\n this.newest = entry\n }\n\n assign(entries: any) {\n let entry: any\n let limit = this.limit || Number.MAX_VALUE\n this._keymap.clear()\n const it = entries[Symbol.iterator]()\n for (let itv = it.next(); !itv.done; itv = it.next()) {\n const e = new Entry(itv.value[0], itv.value[1])\n this._keymap.set(e.key, e)\n if (!entry) {\n this.oldest = e\n } else {\n entry[NEWER] = e\n e[OLDER] = entry\n }\n entry = e\n if (limit-- === 0) {\n throw new Error('overflow')\n }\n }\n this.newest = entry\n this.size = this._keymap.size\n }\n\n get(key: K) {\n // First, find our cache entry\n const entry = this._keymap.get(key)\n if (!entry) {\n return\n } // Not cached. Sorry.\n // As <key> was found in the cache, register it as being requested recently\n this._markEntryAsUsed(entry)\n return entry.value\n }\n\n set(key: K, value: V) {\n let entry = this._keymap.get(key)\n\n if (entry) {\n // update existing\n entry.value = value\n this._markEntryAsUsed(entry)\n return this\n }\n\n // new entry\n this._keymap.set(key, (entry = new Entry(key, value)))\n\n if (this.newest) {\n // link previous tail to the new tail (entry)\n this.newest[NEWER] = entry\n entry && (entry[OLDER] = this.newest)\n } else {\n // we're first in -- yay\n this.oldest = entry\n }\n\n // add new entry to the end of the linked list -- it's now the freshest entry.\n this.newest = entry\n ++this.size\n if (this.size > this.limit) {\n // we hit the limit -- remove the head\n this.shift()\n }\n\n return this\n }\n\n shift() {\n // todo: handle special case when limit == 1\n const entry = this.oldest\n if (entry) {\n if (this.oldest[NEWER]) {\n // advance the list\n this.oldest = this.oldest[NEWER]\n this.oldest[OLDER] = undefined\n } else {\n // the cache is exhausted\n this.oldest = undefined\n this.newest = undefined\n }\n // Remove last strong reference to <entry> and remove links from the purged\n // entry being returned:\n entry[NEWER] = entry[OLDER] = undefined\n this._keymap.delete(entry.key)\n --this.size\n return [entry.key, entry.value]\n }\n }\n\n find(key: K) {\n const e = this._keymap.get(key)\n return e ? e.value : undefined\n }\n\n has(key: K) {\n return this._keymap.has(key)\n }\n\n delete(key: any) {\n const entry = this._keymap.get(key)\n if (!entry) {\n return\n }\n this._keymap.delete(entry.key)\n if (entry[NEWER] && entry[OLDER]) {\n // relink the older entry with the newer entry\n entry[OLDER][NEWER] = entry[NEWER]\n entry[NEWER][OLDER] = entry[OLDER]\n } else if (entry[NEWER]) {\n // remove the link to us\n entry[NEWER][OLDER] = undefined\n // link the newer entry to head\n this.oldest = entry[NEWER]\n } else if (entry[OLDER]) {\n // remove the link to us\n entry[OLDER][NEWER] = undefined\n // link the newer entry to head\n this.newest = entry[OLDER]\n } else {\n // if(entry[OLDER] === undefined && entry.newer === undefined) {\n this.oldest = this.newest = undefined\n }\n\n this.size--\n return entry.value\n }\n\n clear() {\n // Not clearing links should be safe, as we don't expose live links to user\n this.oldest = this.newest = undefined\n this.size = 0\n this._keymap.clear()\n }\n\n keys() {\n return new KeyIterator(this.oldest)\n }\n\n values() {\n return new ValueIterator(this.oldest)\n }\n\n entries() {}\n\n forEach(fun: (value: any, key: any, ctx: object) => void, thisObj: any) {\n if (typeof thisObj !== 'object') {\n thisObj = this\n }\n let entry = this.oldest\n while (entry) {\n fun.call(thisObj, entry.value, entry.key, this)\n entry = entry[NEWER]\n }\n }\n\n toJSON() {\n const s = new Array(this.size)\n let i = 0\n let entry = this.oldest\n while (entry) {\n s[i++] = { key: entry.key, value: entry.value }\n entry = entry[NEWER]\n }\n return s\n }\n\n toString() {\n let s = ''\n let entry = this.oldest\n while (entry) {\n s += String(entry.key) + ':' + entry.value\n entry = entry[NEWER]\n if (entry) {\n s += ' < '\n }\n }\n return s\n }\n\n [Symbol.iterator]() {\n return new EntryIterator(this.oldest)\n }\n}\n\nclass EntryIterator {\n entry: any\n constructor(oldestEntry: any) {\n this.entry = oldestEntry\n }\n [Symbol.iterator]() {\n return this\n }\n next() {\n const ent = this.entry\n if (ent) {\n this.entry = ent[NEWER]\n return { done: false, value: [ent.key, ent.value] }\n } else {\n return { done: true, value: undefined }\n }\n }\n}\n\nclass KeyIterator {\n entry: any\n constructor(oldestEntry: any) {\n this.entry = oldestEntry\n }\n [Symbol.iterator]() {\n return this\n }\n next() {\n const ent = this.entry\n if (ent) {\n this.entry = ent[NEWER]\n return { done: false, value: ent.key }\n } else {\n return { done: true, value: undefined }\n }\n }\n}\n\nclass ValueIterator {\n entry: any\n constructor(oldestEntry: any) {\n this.entry = oldestEntry\n }\n [Symbol.iterator]() {\n return this\n }\n next() {\n const ent = this.entry\n if (ent) {\n this.entry = ent[NEWER]\n return { done: false, value: ent.value }\n } else {\n return { done: true, value: undefined }\n }\n }\n}\n"]}
|
package/esm/observer.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class LayoutObserver {
|
|
2
|
+
constructor(observer = () => { }) {
|
|
3
|
+
this.connected = false;
|
|
4
|
+
this.observe = (target) => {
|
|
5
|
+
this.resizeObserver.observe(target);
|
|
6
|
+
this.performanceObserver.observe({
|
|
7
|
+
entryTypes: ['paint', 'element', 'layout-shift', 'event'],
|
|
8
|
+
});
|
|
9
|
+
this.mutationObserver.observe(target, {
|
|
10
|
+
attributeFilter: ['style'],
|
|
11
|
+
attributes: true,
|
|
12
|
+
});
|
|
13
|
+
this.connected = true;
|
|
14
|
+
};
|
|
15
|
+
this.disconnect = () => {
|
|
16
|
+
if (this.connected) {
|
|
17
|
+
this.resizeObserver.disconnect();
|
|
18
|
+
this.performanceObserver.disconnect();
|
|
19
|
+
this.mutationObserver.disconnect();
|
|
20
|
+
}
|
|
21
|
+
this.connected = false;
|
|
22
|
+
};
|
|
23
|
+
this.resizeObserver = new ResizeObserver(() => observer());
|
|
24
|
+
this.performanceObserver = new PerformanceObserver(() => {
|
|
25
|
+
observer();
|
|
26
|
+
});
|
|
27
|
+
this.mutationObserver = new MutationObserver(() => observer());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../src/observer.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IASzB,YAAY,WAAuB,GAAG,EAAE,GAAE,CAAC;QAFnC,cAAS,GAAG,KAAK,CAAA;QAUzB,YAAO,GAAG,CAAC,MAA6B,EAAE,EAAE;YAC1C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACnC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBAC/B,UAAU,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC;aAC1D,CAAC,CAAA;YACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE;gBACpC,eAAe,EAAE,CAAC,OAAO,CAAC;gBAC1B,UAAU,EAAE,IAAI;aACjB,CAAC,CAAA;YACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACvB,CAAC,CAAA;QAED,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA;gBAChC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAA;gBACrC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAA;YACpC,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACxB,CAAC,CAAA;QA1BC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,GAAG,EAAE;YACtD,QAAQ,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChE,CAAC;CAsBF","sourcesContent":["export class LayoutObserver {\n private resizeObserver: ResizeObserver\n\n private performanceObserver: PerformanceObserver\n\n private mutationObserver: MutationObserver\n\n private connected = false\n\n constructor(observer: () => void = () => {}) {\n this.resizeObserver = new ResizeObserver(() => observer())\n this.performanceObserver = new PerformanceObserver(() => {\n observer()\n })\n this.mutationObserver = new MutationObserver(() => observer())\n }\n\n observe = (target: HTMLElement | Element) => {\n this.resizeObserver.observe(target)\n this.performanceObserver.observe({\n entryTypes: ['paint', 'element', 'layout-shift', 'event'],\n })\n this.mutationObserver.observe(target, {\n attributeFilter: ['style'],\n attributes: true,\n })\n this.connected = true\n }\n\n disconnect = () => {\n if (this.connected) {\n this.resizeObserver.disconnect()\n this.performanceObserver.disconnect()\n this.mutationObserver.disconnect()\n }\n this.connected = false\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import 'requestidlecallback';
|
|
2
|
+
export interface IIdleDeadline {
|
|
3
|
+
didTimeout: boolean;
|
|
4
|
+
timeRemaining: () => DOMHighResTimeStamp;
|
|
5
|
+
}
|
|
6
|
+
export interface IdleCallbackOptions {
|
|
7
|
+
timeout?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const requestIdle: (callback: (params: IIdleDeadline) => void, options?: IdleCallbackOptions) => number;
|
|
10
|
+
export declare const cancelIdle: (id: number) => void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import 'requestidlecallback';
|
|
2
|
+
import { globalThisPolyfill } from './globalThisPolyfill';
|
|
3
|
+
export const requestIdle = (callback, options) => {
|
|
4
|
+
return globalThisPolyfill['requestIdleCallback'](callback, options);
|
|
5
|
+
};
|
|
6
|
+
export const cancelIdle = (id) => {
|
|
7
|
+
globalThisPolyfill['cancelIdleCallback'](id);
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=request-idle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-idle.js","sourceRoot":"","sources":["../src/request-idle.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAA;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAWzD,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAyC,EACzC,OAA6B,EACrB,EAAE;IACV,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AACrE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,EAAE;IACvC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAA","sourcesContent":["import 'requestidlecallback'\nimport { globalThisPolyfill } from './globalThisPolyfill'\n\nexport interface IIdleDeadline {\n didTimeout: boolean\n timeRemaining: () => DOMHighResTimeStamp\n}\n\nexport interface IdleCallbackOptions {\n timeout?: number\n}\n\nexport const requestIdle = (\n callback: (params: IIdleDeadline) => void,\n options?: IdleCallbackOptions\n): number => {\n return globalThisPolyfill['requestIdleCallback'](callback, options)\n}\n\nexport const cancelIdle = (id: number) => {\n globalThisPolyfill['cancelIdleCallback'](id)\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IPoint } from './coordinate';
|
|
2
|
+
export type ScrollDirection = 'begin' | 'end';
|
|
3
|
+
export interface IAutoScrollBasicInfo {
|
|
4
|
+
direction: ScrollDirection;
|
|
5
|
+
speedFactor: number;
|
|
6
|
+
speed: number;
|
|
7
|
+
}
|
|
8
|
+
export declare const calcAutoScrollBasicInfo: (point: IPoint, axis: "x" | "y", viewport: DOMRect, maxSpeed?: number) => IAutoScrollBasicInfo | null;
|
|
9
|
+
export declare const updateScrollValue: (element: HTMLElement | Window, axis: "x" | "y", value: number, callback?: (scrollValue: number) => void) => void;
|
|
10
|
+
export declare const scrollAnimate: (element: HTMLElement | Window, axis: "x" | "y", direction: "begin" | "end", speed: number, callback?: (scrollValue: number) => void) => () => void;
|
package/esm/scroller.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { createUniformSpeedAnimation, calcSpeedFactor } from './animation';
|
|
2
|
+
import { isFn, isWindow } from './types';
|
|
3
|
+
const MAX_SPEED = 80; // px/s
|
|
4
|
+
export const calcAutoScrollBasicInfo = (point, axis, viewport, maxSpeed = MAX_SPEED) => {
|
|
5
|
+
const { left, right, top, bottom } = viewport;
|
|
6
|
+
const { x, y } = point;
|
|
7
|
+
let begin;
|
|
8
|
+
let end;
|
|
9
|
+
let pos;
|
|
10
|
+
let speedFactor = 0;
|
|
11
|
+
if (axis === 'x') {
|
|
12
|
+
begin = left;
|
|
13
|
+
end = right;
|
|
14
|
+
pos = x;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
begin = top;
|
|
18
|
+
end = bottom;
|
|
19
|
+
pos = y;
|
|
20
|
+
}
|
|
21
|
+
const scrollerSize = end - begin;
|
|
22
|
+
const moveDistance = scrollerSize > 400 ? 100 : scrollerSize / 3;
|
|
23
|
+
if (end - pos < moveDistance) {
|
|
24
|
+
return {
|
|
25
|
+
direction: 'end',
|
|
26
|
+
speedFactor,
|
|
27
|
+
speed: maxSpeed * calcSpeedFactor(end - pos, moveDistance),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else if (pos - begin < moveDistance) {
|
|
31
|
+
return {
|
|
32
|
+
direction: 'begin',
|
|
33
|
+
speedFactor,
|
|
34
|
+
speed: maxSpeed * calcSpeedFactor(pos - begin, moveDistance),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
};
|
|
39
|
+
export const updateScrollValue = (element, axis, value, callback) => {
|
|
40
|
+
if (element) {
|
|
41
|
+
if (!isWindow(element)) {
|
|
42
|
+
if (axis === 'x') {
|
|
43
|
+
if (element.scrollLeft + value > element.scrollWidth)
|
|
44
|
+
return;
|
|
45
|
+
element.scrollLeft += value;
|
|
46
|
+
if (isFn(callback)) {
|
|
47
|
+
callback(element.scrollLeft);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (element.scrollTop + value > element.scrollHeight)
|
|
52
|
+
return;
|
|
53
|
+
element.scrollTop += value;
|
|
54
|
+
if (isFn(callback)) {
|
|
55
|
+
callback(element.scrollTop);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
if (axis === 'x') {
|
|
61
|
+
element.scrollBy({
|
|
62
|
+
left: value,
|
|
63
|
+
behavior: 'smooth',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
element.scrollBy({
|
|
68
|
+
top: value,
|
|
69
|
+
behavior: 'smooth',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (isFn(callback)) {
|
|
73
|
+
callback(value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
export const scrollAnimate = (element, axis, direction, speed, callback) => {
|
|
79
|
+
return createUniformSpeedAnimation(speed, (delta) => {
|
|
80
|
+
updateScrollValue(element, axis, direction === 'begin' ? 0 - delta : delta, callback);
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=scroller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroller.js","sourceRoot":"","sources":["../src/scroller.ts"],"names":[],"mappings":"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","sourcesContent":["import { IPoint } from './coordinate'\nimport { createUniformSpeedAnimation, calcSpeedFactor } from './animation'\nimport { isFn, isWindow } from './types'\n\nconst MAX_SPEED = 80 // px/s\n\nexport type ScrollDirection = 'begin' | 'end'\n\nexport interface IAutoScrollBasicInfo {\n direction: ScrollDirection\n speedFactor: number\n speed: number\n}\n\nexport const calcAutoScrollBasicInfo = (\n point: IPoint,\n axis: 'x' | 'y',\n viewport: DOMRect,\n maxSpeed = MAX_SPEED\n): IAutoScrollBasicInfo | null => {\n const { left, right, top, bottom } = viewport\n const { x, y } = point\n\n let begin: number\n let end: number\n let pos: number\n let speedFactor = 0\n if (axis === 'x') {\n begin = left\n end = right\n pos = x\n } else {\n begin = top\n end = bottom\n pos = y\n }\n\n const scrollerSize = end - begin\n\n const moveDistance = scrollerSize > 400 ? 100 : scrollerSize / 3\n if (end - pos < moveDistance) {\n return {\n direction: 'end',\n speedFactor,\n speed: maxSpeed * calcSpeedFactor(end - pos, moveDistance),\n }\n } else if (pos - begin < moveDistance) {\n return {\n direction: 'begin',\n speedFactor,\n speed: maxSpeed * calcSpeedFactor(pos - begin, moveDistance),\n }\n }\n\n return null\n}\n\nexport const updateScrollValue = (\n element: HTMLElement | Window,\n axis: 'x' | 'y',\n value: number,\n callback?: (scrollValue: number) => void\n) => {\n if (element) {\n if (!isWindow(element)) {\n if (axis === 'x') {\n if (element.scrollLeft + value > element.scrollWidth) return\n element.scrollLeft += value\n if (isFn(callback)) {\n callback(element.scrollLeft)\n }\n } else {\n if (element.scrollTop + value > element.scrollHeight) return\n element.scrollTop += value\n if (isFn(callback)) {\n callback(element.scrollTop)\n }\n }\n } else {\n if (axis === 'x') {\n element.scrollBy({\n left: value,\n behavior: 'smooth',\n })\n } else {\n element.scrollBy({\n top: value,\n behavior: 'smooth',\n })\n }\n if (isFn(callback)) {\n callback(value)\n }\n }\n }\n}\n\nexport const scrollAnimate = (\n element: HTMLElement | Window,\n axis: 'x' | 'y',\n direction: 'begin' | 'end',\n speed: number,\n callback?: (scrollValue: number) => void\n) => {\n return createUniformSpeedAnimation(speed, (delta) => {\n updateScrollValue(\n element,\n axis,\n direction === 'begin' ? 0 - delta : delta,\n callback\n )\n })\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const UNSUBSCRIBE_ID_SYMBOL: unique symbol;
|
|
2
|
+
export interface ISubscriber<Payload = any> {
|
|
3
|
+
(payload: Payload): void | boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class Subscribable<ExtendsType = any> {
|
|
6
|
+
private subscribers;
|
|
7
|
+
dispatch<T extends ExtendsType = any>(event: T, context?: any): boolean;
|
|
8
|
+
subscribe(subscriber: ISubscriber): {
|
|
9
|
+
(): void;
|
|
10
|
+
[UNSUBSCRIBE_ID_SYMBOL]: number;
|
|
11
|
+
};
|
|
12
|
+
unsubscribe: (id?: number | string | (() => void)) => void;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { isFn } from './types';
|
|
2
|
+
const UNSUBSCRIBE_ID_SYMBOL = Symbol('UNSUBSCRIBE_ID_SYMBOL');
|
|
3
|
+
export class Subscribable {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.subscribers = {
|
|
6
|
+
index: 0,
|
|
7
|
+
};
|
|
8
|
+
this.unsubscribe = (id) => {
|
|
9
|
+
if (id === undefined || id === null) {
|
|
10
|
+
for (const key in this.subscribers) {
|
|
11
|
+
this.unsubscribe(key);
|
|
12
|
+
}
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (!isFn(id)) {
|
|
16
|
+
delete this.subscribers[id];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
delete this.subscribers[id[UNSUBSCRIBE_ID_SYMBOL]];
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
dispatch(event, context) {
|
|
24
|
+
let interrupted = false;
|
|
25
|
+
for (const key in this.subscribers) {
|
|
26
|
+
if (isFn(this.subscribers[key])) {
|
|
27
|
+
event['context'] = context;
|
|
28
|
+
if (this.subscribers[key](event) === false) {
|
|
29
|
+
interrupted = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return interrupted ? false : true;
|
|
34
|
+
}
|
|
35
|
+
subscribe(subscriber) {
|
|
36
|
+
let id = 0;
|
|
37
|
+
if (isFn(subscriber)) {
|
|
38
|
+
id = this.subscribers.index + 1;
|
|
39
|
+
this.subscribers[id] = subscriber;
|
|
40
|
+
this.subscribers.index++;
|
|
41
|
+
}
|
|
42
|
+
const unsubscribe = () => {
|
|
43
|
+
this.unsubscribe(id);
|
|
44
|
+
};
|
|
45
|
+
unsubscribe[UNSUBSCRIBE_ID_SYMBOL] = id;
|
|
46
|
+
return unsubscribe;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=subscribable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribable.js","sourceRoot":"","sources":["../src/subscribable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,MAAM,qBAAqB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAA;AAM7D,MAAM,OAAO,YAAY;IAAzB;QACU,gBAAW,GAGf;YACF,KAAK,EAAE,CAAC;SACT,CAAA;QAgCD,gBAAW,GAAG,CAAC,EAAmC,EAAE,EAAE;YACpD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACpC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACvB,CAAC;gBACD,OAAM;YACR,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAA;YACpD,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IA3CC,QAAQ,CAA8B,KAAQ,EAAE,OAAa;QAC3D,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAA;gBAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;oBAC3C,WAAW,GAAG,IAAI,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,UAAuB;QAC/B,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrB,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAA;YAC/B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAA;YACjC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QAC1B,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC,CAAA;QAED,WAAW,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAA;QAEvC,OAAO,WAAW,CAAA;IACpB,CAAC;CAeF","sourcesContent":["import { isFn } from './types'\n\nconst UNSUBSCRIBE_ID_SYMBOL = Symbol('UNSUBSCRIBE_ID_SYMBOL')\n\nexport interface ISubscriber<Payload = any> {\n (payload: Payload): void | boolean\n}\n\nexport class Subscribable<ExtendsType = any> {\n private subscribers: {\n index: number\n [key: number]: ISubscriber\n } = {\n index: 0,\n }\n\n dispatch<T extends ExtendsType = any>(event: T, context?: any) {\n let interrupted = false\n for (const key in this.subscribers) {\n if (isFn(this.subscribers[key])) {\n event['context'] = context\n if (this.subscribers[key](event) === false) {\n interrupted = true\n }\n }\n }\n return interrupted ? false : true\n }\n\n subscribe(subscriber: ISubscriber) {\n let id = 0\n if (isFn(subscriber)) {\n id = this.subscribers.index + 1\n this.subscribers[id] = subscriber\n this.subscribers.index++\n }\n\n const unsubscribe = () => {\n this.unsubscribe(id)\n }\n\n unsubscribe[UNSUBSCRIBE_ID_SYMBOL] = id\n\n return unsubscribe\n }\n\n unsubscribe = (id?: number | string | (() => void)) => {\n if (id === undefined || id === null) {\n for (const key in this.subscribers) {\n this.unsubscribe(key)\n }\n return\n }\n if (!isFn(id)) {\n delete this.subscribers[id]\n } else {\n delete this.subscribers[id[UNSUBSCRIBE_ID_SYMBOL]]\n }\n }\n}\n"]}
|
package/esm/types.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const getType: (obj: unknown) => any;
|
|
2
|
+
export declare const isFn: (obj: unknown) => obj is (...args: any[]) => any;
|
|
3
|
+
export declare const isWindow: (obj: unknown) => obj is Window;
|
|
4
|
+
export declare const isHTMLElement: (obj: any) => obj is HTMLElement;
|
|
5
|
+
export declare const isArr: (arg: any) => arg is any[];
|
|
6
|
+
export declare const isPlainObj: (obj: unknown) => obj is object;
|
|
7
|
+
export declare const isStr: (obj: unknown) => obj is string;
|
|
8
|
+
export declare const isBool: (obj: unknown) => obj is boolean;
|
|
9
|
+
export declare const isNum: (obj: unknown) => obj is number;
|
|
10
|
+
export declare const isObj: (val: unknown) => val is object;
|
|
11
|
+
export declare const isRegExp: (obj: unknown) => obj is RegExp;
|
|
12
|
+
export declare const isValid: (val: unknown) => boolean;
|
|
13
|
+
export declare const isValidNumber: (val: any) => val is number;
|
package/esm/types.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const isType = (type) => (obj) => obj != null &&
|
|
2
|
+
(Array.isArray(type) ? type : [type]).some((t) => getType(obj) === `[object ${t}]`);
|
|
3
|
+
export const getType = (obj) => Object.prototype.toString.call(obj);
|
|
4
|
+
export const isFn = isType([
|
|
5
|
+
'Function',
|
|
6
|
+
'AsyncFunction',
|
|
7
|
+
'GeneratorFunction',
|
|
8
|
+
]);
|
|
9
|
+
export const isWindow = isType('Window');
|
|
10
|
+
export const isHTMLElement = (obj) => {
|
|
11
|
+
return (obj === null || obj === void 0 ? void 0 : obj['nodeName']) || (obj === null || obj === void 0 ? void 0 : obj['tagName']);
|
|
12
|
+
};
|
|
13
|
+
export const isArr = Array.isArray;
|
|
14
|
+
export const isPlainObj = isType('Object');
|
|
15
|
+
export const isStr = isType('String');
|
|
16
|
+
export const isBool = isType('Boolean');
|
|
17
|
+
export const isNum = isType('Number');
|
|
18
|
+
export const isObj = (val) => typeof val === 'object';
|
|
19
|
+
export const isRegExp = isType('RegExp');
|
|
20
|
+
export const isValid = (val) => val !== null && val !== undefined;
|
|
21
|
+
export const isValidNumber = (val) => !isNaN(val) && isNum(val);
|
|
22
|
+
//# sourceMappingURL=types.js.map
|
package/esm/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GACV,CAAI,IAAuB,EAAE,EAAE,CAC/B,CAAC,GAAY,EAAY,EAAE,CACzB,GAAG,IAAI,IAAI;IACX,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,GAAG,CACxC,CAAA;AACL,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC5E,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAA0B;IAClD,UAAU;IACV,eAAe;IACf,mBAAmB;CACpB,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAsB,EAAE;IAC5D,OAAO,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,UAAU,CAAC,MAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,SAAS,CAAC,CAAA,CAAA;AAC9C,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAA;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAU,SAAS,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAA;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAY,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAA;AAC7E,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAA;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAiB,EAAE,CACvD,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA","sourcesContent":["const isType =\n <T>(type: string | string[]) =>\n (obj: unknown): obj is T =>\n obj != null &&\n (Array.isArray(type) ? type : [type]).some(\n (t) => getType(obj) === `[object ${t}]`\n )\nexport const getType = (obj: unknown) => Object.prototype.toString.call(obj)\nexport const isFn = isType<(...args: any[]) => any>([\n 'Function',\n 'AsyncFunction',\n 'GeneratorFunction',\n])\nexport const isWindow = isType<Window>('Window')\nexport const isHTMLElement = (obj: any): obj is HTMLElement => {\n return obj?.['nodeName'] || obj?.['tagName']\n}\nexport const isArr = Array.isArray\nexport const isPlainObj = isType<object>('Object')\nexport const isStr = isType<string>('String')\nexport const isBool = isType<boolean>('Boolean')\nexport const isNum = isType<number>('Number')\nexport const isObj = (val: unknown): val is object => typeof val === 'object'\nexport const isRegExp = isType<RegExp>('RegExp')\nexport const isValid = (val: unknown) => val !== null && val !== undefined\nexport const isValidNumber = (val: any): val is number =>\n !isNaN(val) && isNum(val)\n"]}
|
package/esm/uid.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function uid(len?: number): string;
|
package/esm/uid.js
ADDED
package/esm/uid.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uid.js","sourceRoot":"","sources":["../src/uid.ts"],"names":[],"mappings":"AAAA,IAAI,GAAG,GAAG,EAAE,EACV,GAAG,GAAG,EAAE,CAAA;AACV,OAAO,GAAG,EAAE;IAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAErC,MAAM,UAAU,GAAG,CAAC,GAAY;IAC9B,IAAI,GAAG,GAAG,EAAE,EACV,GAAG,GAAG,GAAG,IAAI,EAAE,CAAA;IACjB,OAAO,GAAG,EAAE;QAAE,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAClD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["let IDX = 36,\n HEX = ''\nwhile (IDX--) HEX += IDX.toString(36)\n\nexport function uid(len?: number) {\n let str = '',\n num = len || 11\n while (num--) str += HEX[(Math.random() * 36) | 0]\n return str\n}\n"]}
|
package/lib/animation.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calcSpeedFactor = exports.createUniformSpeedAnimation = void 0;
|
|
4
|
+
const createUniformSpeedAnimation = (speed = 10, callback) => {
|
|
5
|
+
let request = null;
|
|
6
|
+
let startTime = null;
|
|
7
|
+
const start = () => {
|
|
8
|
+
if (request)
|
|
9
|
+
return;
|
|
10
|
+
request = requestAnimationFrame((timestamp) => {
|
|
11
|
+
if (startTime === null) {
|
|
12
|
+
startTime = timestamp;
|
|
13
|
+
}
|
|
14
|
+
const deltaTime = timestamp - startTime;
|
|
15
|
+
const delta = (deltaTime / 1000) * speed;
|
|
16
|
+
callback(delta);
|
|
17
|
+
request = null;
|
|
18
|
+
start();
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
start();
|
|
22
|
+
return () => {
|
|
23
|
+
if (request) {
|
|
24
|
+
cancelAnimationFrame(request);
|
|
25
|
+
request = null;
|
|
26
|
+
}
|
|
27
|
+
startTime = null;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
exports.createUniformSpeedAnimation = createUniformSpeedAnimation;
|
|
31
|
+
//越接近阈值,速度越小,越远离阈值,速度越大
|
|
32
|
+
const calcSpeedFactor = (delta = 0, threshold = Infinity) => {
|
|
33
|
+
if (threshold >= delta) {
|
|
34
|
+
return (threshold - delta) / threshold;
|
|
35
|
+
}
|
|
36
|
+
return 0;
|
|
37
|
+
};
|
|
38
|
+
exports.calcSpeedFactor = calcSpeedFactor;
|
|
39
|
+
//# sourceMappingURL=animation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation.js","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":";;;AAAO,MAAM,2BAA2B,GAAG,CACzC,KAAK,GAAG,EAAE,EACV,QAAiC,EACjC,EAAE;IACF,IAAI,OAAO,GAAkB,IAAI,CAAA;IACjC,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,OAAO;YAAE,OAAM;QACnB,OAAO,GAAG,qBAAqB,CAAC,CAAC,SAAS,EAAE,EAAE;YAC5C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,SAAS,GAAG,SAAS,CAAA;YACvB,CAAC;YACD,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;YACvC,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,KAAK,CAAA;YACxC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,OAAO,GAAG,IAAI,CAAA;YACd,KAAK,EAAE,CAAA;QACT,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,KAAK,EAAE,CAAA;IAEP,OAAO,GAAG,EAAE;QACV,IAAI,OAAO,EAAE,CAAC;YACZ,oBAAoB,CAAC,OAAO,CAAC,CAAA;YAC7B,OAAO,GAAG,IAAI,CAAA;QAChB,CAAC;QACD,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC,CAAA;AACH,CAAC,CAAA;AA7BY,QAAA,2BAA2B,+BA6BvC;AAED,uBAAuB;AAChB,MAAM,eAAe,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,QAAQ,EAAE,EAAE;IACjE,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,SAAS,CAAA;IACxC,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AALY,QAAA,eAAe,mBAK3B","sourcesContent":["export const createUniformSpeedAnimation = (\n speed = 10,\n callback: (delta: number) => void\n) => {\n let request: number | null = null\n let startTime: number | null = null\n const start = () => {\n if (request) return\n request = requestAnimationFrame((timestamp) => {\n if (startTime === null) {\n startTime = timestamp\n }\n const deltaTime = timestamp - startTime\n const delta = (deltaTime / 1000) * speed\n callback(delta)\n request = null\n start()\n })\n }\n\n start()\n\n return () => {\n if (request) {\n cancelAnimationFrame(request)\n request = null\n }\n startTime = null\n }\n}\n\n//越接近阈值,速度越小,越远离阈值,速度越大\nexport const calcSpeedFactor = (delta = 0, threshold = Infinity) => {\n if (threshold >= delta) {\n return (threshold - delta) / threshold\n }\n return 0\n}\n"]}
|
package/lib/array.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
type EachArrayIterator<T> = (currentValue: T, key: number) => void | boolean;
|
|
2
|
+
type EachStringIterator = (currentValue: string, key: number) => void | boolean;
|
|
3
|
+
type EachObjectIterator<T = any> = (currentValue: T, key: string) => void | boolean;
|
|
4
|
+
type MapArrayIterator<TItem, TResult> = (currentValue: TItem, key: number) => TResult;
|
|
5
|
+
type MapStringIterator<TResult> = (currentValue: string, key: number) => TResult;
|
|
6
|
+
type MapObjectIterator<TItem, TResult> = (currentValue: TItem, key: string) => TResult;
|
|
7
|
+
type MemoArrayIterator<T, U> = (previousValue: U, currentValue: T, key: number) => U;
|
|
8
|
+
type MemoStringIterator<T> = (previousValue: T, currentValue: string, key: number) => T;
|
|
9
|
+
type MemoObjectIterator<TValue, TResult> = (previousValue: TResult, currentValue: TValue, key: string) => TResult;
|
|
10
|
+
export declare const toArr: (val: any) => any[];
|
|
11
|
+
export declare function each(val: string, iterator: EachStringIterator, revert?: boolean): void;
|
|
12
|
+
export declare function each<T>(val: T[], iterator: EachArrayIterator<T>, revert?: boolean): void;
|
|
13
|
+
export declare function each<T extends {}, TValue = T[keyof T]>(val: T, iterator: EachObjectIterator<TValue>, revert?: boolean): void;
|
|
14
|
+
export declare function map<T>(val: string, iterator: MapStringIterator<T>, revert?: boolean): any;
|
|
15
|
+
export declare function map<TItem, TResult>(val: TItem[], iterator: MapArrayIterator<TItem, TResult>, revert?: boolean): any;
|
|
16
|
+
export declare function map<T extends {}, TResult>(val: T, iterator: MapObjectIterator<T[keyof T], TResult>, revert?: boolean): any;
|
|
17
|
+
export declare function reduce<T, U>(val: T[], iterator: MemoArrayIterator<T, U>, accumulator?: U, revert?: boolean): U;
|
|
18
|
+
export declare function reduce<T>(val: string, iterator: MemoStringIterator<T>, accumulator?: T, revert?: boolean): T;
|
|
19
|
+
export declare function reduce<T extends {}, TValue = T[keyof T], TResult = any>(val: T, iterator: MemoObjectIterator<TValue, TResult>, accumulator?: TResult, revert?: boolean): TResult;
|
|
20
|
+
export declare function every<T extends string>(val: T, iterator: EachStringIterator, revert?: boolean): boolean;
|
|
21
|
+
export declare function every<T>(val: T[], iterator: EachArrayIterator<T>, revert?: boolean): boolean;
|
|
22
|
+
export declare function every<T extends {}, TValue = T[keyof T]>(val: T, iterator: EachObjectIterator, revert?: boolean): boolean;
|
|
23
|
+
export declare function some<T extends string>(val: T, iterator: EachStringIterator, revert?: boolean): boolean;
|
|
24
|
+
export declare function some<T>(val: T[], iterator: EachArrayIterator<T>, revert?: boolean): boolean;
|
|
25
|
+
export declare function some<T extends {}, TValue = T[keyof T]>(val: T, iterator: EachObjectIterator, revert?: boolean): boolean;
|
|
26
|
+
export declare function findIndex<T extends string>(val: T, iterator: EachStringIterator, revert?: boolean): number;
|
|
27
|
+
export declare function findIndex<T>(val: T[], iterator: EachArrayIterator<T>, revert?: boolean): number;
|
|
28
|
+
export declare function findIndex<T extends {}, TValue = T[keyof T]>(val: T, iterator: EachObjectIterator, revert?: boolean): keyof T;
|
|
29
|
+
export declare function find<T extends string>(val: T, iterator: EachStringIterator, revert?: boolean): any;
|
|
30
|
+
export declare function find<T>(val: T[], iterator: EachArrayIterator<T>, revert?: boolean): T;
|
|
31
|
+
export declare function find<T extends {}, TValue = T[keyof T]>(val: T, iterator: EachObjectIterator, revert?: boolean): T[keyof T];
|
|
32
|
+
export declare function includes<T extends string>(val: T, searchElement: string, revert?: boolean): boolean;
|
|
33
|
+
export declare function includes<T>(val: T[], searchElement: T, revert?: boolean): boolean;
|
|
34
|
+
export declare function includesWith<T extends string>(val: T, search: (item: string) => boolean): boolean;
|
|
35
|
+
export declare function includesWith<T>(val: T[], search: (item: T) => boolean): boolean;
|
|
36
|
+
export declare const flat: <T>(array: Array<T | T[]>) => T[];
|
|
37
|
+
export {};
|
package/lib/array.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flat = exports.toArr = void 0;
|
|
4
|
+
exports.each = each;
|
|
5
|
+
exports.map = map;
|
|
6
|
+
exports.reduce = reduce;
|
|
7
|
+
exports.every = every;
|
|
8
|
+
exports.some = some;
|
|
9
|
+
exports.findIndex = findIndex;
|
|
10
|
+
exports.find = find;
|
|
11
|
+
exports.includes = includes;
|
|
12
|
+
exports.includesWith = includesWith;
|
|
13
|
+
const types_1 = require("./types");
|
|
14
|
+
const toArr = (val) => ((0, types_1.isArr)(val) ? val : val ? [val] : []);
|
|
15
|
+
exports.toArr = toArr;
|
|
16
|
+
function each(val, iterator, revert) {
|
|
17
|
+
if ((0, types_1.isArr)(val) || (0, types_1.isStr)(val)) {
|
|
18
|
+
if (revert) {
|
|
19
|
+
for (let i = val.length - 1; i >= 0; i--) {
|
|
20
|
+
if (iterator(val[i], i) === false) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
for (let i = 0; i < val.length; i++) {
|
|
27
|
+
if (iterator(val[i], i) === false) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if ((0, types_1.isObj)(val)) {
|
|
34
|
+
let key;
|
|
35
|
+
for (key in val) {
|
|
36
|
+
if (Object.hasOwnProperty.call(val, key)) {
|
|
37
|
+
if (iterator(val[key], key) === false) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function map(val, iterator, revert) {
|
|
45
|
+
const res = (0, types_1.isArr)(val) || (0, types_1.isStr)(val) ? [] : {};
|
|
46
|
+
each(val, (item, key) => {
|
|
47
|
+
const value = iterator(item, key);
|
|
48
|
+
if ((0, types_1.isArr)(res)) {
|
|
49
|
+
;
|
|
50
|
+
res.push(value);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
res[key] = value;
|
|
54
|
+
}
|
|
55
|
+
}, revert);
|
|
56
|
+
return res;
|
|
57
|
+
}
|
|
58
|
+
function reduce(val, iterator, accumulator, revert) {
|
|
59
|
+
let result = accumulator;
|
|
60
|
+
each(val, (item, key) => {
|
|
61
|
+
result = iterator(result, item, key);
|
|
62
|
+
}, revert);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
function every(val, iterator, revert) {
|
|
66
|
+
let res = true;
|
|
67
|
+
each(val, (item, key) => {
|
|
68
|
+
if (!iterator(item, key)) {
|
|
69
|
+
res = false;
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}, revert);
|
|
73
|
+
return res;
|
|
74
|
+
}
|
|
75
|
+
function some(val, iterator, revert) {
|
|
76
|
+
let res = false;
|
|
77
|
+
each(val, (item, key) => {
|
|
78
|
+
if (iterator(item, key)) {
|
|
79
|
+
res = true;
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}, revert);
|
|
83
|
+
return res;
|
|
84
|
+
}
|
|
85
|
+
function findIndex(val, iterator, revert) {
|
|
86
|
+
let res = -1;
|
|
87
|
+
each(val, (item, key) => {
|
|
88
|
+
if (iterator(item, key)) {
|
|
89
|
+
res = key;
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}, revert);
|
|
93
|
+
return res;
|
|
94
|
+
}
|
|
95
|
+
function find(val, iterator, revert) {
|
|
96
|
+
let res;
|
|
97
|
+
each(val, (item, key) => {
|
|
98
|
+
if (iterator(item, key)) {
|
|
99
|
+
res = item;
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}, revert);
|
|
103
|
+
return res;
|
|
104
|
+
}
|
|
105
|
+
function includes(val, searchElement, revert) {
|
|
106
|
+
if ((0, types_1.isStr)(val))
|
|
107
|
+
return val.includes(searchElement);
|
|
108
|
+
return some(val, (item) => item === searchElement, revert);
|
|
109
|
+
}
|
|
110
|
+
function includesWith(val, search) {
|
|
111
|
+
if ((0, types_1.isArr)(val)) {
|
|
112
|
+
return val.some((item) => search(item));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const flat = (array) => {
|
|
119
|
+
return (0, exports.toArr)(array).reduce((buf, item) => {
|
|
120
|
+
if ((0, types_1.isArr)(item))
|
|
121
|
+
return buf.concat((0, exports.flat)(item));
|
|
122
|
+
return buf.concat(item);
|
|
123
|
+
}, []);
|
|
124
|
+
};
|
|
125
|
+
exports.flat = flat;
|
|
126
|
+
//# sourceMappingURL=array.js.map
|
package/lib/array.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"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","sourcesContent":["import { isArr, isObj, isStr } from './types'\n\ntype EachArrayIterator<T> = (currentValue: T, key: number) => void | boolean\ntype EachStringIterator = (currentValue: string, key: number) => void | boolean\ntype EachObjectIterator<T = any> = (\n currentValue: T,\n key: string\n) => void | boolean\ntype MapArrayIterator<TItem, TResult> = (\n currentValue: TItem,\n key: number\n) => TResult\ntype MapStringIterator<TResult> = (currentValue: string, key: number) => TResult\ntype MapObjectIterator<TItem, TResult> = (\n currentValue: TItem,\n key: string\n) => TResult\ntype MemoArrayIterator<T, U> = (\n previousValue: U,\n currentValue: T,\n key: number\n) => U\ntype MemoStringIterator<T> = (\n previousValue: T,\n currentValue: string,\n key: number\n) => T\ntype MemoObjectIterator<TValue, TResult> = (\n previousValue: TResult,\n currentValue: TValue,\n key: string\n) => TResult\n\nexport const toArr = (val: any): any[] => (isArr(val) ? val : val ? [val] : [])\nexport function each(\n val: string,\n iterator: EachStringIterator,\n revert?: boolean\n): void\nexport function each<T>(\n val: T[],\n iterator: EachArrayIterator<T>,\n revert?: boolean\n): void\nexport function each<T extends {}, TValue = T[keyof T]>(\n val: T,\n iterator: EachObjectIterator<TValue>,\n revert?: boolean\n): void\nexport function each(val: any, iterator: any, revert?: boolean): void {\n if (isArr(val) || isStr(val)) {\n if (revert) {\n for (let i: number = val.length - 1; i >= 0; i--) {\n if (iterator(val[i], i) === false) {\n return\n }\n }\n } else {\n for (let i = 0; i < val.length; i++) {\n if (iterator(val[i], i) === false) {\n return\n }\n }\n }\n } else if (isObj(val)) {\n let key: string\n for (key in val) {\n if (Object.hasOwnProperty.call(val, key)) {\n if (iterator(val[key], key) === false) {\n return\n }\n }\n }\n }\n}\n\nexport function map<T>(\n val: string,\n iterator: MapStringIterator<T>,\n revert?: boolean\n): any\nexport function map<TItem, TResult>(\n val: TItem[],\n iterator: MapArrayIterator<TItem, TResult>,\n revert?: boolean\n): any\nexport function map<T extends {}, TResult>(\n val: T,\n iterator: MapObjectIterator<T[keyof T], TResult>,\n revert?: boolean\n): any\nexport function map(val: any, iterator: any, revert?: boolean): any {\n const res = isArr(val) || isStr(val) ? [] : {}\n each(\n val,\n (item, key) => {\n const value = iterator(item, key)\n if (isArr(res)) {\n ;(res as any).push(value)\n } else {\n res[key] = value\n }\n },\n revert\n )\n return res\n}\n\nexport function reduce<T, U>(\n val: T[],\n iterator: MemoArrayIterator<T, U>,\n accumulator?: U,\n revert?: boolean\n): U\nexport function reduce<T>(\n val: string,\n iterator: MemoStringIterator<T>,\n accumulator?: T,\n revert?: boolean\n): T\nexport function reduce<T extends {}, TValue = T[keyof T], TResult = any>(\n val: T,\n iterator: MemoObjectIterator<TValue, TResult>,\n accumulator?: TResult,\n revert?: boolean\n): TResult\nexport function reduce(\n val: any,\n iterator: any,\n accumulator?: any,\n revert?: boolean\n): any {\n let result = accumulator\n each(\n val,\n (item, key) => {\n result = iterator(result, item, key)\n },\n revert\n )\n return result\n}\n\nexport function every<T extends string>(\n val: T,\n iterator: EachStringIterator,\n revert?: boolean\n): boolean\nexport function every<T>(\n val: T[],\n iterator: EachArrayIterator<T>,\n revert?: boolean\n): boolean\nexport function every<T extends {}, TValue = T[keyof T]>(\n val: T,\n iterator: EachObjectIterator,\n revert?: boolean\n): boolean\nexport function every(val: any, iterator: any, revert?: boolean): boolean {\n let res = true\n each(\n val,\n (item, key) => {\n if (!iterator(item, key)) {\n res = false\n return false\n }\n },\n revert\n )\n return res\n}\n\nexport function some<T extends string>(\n val: T,\n iterator: EachStringIterator,\n revert?: boolean\n): boolean\nexport function some<T>(\n val: T[],\n iterator: EachArrayIterator<T>,\n revert?: boolean\n): boolean\nexport function some<T extends {}, TValue = T[keyof T]>(\n val: T,\n iterator: EachObjectIterator,\n revert?: boolean\n): boolean\nexport function some(val: any, iterator: any, revert?: boolean): boolean {\n let res = false\n each(\n val,\n (item, key) => {\n if (iterator(item, key)) {\n res = true\n return false\n }\n },\n revert\n )\n return res\n}\n\nexport function findIndex<T extends string>(\n val: T,\n iterator: EachStringIterator,\n revert?: boolean\n): number\nexport function findIndex<T>(\n val: T[],\n iterator: EachArrayIterator<T>,\n revert?: boolean\n): number\nexport function findIndex<T extends {}, TValue = T[keyof T]>(\n val: T,\n iterator: EachObjectIterator,\n revert?: boolean\n): keyof T\nexport function findIndex(\n val: any,\n iterator: any,\n revert?: boolean\n): string | number {\n let res: number | string = -1\n each(\n val,\n (item, key) => {\n if (iterator(item, key)) {\n res = key\n return false\n }\n },\n revert\n )\n return res\n}\n\nexport function find<T extends string>(\n val: T,\n iterator: EachStringIterator,\n revert?: boolean\n): any\nexport function find<T>(\n val: T[],\n iterator: EachArrayIterator<T>,\n revert?: boolean\n): T\nexport function find<T extends {}, TValue = T[keyof T]>(\n val: T,\n iterator: EachObjectIterator,\n revert?: boolean\n): T[keyof T]\nexport function find(val: any, iterator: any, revert?: boolean): any {\n let res: any\n each(\n val,\n (item, key) => {\n if (iterator(item, key)) {\n res = item\n return false\n }\n },\n revert\n )\n return res\n}\n\nexport function includes<T extends string>(\n val: T,\n searchElement: string,\n revert?: boolean\n): boolean\nexport function includes<T>(\n val: T[],\n searchElement: T,\n revert?: boolean\n): boolean\nexport function includes(val: any, searchElement: any, revert?: boolean) {\n if (isStr(val)) return val.includes(searchElement)\n return some(val, (item) => item === searchElement, revert)\n}\n\nexport function includesWith<T extends string>(\n val: T,\n search: (item: string) => boolean\n): boolean\nexport function includesWith<T>(val: T[], search: (item: T) => boolean): boolean\nexport function includesWith(val: any, search: any) {\n if (isArr(val)) {\n return val.some((item) => search(item))\n } else {\n return false\n }\n}\n\nexport const flat = <T>(array: Array<T | T[]>): T[] => {\n return toArr(array).reduce((buf, item) => {\n if (isArr(item)) return buf.concat(flat(item))\n return buf.concat(item)\n }, [])\n}\n"]}
|
package/lib/clone.d.ts
ADDED