dsh-neartoken 0.17.0 → 0.18.0
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/README.md +26 -1
- package/lib/client.js +184 -135
- package/lib/client.js.map +1 -1
- package/lib/index.js +270 -46
- package/lib/types/affiliate.d.ts +38 -0
- package/lib/types/client/api.d.ts +6 -2
- package/lib/types/host/account.d.ts +4 -1
- package/lib/types/host/anthropic-wire.d.ts +7 -0
- package/lib/types/host/device-flow.d.ts +4 -12
- package/lib/types/host/request-body.d.ts +48 -0
- package/lib/types/protocol.d.ts +14 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,6 +58,29 @@
|
|
|
58
58
|
|
|
59
59
|
分组路由按同一文档:请求头 `x-neartoken-group` 的值是 `/api/pricing` 的 `group_refs` 给出的 **`#<id>`**(纯 ASCII),分组名只用于展示;某分组没有 ref 时不发该头,按令牌自身分组路由。
|
|
60
60
|
|
|
61
|
+
## 邀请码(`window.NEARTOKEN_AFF`)
|
|
62
|
+
|
|
63
|
+
引导用户来到 DSH 的页面可以在窗口上留一个邀请码:`window.NEARTOKEN_AFF = '<code>'`。插件在发起设备授权时读取它,并作为 `aff` 参数拼到站点确认页地址上 —— 卡片里「打开浏览器确认」和「复制链接」用的都是这个带参数的地址:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
https://<site>/dsh/device?user_code=K7QM-3XPD&aff=<code>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
站点侧不需要为插件做任何改动:New API 前端本来就会把任意页面上的 `?aff=` 存进浏览器 localStorage,注册表单与第三方账号首次登录都从那里取,落库为邀请人。三种情形:
|
|
70
|
+
|
|
71
|
+
| 用户在站点上的状态 | 结果 |
|
|
72
|
+
|---|---|
|
|
73
|
+
| 已登录 | 设备授权照常完成,`aff` 不参与,无副作用 |
|
|
74
|
+
| 未登录、自己注册 | 注册请求带 `aff_code`,绑定邀请人(奖励按站点后台配置发放) |
|
|
75
|
+
| 未登录、用第三方账号 | 首次登录自动建号时按 `aff` 绑定邀请人 |
|
|
76
|
+
|
|
77
|
+
边界:
|
|
78
|
+
|
|
79
|
+
- 只接受 `[A-Za-z0-9_-]{1,64}` 的取值,其它值整条丢弃,**连接照常发起** —— 一个坏邀请码不该让授权失败。
|
|
80
|
+
- 窗口上没有这个全局变量时,地址与以前完全一样(不带 `aff`)。
|
|
81
|
+
- 已有进行中的授权时再点「连接」不会重启,沿用第一次的地址与其中的 `aff`。
|
|
82
|
+
- 站点的 `/sign-in` 页本身没有注册入口:未登录用户从确认页被跳到这里后,只能登录或走第三方账号(首次登录会在站点上自动建号,`aff` 照样生效);要密码注册就自己打开 `/sign-up?aff=<code>`(确认页已经把取值写进 localStorage,参数可省)。
|
|
83
|
+
|
|
61
84
|
## 配置
|
|
62
85
|
|
|
63
86
|
| 字段 | 默认 | 说明 |
|
|
@@ -228,6 +251,8 @@ Gemini 系走原生 surface 而不是 openai 兼容层:同模型同提示词
|
|
|
228
251
|
|
|
229
252
|
- 四套 wire(chat / anthropic / genai / responses)各自解析 SSE;**图片按各协议发送** —— chat 用 `image_url` part、anthropic 用 `source.base64`、genai 用 `inlineData`、responses 用 `input_image`。发送前先按 `imageMaxEdge` / `imageMaxBytes` 重编码(见「图片压缩」),所以线上字节与媒体类型未必等于附件里的原图。**工具结果里的图片也发**(`read_image` 的结果就是一段文本信封 + 一张图):anthropic 把图塞回同一个 `tool_result` 的 content 块数组;genai 在同一 user turn 的 parts 里补 `inlineData`;chat 的 tool 消息只能放字符串、responses 的 `function_call_output` 同理,所以图跟在**整段连续工具结果之后**的一条 user 消息 / 条目里(并行调用时不会把 tool 消息切断)。字节由 `attachments.readImage` 在请求前内联;没有 attachments 服务或读不出来会**让请求失败**,不再静默降级成纯文本(曾经就是这样:贴的截图模型根本收不到)。会话里被 image-offload 标记的图片(`offloaded: true`)不发字节;插件也不替它生成占位文本,所以那一次图片对模型完全不可见。文件块(非图片附件)仍不发;`/model` 弹窗仍是内置平铺列表;箭头键盘导航未接。
|
|
230
253
|
- **genai 线的并行工具调用必须收在同一个 user turn 里**:Gemini 校验「一个 functionCall turn ↔ 紧随其后那条 user turn 里等量的 functionResponse parts」,每条工具结果各开一条 user turn 会被上游拒成 400 `Please ensure that the number of function response parts is equal to the number of function call parts of the function call turn`。它是**确定性**错误:历史不变就必然复现,重试、换分组都无用,只能新开会话(0.16.1 及以前踩中过一次:一轮发了 6 个并行 `read`,整轮就此作废)。0.16.2 起把整段连续的工具结果折进同一个 user turn;Gemini ≥ 3 另给 `functionCall` / `functionResponse` 带上 `id`(同一个函数被并行调多次时才分得清谁答谁),`gemma*` 与更早的 Gemini 不发该字段,只按函数名匹配。
|
|
254
|
+
- **anthropic 线的工具结果同样必须合批**:messages API 校验「一条 assistant turn 的 `tool_use` ↔ 紧随其后那条 user turn 的 `tool_result`」一一对应。并行调用时若每条结果各开一条 user 消息,网关报 400 `Invalid message sequence: tool_use and tool_result blocks must be correctly paired and ordered`(0.17.1 以前 anthropic 线就是这个形状 —— genai 线 0.16.2 修了同类问题,anthropic 线漏了)。现在整段连续结果折进紧邻 assistant 的那一条 user 消息;结果没记录(中断、fork、压缩裁剪)的调用补一句占位结果;对不上任何调用的结果丢弃;批内混进来的 user 文本移到结果之后;相邻同角色轮次合并、`tool_result` 固定排在 user 消息首位。这条是**请求体形状**的错,与历史记录无关:升级后此前必挂的会话下一轮就能继续。
|
|
255
|
+
- **请求体按需 brotli 压缩**:每次请求都带全量工具定义,body 常在几十到几百 KB,带截图时上 MB。上游(New API 的 `DecompressRequestMiddleware`)在解析前解压 `content-encoding` 为 gzip / br / zstd 的 body,实测三条 wire(chat / messages / responses)全通;deflate 不支持,且不带该头就按明文解析。所以 **≥16 KB 的 body 以 brotli quality 5 发送**:实测 57 KB 的工具密集请求压到 468 B、2 MB 真实源码压到 418 KB(19%)。四条聊天 wire 与出图的三条通道(`images` / `genai` / `chat`)共用同一个出口 `postJson`,阈值与回落只有一份 —— 带参考图的出图请求是另一个 base64 大户。选型依据:同 CPU 下 brotli 比 gzip 小 8–14%;zstd level 3 与 gzip 等大但快 5 倍,只在 CPU 吃紧时更优;而 brotli 的**运行时默认 quality 是 11**,2 MB 上要 3.7 秒,必须显式钉 5。低于阈值走明文 —— 那么小的上行不值一次压缩加解压。图片主导的请求收益有天花板(base64 编码的已压缩图只能压到 75%,那 25% 只是还原 base64 膨胀),真正的杠杆仍是 `imageMaxEdge` / `imageMaxBytes`。若上游某天不认该编码(400 且 body 解析失败),同一请求立刻以明文重发一次:被拒的请求从未计费,代价是一个往返而不是整次调用。
|
|
231
256
|
- 四套 wire 的 SSE 解析都有「帧样本 → 期望 chunk 序列」回归测试(`src/host/wire-parse.spec.ts`),帧样本取自生产网关的真实响应。网关在内容帧上发 `"usage": null`,只有末帧带真值:任何一处把 `usage` 当对象直接读都会让整条流中途崩掉(曾导致 claude 模型全不可用)。
|
|
232
257
|
- **每个请求都带会话亲和键**:chat 与 responses 发 `prompt_cache_key`,anthropic 发 `metadata.user_id`,取值都是 DSH 的 `GenerateOptions.sessionId`。站点就是靠这个值挑上游渠道的(New API 的「codex cli trace」规则:`^gpt-.*$` + `/v1/responses`,键取自 body 的 `prompt_cache_key`,取不到就把整条规则跳过),而提示词缓存按**上游账号**存 —— 不带键时每个请求随机换账号,缓存永远不中。实测同一 6k 前缀:不带键连发 4 次 `cached_tokens` 全 0;带键后第 2 次起 5888/6011 ≈ 98%。`/v1/chat/completions` 上目前没有对应规则,chat 线即使带键也只是偶发命中,要彻底解决需要站点加一条匹配该路径的亲和规则;anthropic 线的 `metadata.user_id` 同理(规则只作用于 `/v1/messages`,这一条已经匹配)。
|
|
233
258
|
- **anthropic 线显式打缓存断点**:Anthropic 只在 `cache_control` 断点处写缓存,没有断点就整段 prompt 按新输入计价(亲和键只保证落在同一上游账号,不产生缓存)。每个请求打 4 个断点:`tools` 末项、`system` 末块、最后两条消息各自末块 —— harness 每轮全量重放历史,尾部双断点保证下一轮几乎全命中,每轮只写新增片段。实测(Claude Max 超惠分组,~6.3k token 前缀):无断点连发两次 `cache_read` 全 0;打点后第 2 次起 `in=4, cr=6316`,三轮增长历史 `cr` 累积到 10811、`in` 恒为个位数。断点也覆盖 `tool_result` 结尾的轮次(DSH 会话的常态形态)。
|
|
@@ -252,7 +277,7 @@ Gemini 系走原生 surface 而不是 openai 兼容层:同模型同提示词
|
|
|
252
277
|
```sh
|
|
253
278
|
pnpm install
|
|
254
279
|
pnpm run typecheck
|
|
255
|
-
pnpm run test # vitest:account / pricing / adapter / model-caps / groups / whitelist / routes / config / wire-parse / images / image-settings / image-tool
|
|
280
|
+
pnpm run test # vitest:account / pricing / adapter / model-caps / groups / whitelist / routes / config / affiliate / wire-parse / images / image-settings / image-tool
|
|
256
281
|
pnpm run typecheck # 两个 face 分别检查(host 与 client 的 ctx.sessions 声明互相冲突,不能同 program)
|
|
257
282
|
pnpm run build # lib/index.js (host) + lib/client.js (client) + lib/types
|
|
258
283
|
```
|
package/lib/client.js
CHANGED
|
@@ -124,8 +124,12 @@ window.__ModuleLoader__.load({
|
|
|
124
124
|
async refreshAccount() {
|
|
125
125
|
return await post(REFRESH_PATH);
|
|
126
126
|
},
|
|
127
|
-
async begin() {
|
|
128
|
-
return await
|
|
127
|
+
async begin(affCode) {
|
|
128
|
+
return await jsonOf(await fetcher(AUTHORIZE_PATH, {
|
|
129
|
+
method: "POST",
|
|
130
|
+
headers: { "content-type": "application/json" },
|
|
131
|
+
body: JSON.stringify({ affCode })
|
|
132
|
+
}));
|
|
129
133
|
},
|
|
130
134
|
async cancel() {
|
|
131
135
|
await post(CANCEL_PATH);
|
|
@@ -401,23 +405,23 @@ window.__ModuleLoader__.load({
|
|
|
401
405
|
document.head.appendChild(tag);
|
|
402
406
|
}
|
|
403
407
|
var group_tags_module_css_default = {
|
|
404
|
-
"toneCyan": "FotuUq_toneCyan",
|
|
405
|
-
"toneOrange": "FotuUq_toneOrange",
|
|
406
|
-
"toneAmber": "FotuUq_toneAmber",
|
|
407
|
-
"toneRose": "FotuUq_toneRose",
|
|
408
|
-
"ratioCheap": "FotuUq_ratioCheap",
|
|
409
|
-
"toneLime": "FotuUq_toneLime",
|
|
410
408
|
"ratioChip": "FotuUq_ratioChip",
|
|
411
|
-
"toneEmerald": "FotuUq_toneEmerald",
|
|
412
|
-
"toneViolet": "FotuUq_toneViolet",
|
|
413
|
-
"toneIndigo": "FotuUq_toneIndigo",
|
|
414
|
-
"toneTeal": "FotuUq_toneTeal",
|
|
415
|
-
"ratioPricey": "FotuUq_ratioPricey",
|
|
416
409
|
"ratioBase": "FotuUq_ratioBase",
|
|
410
|
+
"toneRose": "FotuUq_toneRose",
|
|
411
|
+
"toneViolet": "FotuUq_toneViolet",
|
|
412
|
+
"toneCyan": "FotuUq_toneCyan",
|
|
417
413
|
"toneSky": "FotuUq_toneSky",
|
|
418
|
-
"
|
|
414
|
+
"ratioPricey": "FotuUq_ratioPricey",
|
|
415
|
+
"toneEmerald": "FotuUq_toneEmerald",
|
|
416
|
+
"toneLime": "FotuUq_toneLime",
|
|
417
|
+
"toneOrange": "FotuUq_toneOrange",
|
|
419
418
|
"toneFuchsia": "FotuUq_toneFuchsia",
|
|
420
|
-
"
|
|
419
|
+
"toneIndigo": "FotuUq_toneIndigo",
|
|
420
|
+
"tag": "FotuUq_tag",
|
|
421
|
+
"tonePink": "FotuUq_tonePink",
|
|
422
|
+
"toneTeal": "FotuUq_toneTeal",
|
|
423
|
+
"toneAmber": "FotuUq_toneAmber",
|
|
424
|
+
"ratioCheap": "FotuUq_ratioCheap"
|
|
421
425
|
};
|
|
422
426
|
//#endregion
|
|
423
427
|
//#region src/client/group-tags.tsx
|
|
@@ -472,39 +476,39 @@ window.__ModuleLoader__.load({
|
|
|
472
476
|
document.head.appendChild(tag);
|
|
473
477
|
}
|
|
474
478
|
var ModelGroupSelect_module_css_default = {
|
|
475
|
-
"
|
|
476
|
-
"warning": "_2pt-bW_warning",
|
|
479
|
+
"modelOption": "_2pt-bW_modelOption",
|
|
477
480
|
"optionTrailing": "_2pt-bW_optionTrailing",
|
|
478
|
-
"
|
|
481
|
+
"groupInline": "_2pt-bW_groupInline",
|
|
482
|
+
"chevron": "_2pt-bW_chevron",
|
|
483
|
+
"check": "_2pt-bW_check",
|
|
479
484
|
"cellValue": "_2pt-bW_cellValue",
|
|
480
|
-
"
|
|
481
|
-
"
|
|
482
|
-
"
|
|
483
|
-
"searchRow": "_2pt-bW_searchRow",
|
|
484
|
-
"status": "_2pt-bW_status",
|
|
485
|
+
"selected": "_2pt-bW_selected",
|
|
486
|
+
"variantCount": "_2pt-bW_variantCount",
|
|
487
|
+
"error": "_2pt-bW_error",
|
|
485
488
|
"triggerIcon": "_2pt-bW_triggerIcon",
|
|
486
|
-
"
|
|
487
|
-
"
|
|
489
|
+
"optionActive": "_2pt-bW_optionActive",
|
|
490
|
+
"cell": "_2pt-bW_cell",
|
|
491
|
+
"retry": "_2pt-bW_retry",
|
|
492
|
+
"groups": "_2pt-bW_groups",
|
|
488
493
|
"cellChevron": "_2pt-bW_cellChevron",
|
|
494
|
+
"triggerEffort": "_2pt-bW_triggerEffort",
|
|
495
|
+
"warning": "_2pt-bW_warning",
|
|
496
|
+
"groupOptionLabel": "_2pt-bW_groupOptionLabel",
|
|
489
497
|
"trigger": "_2pt-bW_trigger",
|
|
490
|
-
"
|
|
491
|
-
"
|
|
492
|
-
"
|
|
498
|
+
"root": "_2pt-bW_root",
|
|
499
|
+
"searchRow": "_2pt-bW_searchRow",
|
|
500
|
+
"option": "_2pt-bW_option",
|
|
493
501
|
"modelName": "_2pt-bW_modelName",
|
|
494
|
-
"
|
|
495
|
-
"
|
|
496
|
-
"
|
|
497
|
-
"
|
|
498
|
-
"variantCount": "_2pt-bW_variantCount",
|
|
499
|
-
"selected": "_2pt-bW_selected",
|
|
500
|
-
"check": "_2pt-bW_check",
|
|
502
|
+
"empty": "_2pt-bW_empty",
|
|
503
|
+
"menu": "_2pt-bW_menu",
|
|
504
|
+
"cellLabel": "_2pt-bW_cellLabel",
|
|
505
|
+
"status": "_2pt-bW_status",
|
|
501
506
|
"search": "_2pt-bW_search",
|
|
507
|
+
"searchClear": "_2pt-bW_searchClear",
|
|
508
|
+
"groupName": "_2pt-bW_groupName",
|
|
509
|
+
"optionCopy": "_2pt-bW_optionCopy",
|
|
502
510
|
"toast": "_2pt-bW_toast",
|
|
503
|
-
"
|
|
504
|
-
"cell": "_2pt-bW_cell",
|
|
505
|
-
"option": "_2pt-bW_option",
|
|
506
|
-
"modelOption": "_2pt-bW_modelOption",
|
|
507
|
-
"empty": "_2pt-bW_empty"
|
|
511
|
+
"triggerLabel": "_2pt-bW_triggerLabel"
|
|
508
512
|
};
|
|
509
513
|
//#endregion
|
|
510
514
|
//#region src/client/ModelGroupSelect.tsx
|
|
@@ -1059,8 +1063,47 @@ window.__ModuleLoader__.load({
|
|
|
1059
1063
|
});
|
|
1060
1064
|
}
|
|
1061
1065
|
//#endregion
|
|
1066
|
+
//#region src/affiliate.ts
|
|
1067
|
+
/**
|
|
1068
|
+
* The invite code a referring page may leave on the browser window, and how it
|
|
1069
|
+
* reaches the site's own sign-up pages.
|
|
1070
|
+
*
|
|
1071
|
+
* The plugin never reads the site's invite configuration and never decides who
|
|
1072
|
+
* invited whom: a page that referred the user puts its code on `window`, this
|
|
1073
|
+
* module recognizes it, and the confirmation address handed to the site carries
|
|
1074
|
+
* it as the `aff` query parameter — the parameter the site's own front end saves
|
|
1075
|
+
* for its sign-up form and for the first sign-in of a third-party account. A
|
|
1076
|
+
* value that is not a code is dropped rather than repaired: an unusable code must
|
|
1077
|
+
* never turn into a failed connection.
|
|
1078
|
+
*
|
|
1079
|
+
* @module
|
|
1080
|
+
*/
|
|
1081
|
+
/** The global a referring page leaves its invite code on. */
|
|
1082
|
+
const AFFILIATE_GLOBAL = "NEARTOKEN_AFF";
|
|
1083
|
+
/** What is forwarded: the site's own codes are four characters, so this is slack, not a format. */
|
|
1084
|
+
const AFFILIATE_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
|
|
1085
|
+
/**
|
|
1086
|
+
* One value accepted as an invite code.
|
|
1087
|
+
* @param value - whatever a page or a request body offered.
|
|
1088
|
+
* @returns the trimmed code, or undefined when the value is not one.
|
|
1089
|
+
*/
|
|
1090
|
+
function normalizeAffiliateCode(value) {
|
|
1091
|
+
if (typeof value !== "string") return void 0;
|
|
1092
|
+
const code = value.trim();
|
|
1093
|
+
return AFFILIATE_PATTERN.test(code) ? code : void 0;
|
|
1094
|
+
}
|
|
1095
|
+
/**
|
|
1096
|
+
* The invite code a referring page left on a browser window.
|
|
1097
|
+
* @param scope - the global object to read (`globalThis` in the browser).
|
|
1098
|
+
* @returns the code, or undefined when this window carries none.
|
|
1099
|
+
*/
|
|
1100
|
+
function readAffiliateCode(scope) {
|
|
1101
|
+
if (typeof scope !== "object" || scope === null) return void 0;
|
|
1102
|
+
return normalizeAffiliateCode(scope[AFFILIATE_GLOBAL]);
|
|
1103
|
+
}
|
|
1104
|
+
//#endregion
|
|
1062
1105
|
//#region \0dsh-css:D:\Projects\deepseek-harness\dsh-neartoken\src\client\NearTokenSection.module.css.mjs
|
|
1063
|
-
const css = "._02HI2q_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}._02HI2q_title{margin:0;font-size:16px;font-weight:500;line-height:24px}._02HI2q_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}._02HI2q_card{border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-settings-card-fill);border-radius:var(--dsw-radius-xl);flex-direction:column;gap:12px;padding:14px 16px;display:flex}._02HI2q_cardHead{align-items:baseline;gap:10px;display:flex}._02HI2q_name{font-size:15px;font-weight:500;line-height:22px}._02HI2q_handle{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._02HI2q_badge{background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-secondary);border-radius:999px;margin-left:auto;padding:2px 8px;font-size:12px;line-height:18px}._02HI2q_badgeOn{color:var(--dsw-alias-state-success-primary)}._02HI2q_facts{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:14px 18px;margin:0;padding:12px 14px;display:grid}._02HI2q_fact{flex-direction:column;gap:2px;display:flex}._02HI2q_factLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._02HI2q_factValue{font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--dsw-alias-label-primary);font-size:15px;font-weight:500;line-height:22px}._02HI2q_valueRow{align-items:center;gap:6px;display:flex}._02HI2q_refresh{border-radius:var(--dsw-radius-sm);width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}._02HI2q_refresh:hover:not(:disabled){background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-primary)}._02HI2q_refresh:disabled{opacity:.55;cursor:default}._02HI2q_voucherFact{grid-column:1/-1}._02HI2q_voucherList{flex-direction:column;gap:2px;margin:0;display:flex}._02HI2q_voucherRow{justify-content:space-between;align-items:baseline;gap:10px;font-size:13px;line-height:20px;display:flex}._02HI2q_voucherGroup{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._02HI2q_voucherAmount{color:var(--dsw-alias-state-success-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}._02HI2q_voucherEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:13px;line-height:20px}._02HI2q_invite{color:var(--dsw-alias-label-primary);text-underline-offset:2px;text-decoration:underline}._02HI2q_form{flex-direction:column;gap:10px;display:flex}._02HI2q_label{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}._02HI2q_codeRow{align-items:center;gap:10px;display:flex}._02HI2q_code{font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);letter-spacing:.08em;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-primary);user-select:all;padding:4px 12px;font-size:18px;line-height:26px}._02HI2q_linkRow{flex-direction:column;gap:4px;display:flex}._02HI2q_linkLine{align-items:flex-start;gap:8px;display:flex}._02HI2q_link{min-width:0;font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);word-break:break-all;color:var(--dsw-alias-label-secondary);user-select:all;flex:auto;font-size:12px;line-height:18px}._02HI2q_actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}._02HI2q_topup{flex-direction:column;gap:8px;padding-top:2px;display:flex}._02HI2q_topupChips,._02HI2q_topupBar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._02HI2q_topupChip{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);min-width:48px;height:30px;color:var(--dsw-alias-label-primary);cursor:pointer;flex:none;padding:0 12px;font-size:13px}._02HI2q_topupChip:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._02HI2q_topupChipActive,._02HI2q_topupChipActive:hover:not(:disabled){background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);border-color:#0000}._02HI2q_topupInput{font-variant-numeric:tabular-nums;border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);width:140px;height:32px;color:var(--dsw-alias-label-primary);outline:none;flex:0 140px;padding:0 10px;font-size:13px}._02HI2q_topupInput:focus{border-color:var(--dsw-alias-button-primary-fill)}._02HI2q_topupInput::placeholder{color:var(--dsw-alias-label-dimmed)}._02HI2q_metaBtn{border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-tertiary);cursor:pointer;border-radius:9px;margin-left:auto;padding:1px 8px;font-size:11px;line-height:18px}._02HI2q_metaBtn:hover{color:var(--dsw-alias-label-primary)}._02HI2q_metaBtnOn{border-color:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-button-primary-fill)}._02HI2q_metaEditor{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-md);flex-direction:column;gap:8px;margin:2px 0 6px 26px;padding:10px 12px;display:flex}._02HI2q_metaTitle{font-weight:600}._02HI2q_metaIntro{color:var(--dsw-alias-label-tertiary);margin:0}._02HI2q_metaField{flex-wrap:wrap;align-items:center;gap:10px;display:flex}._02HI2q_metaLabel{min-width:120px;color:var(--dsw-alias-label-secondary)}._02HI2q_metaInput{width:140px;padding:2px 6px}._02HI2q_metaHint{color:var(--dsw-alias-label-tertiary);font-size:11px}._02HI2q_metaCheck{align-items:center;gap:4px;display:inline-flex}._02HI2q_metaActions{align-items:center;gap:8px;display:flex}._02HI2q_button{white-space:nowrap;border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;flex:none;padding:0 14px;font-size:14px}._02HI2q_buttonPrimary{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);border-color:#0000}._02HI2q_button:disabled{opacity:.55;cursor:default}._02HI2q_notice{color:var(--dsw-alias-state-warn-label);margin:0;font-size:12px;line-height:18px}._02HI2q_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._02HI2q_search{border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);height:32px;color:var(--dsw-alias-label-primary);padding:0 10px;font-size:14px}._02HI2q_search::placeholder{color:var(--dsw-alias-label-dimmed)}._02HI2q_toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._02HI2q_autosave{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:12px;line-height:18px}._02HI2q_list{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-md);flex-direction:column;max-height:320px;padding:4px;display:flex;overflow-y:auto}._02HI2q_row{border-radius:var(--dsw-radius-sm);cursor:pointer;align-items:baseline;gap:8px;padding:4px 6px;font-size:13px;line-height:20px;display:flex}._02HI2q_row:hover{background:var(--dsw-alias-interactive-bg-hover)}._02HI2q_row input{accent-color:var(--dsw-alias-button-primary-fill);align-self:center}._02HI2q_rowName{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:auto;overflow:hidden}._02HI2q_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;align-items:baseline;gap:8px;font-size:12px;display:flex}._02HI2q_rowRatio{color:var(--dsw-alias-label-secondary)}._02HI2q_tip{z-index:40;border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-settings-card-fill);pointer-events:none;flex-direction:column;gap:2px;width:280px;max-height:240px;padding:8px 10px;font-size:12px;line-height:18px;display:flex;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000024}._02HI2q_tipTitle{color:var(--dsw-alias-label-tertiary)}._02HI2q_tipRow{justify-content:space-between;align-items:baseline;gap:10px;display:flex}._02HI2q_tipGroup{min-width:0;color:var(--dsw-alias-label-primary);align-items:center;gap:4px;display:flex;overflow:hidden}._02HI2q_tipGroupName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._02HI2q_select{border:1px solid var(--dsw-color-border-subtle,#0000001f);max-width:60%;color:inherit;font:inherit;background:0 0;border-radius:6px;margin-left:auto;padding:2px 6px;font-size:12px}._02HI2q_select:disabled{opacity:.5}._02HI2q_cardToggle{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0;display:flex}._02HI2q_cardToggle:hover ._02HI2q_name{color:var(--dsw-alias-label-primary)}._02HI2q_count{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;margin-left:auto;font-size:12px;line-height:18px;display:inline-flex}._02HI2q_countDot{background:var(--dsw-alias-label-dimmed);border-radius:50%;width:3px;height:3px}._02HI2q_countPicked{color:var(--dsw-alias-label-secondary)}._02HI2q_chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .12s}._02HI2q_chevronOpen{transform:rotate(180deg)}";
|
|
1106
|
+
const css = "._02HI2q_section{max-width:720px;color:var(--dsw-alias-label-primary);flex-direction:column;gap:12px;display:flex}._02HI2q_title{margin:0;font-size:16px;font-weight:500;line-height:24px}._02HI2q_intro{color:var(--dsw-alias-label-tertiary);margin:0;font-size:14px;line-height:22px}._02HI2q_card{border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-settings-card-fill);border-radius:var(--dsw-radius-xl);flex-direction:column;gap:12px;padding:14px 16px;display:flex}._02HI2q_cardHead{align-items:baseline;gap:10px;display:flex}._02HI2q_name{font-size:15px;font-weight:500;line-height:22px}._02HI2q_handle{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._02HI2q_badge{background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-secondary);border-radius:999px;margin-left:auto;padding:2px 8px;font-size:12px;line-height:18px}._02HI2q_badgeOn{color:var(--dsw-alias-state-success-primary)}._02HI2q_facts{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:14px 18px;margin:0;padding:12px 14px;display:grid}._02HI2q_fact{flex-direction:column;gap:2px;display:flex}._02HI2q_factLabel{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._02HI2q_factValue{font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--dsw-alias-label-primary);font-size:15px;font-weight:500;line-height:22px}._02HI2q_valueRow{align-items:center;gap:6px;display:flex}._02HI2q_refresh{border-radius:var(--dsw-radius-sm);width:22px;height:22px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex}._02HI2q_refresh:hover:not(:disabled){background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-primary)}._02HI2q_refresh:disabled{opacity:.55;cursor:default}._02HI2q_voucherFact{grid-column:1/-1}._02HI2q_voucherList{flex-direction:column;gap:2px;margin:0;display:flex}._02HI2q_voucherRow{justify-content:space-between;align-items:baseline;gap:10px;font-size:13px;line-height:20px;display:flex}._02HI2q_voucherGroup{color:var(--dsw-alias-label-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._02HI2q_voucherAmount{color:var(--dsw-alias-state-success-primary);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}._02HI2q_voucherEmpty{color:var(--dsw-alias-label-tertiary);margin:0;font-size:13px;line-height:20px}._02HI2q_invite{color:var(--dsw-alias-label-primary);text-underline-offset:2px;text-decoration:underline}._02HI2q_form{flex-direction:column;gap:10px;display:flex}._02HI2q_label{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}._02HI2q_codeRow{align-items:center;gap:10px;display:flex}._02HI2q_code{font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);letter-spacing:.08em;border-radius:var(--dsw-radius-md);background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-primary);user-select:all;padding:4px 12px;font-size:18px;line-height:26px}._02HI2q_linkRow{flex-direction:column;gap:4px;display:flex}._02HI2q_linkLine{align-items:flex-start;gap:8px;display:flex}._02HI2q_link{min-width:0;font-family:var(--dsw-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);word-break:break-all;color:var(--dsw-alias-label-secondary);user-select:all;flex:auto;font-size:12px;line-height:18px}._02HI2q_actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}._02HI2q_topup{flex-direction:column;gap:8px;padding-top:2px;display:flex}._02HI2q_topupChips,._02HI2q_topupBar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._02HI2q_topupChip{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);min-width:48px;height:30px;color:var(--dsw-alias-label-primary);cursor:pointer;flex:none;padding:0 12px;font-size:13px}._02HI2q_topupChip:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._02HI2q_topupChipActive,._02HI2q_topupChipActive:hover:not(:disabled){background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);border-color:#0000}._02HI2q_topupInput{font-variant-numeric:tabular-nums;border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);width:140px;height:32px;color:var(--dsw-alias-label-primary);outline:none;flex:0 140px;padding:0 10px;font-size:13px}._02HI2q_topupInput:focus{border-color:var(--dsw-alias-button-primary-fill)}._02HI2q_topupInput::placeholder{color:var(--dsw-alias-label-dimmed)}._02HI2q_metaBtn{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-sm);background:var(--dsw-alias-button-elevated-fill);color:var(--dsw-alias-label-tertiary);cursor:pointer;margin-left:auto;padding:1px 8px;font-size:11px;line-height:18px}._02HI2q_metaBtn:hover{color:var(--dsw-alias-label-primary)}._02HI2q_metaBtnOn{border-color:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-button-primary-fill)}._02HI2q_metaEditor{border-radius:var(--dsw-radius-md);background:var(--dsw-alias-interactive-bg-hover);flex-direction:column;flex:none;gap:10px;margin:4px 0 6px;padding:12px 14px;display:flex}._02HI2q_metaHead{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}._02HI2q_metaTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:600;line-height:20px}._02HI2q_metaIntro{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._02HI2q_metaField{grid-template-columns:132px 132px minmax(0,1fr);align-items:center;gap:12px;font-size:13px;line-height:20px;display:grid}._02HI2q_metaLabel{color:var(--dsw-alias-label-secondary);white-space:nowrap}._02HI2q_metaInput{box-sizing:border-box;font-variant-numeric:tabular-nums;border-radius:var(--dsw-radius-sm);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);width:100%;height:30px;color:var(--dsw-alias-label-primary);outline:none;padding:0 10px;font-family:inherit;font-size:13px}._02HI2q_metaInput:focus{border-color:var(--dsw-alias-button-primary-fill)}._02HI2q_metaInput::placeholder{color:var(--dsw-alias-label-dimmed)}._02HI2q_metaHint{min-width:0;color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;font-size:12px;line-height:18px}._02HI2q_metaChecks{align-items:center;gap:18px;display:flex}._02HI2q_metaCheck{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:6px;display:inline-flex}._02HI2q_metaCheck input{accent-color:var(--dsw-alias-button-primary-fill);margin:0}._02HI2q_metaActions{align-items:center;gap:8px;margin-top:2px;display:flex}._02HI2q_metaActions ._02HI2q_button{height:28px;padding:0 12px;font-size:13px}._02HI2q_button{white-space:nowrap;border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);height:32px;color:var(--dsw-alias-label-primary);cursor:pointer;flex:none;padding:0 14px;font-size:14px}._02HI2q_buttonPrimary{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-inverted);border-color:#0000}._02HI2q_button:disabled{opacity:.55;cursor:default}._02HI2q_notice{color:var(--dsw-alias-state-warn-label);margin:0;font-size:12px;line-height:18px}._02HI2q_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:18px}._02HI2q_search{border-radius:var(--dsw-radius-md);border:.5px solid var(--dsw-alias-settings-card-stroke);background:var(--dsw-alias-button-elevated-fill);height:32px;color:var(--dsw-alias-label-primary);padding:0 10px;font-size:14px}._02HI2q_search::placeholder{color:var(--dsw-alias-label-dimmed)}._02HI2q_toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._02HI2q_autosave{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:12px;line-height:18px}._02HI2q_list{border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-md);flex-direction:column;max-height:320px;padding:4px;display:flex;overflow-y:auto}._02HI2q_list:has(._02HI2q_metaEditor){max-height:520px}._02HI2q_row{border-radius:var(--dsw-radius-sm);cursor:pointer;align-items:baseline;gap:8px;padding:4px 6px;font-size:13px;line-height:20px;display:flex}._02HI2q_row:hover{background:var(--dsw-alias-interactive-bg-hover)}._02HI2q_row input{accent-color:var(--dsw-alias-button-primary-fill);align-self:center}._02HI2q_rowName{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:auto;overflow:hidden}._02HI2q_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;align-items:baseline;gap:8px;font-size:12px;display:flex}._02HI2q_rowRatio{color:var(--dsw-alias-label-secondary)}._02HI2q_tip{z-index:40;border:.5px solid var(--dsw-alias-settings-card-stroke);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-settings-card-fill);pointer-events:none;flex-direction:column;gap:2px;width:280px;max-height:240px;padding:8px 10px;font-size:12px;line-height:18px;display:flex;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000024}._02HI2q_tipTitle{color:var(--dsw-alias-label-tertiary)}._02HI2q_tipRow{justify-content:space-between;align-items:baseline;gap:10px;display:flex}._02HI2q_tipGroup{min-width:0;color:var(--dsw-alias-label-primary);align-items:center;gap:4px;display:flex;overflow:hidden}._02HI2q_tipGroupName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._02HI2q_select{border:1px solid var(--dsw-color-border-subtle,#0000001f);max-width:60%;color:inherit;font:inherit;background:0 0;border-radius:6px;margin-left:auto;padding:2px 6px;font-size:12px}._02HI2q_select:disabled{opacity:.5}._02HI2q_cardToggle{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0;display:flex}._02HI2q_cardToggle:hover ._02HI2q_name{color:var(--dsw-alias-label-primary)}._02HI2q_count{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;margin-left:auto;font-size:12px;line-height:18px;display:inline-flex}._02HI2q_countDot{background:var(--dsw-alias-label-dimmed);border-radius:50%;width:3px;height:3px}._02HI2q_countPicked{color:var(--dsw-alias-label-secondary)}._02HI2q_chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .12s}._02HI2q_chevronOpen{transform:rotate(180deg)}";
|
|
1064
1107
|
const tagId = "dsh-neartoken/NearTokenSection.module.css";
|
|
1065
1108
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
1066
1109
|
const tag = document.createElement("style");
|
|
@@ -1070,77 +1113,79 @@ window.__ModuleLoader__.load({
|
|
|
1070
1113
|
document.head.appendChild(tag);
|
|
1071
1114
|
}
|
|
1072
1115
|
var NearTokenSection_module_css_default = {
|
|
1073
|
-
"
|
|
1074
|
-
"
|
|
1075
|
-
"
|
|
1076
|
-
"
|
|
1077
|
-
"
|
|
1078
|
-
"tipGroup": "_02HI2q_tipGroup",
|
|
1079
|
-
"count": "_02HI2q_count",
|
|
1080
|
-
"voucherGroup": "_02HI2q_voucherGroup",
|
|
1081
|
-
"select": "_02HI2q_select",
|
|
1082
|
-
"metaHint": "_02HI2q_metaHint",
|
|
1083
|
-
"list": "_02HI2q_list",
|
|
1116
|
+
"tip": "_02HI2q_tip",
|
|
1117
|
+
"voucherAmount": "_02HI2q_voucherAmount",
|
|
1118
|
+
"button": "_02HI2q_button",
|
|
1119
|
+
"topupChipActive": "_02HI2q_topupChipActive",
|
|
1120
|
+
"metaLabel": "_02HI2q_metaLabel",
|
|
1084
1121
|
"form": "_02HI2q_form",
|
|
1085
|
-
"
|
|
1086
|
-
"
|
|
1087
|
-
"facts": "_02HI2q_facts",
|
|
1088
|
-
"fact": "_02HI2q_fact",
|
|
1089
|
-
"badge": "_02HI2q_badge",
|
|
1122
|
+
"metaInput": "_02HI2q_metaInput",
|
|
1123
|
+
"hint": "_02HI2q_hint",
|
|
1090
1124
|
"codeRow": "_02HI2q_codeRow",
|
|
1091
|
-
"metaActions": "_02HI2q_metaActions",
|
|
1092
|
-
"buttonPrimary": "_02HI2q_buttonPrimary",
|
|
1093
1125
|
"linkRow": "_02HI2q_linkRow",
|
|
1094
|
-
"
|
|
1095
|
-
"
|
|
1096
|
-
"rowName": "_02HI2q_rowName",
|
|
1097
|
-
"factLabel": "_02HI2q_factLabel",
|
|
1098
|
-
"metaCheck": "_02HI2q_metaCheck",
|
|
1099
|
-
"intro": "_02HI2q_intro",
|
|
1100
|
-
"label": "_02HI2q_label",
|
|
1101
|
-
"handle": "_02HI2q_handle",
|
|
1102
|
-
"tipGroupName": "_02HI2q_tipGroupName",
|
|
1126
|
+
"section": "_02HI2q_section",
|
|
1127
|
+
"rowMeta": "_02HI2q_rowMeta",
|
|
1103
1128
|
"search": "_02HI2q_search",
|
|
1104
|
-
"
|
|
1105
|
-
"
|
|
1106
|
-
"
|
|
1129
|
+
"valueRow": "_02HI2q_valueRow",
|
|
1130
|
+
"rowRatio": "_02HI2q_rowRatio",
|
|
1131
|
+
"title": "_02HI2q_title",
|
|
1107
1132
|
"topupBar": "_02HI2q_topupBar",
|
|
1108
|
-
"
|
|
1109
|
-
"
|
|
1110
|
-
"
|
|
1111
|
-
"
|
|
1112
|
-
"button": "_02HI2q_button",
|
|
1113
|
-
"hint": "_02HI2q_hint",
|
|
1133
|
+
"factValue": "_02HI2q_factValue",
|
|
1134
|
+
"voucherEmpty": "_02HI2q_voucherEmpty",
|
|
1135
|
+
"chevron": "_02HI2q_chevron",
|
|
1136
|
+
"rowName": "_02HI2q_rowName",
|
|
1114
1137
|
"autosave": "_02HI2q_autosave",
|
|
1115
|
-
"
|
|
1116
|
-
"
|
|
1117
|
-
"
|
|
1118
|
-
"
|
|
1138
|
+
"countDot": "_02HI2q_countDot",
|
|
1139
|
+
"facts": "_02HI2q_facts",
|
|
1140
|
+
"voucherGroup": "_02HI2q_voucherGroup",
|
|
1141
|
+
"linkLine": "_02HI2q_linkLine",
|
|
1142
|
+
"metaBtn": "_02HI2q_metaBtn",
|
|
1143
|
+
"factLabel": "_02HI2q_factLabel",
|
|
1144
|
+
"metaField": "_02HI2q_metaField",
|
|
1145
|
+
"count": "_02HI2q_count",
|
|
1146
|
+
"handle": "_02HI2q_handle",
|
|
1147
|
+
"tipTitle": "_02HI2q_tipTitle",
|
|
1148
|
+
"badgeOn": "_02HI2q_badgeOn",
|
|
1119
1149
|
"topupChips": "_02HI2q_topupChips",
|
|
1120
|
-
"
|
|
1121
|
-
"
|
|
1122
|
-
"
|
|
1123
|
-
"
|
|
1124
|
-
"
|
|
1150
|
+
"label": "_02HI2q_label",
|
|
1151
|
+
"metaChecks": "_02HI2q_metaChecks",
|
|
1152
|
+
"intro": "_02HI2q_intro",
|
|
1153
|
+
"refresh": "_02HI2q_refresh",
|
|
1154
|
+
"link": "_02HI2q_link",
|
|
1155
|
+
"notice": "_02HI2q_notice",
|
|
1156
|
+
"voucherRow": "_02HI2q_voucherRow",
|
|
1125
1157
|
"toolbar": "_02HI2q_toolbar",
|
|
1126
|
-
"
|
|
1127
|
-
"
|
|
1158
|
+
"topupChip": "_02HI2q_topupChip",
|
|
1159
|
+
"metaHint": "_02HI2q_metaHint",
|
|
1128
1160
|
"code": "_02HI2q_code",
|
|
1129
|
-
"voucherRow": "_02HI2q_voucherRow",
|
|
1130
|
-
"tipTitle": "_02HI2q_tipTitle",
|
|
1131
|
-
"metaTitle": "_02HI2q_metaTitle",
|
|
1132
|
-
"metaField": "_02HI2q_metaField",
|
|
1133
|
-
"refresh": "_02HI2q_refresh",
|
|
1134
|
-
"countPicked": "_02HI2q_countPicked",
|
|
1135
|
-
"rowRatio": "_02HI2q_rowRatio",
|
|
1136
|
-
"metaInput": "_02HI2q_metaInput",
|
|
1137
|
-
"invite": "_02HI2q_invite",
|
|
1138
|
-
"topupInput": "_02HI2q_topupInput",
|
|
1139
|
-
"metaLabel": "_02HI2q_metaLabel",
|
|
1140
1161
|
"voucherFact": "_02HI2q_voucherFact",
|
|
1141
|
-
"
|
|
1162
|
+
"voucherList": "_02HI2q_voucherList",
|
|
1163
|
+
"topupInput": "_02HI2q_topupInput",
|
|
1142
1164
|
"cardHead": "_02HI2q_cardHead",
|
|
1143
|
-
"
|
|
1165
|
+
"metaHead": "_02HI2q_metaHead",
|
|
1166
|
+
"tipGroupName": "_02HI2q_tipGroupName",
|
|
1167
|
+
"select": "_02HI2q_select",
|
|
1168
|
+
"topup": "_02HI2q_topup",
|
|
1169
|
+
"metaIntro": "_02HI2q_metaIntro",
|
|
1170
|
+
"chevronOpen": "_02HI2q_chevronOpen",
|
|
1171
|
+
"name": "_02HI2q_name",
|
|
1172
|
+
"metaEditor": "_02HI2q_metaEditor",
|
|
1173
|
+
"card": "_02HI2q_card",
|
|
1174
|
+
"metaBtnOn": "_02HI2q_metaBtnOn",
|
|
1175
|
+
"tipRow": "_02HI2q_tipRow",
|
|
1176
|
+
"cardToggle": "_02HI2q_cardToggle",
|
|
1177
|
+
"actions": "_02HI2q_actions",
|
|
1178
|
+
"invite": "_02HI2q_invite",
|
|
1179
|
+
"metaActions": "_02HI2q_metaActions",
|
|
1180
|
+
"list": "_02HI2q_list",
|
|
1181
|
+
"metaTitle": "_02HI2q_metaTitle",
|
|
1182
|
+
"fact": "_02HI2q_fact",
|
|
1183
|
+
"metaCheck": "_02HI2q_metaCheck",
|
|
1184
|
+
"buttonPrimary": "_02HI2q_buttonPrimary",
|
|
1185
|
+
"tipGroup": "_02HI2q_tipGroup",
|
|
1186
|
+
"row": "_02HI2q_row",
|
|
1187
|
+
"badge": "_02HI2q_badge",
|
|
1188
|
+
"countPicked": "_02HI2q_countPicked"
|
|
1144
1189
|
};
|
|
1145
1190
|
//#endregion
|
|
1146
1191
|
//#region src/client/NearTokenSection.tsx
|
|
@@ -1242,7 +1287,7 @@ window.__ModuleLoader__.load({
|
|
|
1242
1287
|
}, [t]);
|
|
1243
1288
|
const connect = () => {
|
|
1244
1289
|
run(async () => {
|
|
1245
|
-
const outcome = await api.begin();
|
|
1290
|
+
const outcome = await api.begin(readAffiliateCode(globalThis));
|
|
1246
1291
|
if (outcome.status === "failed") setError(t("account.failed", { message: outcome.message }));
|
|
1247
1292
|
await refresh();
|
|
1248
1293
|
});
|
|
@@ -1915,13 +1960,15 @@ window.__ModuleLoader__.load({
|
|
|
1915
1960
|
}), editing !== entry.model ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1916
1961
|
className: NearTokenSection_module_css_default.metaEditor,
|
|
1917
1962
|
children: [
|
|
1918
|
-
/* @__PURE__ */ (0, react_jsx_runtime.
|
|
1919
|
-
className: NearTokenSection_module_css_default.
|
|
1920
|
-
children:
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1963
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1964
|
+
className: NearTokenSection_module_css_default.metaHead,
|
|
1965
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1966
|
+
className: NearTokenSection_module_css_default.metaTitle,
|
|
1967
|
+
children: t("meta.editorTitle")
|
|
1968
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1969
|
+
className: NearTokenSection_module_css_default.metaIntro,
|
|
1970
|
+
children: t("meta.editorIntro")
|
|
1971
|
+
})]
|
|
1925
1972
|
}),
|
|
1926
1973
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
1927
1974
|
className: NearTokenSection_module_css_default.metaField,
|
|
@@ -1984,31 +2031,33 @@ window.__ModuleLoader__.load({
|
|
|
1984
2031
|
className: NearTokenSection_module_css_default.metaLabel,
|
|
1985
2032
|
children: t("meta.input")
|
|
1986
2033
|
}),
|
|
1987
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("
|
|
1988
|
-
className: NearTokenSection_module_css_default.
|
|
1989
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2034
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
2035
|
+
className: NearTokenSection_module_css_default.metaChecks,
|
|
2036
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
2037
|
+
className: NearTokenSection_module_css_default.metaCheck,
|
|
2038
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
2039
|
+
type: "checkbox",
|
|
2040
|
+
checked: draft.text,
|
|
2041
|
+
onChange: (event) => {
|
|
2042
|
+
setDraft((current) => ({
|
|
2043
|
+
...current,
|
|
2044
|
+
text: event.target.checked
|
|
2045
|
+
}));
|
|
2046
|
+
}
|
|
2047
|
+
}), t("meta.inputText")]
|
|
2048
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
2049
|
+
className: NearTokenSection_module_css_default.metaCheck,
|
|
2050
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
2051
|
+
type: "checkbox",
|
|
2052
|
+
checked: draft.image,
|
|
2053
|
+
onChange: (event) => {
|
|
2054
|
+
setDraft((current) => ({
|
|
2055
|
+
...current,
|
|
2056
|
+
image: event.target.checked
|
|
2057
|
+
}));
|
|
2058
|
+
}
|
|
2059
|
+
}), t("meta.inputImage")]
|
|
2060
|
+
})]
|
|
2012
2061
|
}),
|
|
2013
2062
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
2014
2063
|
className: NearTokenSection_module_css_default.metaHint,
|
|
@@ -2021,7 +2070,7 @@ window.__ModuleLoader__.load({
|
|
|
2021
2070
|
children: [
|
|
2022
2071
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2023
2072
|
type: "button",
|
|
2024
|
-
className: NearTokenSection_module_css_default.buttonPrimary
|
|
2073
|
+
className: `${NearTokenSection_module_css_default.button} ${NearTokenSection_module_css_default.buttonPrimary}`,
|
|
2025
2074
|
disabled: saving,
|
|
2026
2075
|
onClick: () => {
|
|
2027
2076
|
saveEditor(entry);
|