Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a2875738ce | |||
| 85adcdceef | |||
| ab99e3bf2f | |||
| e3b48e2614 | |||
| 5b316a2399 | |||
| 3f1954b38d | |||
| 96d335db8a | |||
| 307537a7ce |
@@ -1,43 +0,0 @@
|
|||||||
# 自动检测文本文件并统一换行符
|
|
||||||
* text=auto eol=lf
|
|
||||||
|
|
||||||
# 源码强制使用 LF(跨平台一致)
|
|
||||||
*.ts text eol=lf
|
|
||||||
*.tsx text eol=lf
|
|
||||||
*.js text eol=lf
|
|
||||||
*.jsx text eol=lf
|
|
||||||
*.mjs text eol=lf
|
|
||||||
*.cjs text eol=lf
|
|
||||||
*.json text eol=lf
|
|
||||||
*.css text eol=lf
|
|
||||||
*.html text eol=lf
|
|
||||||
*.md text eol=lf
|
|
||||||
*.svg text eol=lf
|
|
||||||
|
|
||||||
# 配置类(统一 LF)
|
|
||||||
*.yml text eol=lf
|
|
||||||
*.yaml text eol=lf
|
|
||||||
*.toml text eol=lf
|
|
||||||
*.conf text eol=lf
|
|
||||||
|
|
||||||
# Windows 专用脚本保持 CRLF
|
|
||||||
*.bat text eol=crlf
|
|
||||||
*.cmd text eol=crlf
|
|
||||||
|
|
||||||
# 二进制文件,不做换行符转换
|
|
||||||
*.png binary
|
|
||||||
*.jpg binary
|
|
||||||
*.jpeg binary
|
|
||||||
*.gif binary
|
|
||||||
*.webp binary
|
|
||||||
*.ico binary
|
|
||||||
*.woff binary
|
|
||||||
*.woff2 binary
|
|
||||||
*.ttf binary
|
|
||||||
*.eot binary
|
|
||||||
*.otf binary
|
|
||||||
*.mp4 binary
|
|
||||||
*.mp3 binary
|
|
||||||
*.pdf binary
|
|
||||||
*.zip binary
|
|
||||||
*.gz binary
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -381,6 +381,108 @@ export default function EcommerceClonePanel({
|
|||||||
</section>
|
</section>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
{cloneOutput === "hot" ? (
|
||||||
|
<section className="clone-ai-replicate-panel" aria-label="爆款图复刻设置">
|
||||||
|
<div className="clone-ai-dynamic-head">
|
||||||
|
<strong>爆款图参考设置</strong>
|
||||||
|
<span>随生成模式切换</span>
|
||||||
|
</div>
|
||||||
|
<div className="clone-ai-replicate-section">
|
||||||
|
<span className="clone-ai-replicate-title">参考内容</span>
|
||||||
|
<div className="clone-ai-replicate-tabs" role="tablist" aria-label="参考内容来源">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className={cloneReferenceMode === "upload" ? "is-active" : ""}
|
||||||
|
aria-selected={cloneReferenceMode === "upload"}
|
||||||
|
onClick={() => setCloneReferenceMode("upload")}
|
||||||
|
>
|
||||||
|
上传参考图
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className={cloneReferenceMode === "link" ? "is-active" : ""}
|
||||||
|
aria-selected={cloneReferenceMode === "link"}
|
||||||
|
onClick={() => setCloneReferenceMode("link")}
|
||||||
|
>
|
||||||
|
导入链接
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{cloneReferenceMode === "upload" ? (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className={`clone-ai-replicate-upload${isCloneReferenceDragging ? " is-dragging" : ""}${cloneReferenceImages.length ? " has-files" : ""}`}
|
||||||
|
onClick={() => cloneReferenceInputRef.current?.click()}
|
||||||
|
onDragOver={handleCloneReferenceDragOver}
|
||||||
|
onDragLeave={handleCloneReferenceDragLeave}
|
||||||
|
onDrop={handleCloneReferenceDrop}
|
||||||
|
>
|
||||||
|
{cloneReferenceImages.length ? (
|
||||||
|
<>
|
||||||
|
<div className="clone-ai-replicate-files">
|
||||||
|
{cloneReferenceImages.map((item) => (
|
||||||
|
<figure
|
||||||
|
key={item.id}
|
||||||
|
className="clone-ai-replicate-file"
|
||||||
|
onMouseEnter={(e) => handleFileMouseEnter(item.src, e)}
|
||||||
|
onMouseLeave={handleFileMouseLeave}
|
||||||
|
>
|
||||||
|
<img src={item.src} alt="" />
|
||||||
|
</figure>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<span className="clone-ai-replicate-add-more">
|
||||||
|
<CloudUploadOutlined />
|
||||||
|
点击继续上传文件
|
||||||
|
</span>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<span>
|
||||||
|
<CloudUploadOutlined />
|
||||||
|
<span className="clone-ai-replicate-upload-text">拖拽或点击上传参考图</span>
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
<em>{cloneReferenceImages.length ? `已选 ${cloneReferenceImages.length}/${maxCloneReferenceImages}` : `最多 ${maxCloneReferenceImages} 张`}</em>
|
||||||
|
{isCloneReferenceDragging ? (
|
||||||
|
<div className="clone-ai-replicate-upload-overlay">
|
||||||
|
<CloudUploadOutlined />
|
||||||
|
<span>释放文件以上传</span>
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
|
</button>
|
||||||
|
) : (
|
||||||
|
<label className="clone-ai-replicate-link">
|
||||||
|
<input placeholder="粘贴商品图或详情页链接" />
|
||||||
|
</label>
|
||||||
|
)}
|
||||||
|
<input
|
||||||
|
ref={cloneReferenceInputRef}
|
||||||
|
type="file"
|
||||||
|
accept="image/jpeg,image/png,image/webp"
|
||||||
|
multiple
|
||||||
|
onChange={handleCloneReferenceUpload}
|
||||||
|
aria-label="上传参考图片"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="clone-ai-replicate-section">
|
||||||
|
<span className="clone-ai-replicate-title">复刻程度</span>
|
||||||
|
<div className="clone-ai-replicate-levels" role="toolbar" aria-label="复刻程度">
|
||||||
|
{cloneReplicateLevelOptions.map((option) => (
|
||||||
|
<button
|
||||||
|
key={option.key}
|
||||||
|
type="button"
|
||||||
|
className={cloneReplicateLevel === option.key ? "is-active" : ""}
|
||||||
|
aria-pressed={cloneReplicateLevel === option.key}
|
||||||
|
onClick={() => setCloneReplicateLevel(option.key)}
|
||||||
|
>
|
||||||
|
<strong>{option.title}</strong>
|
||||||
|
<span>{option.desc}</span>
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
) : null}
|
||||||
|
|
||||||
{cloneOutput === "set" ? (
|
{cloneOutput === "set" ? (
|
||||||
<section className="clone-ai-count-panel" aria-label="套图图片数量">
|
<section className="clone-ai-count-panel" aria-label="套图图片数量">
|
||||||
<div className="clone-ai-dynamic-head">
|
<div className="clone-ai-dynamic-head">
|
||||||
|
|||||||
+2647
-498
File diff suppressed because it is too large
Load Diff
@@ -2950,6 +2950,15 @@
|
|||||||
min-width: 0;
|
min-width: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.product-clone-page[data-tool="clone"] .clone-ai-result-stack > .clone-ai-node-label {
|
||||||
|
position: absolute;
|
||||||
|
top: -6px;
|
||||||
|
left: 50%;
|
||||||
|
z-index: 5;
|
||||||
|
transform: translate(-50%, -100%);
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.product-clone-page[data-tool="clone"] .clone-ai-source-corner-action {
|
.product-clone-page[data-tool="clone"] .clone-ai-source-corner-action {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -6px;
|
top: -6px;
|
||||||
|
|||||||
Reference in New Issue
Block a user