wunderbaum 0.5.1 → 0.5.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.
@@ -210,7 +210,7 @@ div.wunderbaum span.wb-col {
210
210
  overflow: hidden;
211
211
  height: var(--wb-row-inner-height);
212
212
  line-height: var(--wb-row-inner-height);
213
- padding: 0 val(--wb-col-padding-x);
213
+ padding: 0 var(--wb-col-padding-x);
214
214
  border-right: 1px solid var(--wb-grid-color);
215
215
  white-space: nowrap;
216
216
  }
@@ -227,9 +227,14 @@ div.wunderbaum span.wb-node i.wb-icon,
227
227
  div.wunderbaum span.wb-node i.wb-indent {
228
228
  height: var(--wb-icon-outer-height);
229
229
  width: var(--wb-icon-outer-width);
230
- padding: var(--wb-icon-padding) var(--wb-icon-padding-x);
230
+ padding: var(--wb-icon-padding-y) var(--wb-icon-padding-x);
231
231
  display: inline-block;
232
232
  }
233
+ div.wunderbaum span.wb-node i.wb-expander,
234
+ div.wunderbaum span.wb-node i.wb-icon {
235
+ background-repeat: no-repeat;
236
+ background-size: contain;
237
+ }
233
238
  div.wunderbaum span.wb-node i.bi::before {
234
239
  vertical-align: baseline;
235
240
  }
@@ -350,16 +355,16 @@ div.wunderbaum div.wb-row.wb-drop-target .wb-node .wb-icon::after {
350
355
  z-index: 1000;
351
356
  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAMAAABA3o1rAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACKUExURe/v9/f39+//7+f35+f/79bW5wgIawwYd97e55Tnpc731rjA2d7350LOY1LWa7Xvvf///wAQcyAze97e773vxnuczgA5pQBCpdb33rXvxu//9whjxgBaxlKU1oOz5ABz3gB73tbn99bW1rXe/wCM9xiU997v/97e3gCc/xil/9bv/wic/+/3/wAAALM9X5QAAAAudFJOU////////////////////////////////////////////////////////////wCCj3NVAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAqUlEQVQoU6WQ2w6CMAxA54agsCHq1HlFBREv/f/fs1tHAoaoiedlbXrWtGXwhV8FNqAXuAi4DwkShmE0cgGIcSwCCgkSkrAxpEonot0DhQxJptFsbnOpdNdgsFh6VtYwyqzTmG+oijDY7hr22E4qY7QybeGQe46nsxP0Wwc3Q1GWl+qKec8MlqKubxX+xzV7tkDuD1+3d+heigT2zGx/hCMUeUj4wL8CwAsW1kqCTugMCwAAAABJRU5ErkJggg==);
352
357
  left: 0;
353
- top: calc((22px - --wb-icon-height) / 2);
358
+ top: calc((22px - var(--wb-icon-height)) / 2);
354
359
  }
355
360
  div.wunderbaum div.wb-row.wb-drop-target.wb-drop-before .wb-node .wb-icon::after,
356
361
  div.wunderbaum div.wb-row.wb-drop-target.wb-drop-after .wb-node .wb-icon::after {
357
362
  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAMAAACROYkbAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACNUExURe/v9/f39+//7+f35+f/79bW5wgIawwYd97e55Tnpc731rjA2d7350LOY1LWa7Xvvf///wAQcyAze97e773vxgAAAHuczgA5pQBCpdb33rXvxu//9whjxgBaxlKU1oOz5ABz3gB73tbn99bW1rXe/wCM9xiU997v/97e3gCc/xil/9bv/wic/+/3/wAAAParqS4AAAAvdFJOU/////////////////////////////////////////////////////////////8AWqU49wAAAAlwSFlzAAAOwwAADsMBx2+oZAAAALlJREFUOE/FktsSgiAQhglMS8WstKLzQTM77Ps/XguL16I208cFyzB8/LPAYCC/ErARzcCFx23pBgnGfjAxBYhpKDwq3SBB5DeGWCYz0SUDClIkmgeLpV7HMiNDbrbbYbBaWzbaoKTaJiHfQe5oYLA/NBwxTiyVyqTSghYwox4MTmfL5XozgqxjAtODoizv1QPXPXqgKer6WeH9+Iw9XgF5ve15/Q+6/SQSsE+q8yMcocoREgzg3wKAL4vrpBIKREShAAAAAElFTkSuQmCC);
358
363
  left: 0;
359
- top: calc((22px - --wb-icon-height) / 2 - 11px);
364
+ top: calc((22px - var(--wb-icon-height)) / 2 - 11px);
360
365
  }
