@umbraci/jsmind 0.9.1-rich-text
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +24 -0
- package/README.md +74 -0
- package/es6/README-en.md +37 -0
- package/es6/README.md +34 -0
- package/es6/jsmind.draggable-node.js +9 -0
- package/es6/jsmind.draggable-node.js.map +1 -0
- package/es6/jsmind.js +9 -0
- package/es6/jsmind.js.map +1 -0
- package/es6/jsmind.screenshot.js +9 -0
- package/es6/jsmind.screenshot.js.map +1 -0
- package/package.json +85 -0
- package/style/jsmind.css +498 -0
- package/types/generated/index.d.ts +8 -0
- package/types/generated/jsmind.common.d.ts +66 -0
- package/types/generated/jsmind.d.ts +343 -0
- package/types/generated/jsmind.data_provider.d.ts +56 -0
- package/types/generated/jsmind.dom.d.ts +59 -0
- package/types/generated/jsmind.format.d.ts +100 -0
- package/types/generated/jsmind.graph.d.ts +182 -0
- package/types/generated/jsmind.layout_provider.d.ts +182 -0
- package/types/generated/jsmind.mind.d.ts +121 -0
- package/types/generated/jsmind.node.d.ts +62 -0
- package/types/generated/jsmind.option.d.ts +66 -0
- package/types/generated/jsmind.plugin.d.ts +21 -0
- package/types/generated/jsmind.shortcut_provider.d.ts +52 -0
- package/types/generated/jsmind.util.d.ts +26 -0
- package/types/generated/jsmind.view_provider.d.ts +372 -0
- package/types/generated/plugins/jsmind.draggable-node.d.ts +229 -0
- package/types/generated/plugins/jsmind.screenshot.d.ts +83 -0
- package/types/tsconfig.declaration.json +19 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license BSD-3-Clause
|
|
3
|
+
* @copyright 2014-2025 hizzgdev@163.com
|
|
4
|
+
*
|
|
5
|
+
* Project Home:
|
|
6
|
+
* https://github.com/hizzgdev/jsmind/
|
|
7
|
+
*/
|
|
8
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("jsmind"),require("dom-to-image")):"function"==typeof define&&define.amd?define(["exports","jsmind","dom-to-image"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jsMindScreenshot={},e.jsMind,e.domtoimage)}(this,(function(e,t,i){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(t),s=n(i);if(!o.default)throw new Error("jsMind is not defined");if(!s.default)throw new Error("dom-to-image is required");const r=o.default.$,a={filename:null,watermark:{left:r.w.location,right:"https://github.com/hizzgdev/jsmind"},background:"transparent"};class d{constructor(e,t){var i={};o.default.util.json.merge(i,a),o.default.util.json.merge(i,t),this.version="0.2.0",this.jm=e,this.options=i,this.dpr=e.view.device_pixel_ratio}shoot(){let e=this.create_canvas(),t=e.getContext("2d");t.scale(this.dpr,this.dpr),Promise.resolve(t).then((()=>this.draw_background(t))).then((()=>this.draw_lines(t))).then((()=>this.draw_nodes(t))).then((()=>this.draw_watermark(e,t))).then((()=>this.download(e))).then((()=>this.clear(e)))}create_canvas(){let e=r.c("canvas");const t=this.jm.view.size.w,i=this.jm.view.size.h;return e.width=t*this.dpr,e.height=i*this.dpr,e.style.width=t+"px",e.style.height=i+"px",e.style.visibility="hidden",this.jm.view.e_panel.appendChild(e),e}clear(e){e.parentNode.removeChild(e)}draw_background(e){return new Promise(function(t,i){const n=this.options.background;n&&"transparent"!==n&&(e.fillStyle=this.options.background,e.fillRect(0,0,this.jm.view.size.w,this.jm.view.size.h)),t(e)}.bind(this))}draw_lines(e){return new Promise(function(t,i){this.jm.view.graph.copy_to(e,(function(){t(e)}))}.bind(this))}draw_nodes(e){return s.default.toSvg(this.jm.view.e_nodes,{style:{zoom:1}}).then(this.load_image).then((function(t){return e.drawImage(t,0,0),e}))}draw_watermark(e,t){return t.textBaseline="bottom",t.fillStyle="#000",t.font="11px Verdana,Arial,Helvetica,sans-serif",this.options.watermark.left&&(t.textAlign="left",t.fillText(this.options.watermark.left,5.5,e.height-2.5)),this.options.watermark.right&&(t.textAlign="right",t.fillText(this.options.watermark.right,e.width-5.5,e.height-2.5)),t}load_image(e){return new Promise((function(t,i){let n=new Image;n.onload=function(){t(n)},n.onerror=i,n.src=e}))}download(e){var t=(this.options.filename||this.jm.mind.name)+".png";if(navigator.msSaveBlob&&e.msToBlob){var i=e.msToBlob();navigator.msSaveBlob(i,t)}else{var n=e.toDataURL(),o=r.c("a");if("download"in o){o.style.visibility="hidden",o.href=n,o.download=t,r.d.body.appendChild(o);var s=r.d.createEvent("MouseEvents");s.initEvent("click",!0,!0),o.dispatchEvent(s),r.d.body.removeChild(o)}else location.href=n}}}const l=new o.default.plugin("screenshot",(function(e,t){var i=new d(e,t);e.screenshot=i,e.shoot=function(){i.shoot()}}));o.default.register_plugin(l),e.JmScreenshot=d,e.default=d,e.screenshot_plugin=l,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
9
|
+
//# sourceMappingURL=jsmind.screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsmind.screenshot.js","sources":["../src/plugins/jsmind.screenshot.js"],"sourcesContent":["/**\n * @license BSD\n * @copyright 2014-2025 hizzgdev@163.com\n *\n * Project Home:\n * https://github.com/hizzgdev/jsmind/\n */\n\nimport jsMind from 'jsmind';\nimport domtoimage from 'dom-to-image';\n\nif (!jsMind) {\n throw new Error('jsMind is not defined');\n}\n\nif (!domtoimage) {\n throw new Error('dom-to-image is required');\n}\n\nconst $ = jsMind.$;\n\n/**\n * Default options for screenshot plugin.\n * @typedef {Object} ScreenshotOptions\n * @property {string|null} [filename]\n * @property {{left?:string|Location,right?:string}} [watermark]\n * @property {string} [background]\n */\nconst DEFAULT_OPTIONS = {\n filename: null,\n watermark: {\n left: $.w.location,\n right: 'https://github.com/hizzgdev/jsmind',\n },\n background: 'transparent',\n};\n\n/**\n * Screenshot plugin for jsMind.\n */\nexport class JmScreenshot {\n /**\n * Create screenshot plugin instance.\n * @param {import('../jsmind.js').default} jm - jsMind instance\n * @param {Partial<ScreenshotOptions>} options - Plugin options\n */\n constructor(jm, options) {\n var opts = {};\n jsMind.util.json.merge(opts, DEFAULT_OPTIONS);\n jsMind.util.json.merge(opts, options);\n\n this.version = '0.2.0';\n /** @type {import('../jsmind.js').default} */\n this.jm = jm;\n /** @type {ScreenshotOptions} */\n this.options = opts;\n /** @type {number} */\n this.dpr = jm.view.device_pixel_ratio;\n }\n\n /** Take a screenshot of the mind map. */\n shoot() {\n let c = this.create_canvas();\n let ctx = c.getContext('2d');\n ctx.scale(this.dpr, this.dpr);\n Promise.resolve(ctx)\n .then(() => this.draw_background(ctx))\n .then(() => this.draw_lines(ctx))\n .then(() => this.draw_nodes(ctx))\n .then(() => this.draw_watermark(c, ctx))\n .then(() => this.download(c))\n .then(() => this.clear(c));\n }\n\n /**\n * Create canvas for screenshot.\n * @returns {HTMLCanvasElement} Canvas element\n */\n create_canvas() {\n let c = $.c('canvas');\n const w = this.jm.view.size.w;\n const h = this.jm.view.size.h;\n c.width = w * this.dpr;\n c.height = h * this.dpr;\n c.style.width = w + 'px';\n c.style.height = h + 'px';\n\n c.style.visibility = 'hidden';\n this.jm.view.e_panel.appendChild(c);\n return c;\n }\n\n /**\n * Clean up canvas element.\n * @param {HTMLCanvasElement} c - Canvas to remove\n */\n clear(c) {\n c.parentNode.removeChild(c);\n }\n\n /**\n * Draw background on canvas.\n * @param {CanvasRenderingContext2D} ctx - Canvas context\n * @returns {Promise<CanvasRenderingContext2D>} Promise resolving to context\n */\n draw_background(ctx) {\n return new Promise(\n function (resolve, _) {\n const bg = this.options.background;\n if (!!bg && bg !== 'transparent') {\n ctx.fillStyle = this.options.background;\n ctx.fillRect(0, 0, this.jm.view.size.w, this.jm.view.size.h);\n }\n resolve(ctx);\n }.bind(this)\n );\n }\n\n /**\n * Draw connection lines on canvas by copying from view graph.\n * @param {CanvasRenderingContext2D} ctx\n * @returns {Promise<CanvasRenderingContext2D>}\n */\n draw_lines(ctx) {\n return new Promise(\n function (resolve, _) {\n this.jm.view.graph.copy_to(ctx, function () {\n resolve(ctx);\n });\n }.bind(this)\n );\n }\n\n /**\n * Draw node DOM into canvas via SVG snapshot.\n * @param {CanvasRenderingContext2D} ctx\n * @returns {Promise<CanvasRenderingContext2D>}\n */\n draw_nodes(ctx) {\n return domtoimage\n .toSvg(this.jm.view.e_nodes, { style: { zoom: 1 } })\n .then(this.load_image)\n .then(function (img) {\n ctx.drawImage(img, 0, 0);\n return ctx;\n });\n }\n\n /**\n * Draw watermark text on canvas.\n * @param {HTMLCanvasElement} c\n * @param {CanvasRenderingContext2D} ctx\n * @returns {CanvasRenderingContext2D}\n */\n draw_watermark(c, ctx) {\n ctx.textBaseline = 'bottom';\n ctx.fillStyle = '#000';\n ctx.font = '11px Verdana,Arial,Helvetica,sans-serif';\n if (!!this.options.watermark.left) {\n ctx.textAlign = 'left';\n ctx.fillText(this.options.watermark.left, 5.5, c.height - 2.5);\n }\n if (!!this.options.watermark.right) {\n ctx.textAlign = 'right';\n ctx.fillText(this.options.watermark.right, c.width - 5.5, c.height - 2.5);\n }\n return ctx;\n }\n\n /**\n * Load image from URL and resolve img element.\n * @param {string} url\n * @returns {Promise<HTMLImageElement>}\n */\n load_image(url) {\n return new Promise(function (resolve, reject) {\n let img = new Image();\n img.onload = function () {\n resolve(img);\n };\n img.onerror = reject;\n img.src = url;\n });\n }\n\n /**\n * Trigger download of canvas content as PNG.\n * @param {HTMLCanvasElement} c\n */\n download(c) {\n var name = (this.options.filename || this.jm.mind.name) + '.png';\n\n if (navigator.msSaveBlob && !!c.msToBlob) {\n var blob = c.msToBlob();\n navigator.msSaveBlob(blob, name);\n } else {\n var blob_url = c.toDataURL();\n var anchor = $.c('a');\n if ('download' in anchor) {\n anchor.style.visibility = 'hidden';\n anchor.href = blob_url;\n anchor.download = name;\n $.d.body.appendChild(anchor);\n var evt = $.d.createEvent('MouseEvents');\n evt.initEvent('click', true, true);\n anchor.dispatchEvent(evt);\n $.d.body.removeChild(anchor);\n } else {\n location.href = blob_url;\n }\n }\n }\n}\n\n/**\n * Screenshot plugin registration.\n * @type {import('../jsmind.plugin.js').Plugin<Partial<ScreenshotOptions>>}\n */\nexport const screenshot_plugin = new jsMind.plugin('screenshot', function (jm, options) {\n var jmss = new JmScreenshot(jm, options);\n jm.screenshot = jmss;\n jm.shoot = function () {\n jmss.shoot();\n };\n});\n\njsMind.register_plugin(screenshot_plugin);\n\nexport default JmScreenshot;\n"],"names":["jsMind","Error","domtoimage","$","DEFAULT_OPTIONS","filename","watermark","left","w","location","right","background","JmScreenshot","constructor","jm","options","opts","util","json","merge","this","version","dpr","view","device_pixel_ratio","shoot","c","create_canvas","ctx","getContext","scale","Promise","resolve","then","draw_background","draw_lines","draw_nodes","draw_watermark","download","clear","size","h","width","height","style","visibility","e_panel","appendChild","parentNode","removeChild","_","bg","fillStyle","fillRect","bind","graph","copy_to","toSvg","e_nodes","zoom","load_image","img","drawImage","textBaseline","font","textAlign","fillText","url","reject","Image","onload","onerror","src","name","mind","navigator","msSaveBlob","msToBlob","blob","blob_url","toDataURL","anchor","href","d","body","evt","createEvent","initEvent","dispatchEvent","screenshot_plugin","plugin","jmss","screenshot","register_plugin"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@umbraci/jsmind",
|
|
3
|
+
"version": "0.9.1-rich-text",
|
|
4
|
+
"description": "jsMind is a pure javascript library for mindmap, it base on html5 canvas. jsMind was released under BSD license, you can embed it in any project, if only you observe the license.",
|
|
5
|
+
"main": "es6/jsmind.js",
|
|
6
|
+
"types": "types/generated/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./es6/jsmind.js",
|
|
10
|
+
"require": "./es6/jsmind.js",
|
|
11
|
+
"types": "./types/generated/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./draggable-node": {
|
|
14
|
+
"import": "./es6/jsmind.draggable-node.js",
|
|
15
|
+
"require": "./es6/jsmind.draggable-node.js",
|
|
16
|
+
"types": "./types/generated/plugins/jsmind.draggable-node.d.ts"
|
|
17
|
+
},
|
|
18
|
+
"./screenshot": {
|
|
19
|
+
"import": "./es6/jsmind.screenshot.js",
|
|
20
|
+
"require": "./es6/jsmind.screenshot.js",
|
|
21
|
+
"types": "./types/generated/plugins/jsmind.screenshot.d.ts"
|
|
22
|
+
},
|
|
23
|
+
"./style/jsmind.css": "./style/jsmind.css"
|
|
24
|
+
},
|
|
25
|
+
"directories": {
|
|
26
|
+
"doc": "docs",
|
|
27
|
+
"example": "example"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"es6",
|
|
31
|
+
"style",
|
|
32
|
+
"types",
|
|
33
|
+
"LICENSE",
|
|
34
|
+
"README.md"
|
|
35
|
+
],
|
|
36
|
+
"scripts": {
|
|
37
|
+
"server": "http-server",
|
|
38
|
+
"build": "rollup -c .config/rollup.config.js",
|
|
39
|
+
"build-types": "npx -p typescript tsc -p types/tsconfig.declaration.json",
|
|
40
|
+
"test": "NODE_OPTIONS=--experimental-vm-modules jest tests/unit",
|
|
41
|
+
"test-es6": "NODE_OPTIONS=--experimental-vm-modules jest tests/unit",
|
|
42
|
+
"test-types": "NODE_OPTIONS=--experimental-vm-modules jest tests/types",
|
|
43
|
+
"build-test-types": "npm run build-types && npm run test-types",
|
|
44
|
+
"test-legacy": "jest tests/legacy",
|
|
45
|
+
"format": "prettier --config .config/prettierrc.json --ignore-path .config/prettierignore --write .",
|
|
46
|
+
"format-check": "prettier --config .config/prettierrc.json --ignore-path .config/prettierignore --check ."
|
|
47
|
+
},
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git+https://github.com/hizzgdev/jsmind.git"
|
|
51
|
+
},
|
|
52
|
+
"author": {
|
|
53
|
+
"name": "hizzgdev@163.com"
|
|
54
|
+
},
|
|
55
|
+
"license": "BSD-3-Clause",
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/hizzgdev/jsmind/issues"
|
|
58
|
+
},
|
|
59
|
+
"homepage": "https://github.com/hizzgdev/jsmind#readme",
|
|
60
|
+
"keywords": [
|
|
61
|
+
"jsmind",
|
|
62
|
+
"mindmap"
|
|
63
|
+
],
|
|
64
|
+
"maintainers": [
|
|
65
|
+
{
|
|
66
|
+
"name": "hizzgdev",
|
|
67
|
+
"email": "hizzgdev@163.com"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
72
|
+
"http-server": "^14.1.1",
|
|
73
|
+
"jest": "^28.1.0",
|
|
74
|
+
"jest-environment-jsdom": "^28.1.0",
|
|
75
|
+
"prettier": "2.6.2",
|
|
76
|
+
"rollup": "2.79.2",
|
|
77
|
+
"rollup-plugin-cleanup": "^3.2.1",
|
|
78
|
+
"tsd-jsdoc": "^2.5.0",
|
|
79
|
+
"typescript": "^5.9.2"
|
|
80
|
+
},
|
|
81
|
+
"jest": {
|
|
82
|
+
"verbose": true,
|
|
83
|
+
"testEnvironment": "jsdom"
|
|
84
|
+
}
|
|
85
|
+
}
|
package/style/jsmind.css
ADDED
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license BSD
|
|
3
|
+
* @copyright 2014-2025 hizzgdev@163.com
|
|
4
|
+
*
|
|
5
|
+
* Project Home:
|
|
6
|
+
* https://github.com/hizzgdev/jsmind/
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/* important section */
|
|
10
|
+
.jsmind-inner {
|
|
11
|
+
position: relative;
|
|
12
|
+
overflow: auto;
|
|
13
|
+
width: 100%;
|
|
14
|
+
height: 100%;
|
|
15
|
+
outline: none;
|
|
16
|
+
} /*box-shadow:0 0 2px #000;*/
|
|
17
|
+
.jsmind-inner {
|
|
18
|
+
moz-user-select: -moz-none;
|
|
19
|
+
-moz-user-select: none;
|
|
20
|
+
-o-user-select: none;
|
|
21
|
+
-khtml-user-select: none;
|
|
22
|
+
-webkit-user-select: none;
|
|
23
|
+
-ms-user-select: none;
|
|
24
|
+
user-select: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.jsmind-inner canvas {
|
|
28
|
+
position: absolute;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* z-index:1 */
|
|
32
|
+
svg.jsmind {
|
|
33
|
+
position: absolute;
|
|
34
|
+
z-index: 1;
|
|
35
|
+
}
|
|
36
|
+
canvas.jsmind {
|
|
37
|
+
position: absolute;
|
|
38
|
+
z-index: 1;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* z-index:2 */
|
|
42
|
+
jmnodes {
|
|
43
|
+
position: absolute;
|
|
44
|
+
z-index: 2;
|
|
45
|
+
background-color: rgba(0, 0, 0, 0);
|
|
46
|
+
} /*background color is necessary*/
|
|
47
|
+
jmnode {
|
|
48
|
+
position: absolute;
|
|
49
|
+
cursor: default;
|
|
50
|
+
max-width: 400px;
|
|
51
|
+
}
|
|
52
|
+
jmexpander {
|
|
53
|
+
position: absolute;
|
|
54
|
+
width: 11px;
|
|
55
|
+
height: 11px;
|
|
56
|
+
display: block;
|
|
57
|
+
overflow: hidden;
|
|
58
|
+
line-height: 12px;
|
|
59
|
+
font-size: 10px;
|
|
60
|
+
text-align: center;
|
|
61
|
+
border-radius: 6px;
|
|
62
|
+
border-width: 1px;
|
|
63
|
+
border-style: solid;
|
|
64
|
+
cursor: pointer;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.jmnode-overflow-wrap jmnodes {
|
|
68
|
+
min-width: 420px;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.jmnode-overflow-hidden jmnode {
|
|
72
|
+
white-space: nowrap;
|
|
73
|
+
overflow: hidden;
|
|
74
|
+
text-overflow: ellipsis;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Rich text and multiline support - unified div approach */
|
|
78
|
+
.jsmind-editor {
|
|
79
|
+
border: 2px solid #4caf50;
|
|
80
|
+
border-radius: 4px;
|
|
81
|
+
padding: 4px;
|
|
82
|
+
margin: 0;
|
|
83
|
+
outline: none;
|
|
84
|
+
background: #fff;
|
|
85
|
+
font-family: inherit;
|
|
86
|
+
font-size: inherit;
|
|
87
|
+
line-height: inherit;
|
|
88
|
+
color: #000 !important; /* 确保编辑器内字体始终为黑色 */
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.jsmind-rich-editor {
|
|
92
|
+
min-height: 20px;
|
|
93
|
+
word-wrap: break-word;
|
|
94
|
+
overflow-wrap: break-word;
|
|
95
|
+
white-space: normal;
|
|
96
|
+
max-height: 200px;
|
|
97
|
+
overflow-y: auto;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* Multiline editor using contenteditable div */
|
|
101
|
+
.jsmind-multiline-editor {
|
|
102
|
+
min-height: 20px;
|
|
103
|
+
word-wrap: break-word;
|
|
104
|
+
overflow-wrap: break-word;
|
|
105
|
+
white-space: pre-wrap;
|
|
106
|
+
max-height: 200px;
|
|
107
|
+
overflow-y: auto;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Input editor for single line text */
|
|
111
|
+
.jsmind-input-editor {
|
|
112
|
+
white-space: nowrap;
|
|
113
|
+
overflow: hidden;
|
|
114
|
+
text-overflow: ellipsis;
|
|
115
|
+
min-height: 20px;
|
|
116
|
+
border: none;
|
|
117
|
+
outline: none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* Legacy textarea support (deprecated - will be removed in future versions) */
|
|
121
|
+
.jsmind-textarea-editor {
|
|
122
|
+
resize: vertical;
|
|
123
|
+
min-height: 40px;
|
|
124
|
+
font-family: inherit;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* Multiline node styles */
|
|
128
|
+
jmnode.multiline {
|
|
129
|
+
white-space: pre-wrap;
|
|
130
|
+
word-wrap: break-word;
|
|
131
|
+
overflow-wrap: break-word;
|
|
132
|
+
max-width: 300px; /* This value should be consistent with textAutoWrapWidth config */
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* Rich text node styles */
|
|
136
|
+
jmnode.rich-text {
|
|
137
|
+
white-space: normal;
|
|
138
|
+
word-wrap: break-word;
|
|
139
|
+
overflow-wrap: break-word;
|
|
140
|
+
max-width: 300px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
jmnode.rich-text b,
|
|
144
|
+
jmnode.rich-text strong {
|
|
145
|
+
font-weight: bold;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
jmnode.rich-text i,
|
|
149
|
+
jmnode.rich-text em {
|
|
150
|
+
font-style: italic;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
jmnode.rich-text u {
|
|
154
|
+
text-decoration: underline;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
jmnode.rich-text ul,
|
|
158
|
+
jmnode.rich-text ol {
|
|
159
|
+
margin: 4px 0;
|
|
160
|
+
padding-left: 20px;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
jmnode.rich-text li {
|
|
164
|
+
margin: 2px 0;
|
|
165
|
+
}
|
|
166
|
+
/* default theme */
|
|
167
|
+
jmnode {
|
|
168
|
+
padding: 10px;
|
|
169
|
+
background-color: #fff;
|
|
170
|
+
color: #333;
|
|
171
|
+
border-radius: 5px;
|
|
172
|
+
box-shadow: 1px 1px 1px #666;
|
|
173
|
+
font: 16px/1.125 Verdana, Arial, Helvetica, sans-serif;
|
|
174
|
+
}
|
|
175
|
+
jmnode:hover {
|
|
176
|
+
box-shadow: 2px 2px 8px #000;
|
|
177
|
+
background-color: #ebebeb;
|
|
178
|
+
color: #333;
|
|
179
|
+
}
|
|
180
|
+
jmnode.selected {
|
|
181
|
+
background-color: #11f;
|
|
182
|
+
color: #fff;
|
|
183
|
+
box-shadow: 2px 2px 8px #000;
|
|
184
|
+
}
|
|
185
|
+
jmnode.root {
|
|
186
|
+
font-size: 24px;
|
|
187
|
+
}
|
|
188
|
+
jmexpander {
|
|
189
|
+
border-color: gray;
|
|
190
|
+
}
|
|
191
|
+
jmexpander:hover {
|
|
192
|
+
border-color: #000;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
@media screen and (max-device-width: 1024px) {
|
|
196
|
+
jmnode {
|
|
197
|
+
padding: 5px;
|
|
198
|
+
border-radius: 3px;
|
|
199
|
+
font-size: 14px;
|
|
200
|
+
}
|
|
201
|
+
jmnode.root {
|
|
202
|
+
font-size: 21px;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/* primary theme */
|
|
206
|
+
jmnodes.theme-primary jmnode {
|
|
207
|
+
background-color: #428bca;
|
|
208
|
+
color: #fff;
|
|
209
|
+
border-color: #357ebd;
|
|
210
|
+
}
|
|
211
|
+
jmnodes.theme-primary jmnode:hover {
|
|
212
|
+
background-color: #3276b1;
|
|
213
|
+
border-color: #285e8e;
|
|
214
|
+
}
|
|
215
|
+
jmnodes.theme-primary jmnode.selected {
|
|
216
|
+
background-color: #f1c40f;
|
|
217
|
+
color: #fff;
|
|
218
|
+
}
|
|
219
|
+
jmnodes.theme-primary jmnode.root {
|
|
220
|
+
}
|
|
221
|
+
jmnodes.theme-primary jmexpander {
|
|
222
|
+
}
|
|
223
|
+
jmnodes.theme-primary jmexpander:hover {
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* warning theme */
|
|
227
|
+
jmnodes.theme-warning jmnode {
|
|
228
|
+
background-color: #f0ad4e;
|
|
229
|
+
border-color: #eea236;
|
|
230
|
+
color: #fff;
|
|
231
|
+
}
|
|
232
|
+
jmnodes.theme-warning jmnode:hover {
|
|
233
|
+
background-color: #ed9c28;
|
|
234
|
+
border-color: #d58512;
|
|
235
|
+
}
|
|
236
|
+
jmnodes.theme-warning jmnode.selected {
|
|
237
|
+
background-color: #11f;
|
|
238
|
+
color: #fff;
|
|
239
|
+
}
|
|
240
|
+
jmnodes.theme-warning jmnode.root {
|
|
241
|
+
}
|
|
242
|
+
jmnodes.theme-warning jmexpander {
|
|
243
|
+
}
|
|
244
|
+
jmnodes.theme-warning jmexpander:hover {
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/* danger theme */
|
|
248
|
+
jmnodes.theme-danger jmnode {
|
|
249
|
+
background-color: #d9534f;
|
|
250
|
+
border-color: #d43f3a;
|
|
251
|
+
color: #fff;
|
|
252
|
+
}
|
|
253
|
+
jmnodes.theme-danger jmnode:hover {
|
|
254
|
+
background-color: #d2322d;
|
|
255
|
+
border-color: #ac2925;
|
|
256
|
+
}
|
|
257
|
+
jmnodes.theme-danger jmnode.selected {
|
|
258
|
+
background-color: #11f;
|
|
259
|
+
color: #fff;
|
|
260
|
+
}
|
|
261
|
+
jmnodes.theme-danger jmnode.root {
|
|
262
|
+
}
|
|
263
|
+
jmnodes.theme-danger jmexpander {
|
|
264
|
+
}
|
|
265
|
+
jmnodes.theme-danger jmexpander:hover {
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/* success theme */
|
|
269
|
+
jmnodes.theme-success jmnode {
|
|
270
|
+
background-color: #5cb85c;
|
|
271
|
+
border-color: #4cae4c;
|
|
272
|
+
color: #fff;
|
|
273
|
+
}
|
|
274
|
+
jmnodes.theme-success jmnode:hover {
|
|
275
|
+
background-color: #47a447;
|
|
276
|
+
border-color: #398439;
|
|
277
|
+
}
|
|
278
|
+
jmnodes.theme-success jmnode.selected {
|
|
279
|
+
background-color: #11f;
|
|
280
|
+
color: #fff;
|
|
281
|
+
}
|
|
282
|
+
jmnodes.theme-success jmnode.root {
|
|
283
|
+
}
|
|
284
|
+
jmnodes.theme-success jmexpander {
|
|
285
|
+
}
|
|
286
|
+
jmnodes.theme-success jmexpander:hover {
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/* info theme */
|
|
290
|
+
jmnodes.theme-info jmnode {
|
|
291
|
+
background-color: #5dc0de;
|
|
292
|
+
border-color: #46b8da;
|
|
293
|
+
color: #fff;
|
|
294
|
+
}
|
|
295
|
+
jmnodes.theme-info jmnode:hover {
|
|
296
|
+
background-color: #39b3d7;
|
|
297
|
+
border-color: #269abc;
|
|
298
|
+
}
|
|
299
|
+
jmnodes.theme-info jmnode.selected {
|
|
300
|
+
background-color: #11f;
|
|
301
|
+
color: #fff;
|
|
302
|
+
}
|
|
303
|
+
jmnodes.theme-info jmnode.root {
|
|
304
|
+
}
|
|
305
|
+
jmnodes.theme-info jmexpander {
|
|
306
|
+
}
|
|
307
|
+
jmnodes.theme-info jmexpander:hover {
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/* greensea theme */
|
|
311
|
+
jmnodes.theme-greensea jmnode {
|
|
312
|
+
background-color: #1abc9c;
|
|
313
|
+
color: #fff;
|
|
314
|
+
}
|
|
315
|
+
jmnodes.theme-greensea jmnode:hover {
|
|
316
|
+
background-color: #16a085;
|
|
317
|
+
}
|
|
318
|
+
jmnodes.theme-greensea jmnode.selected {
|
|
319
|
+
background-color: #11f;
|
|
320
|
+
color: #fff;
|
|
321
|
+
}
|
|
322
|
+
jmnodes.theme-greensea jmnode.root {
|
|
323
|
+
}
|
|
324
|
+
jmnodes.theme-greensea jmexpander {
|
|
325
|
+
}
|
|
326
|
+
jmnodes.theme-greensea jmexpander:hover {
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* nephrite theme */
|
|
330
|
+
jmnodes.theme-nephrite jmnode {
|
|
331
|
+
background-color: #2ecc71;
|
|
332
|
+
color: #fff;
|
|
333
|
+
}
|
|
334
|
+
jmnodes.theme-nephrite jmnode:hover {
|
|
335
|
+
background-color: #27ae60;
|
|
336
|
+
}
|
|
337
|
+
jmnodes.theme-nephrite jmnode.selected {
|
|
338
|
+
background-color: #11f;
|
|
339
|
+
color: #fff;
|
|
340
|
+
}
|
|
341
|
+
jmnodes.theme-nephrite jmnode.root {
|
|
342
|
+
}
|
|
343
|
+
jmnodes.theme-nephrite jmexpander {
|
|
344
|
+
}
|
|
345
|
+
jmnodes.theme-nephrite jmexpander:hover {
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/* belizehole theme */
|
|
349
|
+
jmnodes.theme-belizehole jmnode {
|
|
350
|
+
background-color: #3498db;
|
|
351
|
+
color: #fff;
|
|
352
|
+
}
|
|
353
|
+
jmnodes.theme-belizehole jmnode:hover {
|
|
354
|
+
background-color: #2980b9;
|
|
355
|
+
}
|
|
356
|
+
jmnodes.theme-belizehole jmnode.selected {
|
|
357
|
+
background-color: #11f;
|
|
358
|
+
color: #fff;
|
|
359
|
+
}
|
|
360
|
+
jmnodes.theme-belizehole jmnode.root {
|
|
361
|
+
}
|
|
362
|
+
jmnodes.theme-belizehole jmexpander {
|
|
363
|
+
}
|
|
364
|
+
jmnodes.theme-belizehole jmexpander:hover {
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/* wisteria theme */
|
|
368
|
+
jmnodes.theme-wisteria jmnode {
|
|
369
|
+
background-color: #9b59b6;
|
|
370
|
+
color: #fff;
|
|
371
|
+
}
|
|
372
|
+
jmnodes.theme-wisteria jmnode:hover {
|
|
373
|
+
background-color: #8e44ad;
|
|
374
|
+
}
|
|
375
|
+
jmnodes.theme-wisteria jmnode.selected {
|
|
376
|
+
background-color: #11f;
|
|
377
|
+
color: #fff;
|
|
378
|
+
}
|
|
379
|
+
jmnodes.theme-wisteria jmnode.root {
|
|
380
|
+
}
|
|
381
|
+
jmnodes.theme-wisteria jmexpander {
|
|
382
|
+
}
|
|
383
|
+
jmnodes.theme-wisteria jmexpander:hover {
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/* asphalt theme */
|
|
387
|
+
jmnodes.theme-asphalt jmnode {
|
|
388
|
+
background-color: #34495e;
|
|
389
|
+
color: #fff;
|
|
390
|
+
}
|
|
391
|
+
jmnodes.theme-asphalt jmnode:hover {
|
|
392
|
+
background-color: #2c3e50;
|
|
393
|
+
}
|
|
394
|
+
jmnodes.theme-asphalt jmnode.selected {
|
|
395
|
+
background-color: #11f;
|
|
396
|
+
color: #fff;
|
|
397
|
+
}
|
|
398
|
+
jmnodes.theme-asphalt jmnode.root {
|
|
399
|
+
}
|
|
400
|
+
jmnodes.theme-asphalt jmexpander {
|
|
401
|
+
}
|
|
402
|
+
jmnodes.theme-asphalt jmexpander:hover {
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/* orange theme */
|
|
406
|
+
jmnodes.theme-orange jmnode {
|
|
407
|
+
background-color: #f1c40f;
|
|
408
|
+
color: #fff;
|
|
409
|
+
}
|
|
410
|
+
jmnodes.theme-orange jmnode:hover {
|
|
411
|
+
background-color: #f39c12;
|
|
412
|
+
}
|
|
413
|
+
jmnodes.theme-orange jmnode.selected {
|
|
414
|
+
background-color: #11f;
|
|
415
|
+
color: #fff;
|
|
416
|
+
}
|
|
417
|
+
jmnodes.theme-orange jmnode.root {
|
|
418
|
+
}
|
|
419
|
+
jmnodes.theme-orange jmexpander {
|
|
420
|
+
}
|
|
421
|
+
jmnodes.theme-orange jmexpander:hover {
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* pumpkin theme */
|
|
425
|
+
jmnodes.theme-pumpkin jmnode {
|
|
426
|
+
background-color: #e67e22;
|
|
427
|
+
color: #fff;
|
|
428
|
+
}
|
|
429
|
+
jmnodes.theme-pumpkin jmnode:hover {
|
|
430
|
+
background-color: #d35400;
|
|
431
|
+
}
|
|
432
|
+
jmnodes.theme-pumpkin jmnode.selected {
|
|
433
|
+
background-color: #11f;
|
|
434
|
+
color: #fff;
|
|
435
|
+
}
|
|
436
|
+
jmnodes.theme-pumpkin jmnode.root {
|
|
437
|
+
}
|
|
438
|
+
jmnodes.theme-pumpkin jmexpander {
|
|
439
|
+
}
|
|
440
|
+
jmnodes.theme-pumpkin jmexpander:hover {
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/* pomegranate theme */
|
|
444
|
+
jmnodes.theme-pomegranate jmnode {
|
|
445
|
+
background-color: #e74c3c;
|
|
446
|
+
color: #fff;
|
|
447
|
+
}
|
|
448
|
+
jmnodes.theme-pomegranate jmnode:hover {
|
|
449
|
+
background-color: #c0392b;
|
|
450
|
+
}
|
|
451
|
+
jmnodes.theme-pomegranate jmnode.selected {
|
|
452
|
+
background-color: #11f;
|
|
453
|
+
color: #fff;
|
|
454
|
+
}
|
|
455
|
+
jmnodes.theme-pomegranate jmnode.root {
|
|
456
|
+
}
|
|
457
|
+
jmnodes.theme-pomegranate jmexpander {
|
|
458
|
+
}
|
|
459
|
+
jmnodes.theme-pomegranate jmexpander:hover {
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/* clouds theme */
|
|
463
|
+
jmnodes.theme-clouds jmnode {
|
|
464
|
+
background-color: #ecf0f1;
|
|
465
|
+
color: #333;
|
|
466
|
+
}
|
|
467
|
+
jmnodes.theme-clouds jmnode:hover {
|
|
468
|
+
background-color: #bdc3c7;
|
|
469
|
+
}
|
|
470
|
+
jmnodes.theme-clouds jmnode.selected {
|
|
471
|
+
background-color: #11f;
|
|
472
|
+
color: #fff;
|
|
473
|
+
}
|
|
474
|
+
jmnodes.theme-clouds jmnode.root {
|
|
475
|
+
}
|
|
476
|
+
jmnodes.theme-clouds jmexpander {
|
|
477
|
+
}
|
|
478
|
+
jmnodes.theme-clouds jmexpander:hover {
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/* asbestos theme */
|
|
482
|
+
jmnodes.theme-asbestos jmnode {
|
|
483
|
+
background-color: #95a5a6;
|
|
484
|
+
color: #fff;
|
|
485
|
+
}
|
|
486
|
+
jmnodes.theme-asbestos jmnode:hover {
|
|
487
|
+
background-color: #7f8c8d;
|
|
488
|
+
}
|
|
489
|
+
jmnodes.theme-asbestos jmnode.selected {
|
|
490
|
+
background-color: #11f;
|
|
491
|
+
color: #fff;
|
|
492
|
+
}
|
|
493
|
+
jmnodes.theme-asbestos jmnode.root {
|
|
494
|
+
}
|
|
495
|
+
jmnodes.theme-asbestos jmexpander {
|
|
496
|
+
}
|
|
497
|
+
jmnodes.theme-asbestos jmexpander:hover {
|
|
498
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default } from './jsmind';
|
|
2
|
+
export { Node } from './jsmind.node';
|
|
3
|
+
export { Mind } from './jsmind.mind';
|
|
4
|
+
export type { JsMindRuntimeOptions as JsMindOptions } from './jsmind.option';
|
|
5
|
+
export type { MindMapMeta, NodeTreeData, NodeTreeFormat, NodeArrayItem, NodeArrayFormat, } from './jsmind.format';
|
|
6
|
+
export { Direction as direction, EventType as event_type } from './jsmind.common';
|
|
7
|
+
export { $ } from './jsmind.dom';
|
|
8
|
+
export { util } from './jsmind.util';
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license BSD
|
|
3
|
+
* @copyright 2014-2025 hizzgdev@163.com
|
|
4
|
+
*
|
|
5
|
+
* Project Home:
|
|
6
|
+
* https://github.com/hizzgdev/jsmind/
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Library version string.
|
|
10
|
+
* @type {string}
|
|
11
|
+
*/
|
|
12
|
+
export const __version__: string;
|
|
13
|
+
/**
|
|
14
|
+
* Library author.
|
|
15
|
+
* @type {string}
|
|
16
|
+
*/
|
|
17
|
+
export const __author__: string;
|
|
18
|
+
/**
|
|
19
|
+
* Direction constants and parser.
|
|
20
|
+
* @typedef {{left:number,center:number,right:number,of:(dir:(string|number))=>number|undefined}} DirectionType
|
|
21
|
+
*/
|
|
22
|
+
/** @type {DirectionType} */
|
|
23
|
+
export const Direction: DirectionType;
|
|
24
|
+
export type EventType = number;
|
|
25
|
+
export namespace EventType {
|
|
26
|
+
let show: number;
|
|
27
|
+
let resize: number;
|
|
28
|
+
let edit: number;
|
|
29
|
+
let select: number;
|
|
30
|
+
}
|
|
31
|
+
export type Key = number;
|
|
32
|
+
export namespace Key {
|
|
33
|
+
let meta: number;
|
|
34
|
+
let ctrl: number;
|
|
35
|
+
let alt: number;
|
|
36
|
+
let shift: number;
|
|
37
|
+
}
|
|
38
|
+
export type LogLevel = number;
|
|
39
|
+
export namespace LogLevel {
|
|
40
|
+
let debug: number;
|
|
41
|
+
let info: number;
|
|
42
|
+
let warn: number;
|
|
43
|
+
let error: number;
|
|
44
|
+
let disable: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Logger facade with dynamic level.
|
|
48
|
+
* @type {{level:(lvl:number)=>void,log:Function,debug:Function,info:Function,warn:Function,error:Function}}
|
|
49
|
+
*/
|
|
50
|
+
export let logger: {
|
|
51
|
+
level: (lvl: number) => void;
|
|
52
|
+
log: Function;
|
|
53
|
+
debug: Function;
|
|
54
|
+
info: Function;
|
|
55
|
+
warn: Function;
|
|
56
|
+
error: Function;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Direction constants and parser.
|
|
60
|
+
*/
|
|
61
|
+
export type DirectionType = {
|
|
62
|
+
left: number;
|
|
63
|
+
center: number;
|
|
64
|
+
right: number;
|
|
65
|
+
of: (dir: (string | number)) => number | undefined;
|
|
66
|
+
};
|