jsoneditor-rails 1.0.2 → 1.0.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/jsoneditor/rails/version.rb +1 -1
- data/vendor/assets/javascripts/jsoneditor-minimalist.js +341 -251
- data/vendor/assets/javascripts/jsoneditor-minimalist.map +1 -1
- data/vendor/assets/javascripts/jsoneditor.js +344 -254
- data/vendor/assets/javascripts/jsoneditor.map +1 -1
- data/vendor/assets/stylesheets/jsoneditor.scss +16 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b1f64b68e6fe24fd9e7b5cb600dd2289b8a05d14db957eb3844661c012e9d50
|
4
|
+
data.tar.gz: d55f4e5c69896922118ec5072adfa9332f4c40cc41f35c2a0c8bd5064c332c5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff175b3f9a234a5016ef93e0a570bf41192ba517568cce22ccb478f1821b683dfa96e949665c11411b99526cd9e3dc4676e697030759df526ad7c63766d95351
|
7
|
+
data.tar.gz: fc2923853f7dea9b731b3d01a4ba019e7e5d20edf172f879b12a9651477167544bf4997e4850cb0987f5a446fd3878e4ce164766432f20e4941df8588a184334
|
data/CHANGELOG.md
CHANGED
@@ -21,11 +21,11 @@
|
|
21
21
|
* License for the specific language governing permissions and limitations under
|
22
22
|
* the License.
|
23
23
|
*
|
24
|
-
* Copyright (c) 2011-
|
24
|
+
* Copyright (c) 2011-2018 Jos de Jong, http://jsoneditoronline.org
|
25
25
|
*
|
26
26
|
* @author Jos de Jong, <wjosdejong@gmail.com>
|
27
|
-
* @version 5.
|
28
|
-
* @date 2018-
|
27
|
+
* @version 5.26.3
|
28
|
+
* @date 2018-12-06
|
29
29
|
*/
|
30
30
|
(function webpackUniversalModuleDefinition(root, factory) {
|
31
31
|
if(typeof exports === 'object' && typeof module === 'object')
|
@@ -252,7 +252,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
252
252
|
'colorPicker', 'onColorPicker',
|
253
253
|
'timestampTag',
|
254
254
|
'escapeUnicode', 'history', 'search', 'mode', 'modes', 'name', 'indentation',
|
255
|
-
'sortObjectKeys', 'navigationBar', 'statusBar', 'languages', 'language'
|
255
|
+
'sortObjectKeys', 'navigationBar', 'statusBar', 'mainMenuBar', 'languages', 'language', 'enableSort', 'enableTransform'
|
256
256
|
];
|
257
257
|
|
258
258
|
/**
|
@@ -1580,8 +1580,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1580
1580
|
* @private
|
1581
1581
|
*/
|
1582
1582
|
treemode._setOptions = function (options) {
|
1583
|
-
var editor = this;
|
1584
|
-
|
1585
1583
|
this.options = {
|
1586
1584
|
search: true,
|
1587
1585
|
history: true,
|
@@ -1591,6 +1589,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1591
1589
|
schemaRefs: null,
|
1592
1590
|
autocomplete: null,
|
1593
1591
|
navigationBar : true,
|
1592
|
+
mainMenuBar: true,
|
1594
1593
|
onSelectionChange: null,
|
1595
1594
|
colorPicker: true,
|
1596
1595
|
onColorPicker: function (parent, color, onChange) {
|
@@ -1600,11 +1599,11 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1600
1599
|
color: color,
|
1601
1600
|
popup: 'bottom',
|
1602
1601
|
onDone: function (color) {
|
1603
|
-
var alpha = color.rgba[3]
|
1602
|
+
var alpha = color.rgba[3];
|
1604
1603
|
var hex = (alpha === 1)
|
1605
1604
|
? color.hex.substr(0, 7) // return #RRGGBB
|
1606
|
-
: color.hex // return #RRGGBBAA
|
1607
|
-
onChange(hex)
|
1605
|
+
: color.hex; // return #RRGGBBAA
|
1606
|
+
onChange(hex);
|
1608
1607
|
}
|
1609
1608
|
}).show();
|
1610
1609
|
}
|
@@ -1614,7 +1613,9 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1614
1613
|
}
|
1615
1614
|
},
|
1616
1615
|
timestampTag: true,
|
1617
|
-
onEvent: null
|
1616
|
+
onEvent: null,
|
1617
|
+
enableSort: true,
|
1618
|
+
enableTransform: true
|
1618
1619
|
};
|
1619
1620
|
|
1620
1621
|
// copy all options
|
@@ -1949,9 +1950,27 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
1949
1950
|
return;
|
1950
1951
|
}
|
1951
1952
|
|
1953
|
+
// selection can be changed after undo/redo
|
1954
|
+
this.selection = this.getDomSelection();
|
1955
|
+
|
1952
1956
|
// validate JSON schema (if configured)
|
1953
1957
|
this._debouncedValidate();
|
1954
1958
|
|
1959
|
+
if (this.treePath) {
|
1960
|
+
var selectedNode = this.selection
|
1961
|
+
? this.node.findNodeByInternalPath(this.selection.path)
|
1962
|
+
: this.multiselection
|
1963
|
+
? this.multiselection.nodes[0]
|
1964
|
+
: undefined;
|
1965
|
+
|
1966
|
+
if (selectedNode) {
|
1967
|
+
this._updateTreePath(selectedNode.getNodePath())
|
1968
|
+
}
|
1969
|
+
else {
|
1970
|
+
this.treePath.reset()
|
1971
|
+
}
|
1972
|
+
}
|
1973
|
+
|
1955
1974
|
// trigger the onChange callback
|
1956
1975
|
if (this.options.onChange) {
|
1957
1976
|
try {
|
@@ -2373,6 +2392,9 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
2373
2392
|
this.frame.className = 'jsoneditor jsoneditor-mode-' + this.options.mode;
|
2374
2393
|
this.container.appendChild(this.frame);
|
2375
2394
|
|
2395
|
+
this.contentOuter = document.createElement('div');
|
2396
|
+
this.contentOuter.className = 'jsoneditor-outer';
|
2397
|
+
|
2376
2398
|
// create one global event listener to handle all events from all nodes
|
2377
2399
|
var editor = this;
|
2378
2400
|
function onEvent(event) {
|
@@ -2411,107 +2433,115 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
2411
2433
|
this.frame.onfocusin = onEvent; // for IE
|
2412
2434
|
this.frame.onfocusout = onEvent; // for IE
|
2413
2435
|
|
2414
|
-
|
2415
|
-
|
2416
|
-
|
2417
|
-
|
2418
|
-
|
2419
|
-
|
2420
|
-
|
2421
|
-
|
2422
|
-
|
2423
|
-
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2427
|
-
|
2428
|
-
|
2429
|
-
// create collapse all button
|
2430
|
-
var collapseAll = document.createElement('button');
|
2431
|
-
collapseAll.type = 'button';
|
2432
|
-
collapseAll.title = translate('collapseAll');
|
2433
|
-
collapseAll.className = 'jsoneditor-collapse-all';
|
2434
|
-
collapseAll.onclick = function () {
|
2435
|
-
editor.collapseAll();
|
2436
|
-
};
|
2437
|
-
this.menu.appendChild(collapseAll);
|
2438
|
-
|
2439
|
-
// create sort button
|
2440
|
-
var sort = document.createElement('button');
|
2441
|
-
sort.type = 'button';
|
2442
|
-
sort.className = 'jsoneditor-sort';
|
2443
|
-
sort.title = translate('sortTitleShort');
|
2444
|
-
sort.onclick = function () {
|
2445
|
-
var anchor = editor.options.modalAnchor || DEFAULT_MODAL_ANCHOR;
|
2446
|
-
showSortModal(editor.node, anchor)
|
2447
|
-
};
|
2448
|
-
this.menu.appendChild(sort);
|
2449
|
-
|
2450
|
-
// create transform button
|
2451
|
-
var transform = document.createElement('button');
|
2452
|
-
transform.type = 'button';
|
2453
|
-
transform.title = translate('transformTitleShort');
|
2454
|
-
transform.className = 'jsoneditor-transform';
|
2455
|
-
transform.onclick = function () {
|
2456
|
-
var anchor = editor.options.modalAnchor || DEFAULT_MODAL_ANCHOR;
|
2457
|
-
showTransformModal(editor.node, anchor)
|
2458
|
-
};
|
2459
|
-
this.menu.appendChild(transform);
|
2460
|
-
|
2461
|
-
// create undo/redo buttons
|
2462
|
-
if (this.history) {
|
2463
|
-
// create undo button
|
2464
|
-
var undo = document.createElement('button');
|
2465
|
-
undo.type = 'button';
|
2466
|
-
undo.className = 'jsoneditor-undo jsoneditor-separator';
|
2467
|
-
undo.title = translate('undo');
|
2468
|
-
undo.onclick = function () {
|
2469
|
-
editor._onUndo();
|
2436
|
+
if (this.options.mainMenuBar) {
|
2437
|
+
util.addClassName(this.contentOuter, 'has-main-menu-bar');
|
2438
|
+
|
2439
|
+
// create menu
|
2440
|
+
this.menu = document.createElement('div');
|
2441
|
+
this.menu.className = 'jsoneditor-menu';
|
2442
|
+
this.frame.appendChild(this.menu);
|
2443
|
+
|
2444
|
+
// create expand all button
|
2445
|
+
var expandAll = document.createElement('button');
|
2446
|
+
expandAll.type = 'button';
|
2447
|
+
expandAll.className = 'jsoneditor-expand-all';
|
2448
|
+
expandAll.title = translate('expandAll');
|
2449
|
+
expandAll.onclick = function () {
|
2450
|
+
editor.expandAll();
|
2470
2451
|
};
|
2471
|
-
this.menu.appendChild(
|
2472
|
-
|
2473
|
-
|
2474
|
-
|
2475
|
-
|
2476
|
-
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
editor._onRedo();
|
2452
|
+
this.menu.appendChild(expandAll);
|
2453
|
+
|
2454
|
+
// create collapse all button
|
2455
|
+
var collapseAll = document.createElement('button');
|
2456
|
+
collapseAll.type = 'button';
|
2457
|
+
collapseAll.title = translate('collapseAll');
|
2458
|
+
collapseAll.className = 'jsoneditor-collapse-all';
|
2459
|
+
collapseAll.onclick = function () {
|
2460
|
+
editor.collapseAll();
|
2481
2461
|
};
|
2482
|
-
this.menu.appendChild(
|
2483
|
-
|
2462
|
+
this.menu.appendChild(collapseAll);
|
2463
|
+
|
2464
|
+
// create sort button
|
2465
|
+
if (this.options.enableSort) {
|
2466
|
+
var sort = document.createElement('button');
|
2467
|
+
sort.type = 'button';
|
2468
|
+
sort.className = 'jsoneditor-sort';
|
2469
|
+
sort.title = translate('sortTitleShort');
|
2470
|
+
sort.onclick = function () {
|
2471
|
+
var anchor = editor.options.modalAnchor || DEFAULT_MODAL_ANCHOR;
|
2472
|
+
showSortModal(editor.node, anchor)
|
2473
|
+
};
|
2474
|
+
this.menu.appendChild(sort);
|
2475
|
+
}
|
2476
|
+
|
2477
|
+
// create transform button
|
2478
|
+
if (this.options.enableTransform) {
|
2479
|
+
var transform = document.createElement('button');
|
2480
|
+
transform.type = 'button';
|
2481
|
+
transform.title = translate('transformTitleShort');
|
2482
|
+
transform.className = 'jsoneditor-transform';
|
2483
|
+
transform.onclick = function () {
|
2484
|
+
var anchor = editor.options.modalAnchor || DEFAULT_MODAL_ANCHOR;
|
2485
|
+
showTransformModal(editor.node, anchor)
|
2486
|
+
};
|
2487
|
+
this.menu.appendChild(transform);
|
2488
|
+
}
|
2489
|
+
|
2490
|
+
// create undo/redo buttons
|
2491
|
+
if (this.history) {
|
2492
|
+
// create undo button
|
2493
|
+
var undo = document.createElement('button');
|
2494
|
+
undo.type = 'button';
|
2495
|
+
undo.className = 'jsoneditor-undo jsoneditor-separator';
|
2496
|
+
undo.title = translate('undo');
|
2497
|
+
undo.onclick = function () {
|
2498
|
+
editor._onUndo();
|
2499
|
+
};
|
2500
|
+
this.menu.appendChild(undo);
|
2501
|
+
this.dom.undo = undo;
|
2502
|
+
|
2503
|
+
// create redo button
|
2504
|
+
var redo = document.createElement('button');
|
2505
|
+
redo.type = 'button';
|
2506
|
+
redo.className = 'jsoneditor-redo';
|
2507
|
+
redo.title = translate('redo');
|
2508
|
+
redo.onclick = function () {
|
2509
|
+
editor._onRedo();
|
2510
|
+
};
|
2511
|
+
this.menu.appendChild(redo);
|
2512
|
+
this.dom.redo = redo;
|
2484
2513
|
|
2485
|
-
|
2486
|
-
|
2487
|
-
|
2488
|
-
|
2489
|
-
|
2490
|
-
|
2491
|
-
|
2514
|
+
// register handler for onchange of history
|
2515
|
+
this.history.onChange = function () {
|
2516
|
+
undo.disabled = !editor.history.canUndo();
|
2517
|
+
redo.disabled = !editor.history.canRedo();
|
2518
|
+
};
|
2519
|
+
this.history.onChange();
|
2520
|
+
}
|
2492
2521
|
|
2493
|
-
|
2494
|
-
|
2495
|
-
|
2496
|
-
|
2497
|
-
|
2498
|
-
|
2499
|
-
|
2500
|
-
|
2501
|
-
|
2522
|
+
// create mode box
|
2523
|
+
if (this.options && this.options.modes && this.options.modes.length) {
|
2524
|
+
var me = this;
|
2525
|
+
this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {
|
2526
|
+
// switch mode and restore focus
|
2527
|
+
me.setMode(mode);
|
2528
|
+
me.modeSwitcher.focus();
|
2529
|
+
});
|
2530
|
+
}
|
2502
2531
|
|
2503
|
-
|
2504
|
-
|
2505
|
-
|
2532
|
+
// create search box
|
2533
|
+
if (this.options.search) {
|
2534
|
+
this.searchBox = new SearchBox(this, this.menu);
|
2535
|
+
}
|
2506
2536
|
}
|
2507
2537
|
|
2508
|
-
if(this.options.navigationBar) {
|
2538
|
+
if (this.options.navigationBar) {
|
2509
2539
|
// create second menu row for treepath
|
2510
2540
|
this.navBar = document.createElement('div');
|
2511
2541
|
this.navBar.className = 'jsoneditor-navigation-bar nav-bar-empty';
|
2512
2542
|
this.frame.appendChild(this.navBar);
|
2513
2543
|
|
2514
|
-
this.treePath = new TreePath(this.navBar);
|
2544
|
+
this.treePath = new TreePath(this.navBar, this.frame);
|
2515
2545
|
this.treePath.onSectionSelected(this._onTreePathSectionSelected.bind(this));
|
2516
2546
|
this.treePath.onContextMenuItemSelected(this._onTreePathMenuItemSelected.bind(this));
|
2517
2547
|
}
|
@@ -2602,7 +2632,8 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
2602
2632
|
}
|
2603
2633
|
}
|
2604
2634
|
else {
|
2605
|
-
|
2635
|
+
// filter mouse events in the contents part of the editor (not the main menu)
|
2636
|
+
if (event.type === 'mousedown' && util.hasParentNode(event.target, this.content)) {
|
2606
2637
|
this.deselect();
|
2607
2638
|
|
2608
2639
|
if (node && event.target === node.dom.drag) {
|
@@ -2636,7 +2667,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
2636
2667
|
name: getName(node),
|
2637
2668
|
node: node,
|
2638
2669
|
children: []
|
2639
|
-
}
|
2670
|
+
};
|
2640
2671
|
if (node.childs && node.childs.length) {
|
2641
2672
|
node.childs.forEach(function (childNode) {
|
2642
2673
|
pathObj.children.push({
|
@@ -2752,6 +2783,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
2752
2783
|
});
|
2753
2784
|
}
|
2754
2785
|
|
2786
|
+
event.preventDefault();
|
2755
2787
|
};
|
2756
2788
|
|
2757
2789
|
/**
|
@@ -2799,10 +2831,9 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
2799
2831
|
|
2800
2832
|
/**
|
2801
2833
|
* End of multiselect nodes by dragging
|
2802
|
-
* @param event
|
2803
2834
|
* @private
|
2804
2835
|
*/
|
2805
|
-
treemode._onMultiSelectEnd = function (
|
2836
|
+
treemode._onMultiSelectEnd = function () {
|
2806
2837
|
// set focus to the context menu button of the first node
|
2807
2838
|
if (this.multiselection.nodes[0]) {
|
2808
2839
|
this.multiselection.nodes[0].dom.menu.focus();
|
@@ -3026,16 +3057,13 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3026
3057
|
* @private
|
3027
3058
|
*/
|
3028
3059
|
treemode._createTable = function () {
|
3029
|
-
|
3030
|
-
|
3031
|
-
if(this.options.navigationBar) {
|
3032
|
-
util.addClassName(contentOuter, 'has-nav-bar');
|
3060
|
+
if (this.options.navigationBar) {
|
3061
|
+
util.addClassName(this.contentOuter, 'has-nav-bar');
|
3033
3062
|
}
|
3034
|
-
this.contentOuter = contentOuter;
|
3035
3063
|
|
3036
3064
|
this.scrollableContent = document.createElement('div');
|
3037
3065
|
this.scrollableContent.className = 'jsoneditor-tree';
|
3038
|
-
contentOuter.appendChild(this.scrollableContent);
|
3066
|
+
this.contentOuter.appendChild(this.scrollableContent);
|
3039
3067
|
|
3040
3068
|
// the jsoneditor-tree-inner div with bottom padding is here to
|
3041
3069
|
// keep space for the action menu dropdown. It's created as a
|
@@ -3069,7 +3097,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3069
3097
|
this.tbody = document.createElement('tbody');
|
3070
3098
|
this.table.appendChild(this.tbody);
|
3071
3099
|
|
3072
|
-
this.frame.appendChild(contentOuter);
|
3100
|
+
this.frame.appendChild(this.contentOuter);
|
3073
3101
|
};
|
3074
3102
|
|
3075
3103
|
/**
|
@@ -3081,7 +3109,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3081
3109
|
*/
|
3082
3110
|
treemode.showContextMenu = function (anchor, onClose) {
|
3083
3111
|
var items = [];
|
3084
|
-
var
|
3112
|
+
var selectedNodes = this.multiselection.nodes.slice();
|
3085
3113
|
|
3086
3114
|
// create duplicate button
|
3087
3115
|
items.push({
|
@@ -3089,7 +3117,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3089
3117
|
title: translate('duplicateTitle'),
|
3090
3118
|
className: 'jsoneditor-duplicate',
|
3091
3119
|
click: function () {
|
3092
|
-
Node.onDuplicate(
|
3120
|
+
Node.onDuplicate(selectedNodes );
|
3093
3121
|
}
|
3094
3122
|
});
|
3095
3123
|
|
@@ -3099,12 +3127,12 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3099
3127
|
title: translate('removeTitle'),
|
3100
3128
|
className: 'jsoneditor-remove',
|
3101
3129
|
click: function () {
|
3102
|
-
Node.onRemove(
|
3130
|
+
Node.onRemove(selectedNodes);
|
3103
3131
|
}
|
3104
3132
|
});
|
3105
3133
|
|
3106
3134
|
var menu = new ContextMenu(items, {close: onClose});
|
3107
|
-
menu.show(anchor,
|
3135
|
+
menu.show(anchor, this.frame);
|
3108
3136
|
};
|
3109
3137
|
|
3110
3138
|
/**
|
@@ -3133,12 +3161,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3133
3161
|
};
|
3134
3162
|
|
3135
3163
|
/**
|
3136
|
-
* Callback
|
3164
|
+
* Callback registration for selection change
|
3137
3165
|
* @param {selectionCallback} callback
|
3138
3166
|
*
|
3139
3167
|
* @callback selectionCallback
|
3140
|
-
* @param {SerializableNode=} start
|
3141
|
-
* @param {SerializableNode=} end
|
3142
3168
|
*/
|
3143
3169
|
treemode.onSelectionChange = function (callback) {
|
3144
3170
|
if (typeof callback === 'function') {
|
@@ -3157,7 +3183,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3157
3183
|
treemode.setSelection = function (start, end) {
|
3158
3184
|
// check for old usage
|
3159
3185
|
if (start && start.dom && start.range) {
|
3160
|
-
console.warn('setSelection/getSelection usage for text selection is
|
3186
|
+
console.warn('setSelection/getSelection usage for text selection is deprecated and should not be used, see documentation for supported selection options');
|
3161
3187
|
this.setDomSelection(start);
|
3162
3188
|
}
|
3163
3189
|
|
@@ -3173,7 +3199,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
3173
3199
|
* Returns a set of Nodes according to a range of selection
|
3174
3200
|
* @param {{path: Array.<String>}} start object contains the path for range start
|
3175
3201
|
* @param {{path: Array.<String>}=} end object contains the path for range end
|
3176
|
-
* @return {Array.<Node>} Node
|
3202
|
+
* @return {Array.<Node>} Node instances on the given range
|
3177
3203
|
* @private
|
3178
3204
|
*/
|
3179
3205
|
treemode._getNodeInstancesByRange = function (start, end) {
|
@@ -4632,13 +4658,17 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
4632
4658
|
function next() { return jsString.charAt(i + 1); }
|
4633
4659
|
function prev() { return jsString.charAt(i - 1); }
|
4634
4660
|
|
4661
|
+
function isWhiteSpace(c) {
|
4662
|
+
return c === ' ' || c === '\n' || c === '\r' || c === '\t';
|
4663
|
+
}
|
4664
|
+
|
4635
4665
|
// get the last parsed non-whitespace character
|
4636
4666
|
function lastNonWhitespace () {
|
4637
4667
|
var p = chars.length - 1;
|
4638
4668
|
|
4639
4669
|
while (p >= 0) {
|
4640
4670
|
var pp = chars[p];
|
4641
|
-
if (pp
|
4671
|
+
if (!isWhiteSpace(pp)) {
|
4642
4672
|
return pp;
|
4643
4673
|
}
|
4644
4674
|
p--;
|
@@ -4647,6 +4677,16 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
4647
4677
|
return '';
|
4648
4678
|
}
|
4649
4679
|
|
4680
|
+
// get at the first next non-white space character
|
4681
|
+
function nextNonWhiteSpace() {
|
4682
|
+
var iNext = i + 1;
|
4683
|
+
while (iNext < jsString.length && isWhiteSpace(jsString[iNext])) {
|
4684
|
+
iNext++;
|
4685
|
+
}
|
4686
|
+
|
4687
|
+
return jsString[iNext];
|
4688
|
+
}
|
4689
|
+
|
4650
4690
|
// skip a block comment '/* ... */'
|
4651
4691
|
function skipBlockComment () {
|
4652
4692
|
i += 2;
|
@@ -4733,7 +4773,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
4733
4773
|
}
|
4734
4774
|
else if (c === '\u00A0' || (c >= '\u2000' && c <= '\u200A') || c === '\u202F' || c === '\u205F' || c === '\u3000') {
|
4735
4775
|
// special white spaces (like non breaking space)
|
4736
|
-
chars.push(' ')
|
4776
|
+
chars.push(' ');
|
4737
4777
|
i++
|
4738
4778
|
}
|
4739
4779
|
else if (c === quote) {
|
@@ -4751,6 +4791,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
4751
4791
|
else if (c === quoteDblLeft) {
|
4752
4792
|
parseString(quoteDblRight);
|
4753
4793
|
}
|
4794
|
+
else if (c === ',' && [']', '}'].indexOf(nextNonWhiteSpace()) !== -1) {
|
4795
|
+
// skip trailing commas
|
4796
|
+
i++;
|
4797
|
+
}
|
4754
4798
|
else if (/[a-zA-Z_$]/.test(c) && ['{', ','].indexOf(lastNonWhitespace()) !== -1) {
|
4755
4799
|
// an unquoted object key (like a in '{a:2}')
|
4756
4800
|
parseKey();
|
@@ -5147,6 +5191,25 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
5147
5191
|
return '';
|
5148
5192
|
};
|
5149
5193
|
|
5194
|
+
/**
|
5195
|
+
* Test whether an element has the provided parent node somewhere up the node tree.
|
5196
|
+
* @param {Element} elem
|
5197
|
+
* @param {Element} parent
|
5198
|
+
* @return {boolean}
|
5199
|
+
*/
|
5200
|
+
exports.hasParentNode = function (elem, parent) {
|
5201
|
+
var e = elem ? elem.parentNode : undefined;
|
5202
|
+
|
5203
|
+
while (e) {
|
5204
|
+
if (e === parent) {
|
5205
|
+
return true;
|
5206
|
+
}
|
5207
|
+
e = e.parentNode;
|
5208
|
+
}
|
5209
|
+
|
5210
|
+
return false;
|
5211
|
+
}
|
5212
|
+
|
5150
5213
|
/**
|
5151
5214
|
* Returns the version of Internet Explorer or a -1
|
5152
5215
|
* (indicating the use of another browser).
|
@@ -6714,10 +6777,12 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
6714
6777
|
/**
|
6715
6778
|
* Creates a component that visualize path selection in tree based editors
|
6716
6779
|
* @param {HTMLElement} container
|
6780
|
+
* @param {HTMLElement} root
|
6717
6781
|
* @constructor
|
6718
6782
|
*/
|
6719
|
-
function TreePath(container) {
|
6783
|
+
function TreePath(container, root) {
|
6720
6784
|
if (container) {
|
6785
|
+
this.root = root;
|
6721
6786
|
this.path = document.createElement('div');
|
6722
6787
|
this.path.className = 'jsoneditor-treepath';
|
6723
6788
|
container.appendChild(this.path);
|
@@ -6767,10 +6832,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
6767
6832
|
});
|
6768
6833
|
});
|
6769
6834
|
var menu = new ContextMenu(items);
|
6770
|
-
menu.show(sepEl);
|
6835
|
+
menu.show(sepEl, me.root);
|
6771
6836
|
};
|
6772
6837
|
|
6773
|
-
me.path.appendChild(sepEl
|
6838
|
+
me.path.appendChild(sepEl);
|
6774
6839
|
}
|
6775
6840
|
|
6776
6841
|
if(idx === pathObjs.length - 1) {
|
@@ -6967,7 +7032,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
6967
7032
|
|
6968
7033
|
/**
|
6969
7034
|
* Find child node by serializable path
|
6970
|
-
* @param {Array<String>} path
|
7035
|
+
* @param {Array<String>} path
|
6971
7036
|
*/
|
6972
7037
|
Node.prototype.findNodeByPath = function (path) {
|
6973
7038
|
if (!path) {
|
@@ -7009,7 +7074,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
7009
7074
|
|
7010
7075
|
/**
|
7011
7076
|
* @typedef {{value: String|Object|Number|Boolean, path: Array.<String|Number>}} SerializableNode
|
7012
|
-
*
|
7077
|
+
*
|
7013
7078
|
* Returns serializable representation for the node
|
7014
7079
|
* @return {SerializableNode}
|
7015
7080
|
*/
|
@@ -8219,7 +8284,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
8219
8284
|
this.childs = [];
|
8220
8285
|
}
|
8221
8286
|
|
8222
|
-
this.childs.forEach(function (child
|
8287
|
+
this.childs.forEach(function (child) {
|
8223
8288
|
child.clearDom();
|
8224
8289
|
delete child.index;
|
8225
8290
|
child.fieldEditable = true;
|
@@ -8292,7 +8357,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
8292
8357
|
}
|
8293
8358
|
}
|
8294
8359
|
else if (this.type === 'object') {
|
8295
|
-
if (typeof json !== 'object') {
|
8360
|
+
if (typeof json !== 'object' || !json) {
|
8296
8361
|
return false;
|
8297
8362
|
}
|
8298
8363
|
|
@@ -9339,7 +9404,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
9339
9404
|
//Locating the schema of the node and checking for any enum type
|
9340
9405
|
if(this.editor && this.editor.options) {
|
9341
9406
|
// find the part of the json schema matching this nodes path
|
9342
|
-
this.schema = this.editor.options.schema
|
9407
|
+
this.schema = this.editor.options.schema
|
9343
9408
|
? Node._findSchema(this.editor.options.schema, this.getPath())
|
9344
9409
|
: null;
|
9345
9410
|
if (this.schema) {
|
@@ -9780,7 +9845,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
9780
9845
|
};
|
9781
9846
|
// For leaf values, include value
|
9782
9847
|
if (!this._hasChilds() &&element === this.dom.value) {
|
9783
|
-
info.value = this.getValue();
|
9848
|
+
info.value = this.getValue();
|
9784
9849
|
}
|
9785
9850
|
this.editor.options.onEvent(info, event);
|
9786
9851
|
}
|
@@ -10195,7 +10260,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
10195
10260
|
}
|
10196
10261
|
});
|
10197
10262
|
}
|
10198
|
-
}
|
10263
|
+
};
|
10199
10264
|
|
10200
10265
|
/**
|
10201
10266
|
* Remove nodes
|
@@ -10693,7 +10758,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
10693
10758
|
}
|
10694
10759
|
|
10695
10760
|
return false;
|
10696
|
-
}
|
10761
|
+
};
|
10697
10762
|
|
10698
10763
|
/**
|
10699
10764
|
* Remove the focus of given nodes, and move the focus to the (a) node before,
|
@@ -10991,25 +11056,29 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
10991
11056
|
}
|
10992
11057
|
|
10993
11058
|
if (this._hasChilds()) {
|
10994
|
-
|
10995
|
-
|
10996
|
-
|
10997
|
-
|
10998
|
-
|
10999
|
-
|
11000
|
-
|
11001
|
-
|
11002
|
-
|
11059
|
+
if (this.editor.options.enableSort) {
|
11060
|
+
items.push({
|
11061
|
+
text: translate('sort'),
|
11062
|
+
title: translate('sortTitle', {type: this.type}),
|
11063
|
+
className: 'jsoneditor-sort-asc',
|
11064
|
+
click: function () {
|
11065
|
+
var anchor = node.editor.options.modalAnchor || DEFAULT_MODAL_ANCHOR;
|
11066
|
+
showSortModal(node, anchor)
|
11067
|
+
}
|
11068
|
+
});
|
11069
|
+
}
|
11003
11070
|
|
11004
|
-
|
11005
|
-
|
11006
|
-
|
11007
|
-
|
11008
|
-
|
11009
|
-
|
11010
|
-
|
11011
|
-
|
11012
|
-
|
11071
|
+
if (this.editor.options.enableTransform) {
|
11072
|
+
items.push({
|
11073
|
+
text: translate('transform'),
|
11074
|
+
title: translate('transformTitle', {type: this.type}),
|
11075
|
+
className: 'jsoneditor-transform',
|
11076
|
+
click: function () {
|
11077
|
+
var anchor = node.editor.options.modalAnchor || DEFAULT_MODAL_ANCHOR;
|
11078
|
+
showTransformModal(node, anchor)
|
11079
|
+
}
|
11080
|
+
});
|
11081
|
+
}
|
11013
11082
|
}
|
11014
11083
|
|
11015
11084
|
if (this.parent && this.parent._hasChilds()) {
|
@@ -17213,10 +17282,13 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17213
17282
|
// read options
|
17214
17283
|
options = options || {};
|
17215
17284
|
|
17216
|
-
if(typeof options.statusBar === 'undefined') {
|
17285
|
+
if (typeof options.statusBar === 'undefined') {
|
17217
17286
|
options.statusBar = true;
|
17218
17287
|
}
|
17219
17288
|
|
17289
|
+
// setting default for textmode
|
17290
|
+
options.mainMenuBar = options.mainMenuBar !== false;
|
17291
|
+
|
17220
17292
|
this.options = options;
|
17221
17293
|
|
17222
17294
|
// indentation
|
@@ -17280,67 +17352,89 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17280
17352
|
this.frame.onkeydown = function (event) {
|
17281
17353
|
me._onKeyDown(event);
|
17282
17354
|
};
|
17283
|
-
|
17284
|
-
// create menu
|
17285
|
-
this.menu = document.createElement('div');
|
17286
|
-
this.menu.className = 'jsoneditor-menu';
|
17287
|
-
this.frame.appendChild(this.menu);
|
17288
|
-
|
17289
|
-
// create format button
|
17290
|
-
var buttonFormat = document.createElement('button');
|
17291
|
-
buttonFormat.type = 'button';
|
17292
|
-
buttonFormat.className = 'jsoneditor-format';
|
17293
|
-
buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\)';
|
17294
|
-
this.menu.appendChild(buttonFormat);
|
17295
|
-
buttonFormat.onclick = function () {
|
17296
|
-
try {
|
17297
|
-
me.format();
|
17298
|
-
me._onChange();
|
17299
|
-
}
|
17300
|
-
catch (err) {
|
17301
|
-
me._onError(err);
|
17302
|
-
}
|
17303
|
-
};
|
17304
17355
|
|
17305
|
-
|
17306
|
-
|
17307
|
-
buttonCompact.type = 'button';
|
17308
|
-
buttonCompact.className = 'jsoneditor-compact';
|
17309
|
-
buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)';
|
17310
|
-
this.menu.appendChild(buttonCompact);
|
17311
|
-
buttonCompact.onclick = function () {
|
17312
|
-
try {
|
17313
|
-
me.compact();
|
17314
|
-
me._onChange();
|
17315
|
-
}
|
17316
|
-
catch (err) {
|
17317
|
-
me._onError(err);
|
17318
|
-
}
|
17319
|
-
};
|
17356
|
+
this.content = document.createElement('div');
|
17357
|
+
this.content.className = 'jsoneditor-outer';
|
17320
17358
|
|
17321
|
-
|
17322
|
-
|
17323
|
-
|
17324
|
-
|
17325
|
-
|
17326
|
-
|
17327
|
-
|
17328
|
-
|
17329
|
-
|
17330
|
-
|
17331
|
-
|
17332
|
-
|
17333
|
-
|
17359
|
+
if (this.options.mainMenuBar) {
|
17360
|
+
util.addClassName(this.content, 'has-main-menu-bar');
|
17361
|
+
|
17362
|
+
// create menu
|
17363
|
+
this.menu = document.createElement('div');
|
17364
|
+
this.menu.className = 'jsoneditor-menu';
|
17365
|
+
this.frame.appendChild(this.menu);
|
17366
|
+
|
17367
|
+
// create format button
|
17368
|
+
var buttonFormat = document.createElement('button');
|
17369
|
+
buttonFormat.type = 'button';
|
17370
|
+
buttonFormat.className = 'jsoneditor-format';
|
17371
|
+
buttonFormat.title = 'Format JSON data, with proper indentation and line feeds (Ctrl+\\)';
|
17372
|
+
this.menu.appendChild(buttonFormat);
|
17373
|
+
buttonFormat.onclick = function () {
|
17374
|
+
try {
|
17375
|
+
me.format();
|
17376
|
+
me._onChange();
|
17377
|
+
}
|
17378
|
+
catch (err) {
|
17379
|
+
me._onError(err);
|
17380
|
+
}
|
17381
|
+
};
|
17382
|
+
|
17383
|
+
// create compact button
|
17384
|
+
var buttonCompact = document.createElement('button');
|
17385
|
+
buttonCompact.type = 'button';
|
17386
|
+
buttonCompact.className = 'jsoneditor-compact';
|
17387
|
+
buttonCompact.title = 'Compact JSON data, remove all whitespaces (Ctrl+Shift+\\)';
|
17388
|
+
this.menu.appendChild(buttonCompact);
|
17389
|
+
buttonCompact.onclick = function () {
|
17390
|
+
try {
|
17391
|
+
me.compact();
|
17392
|
+
me._onChange();
|
17393
|
+
}
|
17394
|
+
catch (err) {
|
17395
|
+
me._onError(err);
|
17396
|
+
}
|
17397
|
+
};
|
17398
|
+
|
17399
|
+
// create repair button
|
17400
|
+
var buttonRepair = document.createElement('button');
|
17401
|
+
buttonRepair.type = 'button';
|
17402
|
+
buttonRepair.className = 'jsoneditor-repair';
|
17403
|
+
buttonRepair.title = 'Repair JSON: fix quotes and escape characters, remove comments and JSONP notation, turn JavaScript objects into JSON.';
|
17404
|
+
this.menu.appendChild(buttonRepair);
|
17405
|
+
buttonRepair.onclick = function () {
|
17406
|
+
try {
|
17407
|
+
me.repair();
|
17408
|
+
me._onChange();
|
17409
|
+
}
|
17410
|
+
catch (err) {
|
17411
|
+
me._onError(err);
|
17412
|
+
}
|
17413
|
+
};
|
17414
|
+
|
17415
|
+
// create mode box
|
17416
|
+
if (this.options && this.options.modes && this.options.modes.length) {
|
17417
|
+
this.modeSwitcher = new ModeSwitcher(this.menu, this.options.modes, this.options.mode, function onSwitch(mode) {
|
17418
|
+
// switch mode and restore focus
|
17419
|
+
me.setMode(mode);
|
17420
|
+
me.modeSwitcher.focus();
|
17421
|
+
});
|
17334
17422
|
}
|
17335
|
-
};
|
17336
17423
|
|
17337
|
-
|
17338
|
-
|
17339
|
-
|
17340
|
-
|
17341
|
-
|
17342
|
-
|
17343
|
-
|
17424
|
+
if (this.mode == 'code') {
|
17425
|
+
var poweredBy = document.createElement('a');
|
17426
|
+
poweredBy.appendChild(document.createTextNode('powered by ace'));
|
17427
|
+
poweredBy.href = 'http://ace.ajax.org';
|
17428
|
+
poweredBy.target = '_blank';
|
17429
|
+
poweredBy.className = 'jsoneditor-poweredBy';
|
17430
|
+
poweredBy.onclick = function () {
|
17431
|
+
// TODO: this anchor falls below the margin of the content,
|
17432
|
+
// therefore the normal a.href does not work. We use a click event
|
17433
|
+
// for now, but this should be fixed.
|
17434
|
+
window.open(poweredBy.href, poweredBy.target);
|
17435
|
+
};
|
17436
|
+
this.menu.appendChild(poweredBy);
|
17437
|
+
}
|
17344
17438
|
}
|
17345
17439
|
|
17346
17440
|
var emptyNode = {};
|
@@ -17348,10 +17442,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17348
17442
|
&& typeof(this.options.onEditable === 'function')
|
17349
17443
|
&& !this.options.onEditable(emptyNode));
|
17350
17444
|
|
17351
|
-
this.content = document.createElement('div');
|
17352
|
-
this.content.className = 'jsoneditor-outer';
|
17353
17445
|
this.frame.appendChild(this.content);
|
17354
|
-
|
17355
17446
|
this.container.appendChild(this.frame);
|
17356
17447
|
|
17357
17448
|
if (this.mode == 'code') {
|
@@ -17396,19 +17487,6 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17396
17487
|
});
|
17397
17488
|
}
|
17398
17489
|
|
17399
|
-
var poweredBy = document.createElement('a');
|
17400
|
-
poweredBy.appendChild(document.createTextNode('powered by ace'));
|
17401
|
-
poweredBy.href = 'http://ace.ajax.org';
|
17402
|
-
poweredBy.target = '_blank';
|
17403
|
-
poweredBy.className = 'jsoneditor-poweredBy';
|
17404
|
-
poweredBy.onclick = function () {
|
17405
|
-
// TODO: this anchor falls below the margin of the content,
|
17406
|
-
// therefore the normal a.href does not work. We use a click event
|
17407
|
-
// for now, but this should be fixed.
|
17408
|
-
window.open(poweredBy.href, poweredBy.target);
|
17409
|
-
};
|
17410
|
-
this.menu.appendChild(poweredBy);
|
17411
|
-
|
17412
17490
|
// register onchange event
|
17413
17491
|
aceEditor.on('change', this._onChange.bind(this));
|
17414
17492
|
aceEditor.on('changeSelection', this._onSelect.bind(this));
|
@@ -17441,12 +17519,12 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17441
17519
|
this.dom.validationErrorsContainer = validationErrorsContainer;
|
17442
17520
|
this.frame.appendChild(validationErrorsContainer);
|
17443
17521
|
|
17444
|
-
var
|
17445
|
-
|
17446
|
-
|
17447
|
-
|
17448
|
-
this.dom.
|
17449
|
-
validationErrorsContainer.appendChild(
|
17522
|
+
var additionalErrorsIndication = document.createElement('div');
|
17523
|
+
additionalErrorsIndication.style.display = 'none';
|
17524
|
+
additionalErrorsIndication.className = "jsoneditor-additional-errors fadein";
|
17525
|
+
additionalErrorsIndication.innerHTML = "Scroll for more ▿";
|
17526
|
+
this.dom.additionalErrorsIndication = additionalErrorsIndication;
|
17527
|
+
validationErrorsContainer.appendChild(additionalErrorsIndication);
|
17450
17528
|
|
17451
17529
|
if (options.statusBar) {
|
17452
17530
|
util.addClassName(this.content, 'has-status-bar');
|
@@ -17600,20 +17678,18 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17600
17678
|
|
17601
17679
|
/**
|
17602
17680
|
* Event handler for mousedown.
|
17603
|
-
* @param {Event} event
|
17604
17681
|
* @private
|
17605
17682
|
*/
|
17606
|
-
textmode._onMouseDown = function (
|
17683
|
+
textmode._onMouseDown = function () {
|
17607
17684
|
this._updateCursorInfo();
|
17608
17685
|
this._emitSelectionChange();
|
17609
17686
|
};
|
17610
17687
|
|
17611
17688
|
/**
|
17612
17689
|
* Event handler for blur.
|
17613
|
-
* @param {Event} event
|
17614
17690
|
* @private
|
17615
17691
|
*/
|
17616
|
-
textmode._onBlur = function (
|
17692
|
+
textmode._onBlur = function () {
|
17617
17693
|
var me = this;
|
17618
17694
|
// this allows to avoid blur when clicking inner elements (like the errors panel)
|
17619
17695
|
// just make sure to set the isFocused to true on the inner element onclick callback
|
@@ -17653,7 +17729,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17653
17729
|
line: line,
|
17654
17730
|
column: col,
|
17655
17731
|
count: count
|
17656
|
-
}
|
17732
|
+
};
|
17657
17733
|
|
17658
17734
|
if(me.options.statusBar) {
|
17659
17735
|
updateDisplay();
|
@@ -17672,7 +17748,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17672
17748
|
line: line,
|
17673
17749
|
column: col,
|
17674
17750
|
count: count
|
17675
|
-
}
|
17751
|
+
};
|
17676
17752
|
|
17677
17753
|
if(this.options.statusBar) {
|
17678
17754
|
updateDisplay();
|
@@ -17700,11 +17776,22 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17700
17776
|
var currentSelection = this.getTextSelection();
|
17701
17777
|
this._selectionChangedHandler(currentSelection.start, currentSelection.end, currentSelection.text);
|
17702
17778
|
}
|
17703
|
-
}
|
17779
|
+
};
|
17704
17780
|
|
17705
|
-
|
17706
|
-
|
17707
|
-
|
17781
|
+
/**
|
17782
|
+
* refresh ERROR annotations state
|
17783
|
+
* error annotations are handled by the ace json mode (ace/mode/json)
|
17784
|
+
* validation annotations are handled by this mode
|
17785
|
+
* therefore in order to refresh we send only the annotations of error type in order to maintain its state
|
17786
|
+
* @private
|
17787
|
+
*/
|
17788
|
+
textmode._refreshAnnotations = function () {
|
17789
|
+
var session = this.aceEditor && this.aceEditor.getSession();
|
17790
|
+
if (session) {
|
17791
|
+
var errEnnotations = session.getAnnotations().filter(function(annotation) {return annotation.type === 'error' });
|
17792
|
+
session.setAnnotations(errEnnotations);
|
17793
|
+
}
|
17794
|
+
};
|
17708
17795
|
|
17709
17796
|
/**
|
17710
17797
|
* Destroy the editor. Clean up DOM, event listeners, and web workers.
|
@@ -17886,19 +17973,25 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
17886
17973
|
var json;
|
17887
17974
|
try {
|
17888
17975
|
json = this.get(); // this can fail when there is no valid json
|
17889
|
-
this.parseErrorIndication
|
17976
|
+
if (this.parseErrorIndication) {
|
17977
|
+
this.parseErrorIndication.style.display = 'none';
|
17978
|
+
}
|
17890
17979
|
doValidate = true;
|
17891
17980
|
}
|
17892
17981
|
catch (err) {
|
17893
17982
|
if (this.getText()) {
|
17894
|
-
this.parseErrorIndication
|
17983
|
+
if (this.parseErrorIndication) {
|
17984
|
+
this.parseErrorIndication.style.display = 'block';
|
17985
|
+
}
|
17895
17986
|
// try to extract the line number from the jsonlint error message
|
17896
17987
|
var match = /\w*line\s*(\d+)\w*/g.exec(err.message);
|
17897
17988
|
var line;
|
17898
17989
|
if (match) {
|
17899
17990
|
line = +match[1];
|
17900
17991
|
}
|
17901
|
-
this.parseErrorIndication
|
17992
|
+
if (this.parseErrorIndication) {
|
17993
|
+
this.parseErrorIndication.title = !isNaN(line) ? ('parse error on line ' + line) : 'parse error - check that the json is valid';
|
17994
|
+
}
|
17902
17995
|
parseErrors.push({
|
17903
17996
|
type: 'error',
|
17904
17997
|
message: err.message.replace(/\n/g, '<br>'),
|
@@ -18003,7 +18096,7 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
18003
18096
|
if (this.dom.validationErrors) {
|
18004
18097
|
this.dom.validationErrors.parentNode.removeChild(this.dom.validationErrors);
|
18005
18098
|
this.dom.validationErrors = null;
|
18006
|
-
this.dom.
|
18099
|
+
this.dom.additionalErrorsIndication.style.display = 'none';
|
18007
18100
|
|
18008
18101
|
this.content.style.marginBottom = '';
|
18009
18102
|
this.content.style.paddingBottom = '';
|
@@ -18088,12 +18181,12 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
18088
18181
|
|
18089
18182
|
this.dom.validationErrors = validationErrors;
|
18090
18183
|
this.dom.validationErrorsContainer.appendChild(validationErrors);
|
18091
|
-
this.dom.
|
18184
|
+
this.dom.additionalErrorsIndication.title = errors.length + " errors total";
|
18092
18185
|
|
18093
18186
|
if (this.dom.validationErrorsContainer.clientHeight < this.dom.validationErrorsContainer.scrollHeight) {
|
18094
|
-
this.dom.
|
18187
|
+
this.dom.additionalErrorsIndication.style.display = 'block';
|
18095
18188
|
this.dom.validationErrorsContainer.onscroll = function () {
|
18096
|
-
me.dom.
|
18189
|
+
me.dom.additionalErrorsIndication.style.display =
|
18097
18190
|
(me.dom.validationErrorsContainer.clientHeight > 0 && me.dom.validationErrorsContainer.scrollTop === 0) ? 'block' : 'none';
|
18098
18191
|
}
|
18099
18192
|
} else {
|
@@ -18182,13 +18275,10 @@ return /******/ (function(modules) { // webpackBootstrap
|
|
18182
18275
|
};
|
18183
18276
|
|
18184
18277
|
/**
|
18185
|
-
* Callback
|
18278
|
+
* Callback registration for selection change
|
18186
18279
|
* @param {selectionCallback} callback
|
18187
18280
|
*
|
18188
18281
|
* @callback selectionCallback
|
18189
|
-
* @param {{row:Number, column:Number}} startPos selection start position
|
18190
|
-
* @param {{row:Number, column:Number}} endPos selected end position
|
18191
|
-
* @param {String} text selected text
|
18192
18282
|
*/
|
18193
18283
|
textmode.onTextSelectionChange = function (callback) {
|
18194
18284
|
if (typeof callback === 'function') {
|