361
366
  div.wunderbaum div.wb-row.wb-drop-target.wb-drop-after .wb-node .wb-icon::after {
362
- top: calc((22px - --wb-icon-height) / 2 + 11px);
367
+ top: calc((22px - var(--wb-icon-height)) / 2 + 11px);
363
368
  }
364
369
  div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n+1),
365
370
  div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n+1) {
@@ -475,6 +480,7 @@ i.wb-icon > span.wb-badge {
475
480
  text-align: center;
476
481
  white-space: nowrap;
477
482
  border-radius: 0.5rem;
483
+ pointer-events: none;
478
484
  }
479
485
 
480
486
  /* Class 'wb-tristate' is used to mark checkboxes that should toggle like
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/wunderbaum.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AA2EA;AAAA;EAME;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAMF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EAGA;AAsBA;AAuBA;AAkQA;AAoHA;AAwBA;AAgEA;AAEA;AAUA;AAoBA;AAYA;;AAniBA;EAEE;;AAIF;EACE;EACA;;AAGF;EACE;EAEA;;AAMF;EACE;EACA;EACA;;AAGF;AAAA;EAEE;;AAKF;EACE;EACA;EACA;EACA;EACA;;AAMA;EACE;EACA;EACA;EACA;;AAIA;EACE;;AAKF;EAEE;;AAGF;EAEE;;AAGF;EACE;;AAOA;EAEE;EACA;;AAEA;EACE;;AAaN;EAEE;EACA;;AAEA;EACE;;AAON;EACE;;AAEA;EACE;;AAOF;EACE;;AAGF;EAEE;;AAGA;EACE;;AAKJ;EACE;EACA;;AAGF;EAEE;EACA;;AAEA;EAEE;;AAIJ;EACE;;AAGF;AAAA;AAAA;EAGE;EAcA;EASA;;AAGF;EAEE;;AAON;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EAIA;;AAIF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;AAeA;;AAVA;AAAA;AAAA;AAAA;EAIE;EACA;EACA;EACA;;AAIF;EACE;;AAGF;EACE;EACA;EACA;;AAMA;EACE;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;;AAGF;EACE;EAEA;EACA;EACA;EACA;EACA;;AAUI;EACE;;AAON;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIF;EACE;;AAGF;EACE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAgBE;EACA;EACA;;AAGF;AAAA;EAEE;;AAcA;EACE;;AAWJ;EACE;;AAGF;EACE;;AAEA;EACE;;AAON;EACE;;AAEA;EACE;;AAQJ;EACE;;AASJ;EACE;;AAEA;EACE;;AAGF;EACE;;AAcN;EACE;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;EACA;;AAGA;EACE;EACA;;AAEA;EAGE;EACA;EAGA;EACA;EACA;;AAgBR;AAAA;EAIE;EACA;EACA;;AAKF;EACE;;AAUE;AAAA;EAEE;;AAFF;AAAA;EAEE;;AAFF;AAAA;EAEE;;AAFF;AAAA;EAEE;;AAOJ;EAIE;EACA;;AAGF;AAAA;EAKE;EACA;;AAMF;AAAA;EAEE;EACA;EACA;EACA;;AAOF;EACE;;AAGF;AAAA;EAEE;;AAKA;EACE;;;AAMR;AAEA;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AAQJ;AACA;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAIA;AAAA;EAEE;;AAGF;AAAA;EAEE;;;AAIJ;EACE;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAIJ;AAAA;AAAA;AAMA;EACE;EACA;;;AAGF;EAEE;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE","file":"wunderbaum.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/wunderbaum.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AA2EA;AAAA;EAME;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAMF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;EAGA;AAsBA;AAuBA;AAwQA;AAoHA;AAwBA;AAgEA;AAEA;AAUA;AAoBA;AAYA;;AAziBA;EAEE;;AAIF;EACE;EACA;;AAGF;EACE;EAEA;;AAMF;EACE;EACA;EACA;;AAGF;AAAA;EAEE;;AAKF;EACE;EACA;EACA;EACA;EACA;;AAMA;EACE;EACA;EACA;EACA;;AAIA;EACE;;AAKF;EAEE;;AAGF;EAEE;;AAGF;EACE;;AAOA;EAEE;EACA;;AAEA;EACE;;AAaN;EAEE;EACA;;AAEA;EACE;;AAON;EACE;;AAEA;EACE;;AAOF;EACE;;AAGF;EAEE;;AAGA;EACE;;AAKJ;EACE;EACA;;AAGF;EAEE;EACA;;AAEA;EAEE;;AAIJ;EACE;;AAGF;AAAA;AAAA;EAGE;EAcA;EASA;;AAGF;EAEE;;AAON;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EAIA;;AAIF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;AAIJ;EACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;AAqBA;;AAhBA;AAAA;AAAA;AAAA;EAIE;EACA;EACA;EACA;;AAGF;AAAA;EAEE;EACA;;AAIF;EACE;;AAGF;EACE;EACA;EACA;;AAMA;EACE;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;;AAGF;EACE;EAEA;EACA;EACA;EACA;EACA;;AAUI;EACE;;AAON;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIF;EACE;;AAGF;EACE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAgBE;EACA;EACA;;AAGF;AAAA;EAEE;;AAcA;EACE;;AAWJ;EACE;;AAGF;EACE;;AAEA;EACE;;AAON;EACE;;AAEA;EACE;;AAQJ;EACE;;AASJ;EACE;;AAEA;EACE;;AAGF;EACE;;AAcN;EACE;;AAEA;EACE;;AAIJ;EACE;;AAEA;EACE;EACA;;AAGA;EACE;EACA;;AAEA;EAGE;EACA;EAGA;EACA;EACA;;AAgBR;AAAA;EAIE;EACA;EACA;;AAKF;EACE;;AAUE;AAAA;EAEE;;AAFF;AAAA;EAEE;;AAFF;AAAA;EAEE;;AAFF;AAAA;EAEE;;AAOJ;EAIE;EACA;;AAGF;AAAA;EAKE;EACA;;AAMF;AAAA;EAEE;EACA;EACA;EACA;;AAOF;EACE;;AAGF;AAAA;EAEE;;AAKA;EACE;;;AAMR;AAEA;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;;AAQJ;AACA;AAAA;EAEE;;;AAGF;AAAA;EAEE;;;AAIA;AAAA;EAEE;;AAGF;AAAA;EAEE;;;AAIJ;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAIJ;AAAA;AAAA;AAMA;EACE;EACA;;;AAGF;EAEE;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE","file":"wunderbaum.css"}
@@ -412,7 +412,6 @@ declare module "wb_node" {
412
412
  _partload: boolean;
413
413
  match?: boolean;
414
414
  subMatchCount?: number;
415
- subMatchBadge?: HTMLElement;
416
415
  /** @internal */
417
416
  titleWithHighlight?: string;
418
417
  _filterAutoExpanded?: boolean;
@@ -764,10 +763,6 @@ declare module "wb_node" {
764
763
  setIcon(icon: string): void;
765
764
  /** Change node's {@link key} and/or {@link refKey}. */
766
765
  setKey(key: string | null, refKey: string | null): void;
767
- /**
768
- * @deprecated since v0.3.6: use `update()` instead.
769
- */
770
- setModified(change?: ChangeType): void;
771
766
  /**
772
767
  * Trigger a repaint, typically after a status or data change.
773
768
  *
@@ -868,7 +863,7 @@ declare module "wb_options" {
868
863
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
869
864
  * @VERSION, @DATE (https://github.com/mar10/wunderbaum)
870
865
  */
871
- import { ColumnDefinitionList, DndOptionsType, DynamicBoolOption, DynamicBoolOrStringOption, DynamicCheckboxOption, DynamicIconOption, NavModeEnum, NodeTypeDefinitionMap, SelectModeType, WbActivateEventType, WbChangeEventType, WbClickEventType, WbDeactivateEventType, WbErrorEventType, WbIconBadgeCallback, WbInitEventType, WbKeydownEventType, WbNodeData, WbNodeEventType, WbReceiveEventType, WbRenderEventType, WbTreeEventType } from "types";
866
+ import { ColumnDefinitionList, DndOptionsType, DynamicBoolOption, DynamicBoolOrStringOption, DynamicCheckboxOption, DynamicIconOption, EditOptionsType, FilterOptionsType, NavModeEnum, NodeTypeDefinitionMap, SelectModeType, WbActivateEventType, WbChangeEventType, WbClickEventType, WbDeactivateEventType, WbErrorEventType, WbIconBadgeCallback, WbInitEventType, WbKeydownEventType, WbNodeData, WbNodeEventType, WbReceiveEventType, WbRenderEventType, WbTreeEventType } from "types";
872
867
  /**
873
868
  * Available options for [[Wunderbaum]].
874
869
  *
@@ -981,6 +976,20 @@ declare module "wb_options" {
981
976
  * Default: false
982
977
  */
983
978
  autoCollapse?: boolean;
979
+ /**
980
+ * If true, the tree will automatically adjust its height to fit the parent
981
+ * container. This is useful when the tree is embedded in a container with
982
+ * a fixed or calculated sized.
983
+ * If the parent container is unsized (e.g. grows with its content, `height: auto`),
984
+ * then we can define a `height: ...` or `max_height: ...` style on the parent.
985
+ * To avoid a recursive resize-loop, it may be helpful to set `overflow: hidden`
986
+ * on the parent container.
987
+ *
988
+ * Set this option to `false` will disable auto-resizing.
989
+ *
990
+ * @default: true
991
+ */
992
+ adjustHeight?: boolean;
984
993
  /**
985
994
  * HTMLElement that receives the top nodes breadcrumb.
986
995
  * Default: undefined
@@ -1034,9 +1043,14 @@ declare module "wb_options" {
1034
1043
  * Default: true
1035
1044
  */
1036
1045
  quicksearch?: boolean;
1046
+ /**
1047
+ * Scroll Node into view on Expand Click
1048
+ * @default true
1049
+ */
1050
+ scrollIntoViewOnExpandClick?: boolean;
1037
1051
  dnd?: DndOptionsType;
1038
- edit?: any;
1039
- filter?: any;
1052
+ edit?: EditOptionsType;
1053
+ filter?: FilterOptionsType;
1040
1054
  grid?: any;
1041
1055
  /**
1042
1056
  *
@@ -1307,7 +1321,7 @@ declare module "types" {
1307
1321
  badge: string | number | HTMLSpanElement | null | false;
1308
1322
  /** Additional class name(s), separate with space. */
1309
1323
  badgeClass?: string;
1310
- /** Additional class name(s), separate with space. */
1324
+ /** Tooltip for the badge. */
1311
1325
  badgeTooltip?: string;
1312
1326
  }
1313
1327
  export interface WbFocusEventType extends WbTreeEventType {
@@ -1537,6 +1551,8 @@ declare module "types" {
1537
1551
  loadLazy?: boolean;
1538
1552
  /** Ignore `minExpandLevel` option @default false */
1539
1553
  force?: boolean;
1554
+ /** Keep active node visible @default true */
1555
+ keepActiveNodeVisible?: boolean;
1540
1556
  }
1541
1557
  /** Possible values for {@link Wunderbaum.filterNodes()} and {@link Wunderbaum.filterBranches()}. */
1542
1558
  export interface FilterNodesOptions {
@@ -1662,6 +1678,117 @@ declare module "types" {
1662
1678
  * until the start node is reached again @default false */
1663
1679
  wrap?: boolean;
1664
1680
  }
1681
+ export type FilterOptionsType = {
1682
+ /**
1683
+ * Element or selector of an input control for filter query strings
1684
+ * @default null
1685
+ */
1686
+ connectInput?: null | string | Element;
1687
+ /**
1688
+ * Re-apply last filter if lazy data is loaded
1689
+ * @default true
1690
+ */
1691
+ autoApply?: boolean;
1692
+ /**
1693
+ * Expand all branches that contain matches while filtered
1694
+ * @default false
1695
+ */
1696
+ autoExpand?: boolean;
1697
+ /**
1698
+ * Show a badge with number of matching child nodes near parent icons
1699
+ * @default true
1700
+ */
1701
+ counter?: boolean;
1702
+ /**
1703
+ * Match single characters in order, e.g. 'fb' will match 'FooBar'
1704
+ * @default false
1705
+ */
1706
+ fuzzy?: boolean;
1707
+ /**
1708
+ * Hide counter badge if parent is expanded
1709
+ * @default true
1710
+ */
1711
+ hideExpandedCounter?: boolean;
1712
+ /**
1713
+ * Hide expanders if all child nodes are hidden by filter
1714
+ * @default false;
1715
+ */
1716
+ hideExpanders?: boolean;
1717
+ /**
1718
+ * Highlight matches by wrapping inside <mark> tags
1719
+ * @default true
1720
+ */
1721
+ highlight?: boolean;
1722
+ /**
1723
+ * Match end nodes only
1724
+ * @default false
1725
+ */
1726
+ leavesOnly?: boolean;
1727
+ /**
1728
+ * Grayout unmatched nodes (pass "hide" to remove unmatched node instead)
1729
+ * @default 'dim'
1730
+ */
1731
+ mode?: "dim" | "hide";
1732
+ /**
1733
+ * Display a 'no data' status node if result is empty
1734
+ * @default true
1735
+ */
1736
+ noData?: boolean;
1737
+ };
1738
+ export type EditOptionsType = {
1739
+ /**
1740
+ * @default 100
1741
+ */
1742
+ debounce?: number;
1743
+ /**
1744
+ * @default 1
1745
+ */
1746
+ minlength?: number;
1747
+ /**
1748
+ * @default null;
1749
+ */
1750
+ maxlength?: null | number;
1751
+ /**
1752
+ * ["clickActive", "F2", "macEnter"],
1753
+ * @default []
1754
+ */
1755
+ trigger?: string[];
1756
+ /**
1757
+ * @default true
1758
+ */
1759
+ trim?: boolean;
1760
+ /**
1761
+ * @default true
1762
+ */
1763
+ select?: boolean;
1764
+ /**
1765
+ * Handle 'clickActive' only if last click is less than this old (0: always)
1766
+ * @default 1000
1767
+ */
1768
+ slowClickDelay?: number;
1769
+ /**
1770
+ * Please enter a title",
1771
+ * @default true
1772
+ */
1773
+ validity?: boolean;
1774
+ /**
1775
+ * `beforeEdit(e)` may return an input HTML string. Otherwise use a default.
1776
+ */
1777
+ beforeEdit?: null | ((e: WbNodeEventType) => boolean) | string;
1778
+ /**
1779
+ *
1780
+ */
1781
+ edit?: null | ((e: WbNodeEventType & {
1782
+ inputElem: HTMLInputElement;
1783
+ }) => void);
1784
+ /**
1785
+ *
1786
+ */
1787
+ apply?: null | ((e: WbNodeEventType & {
1788
+ inputElem: HTMLInputElement;
1789
+ }) => any) | Promise<any>;
1790
+ };
1791
+ export type GridOptionsType = object;
1665
1792
  export type InsertNodeType = "before" | "after" | "prependChild" | "appendChild";
1666
1793
  export type DropRegionType = "over" | "before" | "after";
1667
1794
  export type DropRegionTypeSet = Set<DropRegionType>;
@@ -1670,126 +1797,148 @@ declare module "types" {
1670
1797
  * Expand nodes after n milliseconds of hovering
1671
1798
  * @default 1500
1672
1799
  */
1673
- autoExpandMS: 1500;
1800
+ autoExpandMS?: 1500;
1674
1801
  /**
1675
1802
  * true: Drag multiple (i.e. selected) nodes. Also a callback() is allowed
1676
1803
  * @default false
1677
1804
  */
1678
- multiSource: false;
1805
+ multiSource?: false;
1679
1806
  /**
1680
1807
  * Restrict the possible cursor shapes and modifier operations (can also be set in the dragStart event)
1681
1808
  * @default "all"
1682
1809
  */
1683
- effectAllowed: "all";
1810
+ effectAllowed?: "all";
1684
1811
  /**
1685
- * Default dropEffect ('copy', 'link', or 'move') when no modifier is pressed (overide in dragDrag, dragOver).
1812
+ * Default dropEffect ('copy', 'link', or 'move') when no modifier is pressed (overide in drag, dragOver).
1686
1813
  * @default "move"
1687
1814
  */
1688
- dropEffectDefault: string;
1815
+ dropEffectDefault?: string;
1689
1816
  /**
1690
1817
  * Prevent dropping nodes from different Wunderbaum trees
1691
1818
  * @default false
1692
1819
  */
1693
- preventForeignNodes: boolean;
1820
+ preventForeignNodes?: boolean;
1694
1821
  /**
1695
1822
  * Prevent dropping items on unloaded lazy Wunderbaum tree nodes
1696
1823
  * @default true
1697
1824
  */
1698
- preventLazyParents: boolean;
1825
+ preventLazyParents?: boolean;
1699
1826
  /**
1700
1827
  * Prevent dropping items other than Wunderbaum tree nodes
1701
1828
  * @default false
1702
1829
  */
1703
- preventNonNodes: boolean;
1830
+ preventNonNodes?: boolean;
1704
1831
  /**
1705
1832
  * Prevent dropping nodes on own descendants
1706
1833
  * @default true
1707
1834
  */
1708
- preventRecursion: boolean;
1835
+ preventRecursion?: boolean;
1709
1836
  /**
1710
1837
  * Prevent dropping nodes under same direct parent
1711
1838
  * @default false
1712
1839
  */
1713
- preventSameParent: false;
1840
+ preventSameParent?: false;
1714
1841
  /**
1715
1842
  * Prevent dropping nodes 'before self', etc. (move only)
1716
1843
  * @default true
1717
1844
  */
1718
- preventVoidMoves: boolean;
1845
+ preventVoidMoves?: boolean;
1846
+ /**
1847
+ * Serialize Node Data to datatransfer object
1848
+ * @default true
1849
+ */
1850
+ serializeClipboardData?: boolean | ((nodeData: WbNodeData) => string);
1719
1851
  /**
1720
1852
  * Enable auto-scrolling while dragging
1721
1853
  * @default true
1722
1854
  */
1723
- scroll: boolean;
1855
+ scroll?: boolean;
1724
1856
  /**
1725
1857
  * Active top/bottom margin in pixel
1726
1858
  * @default 20
1727
1859
  */
1728
- scrollSensitivity: 20;
1860
+ scrollSensitivity?: 20;
1729
1861
  /**
1730
1862
  * Pixel per event
1731
1863
  * @default 5
1732
1864
  */
1733
- scrollSpeed: 5;
1865
+ scrollSpeed?: 5;
1734
1866
  /**
1735
1867
  * Optional callback passed to `toDict` on dragStart @since 2.38
1736
1868
  * @default null
1737
1869
  */
1738
- sourceCopyHook: null;
1870
+ sourceCopyHook?: null;
1739
1871
  /**
1740
1872
  * Callback(sourceNode, data), return true, to enable dnd drag
1741
1873
  * @default null
1742
1874
  */
1743
- dragStart?: WbNodeEventType;
1875
+ dragStart?: null | ((e: WbNodeEventType & {
1876
+ event: DragEvent;
1877
+ }) => boolean);
1744
1878
  /**
1745
1879
  * Callback(sourceNode, data)
1746
1880
  * @default null
1747
1881
  */
1748
- dragDrag: null;
1882
+ drag?: null | ((e: WbNodeEventType & {
1883
+ event: DragEvent;
1884
+ }) => void);
1749
1885
  /**
1750
1886
  * Callback(sourceNode, data)
1751
1887
  * @default null
1752
1888
  */
1753
- dragEnd: null;
1889
+ dragEnd?: null | ((e: WbNodeEventType & {
1890
+ event: DragEvent;
1891
+ }) => void);
1754
1892
  /**
1755
1893
  * Callback(targetNode, data), return true, to enable dnd drop
1756
1894
  * @default null
1757
1895
  */
1758
- dragEnter: null;
1896
+ dragEnter?: null | ((e: WbNodeEventType & {
1897
+ event: DragEvent;
1898
+ }) => boolean);
1759
1899
  /**
1760
1900
  * Callback(targetNode, data)
1761
1901
  * @default null
1762
1902
  */
1763
- dragOver: null;
1903
+ dragOver?: null | ((e: WbNodeEventType & {
1904
+ event: DragEvent;
1905
+ }) => void);
1764
1906
  /**
1765
1907
  * Callback(targetNode, data), return false to prevent autoExpand
1766
1908
  * @default null
1767
1909
  */
1768
- dragExpand: null;
1910
+ dragExpand?: null | ((e: WbNodeEventType & {
1911
+ event: DragEvent;
1912
+ }) => boolean);
1769
1913
  /**
1770
1914
  * Callback(targetNode, data)
1771
1915
  * @default null
1772
1916
  */
1773
- dragDrop: null;
1917
+ drop?: null | ((e: WbNodeEventType & {
1918
+ event: DragEvent;
1919
+ region: DropRegionType;
1920
+ defaultDropMode: string;
1921
+ sourceNode: WunderbaumNode;
1922
+ }) => void);
1774
1923
  /**
1775
1924
  * Callback(targetNode, data)
1776
1925
  * @default null
1777
1926
  */
1778
- dragLeave: null;
1927
+ dragLeave?: null;
1779
1928
  };
1780
1929
  }
1781
1930
  declare module "wb_extension_base" {
1782
1931
  import { Wunderbaum } from "wunderbaum";
1783
1932
  export type ExtensionsDict = {
1784
- [key: string]: WunderbaumExtension;
1933
+ [key: string]: WunderbaumExtension<any>;
1785
1934
  };
1786
- export abstract class WunderbaumExtension {
1935
+ export abstract class WunderbaumExtension<TOptions> {
1787
1936
  enabled: boolean;
1788
1937
  readonly id: string;
1789
1938
  readonly tree: Wunderbaum;
1790
1939
  readonly treeOpts: any;
1791
1940
  readonly extensionOpts: any;
1792
- constructor(tree: Wunderbaum, id: string, defaults: any);
1941
+ constructor(tree: Wunderbaum, id: string, defaults: TOptions);
1793
1942
  /** Called on tree (re)init after all extensions are added, but before loading.*/
1794
1943
  init(): void;
1795
1944
  getPluginOption(name: string, defaultValue?: any): any;
@@ -1934,10 +2083,10 @@ declare module "debounce" {
1934
2083
  export function throttle<F extends Procedure>(func: F, wait?: number, options?: ThrottleOptions): DebouncedFunction<F>;
1935
2084
  }
1936
2085
  declare module "wb_ext_filter" {
1937
- import { FilterNodesOptions, NodeFilterCallback } from "types";
2086
+ import { FilterNodesOptions, FilterOptionsType, NodeFilterCallback } from "types";
1938
2087
  import { Wunderbaum } from "wunderbaum";
1939
2088
  import { WunderbaumExtension } from "wb_extension_base";
1940
- export class FilterExtension extends WunderbaumExtension {
2089
+ export class FilterExtension extends WunderbaumExtension<FilterOptionsType> {
1941
2090
  queryInput?: HTMLInputElement;
1942
2091
  lastFilterArgs: IArguments | null;
1943
2092
  constructor(tree: Wunderbaum);
@@ -1966,7 +2115,7 @@ declare module "wb_ext_filter" {
1966
2115
  declare module "wb_ext_keynav" {
1967
2116
  import { Wunderbaum } from "wunderbaum";
1968
2117
  import { WunderbaumExtension } from "wb_extension_base";
1969
- export class KeynavExtension extends WunderbaumExtension {
2118
+ export class KeynavExtension extends WunderbaumExtension<any> {
1970
2119
  constructor(tree: Wunderbaum);
1971
2120
  protected _getEmbeddedInputElem(elem: any): HTMLInputElement | null;
1972
2121
  protected _isCurInputFocused(): boolean;
@@ -1976,7 +2125,7 @@ declare module "wb_ext_keynav" {
1976
2125
  declare module "wb_ext_logger" {
1977
2126
  import { WunderbaumExtension } from "wb_extension_base";
1978
2127
  import { Wunderbaum } from "wunderbaum";
1979
- export class LoggerExtension extends WunderbaumExtension {
2128
+ export class LoggerExtension extends WunderbaumExtension<any> {
1980
2129
  readonly prefix: string;
1981
2130
  protected ignoreEvents: Set<string>;
1982
2131
  constructor(tree: Wunderbaum);
@@ -1988,9 +2137,9 @@ declare module "wb_ext_dnd" {
1988
2137
  import { Wunderbaum } from "wunderbaum";
1989
2138
  import { WunderbaumExtension } from "wb_extension_base";
1990
2139
  import { WunderbaumNode } from "wb_node";
1991
- import { DropRegionType, DropRegionTypeSet } from "types";
2140
+ import { DndOptionsType, DropRegionType, DropRegionTypeSet } from "types";
1992
2141
  import { DebouncedFunction } from "debounce";
1993
- export class DndExtension extends WunderbaumExtension {
2142
+ export class DndExtension extends WunderbaumExtension<DndOptionsType> {
1994
2143
  protected srcNode: WunderbaumNode | null;
1995
2144
  protected lastTargetNode: WunderbaumNode | null;
1996
2145
  protected lastEnterStamp: number;
@@ -2005,13 +2154,16 @@ declare module "wb_ext_dnd" {
2005
2154
  protected _leaveNode(): void;
2006
2155
  /** */
2007
2156
  protected unifyDragover(res: any): DropRegionTypeSet | false;
2008
- /** */
2157
+ /**
2158
+ * Calculates the drop region based on the drag event and the allowed drop regions.
2159
+ */
2009
2160
  protected _calcDropRegion(e: DragEvent, allowed: DropRegionTypeSet | null): DropRegionType | false;
2010
2161
  protected applyScrollDir(): void;
2011
2162
  protected autoScroll(viewportY: number): number;
2012
2163
  /** Return true if a drag operation currently in progress. */
2013
2164
  isDragging(): boolean;
2014
2165
  protected onDragEvent(e: DragEvent): boolean;
2166
+ private _isVoidDrop;
2015
2167
  protected onDropEvent(e: DragEvent): boolean;
2016
2168
  }
2017
2169
  }
@@ -2084,7 +2236,8 @@ declare module "wb_ext_grid" {
2084
2236
  import { Wunderbaum } from "wunderbaum";
2085
2237
  import { WunderbaumExtension } from "wb_extension_base";
2086
2238
  import { DragCallbackArgType, DragObserver } from "drag_observer";
2087
- export class GridExtension extends WunderbaumExtension {
2239
+ import { GridOptionsType } from "types";
2240
+ export class GridExtension extends WunderbaumExtension<GridOptionsType> {
2088
2241
  protected observer: DragObserver;
2089
2242
  constructor(tree: Wunderbaum);
2090
2243
  init(): void;
@@ -2100,8 +2253,8 @@ declare module "wb_ext_edit" {
2100
2253
  import { Wunderbaum } from "wunderbaum";
2101
2254
  import { WunderbaumExtension } from "wb_extension_base";
2102
2255
  import { WunderbaumNode } from "wb_node";
2103
- import { InsertNodeType, WbNodeData } from "types";
2104
- export class EditExtension extends WunderbaumExtension {
2256
+ import { EditOptionsType, InsertNodeType, WbNodeData } from "types";
2257
+ export class EditExtension extends WunderbaumExtension<EditOptionsType> {
2105
2258
  protected debouncedOnChange: (e: Event) => void;
2106
2259
  protected curEditNode: WunderbaumNode | null;
2107
2260
  protected relatedNode: WunderbaumNode | null;
@@ -2172,7 +2325,7 @@ declare module "wunderbaum" {
2172
2325
  [key: string]: any;
2173
2326
  };
2174
2327
  protected readonly _updateViewportThrottled: (...args: any) => void;
2175
- protected extensionList: WunderbaumExtension[];
2328
+ protected extensionList: WunderbaumExtension<any>[];
2176
2329
  protected extensions: ExtensionsDict;
2177
2330
  /** Merged options from constructor args and tree- and extension defaults. */
2178
2331
  options: WunderbaumOptions;
@@ -2251,7 +2404,7 @@ declare module "wunderbaum" {
2251
2404
  */
2252
2405
  [Symbol.iterator](): IterableIterator<WunderbaumNode>;
2253
2406
  /** @internal */
2254
- protected _registerExtension(extension: WunderbaumExtension): void;
2407
+ protected _registerExtension(extension: WunderbaumExtension<any>): void;
2255
2408
  /** Called on tree (re)init after markup is created, before loading. */
2256
2409
  protected _initExtensions(): void;
2257
2410
  /** Add node to tree's bookkeeping data structures. */
@@ -2259,7 +2412,7 @@ declare module "wunderbaum" {
2259
2412
  /** Remove node from tree's bookkeeping data structures. */
2260
2413
  _unregisterNode(node: WunderbaumNode): void;
2261
2414
  /** Call all hook methods of all registered extensions.*/
2262
- protected _callHook(hook: keyof WunderbaumExtension, data?: any): any;
2415
+ protected _callHook(hook: keyof WunderbaumExtension<any>, data?: any): any;
2263
2416
  /**
2264
2417
  * Call tree method or extension method if defined.
2265
2418
  *
@@ -2497,10 +2650,6 @@ declare module "wunderbaum" {
2497
2650
  setActiveNode(key: string, flag?: boolean, options?: SetActiveOptions): void;
2498
2651
  /** Set or remove keybaord focus to the tree container. */
2499
2652
  setFocus(flag?: boolean): void;
2500
- /**
2501
- * @deprecated since v0.3.6: use `update()` instead.
2502
- */
2503
- setModified(change: ChangeType, ...args: any[]): void;
2504
2653
  /**
2505
2654
  * Schedule an update request to reflect a tree change.
2506
2655
  * The render operation is async and debounced unless the `immediate` option