# j-CloudEditor

> j-CloudEditor: az ifrámban működik; több kurzorot támogat (változás + cmd + rack-down/up)

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: hu
Content-SHA256: 94f097eb4fc765e8d2eb5186e52df149a32344cc942a75eaac31579ba596d6e9
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: components@910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e
Review: not-recorded

- Az IFRAM-ban működik
- Többszörös kurzorok támogatása (`shift + cmd + arrow-down/up`)
- támogatja a kiválasztott szöveg megtalálását (`cmd + d`)
- Támogatja a custom scrollbars
- Támogatja a diff tracker
- Egy egyszerű emmet plugin támogatása
- Valós idejű együttműködés támogatása
- forráskód: <https://github.com/totaljs/editor>
- A szerkesztő használja: [CodeMirror](https://codemirror.net/)
- Nagyon kicsi kód

__konfiguráció__:

- `parent {String}` a fő tartály kiválasztója (default: `auto`)
- A `autosave {Boolean}` automatikusan visszaszorítja az értékeket a szerkesztőről a komponens útjára (default: `true`)
- A `event {String}` az út a `function(name, value)` felé
	- `click`
	- `errors`
	- `shortcut`
	- A `cursor` tartalmazza a kurzor pozíciót
	- A `change` részleges változásokat tartalmaz a valós idejű együttműködéshez (`config.realtime` kell `true`)
- A `contextmenu {String}` az út a `function(opt)` felé
- A `realtime {Boolean}` lehetővé teszi a `event` módszer valós idejű módosításának elküldését (az esemény neve `change`)
- `keywords {String}` személyre szabott kulcsszavak, például a `ID,PATH`
- `minheight {Number}` opcionális, minimális magasság (default: `0`)
- `margin {Number}` opcionális, egy függőleges margin (default: `0`)
- __NEW__: `url {String}` opcionális, a szerkesztőhöz való hivatkozás (default: `//cdn.componentator.com/editor/1.min.html`)

__módszer__:

- `component.insert('some text')`
- `component.replace('text', 'newvalue')`
- `component.search('text', callback(output))`
- `component.select(from, [to])`
- `component.goto(pos)`
- `component.focus()`
- `component.save(callback(value))`
- `component.marker(name, [from], [to], [color])` hozzáadja + módosítja (a `from`-vel) és eltávolítja a jelölést (nem `from` érv)
- `component.change(changes)` Valós idejű együttműködés (`changes` A termelés a `config.event` funkciók
- A `component.clear()` megtisztítja az összes változást
- `component.replaceselections(selections)`
- `component.replaceselection(selection)`
- `component.replacerange(value, from, [to])`
- `component.command(cmd)` végrehajtás `codemirror.execCommand()` módszer
- `component.exec(a, [b], [c])` végrehajtás `document.execCommand(a, b, c)` módszer

__Fontos__:

`from`, `to`, `pos` Az érveknek a formában kell lenniük: `{ line: Number, ch: Number }`.

Használja a `<ui-component name="cloudeditor">`Amennyiben a készülék még nem tölthető le, jComponent letöltés az első felhasználásra a címről `DEF.fallback` (Azt a Componentator A szerző: Peter Širka. forrás: a Componentator Az összetevők raktár, MIT licenc.

```html example.html
<ui-component name="LAZY menu"></ui-component>

<div style="width:600px;height:200px;border:1px solid #E0E0E0">
	<ui-component name="cloudeditor" path="editormodel" config="contextmenu:editor_contextmenu;event:editor_event;realtime:1"></ui-component>
</div>
<br />
<div style="width:600px;height:200px;border:1px solid #E0E0E0">
	<ui-component name="cloudeditor" path="editormirrored" config="readonly:1;$id:mirrored"></ui-component>
</div>

<div class="clearfix"></div>

<script>

	var editorbody = '\n\n<h1>HELLO WORLD</h1>\n\n';
	var editormodel = { mode: 'clientside', body: editorbody, keywords: 'WORLD' };
	var editormirrored = { mode: 'clientside', body: editorbody };

	function editor_event(type, value) {
		switch (type) {
			case 'change':
				SETTER('#mirrored/change', value);
				break;
			case 'cursor':
				SETTER('#mirrored/marker', 'Peter', value.from);
				break;
		}
		SETTER('!menu/hide');
	}

	function editor_contextmenu(obj) {
		var opt = {};
		opt.x = obj.x;
		opt.y = obj.y;
		opt.items = [];
		opt.items.push({ id: '1', name: 'Test item 1' });
		opt.items.push({ id: '2', name: 'Test item 2' });
		opt.items.push({ id: '3', name: 'Test item 3' });
		opt.items.push({ id: '4', name: 'Test item 4' });
		opt.callback = function(selected) {
			console.log(selected);
		};
		SETTER('menu/show', opt);
	}

</script>
```
