From 839c79405f09cbbbfd4d66323c8625c1b13b05ce Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 25 Jul 2023 09:25:42 +0800 Subject: [PATCH 01/11] =?UTF-8?q?Fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E7=BB=99?= =?UTF-8?q?=E6=A6=82=E8=A6=81=E8=8A=82=E7=82=B9=E8=AE=BE=E7=BD=AE=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E6=A6=82=E8=A6=81=E8=8A=82=E7=82=B9=E4=BC=9A=E6=B6=88?= =?UTF-8?q?=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/core/render/node/nodeGeneralization.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/simple-mind-map/src/core/render/node/nodeGeneralization.js b/simple-mind-map/src/core/render/node/nodeGeneralization.js index ba204186..ec7f95aa 100644 --- a/simple-mind-map/src/core/render/node/nodeGeneralization.js +++ b/simple-mind-map/src/core/render/node/nodeGeneralization.js @@ -36,15 +36,14 @@ function createGeneralizationNode () { // 更新概要节点 function updateGeneralization () { + if (this.isGeneralization) return this.removeGeneralization() this.createGeneralizationNode() } // 渲染概要节点 function renderGeneralization () { - if (this.isGeneralization) { - return - } + if (this.isGeneralization) return if (!this.checkHasGeneralization()) { this.removeGeneralization() this._generalizationNodeWidth = 0 @@ -67,6 +66,7 @@ function renderGeneralization () { // 删除概要节点 function removeGeneralization () { + if (this.isGeneralization) return if (this._generalizationLine) { this._generalizationLine.remove() this._generalizationLine = null @@ -87,6 +87,7 @@ function removeGeneralization () { // 隐藏概要节点 function hideGeneralization () { + if (this.isGeneralization) return if (this._generalizationLine) { this._generalizationLine.hide() } @@ -97,6 +98,7 @@ function hideGeneralization () { // 显示概要节点 function showGeneralization () { + if (this.isGeneralization) return if (this._generalizationLine) { this._generalizationLine.show() } From 8c79ffd723fe4523ca0ea3e0aaae30b91e68b6d0 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 25 Jul 2023 09:38:50 +0800 Subject: [PATCH 02/11] =?UTF-8?q?Feat=EF=BC=9A=E5=AF=BC=E5=87=BAsvg?= =?UTF-8?q?=E6=97=B6=E6=9B=BF=E6=8D=A2svg=E4=B8=AD=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=9A=84 =E5=AD=97=E7=AC=A6=EF=BC=8C=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E7=9A=84svg=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/plugins/Export.js | 4 +++- simple-mind-map/src/utils/index.js | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/simple-mind-map/src/plugins/Export.js b/simple-mind-map/src/plugins/Export.js index 1f719d8f..626f73c7 100644 --- a/simple-mind-map/src/plugins/Export.js +++ b/simple-mind-map/src/plugins/Export.js @@ -1,4 +1,4 @@ -import { imgToDataUrl, downloadFile, readBlob } from '../utils' +import { imgToDataUrl, downloadFile, readBlob, removeHTMLEntities } from '../utils' import { SVG } from '@svgdotjs/svg.js' import drawBackgroundImageToCanvas from '../utils/simulateCSSBackgroundInCanvas' import { transformToMarkdown } from '../parse/toMarkdown' @@ -154,6 +154,7 @@ class Export { */ async png(name, transparent = false) { let { node, str } = await this.getSvgData() + str = removeHTMLEntities(str) // 如果开启了富文本,则使用htmltocanvas转换为图片 if (this.mindMap.richText) { let res = await this.mindMap.richText.handleExportPng(node.node) @@ -207,6 +208,7 @@ class Export { node.first().before(SVG(`${name}`)) await this.drawBackgroundToSvg(node) let str = node.svg() + str = removeHTMLEntities(str) // 转换成blob数据 let blob = new Blob([str], { type: 'image/svg+xml' diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index 99470427..f28d757e 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -453,3 +453,11 @@ export const loadImage = imgFile => { } }) } + +// 移除字符串中的html实体 +export const removeHTMLEntities = (str) => { + [[' ', ' ']].forEach((item) => { + str = str.replaceAll(item[0], item[1]) + }) + return str +} \ No newline at end of file From 4b2ebb2e1c38a6f6e7561f121877c5fd194a76aa Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 25 Jul 2023 16:29:14 +0800 Subject: [PATCH 03/11] Doc: update --- README.md | 4 ++ web/src/assets/avatar/水车.jpg | Bin 0 -> 28463 bytes web/src/pages/Doc/en/introduction/index.md | 4 ++ web/src/pages/Doc/en/introduction/index.vue | 40 +++++++++++--------- web/src/pages/Doc/zh/introduction/index.md | 4 ++ web/src/pages/Doc/zh/introduction/index.vue | 40 +++++++++++--------- 6 files changed, 56 insertions(+), 36 deletions(-) create mode 100644 web/src/assets/avatar/水车.jpg diff --git a/README.md b/README.md index a95388aa..27232255 100644 --- a/README.md +++ b/README.md @@ -140,4 +140,8 @@ const mindMap = new MindMap({ Chris + + + 水车 +

\ No newline at end of file diff --git a/web/src/assets/avatar/水车.jpg b/web/src/assets/avatar/水车.jpg new file mode 100644 index 0000000000000000000000000000000000000000..747178b7a480914cc26837fe2df9366799f9b3d2 GIT binary patch literal 28463 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

Chris

+
+ +

水车

+
\ No newline at end of file diff --git a/web/src/pages/Doc/en/introduction/index.vue b/web/src/pages/Doc/en/introduction/index.vue index 7f99b20d..419c1a6a 100644 --- a/web/src/pages/Doc/en/introduction/index.vue +++ b/web/src/pages/Doc/en/introduction/index.vue @@ -8,21 +8,21 @@

Features

    -
  • -
  • +
  • +
  • organizational structure diagrams, directory organization diagrams, timeline, and fishbone diagrams
  • -
  • -
  • -
  • +
  • +
  • +
  • summaries
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +

Repository Catalog Introduction

1.simple-mind-map

@@ -32,16 +32,16 @@ frameworks such as Vue and React, or without a framework.

This is an online mind map built using the simple-mind-map library and based on Vue2.x and ElementUI. Features include:

    -
  • +
  • images, icons, hyperlinks, notes, tags, and summaries
  • -
  • +
  • outline, theme selection, and structure selection
  • -
  • +
  • storage by default, but it also supports creating, opening, and editing local files on the computer directly
  • -
  • +
  • and organizing layout
  • -
  • +
  • between edit and read-only modes, zooming in and out, and switching to full screen, support mini map
@@ -119,6 +119,10 @@ full screen, support mini map

Chris

+
+ +

水车

+
diff --git a/web/src/pages/Doc/zh/introduction/index.md b/web/src/pages/Doc/zh/introduction/index.md index f175c478..40186852 100644 --- a/web/src/pages/Doc/zh/introduction/index.md +++ b/web/src/pages/Doc/zh/introduction/index.md @@ -151,4 +151,8 @@

Chris

+
+ +

水车

+
\ No newline at end of file diff --git a/web/src/pages/Doc/zh/introduction/index.vue b/web/src/pages/Doc/zh/introduction/index.vue index d3cca190..71f3fe74 100644 --- a/web/src/pages/Doc/zh/introduction/index.vue +++ b/web/src/pages/Doc/zh/introduction/index.vue @@ -8,19 +8,19 @@

特性

    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • jsonpngsvgpdfmarkdown,支持从jsonxmindmarkdown导入
  • -
  • -
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • jsonpngsvgpdfmarkdown,支持从jsonxmindmarkdown导入
  • +
  • +

仓库目录介绍

1.simple-mind-map

@@ -28,11 +28,11 @@

2.web

使用simple-mind-map库,基于vue2.xElementUI搭建的在线思维导图。特性:

    -
  • -
  • -
  • -
  • -
  • +
  • +
  • +
  • +
  • +

提供文档页面服务。

3.dist

@@ -111,6 +111,10 @@

Chris

+
+ +

水车

+
From 8e30d4a94fb3fb0bbe1febb382680c0231cf2236 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Tue, 25 Jul 2023 18:35:41 +0800 Subject: [PATCH 04/11] =?UTF-8?q?Fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E8=8A=82=E7=82=B9=E5=86=85=E5=AE=B9=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=BA=8C=E6=AC=A1=E5=88=9B=E5=BB=BA=E6=A0=B9=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E6=97=B6=E8=8A=82=E7=82=B9=E5=86=85=E5=AE=B9=E4=B8=8D?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/index.js | 24 +++++++++++++++++-- simple-mind-map/src/constants/constant.js | 7 +++++- .../core/render/node/nodeCreateContents.js | 17 +++++++------ simple-mind-map/src/utils/index.js | 5 ++++ 4 files changed, 41 insertions(+), 12 deletions(-) diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index 731edd37..babb799c 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -7,9 +7,9 @@ import Style from './src/core/render/node/Style' import KeyCommand from './src/core/command/KeyCommand' import Command from './src/core/command/Command' import BatchExecution from './src/utils/BatchExecution' -import { layoutValueList, CONSTANTS } from './src/constants/constant' +import { layoutValueList, CONSTANTS, commonCaches } from './src/constants/constant' import { SVG } from '@svgdotjs/svg.js' -import { simpleDeepClone } from './src/utils' +import { simpleDeepClone, getType } from './src/utils' import defaultTheme, { checkIsNodeSizeIndependenceConfig } from './src/themes/default' import { defaultOpt } from './src/constants/defaultOptions' @@ -35,6 +35,9 @@ class MindMap { // 初始化主题 this.initTheme() + // 初始化缓存数据 + this.initCache() + // 事件类 this.event = new Event({ mindMap: this @@ -129,6 +132,23 @@ class MindMap { this.event.off(event, fn) } + // 初始化缓存数据 + initCache() { + Object.keys(commonCaches).forEach((key) => { + let type = getType(commonCaches[key]) + let value = '' + switch(type) { + case 'Boolean': + value = false + break + default: + value = null + break + } + commonCaches[key] = value + }) + } + // 设置主题 initTheme() { // 合并主题配置 diff --git a/simple-mind-map/src/constants/constant.js b/simple-mind-map/src/constants/constant.js index cf2ce546..1593bf81 100644 --- a/simple-mind-map/src/constants/constant.js +++ b/simple-mind-map/src/constants/constant.js @@ -324,4 +324,9 @@ export const nodeDataNoStylePropList = [ 'resetRichText', 'uid', 'activeStyle' -] \ No newline at end of file +] + +// 数据缓存 +export const commonCaches = { + measureCustomNodeContentSizeEl: null +} \ No newline at end of file diff --git a/simple-mind-map/src/core/render/node/nodeCreateContents.js b/simple-mind-map/src/core/render/node/nodeCreateContents.js index 9822484a..c521d2d4 100644 --- a/simple-mind-map/src/core/render/node/nodeCreateContents.js +++ b/simple-mind-map/src/core/render/node/nodeCreateContents.js @@ -1,7 +1,7 @@ import { measureText, resizeImgSize, getTextFromHtml } from '../../../utils' import { Image, SVG, A, G, Rect, Text, ForeignObject } from '@svgdotjs/svg.js' import iconsSvg from '../../../svg/icons' -import { CONSTANTS } from '../../../constants/constant' +import { CONSTANTS, commonCaches } from '../../../constants/constant' // 创建图片节点 function createImgNode() { @@ -293,20 +293,19 @@ function createNoteNode() { } // 测量自定义节点内容元素的宽高 -let warpEl = null function measureCustomNodeContentSize (content) { - if (!warpEl) { - warpEl = document.createElement('div') - warpEl.style.cssText = ` + if (!commonCaches.measureCustomNodeContentSizeEl) { + commonCaches.measureCustomNodeContentSizeEl = document.createElement('div') + commonCaches.measureCustomNodeContentSizeEl.style.cssText = ` position: fixed; left: -99999px; top: -99999px; ` - this.mindMap.el.appendChild(warpEl) + this.mindMap.el.appendChild(commonCaches.measureCustomNodeContentSizeEl) } - warpEl.innerHTML = '' - warpEl.appendChild(content) - let rect = warpEl.getBoundingClientRect() + commonCaches.measureCustomNodeContentSizeEl.innerHTML = '' + commonCaches.measureCustomNodeContentSizeEl.appendChild(content) + let rect = commonCaches.measureCustomNodeContentSizeEl.getBoundingClientRect() return { width: rect.width, height: rect.height diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index f28d757e..886e5385 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -460,4 +460,9 @@ export const removeHTMLEntities = (str) => { str = str.replaceAll(item[0], item[1]) }) return str +} + +// 获取一个数据的类型 +export const getType = (data) => { + return Object.prototype.toString.call(data).slice(7, -1) } \ No newline at end of file From 5ff9137745dd954aabad4f1c71373b340d82db66 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Wed, 26 Jul 2023 09:04:24 +0800 Subject: [PATCH 05/11] =?UTF-8?q?Fix=EF=BC=9A1.=E4=BF=AE=E5=A4=8D=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=A4=84=E4=BA=8E=E7=BC=96=E8=BE=91=E4=B8=AD=E6=97=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B0=E8=8A=82=E7=82=B9=E6=97=B6=E6=96=B0?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E7=9A=84=E7=84=A6=E7=82=B9=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9B2.=E4=BF=AE=E5=A4=8D=E8=BF=9E?= =?UTF-8?q?=E7=BB=AD=E6=8C=89tab=E9=94=AE=E6=97=A0=E6=B3=95=E8=BF=9E?= =?UTF-8?q?=E7=BB=AD=E5=88=9B=E5=BB=BA=E5=AD=90=E8=8A=82=E7=82=B9=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/core/render/Render.js | 2 ++ simple-mind-map/src/core/render/TextEdit.js | 3 +++ simple-mind-map/src/plugins/RichText.js | 6 ++++++ 3 files changed, 11 insertions(+) diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 1e2664ea..9e06c260 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -444,6 +444,7 @@ class Render { if (this.activeNodeList.length <= 0 && appointNodes.length <= 0) { return } + this.textEdit.hideEditTextBox() let { defaultInsertSecondLevelNodeText, defaultInsertBelowSecondLevelNodeText @@ -486,6 +487,7 @@ class Render { if (this.activeNodeList.length <= 0 && appointNodes.length <= 0) { return } + this.textEdit.hideEditTextBox() let { defaultInsertSecondLevelNodeText, defaultInsertBelowSecondLevelNodeText diff --git a/simple-mind-map/src/core/render/TextEdit.js b/simple-mind-map/src/core/render/TextEdit.js index 523cf4ba..e426ecf6 100644 --- a/simple-mind-map/src/core/render/TextEdit.js +++ b/simple-mind-map/src/core/render/TextEdit.js @@ -106,6 +106,9 @@ export default class TextEdit { this.mindMap.keyCommand.addShortcut('Enter', () => { this.hideEditTextBox() }) + this.mindMap.keyCommand.addShortcut('Tab', () => { + this.hideEditTextBox() + }) } // 显示文本编辑框 diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index d501c282..c40acac7 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -268,6 +268,12 @@ class RichText { handler: function () { // 覆盖默认的回车键换行 } + }, + tab: { + key: 9, + handler: function () { + // 覆盖默认的tab键 + } } } } From 7e1a43143d723505bff3618d03a8542f964396fa Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Wed, 26 Jul 2023 09:17:48 +0800 Subject: [PATCH 06/11] =?UTF-8?q?Demo=EF=BC=9A=E5=88=87=E6=8D=A2=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E6=97=B6=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E8=A6=86=E7=9B=96=E8=AE=BE=E7=BD=AE=E8=BF=87=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/pages/Edit/components/Theme.vue | 34 ++++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/web/src/pages/Edit/components/Theme.vue b/web/src/pages/Edit/components/Theme.vue index b294e411..b5f09302 100644 --- a/web/src/pages/Edit/components/Theme.vue +++ b/web/src/pages/Edit/components/Theme.vue @@ -42,7 +42,7 @@ export default { }, data() { return { - themeList: [...themeList].reverse(),// ...customThemeList + themeList: [...themeList].reverse(), // ...customThemeList themeMap, theme: '' } @@ -61,32 +61,48 @@ export default { } } }, - created () { + created() { this.theme = this.mindMap.getTheme() this.handleDark() }, methods: { ...mapMutations(['setIsDark']), - /** - * @Author: 王林 - * @Date: 2021-06-24 23:04:38 - * @Desc: 使用主题 - */ useTheme(theme) { this.theme = theme.value this.handleDark() + const customThemeConfig = this.mindMap.getCustomThemeConfig() + const hasCustomThemeConfig = Object.keys(customThemeConfig).length > 0 + if (hasCustomThemeConfig) { + this.$confirm('你当前自定义过基础样式,是否覆盖?', '提示', { + confirmButtonText: '覆盖', + cancelButtonText: '保留', + type: 'warning' + }) + .then(() => { + this.mindMap.setThemeConfig({}) + this.changeTheme(theme, {}) + }) + .catch(() => { + this.changeTheme(theme, customThemeConfig) + }) + } else { + this.changeTheme(theme, customThemeConfig) + } + }, + + changeTheme(theme, config) { this.mindMap.setTheme(theme.value) storeConfig({ theme: { template: theme.value, - config: this.mindMap.getCustomThemeConfig() + config } }) }, handleDark() { - let target = themeList.find((item) => { + let target = themeList.find(item => { return item.value === this.theme }) this.setIsDark(target.dark) From 5a5c7702f5a3077f20f2bb85c9f26fcfd8057e1e Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Fri, 28 Jul 2023 08:48:51 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/plugins/AssociativeLine.js | 2 +- simple-mind-map/src/plugins/Drag.js | 3 +-- simple-mind-map/src/plugins/Export.js | 2 +- simple-mind-map/src/plugins/ExportPDF.js | 2 +- simple-mind-map/src/plugins/ExportXMind.js | 2 +- simple-mind-map/src/plugins/KeyboardNavigation.js | 2 +- simple-mind-map/src/plugins/MiniMap.js | 2 +- simple-mind-map/src/plugins/RichText.js | 2 +- simple-mind-map/src/plugins/Select.js | 3 +-- simple-mind-map/src/plugins/TouchEvent.js | 3 +-- simple-mind-map/src/plugins/Watermark.js | 2 +- 11 files changed, 11 insertions(+), 14 deletions(-) diff --git a/simple-mind-map/src/plugins/AssociativeLine.js b/simple-mind-map/src/plugins/AssociativeLine.js index 28223265..2a7ebba1 100644 --- a/simple-mind-map/src/plugins/AssociativeLine.js +++ b/simple-mind-map/src/plugins/AssociativeLine.js @@ -11,7 +11,7 @@ import { import associativeLineControlsMethods from './associativeLine/associativeLineControls' import associativeLineTextMethods from './associativeLine/associativeLineText' -// 关联线类 +// 关联线插件 class AssociativeLine { constructor(opt = {}) { this.mindMap = opt.mindMap diff --git a/simple-mind-map/src/plugins/Drag.js b/simple-mind-map/src/plugins/Drag.js index d85ea667..78a4b8aa 100644 --- a/simple-mind-map/src/plugins/Drag.js +++ b/simple-mind-map/src/plugins/Drag.js @@ -1,8 +1,7 @@ import { bfsWalk, throttle } from '../utils' import Base from '../layouts/Base' -// 节点拖动类 - +// 节点拖动插件 class Drag extends Base { // 构造函数 constructor({ mindMap }) { diff --git a/simple-mind-map/src/plugins/Export.js b/simple-mind-map/src/plugins/Export.js index 626f73c7..a5747595 100644 --- a/simple-mind-map/src/plugins/Export.js +++ b/simple-mind-map/src/plugins/Export.js @@ -3,7 +3,7 @@ import { SVG } from '@svgdotjs/svg.js' import drawBackgroundImageToCanvas from '../utils/simulateCSSBackgroundInCanvas' import { transformToMarkdown } from '../parse/toMarkdown' -// 导出类 +// 导出插件 class Export { // 构造函数 constructor(opt) { diff --git a/simple-mind-map/src/plugins/ExportPDF.js b/simple-mind-map/src/plugins/ExportPDF.js index 2fcc254d..e46b3a3c 100644 --- a/simple-mind-map/src/plugins/ExportPDF.js +++ b/simple-mind-map/src/plugins/ExportPDF.js @@ -1,6 +1,6 @@ import JsPDF from 'jspdf' -// 导出PDF类,需要通过Export插件使用 +// 导出PDF插件,需要通过Export插件使用 class ExportPDF { // 构造函数 constructor(opt) { diff --git a/simple-mind-map/src/plugins/ExportXMind.js b/simple-mind-map/src/plugins/ExportXMind.js index 5f54e220..42ea665c 100644 --- a/simple-mind-map/src/plugins/ExportXMind.js +++ b/simple-mind-map/src/plugins/ExportXMind.js @@ -1,6 +1,6 @@ import xmind from '../parse/xmind' -// 导出XMind类,需要通过Export插件使用 +// 导出XMind插件,需要通过Export插件使用 class ExportXMind { // 构造函数 constructor(opt) { diff --git a/simple-mind-map/src/plugins/KeyboardNavigation.js b/simple-mind-map/src/plugins/KeyboardNavigation.js index 0a3f6098..5ed4b593 100644 --- a/simple-mind-map/src/plugins/KeyboardNavigation.js +++ b/simple-mind-map/src/plugins/KeyboardNavigation.js @@ -1,7 +1,7 @@ import { bfsWalk } from '../utils' import { CONSTANTS } from '../constants/constant' -// 键盘导航类 +// 键盘导航插件 class KeyboardNavigation { // 构造函数 constructor(opt) { diff --git a/simple-mind-map/src/plugins/MiniMap.js b/simple-mind-map/src/plugins/MiniMap.js index 9bc1d6ba..78198685 100644 --- a/simple-mind-map/src/plugins/MiniMap.js +++ b/simple-mind-map/src/plugins/MiniMap.js @@ -1,4 +1,4 @@ -// 小地图类 +// 小地图插件 class MiniMap { // 构造函数 constructor(opt) { diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index c40acac7..2652428f 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -28,7 +28,7 @@ let fontSizeList = new Array(100).fill(0).map((_, index) => { return index + 'px' }) -// 节点支持富文本编辑功能 +// 富文本编辑插件 class RichText { constructor({ mindMap, pluginOpt }) { this.mindMap = mindMap diff --git a/simple-mind-map/src/plugins/Select.js b/simple-mind-map/src/plugins/Select.js index b2a58c14..bba83b0c 100644 --- a/simple-mind-map/src/plugins/Select.js +++ b/simple-mind-map/src/plugins/Select.js @@ -1,7 +1,6 @@ import { bfsWalk, throttle } from '../utils' -// 选择节点类 - +// 节点选择插件 class Select { // 构造函数 constructor({ mindMap }) { diff --git a/simple-mind-map/src/plugins/TouchEvent.js b/simple-mind-map/src/plugins/TouchEvent.js index 5afc1f04..2d4f78d1 100644 --- a/simple-mind-map/src/plugins/TouchEvent.js +++ b/simple-mind-map/src/plugins/TouchEvent.js @@ -1,5 +1,4 @@ -// 手势事件支持类 - +// 手势事件支持插件 class TouchEvent { // 构造函数 constructor({ mindMap }) { diff --git a/simple-mind-map/src/plugins/Watermark.js b/simple-mind-map/src/plugins/Watermark.js index 7d2ddaca..cd6a3c98 100644 --- a/simple-mind-map/src/plugins/Watermark.js +++ b/simple-mind-map/src/plugins/Watermark.js @@ -2,7 +2,7 @@ import { Text, G } from '@svgdotjs/svg.js' import { degToRad, camelCaseToHyphen } from '../utils' import merge from 'deepmerge' -// 水印类 +// 水印插件 class Watermark { constructor(opt = {}) { this.mindMap = opt.mindMap From 07be48d3423d03cc64f76060b86bb19cbbf8d79b Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Fri, 28 Jul 2023 08:50:29 +0800 Subject: [PATCH 08/11] =?UTF-8?q?Feat=EF=BC=9A=E6=94=AF=E6=8C=81=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=92=8C=E6=9B=BF=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/full.js | 2 + simple-mind-map/src/core/render/Render.js | 10 +- simple-mind-map/src/plugins/Search.js | 143 ++++++++++++++++ web/src/pages/Edit/components/Edit.vue | 7 +- web/src/pages/Edit/components/Search.vue | 188 ++++++++++++++++++++++ web/src/pages/Edit/components/Sidebar.vue | 11 +- 6 files changed, 353 insertions(+), 8 deletions(-) create mode 100644 simple-mind-map/src/plugins/Search.js create mode 100644 web/src/pages/Edit/components/Search.vue diff --git a/simple-mind-map/full.js b/simple-mind-map/full.js index c119beb8..2c78b8be 100644 --- a/simple-mind-map/full.js +++ b/simple-mind-map/full.js @@ -10,6 +10,7 @@ import AssociativeLine from './src/plugins/AssociativeLine' import RichText from './src/plugins/RichText' import NodeImgAdjust from './src/plugins/NodeImgAdjust.js' import TouchEvent from './src/plugins/TouchEvent.js' +import Search from './src/plugins/Search.js' import xmind from './src/parse/xmind.js' import markdown from './src/parse/markdown.js' import icons from './src/svg/icons.js' @@ -36,5 +37,6 @@ MindMap .usePlugin(RichText) .usePlugin(TouchEvent) .usePlugin(NodeImgAdjust) + .usePlugin(Search) export default MindMap \ No newline at end of file diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 9e06c260..217751de 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -975,7 +975,8 @@ class Render { setNodeText(node, text, richText) { this.setNodeDataRender(node, { text, - richText + richText, + resetRichText: richText }) } @@ -1101,7 +1102,7 @@ class Render { } // 定位到指定节点 - goTargetNode(node) { + goTargetNode(node, callback = () => {}) { let uid = typeof node === 'string' ? node : node.nodeData.data.uid if (!uid) return this.expandToNodeUid(uid, () => { @@ -1109,6 +1110,7 @@ class Render { if (targetNode) { targetNode.active() this.moveNodeToCenter(targetNode) + callback() } }) } @@ -1121,7 +1123,7 @@ class Render { } // 设置节点数据,并判断是否渲染 - setNodeDataRender(node, data) { + setNodeDataRender(node, data, notRender = false) { this.setNodeData(node, data) let changed = node.reRender() if (changed) { @@ -1129,7 +1131,7 @@ class Render { // 概要节点 node.generalizationBelongNode.updateGeneralization() } - this.mindMap.render() + if (!notRender) this.mindMap.render() } } diff --git a/simple-mind-map/src/plugins/Search.js b/simple-mind-map/src/plugins/Search.js new file mode 100644 index 00000000..5bbd3e77 --- /dev/null +++ b/simple-mind-map/src/plugins/Search.js @@ -0,0 +1,143 @@ +import { bfsWalk, getTextFromHtml } from '../utils/index' + +// 搜索插件 +class Search { + // 构造函数 + constructor({ mindMap }) { + this.mindMap = mindMap + // 是否正在搜索 + this.isSearching = false + // 搜索文本 + this.searchText = '' + // 匹配的节点列表 + this.matchNodeList = [] + // 当前所在的节点列表索引 + this.currentIndex = -1 + // 是否正在跳转中 + this.isJumping = false + this.onDataChange = this.onDataChange.bind(this) + this.mindMap.on('data_change', this.onDataChange) + } + + // 节点数据改变了,需要重新搜索 + onDataChange() { + if (this.isJumping) return + this.searchText = '' + } + + // 搜索 + search(text, callback) { + text = String(text).trim() + if (!text) return this.endSearch() + this.isSearching = true + if (this.searchText === text) { + // 和上一次搜索文本一样,那么搜索下一个 + this.searchNext(callback) + } else { + // 和上次搜索文本不一样,那么重新开始 + this.searchText = text + this.doSearch() + this.searchNext(callback) + } + this.emitEvent() + } + + // 结束搜索 + endSearch() { + if (!this.isSearching) return + this.searchText = '' + this.matchNodeList = [] + this.currentIndex = -1 + this.isJumping = false + this.isSearching = false + this.emitEvent() + } + + // 搜索匹配的节点 + doSearch() { + this.matchNodeList = [] + this.currentIndex = -1 + bfsWalk(this.mindMap.renderer.root, node => { + let { richText, text } = node.nodeData.data + if (richText) { + text = getTextFromHtml(text) + } + if (text.includes(this.searchText)) { + this.matchNodeList.push(node) + } + }) + } + + // 搜索下一个,定位到下一个匹配节点 + searchNext(callback) { + if (!this.isSearching || this.matchNodeList.length <= 0) return + if (this.currentIndex < this.matchNodeList.length - 1) { + this.currentIndex++ + } else { + this.currentIndex = 0 + } + let currentNode = this.matchNodeList[this.currentIndex] + this.isJumping = true + this.mindMap.execCommand('GO_TARGET_NODE', currentNode, () => { + this.isJumping = false + callback() + }) + } + + // 替换当前节点 + replace(replaceText) { + replaceText = String(replaceText).trim() + if (!replaceText || !this.isSearching || this.matchNodeList.length <= 0) + return + let currentNode = this.matchNodeList[this.currentIndex] + if (!currentNode) return + let text = this.getReplacedText(currentNode, this.searchText, replaceText) + currentNode.setText(text, currentNode.nodeData.data.richText) + this.matchNodeList = this.matchNodeList.filter(node => { + return currentNode !== node + }) + this.emitEvent() + } + + // 替换所有 + replaceAll(replaceText) { + replaceText = String(replaceText).trim() + if (!replaceText || !this.isSearching || this.matchNodeList.length <= 0) + return + this.matchNodeList.forEach(node => { + let text = this.getReplacedText(node, this.searchText, replaceText) + this.mindMap.renderer.setNodeDataRender( + node, + { + text, + resetRichText: !!node.nodeData.data.richText + }, + true + ) + }) + this.mindMap.render() + this.mindMap.command.addHistory() + this.endSearch() + } + + // 获取某个节点替换后的文本 + getReplacedText(node, searchText, replaceText) { + let { richText, text } = node.nodeData.data + if (richText) { + text = getTextFromHtml(text) + } + return text.replaceAll(searchText, replaceText) + } + + // 发送事件 + emitEvent() { + this.mindMap.emit('search_info_change', { + currentIndex: this.currentIndex, + total: this.matchNodeList.length + }) + } +} + +Search.instanceName = 'search' + +export default Search diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue index 94f3ea52..7dc8c17b 100644 --- a/web/src/pages/Edit/components/Edit.vue +++ b/web/src/pages/Edit/components/Edit.vue @@ -18,6 +18,7 @@ > + @@ -35,6 +36,7 @@ import RichText from 'simple-mind-map/src/plugins/RichText.js' import AssociativeLine from 'simple-mind-map/src/plugins/AssociativeLine.js' import TouchEvent from 'simple-mind-map/src/plugins/TouchEvent.js' import NodeImgAdjust from 'simple-mind-map/src/plugins/NodeImgAdjust.js' +import SearchPlugin from 'simple-mind-map/src/plugins/Search.js' import Outline from './Outline' import Style from './Style' import BaseStyle from './BaseStyle' @@ -59,6 +61,7 @@ import Vue from 'vue' import router from '../../../router' import store from '../../../store' import i18n from '../../../i18n' +import Search from './Search.vue' // 注册插件 MindMap @@ -73,6 +76,7 @@ MindMap .usePlugin(AssociativeLine) .usePlugin(NodeImgAdjust) .usePlugin(TouchEvent) + .usePlugin(SearchPlugin) // 注册自定义主题 // customThemeList.forEach((item) => { @@ -100,7 +104,8 @@ export default { NodeNoteContentShow, Navigator, NodeImgPreview, - SidebarTrigger + SidebarTrigger, + Search }, data() { return { diff --git a/web/src/pages/Edit/components/Search.vue b/web/src/pages/Edit/components/Search.vue new file mode 100644 index 00000000..9fdda8a4 --- /dev/null +++ b/web/src/pages/Edit/components/Search.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/web/src/pages/Edit/components/Sidebar.vue b/web/src/pages/Edit/components/Sidebar.vue index 5f0cec24..d82b5153 100644 --- a/web/src/pages/Edit/components/Sidebar.vue +++ b/web/src/pages/Edit/components/Sidebar.vue @@ -39,7 +39,7 @@ export default { } }, computed: { - ...mapState(['isDark']), + ...mapState(['isDark']) }, watch: { show(val, oldVal) { @@ -48,6 +48,11 @@ export default { } } }, + created() { + this.$bus.$on('closeSideBar', () => { + this.close() + }) + }, methods: { ...mapMutations(['setActiveSidebar']), @@ -74,10 +79,10 @@ export default { &.isDark { background-color: #262a2e; - border-left-color: hsla(0,0%,100%,.1); + border-left-color: hsla(0, 0%, 100%, 0.1); .sidebarHeader { - border-bottom-color: hsla(0,0%,100%,.1); + border-bottom-color: hsla(0, 0%, 100%, 0.1); color: #fff; } From d06f57a5dcd0d6d00edfaa7af59650eb9084239a Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Fri, 28 Jul 2023 08:55:35 +0800 Subject: [PATCH 09/11] =?UTF-8?q?Demo=EF=BC=9A=E4=BC=98=E5=8C=96=E6=9A=97?= =?UTF-8?q?=E9=BB=91=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/pages/Edit/Index.vue | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/web/src/pages/Edit/Index.vue b/web/src/pages/Edit/Index.vue index 997d69ac..bc81551a 100644 --- a/web/src/pages/Edit/Index.vue +++ b/web/src/pages/Edit/Index.vue @@ -79,6 +79,14 @@ export default { body { &.isDark { + /* el-button */ + .el-button { + background-color: #363b3f; + color: hsla(0,0%,100%,.9); + border-color: hsla(0, 0%, 100%, 0.1); + } + + /* el-input */ .el-input__inner { background-color: #363b3f; border-color: hsla(0, 0%, 100%, 0.1); @@ -91,6 +99,15 @@ body { color: hsla(0,0%,100%,.3); } + .el-input-group__append, .el-input-group__prepend { + background-color: #363b3f; + border-color: hsla(0, 0%, 100%, 0.1); + } + + .el-input-group__append button.el-button { + color: hsla(0, 0%, 100%, 0.9); + } + /* el-select */ .el-select-dropdown { background-color: #36393d; From 8e59677623359fafe6ac155ca60c3af1a5f36331 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Fri, 28 Jul 2023 09:33:18 +0800 Subject: [PATCH 10/11] Doc: update --- README.md | 4 ++ simple-mind-map/package.json | 2 +- web/src/assets/avatar/仓鼠.jpg | Bin 0 -> 39928 bytes web/src/assets/icon-font/iconfont.css | 10 ++- web/src/assets/icon-font/iconfont.ttf | Bin 26060 -> 26300 bytes web/src/assets/icon-font/iconfont.woff | Bin 16432 -> 16600 bytes web/src/assets/icon-font/iconfont.woff2 | Bin 14076 -> 14196 bytes web/src/config/en.js | 5 ++ web/src/config/zh.js | 5 ++ web/src/lang/en_us.js | 7 ++ web/src/lang/zh_cn.js | 7 ++ web/src/pages/Doc/catalogList.js | 1 + web/src/pages/Doc/en/changelog/index.md | 8 +++ web/src/pages/Doc/en/changelog/index.vue | 4 ++ web/src/pages/Doc/en/constructor/index.md | 2 +- web/src/pages/Doc/en/constructor/index.vue | 2 +- web/src/pages/Doc/en/introduction/index.md | 4 ++ web/src/pages/Doc/en/introduction/index.vue | 40 ++++++----- web/src/pages/Doc/en/render/index.md | 4 +- web/src/pages/Doc/en/render/index.vue | 5 +- web/src/pages/Doc/en/search/index.md | 68 ++++++++++++++++++ web/src/pages/Doc/en/search/index.vue | 74 ++++++++++++++++++++ web/src/pages/Doc/en/utils/index.md | 6 ++ web/src/pages/Doc/en/utils/index.vue | 5 ++ web/src/pages/Doc/routerList.js | 4 +- web/src/pages/Doc/zh/changelog/index.md | 8 +++ web/src/pages/Doc/zh/changelog/index.vue | 4 ++ web/src/pages/Doc/zh/constructor/index.md | 2 +- web/src/pages/Doc/zh/constructor/index.vue | 2 +- web/src/pages/Doc/zh/introduction/index.md | 4 ++ web/src/pages/Doc/zh/introduction/index.vue | 40 ++++++----- web/src/pages/Doc/zh/render/index.md | 4 +- web/src/pages/Doc/zh/render/index.vue | 5 +- web/src/pages/Doc/zh/search/index.md | 68 ++++++++++++++++++ web/src/pages/Doc/zh/search/index.vue | 74 ++++++++++++++++++++ web/src/pages/Doc/zh/utils/index.md | 6 ++ web/src/pages/Doc/zh/utils/index.vue | 5 ++ web/src/pages/Edit/components/Search.vue | 20 +++--- 38 files changed, 452 insertions(+), 57 deletions(-) create mode 100644 web/src/assets/avatar/仓鼠.jpg create mode 100644 web/src/pages/Doc/en/search/index.md create mode 100644 web/src/pages/Doc/en/search/index.vue create mode 100644 web/src/pages/Doc/zh/search/index.md create mode 100644 web/src/pages/Doc/zh/search/index.vue diff --git a/README.md b/README.md index 27232255..0255d124 100644 --- a/README.md +++ b/README.md @@ -144,4 +144,8 @@ const mindMap = new MindMap({ 水车 + + + 仓鼠 +

\ No newline at end of file diff --git a/simple-mind-map/package.json b/simple-mind-map/package.json index 007c8ee4..0ef87aee 100644 --- a/simple-mind-map/package.json +++ b/simple-mind-map/package.json @@ -1,6 +1,6 @@ { "name": "simple-mind-map", - "version": "0.6.8", + "version": "0.6.9", "description": "一个简单的web在线思维导图", "authors": [ { diff --git a/web/src/assets/avatar/仓鼠.jpg b/web/src/assets/avatar/仓鼠.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1eabba76031c1d974f4e3c0acbe8a3febfbc31fc GIT binary patch literal 39928 zcmbTe2V4`|_68a{BAo>3y(I{T5|koJFM$AQlz>VTNkF8l*eHS;0qH_Sgph=UrXUDd zjvyUDDFG2dkt$#ZL{afgK<_#C{_lP7-Z%V)8ImwFYwuOQ^{ut@bM)sVNEBh`Xb0lp z0D&BUAJETNAZOd-gdh+Ii3GtwAP_%@lS3TD1)OmJKcMpj5clRe2&4fVK_Jdz&fl+a zRTgvob@uj9dm(;X z{+lmWXMQ$=#Q3=?fgcVP5T_Uiml(&-HjpCl6g(W8+vdLkzc@I#xOsT___qmc2R=|Q z3Op_s7biCt4-fk`9H)WzLEK_I;>!A#yb>rsK9vZtK|*E;zp7PD3j{szLCw%VGI5)L z1sx715Tl}FVvij^5tno> zIpzF?i=?dVoZP%C`2}Q3DV0VqV=&8WZ`IY`ZfI<}^RTt8y`!_MyJv8SH9Yck^x4>} zsp*;7x%t-%iyuENudIGv`|@?2Ef)ufYfCKP_m*V;B9|B-7biD27dIbUE)LFPY{A92 zd6e~e#Vt{Mei0HX1_}INtIU#`mTjtr=noM8$N>RKHTWy_k8II4CHwCLOZ@*O**^sP zORnc2YmnULrY9$-XQQX5XX9f7Y(CLG>@7MqdUH$twJ|ogHug6DkL@RL5e^kKHDkE3 zFC6YWR~TP7_djnxCjhlH`#A;@b3hLh=QpZ1n`RC>cCplrtwut9WaN z27{`#?;Jk|*isk&(?sX}n%B*V{{6>)H`#a)6iU$I2>xr9xWT`rMYE-K+M2_^ z#^PTjW=}RS^NtpP+Wlj1qvVl5>{+w|bb^bmdmO(7`)`hj-}<&S2%7`I@pJIE;PC>$ zBLhc_c#)OBm6?=0~*aM&s4Q87d9>G?dP1X6g!@?e-HX85=Kr?^O?*C+w z>``RvHt6inA@*qa{zF3n3I5scf7}0mIQ}~=0iNt{)9hsNkOUA0s^{?oH9KN~n+o#PQ|>+I#EXL2i#6v1yQzwbjvav_g^aS{z!N zt_K*G-zLp|B?C|oz^QCa1^YA9V#{C7FS6WW^f|Ke(SStJl1`1CL3Vp~b@-yV|f3hGe60O7SnF$3G>1dibAJ2r?}5;`s0 zm6(AOsW_T8DbXE2GA53@G#f_zkQw1MdzTf2LFY@B0q2_8XtO+cPl0}kz8y4}DV1Le zUew}f-1u8|NRXEcVXB{jxY7Pe^%An*w5O8nBH0GnDLjYUFxB;b0xabJPD8M$+Qh*2N1jaHUdDCs7-8cugUSJ2hgo}VW zat=5GHl?nkz7+!g#qIrNc)vr$ruTCY`8l#Vf|6VFz>ZXy|Hec8%>(EC6>m4EVN(m) z9t#=_O#0wdK1gor_FF%k&&VH$2STmW!4Q;&U4_9P;Mo|JTD8NPYOIUO?Oy6lJz}I@ zn60zVttd2v8%>-HYS74rs8-8l2wW1hfKKABp7hcc-jVz+8tKG$H~bZU0f`fyRsc%@CiX=e;gxRe>wz)4XDDd8VU!dTdgP@%b_M=M>{<^tXBkNi z-UawrTcJ(&0gML-4QTwPK>%~M&Gzq8wHbSVJD)8@{H>7x`3RWRrd#Iv`IJ40zTmn| zB=!F_iNJFVvOoAYxUr@Fd2B3Z!K1?l40Y(KctI2?9Nb9fB1E{fn-P|hEG~SsgMKLm zw<$?ax)+LpnpBD#QYEtS_QZ5;2Z}e;$2S~C4V@I?dNpO*+&QB%I6@t_2F3I*h z50GYZa&>oCNZyp5<@#c;x!^H1WEZ7xLkX`>P^qyy%MQn{SS z1fqYea!jWR!$+l2U|LnB&U2nr8u4($s8X1Csa)$(nO&>CJiS&U`PGqH!ISGxk%gqd z3t76)cx}xjWU9g?NThhs%aUC!dxJOZYs15Q!jG(wa`B49Os zY!e0NZ2iH>et~U_Y=p7h(N>3Tyqm!CuUP#TIQrXb>OhF>p9d!XpOMl(yyO4%X@LJi zfS`n5lgM^rz|EO=WSuCMBDWtGqE(2lp#07*e)Hl5Z=9P|4F8! zs3%yY*TCF1hBa7{BBC_ZSQ*jNC*3kdGsyOC*yXsp_nw|qrQ_QJTO1(Qf^5@xqRq?=g(# zcDusa`$S^jtzdfw04CEoDVd*1c}(YLp*Y+9nP_+GX(_H3Rak+&zUDlx*5F+NTJ&tR zXWd`~QU{fd%@og=Vm)My4@F@!voqcdd#5Ljldc;b2{ob2Ne_j+%}&{ZZKr@CV_ zgh#0&Qpj(@8!nVPD`NdaJA4`GTbV4I5lo!LT-W|&LPF%(1do@-K%^_vXV}(kp$?3$ zAP|6{f&hSLkNID5cFS1 zEf@?q>VJTL5T1Qm00US63Ree04*+@JAm-li`)uSH|R|j_5$|IxyfLSG~ZHSTb z-k?1+C*-!@)&rH_h~|qcRjceIljw8hJTL1NSg#_9$;NJbv7xO74bl}!#!{AcY*THCtqH-Rz2Om?|MC#YqjwCI?rc z9%;s!@6ez|4V)(Q>>?3`+G^gTq5>-`9e8=6EEGBzh)i5kot%uz1&eKuLG6|zJ|mfU zxncQ%yY3+3^JVC==_RiU48%p%R)n^5DIiJyGyaitJ{=d=%2jGNl>UD0)>;TQ4 zdiKtKm6MHQwmbn4c>gP#M*}d3Z!<~A%inanTWRpWbKYAHn}-Tul+9WGr9f;w0qh+N zssrw+W6bHohjGN4hWb0D-h5?uR>nDav>_G$JmI^26*}{ggnL<}3#d@d8r1 z@3p;aY7~k!us(c0Rk=yKP#|1NigEGLNr8xPZ8O;kpR80C??J@j{Jyml>u1x<_)K+z z@*jg3yLu-a6s!Ko{4u9-XY@BZZ=}jOt2=GPFRz`qUh;C$JY;%BYru)5t?E~YVX!CL z4k~yA-1sYh`h`R{f%j(42q4p6ngRWV#(%qjU-`p7p(_9;XD9->(LykV@k^iny#fGU zuvu#hA8g%=@XOrUsMSITh)3I<0Q}buxnI^f+kD6zf77Cy^G@>q444R_00OocCkMf- zwAzD0?Qds8c4@WiH3@6AJKerY@{8Pq9=bqn2l>=$_A14>mx`8Z)V_J}^b91{oqIC2 zN~Jmqmz!cJ9)+Y*>T4cOv@^MQAi{*6)QRI@{ToUzTsezWHJMC^1=E5NI->vQjFYJR ziFH;p$_W#N%@QYjgQ+Y#GMK7N3?hu9B{~tMl3n;xrW|A1NX%~uuPUufwA27sM-;6J zze1{Eh?CT5Mn_?>XTwpGrMKw0(y^v4@S7pT!@}x!?bJSvV0w`5v|CR_?v)Y@8oPsU z+n0V)T6Y82;8n8dd7qo}BNiTKec9YZ873Q7-2Q^jSlO6%`m10^psDz~@^a4($zHME;Tj?4LFC_ZHN(Z(Ki$-35qB8{n4%$18n`4{{ayjm@@P)m2%PX(Wn&Qyo4X%hnKRX_wj4LP< z=jF3_^htq)IqVX)XwlBhUwSVq#~VK96yO?}PN#%0o-#R^I`>)EPv0ih-Z^!!J^RZ* za8*ZPQQMI-Np#o2l912)qGkHMwRTWglo!eawsHe+_BtNZPn+qau#OxHHxv8fzLr&# z%gx9vITc-w*?%$mB?k1O@5kcNv3DYNMsR~|UIjU4aK52^m;g7!Qw#SOPJKOJb+9K@ z;zfynQ|I6n6Q2v!x-;^GsSj(kBlms~#lfrKuWbvI!HFAjSKjhZESdSog1=DgGPEU< zkdC4Y6`q6QWdSZPi*i2Syd>?j5rce7b!{AWqz6v>KaRq^i{rpOqhI*WN?-I>KTCnf(B5UevjNY^dN>OT2BvNS0?mGq$5A_&*_oG-27=9``OMC zdXht-K3Foi687=1+%m??+m`bXUvJ#?1)TDAzn0g;DPxbGm80`M%g(QpyeX^dh9*l$ z9WT$Z=|`CDmv0P~9)^g;z9Cj>XTM(oPfUg%FQ;9OOU~~%VwTQLXZNXPwnko61N{gw z>^-#L;?<|pYkkzFNzv)6ZVd|Fc+Nyujb_}B{IQ8trL zfYqfIZ$>M?H*IFsn-J(Xf3oSh{?bXd`T;(0_&@3GR!*{+m#FKoqwnAG5Svm1T;K2X zcRK>A1s2Q{mQsvcv>Y$KjF{D?*Ps3X{mjS=zQR`A9D%HJoSSD1o8#1WN0Kv!b0?b7 zsZnGLFB+z*MhUE%;NovXd+xnE`jA}uB~820G8&b@+9ngI7JYafQC(HyYA!(nt3)LKoH=C5)GB;UmszDLV7ce zAU=92nT0^bYAAoDNcK zcUzc*JfQ_2P1VZ1uzl?6IHmk~mT24zYp=CL%OdjNHyf_B)@1tE4?I$;@5t7My+TjE zDUp*)VG($`r*OEvF=T(DB--^uwuN*)Q)LdjPCCP)AgU^>!y?>AZY29YZs?vQ+nhoJ(uBoCY)2 zN!wi;*CU(c7kAE)kV0nWLXC6cO2iP!MHg6F-Bq6(RX%%Gt50alJB}MKIUhzLGe5TD z4znYR8i9{^;l2$%A88%bqn6BUnkyhXv&JjL&vzQdO1H==(t?5tWx+%0ZDA#cZ+`tK zlC#<#=z#<$u-d+-Ox+Cg)kC;_GLtDa^St2*BxmO+00~W{QR%->_GW#66AdIyoPV*y z|2K7u|2e`|)V~p#n|unpkg=)AzY=Kn)&50K0ob^CD>emI2S9W|ls7)G!2QDKxfM{s0#_F}a6m5b`=?JQMG!Wr*>jFhZ>}&O@yzshIeFJwKwtRZK=c-URsCw;dz$C4 z^c3)qAAi&&vjv(px__RM~w+b(i+iyS`lk`@|}z+evd=SeHTDTXhu7 zUdD%CHp=benprKKS%u%_i$f-XeYnzlgTH>$FZJ)2NEg}xT2_?NAv8S zJ6Ej&gT6^7a}$gme*u46A;sX+$Z7C%K-wW4 z8Pvg`e8;yg+n3PK5X#pPCS@Ehw20B5A-k7xr**W`TXzZUBAo`gaUnie-1N>$ZHt|v zByayyJ7UMS%W>S#F3FeHD5d99oa}8Ln`o|7Cu0S#<3oy#KNkxh?mjgsa5P)PFsU!v zO04shOK|gn9G=I%=}puzp4n0_cD zPG-QY@DsIvLDZqq{3K2ZZS;h)QBb!yk&j?n>zDVg@{Z2cu-m9wFY{;nV*p zxX7VFceVUnMq`y ztWvozp)ce8S;c6sy+6(#S7f=L4ml_?0bMc5#Y@#_QL+-PNLqAGwpP{U08}5qWo%Xk zB-9QyRWR})f;Rq@VVw0OJfF~C~UIBoRg__Ss?@^U=C#f{qk)j0UFhl^{Y!d(+Id3XWSNq;rjs9GV|3!o|ShJyNq!0Bs>nMP+CEd>qcvqS2)#%sd+K$Bo7c zRND`Ceb1{%f9^)6@XmF=-ghk;v){$p`Zf0jw=RG%Sp5kS=*+Tj40DxF_Plqs?50Io<;1AS7fy`9eSOj?}oku&- zl=UYz6cNDp^1i-L*BIf2SC#865OnFNMe6W5a_*5OM?X%QSbQ)iRg}l1;*~v^XYRTM zXu*;u4;8^%Xh5lf{zcF#mK%?ul=|g3l6TB2TOZW21TrEE^xoMHn<1>bW*k?oR}Vd?d_4p<=Uh15SUGaL5tWzLye{)Pwc6TUiE;&u<7ZO{ zK*y^We~~=_gLO*=BU4?c^1dhxAE9&J z%*h&$ZItG9Xt#W+k7E6Je5?i0z`TqS54^$+c zm{j&=MV_d>1Fvc_$c%h3I~^*K5fTY)S@P8DEJ7Yo)S9|$UX*gGqweu8k+@R$pV$L) zc^U?S4VGSOI}hb2^t;!%+v~W-*`N|5=W@sq(+Q|-OGhD%e3Q9!I+gQQ=zub)ECIpe zk~v4EC{c$Q0gs|EouZwH+nFSua48gt(0Z!ugOTAMQa@ng9FzSjxIKR5zAz9q!d=wY zjdLnB63TMpV56j1`Vg}Ygbh7I%!n}(!K@Zr2!k{2_(MN)rZg*^94JESff~W0W*8^A zNmQXwXZ$`q$S+yM&G;v1&#?5gm5Xo$YyBI#&n!E=XxOc05eess{=5g@)pQQlR+y;Lv-|N-C{ZX8AoAQ^VYC>@&N=bdY#ovK z7>Cs7pJ&}~5hs?y8bhO{6lvHh!F)Dls02_(|7;rw(?K)|G;od+_LvuzB z3Luwv4^qdGmdaDL*)rN>1aJ#>4Y-Ysdw=a*KL_W}^H!A#1ZF05F%l~33(UxfW`P{h z5c9xhrlhYnw)^JSPTpHc?<_Yv9&F_t9-ujyQh<5IvmN&)7kMl6=Dn7nBNaGiaIi4l z%PV3wmuq>7=>$*R8`U0AIjHrprjw@XsG6#;=3!bIaNzVdYGY6+bMj2R|Co0-^%+Nt zV*Ga^?at0@%04?^k@@|B{#q$*ZpE=x`!kE?uorh;*!z_K%nN@7`==w!7oM^fQoCj~ z<@GFAs?Xg-gX9#ZN*Wt>i0(O*;yAwT4FSrN?n27)q$b}+=$$QVsJF-SZxSiL$|J=* z#WDyyuem2v@Sa%zNFBb8)R=4iZKaav!$NF(2k*N*?63O6V;{amXWFs(O6oH?!Htcfs6CK~hmB0y9_s9_7)Y&UzOy|lX>%!c!$x6#eHbhy`y?)JcCEWE z8r<5<~KGMzf~kqt(fgpmPzePmE&xIjIgGG0DZ5qcsgpDWuqNL+3CM-;LE`km3}Bx^vp3d6j9bsP+Bq`s)5a1G3lbEti}Hob{W( zFUkeZS9u>I2v6ymVb%4QoNY8oK`{S6a~=wTtZd<=9FiY6#g0J5<_to?R(4QA8^#o; zp|Q89(vs)6Y6)Y(9uk~Fq$Z-~|KL{4KU>sM>E+;?|GYu@jyu-i1e$k4qD5gi*6q=4 z)LO>!57?T!ew^8rKaRiHcdw}uKYmBW!5z1~ zM8JSu;Vn$ksJ_qv%L&siSiyd>Ps(&d2M6@OV#=n#lak0;mWd)&4ubAuAy&f;l4rU^ z=Dq4^QlBOTOdn{jyJx7JxZh2xm3cZ;?d}%9rxg7J_11GO&+55wRg=_oQSp$@_Lk^#$CMOlTxNnm z@kQx(6A93DLho0GsYHGG34&$bi9(5Gx9jtnjGx4aXlm9Q&lLXgY6CvhIq?&u*;LG{ zH+?v4W3Hes^F3PlggoC_yq&+X{MlT6(c3J=-D<;!GqAfG6ud(Z-hVlEtL?FiLvbwJ zI_Qe@TzP3qh0|burJV(%tHK6*D43H89)v~ynJW!Wv5G(e1xy(~s#}W_@-^XMmH3{h zcB0jbXjStw3mdsPu!#ytWK!dkDQ$-WWH7-p?^evdhseWX_;9g14&U_p4$Bm%ysm{= zyTHeKU(33Hb5%%rXf+h3%8pXzrk~x9u5Y<36eL!X@maCT_wEk=x2%!e0fO<{1+U)x z8QiDQzMg3)K&K^=eit8pIeQwAAm}{*G+GsXKwCy~Y?x7->RvP2cdirS6pN>26bSQd z7l{ky@1A1p!w((*QaO*N*G9n9uz*TyZCb})^)5EY+>y4n+lU(PUt`(QRk1z1l{8|Y zUTS$olf?CA$p+aNl;zhR>?oJbJBhPPeqyBN(~YO-*&?gW(@*3iB{_PFkENKD8?@fU zHs%zdftqTsAG>z(s|W_Ld5&_f(C0FFdxvlF6h?Gj>^D>#8lzyGB6GqHUzN5wKz!?$ zI;jwWJ6Fqic$Z_fI@ziXl!tc72_{?g?oj{S=kXkxsHGbC8t=^eXp4yjS9mnlhRU#N^cc#Aff<-4M<@TlE zxoQrtJdi)YfC3FDUTe!2{Ee6Jn&}}|Suc$h==qT8`=9)_^S7lvGFf_>im9sSyExwK z)p~NR@{L%c*`VA!nb-Ty-IH|gv~p7p=X1A^iq)^aFW%pO6a6$IVd;8LyqOH3eVbV& z8>?_2%g}Dzfq_4u=cY;7^@izXALx$KYJ$RL-#?;~A4i`3aUd7U{c(NB^CyV&?DaTM zh+IbLCk8ds-)eraNRO9qFP-u7wvuYK1NV?v$~&)14eI6Q@0YyS@f2&FwrhN!xX2F+ z+OlqyzZHxGy>+OObmuDyL65mj%P%Qhm(3s5E0!^J{Ua57h!`y8DCLLffo7l&F}#RN zf7Dy_m<@@!ky3|KxCTp9vUNoD-dmL2WOVvqF6giB(YYPCcNJ7N&#h>USKSqAhj4CM z!&i4%PSMZE9&3b8HSNI^z^{?K3A=`Cn@S%+($drY8P@1?M#h&13$5&Sn^4-L1h*wL zrSsSfro4*7qPqrHC*yFD4i$)wFl4rwAkKupeNR0uw!5Uu;Sd<*mB+3sZ>HtH2_JMn zFR|AxY-Y&8LrHoG)6w?PT}D*0*fOQO{$l6@nN;j|f$FLRyA9%yT5i0`ElvD`Mx0j- zNuky5G`Orv-9K0z%sLeuOgrcVbIu*m_1ihU{?^huoD$%jrP&fc_Yd> zQVF=iV@Rkk_+nsNsyl8-P|p2QszC1*-m5Z(!DWr0A#GkyHuhs9s?8*QciqTD80K5q z*WnIVL`8sDqEOrX8Ciu~Grc|J$%>DL^lhWbEfB=Y#sXhc1-b|HD7t(faU!!pJKggA z`?nql-8F&qp4OEws2PIVf~h*l?$tJ}%5>kAK0R2SMk z(0XT2I|6^MZ(A^%Ih+OgBb^#sezGM0Z6PG$yTw_3e0hln@dM1^@yN3NWBu#I3#`|e zgiN`!hr=8K&rCn4DUY(Bb-+e1iqs!Dket3NgJV=|>HR9CDE5gc7vtNXO)FKU+KWNM z=W4I^yv)pq7`$fm?$vEwL)N#GIA6i=nbo+&?8N&W)P8_D!Hb*QA$?N)%a!Mi4EP89-1 zNt!2zwp|q!D9~>^jz6PCV`?D~F<=ha(?cspk6sFTxF7lBmCXp$%FX@4vNu9l;a{UEw#Ln1VknoX>n2tH^a z-CiLVN>?OuTeV#$_Oha8ZXCTzBL>Ky#h0A9Th+ayG$i&UPgO}l1fQOJXAljSys_~4 z<9N@2V+VF}UFJ#EX=%eq?{DR2@!Z{&+w6~fe~H|uiVr+Y3v5;SL8B^myuC~h31HA2 zx9eE-zy=g@I`F|+NmaN*?L-5v!SX$aZ_?o?6^h?uVk?x7x7ZKEDh5vvW?(K%)!T)# zj@~I7#eU26_@jB1;kr)!35s^dwRUCIGL;mD(W9i3SNFy=&NMQp_Zm_IMPDMCDK$;^ z)3(KIlk?wqyu5wn>L8x9bl z{QEna%-dUECI)iH$Fv6*8&~<-TvYQ*#VN1d!Zy> z%CX2)a$`*$vD?@$0XuP39@dLW#ZWCI>(#o{=E;at*W*enrPeTt^_FqaIDBw^2FkXYu_*B^kFIux~s0}+M4QJ z6;J2Dco#j_s(=psjm%q!Jo zL}3nd-nnthJLTogpj)fj$J=-V-Ds}H@3hd{rFOF7Z(S?jwwHAx^5!_BEpDpr?OPd< z7l+l-b0wI8J^_(ZZxSq?6lOoU$xu80Xhx1S%>6@z=6+r7=}zM9zCs9zJ4~8!URVfW zI+folL|U>p(@luyt8ylJPGb1f+;i*fQ#yEv&&akHl(#)LslW~-G}9{I1)IS!gkTO9 zCdw|DV;Jb2dQ{)O5ALR_voiAJ-DtpzOnB?{7rPaPE1XZur4J)u)8o<9{k`k=L!xG^RqRCazaQ?$DxifOi*N7s?9k#oo~~{q_g1kgn$WZC z>AvgDlSb0(+;C`C#}wJti4>+Kw(TG>VaO<)DMV*Y=447ciYD6Cn7F?i}yl9%w)CALa3Y;r&%s?TI8&j$JzdN-2ez)10 z3(Fc&()GQfKg*i`3nWt`5zjwutjHvhge#wYE<;Xs26Q54BbmD zM=AtvW^rIR3r@T6*cxV0vHmDhqL+c5w%rPZR5fzdX@t~P{Hu|Zuvy>%T5|ye3{<+M z+k>C`g!1fZl{Wv_bXM&7k{9bf6wX_B<4napy_k(p@%Eo8zZZB%6|TWYXO2IQ6fa|8 zlT$0bCsxr(7~eNS&FTr$$1v-i01EI_7rETK7wr;DmkI{eap%I?L(xg}&KFbD=q@ za_K2Ke(ACe2=IB?vyTa*Ez)x2XVSM^Ms(&Qu2y4n&!S2QRS3$DD3%&9ywG|FN- z*?BOCj0BnOtp{JI6_nZES`WX;r4esHvrD@xd7@ZE_^?azL=l zx_(pfpD%dq9Oboa4x7NIBr@TML9wFT+I&<3mcqf~C9IE^dz-gg#&8MOAg~*A^WrBc zm%#ZL+0Hmnt&s6#s)8khO9T-fF)Cv#7~*8VB(s6NbclF8Rv#0#KG1k_ki#apQ~+2C z5Ok)l0RFJG#=%yvQK2pj%o9(tf<`SkAPwv?$z>6uEk?2VCnj@PbTPpAfgKTWcZ^yz6mctOWz3Cg6` z97Ec9p1~O<(YI2V3La0MUTmpKP;@Olq&+kjIGudB@6#ycmOoap$tj&HE zizs>8|9M@3^%JB!;@bG;{6LER9E<^>9g(@vmOlf~0R?8-Y1$cA?c`v1v%RMC1FkZ&l>v2VLo<6hk6U5~qT#?(OVLm#7Z?oTdmcupBL)NP4u`5-RV)r*JUa4;LPZfL2Gdz`hHRH)9>VX^qGx%hvrecDeTd)qXzhD!jp6Sb0MQm-N|rY2 zc#hufWUbd(Yjyp~V3k_nczNc-w3i7Bm`Q_Bzm>f?oCYeIvT@gs9<4gMZTzBLM|n|e zm6`DpDwT)hI89--LV0`l%mA4X`T=^kruqAVPszqgAjXhnMex~a7O{?M9NNakppH*8 zuA{A~gYN+34?3~gKcoutJOgEw1PnPkB;{S(XiIpc8@Y~q`K2F z8DPO36zCj}aNJrq@T;!Hc|%R0KP?Jd`fd2Mu$GO()kjkmK%;bHC4c$yWEFAb9Hls) zgwZ96o*P1lVPf|uJl80&g$M#Qs(&qVb+)uyVCSknGrAyknW~WEv_05(j1Sh6Kgt=t z?gxZKpa93N-2PJ&F}r1allTPKN`P0cLpcOgphuGgzD3~PzIhSmf;%1Ybire~UUWW0 z;yV6eWo{(_+!;U$gE@0Gt1dWq8ub!)k9-OvIyxIeC$Vw+^5gg}N`KPibpNLI}~)Us9Pv(F!&micNtO z?Wy<4+Y={{WtN{EPhIwO*)ck(`<#4!4z1D=_aj*BHnyf4|9FQ|cZMFlx>LnuV(qfu z7)3wg&@S>HNk!LQYYvjPaTV3QjC&p0C#=bNwP-G5xtlI-O1_%w_wCkDg5%wrbO|!D zSugnGTp z-|ocZ9(a`L61!6$=U+jDvCg%q_L)#1rW|Nd{;DIz)dAhon08BiB%^X|$*Wtk0JxN! z+uuT1{LjIju67$&BjIJoM)Gi%yAE?IvmCw$L#9lr8c8#WyJ!(Glir zxx7R$O7s&epFhYu{+_jdl4A+iMRgx*CLP&kSep9%-iOoX&vXb(p1U|iriP*hhL z%OI;%>G0D9qDU{F)^& zV3yTfQr?$4Rp$u8N#8_@TiFJM4#B!EtCYly5oLBB0;5?8Dx`dYG#I`wQ$v}dKo7u; z4q1YCW#wg6_Op=;XZi}J{}7YE_C8G7m3X}#7nMi7Xp@O6j==ddFC&7T>(boKaQsD8 zCz2rjMTtsb`kFhO)DP)(c%v3vKGeIOK z-04qA8E~@IzsRnm|2C`N{a+mH{NJDbH3&L7>N;Gy`1J=Zj9 zcD|E*vA@@VzonD-k`zprPD}F83Hc1a=*a~4^E!OrD9R<;Ijpam^F=ue#Lli4xoBTM z6y=ngFVV&5>rb~!OK9FB=5ae=xxv!2b6)+{Q}S5W+;~Ax2gM=%Zq6KI+`)^act^;6 zw0TB+Z_Wl*aE3gLaU4$%$>=(JeyGY$DxH9MfaYH(9SU{~h;lG#J-ct?zR8)G=EZ$i zXxMH(CD!ZN$Mz!Me}dLmhHeV&6fsgbNvcu#niLoFZeNvqALf|a{SbXC`>4Tsaf?>f z)#}r-AzXNYZ%D~I@^AW7qMTJq94+Nm&C3Hk>p~>;1~F;7s5Q|0gkUNsn%(p9^$pCz zie)`=jZ6(1&~RLGnLr%|H@(G0?%cPxZhY=4S*sC1976yug+GL{a(t{XNYjjwi&_1x z&h2}z+CFU6cO;#llRY@{sqK46N0dwICJ92|G|{)C3xlb11r{sCB@qZiG9Uho8BWFX z%`pfpb;w?Y>g;|YWsg9HFDW&g=mss_WsGUp3jnVNUK**m^(pQnCJSU_c{R)RKuWb% zfdOsWU++(P?c(h8q2bd!7}{;mY&kW^H1XdV#S0Xg<Q+$b#l@y2cZCWv6)%7Ymo7U}7BQYq zLhA!xmf$4S-DitwGwu_V2A1MlKQ%h^78!RT3nQKWX`=sY82bI`5CU~oH zdppH2CiMIEyFs%!NOIBJ3sx}szC$4@f6EA<99wG@e4XTxZkqU-v268JBd!?cSVd8t zaxo<0gg*V`(@ystIcc?kr;6Rs3@w%p|c5<#-GC{BA0*Vnp5ZZrN|Id@LnAym;yf5V7C*Y-?P zd#(7vNV|RR)WX`G%%yiQNs{eMy16}kCgX(@Ej7der-q|&9t(_*X!^TouSk5Y|8x7NVA+Wqjd7gq1M?XC6LzM!Q)RS7R|InX`}wZ*zMeMCtQ;q&&1ay4+@$ zgIze$a%ddGr&44LvC&_VhbnK{XR>K7ywCw>r8C-3<~oI62xs-Js3x< zCyvn}Ss`2>8V=PrFmVOY$j&lN2m}sy+JUc)!+CD3;@>*t*$J7&*b&Z+kSx4JoHM_a zze-c~CoBh>@w=R$57=6=3EoXKU<*cbZLL@EH8&m394x)ge&N<5x5o&0P($F$qH*_A|C zwmN0b9)Z~NQL8OUXwmFPFt^O0!8>b9I~P4574it|ZY&uU6d*K4G}ES-MM#@0sKKX+ z!|$;VedAmZ8lwDyXiuW;b-e)i24pvVbC)mvs%T53H$w zhM#kI(rJ*t!qm^19b=%>S$?QzeDrOM-#7Usmtfy0?2)do}f_K=}%5?Te=dU$tz zt*H#@wq8aDW6_Qt4-obiNWl)nq_q=2i1rPSj{0!#dop-Uj$`lP8CKiJE@Si4w_$d`lHgLKhLWOEYl9Uy#rh?gKxYYFIlfOzt_TL1oM9!$CPzkOcitE& zoi3pQZ9H5cSWJ{uX_lNM)SE(y&aQb1)ara!j1I1ST{Kq{nLuQKm|D~11&o=1l-;O&Syq_*(rG)|e zsJY%^Wl&D?b`_7rynCxFL>1J9fFdTB`!tAAuQd;Vgz(#S6YBun0W!*W8_vcDwJSKa zn`U}+b6nl$UE*KcAF-+CQzH1*XZMu)_CTIcS~g2iS*FEzvw~i`jXl}ypi%yi9(i`T zo@uYAwiMwZ0V}L>@zZJkbMlW4?Z;AbgzAB@7dsUrA7rdY%nbioUZO;wI|sF@v~?8A zHW#@mm2xdV{gqMa>;2AG21->u*S*=@?w-E*WBcc^^~uA<4cXWv zJ_%MV(k~aeaVUW7CsNE9f?zWEg85d~7oo-0aWoX2^(L~COK2}|LhN&ZF1N3>ACn3H zpv3vXxUF>?D#=Fun+3f2kIS>=f6Nmx&}6R_aywy_GZJqhpiybsxFibpBwYOe%nfhU z90scR{b)&KNvCRmdtvQc;(YB+c8#f^LXC1M0I{Sec;Z&)-*dIwjl~SJ-ky{X`2cU_ zKs7kg;l>(_>uUE^yaH{2!S*nqHzqD9GWmrzMk%rLk?u2?vZc1GXHiZ*$>8hL`RRf7 z`>I85Q`yi6v=ukrM$>fk3shmg^X5ft$9?PWWB7%ebOql)MOeP@8KRt{g7v+% z97FCV6fW48p^up87@v53WNY{vSMVRzna-h|aO<462dxP!D-ne}Xa@rUeSy+zKYEL- z(IZi^X2%Mr!%w+DWU9kYn{I)b*E0;jeh-o7OH__lF$Xy2;4Rn`nEnp>3VwY&$Xg<8 zn|>VW9vc6B8SFPKvAQxi-+}2tA0vbhVXyvyR6a$*8V~2Y)rCN*g{k}k!4j>~yg@(1 zq+m)kC(oLksV?N?T^?;+t`F2tqeb_IMDo=cwPXfrI^a>_>Le%(>#20W%vX4 zEr}x>$ao0!f_z*DT;**J&LZbrE5|IEWQS=qPR8WFMX+?X>0G2;+0~Qa+!f7f2D9Rt zHQ;wd@x-SU<6iXO^01V)6V$bW>sBmQd01rt+Qjr~!%VGAmu5z+hU&!7SHyBFI^m)(EZLqjzEi0| zztlj^ue!6mw+hMNyerDoW>cYNC9L}o_OopY(nnT#mwYGc-?2}s+WVtTn&s^ni2e-& zSCq)#c{(PVDI3hX8`{;LPY8QusOhIiP*vA6n`-w(nb?}o^15i2)adIYb%$8_6N-TRQwTQeIzV)&`UP`(4S_WU~;Y1q>~s9ShIK^szKJNSji zqD8_=7$>KAbMj{zhr2^l&c&Voy8yB65j)%>%5H_&)D|a`-F$moTy^LIuoykS9FqX* zvN~ti%*02l7+R45Ryw(L>@Mt`*6f3BvXH%*}h1% z_gd$tcwx5%^hR-F0%VcM*RTtuVP84z%4M_U^ogfj6X+5!Oa#+&>%J2GdVi~N9c7)nP zWH6mWsuc~-sNz5O{v7|$l?kPJRYi0L0%b{Y4cFUE{%KVZ*{S6JOtk$C>7*c(@}KWc z2~1J3b@bk(0{KqDEBXTUxROo-;2X}W1(UFS@Q$Rd_kl~0{^k(K6F>}?U=WB5L3}_r zCpYoI{H219s5>CHU9=~o-uEJHupwWaE`<8|qg?cPS96K#)@nMv!S2Ge@EhZ|`7GC9 zJzizlx18Dph}_4&wmU!?hHMVsXK8bHsysI#Dd*(u9ki)d#!8rC8e7~3w!X>I%BI5K;=trS$SGY^ zidKhLp@>7{-vW(OX%k&q&c^5D_lRCDLwx~Bl{#iA zsh)V8D$U~M`R@H_QI2IoefrKp+5`0mGoM`cJ}3Cw4-0RPdjESb+3S4yPta6*IXi)h zo_=m*HYWFf@Im*$>EQ)%-OCCc$7IRJ{0NmWy;EEJy%e@9yd8}jD3rD^JZr5M0&5Yl_SEmE$mgw&`WUFO8za zn=KPH0VsI%N8fZ_?|c{16lj|2uDJ;Bh0}?Q>R@xJ?J}dfsxav^EkTz9(KPkJP#uH4 zO|1l?NP(!l6@0agajDI+<4a3X+3*>1`YVqKYVm)VG8?bGeT0b@|HzeWwWDuqu{FHP(7ih?=zUi)+Rth$Bh9V6W}O{`TrlyA}efu zrd*aTsO$t?w-|zMJ|X;vtT~mpDcJ>_jLoSX0Bm&gaE=UUc)^e)n2L=te@tm(>M8XN z=Fkgnz#43c;7n2XOKPnyj|D(P9DDf(ntcd_tp|(iLlE|K`UC}sp<664=At-0rDT7V zG;X;3%&X5rmz40V^>XqfL_t#O62hU_qIXUlKgukWUxuf@LDI(rS ze2CnyHK~Q>5EMz{p)W%0aL+K%Oh!|pyP0cSmFG|zCdEJy;<7|hZMC-?jT7e_E$Y@m z^{U!b7;FuF>Fcly@;MBtvBiL~^=J(G$j&zB#HinX4>4u`1f6WkoZ{gUfE`?2osj}x zjpJ4q4hx@Ob(jxyAuY)#Hc6>%In8@;^eB1ePFe8?l%Q$`I*afYzl=V?HNE20^8k*9 zB(k@eLzW8-neX%P(H=0C$rCN<8|;$@ZF5KVXpkp$Zye5vpQ zzY1Ba|Hu_G(narF+pT3S=funjgfj(u<^+#~1iHFdRZJtTUqIwT>NK`svmesxMAw>< zlna0|4mg@N1bRjctlfT9G~Y1wC98fvOi z(!VGW7{t|DZk&B#THO`_Zt`bB^>Si~xMz{2m85646xM{txsfv#vrWXT7r15)pyNXd z{`-K1Ynrl8>p}9**g+BOT$CwWp~7CEiKCgql1zt$e0DL7BrB`ehr7!rbmwcw9d^+& zMf{d_y-rihUw~pOde@}y^cpnHtBQ5QM(5C}HrOWR(jVPnjzQ-6dGze%!{}FsIq;1g5K?U6@2sat@t17!l2M^uW1f{{`)y({>s|vhg)=wJ|HZD<9d(6*P#3A z&U6V%Mn9;pPg+_6J{#Pm3-|CW<{$nIzKkzT=chFhu1qdQ%dZ-hF$%mm6AiBzS9KRR zXO~Ztw`BD|t()j!!x^o2L-(uPN*LXfRkp({p{GhTnTLjQjfOQ zT0B^hCJj$fNja*<9;}U>KEs|ZDn3xC87S6fSJ%4f&q$I`KUO@}cvrsRUDi0xSDs)g zSlu$9gA#0`P8ka@@pf1JS^8t14^TQXEf%}*%o=bOINljI-c8BMukzHv=i=_Q)g}uZ*kd^ag`OWE>jJN7AonxcU9>@VN1AJAN9iS zJv1h`jHvshc$t#_T3^{yH0+TmEYaLYBG=(=Y)+>2H84x6ST615LFKswlw445Vr@dS z!vH8P$17FLAlcU=ct_$p;*0fF|yd3a3yohg%V6Q`d2_7Ke6c}WJ=s5vq@^eVVc&3OLn-p_Yy ze|hyIV*>Z+;H*)je?rfi2v@TmgCAMaH6r1yQ%_q&{?!?PTbUFVnEK2Ht*%cAnh0e% z70GHRGt4v7q@mhg2fcXhL+-7*Ba(eewCw%;gJ-mSLFN<6UDuLT*`pxD897*Vt3>?L zsi+wFXFaRoFq`2gA)mC!{-w3!Pnj^}bxp`aKVpB}?x}p@HQhY$P3wl44ahd=wYAP% zT)_I&_|m=|@n89`tttEKuh{xVzWGCK{I0keGK5g%`T-m8@cwoR2p#(fuDrsiv5HJ=Pj#kBG zu`ed3WRo88Ums z$SH-|c_sYbXH4t`zENZNKYk8JQQPtR8wlXt*KGn^GV?oq;%kPV&~X~~`hvCpdA!=e zMJ0o;p_5k10uH^;{VuX;6_*D-e){^isxXPax#w`#5_XHnL>FF?!m%t6$D6Fr=QgqC z=y#Sv55CiXo!1c$n`t*KFqlkLY;dBz0Gt7JSr|((>zJ_NfH?lwZnachHLiK1x3DA# zs=bq|SRdir_qaEuhj|tuK^yrH7q8glTV=YB%o}$y{n6g{vLFC;_%4aU}o8PZ?oK84%e&(6G!jqe3I~!zi58a>bZPm(Qi_|v% z%?4LJ&xXiC?8#4x+;jif8OimTZKC#cSXftA<#{5EIr2^!rx;K>9FPNzA)wc1BYbEsKd#&PfqP=5HdiEyaa%tiW$z}u~T{M z)_f)8hn!kX4==bQeD=jY74(f{T(o|?c97N%Q;&~W0lc5I9ySC|*C2;70)I^x_-&_A zwd~JS6Fb7w+ff)^Bt5)zwmk(Q{6`L{<es}o|nmru|`Ld1;S3^8E}731Q$ELftP0`0~&e*PEMEztx& z52OHQ3FCQ>T=^=GQTMvIO`s4efkBNai$|||kOf{5>!chxc-Ht2CZ`eJV@W z*HhF*Ni8dnVlWw3Bic-FT+n@u+mGF=^1EDP)7+XWk74&dS9USA+3PI&gjM>XukaZs zr=B6d@QcTrQ-0j;j(eV_b#{~J{$+QOv(nxl*8&}l5EcQmj{foKe+yMN>-4#wh1;Be zAJiFriTUlQG;b-CMA(C^(S=s*gy_TJp36l_GT{N{;FiAqDFKMh<+Y{P5iPwA(?g!r zK8fqiiBQ6UK+hcZ9~q1j&VLWdvM{Mjz|pOiNg4~+u>ekP#j?+U(pmgS)|wJPdq^p& zk#XDnhgoxzS&m^bry$8jSjj}Mm=<;O0=wsY>{H#DS2y^*9nQ)I+xAm@zSW)e-dh7< z9o4BCcHY~hao$z2Bd0lCX^9YR`FJvLVr^a=F$wzf^M0XuNs#5^a#!VraM~a6eL>T9 zZd*Qzlq14-kSNE3)iKohN~RlLwI?31z$B!BS6&oRrGvO)U#MSRtpSIe-V^YR9$H) zlVEwDKvCRC!wf+NjZh)C!13`$Tr}fM6IBfGpYETl3coqYUkaCE9kL|tRGFxxo9Y(s zP+N=>>bG%B?&f0Pz}QsnJ$42s7PobVc$uQ2)M>msSAuM!s$q|1@&-c0;z=&5(yn@5 zpE)57IE@_VY$ZGBi`&ZyLA$6k;`=Ppb!V>Sl%bEPw{u{Fp8z@`w8#C@ZR^6(@Cp4z zTq}$(`m3DyEdR(`>*I(nT~w<8^rzNYgkH?>7TxcN)8n*yKQj+)m}Pq7?sa!(j@}A$$ll@~(p7PjfYf0lL4L{R{i^*~`e67asKj;#>HID_~Vmw{xo8qTIV3 z?u`1^ntBe#zTuhR7UO&R@*Z8<1J-d(Dk@{Tb^ohYqQ#ExNLo)l$pD7D5Q0i<78{I-Uj&t#g0W}7 zvCU#neZFS6uwO1d46C#kt>lJUwl3!7z%u2)dY(j2pQNb))0QIrt?7dLP8`D0V9Y*( z!-Mh1lru*7O)AE3{0zV`zM;q`aJbgc&#{qnRhl7_+Ytn2)R=4gW?72_xF@itiwW#9 zd197A2#=Jnv+OPS4u4Jb8FNiWXhKj#&*-F z1T-m87MI-K#k5uP8=H&|DIuOWL?Iz8*Iod-oU^EHUC#v*pye$g`r5_Vm!T@f0d7*3YmxLFFz3OwVPdh?L)^F5deVPFvcqYp;ggf+K3p zSJ!rcK4{w5XT~+MsYT7mI*w%}GFpv*mqI|xaB-M&mw^lFD&O>q{CWP7yN@C3+U67} zamC)__?8zczl9*CMK=r3H+z2UP;DvE5c5Z`Dz80WXV_q-$tPWn{2s3H9+!xLs zNz>*=xE}$$r>ueAwT>lKlGobVk)GdJ-*bUTFa>coWwnbj!^Hv^VASBaY}|z}M^L|Y zuwB_kXr~%v2ZlI7MQ>M-4?>pxd}9i^|6S*io4pNB=Q>_Z1rM6Zk9xvCW_*Qu$$adi7LN`ISe4GVsS#e9V54CH#T!3NtM035~@eZ zKyrvywYiX1R!NegKs-d$r)YwZq+%p-F}nm%s3z0!#^%Loq;KhkwSW;pkk2ULfID;c zGsaI03*s+mvd?S!mld9ea53#M3O->;=>zi-hA<&xzSZdtkcoakPT3s((Yo`1C&N%(Xmsv*b{Zn82SPZQ^lcX7}Q^%SZz`f)wP+B$iXIRd?*fPSK@xXL2vbb@TqN zkk2ZlXF)ebjuq3Mb%#a>j)^TcIGfc`i99;O)83Uai82{INOxhp2J27UqqevkXn>A+b^)r15q0ZcAF! zAO_-qPtLAsG9lU15oN^*AwPIoU=D5LF#$et5&AxT94nSiF6b<+a1^lZALoD%{Z* z(VxVTLX&!0f_P&|BBTLa6UOVd)5Y6ZWl~gKRz)i#zKV?$n z6FNtdc)X>cOrH+9LoPNQQQ&XGL3rhR=$eom)&$ywstMyD@9P0le{;)x#{l9clYKKQ zPRz@yM9Qf2APO_pgV?Sy;alm01B2>~C!9ev%~36QYUbE>8%0f|K;WlMRF(R-9XIet zAWRW7r$z3B&;2ku9!z^&YRQetHYN+A#9^kbDczkGJp}fHa=X8wHr5BUrWEcbX79|` zB4+_zQLiva_|)$XJ_Q76!pZB%E=&nRdR=v%dS$TWTv~QS)Lp(dGgD5k@tG*OVZo#i zWmY!G=?!!e=ty~^#)IDjblw}!y7!V=jmgf9e|Id zmd1XYJZVu9iV{;#nTGH19x?A)rrxceWh@0c9vc6&cGfL?)9>t?=NUyibY!wzssB#M z2da9-7tTZT3HAAsN&iwq*a}{?yc9CvN58MVw68!sogz&{9mCf?r1Kb9M~V&vnBY|5 zX@_u-pnFn-64o*CTdFx@p3_xIx8N{~iwW z?6Y>-yOuk96ULo!?RfKsuD3&b^`Y7N_}LSdyZI?6e~Fi0oVwKeWMSPiYyp7# z@iJC5j|*XiDYCbh$vQQN7OHH#4RY$F{Wf4Js!NO)g{CrvP!6OU&5c0QSNOLQbr-KH0q$l;cK7l_cq!J6|3H6S*$GP+%9w6(;gl1&15nEj_vRH$R3Ng!v zb0EBI4y;+Ggr%|qbMT&Fl_9>4(tXjps_2Dx;z6WOI~aaVlbe+q*b^}})=F3mG|cHq zJSJ+6FzWE*IU{9da$k@H#}m!DGt@bEkaH?ZJA>KuA)4YC2!Zvs_knCug%2sV@wTIO zCzbu4Ze`kj_4{Mg9s;53MRGhUq2&m%E#awR(?V)nH(b%Hp%Smu+mT(NNRF$lej_nn z_;ud9>~V-cxm^gZ@C{;Hliw%&V_}wU<5#?*&?H z7k=#(Q1tE7`qxP?D`r@m$9e?MGobu4IV&+ojgmQk^)PYTo&neE=bNaO^>3jNRp2p* z?eQd=qIli7ItGb-oN)(z%?pp&Ldj@()ED?W)S);ZR>3Zmz2kVuThQv>5aOg`#9aoR zC)0_iI%28f@i=xSIXy+zWz;SwaQUEO;$tlg1oC!wtZ<*T-CWW^?#jy*ws-Qh$k!h2rC zh6}rDaLr&QWkQavOv*c8#!TseeFNPd};`#OS&>C2D zOK^lH_wI+tPof3wJFNrSY#*OyBJ6|(L?7dquUZyH&0-M%Lm6n3)W1KM2$yJP57EXU zg^mH#(LPB)1~;}uY6+Nf;>Pe6R+({zK><|pCZJuX3~B4MaLpVa+pNf?6q2*15-M^- zp<9t}Ws2UXn;V!Ug*N0saKl8}2rn1-1%;>)S?dn zZ~)Sx^sx$?*>G43Xd`$_h0BwTDGz4|vqf)6;KzDmxI&4h2gr@27A+TTzCO7yG1j;W zC3ii62N~{YZf?+Iq%8;jc8qImk}0da+QUj2){o#7Q96RQmL+6Po?xz`?sFcGAJIrm zd=nBF+b_iVgD>o)b@bPteous}wl6ky0%owvGPo+$nSq}dsFY=MCY*K!1+HDwWOSCVD)k>2NVv#T)(+QY6*|ejC35*fJxL@&PhT=KnNI+2 zYF1crnT8p=%*OFH^?5%}IVX zY_Ba=1UOQD96I019_=}7>z{iW+c^-11aG0J`00uZs>@_sTY(E438%cVV`Q{>#EijD zRxg}rFSK;#nt&$K0((R-DunfYf~t{h;a1U@XJIJ#0x`lWTL6rwP4J~h$oo}p#CZQ! z;BP~Q>_xtv04U(AZ4DES-pEY=Qhc$l2?p6j%#ip$gAYt>L1DnFduAcd6l&*$LtMPt zE*9zH`@@ge$xe!EYERk8FmnUOnadvq-$IvG&{-uF)zwv5$u_pYFp0_lmmfpQf?`d3 zY%s2zxfA^CXX}}nQ-#&8K55-yvtM(}tkeDy}|Oignu!TFW2x zpqyqj$bqPb#K^JPhNIfu7;jB>ejv*I-}`s9Mte2Q(*^f)v01zD=FA=3^sAfnFg&49 zsi2L4QMI3E_ew()*%2U;LV!I1d3u55tWC6L;G^+d?Icc}E1J?k)9k38O$7~_PK@jl z;BeSjN3FI0$xNy;!1hzF1uP(}GUPd)4_37S;v~XB%YMNaYGEv=Sr%r8d;;{`ftiDD zV?Y2N?#YyxU8)}Z`N*m1u*^s=&d!>Rep?txoKyhotdgg1$h)j z?W!@b26vpYLD;LQ@{F}3dxo7WiF-Qz12l1YeCTA3Fg>6 z=I>e?zufpSCyXnw)U#q=v1v8sjUr(?fiDT9GtXG$$^hsUSCIrC=(xY?e%4I%b$T}W z*3jPL0cvDOaB@D9waBaM8)24ub9FRfC5)Zgl*N2EKN(_zz4Pu`NlkArsz_8g4 zi$X^93ZXJG9O{<#K19K6r|I|5P8aZ^FtQcNJX2nV*sj;^PIZc~4JfLbgj*#G8P~F` z-Jaj`QlptV4S&DuMpCz#Dx1hZa;D6gYqkwb)x_jSAU_2OsxJoGZ3=-o5L>;V%WMfH+}&7qUS#4Burvr^z+d$@NGQ;$DKeH6cxxb z9rqrP=mIUfjkr%V$ji=MK9qvEPR9gwn%V6ZD$6h05Jw=Viz9f%Ll4>ng0JP0og;7X zmaW9i*{+LBHr(2snR$H+%8mu@L=)@L+ixv*?aZ-uYvM4@jkiqqI%>oa^b^v;j?>m( z#3;70-@T;V%j%b4TFV1y_XF7@%lD^gj2bnl9h3A0Jn{_u(vp&2EyjZL+c@rZ1EjXX zn_Y&YMC`A+5yoFTseQit^|sl%isr?aASp-FMeav}^q4$(EpLT`84uwjK1*?+p^zhJ zZHFFWCTYOGiFV&MBoORAF1B}>19xjj7Y^@LS|%Rin7Iez?rJYk?Qe`dF<$kBn3@h1m%2NoH*Cg|H8vvt#w!}t)$oj z)MekTEHNw0o(i0`S;TBKrtslcw7sSx$N#X4Ph~{g^@A?}WA*Fo0FcDsZr3k6!w<4U z>-yZmXGf=Z5u48Z1my?P(_S`~uf3xcR$5thvDTr`nd_YqO5qBoT5DDpb>ByQV!Q9S zLEJ8~Tu|s2J*1n_8^F6m^6TF1&Ci_Nl{t|X0vS+k;IZ+}$T1!LWXm)RHLEoz4Yx4S zFN}@74_}>`5Cs7QB1jhQf8&LLpe+ka0B{Y2jG#dl5a3<}ykgh`Dc!)94SWH})CCsQ zJWybW0ZLDCvc+L5w!y5JGhQQh(xh*zvN(=b{-jrNF$W9AGAL5t%SRX-qK~4Zi2I# z-&sT5J@G`?aE7QrY;ob`?mkg==L_q)5e+VgNX!*4-ZU*T*rB#KU*r0#7E9D$@t(kZ zl{(*1aq6U%X8#wyW`|v`pnque8O;6BWd%_l+Hz&u%9M3KPa!wND)yD~KSY>qsA86R z1oK}Rd|#VE1D2oMz=aB4GV_N zI)kK!8K|I&dB0F4#p2dRzqpqG?E)U9mRJKIz8ABM*#AX$n0#yd@2%m+TL`F^16&7G z{C{*?>^!AG@(v8~$fD*N&rJ;ZT4!8y0`|s-*gCU^6x%GO#;Q>HDD4E!K!Kzz3AKCc zUsl>l2}i!9ut05=W%=PlmhIAXwGpF(l#(+QkNub4kVO`@cehrA0CEXEU`B2}Xi2RT zI(^|x(<WR;K=&Izt0*gKE`4E{gG_yPY?j%0`K9f|V9_3`UMyPlcsfalnV%4AE$ z0?6Fmy6Y^kulWp2Y6nh*0Is$)yka9zxQc6mIOG5F%r`KN3|MPFFraC@5j_ji1AGBl ziA59?M@jn66?KQ`Z3Jt*S=<$F+VRp0(uyZ*Ak+6Dg z$c;=%AT^c((~V;Sl!mNYt^^`3uvLLUSj)TZ$ty8uHB(eI6jXa3q*3e+C@S6{L{Bz< z4frUZ)LS8{qVNfZA|H$6mlCeb1fO~REc}M-z37CwWH@S;$}RS}&Hm*)5$CGD1$i%< zpy$0z`+Y`5NH{v~Uonph@P5B9@%+ui6jik2Xv9kHfz_4-A?t?Wd#q~Gon^S|r5t6x zHR#kX`WOlBov?EV%dre8d~n*J>AbAYSi7Qk<}6h|BDQi6p-~yKFny9P;{+Je*}2&g zxYaJX0H?+m`AHXS_aP zVfj3$+`D!e#F3&nU;tHF9*|s)`O8^WIci!OlNlwzqW$(`B%Q2)N>pX+^rY@sQ@}|I|aPNY@HM%44P}NzwpKTl98c^ESwnbM`Xsz;0(C47qWLCY7{Ar2xexgj|>c zrvvQeZOI$knGzLP(J%!usVitB8wtq1-9VWA?~DIQqoKg0dO$X=h0XS@02`JNvq8g| zRtB~*VCl*3b2$=do#G-O9^q74nZPMP2;p!P7|}%HV%82wTtzke0!U)xq9M;#p=7=F zliF&AzI?&9bDvmHG|&&@afhX9kmDxIY3imS%7Fp0c{TEQv$?^|n0~$=aGW6DE z7^SXkz-ZWdi*z@4WRBdO=Kt3Fn!}nfzkiJbb0;~KV(*g2uhv`bFq^7b0h}I3cd?R{ zx&yDG)2cPc)_6PFiQ`LH#jhhTBl4mxyuU6*5!?v zM0azsg zqD;1+^!STyRogWYE~Ip0~kjD_e!G@NSIaBsi zA9TV$Qv+?GU3f!I99XPT>H{S*09=4Fk zR@$Y4{pv9&W84;kxiW+2? zQj!G7sCfdP=1A;xm@*&?Yl8S{6ZKp|rgQpre6$+mL{EHwJTojCn7L35Mraxx=p!9@!)Ob}e3qx`I;Y&LR); znLFGEFg>TmHIDgL?wjraSN@B?GnzLE7CS-o5>4IBKpsncL->L3?5S@Duug6fjs->c z**I1hCigl~ zk(6>Lg+<1NQ9pS$c9+LO6XJB>Xplr%VXDn>AlGa+?OMp&LB2PBf*V(5wYIjyxc;#v7XdtDiOTNa}W8S_eYmIXc z0|jx{WrtQd4`aP0ZzLK$25ZfBYD<1jFDh~V>Hp0*9EV@T0-|*+{QciyCY&u4s#&+Y znXJ-$6;fcS=?r{)Tw7^|1HeafWWAS#DpokAj!3m_q$)5f+%Q0omsQ2 z(J&?W={2sz&}~fNVdoxCM{fz_?T#&-u!mSLar%`-#tokUk2KFyuUBqlO)iU^xO!1p( z(K0%2w^OAht6WyunK)u?+XHi0uIE!VQ1K_S)soge6Tn(~eOo0I#X+!o?;Eo&n zrWLXWnPndYXo4ZsEa0TYOYQdll;4-=B6}f+BK%csRh*G5&<}V9j~>hhQS7}9m()Ak z3~d$dRBIL1$D}1_*G--@hS_eP1>$?i=MheSv+^wb`J+Bd5dV_uCIbeDj&`~8CgdM` zkMn%Rs|^@euPQSN?B(fZe=q+RRhiU(h$X#%^@sD^;p|z#_R(IG>*KLijqkSH&k&6o z9Dm&YttWJ z$&~3H?rA##SLyaANZi+@#4~N;A66~!I<&ujU^e)T4$5CK7dK~sxfd{ysDvCJ2gt`2=|N80_oa= zEtzN#VeBH;MPYS~S1=U9dfsqo?JZU7wOt!1rbJ#Jka?DRO6T+6MX;tMRz$ix)=IHbvTICgZgBC8*jw_R@^?2{@%uowA_o`%o zzVKog5ysciR#?zU$ku?U6Q~#sEzlj8ktN(tlUK&qxAb`*)U5ra#s%$9Cy2E|GCT_f zub$*482|wg`#2|EE$aYO2Y1uJ;TxTB6)jB=&|3@$%!~%dSQufWfk8KmJwUia+^eYu zwH97F9~`&CtYxuY8kGBhTFX;BY)JhJ82q7lyPTOARG)7%q~RKv6WTDnfBIBBvy_z7 z9zAKB?Y;NwJsB&=SS3FC%%l!BJYKibWhMN=={$q2tqo>--xxKW7JkVdUV5E5p`faL ze2Xe)Q~2@BFR19U&fY+1!hsByZ6F;7Q1@aE9S_wNSg_!*zMus;5wou_WEGb1i`&XN%K8fD)3B2QH&+H%2BASN_K@4LOSsmo9rO*= z@f;N{{t%c6%2*<*x=4JQxn?WP~;b=CyLi!geh7e-B#Yr`<4f z9a;+2{nW3tdxq|MG3d#fp#pW*=PH?2WdfmfgpA!prAv{9FnhQ2}0pHv>tWyMmjz{e?jH#K4QE4vu`=mK&v~_X11&v8Rc3OoMlIISRLJl zg*2%+q}aZ|8s^&$s%c7G{6kJJO=WA0SV66-=@o%8PShQ<s zrd$%Kb}6tEjZ%TJIg$Nx8&i?PB( zB=f5F;_o1OxwrO?q)!YVkUX#)ZJC;+z)_MhwPlUL-WuP8(}qjS&b#(fbV2lnF(oe+ zajs#$5-4j=wHZo4FD@fDb!Yj$`(b-=j;0RMI=Q;C$_Kg<=f2WPd^t=V!14Fm+++|Y zb#!gBr&1k=(%)dfBB zFTz{P@6U_(x_vKyM}YX%X=PD|XNBq&R}Z}-e3PR;c=Yt{5+ABOe@wuQDB7viloYoe z8TK@kG~3jxw)AMWzPAKY+?reXgP1v?7fL27 za?myvE?z7xEwoFF0Rxh=@X1bHye4Xc%){n+#Gbs?8V0ruOu>z_fe7h3?qU|$F-W=x z3vxt*#w&rKL0hULPLWCcKy~4!YLHT?kJ}jDfOvaXwrcAp_S~SgPw{_@Itp0Yc+b4kox2Qv~=cC zO=s!Mv=6bfLgwM7Ms#ibk zGdnhcp#g6ovpf{s2swzRgWD!dN)J{D%Udex+a2Rix+mR;U|=EZ@*($-Up>N=JC79( z0~8#>>)sc5lzfwf{Q2A4-&bSz>BgH9Jw%EuqxhuL(Z6z*H)Laz=rdf&nf!AkWZlfM zSdGY`&hk-vZd=+O;12p_>pfxIMVl`qDPES?e{EUS$qMw$Kzn*j$#X*TjA4nDIfSsF ztSrU<^vB7vRjo99ZwgQa-2?&J_gq9kRy0skoy!(0tX-!*KjmAuGptubc}1of>6XI; z3&GyzEE&fVRhZY zoNj#+&YADch3|6(!dO(7QeO$GKIj$5TtJ`NCPk-3`3 zNdXFBra4~eED=CTz@-kQ^2QJ{KXbeSSqjy$K@#J3U|}9G$KH~w^%7FAa;|efp#B;< zKT0^b3zov&aI6!lg_BZW;wH!r)N(!uCQy47A?qA{#kP0a#hM!tlodMW+!AGqS^%D} z!_+5V<^y_o>hFjFyWqBM8m~~5TZuPSU5k;Jvk;jig)HfQoaEt`3Kwk+v2E&{An~m7 zEL&E&{hjs{cj8Irf}M;KZ5jg!nU?#(yx+8#oTI%ql;CBXnoag;xfKXYlQy|K9?Aiq z1mE`da)KZ}IK2{SExFJT5F4AL!hckpfbZ^YWD#D7Ml%GI$7kZ3Z2mflL7xjapCEU^ z6oeUw1y#NK7a8~=LV@~)y^X8Yjfl^9yV9=?{kG{rFX9U?5}vje`t`5vOJ;Lg!+tSL zJM^q08;^dQ%et|;G3I;kPI>#)GqT)kE?vwZ-Bh4Wvi#+PrLb&^5IQt^%W2|ry0`1b zs&R_CGMC|7#IBCVCnr5vY9D#*6DT|Q;L`0q6G88B8P5jub8ILkhj^ItEpu!N0EQj!HWmV~5ZM4#GoAeGv%Ml9j zruNC#cH!uQG1T6h1*-!=I)0aF+=&GZnx~iWn`RwizF!ExTZ54Z8NEmEMMt5pP61}3 zCQz*3-Hp61{tB=8q2l z98P=^HKN+!KqD%Es@o(Xo`Yo}P9k++$bjf(WSTo|XB9>*jn}wzI@(rWA2EhH*NYOL z$fEfJw$R85D-1(g6cIIUQFe+DpaT5aRB?p~G|}ImY%NG2`6{S&_P$22RK^BXBgSxz zm&Y~>b5FO)L>xq6GVrJec=#}Sn5wShWYH~_nPl2Z=p5Z*1kMPlnr27$2D()S-w7Y> z^g73fM#n*o$r|vnrgkfUu8(<@D2|}XQ|8$ff}U$6h=Z7Y3vX8V{b+;dPRG5x_4Ld2 z_03nV0+^DSf!7t5pEkVW^ClLUeDd%|ryJxsn^94KYw2gO8?u9qRmgtZ{}BIuEm8j2 zgyC{RNBbrzh6sH9JmHd^1m5oY+aCl+is}_X!oQ(kOT9%u0tV?Ch2eXUjn5D2QY|5 ziQ**7gj4Vzh%Q|vo&ov8z`(F@n{1m(1tf$r`$SHx(~puW{m=Q8k*dY|-q`*V#CO!k zb+{Z-Uz6TGGg{yq(+A}5?LfFMVnxjQ%X|d?A0!@HNP?ScHtS%*00cGC)*D!6+F$P`uA0 zQphTdL=P*L=t|H+fCC}|6UaMBeU9uyo`4}7t+|1w!ia3ED`9X(X#~#E5buOxPq@1& zJ>JcyYNb8Cc0~Tn+&mVkk{zl$j$|Fb!5y#2lcGON&-3hg|5cdf%d%=87Ta8>9vW^5 zymO`D!}$PCk;&In?+hDUgjcGW@ZPO((i-9G_pgN-*1`Q3Xe6BEFF>`lJ+@ZfHJZ`X zz)ro!4ozylSxacEXb_5_17U`oP!*Ou0xc@>SLx+C;!R{f1|@Gl^&LXLdVAfg>hT;! literal 0 HcmV?d00001 diff --git a/web/src/assets/icon-font/iconfont.css b/web/src/assets/icon-font/iconfont.css index d216721f..5721282a 100644 --- a/web/src/assets/icon-font/iconfont.css +++ b/web/src/assets/icon-font/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 2479351 */ - src: url('iconfont.woff2?t=1689407546912') format('woff2'), - url('iconfont.woff?t=1689407546912') format('woff'), - url('iconfont.ttf?t=1689407546912') format('truetype'); + src: url('iconfont.woff2?t=1690506335310') format('woff2'), + url('iconfont.woff?t=1690506335310') format('woff'), + url('iconfont.ttf?t=1690506335310') format('truetype'); } .iconfont { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.iconsousuo:before { + content: "\e693"; +} + .iconjiantouyou:before { content: "\e62d"; } diff --git a/web/src/assets/icon-font/iconfont.ttf b/web/src/assets/icon-font/iconfont.ttf index 9c801c08bc7ae1fd46538040cbd0d152164cb538..110b3d990e3597b23b0e77ab04904cd08068f103 100644 GIT binary patch delta 2041 zcmb7^`%hD69LAs1)1E>Bd&7bt1q-x=SwO@x6_E)tw~64!yr9_xZzMx8K@(?OYO>7i zC*tg8HscSAn#>rpG1(Xa<|T3d;O4SRrdej3S(+0ro1e~X~_r1RDld)g616iK|otJvIc5jIoSI+^sMdH0Y zk@<(?9>)`;tar!my{}!F{v9yVq_?ksbNBdrA3XqE1S31T_wF+G8w+_YpZ`mCcJJ8g zIngi#Y}yOhw(sg6$l2{2x^^4rxy4ER{LVz_(k>Xhmwf(lLFudRhQEgjH-F^%{n}X`Iw6$1W}Aeticl0pbc}d9IaT79L#1F zYtaBVp2k9W5JNdup%k6)ArDo^!~#5pY|MfK0n9)N!l=beG{cVwqNu=Pie)7)I_@Vo z*)tQ_N<2GV@Mv2P2nPxl2BE47mI$HJ3Kk17H7py#1}P{2#G#=S5KBW*AWjYCfn;bX z6eKgDc6@jdk8F#A>Op2`s3XL!p`s9vhT1~Z%LrA5_%zfT;@41lNI=6LK#DZ%1|+CK zVi^Y|8ny^BN5f`8)XWLn1_^7}KuA=>RzfN?Y$_zCQJ$1)4I2%ar(w$>wHh`bLe&#$ zM;}0zXy^z?qlVsqD2WMO0#RxZWnfVgCr~eM*3d!_H9G_B4NVRi(9rIXeHt1ca#+I%K$032X*r@{EFdQ|3<%^)4Wj}%r(tLy=QWHEByoW| z!X!by(lAqy%NnK&@|T7=gWS_FahRkU3T6+JO&X>UldM?5JYw>+hRMX_uNr0)sl}QE zEf(9kPoewmOKko3u3N8dl z(|8Il2}t|df9}B50cpBl!F2-ZH#J-_kbX-g+9?Yr9Ip&`09&}G7JeH@?v(IzX zbIV)iJ?Xve+u|Gaedl-iY=s zUF6$}j*8JrPh}4$ZLJDDOcSTQnwqC`aE;|y5+IF;b^QX*494SzA{!-66sXnPx9 zRT1_%ycRDuT3+MF)ve8sAAB-+*f|y&!|;b$Z>%x8lEI#{E@K0%f&M)Md-{jJ@A=ne Hvflpy<`d3h delta 1815 zcmb7^+fSTT6vfv!Gca5`FvA^&nR1x|rG+A5Tc?&*s`iH1QiOPE2(%CaLQ>MuYBEi& zeel63G$gIYn39;<2hx;A6UADMlEzC@6JvZJ%F|{_=K-5~i8kWe?Dz-xO@4FE_s!+( zv-VnN_B-d>Z=5&lV|PYweGj-&1;4&Wq6@8EDx_hjgUJwO`oac!u3Y{Yrl*}~5XcprYLd+12k zRP+jP_#EKs8yP;9Ir_qh+n)g44_L(Qw`R+?cfsLz$?nus^%5V_b$ioKe(TEzPqW~V{A`>B0ViR((6MjUn4prDnsgkEYPjX_c zJ%hkgukXA%0pXxX8_Y22oiFEeFwE z5SkC7G7;JkqLmXG5~6AlS`%`}ph+Pe2JH&b1qqD{dCs7PA z|Hxo|5ogs3lZ++yTVbZLL}?YK8%s9~<{Wp=8%#Xza$$wpM}ogscnTmvV=Ful5KC|o zg+~JtuNpigka*4Dae>5Hg9itG2Lok&K&}jcdO2MSQ1y@A`hs@@F+<#m2H`v!mIsWIymn{Qdrm z{#${9Kr}Fy(~`5C+nReJcOh?U-ei7D{&YcWVPoNF;fF<4MbkyU7l(^mix*1TN^X`U zf^ETzr7wmeq4{wA+Uc_PvhlL{^3L*m6{jn6DhDDPBPS!v>yB2%tJ|tCRsW^YTzSV0 a_j=9B%y`CdhtoCT>bdG*=6cWHu73fD3YA&_ diff --git a/web/src/assets/icon-font/iconfont.woff b/web/src/assets/icon-font/iconfont.woff index 4d4468568c68fa77ec8fabb2c3f94df69cef48e7..45de5a0f618a6a2e28e5bb43be732c2cddfecf9d 100644 GIT binary patch delta 15662 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 U`K59Vdh;_VmHq&%Dl4A=02$v-sQ>@~ delta 15554 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 Kz9LzYaRUGwSZT)q literal 14076 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 diff --git a/web/src/config/en.js b/web/src/config/en.js index 0c0bfbde..97aa75d4 100644 --- a/web/src/config/en.js +++ b/web/src/config/en.js @@ -271,6 +271,11 @@ export const shortcutKeyList = [ icon: 'iconzhengli', name: 'Arrange layout', value: 'Ctrl + L' + }, + { + icon: 'iconsousuo', + name: 'Search and Replace', + value: 'Ctrl + F' } ] }, diff --git a/web/src/config/zh.js b/web/src/config/zh.js index 57c6138c..6f8d0965 100644 --- a/web/src/config/zh.js +++ b/web/src/config/zh.js @@ -331,6 +331,11 @@ export const shortcutKeyList = [ icon: 'iconzhengli', name: '一键整理布局', value: 'Ctrl + L' + }, + { + icon: 'iconsousuo', + name: '搜索和替换', + value: 'Ctrl + F' } ] }, diff --git a/web/src/lang/en_us.js b/web/src/lang/en_us.js index 235ebd1d..a89f26ae 100644 --- a/web/src/lang/en_us.js +++ b/web/src/lang/en_us.js @@ -210,5 +210,12 @@ export default { mouseAction: { tip1: 'Current: Left click to drag the canvas, right click to box select nodes', tip2: 'Current: Left click to box select nodes, right click to drag the canvas', + }, + search: { + searchPlaceholder: 'Please enter the search content', + replacePlaceholder: 'Please enter replacement content', + replace: 'Replace', + replaceAll: 'Replace all', + cancel: 'Cancel' } } diff --git a/web/src/lang/zh_cn.js b/web/src/lang/zh_cn.js index c050b0f4..910dedfa 100644 --- a/web/src/lang/zh_cn.js +++ b/web/src/lang/zh_cn.js @@ -210,5 +210,12 @@ export default { mouseAction: { tip1: '当前:左键拖动画布,右键框选节点', tip2: '当前:左键框选节点,右键拖动画布', + }, + search: { + searchPlaceholder: '请输入查找内容', + replacePlaceholder: '请输入替换内容', + replace: '替换', + replaceAll: '全部替换', + cancel: '取消' } } diff --git a/web/src/pages/Doc/catalogList.js b/web/src/pages/Doc/catalogList.js index c48114f6..7aca8d52 100644 --- a/web/src/pages/Doc/catalogList.js +++ b/web/src/pages/Doc/catalogList.js @@ -32,6 +32,7 @@ let APIList = [ 'associativeLine', 'touchEvent', 'nodeImgAdjust', + 'search', 'xmind', 'markdown', 'utils' diff --git a/web/src/pages/Doc/en/changelog/index.md b/web/src/pages/Doc/en/changelog/index.md index 46429b41..f09ad06d 100644 --- a/web/src/pages/Doc/en/changelog/index.md +++ b/web/src/pages/Doc/en/changelog/index.md @@ -1,5 +1,13 @@ # Changelog +## 0.6.9 + +Fix: 1.Fixed an issue where setting styles to summary nodes would cause summary nodes to disappear. 2.Fixed the issue of node content not rendering when creating a root instance again when customizing node content. 3.Fix the issue of losing focus when adding a new node while the node is in editing. 2.Fix the issue of continuously pressing the tab key not being able to continuously create child nodes. + +New: 1.Replace existing ` ` in SVG when exporting Characters to avoid exporting SVG errors. 2.Support for search and replace. + +Demo: 1.When switching themes, it is supported to choose whether to overwrite the set basic style. + ## 0.6.8 Fix: 1.Change the shortcut key for inserting a summary to Ctrl+G to avoid conflicts with the save shortcut key. 2.Fix the issue of abnormal switching between rich text editing configuration input boxes while nodes are being edited. diff --git a/web/src/pages/Doc/en/changelog/index.vue b/web/src/pages/Doc/en/changelog/index.vue index 25fb9efb..00fd1d31 100644 --- a/web/src/pages/Doc/en/changelog/index.vue +++ b/web/src/pages/Doc/en/changelog/index.vue @@ -1,6 +1,10 @@ diff --git a/web/src/pages/Doc/en/render/index.md b/web/src/pages/Doc/en/render/index.md index 82f871cb..a76e1504 100644 --- a/web/src/pages/Doc/en/render/index.md +++ b/web/src/pages/Doc/en/render/index.md @@ -61,7 +61,9 @@ Delete a specific node Copy a node, the active node is the node to be operated on, if there are multiple active nodes, only the first node will be operated on -### setNodeDataRender(node, data) +### setNodeDataRender(node, data, notRender) + +- `notRender`: v0.6.9+, `Boolean`, Default is `false`, Do not trigger rendering. Set node `data`, i.e. the data in the data field, and will determine whether the node needs to be re-rendered based on whether the node size has changed, `data` diff --git a/web/src/pages/Doc/en/render/index.vue b/web/src/pages/Doc/en/render/index.vue index 34956eb1..2819d97d 100644 --- a/web/src/pages/Doc/en/render/index.vue +++ b/web/src/pages/Doc/en/render/index.vue @@ -37,7 +37,10 @@ disable the enter key and delete key related shortcuts to prevent conflicts

copyNode()

Copy a node, the active node is the node to be operated on, if there are multiple active nodes, only the first node will be operated on

-

setNodeDataRender(node, data)

+

setNodeDataRender(node, data, notRender)

+
    +
  • notRender: v0.6.9+, Boolean, Default is false, Do not trigger rendering.
  • +

Set node data, i.e. the data in the data field, and will determine whether the node needs to be re-rendered based on whether the node size has changed, data is an object, e.g. {text: 'I am new text'}

diff --git a/web/src/pages/Doc/en/search/index.md b/web/src/pages/Doc/en/search/index.md new file mode 100644 index 00000000..9bb87174 --- /dev/null +++ b/web/src/pages/Doc/en/search/index.md @@ -0,0 +1,68 @@ +# Search plugin + +> v0.6.9+ + +This plugin provides the ability to search and replace node content. + +## Register + +```js +import MindMap from 'simple-mind-map' +import Search from 'simple-mind-map/src/plugins/Search.js' +MindMap.usePlugin(Search) +``` + +After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.Search`. + +## Event + +### search_info_change + +You can listen to 'search_info_change' event to get the number of current search results and the index currently located. + +```js +mindMap.on('search_info_change', (data) => { + /* + data: { + currentIndex,// Index, from zero + total + } + */ +}) +``` + +## Method + +### search(searchText, callback) + +- `searchText`: Text to search for + +- `callback`: The callback function that completes this search will be triggered after jumping to the node + +Search for node content, which can be called repeatedly. Each call will search and locate to the next matching node. If the search text changes, it will be searched again. + +### endSearch() + +End search. + +### replace(replaceText) + +- `replaceText`: Text to be replaced + +To replace the content of the current node, call the 'search' method after calling it to replace the content of the currently located matching node. + +### replaceAll(replaceText) + +- `replaceText`: Text to be replaced + +Replace all matching node contents, and call it after calling the 'search' method. + +### getReplacedText(node, searchText, replaceText) + +- `node`: Node instance + +- `searchText`: Text to search for + +- `replaceText`: Text to be replaced + +Return the text content of the node after search and replacement. Note that the node content will not be actually changed, but is only used to calculate the content of a node after replacement. \ No newline at end of file diff --git a/web/src/pages/Doc/en/search/index.vue b/web/src/pages/Doc/en/search/index.vue new file mode 100644 index 00000000..600bcaf8 --- /dev/null +++ b/web/src/pages/Doc/en/search/index.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/web/src/pages/Doc/en/utils/index.md b/web/src/pages/Doc/en/utils/index.md index a2610595..80041030 100644 --- a/web/src/pages/Doc/en/utils/index.md +++ b/web/src/pages/Doc/en/utils/index.md @@ -196,6 +196,12 @@ Load image, return: } ``` +#### getType(data) + +> v0.6.9+ + +Get the type of a data, such as `Boolean`、`Array`. + ## Simulate CSS background in Canvas Import: diff --git a/web/src/pages/Doc/en/utils/index.vue b/web/src/pages/Doc/en/utils/index.vue index 8d53434b..d812e14f 100644 --- a/web/src/pages/Doc/en/utils/index.vue +++ b/web/src/pages/Doc/en/utils/index.vue @@ -134,6 +134,11 @@ and copying the data of the data object, example:

size// { width, height } width and height of image } +

getType(data)

+
+

v0.6.9+

+
+

Get the type of a data, such as BooleanArray.

Simulate CSS background in Canvas

Import:

import drawBackgroundImageToCanvas from 'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'
diff --git a/web/src/pages/Doc/routerList.js b/web/src/pages/Doc/routerList.js
index b2a0fcb4..dd4d9db7 100644
--- a/web/src/pages/Doc/routerList.js
+++ b/web/src/pages/Doc/routerList.js
@@ -49,6 +49,7 @@ export default [
       { path: 'client', title: '客户端' },
       { path: 'touchEvent', title: 'TouchEvent插件' },
       { path: 'nodeImgAdjust', title: 'NodeImgAdjust插件' },
+      { path: 'search', title: 'Search插件' },
       { path: 'help1', title: '概要/关联线' },
       { path: 'help2', title: '客户端' }
     ]
@@ -80,7 +81,8 @@ export default [
       { path: 'xmind', title: 'XMind parse' },
       { path: 'deploy', title: 'Deploy' },
       { path: 'touchEvent', title: 'TouchEvent plugin' },
-      { path: 'nodeImgAdjust', title: 'NodeImgAdjust plugin' }
+      { path: 'nodeImgAdjust', title: 'NodeImgAdjust plugin' },
+      { path: 'search', title: 'Search plugin' }
     ]
   }
 ]
diff --git a/web/src/pages/Doc/zh/changelog/index.md b/web/src/pages/Doc/zh/changelog/index.md
index 7e302272..eb8ed945 100644
--- a/web/src/pages/Doc/zh/changelog/index.md
+++ b/web/src/pages/Doc/zh/changelog/index.md
@@ -1,5 +1,13 @@
 # Changelog
 
+## 0.6.9
+
+修复:1.修复给概要节点设置样式概要节点会消失的问题。2.修复自定义节点内容时,二次创建根实例时节点内容不渲染的问题。3.修复节点处于编辑中时添加新节点时新节点的焦点丢失问题。 2.修复连续按tab键无法连续创建子节点的问题。
+
+新增:1.导出svg时替换svg中存在的` `字符,避免导出的svg报错。 2.支持搜索和替换。
+
+Demo:1.切换主题时支持选择是否覆盖设置过的基础样式。
+
 ## 0.6.8
 
 修复:1.修改插入概要的快捷键为Ctrl+G,避免和保存快捷键冲突。 2.修复节点正在编辑时切换富文本编辑配置输入框出现异常的问题。
diff --git a/web/src/pages/Doc/zh/changelog/index.vue b/web/src/pages/Doc/zh/changelog/index.vue
index 1652ac9f..098a4fa8 100644
--- a/web/src/pages/Doc/zh/changelog/index.vue
+++ b/web/src/pages/Doc/zh/changelog/index.vue
@@ -1,6 +1,10 @@
 
diff --git a/web/src/pages/Doc/zh/render/index.md b/web/src/pages/Doc/zh/render/index.md
index bcb9ee0f..ee32bdb6 100644
--- a/web/src/pages/Doc/zh/render/index.md
+++ b/web/src/pages/Doc/zh/render/index.md
@@ -54,7 +54,9 @@
 
 复制节点,操作节点为当前激活节点,有多个激活节点只会操作第一个节点
 
-### setNodeDataRender(node, data)
+### setNodeDataRender(node, data, notRender)
+
+- `notRender`:v0.6.9+,`Boolean`,默认为`false`,是否不要触发渲染。
 
 设置节点数据,即`data`字段的数据,并会根据节点大小是否变化来判断是否需要重新渲染该节点,`data`为对象,如:`{text: '我是新文本'}`
 
diff --git a/web/src/pages/Doc/zh/render/index.vue b/web/src/pages/Doc/zh/render/index.vue
index 3a2d5d2b..27ee69ae 100644
--- a/web/src/pages/Doc/zh/render/index.vue
+++ b/web/src/pages/Doc/zh/render/index.vue
@@ -28,7 +28,10 @@
 

删除某个指定节点

copyNode()

复制节点,操作节点为当前激活节点,有多个激活节点只会操作第一个节点

-

setNodeDataRender(node, data)

+

setNodeDataRender(node, data, notRender)

+
    +
  • notRender:v0.6.9+,Boolean,默认为false,是否不要触发渲染。
  • +

设置节点数据,即data字段的数据,并会根据节点大小是否变化来判断是否需要重新渲染该节点,data为对象,如:{text: '我是新文本'}

moveNodeTo(node, toNode)

diff --git a/web/src/pages/Doc/zh/search/index.md b/web/src/pages/Doc/zh/search/index.md new file mode 100644 index 00000000..736ef63f --- /dev/null +++ b/web/src/pages/Doc/zh/search/index.md @@ -0,0 +1,68 @@ +# Search 插件 + +> v0.6.9+ + +该插件提供搜索和替换节点内容的功能。 + +## 注册 + +```js +import MindMap from 'simple-mind-map' +import Search from 'simple-mind-map/src/plugins/Search.js' +MindMap.usePlugin(Search) +``` + +注册完且实例化`MindMap`后可通过`mindMap.search`获取到该实例。 + +## 事件 + +### search_info_change + +可以通过监听`search_info_change`事件来获取当前搜索结果的数量和当前定位到的索引。 + +```js +mindMap.on('search_info_change', (data) => { + /* + data: { + currentIndex,// 索引,从0开始 + total + } + */ +}) +``` + +## 方法 + +### search(searchText, callback) + +- `searchText`:要进行搜索的文本 + +- `callback`:本次搜索完成的回调函数,会在跳转到节点后触发 + +搜索节点内容,可以重复调用,每调一次,会搜索和定位到下一个匹配的节点。如果搜索文本改变了,那么会重新搜索。 + +### endSearch() + +结束搜索。 + +### replace(replaceText) + +- `replaceText`:要进行替换的文本 + +替换当前节点内容,要在调用了`search`方法之后调用,会替换当前定位到的匹配节点内容。 + +### replaceAll(replaceText) + +- `replaceText`:要进行替换的文本 + +替换所有匹配的节点内容,要在调用了`search`方法之后调用。 + +### getReplacedText(node, searchText, replaceText) + +- `node`:节点实例 + +- `searchText`:要进行搜索的文本 + +- `replaceText`:要进行替换的文本 + +返回该节点搜索和替换后的文本内容,注意,不会实际改变节点内容,只是用来计算一个节点替换后的内容。 \ No newline at end of file diff --git a/web/src/pages/Doc/zh/search/index.vue b/web/src/pages/Doc/zh/search/index.vue new file mode 100644 index 00000000..997de619 --- /dev/null +++ b/web/src/pages/Doc/zh/search/index.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/web/src/pages/Doc/zh/utils/index.md b/web/src/pages/Doc/zh/utils/index.md index a1f48086..814205e5 100644 --- a/web/src/pages/Doc/zh/utils/index.md +++ b/web/src/pages/Doc/zh/utils/index.md @@ -191,6 +191,12 @@ copyNodeTree({}, node) } ``` +#### getType(data) + +> v0.6.9+ + +获取一个数据的类型,比如`Boolean`、`Array`等。 + ## 在canvas中模拟css的背景属性 引入: diff --git a/web/src/pages/Doc/zh/utils/index.vue b/web/src/pages/Doc/zh/utils/index.vue index e874c85e..0552eabb 100644 --- a/web/src/pages/Doc/zh/utils/index.vue +++ b/web/src/pages/Doc/zh/utils/index.vue @@ -129,6 +129,11 @@ size// { width, height } 图片宽高 }
+

getType(data)

+
+

v0.6.9+

+
+

获取一个数据的类型,比如BooleanArray等。

在canvas中模拟css的背景属性

引入:

import drawBackgroundImageToCanvas from 'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'
diff --git a/web/src/pages/Edit/components/Search.vue b/web/src/pages/Edit/components/Search.vue
index 9fdda8a4..396ac1fe 100644
--- a/web/src/pages/Edit/components/Search.vue
+++ b/web/src/pages/Edit/components/Search.vue
@@ -6,7 +6,7 @@
     
替换{{ $t('search.replace') }}
@@ -26,19 +26,23 @@
- 取消 + {{ + $t('search.cancel') + }}
- 替换 - 全部替换 + {{ + $t('search.replace') + }} + {{ + $t('search.replaceAll') + }}
From 6ca9a116c23f1ef34841514dbc24339e0dceea0c Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Fri, 28 Jul 2023 09:36:25 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E6=89=93=E5=8C=850.6.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 39ec0a9f..553768bd 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -思绪思维导图
\ No newline at end of file +思绪思维导图
\ No newline at end of file