import jsMind from '../jsmind/jsmind.js' import '../jsmind/plugins/jsmind.draggable-node.js' import { JsmindSearch } from './custom.search.js' import { JsmindToolbar } from './custom.toolbar.js' import { mockSearchApi } from './custom.config.js' /** * 初始化 jsMind 心智圖 * Initialize jsMind mind map * @param {Object} mind - 心智圖的資料 (Mind map data) * @param {Object} options - 配置選項 (Configuration options) * @param {boolean} isEditable - 是否可編輯 (Is editable) * @returns {Object} - jsMind 實例 (jsMind instance) */ export function initJsmind(mind, options, isEditable) { const container = document.getElementById(options.container) container.innerHTML = '' options.editable = isEditable const jm = new jsMind(options) // 依據是否可編輯調整顯示為連結或文字 // Adjust display as a link or text based on editability const formattedData = mind.data.map((node) => { node.topic = !isEditable && node.link ? `${node.text}` : node.text || node.topic return node }) jm.show({ meta: mind.meta, format: 'node_array', data: formattedData }) // 掛載附加模組(遠程搜尋 & 工具列) // Attach additional modules (Remote search & Toolbar) if (isEditable) { new JsmindSearch(jm, mockSearchApi, options.tableUID); new JsmindToolbar(jm, options) } return jm } /** * 獲取當前心智圖數據 * Get the current mind map data * @param {Object} jm - jsMind 實例 (jsMind instance) * @returns {Object} - 心智圖數據 (Mind map data) */ export function getJsmindData(jm) { return jm.get_data('node_array') }