wunderbaum 0.3.0 → 0.3.2

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/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "wunderbaum",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "title": "A treegrid control.",
5
5
  "description": "JavaScript tree/grid/treegrid control.",
6
- "main": "dist/wunderbaum.umd.js",
7
- "types": "dist/wunderbaum.d.ts",
8
- "module": "dist/wunderbaum.esm.min.js",
9
6
  "homepage": "https://github.com/mar10/wunderbaum",
10
7
  "author": {
11
8
  "name": "Martin Wendt",
12
- "url": "http://careers.stackoverflow.com/martin-wendt"
9
+ "url": "https://github.com/mar10"
13
10
  },
14
11
  "repository": {
15
12
  "type": "git",
@@ -25,12 +22,17 @@
25
22
  "url": "https://raw.githubusercontent.com/mar10/wunderbaum/main/LICENSE.txt"
26
23
  }
27
24
  ],
25
+ "main": "./dist/wunderbaum.umd.js",
26
+ "module": "./dist/wunderbaum.esm.js",
27
+ "types": "./dist/wunderbaum.d.ts",
28
28
  "exports": {
29
29
  ".": {
30
- "require": "./dist/wunderbaum.umd.min.js",
31
- "import": "./dist/wunderbaum.esm.min.js",
32
- "style": "./dist/wunderbaum.css"
33
- }
30
+ "types": "./dist/wunderbaum.d.ts",
31
+ "require": "./dist/wunderbaum.umd.js",
32
+ "import": "./dist/wunderbaum.esm.js"
33
+ },
34
+ "./dist/": "./dist/",
35
+ "./src/": "./src/"
34
36
  },
35
37
  "files": [
36
38
  "src",
@@ -45,35 +47,38 @@
45
47
  "control"
46
48
  ],
47
49
  "devDependencies": {
48
- "@rollup/plugin-typescript": "^8.3.0",
49
- "@types/jest": "^27.4.1",
50
- "concurrently": "^7.1.0",
51
- "eslint": "^8.12.0",
50
+ "@rollup/plugin-terser": "^0.4.3",
51
+ "@rollup/plugin-typescript": "^11.1.1",
52
+ "@types/jest": "^29.5.2",
53
+ "concurrently": "^8.1.0",
52
54
  "eslint-config-jquery": "^3.0.0",
53
- "eslint-config-prettier": "^8.5.0",
54
- "eslint-plugin-prettier": "^4.0.0",
55
- "grunt": "^1.4.1",
55
+ "eslint-config-prettier": "^8.8.0",
56
+ "eslint-plugin-prettier": "^4.2.1",
57
+ "eslint": "^8.41.0",
56
58
  "grunt-contrib-connect": "^3.0.0",
57
- "grunt-contrib-qunit": "^6.0.0",
59
+ "grunt-contrib-qunit": "^7.0.0",
58
60
  "grunt-contrib-watch": "^1.1.0",
59
61
  "grunt-exec": "^3.0.0",
60
62
  "grunt-yabs": "^1.3.0",
61
- "http-server": "^14.1.0",
62
- "node-sass": "^7.0.0",
63
- "nodemon": "^2.0.15",
64
- "prettier": "^2.6.2",
63
+ "grunt": "^1.6.1",
64
+ "http-server": "^14.1.1",
65
+ "node-sass": "^9.0.0",
66
+ "nodemon": "^2.0.22",
67
+ "postcss-url": "^10.1.3",
68
+ "postcss": "^8.2.24",
69
+ "prettier": "^2.8.8",
65
70
  "pretty-quick": "^3.1.3",
66
- "puppeteer": "^13.5.2",
67
- "qunit": "^2.18.1",
68
- "rollup": "^2.70.1",
71
+ "puppeteer": "^20.5.0",
72
+ "qunit": "^2.19.4",
69
73
  "rollup-plugin-modify": "^3.0.0",
70
- "rollup-plugin-scss": "^3.0.0",
71
- "terser": "^5.12.1",
72
- "ts-jest": "^27.1.4",
73
- "ts-node": "^10.7.0",
74
- "tslib": "^2.3.1",
75
- "typedoc": "^0.22.13",
76
- "typescript": "^4.6.3"
74
+ "rollup-plugin-scss": "^4.0.0",
75
+ "rollup": "^3.23.0",
76
+ "terser": "^5.17.7",
77
+ "ts-jest": "^29.1.0",
78
+ "ts-node": "^10.9.1",
79
+ "tslib": "^2.5.2",
80
+ "typedoc": "^0.24.7",
81
+ "typescript": "^5.0.0"
77
82
  },
