{"id":20305067,"url":"https://github.com/appletjs/preact-utils","last_synced_at":"2026-04-19T01:04:27.178Z","repository":{"id":57329580,"uuid":"138832937","full_name":"appletjs/preact-utils","owner":"appletjs","description":"preact开发工具","archived":false,"fork":false,"pushed_at":"2018-07-16T05:40:59.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-15T18:54:15.521Z","etag":null,"topics":["preact","props","utils"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appletjs.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-27T05:17:05.000Z","updated_at":"2018-07-16T05:41:00.000Z","dependencies_parsed_at":"2022-09-14T18:52:26.355Z","dependency_job_id":null,"html_url":"https://github.com/appletjs/preact-utils","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appletjs%2Fpreact-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appletjs%2Fpreact-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appletjs%2Fpreact-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appletjs%2Fpreact-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appletjs","download_url":"https://codeload.github.com/appletjs/preact-utils/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241801784,"owners_count":20022518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["preact","props","utils"],"created_at":"2024-11-14T17:06:53.930Z","updated_at":"2026-04-19T01:04:27.122Z","avatar_url":"https://github.com/appletjs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Preact Utils\n\n[![version](https://img.shields.io/npm/v/preact-utils.svg?style=flat-square)](https://www.npmjs.com/package/preact-utils)\n[![downloads](https://img.shields.io/npm/dt/preact-utils.svg?style=flat-square)](https://www.npmjs.com/package/preact-utils)\n\n简单实用的工具\n\n## env\n\nBrowser environment sniffing.\n\n- {boolean} inBrowser\n- {boolean} inWeex\n- {string} weexPlatform\n- {string} UA\n- {boolean} isIE\n- {boolean} isIE9\n- {boolean} isEdge\n- {boolean} isAndroid\n- {boolean} isIOS\n- {boolean} isChrome\n\n## is\n\n- isUndefined(v: any): boolean;\n- isDefined(v: any): boolean;\n- isTrue(v: any): boolean;\n- isFalse(v: any): boolean;\n- isPrimitive(v: any): boolean;\n- isObject(v: any): boolean;\n- isPlainObject(v: any): boolean;\n- isRegExp(v: any): boolean;\n- isValidArrayIndex(v: any): boolean;\n- toRawType(v: any): string;\n- toString(v: any): string;\n- toNumber(v: any): number | string;\n\n## functions\n\n- makeMap(str: string, separator: string | RegExp): Object\n- makeMapAccessor(str: string, expectsLowerCase: boolean, separator: string | RegExp): (function(key=string): boolean | undefined);\n- cached(fn: (function(string=): any)): function(string=): any\n- withMacroTask(fn: Function): Function;\n- nextTick(cb: Function, ctx: object): Promise\u003cany\u003e | undefined;\n- once(fn: Function): any;\n- without(obj: Object, exclude: string[]): Object\n- noop(): undefined;\n\n## string\n\n- camelize(str: string): string;\n- capitalize(str: string): string;\n- hyphenate(str: string): string;\n\n## StyleMap\n\n\u003e **自动识别浏览器前缀**。\n\n#### 静态方法\n\n- from(data: string | Object): StyleMap;\n- explode(data: string | Object): Object;\n\n#### 实例属性\n\n- {number} size\n\n#### 实例方法\n\n- constructor(style: string | Object);\n- append(name: string, value: any): this;\n- get(name: string): any;\n- has(name: string): boolean;\n- remove(name: string): boolean;\n- set(name: string, value: string): this;\n- toString(): string;\n\n## TokenList\n\n\u003e 模拟 DOMTokenList 接口，主要用于组件的 class 管理，类似于 Vue 的绑定 class 方式。\n\n#### 静态方法\n\n- from(data: string | any[] | Object): TokenList\n- explode(data: string | any[] | object): string[];\n\n#### 实例属性\n\n- {number} length \n\n#### 实例方法\n\n- constructor(data: string | any[] | Object);\n- add(...tokens: any[]): this;\n- contains(token: string): boolean;\n- item(index: number): string | null;\n- remove(...tokens: string[]): this;\n- toggle(token: string): boolean;\n- toString(): string;\n\n\n## slot\n\n- parseSlots(children: any[]): Record\u003cstring, any[]\u003e;\n\n```jsx harmony\n\n\u003cContainer\u003e\n  {/* slot: foo */}\n  \u003cCard slot=\"foo\"\u003e...\u003c/Card\u003e\n  {/* slot: bar */}\n  \u003cCard slot=\"bar\"\u003e...\u003c/Card\u003e\n  {/* slot: default */}\n  \u003cspan\u003ehtml element\u003c/span\u003e\n  \u003cCard\u003ecomponent\u003c/Card\u003e\n\u003c/Container\u003e;\n\n```\n\n\n## Todo List\n\n- [ ] 添加测试用例\n- [ ] 编写开发文档\n\n\n## License\n\nMIT © 2018, \u003ca href=\"mailto:japplet@163.com\" title=\"japplet@163.com\"\u003eMaofeng Zhang\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappletjs%2Fpreact-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappletjs%2Fpreact-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappletjs%2Fpreact-utils/lists"}