@linkdesk/ui 0.1.0 → 0.1.2
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/button/Button.d.ts +13 -2
- package/dist/combobox/Combobox.d.ts +1 -1
- package/dist/hooks/useClickPreview.d.ts +33 -0
- package/dist/hooks/useClipboardKeys.d.ts +33 -0
- package/dist/hooks/useDebouncedInput.d.ts +18 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.js +1484 -971
- package/dist/select-box/SelectBox.d.ts +1 -1
- package/dist/string-list-editor/StringListEditor.d.ts +44 -0
- package/dist/string-list-editor/urlSourceKey.d.ts +13 -0
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* 异步 onApply 时态时序错乱。自定义组件走 React 状态,完全可控。
|
|
7
7
|
*
|
|
8
8
|
* 归一化:全局一个 SelectBox——不同页面/插件传不同的 options/value/onChange。
|
|
9
|
-
*
|
|
9
|
+
* 壳内部引用 @src 源码;插件作者(含内置插件 E6#54c)→ `import { SelectBox } from "@linkdesk/ui"`。
|
|
10
10
|
*/
|
|
11
11
|
interface SelectBoxOption {
|
|
12
12
|
value: string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StringListEditor — 通用字符串数组编辑器(行列表 + 行内直添)。
|
|
3
|
+
* E6#30c 新建(壳共享 @linkdesk/ui 零件,03-添加市场源-mockup.html ① 行内形态的实现基座):
|
|
4
|
+
* - 编辑 `string[]` 配置值(marketplaceSources 作者源列表;未来任意 string[] 配置复用)
|
|
5
|
+
* - `locked`(固定项)渲染为 pinned 不可删行(marketplace 官方源——「内置」徽标 + 锁)
|
|
6
|
+
* - 行内添加:输入框 + 按钮 + Enter;空 / 重复 / urlOnly 格式错 → 就近红字
|
|
7
|
+
* 语义:locked 恒显且不入 onChange 值——主叫方(settings renderControl)把配置项的
|
|
8
|
+
* `default` 数组当作 locked 传入,官方源永不落盘(getSourceUrls 读时恒前置去重)。
|
|
9
|
+
*
|
|
10
|
+
* 样式随组件(E6#54b)。文本全走 props(Button/Toggle 风格——控件零 useTranslation,
|
|
11
|
+
* 主叫方本地化;硬约束 2 UI 文字经 t())。颜色全走 CSS 变量(硬约束 1)。
|
|
12
|
+
*/
|
|
13
|
+
import type { ReactNode } from "react";
|
|
14
|
+
interface StringListEditorProps {
|
|
15
|
+
/** 可编辑条目(写入 onChange 值) */
|
|
16
|
+
value: string[];
|
|
17
|
+
onChange: (next: string[]) => void;
|
|
18
|
+
/** 固定不可删条目——pinned 行恒显、不属 value、不加进 onChange(marketplace 官方源) */
|
|
19
|
+
locked?: string[];
|
|
20
|
+
/** locked 行徽标文案(如「内置」)——主叫方本地化后传入 */
|
|
21
|
+
lockedBadge?: string;
|
|
22
|
+
/** 添加输入框占位 */
|
|
23
|
+
placeholder?: string;
|
|
24
|
+
/** 「添加」按钮文案(必填——主叫方本地化) */
|
|
25
|
+
addLabel: string;
|
|
26
|
+
/** 删除行按钮 title(必填——主叫方本地化) */
|
|
27
|
+
removeTitle: string;
|
|
28
|
+
/** url 语义:行内 mono 显示 + 输入校验需 http(s):// 前缀 */
|
|
29
|
+
urlOnly?: boolean;
|
|
30
|
+
/** 空输入错误文案(本地化);缺省空输入静默忽略不报 */
|
|
31
|
+
emptyMessage?: string;
|
|
32
|
+
/** urlOnly 下非 http(s):// 错误文案 */
|
|
33
|
+
badUrlMessage?: string;
|
|
34
|
+
/** 重复错误文案(与 value/locked 已有重复) */
|
|
35
|
+
duplicateMessage?: string;
|
|
36
|
+
/** 身份比较键(可选)——给定字符串 → 身份键,键相同视为重复(如 GitHub 源 URL 跨形态归同一
|
|
37
|
+
* owner/repo:仓库主页/main/HEAD 直链同键,E6#30c)。缺省 = 精确字符串比较;itemKey 返回 null
|
|
38
|
+
* 的输入也回精确比较(无身份的串只能精确判重)。由主叫方从 @linkdesk/ui 引共享 urlSourceKey 传入。 */
|
|
39
|
+
itemKey?: (s: string) => string | null;
|
|
40
|
+
/** 底部说明(可 ReactNode) */
|
|
41
|
+
hint?: ReactNode;
|
|
42
|
+
}
|
|
43
|
+
export default function StringListEditor({ value, onChange, locked, lockedBadge, placeholder, addLabel, removeTitle, urlOnly, emptyMessage, badUrlMessage, duplicateMessage, itemKey, hint, }: StringListEditorProps): import("react").JSX.Element;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* urlSourceKey — URL 源身份(E6#30c:设置 / 市场两扇「加源」门共用同一去重身份——单一实现)。
|
|
3
|
+
*
|
|
4
|
+
* github.com 仓库主页(含 tree/blob 尾)与 raw.githubusercontent.com 直链(任意分支/路径尾)
|
|
5
|
+
* → 小写 `owner/repo`。分支无关(main/HEAD/仓库主页通吃)——URL 精确串比较会让「官方 main 直链
|
|
6
|
+
* vs 仓库主页归一 HEAD」永不相等、官方源漏判(E6#30c 实测)。返回 null = 非 GitHub 源(调用方
|
|
7
|
+
* 回退精确串比较)。
|
|
8
|
+
*
|
|
9
|
+
* 只用于「是否同一源」身份判别,不用于 fetch(fetch 走各自归一产物,形态不可互换)。
|
|
10
|
+
* 单一实现居此——marketplace(marketSources/SearchView)与 settings(StringListEditor itemKey)
|
|
11
|
+
* 都经 @linkdesk/ui barrel 消费,两扇门 + 未来门收敛同一条规则(硬约束:同一逻辑只一处写)。
|
|
12
|
+
*/
|
|
13
|
+
export declare function urlSourceKey(input: string): string | null;
|
package/package.json
CHANGED