78
83
  "nodemonConfig": {
79
84
  "watch": [
@@ -96,12 +101,12 @@
96
101
  "docs": "typedoc && touch docs/api/.nojekyll && rm docs/unittest/*.*; cp test/unit/*.* docs/unittest",
97
102
  "format": "prettier src -w && npm run lint",
98
103
  "lint": "prettier src --check && tsc -t esnext --noEmit",
99
- "build:types": "tsc -t esnext --moduleResolution node -d --emitDeclarationOnly --outFile build/wunderbaum.d.ts src/wunderbaum.ts",
100
- "build:js": "rollup -c rollup.config.js",
101
- "build:minjs:umd": "terser build/wunderbaum.umd.js --compress --mangle --source-map \"url='wunderbaum.umd.min.js.map'\" --output build/wunderbaum.umd.min.js",
102
- "build:minjs:esm": "terser build/wunderbaum.esm.js --compress --mangle --source-map \"url='wunderbaum.esm.min.js.map'\" --output build/wunderbaum.esm.min.js",
104
+ "build:minjs:umd": "terser build/wunderbaum.umd.js --compress --mangle --source-map \"base='build',url='wunderbaum.umd.min.js.map',filename='wunderbaum.umd.js'\" --output build/wunderbaum.umd.min.js",
105
+ "build:minjs:esm": "terser build/wunderbaum.esm.js --compress --mangle --source-map \"base='build',url='wunderbaum.esm.min.js.map',filename='wunderbaum.esm.js'\" --output build/wunderbaum.esm.min.js",
103
106
  "build:minjs": "npm run build:minjs:esm -s && npm run build:minjs:umd -s",
104
- "build": "npm run format && mkdir build; rm build/*.*; ls build && npm run build:js -s && npm run build:minjs -s && npm run build:types -s && npm run docs",
107
+ "build:js": "rollup -c rollup.config.mjs && npm run build:minjs",
108
+ "build:types": "tsc -t esnext --moduleResolution node -d --emitDeclarationOnly --outFile build/wunderbaum.d.ts src/wunderbaum.ts",
109
+ "build": "npm run format && mkdir build; rm build/*.*; ls build && npm run build:js -s && npm run build:types -s && npm run docs",
105
110
  "make_dist": "npm run build && rm dist/*.* ; cp build/*.* dist",
106
111
  "watch:umd": "nodemon --watch src --ext 'ts' -x \"npm run build:minjs\"",
107
112
  "watch": "nodemon",
@@ -237,6 +237,7 @@ export class EditExtension extends WunderbaumExtension {
237
237
  * @param opts.canKeepOpen
238
238
  */
239
239
  _stopEditTitle(apply: boolean, options: any) {
240
+ options ??= {};
240
241
  const focusElem = document.activeElement as HTMLInputElement;
241
242
  let newValue = focusElem ? getValueFromElem(focusElem) : null;
242
243
  const node = this.curEditNode;
package/src/wb_node.ts CHANGED
@@ -1090,7 +1090,7 @@ export class WunderbaumNode {
1090
1090
  } finally {
1091
1091
  this._requestId = 0;
1092
1092
  elap = Date.now() - start;
1093
- if (tree.options.debugLevel >= 3) {
1093
+ if (tree.options.debugLevel! >= 3) {
1094
1094
  tree.logInfo(
1095
1095
  `Load source took ${elap / 1000} seconds (transfer: ${
1096
1096
  elapLoad / 1000
@@ -1149,7 +1149,7 @@ export class WunderbaumNode {
1149
1149
 
1150
1150
  /* Log to console if opts.debugLevel >= 4 */
1151
1151
  logDebug(...args: any[]) {
1152
- if (this.tree.options.debugLevel >= 4) {
1152
+ if (this.tree.options.debugLevel! >= 4) {
1153
1153
  Array.prototype.unshift.call(args, this.toString());
1154
1154
  console.log.apply(console, args);
1155
1155
  }
@@ -1157,7 +1157,7 @@ export class WunderbaumNode {
1157
1157
 
1158
1158
  /* Log error to console. */
1159
1159
  logError(...args: any[]) {
1160
- if (this.tree.options.debugLevel >= 1) {
1160
+ if (this.tree.options.debugLevel! >= 1) {
1161
1161
  Array.prototype.unshift.call(args, this.toString());
1162
1162
  console.error.apply(console, args);
1163
1163
  }
@@ -1165,7 +1165,7 @@ export class WunderbaumNode {
1165
1165
 
1166
1166
  /* Log to console if opts.debugLevel >= 3 */
1167
1167
  logInfo(...args: any[]) {
1168
- if (this.tree.options.debugLevel >= 3) {
1168
+ if (this.tree.options.debugLevel! >= 3) {
1169
1169
  Array.prototype.unshift.call(args, this.toString());
1170
1170
  console.info.apply(console, args);
1171
1171
  }
@@ -1173,7 +1173,7 @@ export class WunderbaumNode {
1173
1173
 
1174
1174
  /* Log warning to console if opts.debugLevel >= 2 */
1175
1175
  logWarn(...args: any[]) {
1176
- if (this.tree.options.debugLevel >= 2) {
1176
+ if (this.tree.options.debugLevel! >= 2) {
1177
1177
  Array.prototype.unshift.call(args, this.toString());
1178
1178
  console.warn.apply(console, args);
1179
1179
  }
package/src/wb_options.ts CHANGED
@@ -116,7 +116,7 @@ export interface WunderbaumOptions {
116
116
  * 0:quiet, 1:errors, 2:warnings, 3:info, 4:verbose
117
117
  * Default: 3 (4 in local debug environment)
118
118
  */
119
- debugLevel: number;
119
+ debugLevel?: number;
120
120
  /**
121
121
  * Number of levels that are forced to be expanded, and have no expander icon.
122
122
  * E.g. 1 would keep all toplevel nodes expanded.
@@ -193,9 +193,9 @@ export interface WunderbaumOptions {
193
193
 
194
194
  // --- Extensions ------------------------------------------------------------
195
195
  dnd?: DndOptionsType; // = {};
196
- edit: any; // = {};
197
- filter: any; // = {};
198
- grid: any; // = {};
196
+ edit?: any; // = {};
197
+ filter?: any; // = {};
198
+ grid?: any; // = {};
199
199
 
200
200
  // --- Events ----------------------------------------------------------------
201
201
 
@@ -562,15 +562,14 @@ div.wunderbaum {
562
562
  // translate: 0 -3px;
563
563
  // }
564
564
 
565
- div.wb-row.wb-drop-target.wb-drop-before .wb-node .wb-icon::after {
565
+ div.wb-row.wb-drop-target.wb-drop-before .wb-node .wb-icon::after,
566
+ div.wb-row.wb-drop-target.wb-drop-after .wb-node .wb-icon::after {
566
567
  content: url(../docs/assets/drop_marker_insert_16x64.png);
567
568
  left: 0; // $icon-outer-width * 1.5;
568
569
  top: ($row-outer-height - 16) / 2 - $row-outer-height / 2;
569
570
  }
570
571
 
571
572
  div.wb-row.wb-drop-target.wb-drop-after .wb-node .wb-icon::after {
572
- content: url(../docs/assets/drop_marker_insert_16x64.png);
573
- left: 0; //$icon-outer-width * 1.5;
574
573
  top: ($row-outer-height - 16) / 2 + $row-outer-height / 2;
575
574
  }
576
575
 
package/src/wunderbaum.ts CHANGED
@@ -1388,7 +1388,7 @@ export class Wunderbaum {
1388
1388
 
1389
1389
  /** Log to console if opts.debugLevel >= 4 */
1390
1390
  logDebug(...args: any[]) {
1391
- if (this.options.debugLevel >= 4) {
1391
+ if (this.options.debugLevel! >= 4) {
1392
1392
  Array.prototype.unshift.call(args, this.toString());
1393
1393
  console.log.apply(console, args);
1394
1394
  }
@@ -1396,7 +1396,7 @@ export class Wunderbaum {
1396
1396
 
1397
1397
  /** Log error to console. */
1398
1398
  logError(...args: any[]) {
1399
- if (this.options.debugLevel >= 1) {
1399
+ if (this.options.debugLevel! >= 1) {
1400
1400
  Array.prototype.unshift.call(args, this.toString());
1401
1401
  console.error.apply(console, args);
1402
1402
  }
@@ -1404,7 +1404,7 @@ export class Wunderbaum {
1404
1404
 
1405
1405
  /** Log to console if opts.debugLevel >= 3 */
1406
1406
  logInfo(...args: any[]) {
1407
- if (this.options.debugLevel >= 3) {
1407
+ if (this.options.debugLevel! >= 3) {
1408
1408
  Array.prototype.unshift.call(args, this.toString());
1409
1409
  console.info.apply(console, args);
1410
1410
  }
@@ -1412,7 +1412,7 @@ export class Wunderbaum {
1412
1412
 
1413
1413
  /** @internal */
1414
1414
  logTime(label: string): string {
1415
- if (this.options.debugLevel >= 4) {
1415
+ if (this.options.debugLevel! >= 4) {
1416
1416
  console.time(this + ": " + label);
1417
1417
  }
1418
1418
  return label;
@@ -1420,14 +1420,14 @@ export class Wunderbaum {
1420
1420
 
1421
1421
  /** @internal */
1422
1422
  logTimeEnd(label: string): void {
1423
- if (this.options.debugLevel >= 4) {
1423
+ if (this.options.debugLevel! >= 4) {
1424
1424
  console.timeEnd(this + ": " + label);
1425
1425
  }
1426
1426
  }
1427
1427
 
1428
1428
  /** Log to console if opts.debugLevel >= 2 */
1429
1429
  logWarn(...args: any[]) {
1430
- if (this.options.debugLevel >= 2) {
1430
+ if (this.options.debugLevel! >= 2) {
1431
1431
  Array.prototype.unshift.call(args, this.toString());
1432
1432
  console.warn.apply(console, args);
1433
1433
  }
@@ -1,5 +0,0 @@
1
- /*!
2
- * Wunderbaum style sheet (generated from wunderbaum.scss)
3
- * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
4
- * v0.3.0, Sat, 27 May 2023 04:56:52 GMT (https://github.com/mar10/wunderbaum)
5
- */div.wunderbaum{box-sizing:border-box;height:100%;min-height:4px;background-color:#fff;margin:0;padding:0;font-family:Helvetica,sans-serif;font-size:14px;color:#56534c;border:2px solid #56534c;border-radius:4px;background-clip:content-box;overflow-x:auto;overflow-y:scroll}div.wunderbaum:focus,div.wunderbaum:focus-within{border-color:#275dc5}div.wunderbaum.wb-disabled{opacity:0.7;pointer-events:none}div.wunderbaum div.wb-list-container{position:relative;min-height:4px}div.wunderbaum div.wb-header{position:sticky;top:0;z-index:2}div.wunderbaum div.wb-header,div.wunderbaum div.wb-list-container{overflow:unset}div.wunderbaum div.wb-row{position:absolute;width:100%;height:22px;line-height:22px;border:1px solid transparent}div.wunderbaum.wb-fixed-col span.wb-col:first-of-type{position:sticky;left:0;z-index:1;background-color:#fff}div.wunderbaum.wb-fixed-col div.wb-header span.wb-col:first-of-type{background-color:#dedede}div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type{background-color:#e5f3fb}div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-active:hover span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-selected:hover span.wb-col:first-of-type{background-color:#dceff8}div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row:hover span.wb-col:first-of-type{background-color:#f7fcfe}div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type{background-color:#f0f0f0;border-color:#acacac}div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type:hover span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type:hover span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type:hover span.wb-col:first-of-type,div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type:hover span.wb-col:first-of-type{background-color:#eaeaea}div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-active,div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-selected,div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-active,div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-selected{background-color:#f0f0f0;border-color:#acacac}div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-active:hover,div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-selected:hover,div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-active:hover,div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-selected:hover{background-color:#eaeaea}div.wunderbaum.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected){background-color:#f7f7f7}div.wunderbaum.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected):hover{background-color:#f3f3f3}div.wunderbaum div.wb-node-list div.wb-row:hover{background-color:#f7fcfe}div.wunderbaum div.wb-node-list div.wb-row.wb-active,div.wunderbaum div.wb-node-list div.wb-row.wb-selected{background-color:#e5f3fb}div.wunderbaum div.wb-node-list div.wb-row.wb-active:hover,div.wunderbaum div.wb-node-list div.wb-row.wb-selected:hover{background-color:#dceff8}div.wunderbaum div.wb-node-list div.wb-row.wb-focus:not(.wb-active){border-style:dotted;border-color:#70c0e7}div.wunderbaum div.wb-node-list div.wb-row.wb-active{border-style:solid;border-color:#70c0e7}div.wunderbaum div.wb-node-list div.wb-row.wb-active:hover{border-color:#26a0da}div.wunderbaum div.wb-node-list div.wb-row.wb-loading{font-style:italic}div.wunderbaum div.wb-node-list div.wb-row.wb-busy,div.wunderbaum div.wb-node-list div.wb-row i.wb-busy,div.wunderbaum div.wb-node-list div.wb-row .wb-col.wb-busy{font-style:italic;background:repeating-linear-gradient(45deg, transparent, transparent 3.88px, #dedede 3.88px, #dedede 7.78px);animation:wb-busy-animation 2s linear infinite}div.wunderbaum div.wb-node-list div.wb-row.wb-error,div.wunderbaum div.wb-node-list div.wb-row.wb-status-error{color:#b5373b}div.wunderbaum div.wb-header{position:sticky;height:22px;border-bottom:1px solid #56534c;padding:0;background-color:#dedede}div.wunderbaum div.wb-header span.wb-col{font-weight:bold;overflow:visible}div.wunderbaum div.wb-header span.wb-col-title{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}div.wunderbaum div.wb-header span.wb-col-resizer{position:absolute;top:0;right:-1px;width:3px;border:none;border-right:2px solid #56534c;height:100%;cursor:col-resize}div.wunderbaum span.wb-col{position:absolute;display:inline-block;overflow:hidden;height:20px;line-height:20px;padding:0 2px;border-right:1px solid #dedede;white-space:nowrap}div.wunderbaum span.wb-col:last-of-type{border-right:none}div.wunderbaum span.wb-node{user-select:none}div.wunderbaum span.wb-node i.wb-checkbox,div.wunderbaum span.wb-node i.wb-expander,div.wunderbaum span.wb-node i.wb-icon,div.wunderbaum span.wb-node i.wb-indent{height:20px;width:20px;padding:2px 2px;display:inline-block}div.wunderbaum span.wb-node i.bi::before{vertical-align:baseline}div.wunderbaum span.wb-node img.wb-icon{width:16px;height:16px;padding:2px 2px}div.wunderbaum span.wb-node i.wb-indent::before{content:"\00a0"}div.wunderbaum span.wb-node i.wb-expander.wb-spin,div.wunderbaum span.wb-node i.wb-icon.wb-spin{height:unset;width:unset;padding:0 3px;animation:wb-spin-animation 2s linear infinite}div.wunderbaum span.wb-node span.wb-title{min-width:1em;vertical-align:top;overflow-x:hidden;display:inline-block;white-space:nowrap;text-overflow:ellipsis}div.wunderbaum.wb-grid div.wb-header div.wb-row span.wb-col:hover{background-color:#c5c5c5}div.wunderbaum.wb-grid.wb-cell-mode div.wb-header div.wb-row span.wb-col.wb-active{background-color:#dceff8}div.wunderbaum.wb-grid div.wb-node-list div.wb-row{border-bottom-color:#dedede}div.wunderbaum.wb-grid div.wb-node-list div.wb-row:hover:not(.wb-active):not(.wb-selected){background-color:#f7fcfe}div.wunderbaum.wb-grid div.wb-node-list div.wb-row.wb-active{border-bottom-color:#70c0e7}div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col{border-right:1px solid #dedede}div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col input.wb-input-edit,div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="color"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="date"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="datetime"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="datetime-local"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="email"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="month"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="number"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="password"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="search"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="tel"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="text"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="time"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="url"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input[type="week"],div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>select{width:100%;max-height:20px;border:none}div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>input:focus,div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col>select:focus{border:1px dashed #70c0e7}div.wunderbaum.wb-grid.wb-cell-mode div.wb-row:not(.wb-colspan).wb-active span.wb-col.wb-active{background-color:#b3b3b3}div.wunderbaum.wb-grid.wb-cell-mode:focus-within div.wb-row:not(.wb-colspan):not(.wb-selected) span.wb-col.wb-active,div.wunderbaum.wb-grid.wb-cell-mode:focus div.wb-row:not(.wb-colspan):not(.wb-selected) span.wb-col.wb-active{background-color:#f7fcfe}div.wunderbaum.wb-grid.wb-cell-mode:focus-within div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active,div.wunderbaum.wb-grid.wb-cell-mode:focus div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active{background-color:#f7fcfe}div.wunderbaum.wb-grid.wb-cell-mode:focus-within div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active span.wb-col.wb-active,div.wunderbaum.wb-grid.wb-cell-mode:focus div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active span.wb-col.wb-active{background-color:#7dc6e9}div.wunderbaum.wb-grid.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected){background-color:#f7f7f7}div.wunderbaum.wb-grid.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected):hover{background-color:#f3f3f3}div.wunderbaum.wb-grid:not(:focus-within) div.wb-node-list div.wb-row,div.wunderbaum.wb-grid:not(:focus) div.wb-node-list div.wb-row{border-bottom-color:#dedede}div.wunderbaum.wb-ext-filter-dim div.wb-node-list div.wb-row,div.wunderbaum.wb-ext-filter-hide div.wb-node-list div.wb-row{color:#dedede}div.wunderbaum.wb-ext-filter-dim div.wb-node-list div.wb-row.wb-submatch,div.wunderbaum.wb-ext-filter-hide div.wb-node-list div.wb-row.wb-submatch{color:#868581}div.wunderbaum.wb-ext-filter-dim div.wb-node-list div.wb-row.wb-match,div.wunderbaum.wb-ext-filter-hide div.wb-node-list div.wb-row.wb-match{color:#56534c}div.wunderbaum div.wb-row.wb-drag-source{opacity:0.5}div.wunderbaum div.wb-row.wb-drag-source .wb-node{background-color:#d3d2ce}div.wunderbaum div.wb-row.wb-drop-target{overflow:visible}div.wunderbaum div.wb-row.wb-drop-target .wb-node{background-color:#d4ecf8;overflow:visible}div.wunderbaum div.wb-row.wb-drop-target .wb-node .wb-icon{position:relative;overflow:visible}div.wunderbaum div.wb-row.wb-drop-target .wb-node .wb-icon::after{position:absolute;z-index:1000;content:url(../docs/assets/drop_marker_16x32.png);left:0;top:3px}div.wunderbaum div.wb-row.wb-drop-target.wb-drop-before .wb-node .wb-icon::after{content:url(../docs/assets/drop_marker_insert_16x64.png);left:0;top:-8px}div.wunderbaum div.wb-row.wb-drop-target.wb-drop-after .wb-node .wb-icon::after{content:url(../docs/assets/drop_marker_insert_16x64.png);left:0;top:14px}div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n+1),div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n+1){background:#ffffc9}div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n+2),div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n+2){background:#daffda}div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n+3),div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n+3){background:#ffd9fe}div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n+4),div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n+4){background:#ccfafa}div.wunderbaum.wb-fade-expander i.wb-expander{transition:color 1.5s;color:rgba(86,83,76,0)}div.wunderbaum.wb-fade-expander div.wb-row.wb-loading i.wb-expander,div.wunderbaum.wb-fade-expander:hover i.wb-expander,div.wunderbaum.wb-fade-expander:focus i.wb-expander,div.wunderbaum.wb-fade-expander:focus-within i.wb-expander,div.wunderbaum.wb-fade-expander [class*="wb-statusnode-"] i.wb-expander{transition:color 0.6s;color:#56534c}div.wunderbaum div.wb-row.wb-skeleton span.wb-title,div.wunderbaum div.wb-row.wb-skeleton i.wb-icon{animation:wb-skeleton-animation 1s linear infinite alternate;border-radius:0.25em;color:transparent;opacity:0.7}div.wunderbaum.wb-checkbox-auto-hide i.wb-checkbox{visibility:hidden}div.wunderbaum.wb-checkbox-auto-hide .wb-row:hover i.wb-checkbox,div.wunderbaum.wb-checkbox-auto-hide .wb-row.wb-selected i.wb-checkbox{visibility:unset}div.wunderbaum.wb-checkbox-auto-hide:focus .wb-row.wb-active i.wb-checkbox,div.wunderbaum.wb-checkbox-auto-hide:focus-within .wb-row.wb-active i.wb-checkbox{visibility:unset}.wb-helper-center{text-align:center}.wb-helper-disabled{color:#8c877c}.wb-helper-hidden{display:none}.wb-helper-invalid{color:#b5373b}.wb-helper-lazy-expander{color:#26a0da}.wb-helper-link{cursor:pointer}.wb-no-select{user-select:none;-webkit-user-select:none}.wb-no-select span.wb-title{user-select:contain;-webkit-user-select:contain}.wb-helper-start,.wb-helper-start>input{text-align:left}.wb-helper-end,.wb-helper-end>input{text-align:right}.wb-rtl .wb-helper-start,.wb-rtl .wb-helper-start>input{text-align:right}.wb-rtl .wb-helper-end,.wb-rtl .wb-helper-end>input{text-align:left}.wb-col input[type="checkbox"]:indeterminate{color:#8c877c;background-color:red}.wb-col input:invalid{color:#b5373b;background-color:#f5ddde}@keyframes wb-spin-animation{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes wb-skeleton-animation{0%{background-color:#a3b8c2}100%{background-color:#f0f3f5}}@keyframes wb-busy-animation{0%{background-position:0 0}100%{background-position:0 22px}}