mirror of
https://github.com/langgenius/dify.git
synced 2026-09-05 00:31:19 +08:00
Signed-off-by: kenwoodjw <blackxin55+@gmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: zxhlyh <jasonapring2015@outlook.com> Co-authored-by: 起岚 <155608604+xiaoyaoqilan@users.noreply.github.com> Co-authored-by: Parman Mohammadalizadeh <prmma23@gmail.com> Co-authored-by: Escape0707 <tothesong@gmail.com> Co-authored-by: Xin Zhang <zhangxin@dify.ai> Co-authored-by: iridescentWen <66297467+iridescentWen@users.noreply.github.com> Co-authored-by: Bond Zhu <37842169+MRZHUH@users.noreply.github.com> Co-authored-by: KVOJJJin <jzongcode@gmail.com> Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: 非法操作 <hjlarry@163.com> Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com> Co-authored-by: Asuka Minato <i@asukaminato.eu.org> Co-authored-by: Chester <superdiao6@gmail.com> Co-authored-by: WH-2099 <wh2099@pm.me> Co-authored-by: Jony <619963502@qq.com> Co-authored-by: Jony <13896935+zyz619963502zyz@users.noreply.github.com> Co-authored-by: Harsh Kashyap <harsh.kashyap2001@gmail.com> Co-authored-by: Harsh Kashyap <Harsh23Kashyap@users.noreply.github.com> Co-authored-by: kenwoodjw <blackxin55+@gmail.com> Co-authored-by: csurong <csurong1@gmail.com> Co-authored-by: caosurong <surong.cao@thinkingdata.cn> Co-authored-by: Taranum Wasu <81034301+Taranum01@users.noreply.github.com> Co-authored-by: Taranum01 <50813317+Taranum01@users.noreply.github.com> Co-authored-by: Pranav Agarwal <agarwalpranav0711@gmail.com> Co-authored-by: Stephen Zhou <hi@hyoban.cc> Co-authored-by: zl86790 <marshal_li_b@163.com> Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com> Co-authored-by: yunlu.wen <yunlu.wen@dify.ai> Co-authored-by: yyh <yuanyouhuilyz@gmail.com>
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import type { ComponentPropsWithoutRef } from 'react'
|
|
import { cn } from '@langgenius/dify-ui/cn'
|
|
|
|
const gridColumnCount = 384
|
|
const gridRowCount = 32
|
|
|
|
function getGridCellOpacity(row: number, column: number) {
|
|
const seed = Math.sin((row + 1) * 12.9898 + (column + 1) * 78.233) * 43758.5453
|
|
const noise = seed - Math.floor(seed)
|
|
const verticalProgress = row / (gridRowCount - 1)
|
|
const densityThreshold = 0.26 + verticalProgress * 0.72
|
|
const horizontalWeight = Math.min(1, column / 160)
|
|
const verticalWeight = (1 - verticalProgress) ** 1.7
|
|
|
|
if (noise < densityThreshold) return 0
|
|
|
|
return Number(
|
|
Math.min(0.272, (0.032 + noise * 0.058 + horizontalWeight * 0.09) * verticalWeight).toFixed(3),
|
|
)
|
|
}
|
|
|
|
const gridCells = Array.from({ length: gridColumnCount * gridRowCount }, (_, index) => {
|
|
const row = Math.floor(index / gridColumnCount)
|
|
const column = index % gridColumnCount
|
|
const opacity = getGridCellOpacity(row, column)
|
|
|
|
return {
|
|
id: `skill-builder-grid-cell-${row}-${column}`,
|
|
column: column + 1,
|
|
opacity,
|
|
row: row + 1,
|
|
}
|
|
}).filter((cell) => cell.opacity > 0)
|
|
|
|
export function SkillBuilderGridTexture({ className, ...props }: ComponentPropsWithoutRef<'div'>) {
|
|
return (
|
|
<div
|
|
className={cn(
|
|
'grid grid-cols-[repeat(384,4px)] grid-rows-[repeat(32,4px)] gap-0.5 opacity-70',
|
|
className,
|
|
)}
|
|
{...props}
|
|
>
|
|
{gridCells.map((cell) => (
|
|
<span
|
|
key={cell.id}
|
|
className="rounded-[1px] bg-[#98A2B2]"
|
|
style={{
|
|
gridColumn: `${cell.column}`,
|
|
gridRow: `${cell.row}`,
|
|
opacity: cell.opacity,
|
|
}}
|
|
/>
|
|
))}
|
|
</div>
|
|
)
|
|
}
|