@cloudcome/utils-browser 1.1.11 → 1.1.12
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/cache.cjs +1 -1
- package/dist/cache.cjs.map +1 -1
- package/dist/cache.mjs +1 -1
- package/dist/cache.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/timer.cjs +4 -4
- package/dist/timer.cjs.map +1 -1
- package/dist/timer.mjs +4 -4
- package/dist/timer.mjs.map +1 -1
- package/package.json +2 -2
package/dist/cache.cjs
CHANGED
package/dist/cache.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.cjs","sources":["../src/cache.ts"],"sourcesContent":["import { AbstractCache, type CacheOptions, type Cached } from '@cloudcome/utils-core/cache';\nimport type { MaybePromise } from '@cloudcome/utils-core/types';\n\n/**\n * 使用浏览器存储(localStorage 或 sessionStorage)实现的缓存类\n * @template T - 缓存数据的类型\n */\nexport class StorageCache<T> extends AbstractCache<T> {\n /**\n * 创建一个新的 StorageCache 实例\n * @param storage - 使用的存储实现(localStorage 或 sessionStorage)\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n */\n constructor(\n readonly storage: Storage,\n readonly namespace = '',\n ) {\n super();\n }\n\n /**\n * 通过ID获取缓存数据\n * @param id - 要获取的缓存键\n * @returns 如果找到且未过期则返回缓存数据,否则返回null\n */\n get(id: string): Cached<T> | null {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n const cachedString = storage.getItem(fullId);\n if (!cachedString) return null;\n\n const cached = JSON.parse(cachedString);\n\n if (cached.createdAt + cached.maxAge < Date.now()) {\n this.del(id);\n return null;\n }\n\n return cached;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * 将数据存储到缓存中\n * @param id - 存储数据使用的缓存键\n * @param data - 要缓存的数据\n * @param options - 可选的缓存配置\n * @returns 成功返回true,存储失败返回false\n */\n set(id: string, data: T, options?: CacheOptions) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.setItem(\n fullId,\n JSON.stringify({\n id,\n data,\n createdAt: Date.now(),\n maxAge: options?.maxAge || 0,\n }),\n );\n } catch (cause) {\n //\n }\n }\n\n /**\n * 通过ID删除缓存数据\n * @param id - 要删除的缓存键\n */\n del(id: string) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.removeItem(fullId);\n } catch (cause) {\n //\n }\n }\n\n clear() {\n try {\n this.storage.clear();\n } catch (err) {\n //\n }\n }\n}\n\n/**\n * 创建一个使用 localStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 localStorage 的新 StorageCache 实例\n */\nexport function createLocalCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(localStorage, namespace);\n}\n\n/**\n * 创建一个使用 sessionStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 sessionStorage 的新 StorageCache 实例\n */\nexport function createSessionCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(sessionStorage, namespace);\n}\n"],"names":["AbstractCache"],"mappings":";;;AAOO,MAAM,qBAAwBA,MAAAA,cAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpD,YACW,SACA,YAAY,IACrB;AACM,UAAA;AAHG,SAAA,UAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUX,IAAI,IAA8B;AAC1B,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACI,YAAA,eAAe,QAAQ,QAAQ,MAAM;AACvC,UAAA,CAAC,aAAqB,QAAA;AAEpB,YAAA,SAAS,KAAK,MAAM,YAAY;AAEtC,UAAI,OAAO,YAAY,OAAO,SAAS,KAAK,OAAO;AACjD,aAAK,IAAI,EAAE;AACJ,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,aACA,GAAG;AACH,aAAA;AAAA,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUF,IAAI,IAAY,MAAS,SAAwB;AACzC,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACM,cAAA;AAAA,QACN;AAAA,QACA,KAAK,UAAU;AAAA,UACb;AAAA,UACA;AAAA,UACA,WAAW,KAAK,IAAI;AAAA,UACpB,
|
|
1
|
+
{"version":3,"file":"cache.cjs","sources":["../src/cache.ts"],"sourcesContent":["import { AbstractCache, type CacheOptions, type Cached } from '@cloudcome/utils-core/cache';\nimport type { MaybePromise } from '@cloudcome/utils-core/types';\n\n/**\n * 使用浏览器存储(localStorage 或 sessionStorage)实现的缓存类\n * @template T - 缓存数据的类型\n */\nexport class StorageCache<T> extends AbstractCache<T> {\n /**\n * 创建一个新的 StorageCache 实例\n * @param storage - 使用的存储实现(localStorage 或 sessionStorage)\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n */\n constructor(\n readonly storage: Storage,\n readonly namespace = '',\n ) {\n super();\n }\n\n /**\n * 通过ID获取缓存数据\n * @param id - 要获取的缓存键\n * @returns 如果找到且未过期则返回缓存数据,否则返回null\n */\n get(id: string): Cached<T> | null {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n const cachedString = storage.getItem(fullId);\n if (!cachedString) return null;\n\n const cached = JSON.parse(cachedString);\n\n if (cached.createdAt + cached.maxAge < Date.now()) {\n this.del(id);\n return null;\n }\n\n return cached;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * 将数据存储到缓存中\n * @param id - 存储数据使用的缓存键\n * @param data - 要缓存的数据\n * @param options - 可选的缓存配置\n * @returns 成功返回true,存储失败返回false\n */\n set(id: string, data: T, options?: CacheOptions) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.setItem(\n fullId,\n JSON.stringify({\n id,\n data,\n createdAt: Date.now(),\n maxAge: options?.maxAge || 0,\n }),\n );\n } catch (cause) {\n //\n }\n }\n\n /**\n * 通过ID删除缓存数据\n * @param id - 要删除的缓存键\n */\n del(id: string) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.removeItem(fullId);\n } catch (cause) {\n //\n }\n }\n\n clear() {\n try {\n this.storage.clear();\n } catch (err) {\n //\n }\n }\n}\n\n/**\n * 创建一个使用 localStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 localStorage 的新 StorageCache 实例\n */\nexport function createLocalCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(localStorage, namespace);\n}\n\n/**\n * 创建一个使用 sessionStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 sessionStorage 的新 StorageCache 实例\n */\nexport function createSessionCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(sessionStorage, namespace);\n}\n"],"names":["AbstractCache"],"mappings":";;;AAOO,MAAM,qBAAwBA,MAAAA,cAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpD,YACW,SACA,YAAY,IACrB;AACM,UAAA;AAHG,SAAA,UAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUX,IAAI,IAA8B;AAC1B,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACI,YAAA,eAAe,QAAQ,QAAQ,MAAM;AACvC,UAAA,CAAC,aAAqB,QAAA;AAEpB,YAAA,SAAS,KAAK,MAAM,YAAY;AAEtC,UAAI,OAAO,YAAY,OAAO,SAAS,KAAK,OAAO;AACjD,aAAK,IAAI,EAAE;AACJ,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,aACA,GAAG;AACH,aAAA;AAAA,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUF,IAAI,IAAY,MAAS,SAAwB;AACzC,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACM,cAAA;AAAA,QACN;AAAA,QACA,KAAK,UAAU;AAAA,UACb;AAAA,UACA;AAAA,UACA,WAAW,KAAK,IAAI;AAAA,UACpB,QAAQ,SAAS,UAAU;AAAA,QAC5B,CAAA;AAAA,MACH;AAAA,aACO,OAAO;AAAA,IAAA;AAAA,EAEhB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOF,IAAI,IAAY;AACR,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACF,cAAQ,WAAW,MAAM;AAAA,aAClB,OAAO;AAAA,IAAA;AAAA,EAEhB;AAAA,EAGF,QAAQ;AACF,QAAA;AACF,WAAK,QAAQ,MAAM;AAAA,aACZ,KAAK;AAAA,IAAA;AAAA,EAEd;AAEJ;AAQO,SAAS,iBAAoB,WAAsC;AACjE,SAAA,IAAI,aAAgB,cAAc,SAAS;AACpD;AAQO,SAAS,mBAAsB,WAAsC;AACnE,SAAA,IAAI,aAAgB,gBAAgB,SAAS;AACtD;;;;"}
|
package/dist/cache.mjs
CHANGED
package/dist/cache.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.mjs","sources":["../src/cache.ts"],"sourcesContent":["import { AbstractCache, type CacheOptions, type Cached } from '@cloudcome/utils-core/cache';\nimport type { MaybePromise } from '@cloudcome/utils-core/types';\n\n/**\n * 使用浏览器存储(localStorage 或 sessionStorage)实现的缓存类\n * @template T - 缓存数据的类型\n */\nexport class StorageCache<T> extends AbstractCache<T> {\n /**\n * 创建一个新的 StorageCache 实例\n * @param storage - 使用的存储实现(localStorage 或 sessionStorage)\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n */\n constructor(\n readonly storage: Storage,\n readonly namespace = '',\n ) {\n super();\n }\n\n /**\n * 通过ID获取缓存数据\n * @param id - 要获取的缓存键\n * @returns 如果找到且未过期则返回缓存数据,否则返回null\n */\n get(id: string): Cached<T> | null {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n const cachedString = storage.getItem(fullId);\n if (!cachedString) return null;\n\n const cached = JSON.parse(cachedString);\n\n if (cached.createdAt + cached.maxAge < Date.now()) {\n this.del(id);\n return null;\n }\n\n return cached;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * 将数据存储到缓存中\n * @param id - 存储数据使用的缓存键\n * @param data - 要缓存的数据\n * @param options - 可选的缓存配置\n * @returns 成功返回true,存储失败返回false\n */\n set(id: string, data: T, options?: CacheOptions) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.setItem(\n fullId,\n JSON.stringify({\n id,\n data,\n createdAt: Date.now(),\n maxAge: options?.maxAge || 0,\n }),\n );\n } catch (cause) {\n //\n }\n }\n\n /**\n * 通过ID删除缓存数据\n * @param id - 要删除的缓存键\n */\n del(id: string) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.removeItem(fullId);\n } catch (cause) {\n //\n }\n }\n\n clear() {\n try {\n this.storage.clear();\n } catch (err) {\n //\n }\n }\n}\n\n/**\n * 创建一个使用 localStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 localStorage 的新 StorageCache 实例\n */\nexport function createLocalCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(localStorage, namespace);\n}\n\n/**\n * 创建一个使用 sessionStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 sessionStorage 的新 StorageCache 实例\n */\nexport function createSessionCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(sessionStorage, namespace);\n}\n"],"names":[],"mappings":";AAOO,MAAM,qBAAwB,cAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpD,YACW,SACA,YAAY,IACrB;AACM,UAAA;AAHG,SAAA,UAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUX,IAAI,IAA8B;AAC1B,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACI,YAAA,eAAe,QAAQ,QAAQ,MAAM;AACvC,UAAA,CAAC,aAAqB,QAAA;AAEpB,YAAA,SAAS,KAAK,MAAM,YAAY;AAEtC,UAAI,OAAO,YAAY,OAAO,SAAS,KAAK,OAAO;AACjD,aAAK,IAAI,EAAE;AACJ,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,aACA,GAAG;AACH,aAAA;AAAA,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUF,IAAI,IAAY,MAAS,SAAwB;AACzC,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACM,cAAA;AAAA,QACN;AAAA,QACA,KAAK,UAAU;AAAA,UACb;AAAA,UACA;AAAA,UACA,WAAW,KAAK,IAAI;AAAA,UACpB,
|
|
1
|
+
{"version":3,"file":"cache.mjs","sources":["../src/cache.ts"],"sourcesContent":["import { AbstractCache, type CacheOptions, type Cached } from '@cloudcome/utils-core/cache';\nimport type { MaybePromise } from '@cloudcome/utils-core/types';\n\n/**\n * 使用浏览器存储(localStorage 或 sessionStorage)实现的缓存类\n * @template T - 缓存数据的类型\n */\nexport class StorageCache<T> extends AbstractCache<T> {\n /**\n * 创建一个新的 StorageCache 实例\n * @param storage - 使用的存储实现(localStorage 或 sessionStorage)\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n */\n constructor(\n readonly storage: Storage,\n readonly namespace = '',\n ) {\n super();\n }\n\n /**\n * 通过ID获取缓存数据\n * @param id - 要获取的缓存键\n * @returns 如果找到且未过期则返回缓存数据,否则返回null\n */\n get(id: string): Cached<T> | null {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n const cachedString = storage.getItem(fullId);\n if (!cachedString) return null;\n\n const cached = JSON.parse(cachedString);\n\n if (cached.createdAt + cached.maxAge < Date.now()) {\n this.del(id);\n return null;\n }\n\n return cached;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * 将数据存储到缓存中\n * @param id - 存储数据使用的缓存键\n * @param data - 要缓存的数据\n * @param options - 可选的缓存配置\n * @returns 成功返回true,存储失败返回false\n */\n set(id: string, data: T, options?: CacheOptions) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.setItem(\n fullId,\n JSON.stringify({\n id,\n data,\n createdAt: Date.now(),\n maxAge: options?.maxAge || 0,\n }),\n );\n } catch (cause) {\n //\n }\n }\n\n /**\n * 通过ID删除缓存数据\n * @param id - 要删除的缓存键\n */\n del(id: string) {\n const { storage, namespace } = this;\n const fullId = namespace ? `${namespace}:${id}` : id;\n\n try {\n storage.removeItem(fullId);\n } catch (cause) {\n //\n }\n }\n\n clear() {\n try {\n this.storage.clear();\n } catch (err) {\n //\n }\n }\n}\n\n/**\n * 创建一个使用 localStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 localStorage 的新 StorageCache 实例\n */\nexport function createLocalCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(localStorage, namespace);\n}\n\n/**\n * 创建一个使用 sessionStorage 的缓存实例\n * @template T - 缓存数据的类型\n * @param namespace - 可选,用于为缓存键添加前缀的命名空间\n * @returns 使用 sessionStorage 的新 StorageCache 实例\n */\nexport function createSessionCache<T>(namespace?: string): AbstractCache<T> {\n return new StorageCache<T>(sessionStorage, namespace);\n}\n"],"names":[],"mappings":";AAOO,MAAM,qBAAwB,cAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpD,YACW,SACA,YAAY,IACrB;AACM,UAAA;AAHG,SAAA,UAAA;AACA,SAAA,YAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUX,IAAI,IAA8B;AAC1B,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACI,YAAA,eAAe,QAAQ,QAAQ,MAAM;AACvC,UAAA,CAAC,aAAqB,QAAA;AAEpB,YAAA,SAAS,KAAK,MAAM,YAAY;AAEtC,UAAI,OAAO,YAAY,OAAO,SAAS,KAAK,OAAO;AACjD,aAAK,IAAI,EAAE;AACJ,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,aACA,GAAG;AACH,aAAA;AAAA,IAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUF,IAAI,IAAY,MAAS,SAAwB;AACzC,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACM,cAAA;AAAA,QACN;AAAA,QACA,KAAK,UAAU;AAAA,UACb;AAAA,UACA;AAAA,UACA,WAAW,KAAK,IAAI;AAAA,UACpB,QAAQ,SAAS,UAAU;AAAA,QAC5B,CAAA;AAAA,MACH;AAAA,aACO,OAAO;AAAA,IAAA;AAAA,EAEhB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOF,IAAI,IAAY;AACR,UAAA,EAAE,SAAS,UAAA,IAAc;AAC/B,UAAM,SAAS,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK;AAE9C,QAAA;AACF,cAAQ,WAAW,MAAM;AAAA,aAClB,OAAO;AAAA,IAAA;AAAA,EAEhB;AAAA,EAGF,QAAQ;AACF,QAAA;AACF,WAAK,QAAQ,MAAM;AAAA,aACZ,KAAK;AAAA,IAAA;AAAA,EAEd;AAEJ;AAQO,SAAS,iBAAoB,WAAsC;AACjE,SAAA,IAAI,aAAgB,cAAc,SAAS;AACpD;AAQO,SAAS,mBAAsB,WAAsC;AACnE,SAAA,IAAI,aAAgB,gBAAgB,SAAS;AACtD;"}
|
package/dist/index.cjs
CHANGED
package/dist/index.mjs
CHANGED
package/dist/timer.cjs
CHANGED
|
@@ -9,7 +9,7 @@ function frameInterval(callback, options) {
|
|
|
9
9
|
return {
|
|
10
10
|
start() {
|
|
11
11
|
if (!canStart()) return;
|
|
12
|
-
if (options
|
|
12
|
+
if (options?.leading) {
|
|
13
13
|
start();
|
|
14
14
|
} else {
|
|
15
15
|
rafId = requestAnimationFrame(start);
|
|
@@ -17,19 +17,19 @@ function frameInterval(callback, options) {
|
|
|
17
17
|
},
|
|
18
18
|
stop() {
|
|
19
19
|
if (!canStop()) return;
|
|
20
|
-
if (options
|
|
20
|
+
if (options?.trailing) execute();
|
|
21
21
|
cancelAnimationFrame(rafId);
|
|
22
22
|
stop();
|
|
23
23
|
},
|
|
24
24
|
pause() {
|
|
25
25
|
if (!canPause()) return;
|
|
26
|
-
if (options
|
|
26
|
+
if (options?.trailing) execute();
|
|
27
27
|
cancelAnimationFrame(rafId);
|
|
28
28
|
pause();
|
|
29
29
|
},
|
|
30
30
|
resume(immediate) {
|
|
31
31
|
if (!canResume()) return;
|
|
32
|
-
if (immediate ||
|
|
32
|
+
if (immediate || options?.leading) {
|
|
33
33
|
resume();
|
|
34
34
|
} else {
|
|
35
35
|
rafId = requestAnimationFrame(resume);
|
package/dist/timer.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.cjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState, makeInterval } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TimerState, next?: () => void) => unknown,\n options?: TimerOptions,\n): TimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"names":["makeInterval"],"mappings":";;;AASgB,SAAA,cACd,UACA,SACc;AACV,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAAA,MAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,
|
|
1
|
+
{"version":3,"file":"timer.cjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState, makeInterval } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TimerState, next?: () => void) => unknown,\n options?: TimerOptions,\n): TimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"names":["makeInterval"],"mappings":";;;AASgB,SAAA,cACd,UACA,SACc;AACV,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAAA,MAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,SAAS,SAAS;AACd,cAAA;AAAA,MAAA,OACD;AACL,gBAAQ,sBAAsB,KAAK;AAAA,MAAA;AAAA,IAEvC;AAAA,IAEA,OAAO;AACD,UAAA,CAAC,UAAW;AACZ,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACrB,WAAA;AAAA,IACP;AAAA,IAEA,QAAQ;AACF,UAAA,CAAC,WAAY;AACb,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACpB,YAAA;AAAA,IACR;AAAA,IAEA,OAAO,WAAqB;AACtB,UAAA,CAAC,YAAa;AAEd,UAAA,aAAa,SAAS,SAAS;AAC1B,eAAA;AAAA,MAAA,OACF;AACL,gBAAQ,sBAAsB,MAAM;AAAA,MAAA;AAAA,IACtC;AAAA,EAEJ;AACF;;"}
|
package/dist/timer.mjs
CHANGED
|
@@ -7,7 +7,7 @@ function frameInterval(callback, options) {
|
|
|
7
7
|
return {
|
|
8
8
|
start() {
|
|
9
9
|
if (!canStart()) return;
|
|
10
|
-
if (options
|
|
10
|
+
if (options?.leading) {
|
|
11
11
|
start();
|
|
12
12
|
} else {
|
|
13
13
|
rafId = requestAnimationFrame(start);
|
|
@@ -15,19 +15,19 @@ function frameInterval(callback, options) {
|
|
|
15
15
|
},
|
|
16
16
|
stop() {
|
|
17
17
|
if (!canStop()) return;
|
|
18
|
-
if (options
|
|
18
|
+
if (options?.trailing) execute();
|
|
19
19
|
cancelAnimationFrame(rafId);
|
|
20
20
|
stop();
|
|
21
21
|
},
|
|
22
22
|
pause() {
|
|
23
23
|
if (!canPause()) return;
|
|
24
|
-
if (options
|
|
24
|
+
if (options?.trailing) execute();
|
|
25
25
|
cancelAnimationFrame(rafId);
|
|
26
26
|
pause();
|
|
27
27
|
},
|
|
28
28
|
resume(immediate) {
|
|
29
29
|
if (!canResume()) return;
|
|
30
|
-
if (immediate ||
|
|
30
|
+
if (immediate || options?.leading) {
|
|
31
31
|
resume();
|
|
32
32
|
} else {
|
|
33
33
|
rafId = requestAnimationFrame(resume);
|
package/dist/timer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.mjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState, makeInterval } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TimerState, next?: () => void) => unknown,\n options?: TimerOptions,\n): TimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"names":[],"mappings":";AASgB,SAAA,cACd,UACA,SACc;AACV,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,
|
|
1
|
+
{"version":3,"file":"timer.mjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TimerHandler, type TimerOptions, type TimerState, makeInterval } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TimerState, next?: () => void) => unknown,\n options?: TimerOptions,\n): TimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"names":[],"mappings":";AASgB,SAAA,cACd,UACA,SACc;AACV,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,SAAS,SAAS;AACd,cAAA;AAAA,MAAA,OACD;AACL,gBAAQ,sBAAsB,KAAK;AAAA,MAAA;AAAA,IAEvC;AAAA,IAEA,OAAO;AACD,UAAA,CAAC,UAAW;AACZ,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACrB,WAAA;AAAA,IACP;AAAA,IAEA,QAAQ;AACF,UAAA,CAAC,WAAY;AACb,UAAA,SAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACpB,YAAA;AAAA,IACR;AAAA,IAEA,OAAO,WAAqB;AACtB,UAAA,CAAC,YAAa;AAEd,UAAA,aAAa,SAAS,SAAS;AAC1B,eAAA;AAAA,MAAA,OACF;AACL,gBAAQ,sBAAsB,MAAM;AAAA,MAAA;AAAA,IACtC;AAAA,EAEJ;AACF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcome/utils-browser",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.12",
|
|
4
4
|
"description": "cloudcome utils for browser",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=22"
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"dist"
|
|
107
107
|
],
|
|
108
108
|
"dependencies": {
|
|
109
|
-
"@cloudcome/utils-core": "~1.
|
|
109
|
+
"@cloudcome/utils-core": "~1.9.0"
|
|
110
110
|
},
|
|
111
111
|
"repository": {
|
|
112
112
|
"type": "git",
|