diff --git a/hangtag-ui/build/vite/index.ts b/hangtag-ui/build/vite/index.ts index 585759f..04d5c0b 100644 --- a/hangtag-ui/build/vite/index.ts +++ b/hangtag-ui/build/vite/index.ts @@ -67,7 +67,8 @@ export function createVitePlugins() { globs: ["src/components/**/**.{vue, md}", '!src/components/DiyEditor/components/mobile/**'] }), EslintPlugin({ - cache: false, + fix: false, // 禁用实时修复 + cache: true, // 开启缓存 include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx'] // 检查的文件 }), VueI18nPlugin({ diff --git a/hangtag-ui/package.json b/hangtag-ui/package.json index 1fa8864..b3f1285 100644 --- a/hangtag-ui/package.json +++ b/hangtag-ui/package.json @@ -25,6 +25,17 @@ "lint:lint-staged": "lint-staged -c " }, "dependencies": { + "@antv/x6": "^2.18.1", + "@antv/x6-plugin-clipboard": "^2.1.6", + "@antv/x6-plugin-dnd": "^2.1.1", + "@antv/x6-plugin-export": "^2.1.6", + "@antv/x6-plugin-history": "^2.2.4", + "@antv/x6-plugin-keyboard": "^2.2.3", + "@antv/x6-plugin-scroller": "^2.0.10", + "@antv/x6-plugin-selection": "^2.2.2", + "@antv/x6-plugin-snapline": "^2.1.7", + "@antv/x6-plugin-transform": "^2.1.8", + "@antv/x6-vue-shape": "^2.1.2", "@element-plus/icons-vue": "^2.1.0", "@form-create/designer": "^3.1.3", "@form-create/element-ui": "^3.1.24", @@ -83,8 +94,8 @@ "@types/qs": "^6.9.12", "@typescript-eslint/eslint-plugin": "^7.1.0", "@typescript-eslint/parser": "^7.1.0", - "@unocss/transformer-variant-group": "^0.58.5", "@unocss/eslint-config": "^0.57.4", + "@unocss/transformer-variant-group": "^0.58.5", "@vitejs/plugin-legacy": "^5.3.1", "@vitejs/plugin-vue": "^5.0.4", "@vitejs/plugin-vue-jsx": "^3.1.0", diff --git a/hangtag-ui/public/x6/font_title/AlexBrush-Regular.svg b/hangtag-ui/public/x6/font_title/AlexBrush-Regular.svg new file mode 100644 index 0000000..f4697f8 --- /dev/null +++ b/hangtag-ui/public/x6/font_title/AlexBrush-Regular.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/font_title/En_AlexBrush-Regular.svg b/hangtag-ui/public/x6/font_title/En_AlexBrush-Regular.svg new file mode 100644 index 0000000..9760682 --- /dev/null +++ b/hangtag-ui/public/x6/font_title/En_AlexBrush-Regular.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/font_title/En_Bold.svg b/hangtag-ui/public/x6/font_title/En_Bold.svg new file mode 100644 index 0000000..24e9098 --- /dev/null +++ b/hangtag-ui/public/x6/font_title/En_Bold.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/font_title/En_Light.svg b/hangtag-ui/public/x6/font_title/En_Light.svg new file mode 100644 index 0000000..12de0c7 --- /dev/null +++ b/hangtag-ui/public/x6/font_title/En_Light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/font_title/En_Sedium.svg b/hangtag-ui/public/x6/font_title/En_Sedium.svg new file mode 100644 index 0000000..bab7922 --- /dev/null +++ b/hangtag-ui/public/x6/font_title/En_Sedium.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/font_title/FangSong.svg b/hangtag-ui/public/x6/font_title/FangSong.svg new file mode 100644 index 0000000..ad4452c --- /dev/null +++ b/hangtag-ui/public/x6/font_title/FangSong.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/font_title/KaiTi.svg b/hangtag-ui/public/x6/font_title/KaiTi.svg new file mode 100644 index 0000000..f6b10b2 --- /dev/null +++ b/hangtag-ui/public/x6/font_title/KaiTi.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/font_title/SimHei.svg b/hangtag-ui/public/x6/font_title/SimHei.svg new file mode 100644 index 0000000..f4697f8 --- /dev/null +++ b/hangtag-ui/public/x6/font_title/SimHei.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/tools/gt.svg b/hangtag-ui/public/x6/tools/gt.svg new file mode 100644 index 0000000..b3765f9 --- /dev/null +++ b/hangtag-ui/public/x6/tools/gt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/tools/lt.svg b/hangtag-ui/public/x6/tools/lt.svg new file mode 100644 index 0000000..b3765f9 --- /dev/null +++ b/hangtag-ui/public/x6/tools/lt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/hangtag-ui/public/x6/tools/toggle.svg b/hangtag-ui/public/x6/tools/toggle.svg new file mode 100644 index 0000000..b007c3a --- /dev/null +++ b/hangtag-ui/public/x6/tools/toggle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/hangtag-ui/src/api/oms/order/index.ts b/hangtag-ui/src/api/oms/order/index.ts index 63cf316..e69de29 100644 --- a/hangtag-ui/src/api/oms/order/index.ts +++ b/hangtag-ui/src/api/oms/order/index.ts @@ -1,11 +0,0 @@ - - - - - diff --git a/hangtag-ui/src/api/oms/order/index.vue b/hangtag-ui/src/api/oms/order/index.vue index 63cf316..6f06df3 100644 --- a/hangtag-ui/src/api/oms/order/index.vue +++ b/hangtag-ui/src/api/oms/order/index.vue @@ -3,7 +3,9 @@ diff --git a/hangtag-ui/src/components/DraftDesign/components/EmptyPrompt.vue b/hangtag-ui/src/components/DraftDesign/components/EmptyPrompt.vue new file mode 100644 index 0000000..d8e27f3 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/components/EmptyPrompt.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/hangtag-ui/src/components/DraftDesign/components/layout/LeftPanel.vue b/hangtag-ui/src/components/DraftDesign/components/layout/LeftPanel.vue new file mode 100644 index 0000000..2d87231 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/components/layout/LeftPanel.vue @@ -0,0 +1,274 @@ + + + + diff --git a/hangtag-ui/src/components/DraftDesign/components/layout/fontFamilyIcon.scss b/hangtag-ui/src/components/DraftDesign/components/layout/fontFamilyIcon.scss new file mode 100644 index 0000000..258affc --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/components/layout/fontFamilyIcon.scss @@ -0,0 +1,21 @@ +.font-FangSong{ + background-image: url("/x6/font_title/FangSong.svg"); +} +.font-SimHei{ + background-image: url("/x6/font_title/SimHei.svg"); +} +.font-KaiTi{ + background-image: url("/x6/font_title/KaiTi.svg"); +} +.font-en-AlexBrush-Regular{ + background-image: url("/x6/font_title/En_AlexBrush-Regular.svg"); +} +.font-en-Bold{ + background-image: url("/x6/font_title/En_Bold.svg"); +} +.font-en-Light{ + background-image: url("/x6/font_title/En_Light.svg"); +} +.font-en-Sedium{ + background-image: url("/x6/font_title/En_Sedium.svg"); +} \ No newline at end of file diff --git a/hangtag-ui/src/components/DraftDesign/components/layout/index.vue b/hangtag-ui/src/components/DraftDesign/components/layout/index.vue new file mode 100644 index 0000000..7760ac5 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/components/layout/index.vue @@ -0,0 +1,977 @@ + + + + diff --git a/hangtag-ui/src/components/DraftDesign/components/node/LineCellNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/LineCellNode.vue new file mode 100644 index 0000000..71cc15f --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/components/node/LineCellNode.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/hangtag-ui/src/components/DraftDesign/components/node/TextCellNode.vue b/hangtag-ui/src/components/DraftDesign/components/node/TextCellNode.vue new file mode 100644 index 0000000..f64ffc3 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/components/node/TextCellNode.vue @@ -0,0 +1,242 @@ + + + + + diff --git a/hangtag-ui/src/components/DraftDesign/config/index.ts b/hangtag-ui/src/components/DraftDesign/config/index.ts new file mode 100644 index 0000000..6b7153f --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/config/index.ts @@ -0,0 +1,272 @@ +import {Shape} from '@antv/x6' + +export const graphOptions = (elId:string, viewMode = false) => { + return { + container: document.getElementById(elId), + fitView: true, + width: 1600, + height: 1600, + autoResize: false, + background: { + // + showWatermark: false, + image: ``, + repeat: 'no-repeat', + position: 'center', + size: 'auto auto', + opacity: 1, + angle: 20, + color: '#eeeaec', + }, + embedding: { // 融合组 + enabled: true, + findParent({node}) { + const bbox = node.getBBox() + //@ts-ignore + return this.getNodes().filter((node) => { + // 只有 data.parent 为 true 的节点才是父节点 + const data = node.getData() + if (data && data.parent) { + const targetBBox = node.getBBox() + return bbox.isIntersectWithRect(targetBBox) + } + return false + }) + } + }, + transforming: { + clearAll: false, + clearOnBlankMouseDown: false, + }, + async: true, // 定制节点和边的交互行为 ==> boolean 节点或边是否可交互 + interacting: viewMode ? { + // nodeMovable: false, + // edgeMovable: false, + // magnetConnectable: false, + // vertexDeletable: false, + nodeMovable: false, // 节点是否可以被移动 + magnetConnectable: false, // 当在具有 magnet 属性的元素上按下鼠标开始拖动时,是否触发连线交互 + edgeMovable: false, // 边是否可以被移动 + edgeLabelMovable: false, // 边的标签是否可以被移动 + arrowheadMovable: false, // 边的起始/终止箭头(在使用 arrowhead 工具后)是否可以被移动 + vertexMovable: false, // 边的路径点是否可以被移动 + vertexAddable: false, // 是否可以添加边的路径点 + vertexDeletable: false // 边的路径点是否可以被删除 + + } : { + // nodeMovable: false, + // edgeMovable: false, + // magnetConnectable: false, + // vertexDeletable: false, + nodeMovable: true, // 节点是否可以被移动 + magnetConnectable: true, // 当在具有 magnet 属性的元素上按下鼠标开始拖动时,是否触发连线交互 + edgeMovable: true, // 边是否可以被移动 + edgeLabelMovable: true, // 边的标签是否可以被移动 + arrowheadMovable: true, // 边的起始/终止箭头(在使用 arrowhead 工具后)是否可以被移动 + vertexMovable: true, // 边的路径点是否可以被移动 + vertexAddable: true, // 是否可以添加边的路径点 + vertexDeletable: true // 边的路径点是否可以被删除 + + }, // 对齐线 + snapline: true, // 撤销/重做 + history: !viewMode, // + + // 显示网格 + grid: { + visible: false, + size: 2, // 网格大小 + type: 'doubleMesh', // // 'dot' | 'fixedDot' | 'mesh' + args: [{ + color: '#c5c5c5', // 主网格线颜色 + thickness: 1, // 主网格线宽度 + }, { + color: '#b7b7b7', // 次网格线颜色 + thickness: 8, // 次网格线宽度 + factor: 32, // 主次网格线间隔 + },], + }, + // 滚轮缩放 MouseWheel + mousewheel: { + enabled: true, zoomAtMousePosition: true, modifiers: ['ctrl', 'meta'], maxScale: 10, minScale: 0.3 + }, + panning: { + // 画布移动 + enabled: false, + pageVisible: false, // 是否分页 + pageBreak: true, + pannable: true,// 是否平移 + eventTypes: ['rightMouseDown','leftMouseDown'] + }, // 连线规则 + connecting: { + // 路由类型 + router: { + // 连线类型在此修改 + // 曼哈顿路由 'manhattan' 路由是正交路由 'orth' 的智能版本,该路由由水平或垂直的正交线段组成,并自动避开路径上的其他节点(障碍)。 + name: 'manhattan', + args: { + padding: 1 + } + }, // 圆角连接器,将起点、路由点、终点通过直线按顺序连接,并在线段连接处通过圆弧连接(倒圆角)。 + connector: { + name: 'rounded', + args: { + radius: 8 + } + }, + anchor: 'center', + connectionPoint: 'anchor', // 是否允许连接到画布空白位置的点,默认为 true。 + allowBlank: false, // 距离节点或者连接桩 20px 时会触发自动吸附 + snap: { + radius: 20 + }, // 拽出新的边 + createEdge() { + + let conf = {}; + const item = localStorage.getItem("_pre_line_config_info") + if(item){ + conf = JSON.parse(item) + } + return new Shape.Edge({ + // ...CustomEdgeOptions, + ...conf + }) + }, validateConnection({targetMagnet}) { + return !!targetMagnet + } + }, // 连线高亮 + highlighting: { + // 连线过程中,自动吸附到链接桩时被使用。 + magnetAdsorbed: { + name: 'stroke', args: { + attrs: { + width: 12, + r: 6, + magnet: true, + stroke: '#008CFF', + strokeWidth: 2, + fill: '#0F67FF' + } + } + } + }, // 修改大小 + resizing: viewMode ? false : { + enabled: true, + minWidth: 0, // 最小宽 + minHeight: 0, // 最小高 + maxWidth: 105 * 20, // 最大宽 + maxHeight: 105 * 20, // 最大高 + orthogonal: true, // 是否显示中间调整点,默认为 true + restricted: false, // 调整大小边界是否可以超出画布边缘 + preserveAspectRatio: false, // 调整大小过程中是否保持节点的宽高比例 + allowReverse: true + }, // 查看模式不能旋转 + rotating: viewMode ? false : { + enabled: true, // 是否开启节点旋转 + grid: 1 // 每次旋转15度 + }, + keyboard: !viewMode, // 按键操作 + clipboard: { + enabled: !viewMode, + useLocalStorage: false, + } , // 剪切板 + onToolItemCreated({tool}) { + const options = tool.options + if (options && options.index % 2 === 1) { + tool.setAttrs({fill: '#ff0000'}) + } + } + } +} + + + +// 链接桩样式 +export const portStyle = { + width: 12, + r: 8, // 半径 + // 当 magnet 属性为 true 时,表示该元素可以被链接,即在连线过程中可以被当做连线的起点或终点,与链接桩类似。 + magnet: true, + stroke: '#008CFF', + strokeWidth: 2, + fill: '#fff', + zIndex: 9999 +} +// 链接桩配置 +export const ports = { + // 设置链接桩分组 + groups: { + top: { + // 定义连接柱的位置,如果不配置,将显示为默认样式 + position: 'top', // 定义连接柱的样式 + attrs: { + circle: { + ...portStyle + } + } + }, right: { + position: 'right', attrs: { + circle: { + ...portStyle + } + } + }, bottom: { + position: 'bottom', attrs: { + circle: { + ...portStyle + } + } + }, left: { + position: 'left', attrs: { + circle: { + ...portStyle + } + } + }, absolute: { + position: 'absolute', + attrs: { + circle: { + r: 6, magnet: true, stroke: '#008CFF', strokeWidth: 2, fill: '#fff' + } + } + } + }, // 链接桩 + items: [{ + group: 'top' + }, { + group: 'right' + }, { + group: 'bottom' + }, { + group: 'left' + }] +} +// 动态计算宽高比 +export const transformToPercent = (target:number, sum:number, font=12) => { + //@ts-ignore 相对节点的大小 + const percent = (target / sum).toFixed(2) * 100 + return `${percent}${font ? 'px' : '%'}` +} + + +export const predefineColors = [ + '#ff4500', + '#ff8c00', + '#ffd700', + '#90ee90', + '#00ced1', + '#1e90ff', + '#c71585', + 'rgba(255, 69, 0, 0.68)', + 'rgb(255, 120, 0)', + 'hsv(51, 100, 98)', + 'hsva(120, 40, 94, 0.5)', + 'hsl(181, 100%, 37%)', + 'hsla(209, 100%, 56%, 0.73)', + '#c7158577' +] + +export const ShapeType = { + 'vueTextCell': 'vue-node_text_cell', + 'vueLineCell': 'vue-node_line_cell', + +} diff --git a/hangtag-ui/src/components/DraftDesign/icons/Read Me.txt b/hangtag-ui/src/components/DraftDesign/icons/Read Me.txt new file mode 100644 index 0000000..723a49e --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/icons/Read Me.txt @@ -0,0 +1,7 @@ +Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures. + +To use the generated font in desktop programs, you can install the TTF font. In order to copy the character associated with each icon, refer to the text box at the bottom right corner of each glyph in demo.html. The character inside this text box may be invisible; but it can still be copied. See this guide for more info: https://icomoon.io/docs/#local-fonts + +You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects. + +You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu → Manage Projects) to retrieve your icon selection. diff --git a/hangtag-ui/src/components/DraftDesign/icons/demo-files/demo.css b/hangtag-ui/src/components/DraftDesign/icons/demo-files/demo.css new file mode 100644 index 0000000..39b8991 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/icons/demo-files/demo.css @@ -0,0 +1,152 @@ +body { + padding: 0; + margin: 0; + font-family: sans-serif; + font-size: 1em; + line-height: 1.5; + color: #555; + background: #fff; +} +h1 { + font-size: 1.5em; + font-weight: normal; +} +small { + font-size: .66666667em; +} +a { + color: #e74c3c; + text-decoration: none; +} +a:hover, a:focus { + box-shadow: 0 1px #e74c3c; +} +.bshadow0, input { + box-shadow: inset 0 -2px #e7e7e7; +} +input:hover { + box-shadow: inset 0 -2px #ccc; +} +input, fieldset { + font-family: sans-serif; + font-size: 1em; + margin: 0; + padding: 0; + border: 0; +} +input { + color: inherit; + line-height: 1.5; + height: 1.5em; + padding: .25em 0; +} +input:focus { + outline: none; + box-shadow: inset 0 -2px #449fdb; +} +.glyph { + font-size: 16px; + width: 15em; + padding-bottom: 1em; + margin-right: 4em; + margin-bottom: 1em; + float: left; + overflow: hidden; +} +.liga { + width: 80%; + width: calc(100% - 2.5em); +} +.talign-right { + text-align: right; +} +.talign-center { + text-align: center; +} +.bgc1 { + background: #f1f1f1; +} +.fgc1 { + color: #999; +} +.fgc0 { + color: #000; +} +p { + margin-top: 1em; + margin-bottom: 1em; +} +.mvm { + margin-top: .75em; + margin-bottom: .75em; +} +.mtn { + margin-top: 0; +} +.mtl, .mal { + margin-top: 1.5em; +} +.mbl, .mal { + margin-bottom: 1.5em; +} +.mal, .mhl { + margin-left: 1.5em; + margin-right: 1.5em; +} +.mhmm { + margin-left: 1em; + margin-right: 1em; +} +.mls { + margin-left: .25em; +} +.ptl { + padding-top: 1.5em; +} +.pbs, .pvs { + padding-bottom: .25em; +} +.pvs, .pts { + padding-top: .25em; +} +.unit { + float: left; +} +.unitRight { + float: right; +} +.size1of2 { + width: 50%; +} +.size1of1 { + width: 100%; +} +.clearfix:before, .clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.hidden-true { + display: none; +} +.textbox0 { + width: 3em; + background: #f1f1f1; + padding: .25em .5em; + line-height: 1.5; + height: 1.5em; +} +#testDrive { + display: block; + padding-top: 24px; + line-height: 1.5; +} +.fs0 { + font-size: 16px; +} +.fs1 { + font-size: 32px; +} + diff --git a/hangtag-ui/src/components/DraftDesign/icons/demo-files/demo.js b/hangtag-ui/src/components/DraftDesign/icons/demo-files/demo.js new file mode 100644 index 0000000..6f45f1c --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/icons/demo-files/demo.js @@ -0,0 +1,30 @@ +if (!('boxShadow' in document.body.style)) { + document.body.setAttribute('class', 'noBoxShadow'); +} + +document.body.addEventListener("click", function(e) { + var target = e.target; + if (target.tagName === "INPUT" && + target.getAttribute('class').indexOf('liga') === -1) { + target.select(); + } +}); + +(function() { + var fontSize = document.getElementById('fontSize'), + testDrive = document.getElementById('testDrive'), + testText = document.getElementById('testText'); + function updateTest() { + testDrive.innerHTML = testText.value || String.fromCharCode(160); + if (window.icomoonLiga) { + window.icomoonLiga(testDrive); + } + } + function updateSize() { + testDrive.style.fontSize = fontSize.value + 'px'; + } + fontSize.addEventListener('change', updateSize, false); + testText.addEventListener('input', updateTest, false); + testText.addEventListener('change', updateTest, false); + updateSize(); +}()); diff --git a/hangtag-ui/src/components/DraftDesign/icons/demo.html b/hangtag-ui/src/components/DraftDesign/icons/demo.html new file mode 100644 index 0000000..b44c42d --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/icons/demo.html @@ -0,0 +1,500 @@ + + + + + IcoMoon Demo + + + + + +
+

Font Name: icomoon (Glyphs: 33)

+
+
+

Grid Size: Unknown

+
+
+ + icon-lk_layer_set +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_border_angle +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_line +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_text +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_warning_tips +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_data_output +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_data_input +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_start +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_step_flow +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_success +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_failed +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_running +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_align_horizontal +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_align_vertical +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_close_x +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_color_eyedropper_tool +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_color_fill +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_down +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_file_template +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_font_bold +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_font_color +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_font_italic +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_icon_config +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_minimap +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_open +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_plus_copy +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_recover +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_save +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_tips +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_to_center +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_undo +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_zoom_in +
+
+ + +
+
+ liga: + +
+
+
+
+ + icon-lk_zoom_out +
+
+ + +
+
+ liga: + +
+
+
+ + +
+

Font Test Drive

+ + +
  +
+
+ +
+

Generated by IcoMoon

+
+ + + + diff --git a/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.eot b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.eot new file mode 100644 index 0000000..ee4d1ec Binary files /dev/null and b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.eot differ diff --git a/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.svg b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.svg new file mode 100644 index 0000000..f8e4aea --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.svg @@ -0,0 +1,43 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.ttf b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.ttf new file mode 100644 index 0000000..8eb8c4c Binary files /dev/null and b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.ttf differ diff --git a/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.woff b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.woff new file mode 100644 index 0000000..796e46a Binary files /dev/null and b/hangtag-ui/src/components/DraftDesign/icons/fonts/icomoon.woff differ diff --git a/hangtag-ui/src/components/DraftDesign/icons/selection.json b/hangtag-ui/src/components/DraftDesign/icons/selection.json new file mode 100644 index 0000000..ac47b59 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/icons/selection.json @@ -0,0 +1 @@ +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M938.633 570.216l-383.961 172.585c-36.762 15.99-51.4 15.99-85.33 0l-383.976-172.585c-20.383-10.827-25.879-50.887-25.879-72.746 25.631 14.637 61.674 30.959 60.335 30.131l392.179 180.788 392.192-180.788c0.662-0.166 35.629-17.786 60.32-30.131 0 22.369-6.933 63.908-25.879 72.746zM938.633 389.413l-383.961 172.599c-36.762 15.991-51.4 15.991-85.33 0l-383.976-172.599c-30.16-16.005-29.222-66.407 0-85.229l383.976-202.73c33.93-16.944 55.155-17.882 85.33 0l383.961 202.73c29.221 16.005 28.255 72.042 0 85.229zM511.999 135.865l-392.179 210.933 392.179 165.253 392.193-165.253-392.193-210.933zM511.999 889.203l392.192-180.815c0.662-0.166 35.629-17.786 60.32-30.13 0 22.369-6.932 63.908-25.879 72.746l-383.96 172.612c-36.762 15.99-51.4 15.99-85.33 0l-383.976-172.613c-20.383-10.827-25.879-50.873-25.879-72.746 25.631 14.637 61.674 30.959 60.335 30.13l392.178 180.816z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_layer_set"]},"attrs":[{}],"properties":{"order":56,"id":32,"name":"lk_layer_set","prevSize":32,"code":59680},"setIdx":2,"setId":2,"iconIdx":0},{"icon":{"paths":["M340.821 0c-188.192 0.097-340.724 152.63-340.821 340.812l-0 0.009v683.179h341.504v-682.667h682.496v-341.333h-683.179z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_border_angle"]},"attrs":[{}],"properties":{"order":55,"id":31,"name":"lk_border_angle","prevSize":32,"code":59679},"setIdx":2,"setId":2,"iconIdx":1},{"icon":{"paths":["M1024.003 83.149l-940.851 940.851-83.149-83.149 940.851-940.851 83.149 83.149zM1024.003 83.149z"],"attrs":[{}],"width":1025,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_line"]},"attrs":[{}],"properties":{"order":54,"id":30,"name":"lk_line","prevSize":32,"code":59678},"setIdx":2,"setId":2,"iconIdx":2},{"icon":{"paths":["M724.038 298.855h-424.077c-4.962 0-8.987 4.026-8.987 8.987v141.376c0 2.434 0.986 4.763 2.732 6.458 1.746 1.689 4.109 2.56 6.54 2.526l18.751-0.59c4.423-0.143 8.081-3.479 8.634-7.871 5.911-47.374 45.467-80.044 65.949-85.028 6.049-1.48 14.476-2.224 25.053-2.224 12.941 0 26.145 1.147 34.21 2.004-0.091 50.063-0.581 317.876-0.581 336.347 0 11.676-16.415 18.719-20.795 20.388l-36.029 0.57c-4.828 0.082-8.732 3.953-8.845 8.78l-0.59 25.817c-0.056 2.418 0.867 4.758 2.555 6.484 1.691 1.737 4.010 2.712 6.428 2.712h234.059c4.962 0 8.988-4.028 8.988-8.988v-25.187c0-4.963-4.027-8.988-8.988-8.988h-42.369c-10.383-1.199-19.057-13.291-22.532-19.6l0.513-341.292c4.22-0.375 10.123-0.737 17.359-0.737 14.281 0 28.964 1.346 43.645 3.996 30.609 5.527 61.849 66.544 71.302 89.584 1.385 3.376 4.669 5.583 8.321 5.583h18.751c4.962 0 8.987-4.027 8.987-8.989l-0-143.128c0.004-4.966-4.023-8.991-8.984-8.991v0zM724.038 298.855z","M847.029 65.29h-670.063c-61.677 0-111.675 50.004-111.675 111.675v687.47c8.415 53.352 55.962 94.274 111.675 94.274h670.068c61.676 0 111.675-50.004 111.675-111.676l-0-670.068c-0.001-61.668-50-111.675-111.681-111.675v0zM847.033 791.194c0 30.843-24.998 55.84-55.84 55.84l-558.387-0.004c-30.838 0-55.84-24.999-55.84-55.84v0-558.383c0-30.838 24.998-55.841 55.84-55.841h558.387c30.838 0 55.84 24.998 55.84 55.841v0 558.387zM847.033 791.194z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_text"]},"attrs":[{},{}],"properties":{"order":53,"id":29,"name":"lk_text","prevSize":32,"code":59677},"setIdx":2,"setId":2,"iconIdx":3},{"icon":{"paths":["M460.8 665.6h102.4v102.4h-102.4v-102.4zM460.8 256h102.4v307.2h-102.4v-307.2zM511.488 0c-282.624 0-511.488 229.376-511.488 512s228.864 512 511.488 512c283.136 0 512.512-229.376 512.512-512s-229.376-512-512.512-512zM512 921.6c-226.304 0-409.6-183.296-409.6-409.6s183.296-409.6 409.6-409.6 409.6 183.296 409.6 409.6-183.296 409.6-409.6 409.6z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_warning_tips"]},"attrs":[{}],"properties":{"order":52,"id":28,"name":"lk_warning_tips","prevSize":32,"code":59676},"setIdx":2,"setId":2,"iconIdx":4},{"icon":{"paths":["M379.611 265.874c16.238 16.311 43.081 16.311 59.392 0l31.451-31.451v190.757c0 23.113 18.944 42.057 42.057 42.057 23.179-0.083 41.943-18.872 41.984-42.053l0-0.004v-190.903l31.451 31.525c16.311 16.311 43.154 16.311 59.465 0 7.55-7.622 12.215-18.114 12.215-29.696s-4.665-22.074-12.219-29.699l0.003 0.003-103.205-103.131c-7.622-7.55-18.114-12.215-29.696-12.215s-22.074 4.665-29.699 12.219l0.003-0.003-103.205 103.205c-7.603 7.599-12.306 18.098-12.306 29.696s4.703 22.098 12.305 29.696l0 0z","M897.17 149.943h-240.274l48.64 48.64h184.832v477.038h-755.931v-477.038h183.954l48.64-48.567h-239.177c-26.925 0.083-48.735 21.867-48.859 48.774l-0 0.012v541.477c0 26.843 21.943 48.859 48.786 48.859h256.805v72.85l-55.003 55.003s-5.998 11.995 8.997 11.995h347.794c14.994 0 8.997-11.995 8.997-11.995l-55.003-55.003v-72.85h256.805c26.951-0.083 48.777-21.909 48.859-48.851l0-0.008v-541.477c-0.124-26.919-21.934-48.704-48.851-48.786l-0.008-0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_data_output"]},"attrs":[{},{}],"properties":{"order":48,"id":27,"name":"lk_data_output","prevSize":32,"code":59673},"setIdx":2,"setId":2,"iconIdx":5},{"icon":{"paths":["M379.6 292.3c-16.3 16.3-16.3 43.1 0 59.4l103.2 103.2c16.3 16.3 43.1 16.3 59.4 0l103.2-103.2c16.3-16.3 16.3-43.1 0-59.4s-43.1-16.3-59.4 0l-31.5 31.5v-190.8c0-23.1-18.9-42-42-42s-42 18.9-42 42v190.8l-31.5-31.5c-16.4-16.3-43.1-16.3-59.4 0zM897.2 150h-293.2v48.6h286.5v477h-756v-477h286.5v-48.6h-293.2c-26.8 0-48.8 22-48.8 48.8v541.5c0 26.8 22 48.8 48.8 48.8h256.8v72.9l-55 55s-6 12 9 12h347.8c15 0 9-12 9-12l-55-55v-72.9h256.8c26.8 0 48.8-22 48.8-48.8v-541.5c0-26.8-22-48.8-48.8-48.8z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_data_input"]},"attrs":[{}],"properties":{"order":49,"id":26,"name":"lk_data_input","prevSize":32,"code":59674},"setIdx":2,"setId":2,"iconIdx":6},{"icon":{"paths":["M924.059 466.805c-1.883-38.202-23.717-72.597-57.491-90.555l-607.086-325.411c-33.877-18.193-74.843-17.13-107.73 2.797-33.222 19.646-53.366 55.597-52.778 94.19l4.364 729.352c-0.059 40.136 22.209 76.97 57.772 95.579 14.543 8.045 31.886 12.78 50.334 12.78 0.198 0 0.396-0.001 0.594-0.002l-0.030 0c22.852-0.093 44.045-7.12 61.604-19.084l-0.382 0.246 602.849-404.131c31.703-21.278 49.913-57.631 47.979-95.763zM177.079 926.452l1.346-832.289 692.623 371.223-693.969 461.066zM227.96 846.724z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_start"]},"attrs":[{}],"properties":{"order":50,"id":25,"name":"lk_start","prevSize":32,"code":59675},"setIdx":2,"setId":2,"iconIdx":7},{"icon":{"paths":["M562.176 411.136c0 13.824 11.264 25.088 25.088 25.088s25.088-11.264 25.088-25.088-11.264-25.088-25.088-25.088-25.088 11.264-25.088 25.088zM335.872 235.52c-13.824 0-25.088 11.264-25.088 25.088s11.264 25.088 25.088 25.088 25.088-11.264 25.088-25.088c0.512-13.824-10.752-25.088-25.088-25.088zM436.224 587.776c13.824 0 25.6-11.264 25.6-25.088s-11.264-25.6-25.088-25.6-25.6 11.264-25.6 25.088 11.264 25.088 25.088 25.6zM839.168 82.944h-654.336c-41.472 0-75.264 33.792-75.776 75.264v707.584c0 41.472 33.792 75.264 75.776 75.264h527.872v-176.128c0-13.824 11.264-25.088 25.088-25.088h176.128v-581.632c0-41.472-33.28-75.264-74.752-75.264zM486.912 840.704h-201.216c-13.824 0-25.088-11.264-25.088-25.088s11.264-25.088 25.088-25.088h201.216c13.824 0 25.088 11.264 25.088 25.088s-11.264 25.088-25.088 25.088zM260.608 714.752c0-13.824 11.264-25.088 25.088-25.088h100.864c13.824 1.024 24.064 13.312 23.040 27.136-1.024 12.288-10.752 22.016-23.040 23.040h-100.864c-13.824 0.512-25.088-10.752-25.088-25.088zM360.96 537.088h4.608c13.824-38.912 56.32-59.904 95.744-46.080 21.504 7.68 38.4 24.576 46.080 46.080h169.984l-7.168-7.168c-9.728-9.728-9.728-25.6 0-35.84 9.728-9.728 25.6-9.728 35.84 0l50.176 49.664c9.728 9.728 9.728 25.6 0 35.84l-50.176 50.688c-9.728 9.728-25.6 9.728-35.84 0s-9.728-25.6 0-35.84l7.168-7.168h-169.984c-13.824 38.912-56.32 59.904-95.744 46.080-21.504-7.68-38.4-24.576-46.080-46.080h-4.608c-55.808 0-100.864-45.056-100.864-100.864s45.056-100.864 100.864-100.864h155.648c13.312-38.912 56.32-59.904 95.232-46.592 22.016 7.68 38.912 24.576 46.592 46.592h4.608c27.648 1.536 51.712-19.456 53.248-47.616 1.536-27.648-19.456-51.712-47.616-53.248h-261.632c-13.824 39.424-56.832 59.904-96.256 46.080s-59.904-56.832-46.080-96.256c13.824-39.424 56.832-59.904 96.256-46.080 21.504 7.68 38.4 24.576 46.080 46.080h256c55.296-2.048 102.4 40.96 104.448 96.768 2.048 55.296-40.96 102.4-96.768 104.448h-12.8c-13.312 38.912-56.32 59.904-95.232 46.592-22.016-7.68-38.912-24.576-46.592-46.592h-155.648c-27.648-1.536-51.712 19.456-53.248 47.616-1.536 27.648 19.456 51.712 47.616 53.248 2.56 0.512 4.608 0.512 6.144 0.512zM763.392 926.72l136.192-136.192h-136.192v136.192z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_step_flow"]},"attrs":[{}],"properties":{"order":47,"id":24,"name":"lk_step_flow","prevSize":32,"code":59672},"setIdx":2,"setId":2,"iconIdx":8},{"icon":{"paths":["M512 74.667c-241.067 0-437.333 196.267-437.333 437.333s196.267 437.333 437.333 437.333 437.333-196.267 437.333-437.333-196.267-437.333-437.333-437.333zM512 885.333c-204.8 0-373.333-168.533-373.333-373.333s168.533-373.333 373.333-373.333 373.333 168.533 373.333 373.333-168.533 373.333-373.333 373.333z","M701.867 381.867l-253.867 256-125.867-125.867c-12.8-12.8-32-12.8-44.8 0s-12.8 32 0 44.8l149.333 149.333c6.4 6.4 14.933 8.533 23.467 8.533s17.067-2.133 23.467-8.533l277.333-277.333c12.8-12.8 12.8-32 0-44.8-14.933-12.8-36.267-12.8-49.067-2.133z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_success"]},"attrs":[{},{}],"properties":{"order":44,"id":23,"name":"lk_success","prevSize":32,"code":59669},"setIdx":2,"setId":2,"iconIdx":9},{"icon":{"paths":["M924.78 336.8c-69.897-162.92-228.929-274.96-414.13-274.96-248.169 0-449.35 201.181-449.35 449.35s201.181 449.35 449.35 449.35c248.169 0 449.35-201.181 449.35-449.35l-0 0c0-0.187 0-0.408 0-0.628 0-62.754-12.953-122.482-36.332-176.657l1.112 2.895zM875.050 664.55c-61.511 143.353-201.448 241.935-364.41 241.935-218.379 0-395.41-177.031-395.41-395.41s177.031-395.41 395.41-395.41c218.379 0 395.41 177.031 395.41 395.41 0 0.040-0 0.081-0 0.121l0-0.006c0 0.128 0 0.28 0 0.431 0 55.23-11.401 107.798-31.979 155.477l0.979-2.548z","M671.090 352.91c-4.886-4.885-11.635-7.906-19.090-7.906s-14.204 3.021-19.090 7.906l-120.91 120.91-120.91-120.91c-4.858-4.727-11.499-7.642-18.822-7.642-14.912 0-27 12.088-27 27 0 7.323 2.915 13.964 7.648 18.828l-0.006-0.006 120.91 120.91-120.91 120.91c-5.047 4.911-8.178 11.769-8.178 19.358 0 14.912 12.088 27 27 27 7.589 0 14.447-3.131 19.352-8.172l0.006-0.006 120.91-120.91 120.91 120.91c4.858 4.727 11.499 7.642 18.822 7.642 14.912 0 27-12.088 27-27 0-7.323-2.915-13.964-7.648-18.828l0.006 0.006-120.91-120.91 120.91-120.91c4.885-4.886 7.906-11.635 7.906-19.090s-3.021-14.204-7.906-19.090l0 0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_failed"]},"attrs":[{},{}],"properties":{"order":45,"id":22,"name":"lk_failed","prevSize":32,"code":59670},"setIdx":2,"setId":2,"iconIdx":10},{"icon":{"paths":["M166.671 504.169c2.086-92.486 40.292-175.66 101.011-236.299l0.004-0.004c62.232-62.512 148.354-101.196 243.511-101.196 0.261 0 0.522 0 0.783 0.001l-0.041-0c0.253-0.001 0.553-0.001 0.852-0.001 95.047 0 181.058 38.689 243.143 101.178l0.018 0.018c9.939 9.939 19.275 20.48 27.889 31.503l-60.416 47.164c-1.912 1.491-3.13 3.794-3.13 6.382 0 0.598 0.065 1.181 0.189 1.743l-0.010-0.053c0.674 3.011 2.973 5.351 5.908 6.072l0.055 0.011 176.369 43.189c0.561 0.139 1.206 0.219 1.869 0.219 4.408 0 7.99-3.533 8.070-7.922l0-0.007 0.843-181.609c0-0.005 0-0.011 0-0.017 0-4.425-3.587-8.011-8.011-8.011-1.871 0-3.593 0.642-4.956 1.717l0.017-0.013-56.621 44.273c-77.878-98.981-197.664-161.961-332.159-161.961-229.909 0-416.835 184.035-421.498 412.828l-0.007 0.435c-0.001 0.054-0.002 0.117-0.002 0.181 0 4.425 3.587 8.011 8.011 8.011 0.001 0 0.001-0 0.002-0l60.235 0c0.019 0 0.040 0 0.062 0 4.361 0 7.908-3.485 8.009-7.821l0-0.009zM925.636 512h-60.235c-0.019-0-0.040-0-0.062-0-4.361 0-7.908 3.485-8.009 7.821l-0 0.009c-1.945 92.511-40.185 175.728-101.003 236.291l-0.012 0.012c-62.259 62.513-148.405 101.196-243.586 101.196-0.214 0-0.427-0-0.641-0.001l0.033 0c-0.238 0.001-0.52 0.001-0.802 0.001-109.934 0-207.811-51.622-270.713-131.947l-0.567-0.752 60.416-47.164c1.919-1.479 3.143-3.778 3.143-6.362 0-3.766-2.598-6.924-6.1-7.782l-0.055-0.011-176.369-43.189c-0.561-0.139-1.206-0.219-1.869-0.219-4.408 0-7.99 3.533-8.070 7.922l-0 0.007-0.723 181.73c0 6.746 7.77 10.541 12.951 6.325l56.621-44.273c77.865 99.043 197.68 162.070 332.215 162.070 229.957 0 416.905-184.138 421.442-413.008l0.007-0.424c0.003-0.086 0.005-0.187 0.005-0.289 0-3.307-2.019-6.143-4.892-7.341l-0.053-0.019c-0.901-0.381-1.949-0.602-3.048-0.602-0.009 0-0.017 0-0.026 0l0.001-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_running"]},"attrs":[{}],"properties":{"order":46,"id":21,"name":"lk_running","prevSize":32,"code":59671},"setIdx":2,"setId":2,"iconIdx":11},{"icon":{"paths":["M146.286 914.286h-73.143v-804.571h73.143zM950.857 329.143h-731.429v-219.429h731.429zM804.571 621.714h-585.143v-219.429h585.143zM950.857 914.322h-731.429v-219.429h731.429z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_horizontal"]},"attrs":[{}],"properties":{"order":23,"id":20,"name":"lk_align_horizontal","prevSize":32,"code":59648},"setIdx":2,"setId":2,"iconIdx":12},{"icon":{"paths":["M914.286 877.714v73.143h-804.571v-73.143zM329.143 73.143v731.429h-219.429v-731.429zM621.714 219.429v585.509h-219.429v-585.509zM914.286 73.143v731.429h-219.429v-731.429z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_align_vertical"]},"attrs":[{}],"properties":{"order":24,"id":19,"name":"lk_align_vertical","prevSize":32,"code":59649},"setIdx":2,"setId":2,"iconIdx":13},{"icon":{"paths":["M563.8 512l262.5-312.9c4.4-5.2 0.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7l-216.5 258.1-216.5-258.1c-3-3.6-7.5-5.7-12.3-5.7h-79.8c-6.8 0-10.5 7.9-6.1 13.1l262.5 312.9-262.5 312.9c-4.4 5.2-0.7 13.1 6.1 13.1h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1l-262.5-312.9z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_close_x"]},"attrs":[{}],"properties":{"order":25,"id":18,"name":"lk_close_x","prevSize":32,"code":59650},"setIdx":2,"setId":2,"iconIdx":14},{"icon":{"paths":["M994.763 91.741l-62.057-62.057c-18.325-18.314-43.634-29.64-71.589-29.64s-53.264 11.326-71.59 29.641l-144.073 144.073-69.542-69.67-137.804 137.868 57.386 57.322-393.26 393.324c-24.361 24.322-40.077 57.297-42.143 93.921l-0.017 0.379-22.903 22.839c-22.723 22.715-36.778 54.099-36.778 88.767 0 69.319 56.194 125.512 125.512 125.512 34.651 0 66.023-14.042 88.735-36.746l-0 0 22.903-22.967c37.012-1.982 70.012-17.695 94.295-42.091l0.005-0.005 393.26-393.26 57.386 57.322 137.74-137.676-69.606-69.67 144.074-143.946c18.367-18.324 29.731-43.662 29.731-71.653s-11.363-53.329-29.729-71.651l-0.002-0.002zM268.188 858.557c-9.913 9.927-23.615 16.068-38.752 16.068-8.713 0-16.951-2.035-24.264-5.655l0.32 0.143-54.507 54.444c-6.338 5.969-14.901 9.638-24.321 9.638-19.61 0-35.507-15.897-35.507-35.507 0-9.404 3.656-17.954 9.624-24.307l-0.017 0.019 54.38-54.571c-3.464-6.982-5.491-15.205-5.491-23.902 0-15.158 6.158-28.878 16.11-38.793l0.002-0.002 393.26-393.26 102.361 102.489-393.196 393.196z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_color_eyedropper_tool"]},"attrs":[{}],"properties":{"order":26,"id":17,"name":"lk_color_eyedropper_tool","prevSize":32,"code":59651},"setIdx":2,"setId":2,"iconIdx":15},{"icon":{"paths":["M877.158 639.386s-70.246 97.28-70.246 137.421c0 40.141 31.539 72.499 70.451 72.499s70.246-32.563 70.246-72.704c-0.205-39.731-70.451-137.216-70.451-137.216zM852.378 536.166l-352.87-364.339c-0.819-0.819-1.638-1.638-2.662-2.458l-105.472-108.954c-12.083-12.288-31.539-12.288-43.418 0-12.083 12.288-12.083 32.563 0 44.851l79.053 81.51-338.534 349.389c-15.974 16.589-15.974 43.213 0 59.802l353.075 364.544c7.987 8.192 18.432 12.288 28.877 12.288s20.89-4.096 28.877-12.288l353.075-364.544c15.974-16.384 15.974-43.213 0-59.802zM587.776 353.075l165.478 170.598h-565.658l282.624-291.84 117.555 121.242z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_color_fill"]},"attrs":[{}],"properties":{"order":27,"id":16,"name":"lk_color_fill","prevSize":32,"code":59652},"setIdx":2,"setId":2,"iconIdx":16},{"icon":{"paths":["M792.832 485.856c-12.512-12.544-32.8-12.48-45.248-0.032l-203.584 203.168v-560.992c0-17.664-14.336-32-32-32s-32 14.336-32 32v563.040l-234.048-235.456c-12.48-12.576-32.704-12.64-45.248-0.128-12.544 12.448-12.608 32.704-0.128 45.248l287.52 289.248c3.168 3.2 6.88 5.536 10.816 7.136 4 1.792 8.384 2.912 13.088 2.912 11.296 0 20.704-6.176 26.4-14.976l254.368-253.952c12.544-12.448 12.544-32.704 0.064-45.216z","M864 928h-704c-17.664 0-32-14.304-32-32s14.336-32 32-32h704c17.696 0 32 14.304 32 32s-14.304 32-32 32z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_down"]},"attrs":[{},{}],"properties":{"order":28,"id":15,"name":"lk_down","prevSize":32,"code":59653},"setIdx":2,"setId":2,"iconIdx":17},{"icon":{"paths":["M682.667 0c0.001-0 0.002-0 0.004-0 9.802 0 18.833 3.306 26.037 8.863l-0.099-0.074 4.267 3.712 207.061 207.061c10.127 10.128 16.875 23.634 18.41 38.683l0.022 0.271 0.299 6.315v332.501c-0.027 23.544-19.119 42.619-42.667 42.619-21.788 0-39.762-16.332-42.347-37.421l-0.021-0.206-0.299-4.992v-323.669l-188.373-188.331h-494.293v853.333h341.333c21.803 0.003 39.784 16.359 42.348 37.47l0.020 0.205 0.299 4.992c-0.003 21.803-16.359 39.784-37.47 42.348l-0.205 0.020-4.992 0.299h-362.667c-33.181-0.002-60.464-25.254-63.68-57.59l-0.021-0.266-0.299-6.144v-896c0.002-33.181 25.254-60.464 57.59-63.68l0.266-0.021 6.144-0.299h533.333z","M640 0c21.803 0.003 39.784 16.359 42.348 37.47l0.020 0.205 0.299 4.992v213.333h213.333c21.803 0.003 39.784 16.359 42.348 37.47l0.020 0.205 0.299 4.992c-0.003 21.803-16.359 39.784-37.47 42.348l-0.205 0.020-4.992 0.299h-234.667c-33.181-0.002-60.464-25.254-63.68-57.59l-0.021-0.266-0.299-6.144v-234.667c0-23.564 19.103-42.667 42.667-42.667v0zM951.168 695.168c7.716-7.691 18.362-12.446 30.119-12.446 23.564 0 42.667 19.103 42.667 42.667 0 9.874-3.354 18.964-8.985 26.194l0.072-0.096-3.541 4.011-240.896 240.939c-11.583 11.591-27.59 18.761-45.271 18.761-15.375 0-29.483-5.421-40.518-14.456l0.114 0.090-4.864-4.395-112.896-112.939c-7.691-7.716-12.446-18.362-12.446-30.119 0-23.564 19.103-42.667 42.667-42.667 9.874 0 18.964 3.354 26.194 8.985l-0.096-0.072 4.011 3.541 97.835 97.792 225.835-225.792z","M341.333 341.333h128q42.667 0 42.667 42.667v0q0 42.667-42.667 42.667h-128q-42.667 0-42.667-42.667v0q0-42.667 42.667-42.667z","M341.333 512h341.333q42.667 0 42.667 42.667v0q0 42.667-42.667 42.667h-341.333q-42.667 0-42.667-42.667v0q0-42.667 42.667-42.667z","M341.333 682.667h128q42.667 0 42.667 42.667v0q0 42.667-42.667 42.667h-128q-42.667 0-42.667-42.667v0q0-42.667 42.667-42.667z"],"attrs":[{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_file_template"]},"attrs":[{},{},{},{},{}],"properties":{"order":29,"id":14,"name":"lk_file_template","prevSize":32,"code":59654},"setIdx":2,"setId":2,"iconIdx":18},{"icon":{"paths":["M517.292 1023.395c6.424 0.385 13.937 0.604 21.5 0.604 90.201 0 173.113-31.206 238.53-83.411l-0.77 0.593c58.416-51.248 95.095-126.048 95.095-209.415 0-4.236-0.095-8.45-0.282-12.64l0.021 0.596c0.069-2.107 0.108-4.584 0.108-7.071 0-61.379-23.975-117.159-63.071-158.485l0.101 0.107c-42.717-43.621-100.156-72.677-164.265-79.117l-1.123-0.091v-2.885c54.371-15.469 100.409-45.592 135.035-85.818l0.304-0.361c33.38-38.018 53.745-88.18 53.745-143.098 0-0.991-0.007-1.981-0.020-2.969l0.002 0.15c0.104-2.448 0.164-5.32 0.164-8.206 0-68.946-33.968-129.959-86.082-167.216l-0.623-0.423c-62.586-40.262-139-64.185-221.002-64.185-8.935 0-17.804 0.284-26.598 0.844l1.201-0.061h-348.084v1022.558h366.114zM436.702 182.031q194.776 0 194.776 111.421c0.045 1.166 0.070 2.534 0.070 3.909 0 37.706-19.227 70.921-48.412 90.376l-0.397 0.249c-34.366 21.421-76.091 34.121-120.782 34.121-4.444 0-8.86-0.126-13.242-0.373l0.608 0.027h-117.551v-239.729h104.99zM456.834 602.713c4.131-0.264 8.957-0.414 13.818-0.414 42.434 0 82.195 11.444 116.365 31.414l-1.094-0.591c27.575 17.492 45.613 47.857 45.613 82.435 0 1.19-0.021 2.375-0.064 3.555l0.005-0.171c0.044 1.137 0.069 2.471 0.069 3.811 0 35.923-17.99 67.645-45.453 86.646l-0.35 0.229c-32.469 20.732-72.057 33.044-114.521 33.044-4.322 0-8.614-0.128-12.872-0.379l0.587 0.028h-127.226v-239.428h125.183z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_font_bold"]},"attrs":[{}],"properties":{"order":30,"id":13,"name":"lk_font_bold","prevSize":32,"code":59655},"setIdx":2,"setId":2,"iconIdx":19},{"icon":{"paths":["M413 637.5c-81.9 4.6-118.8-10.2-110.6-44.4 0-13.7 6.8-35.3 20.5-64.9 13.6-27.3 23.1-47.8 28.6-61.5h245.8c38.2 72.9 58.7 119.5 61.5 140 8.2 25.1-20.5 35.3-86 30.7v30.7h295v-30.7c-57.4 6.8-97-20.5-118.8-81.9l-229.4-491.6h-36.9l-213 481.4c-19.1 66-62.8 96.8-131.1 92.2v30.7h274.4v-30.7zM470.4 200.5l110.6 228.8h-217.1l106.5-228.8zM872.5 765.3h-728c-10.1 0-18.2 8.1-18.2 18.2v157.8c0 10 8.1 18.2 18.2 18.2h728c10.1 0 18.2-8.2 18.2-18.2v-157.8c0-10-8.2-18.2-18.2-18.2z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_font_color"]},"attrs":[{}],"properties":{"order":31,"id":12,"name":"lk_font_color","prevSize":32,"code":59656},"setIdx":2,"setId":2,"iconIdx":20},{"icon":{"paths":["M832 96v64c0 17.673-14.327 32-32 32v0h-125.52l-160 640h93.52c17.673 0 32 14.327 32 32v0 64c0 17.673-14.327 32-32 32v0h-384c-17.673 0-32-14.327-32-32v0-64c0-17.673 14.327-32 32-32v0h125.52l160-640h-93.52c-17.673 0-32-14.327-32-32v0-64c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_font_italic"]},"attrs":[{}],"properties":{"order":32,"id":11,"name":"lk_font_italic","prevSize":32,"code":59657},"setIdx":2,"setId":2,"iconIdx":21},{"icon":{"paths":["M117.333 341.333c-0-17.673 14.327-32 32-32v0h426.667c17.673 0 32 14.327 32 32s-14.327 32-32 32v0h-426.667c-17.673 0-32-14.327-32-32h0zM768 405.333c-35.346 0-64-28.654-64-64s28.654-64 64-64v0c35.346 0 64 28.654 64 64s-28.654 64-64 64v0zM768 469.333c70.692 0 128-57.308 128-128s-57.308-128-128-128v0c-70.692 0-128 57.308-128 128s57.308 128 128 128v0zM928 682.667c0-17.673-14.327-32-32-32v0h-426.667c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h426.667c17.673 0 32-14.327 32-32v0zM256 746.667c35.346 0 64-28.654 64-64s-28.654-64-64-64v0c-35.346 0-64 28.654-64 64s28.654 64 64 64v0zM256 810.667c-70.692 0-128-57.308-128-128s57.308-128 128-128v0c70.692 0 128 57.308 128 128s-57.308 128-128 128v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_icon_config"]},"attrs":[{}],"properties":{"order":33,"id":10,"name":"lk_icon_config","prevSize":32,"code":59658},"setIdx":2,"setId":2,"iconIdx":22},{"icon":{"paths":["M1038.494 0c35.446 0 64.276 28.751 64.276 64.276v377.935h-85.622v-356.588h-931.525v824.399h349.184v85.701h-370.53c-35.498 0-64.276-28.777-64.276-64.276v-867.249c0-35.367 28.751-64.197 64.276-64.197zM1043.85 564.775c32.532 0 58.919 26.388 58.919 58.841v310.508c-0 32.54-26.379 58.919-58.919 58.919h-422.912c-32.506-0.045-58.841-26.407-58.841-58.919 0-0 0-0 0-0l-0 0v-310.508c0-32.453 26.388-58.841 58.841-58.841zM1017.068 650.398h-369.27v256.945h369.428v-256.945zM252.455 192.591l128.788 128.709 116.972-116.972v294.439h-294.518l116.815-116.972-128.63-128.551 60.495-60.652z"],"attrs":[{}],"width":1102,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_minimap"]},"attrs":[{}],"properties":{"order":34,"id":9,"name":"lk_minimap","prevSize":32,"code":59659},"setIdx":2,"setId":2,"iconIdx":23},{"icon":{"paths":["M0 64h404.288l107.072 134.4h512.64v761.6h-1024v-896zM82.432 255.552v89.792h282.88l106.56 134.976h471.168v-90.56h-430.4l-108.416-134.208h-321.792z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_open"]},"attrs":[{}],"properties":{"order":35,"id":8,"name":"lk_open","prevSize":32,"code":59660},"setIdx":2,"setId":2,"iconIdx":24},{"icon":{"paths":["M853.333 224h-53.333v-53.333c0-40.533-34.133-74.667-74.667-74.667h-554.667c-40.533 0-74.667 34.133-74.667 74.667v554.667c0 40.533 34.133 74.667 74.667 74.667h53.333v53.333c0 40.533 34.133 74.667 74.667 74.667h554.667c40.533 0 74.667-34.133 74.667-74.667v-554.667c0-40.533-34.133-74.667-74.667-74.667zM160 725.333v-554.667c0-6.4 4.267-10.667 10.667-10.667h554.667c6.4 0 10.667 4.267 10.667 10.667v554.667c0 6.4-4.267 10.667-10.667 10.667h-554.667c-6.4 0-10.667-4.267-10.667-10.667zM864 853.333c0 6.4-4.267 10.667-10.667 10.667h-554.667c-6.4 0-10.667-4.267-10.667-10.667v-53.333h437.333c40.533 0 74.667-34.133 74.667-74.667v-437.333h53.333c6.4 0 10.667 4.267 10.667 10.667v554.667z","M576 416h-96v-96c0-17.067-14.933-32-32-32s-32 14.933-32 32v96h-96c-17.067 0-32 14.933-32 32s14.933 32 32 32h96v96c0 17.067 14.933 32 32 32s32-14.933 32-32v-96h96c17.067 0 32-14.933 32-32s-14.933-32-32-32z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_plus_copy"]},"attrs":[{},{}],"properties":{"order":36,"id":7,"name":"lk_plus_copy","prevSize":32,"code":59661},"setIdx":2,"setId":2,"iconIdx":25},{"icon":{"paths":["M604.27 507.86l0.14-335.98 0.070-166.020c0-4.3 5.18-6.47 8.24-3.46l353.94 347.4c5.27 5.18 5.3 13.67 0.050 18.87l-354.27 351.36c-3.060 3.030-8.26 0.87-8.26-3.44l0.090-208.73z","M53.94 590.92c8.74-157.92 87.43-274.43 253.54-339.15 87.43-33.66 177.77-46.61 271.030-49.19 13.47 0 21.33-1.67 25.9-5.5l-0.14 298.21c-3.68-2.21-9.17-2.74-17.010-2.74-49.54 2.59-99.090 2.59-148.63 15.54-99.090 23.3-177.77 72.49-206.91 168.28-37.89 126.86 5.83 264.070 148.63 341.74 0 7.77-5.83 5.18-20.4 0-5.83 0-8.74-2.59-11.66-2.59-171.59-60.5-289.71-215.96-294.92-388.2v-23.43c0.12-4.32 0.3-8.64 0.57-12.97z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_recover"]},"attrs":[{},{}],"properties":{"order":37,"id":6,"name":"lk_recover","prevSize":32,"code":59662},"setIdx":2,"setId":2,"iconIdx":26},{"icon":{"paths":["M798.293 0.001h-712.959c-47.128-0-85.333 38.205-85.333 85.333l0 0v853.333c-0 47.128 38.205 85.333 85.333 85.333l0 0h853.333c47.128-0 85.333-38.205 85.333-85.333v0-712.959c0-0.073 0.001-0.16 0.001-0.247 0-11.721-4.726-22.338-12.377-30.049l0.003 0.003-183.040-183.040c-7.709-7.648-18.326-12.374-30.047-12.374-0.087 0-0.173 0-0.26 0.001l0.013-0zM213.333 76.801h597.333v179.2c0 23.564-19.103 42.667-42.667 42.667v0h-512c-23.564 0-42.667-19.103-42.667-42.667v0zM875.519 947.2h-725.333v-409.6c0-23.564 19.103-42.667 42.667-42.667v0h639.999c23.564 0 42.667 19.103 42.667 42.667v0z","M633.599 125.867h76.8v131.84h-76.8z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_save"]},"attrs":[{},{}],"properties":{"order":38,"id":5,"name":"lk_save","prevSize":32,"code":59663},"setIdx":2,"setId":2,"iconIdx":27},{"icon":{"paths":["M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512v0c282.77 0 512 229.23 512 512s-229.23 512-512 512v0zM466.347 752.555c10.198 9.577 23.962 15.461 39.101 15.461 0.474 0 0.946-0.006 1.417-0.017l-0.070 0.001c0.289 0.005 0.631 0.007 0.973 0.007 15.608 0 29.913-5.58 41.028-14.853l-0.102 0.083c10.147-9.37 16.48-22.742 16.48-37.592 0-0.374-0.004-0.747-0.012-1.119l0.001 0.056c0.003-0.215 0.005-0.47 0.005-0.725 0-14.743-6.337-28.005-16.435-37.213l-0.040-0.036c-10.533-9.198-24.407-14.807-39.59-14.807-0.812 0-1.62 0.016-2.424 0.048l0.116-0.004c-0.691-0.030-1.502-0.048-2.317-0.048-14.717 0-28.119 5.627-38.172 14.848l0.042-0.038c-10.524 8.594-17.19 21.57-17.19 36.102 0 0.658 0.014 1.313 0.041 1.964l-0.003-0.093c0 15.872 5.717 28.587 17.152 37.973zM638.464 293.376c-29.44-24.832-68.864-37.291-118.187-37.291-54.869 0-98.56 14.763-130.987 44.288-32.427 29.099-48.555 69.888-48.555 122.368h85.248c0-30.464 6.229-53.675 18.688-69.632 14.933-18.773 38.4-28.16 70.315-28.16 25.941 0 45.909 6.571 59.904 19.712 12.972 13.427 20.965 31.736 20.965 51.912 0 1.040-0.021 2.075-0.063 3.105l0.005-0.148c-0.309 19.363-7.95 36.883-20.259 49.958l0.035-0.038-8.96 9.813c-48.896 40.789-78.080 70.571-87.552 89.344-9.984 18.261-14.933 41.216-14.933 68.864v9.899h86.016v-9.899c0-16.811 3.755-32.341 11.264-46.336 7.424-13.653 17.408-25.088 29.952-34.475 34.901-28.587 56.32-47.104 64.256-55.552 18.517-22.955 27.733-51.797 27.733-86.528 0-43.093-14.933-76.885-44.885-101.205z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_tips"]},"attrs":[{}],"properties":{"order":39,"id":4,"name":"lk_tips","prevSize":32,"code":59664},"setIdx":2,"setId":2,"iconIdx":28},{"icon":{"paths":["M213.333 640h-85.333v170.667c0 46.933 38.4 85.333 85.333 85.333h170.667v-85.333h-170.667v-170.667zM213.333 213.333h170.667v-85.333h-170.667c-46.933 0-85.333 38.4-85.333 85.333v170.667h85.333v-170.667zM810.667 128h-170.667v85.333h170.667v170.667h85.333v-170.667c0-46.933-38.4-85.333-85.333-85.333zM810.667 810.667h-170.667v85.333h170.667c46.933 0 85.333-38.4 85.333-85.333v-170.667h-85.333v170.667zM512 384c-70.827 0-128 57.173-128 128s57.173 128 128 128 128-57.173 128-128-57.173-128-128-128z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_to_center"]},"attrs":[{}],"properties":{"order":40,"id":3,"name":"lk_to_center","prevSize":32,"code":59665},"setIdx":2,"setId":2,"iconIdx":29},{"icon":{"paths":["M761.856 1024c113.728-206.048 132.896-520.32-313.856-509.824v253.824l-384-384 384-384v248.384c534.976-13.952 594.56 472.224 313.856 775.616z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_undo"]},"attrs":[{}],"properties":{"order":41,"id":2,"name":"lk_undo","prevSize":32,"code":59666},"setIdx":2,"setId":2,"iconIdx":30},{"icon":{"paths":["M637 443h-118v-134c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v134h-118c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h118v134c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8v-134h118c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM921 867l-146-146c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_zoom_in"]},"attrs":[{}],"properties":{"order":42,"id":1,"name":"lk_zoom_in","prevSize":32,"code":59667},"setIdx":2,"setId":2,"iconIdx":31},{"icon":{"paths":["M637 443h-312c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h312c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM921 867l-146-146c122.1-148.9 113.6-369.5-26-509-148-148.1-388.4-148.1-537 0-148.1 148.6-148.1 389 0 537 139.5 139.6 360.1 148.1 509 26l146 146c3.2 2.8 8.3 2.8 11 0l43-43c2.8-2.7 2.8-7.8 0-11zM696 696c-118.8 118.7-311.2 118.7-430 0-118.7-118.8-118.7-311.2 0-430 118.8-118.7 311.2-118.7 430 0 118.7 118.8 118.7 311.2 0 430z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["lk_zoom_out"]},"attrs":[{}],"properties":{"order":43,"id":0,"name":"lk_zoom_out","prevSize":32,"code":59668},"setIdx":2,"setId":2,"iconIdx":32}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon","name":"icomoon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/hangtag-ui/src/components/DraftDesign/icons/style.css b/hangtag-ui/src/components/DraftDesign/icons/style.css new file mode 100644 index 0000000..8d75863 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/icons/style.css @@ -0,0 +1,126 @@ +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?thc33j'); + src: url('fonts/icomoon.eot?thc33j#iefix') format('embedded-opentype'), + url('fonts/icomoon.ttf?thc33j') format('truetype'), + url('fonts/icomoon.woff?thc33j') format('woff'), + url('fonts/icomoon.svg?thc33j#icomoon') format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} + +[class^="icon-"], [class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: never; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-lk_layer_set:before { + content: "\e920"; +} +.icon-lk_border_angle:before { + content: "\e91f"; +} +.icon-lk_line:before { + content: "\e91e"; +} +.icon-lk_text:before { + content: "\e91d"; +} +.icon-lk_warning_tips:before { + content: "\e91c"; +} +.icon-lk_data_output:before { + content: "\e919"; +} +.icon-lk_data_input:before { + content: "\e91a"; +} +.icon-lk_start:before { + content: "\e91b"; +} +.icon-lk_step_flow:before { + content: "\e918"; +} +.icon-lk_success:before { + content: "\e915"; +} +.icon-lk_failed:before { + content: "\e916"; +} +.icon-lk_running:before { + content: "\e917"; +} +.icon-lk_align_horizontal:before { + content: "\e900"; +} +.icon-lk_align_vertical:before { + content: "\e901"; +} +.icon-lk_close_x:before { + content: "\e902"; +} +.icon-lk_color_eyedropper_tool:before { + content: "\e903"; +} +.icon-lk_color_fill:before { + content: "\e904"; +} +.icon-lk_down:before { + content: "\e905"; +} +.icon-lk_file_template:before { + content: "\e906"; +} +.icon-lk_font_bold:before { + content: "\e907"; +} +.icon-lk_font_color:before { + content: "\e908"; +} +.icon-lk_font_italic:before { + content: "\e909"; +} +.icon-lk_icon_config:before { + content: "\e90a"; +} +.icon-lk_minimap:before { + content: "\e90b"; +} +.icon-lk_open:before { + content: "\e90c"; +} +.icon-lk_plus_copy:before { + content: "\e90d"; +} +.icon-lk_recover:before { + content: "\e90e"; +} +.icon-lk_save:before { + content: "\e90f"; +} +.icon-lk_tips:before { + content: "\e910"; +} +.icon-lk_to_center:before { + content: "\e911"; +} +.icon-lk_undo:before { + content: "\e912"; +} +.icon-lk_zoom_in:before { + content: "\e913"; +} +.icon-lk_zoom_out:before { + content: "\e914"; +} diff --git a/hangtag-ui/src/components/DraftDesign/index.vue b/hangtag-ui/src/components/DraftDesign/index.vue new file mode 100644 index 0000000..0f19227 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/index.vue @@ -0,0 +1,676 @@ + + + + diff --git a/hangtag-ui/src/components/DraftDesign/utils/Dpi.ts b/hangtag-ui/src/components/DraftDesign/utils/Dpi.ts new file mode 100644 index 0000000..6d3e9d8 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/utils/Dpi.ts @@ -0,0 +1,41 @@ +// 获取设备像素比 +const dppx = window.devicePixelRatio || + (window.matchMedia && window.matchMedia("(min-resolution: 2dppx), (-webkit-min-device-pixel-ratio: 1.5),(-moz-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5)").matches ? 2 : 1) || + 1; + +// 计算屏幕的宽度和高度值 +const widthValue = screen.width * dppx; +const heightValue = screen.height * dppx; + +/** + * 计算 PPI/DPI + * @param {number} width - 宽度 + * @param {number} height - 高度 + * @param {number} [screenSize=16] - 物理屏幕对角线长度大小 + * @param {string} [opt='d'] - 计算模式:'d' 表示对角线,'w' 表示宽度, + * @returns {number} - 计算出的 DPI 值 + */ +export function calcDpi (width, height, screenSize=16, opt = 'd') { + // 确保宽度和高度为正数 + width = Math.max(width, 1); + height = Math.max(height, 1); + + // 计算 DPI + const dpi = (opt === 'd' ? Math.sqrt(width ** 2 + height ** 2) : opt === 'w' ? width : height) / screenSize; + return dpi > 0 ? Math.round(dpi) : 0; +} + +/** + * + * @param screenSize + * @param opt + */ +export function calcDpiFromSize( screenSize=16,opt = 'd'){ + return calcDpi(widthValue, heightValue, screenSize, opt); +} + + + + + + diff --git a/hangtag-ui/src/components/DraftDesign/utils/FuncUtil.ts b/hangtag-ui/src/components/DraftDesign/utils/FuncUtil.ts new file mode 100644 index 0000000..717d117 --- /dev/null +++ b/hangtag-ui/src/components/DraftDesign/utils/FuncUtil.ts @@ -0,0 +1,191 @@ +export const nextId = (len = 11)=>{ + return Math.random().toString(36).substring(2,2+len).padEnd(len,'s') +} +/** + * + * @param node 对象 + * @param path 取值路径 + * @return {null|*} + */ +export function getSafeValue(node:any, path:string) { + if (!node || !path) return null; + + const keys = path.split('.'); + let result = node; + + for (const k of keys) { + if (result[k] !== undefined) { + result = result[k]; + } else { + return null; + } + } + + return result; +} +export function logInfo(str){ + console.info("".concat("\n", " %c ") + .concat(str, "") + .concat("\n"), "color: #ffffff; font-size: 14px; background: linear-gradient(45deg, #ff0000 0%, #0092ff 80%);"); +} +export function hexToRGBA(hex) { + // 去除可能存在的 # 号 + hex = hex.replace('#', ''); + + // 解析颜色和透明度 + let r, g, b, a; + + if (hex.length === 6) { + // 不带透明度的情况,默认完全不透明 + r = parseInt(hex.slice(0, 2), 16); + g = parseInt(hex.slice(2, 4), 16); + b = parseInt(hex.slice(4, 6), 16); + a = 1; // 默认完全不透明 + } else if (hex.length === 8) { + // 带透明度的情况 + r = parseInt(hex.slice(0, 2), 16); + g = parseInt(hex.slice(2, 4), 16); + b = parseInt(hex.slice(4, 6), 16); + a = parseInt(hex.slice(6, 8), 16) / 255; // 转换为 0-1 的透明度值 + } else { + // 如果格式不正确,返回空字符串或其他处理方式 + return ''; + } + + return `rgba(${r}, ${g}, ${b}, ${a})`; +} +export function toPercentage(number, total) { + return (number / total) * 100 +} +export function angleToLinearGradient(angle) { + const radians = angle * Math.PI / 180 + + // 计算单位向量 + const unitVectorX = Math.cos(radians) + const unitVectorY = Math.sin(radians) + + // 计算起始点和结束点的坐标 + let x1, y1, x2, y2 + if (angle >= 0 && angle < 90) { + x1 = 0 + y1 = 1 + x2 = unitVectorX + y2 = 0 + } else if (angle >= 90 && angle < 180) { + x1 = 0 + y1 = 1 + x2 = 1 + y2 = -unitVectorY + } else if (angle >= 180 && angle < 270) { + x1 = 1 + y1 = 0 + x2 = -unitVectorX + y2 = 1 + } else { + x1 = 1 + y1 = 0 + x2 = 0 + y2 = unitVectorY + } + + // 将结束点的位置向内移动一点,以实现平滑的过渡 + const deltaX = Math.min(0.2, Math.abs(unitVectorX)) * (x2 - x1) + const deltaY = Math.min(0.2, Math.abs(unitVectorY)) * (y2 - y1) + x2 -= deltaX + y2 -= deltaY + // 将起始点和结束点的坐标转换为百分比值 + x1 *= 100 + y1 *= 100 + x2 *= 100 + y2 *= 100 + return {x1: x1 + '%', y1: y1 + '%', x2: x2 + '%', y2: y2 + '%'} +} +/** + * 过滤不安全的HTML标签和属性,以防止XSS攻击。 + * + * @param {string} html 待过滤的HTML代码。 + * @returns {string} 过滤后的HTML代码。 + */ +export function filterUnsafeHtml(html) { + + if(!html){ + return html; + } + // 过滤掉不安全的 HTML 标签和属性 + html = html.replace(/.*?<\/script>/gi, ''); + + // 过滤