wunderbaum 0.5.0 → 0.5.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.
@@ -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
  }
@@ -230,6 +230,11 @@ div.wunderbaum span.wb-node i.wb-indent {
230
230
  padding: var(--wb-icon-padding) 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
  }
@@ -458,6 +463,25 @@ div.wunderbaum.wb-checkbox-auto-hide:focus .wb-row.wb-active i.wb-checkbox, div.
458
463
  text-align: left;
459
464
  }
460
465
 
466
+ i.wb-icon {
467
+ position: relative;
468
+ }
469
+ i.wb-icon > span.wb-badge {
470
+ position: absolute;
471
+ display: inline-block;
472
+ top: 0;
473
+ left: -0.6rem;
474
+ color: white;
475
+ background-color: var(--wb-bg-highlight-color);
476
+ padding: 0.2em 0.3rem 0.1em 0.3rem;
477
+ font-size: 60%;
478
+ font-weight: 200;
479
+ line-height: 1;
480
+ text-align: center;
481
+ white-space: nowrap;
482
+ border-radius: 0.5rem;
483
+ }
484
+
461
485
  /* Class 'wb-tristate' is used to mark checkboxes that should toggle like
462
486
  * indeterminate -> checked -> unchecked -> indeterminate ...
463
487
  */
@@ -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;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;;;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;
@@ -627,6 +626,8 @@ declare module "wb_node" {
627
626
  /** Return true if this node is partially selected (tri-state). */
628
627
  isPartsel(): boolean;
629
628
  /** Return true if this node has DOM representaion, i.e. is displayed in the viewport. */
629
+ isRadio(): boolean;
630
+ /** Return true if this node has DOM representaion, i.e. is displayed in the viewport. */
630
631
  isRendered(): boolean;
631
632
  /** Return true if this node is the (invisible) system root node.
632
633
  * (See also [[isTopLevel()]].)
@@ -866,7 +867,7 @@ declare module "wb_options" {
866
867
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
867
868
  * @VERSION, @DATE (https://github.com/mar10/wunderbaum)
868
869
  */
869
- import { ColumnDefinitionList, DndOptionsType, DynamicBoolOption, DynamicBoolOrStringOption, DynamicCheckboxOption, DynamicIconOption, NavModeEnum, NodeTypeDefinitionMap, SelectModeType, WbActivateEventType, WbChangeEventType, WbClickEventType, WbDeactivateEventType, WbEnhanceTitleEventType, WbErrorEventType, WbInitEventType, WbKeydownEventType, WbNodeData, WbNodeEventType, WbReceiveEventType, WbRenderEventType, WbTreeEventType } from "types";
870
+ 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";
870
871
  /**
871
872
  * Available options for [[Wunderbaum]].
872
873
  *
@@ -979,6 +980,20 @@ declare module "wb_options" {
979
980
  * Default: false
980
981
  */
981
982
  autoCollapse?: boolean;
983
+ /**
984
+ * If true, the tree will automatically adjust its height to fit the parent
985
+ * container. This is useful when the tree is embedded in a container with
986
+ * a fixed or calculated sized.
987
+ * If the parent container is unsized (e.g. grows with its content, `height: auto`),
988
+ * then we can define a `height: ...` or `max_height: ...` style on the parent.
989
+ * To avoid a recursive resize-loop, it may be helpful to set `overflow: hidden`
990
+ * on the parent container.
991
+ *
992
+ * Set this option to `false` will disable auto-resizing.
993
+ *
994
+ * @default: true
995
+ */
996
+ adjustHeight?: boolean;
982
997
  /**
983
998
  * HTMLElement that receives the top nodes breadcrumb.
984
999
  * Default: undefined
@@ -1032,9 +1047,14 @@ declare module "wb_options" {
1032
1047
  * Default: true
1033
1048
  */
1034
1049
  quicksearch?: boolean;
1050
+ /**
1051
+ * Scroll Node into view on Expand Click
1052
+ * @default true
1053
+ */
1054
+ scrollIntoViewOnExpandClick?: boolean;
1035
1055
  dnd?: DndOptionsType;
1036
- edit?: any;
1037
- filter?: any;
1056
+ edit?: EditOptionsType;
1057
+ filter?: FilterOptionsType;
1038
1058
  grid?: any;
1039
1059
  /**
1040
1060
  *
@@ -1079,7 +1099,7 @@ declare module "wb_options" {
1079
1099
  *
1080
1100
  * @category Callback
1081
1101
  */
1082
- enhanceTitle?: (e: WbEnhanceTitleEventType) => void;
1102
+ iconBadge?: WbIconBadgeCallback;
1083
1103
  /**
1084
1104
  *
1085
1105
  * @category Callback
@@ -1198,6 +1218,8 @@ declare module "types" {
1198
1218
  export type SourceType = string | SourceListType | SourceAjaxType | SourceObjectType;
1199
1219
  /** Passed to `find...()` methods. Should return true if node matches. */
1200
1220
  export type MatcherCallback = (node: WunderbaumNode) => boolean;
1221
+ /** Used for `tree.iconBadge` event. */
1222
+ export type WbIconBadgeCallback = (e: WbIconBadgeEventType) => WbIconBadgeEventResultType;
1201
1223
  /** Passed to `sortChildren()` methods. Should return -1, 0, or 1. */
1202
1224
  export type SortCallback = (a: WunderbaumNode, b: WunderbaumNode) => number;
1203
1225
  /** When set as option, called when the value is needed (e.g. `colspan` type definition). */
@@ -1295,8 +1317,16 @@ declare module "types" {
1295
1317
  /** The original event. */
1296
1318
  event: Event;
1297
1319
  }
1298
- export interface WbEnhanceTitleEventType extends WbNodeEventType {
1299
- titleSpan: HTMLSpanElement;
1320
+ export interface WbIconBadgeEventType extends WbNodeEventType {
1321
+ iconSpan: HTMLElement;
1322
+ }
1323
+ export interface WbIconBadgeEventResultType {
1324
+ /** Content of the badge `<span class='wb-badge'>` if any. */
1325
+ badge: string | number | HTMLSpanElement | null | false;
1326
+ /** Additional class name(s), separate with space. */
1327
+ badgeClass?: string;
1328
+ /** Tooltip for the badge. */
1329
+ badgeTooltip?: string;
1300
1330
  }
1301
1331
  export interface WbFocusEventType extends WbTreeEventType {
1302
1332
  /** The original event. */
@@ -1525,6 +1555,8 @@ declare module "types" {
1525
1555
  loadLazy?: boolean;
1526
1556
  /** Ignore `minExpandLevel` option @default false */
1527
1557
  force?: boolean;
1558
+ /** Keep active node visible @default true */
1559
+ keepActiveNodeVisible?: boolean;
1528
1560
  }
1529
1561
  /** Possible values for {@link Wunderbaum.filterNodes()} and {@link Wunderbaum.filterBranches()}. */
1530
1562
  export interface FilterNodesOptions {
@@ -1650,6 +1682,117 @@ declare module "types" {
1650
1682
  * until the start node is reached again @default false */
1651
1683
  wrap?: boolean;
1652
1684
  }
1685
+ export type FilterOptionsType = {
1686
+ /**
1687
+ * Element or selector of an input control for filter query strings
1688
+ * @default null
1689
+ */
1690
+ connectInput?: null | string | Element;
1691
+ /**
1692
+ * Re-apply last filter if lazy data is loaded
1693
+ * @default true
1694
+ */
1695
+ autoApply?: boolean;
1696
+ /**
1697
+ * Expand all branches that contain matches while filtered
1698
+ * @default false
1699
+ */
1700
+ autoExpand?: boolean;
1701
+ /**
1702
+ * Show a badge with number of matching child nodes near parent icons
1703
+ * @default true
1704
+ */
1705
+ counter?: boolean;
1706
+ /**
1707
+ * Match single characters in order, e.g. 'fb' will match 'FooBar'
1708
+ * @default false
1709
+ */
1710
+ fuzzy?: boolean;
1711
+ /**
1712
+ * Hide counter badge if parent is expanded
1713
+ * @default true
1714
+ */
1715
+ hideExpandedCounter?: boolean;
1716
+ /**
1717
+ * Hide expanders if all child nodes are hidden by filter
1718
+ * @default false;
1719
+ */
1720
+ hideExpanders?: boolean;
1721
+ /**
1722
+ * Highlight matches by wrapping inside <mark> tags
1723
+ * @default true
1724
+ */
1725
+ highlight?: boolean;
1726
+ /**
1727
+ * Match end nodes only
1728
+ * @default false
1729
+ */
1730
+ leavesOnly?: boolean;
1731
+ /**
1732
+ * Grayout unmatched nodes (pass "hide" to remove unmatched node instead)
1733
+ * @default 'dim'
1734
+ */
1735
+ mode?: "dim" | "hide";
1736
+ /**
1737
+ * Display a 'no data' status node if result is empty
1738
+ * @default true
1739
+ */
1740
+ noData?: boolean;
1741
+ };
1742
+ export type EditOptionsType = {
1743
+ /**
1744
+ * @default 100
1745
+ */
1746
+ debounce?: number;
1747
+ /**
1748
+ * @default 1
1749
+ */
1750
+ minlength?: number;
1751
+ /**
1752
+ * @default null;
1753
+ */
1754
+ maxlength?: null | number;
1755
+ /**
1756
+ * ["clickActive", "F2", "macEnter"],
1757
+ * @default []
1758
+ */
1759
+ trigger?: string[];
1760
+ /**
1761
+ * @default true
1762
+ */
1763
+ trim?: boolean;
1764
+ /**
1765
+ * @default true
1766
+ */
1767
+ select?: boolean;
1768
+ /**
1769
+ * Handle 'clickActive' only if last click is less than this old (0: always)
1770
+ * @default 1000
1771
+ */
1772
+ slowClickDelay?: number;
1773
+ /**
1774
+ * Please enter a title",
1775
+ * @default true
1776
+ */
1777
+ validity?: boolean;
1778
+ /**
1779
+ * `beforeEdit(e)` may return an input HTML string. Otherwise use a default.
1780
+ */
1781
+ beforeEdit?: null | ((e: WbNodeEventType) => boolean) | string;
1782
+ /**
1783
+ *
1784
+ */
1785
+ edit?: null | ((e: WbNodeEventType & {
1786
+ inputElem: HTMLInputElement;
1787
+ }) => void);
1788
+ /**
1789
+ *
1790
+ */
1791
+ apply?: null | ((e: WbNodeEventType & {
1792
+ inputElem: HTMLInputElement;
1793
+ }) => any) | Promise<any>;
1794
+ };
1795
+ export type GridOptionsType = {};
1653
1796
  export type InsertNodeType = "before" | "after" | "prependChild" | "appendChild";
1654
1797
  export type DropRegionType = "over" | "before" | "after";
1655
1798
  export type DropRegionTypeSet = Set<DropRegionType>;
@@ -1670,7 +1813,7 @@ declare module "types" {
1670
1813
  */
1671
1814
  effectAllowed: "all";
1672
1815
  /**
1673
- * Default dropEffect ('copy', 'link', or 'move') when no modifier is pressed (overide in dragDrag, dragOver).
1816
+ * Default dropEffect ('copy', 'link', or 'move') when no modifier is pressed (overide in drag, dragOver).
1674
1817
  * @default "move"
1675
1818
  */
1676
1819
  dropEffectDefault: string;
@@ -1704,6 +1847,11 @@ declare module "types" {
1704
1847
  * @default true
1705
1848
  */
1706
1849
  preventVoidMoves: boolean;
1850
+ /**
1851
+ * Serialize Node Data to datatransfer object
1852
+ * @default true
1853
+ */
1854
+ serializeClipboardData: boolean | ((nodeData: WbNodeData) => string);
1707
1855
  /**
1708
1856
  * Enable auto-scrolling while dragging
1709
1857
  * @default true
@@ -1728,37 +1876,54 @@ declare module "types" {
1728
1876
  * Callback(sourceNode, data), return true, to enable dnd drag
1729
1877
  * @default null
1730
1878
  */
1731
- dragStart?: WbNodeEventType;
1879
+ dragStart: null | ((e: WbNodeEventType & {
1880
+ event: DragEvent;
1881
+ }) => boolean);
1732
1882
  /**
1733
1883
  * Callback(sourceNode, data)
1734
1884
  * @default null
1735
1885
  */
1736
- dragDrag: null;
1886
+ drag: null | ((e: WbNodeEventType & {
1887
+ event: DragEvent;
1888
+ }) => void);
1737
1889
  /**
1738
1890
  * Callback(sourceNode, data)
1739
1891
  * @default null
1740
1892
  */
1741
- dragEnd: null;
1893
+ dragEnd: null | ((e: WbNodeEventType & {
1894
+ event: DragEvent;
1895
+ }) => void);
1742
1896
  /**
1743
1897
  * Callback(targetNode, data), return true, to enable dnd drop
1744
1898
  * @default null
1745
1899
  */
1746
- dragEnter: null;
1900
+ dragEnter?: null | ((e: WbNodeEventType & {
1901
+ event: DragEvent;
1902
+ }) => boolean);
1747
1903
  /**
1748
1904
  * Callback(targetNode, data)
1749
1905
  * @default null
1750
1906
  */
1751
- dragOver: null;
1907
+ dragOver: null | ((e: WbNodeEventType & {
1908
+ event: DragEvent;
1909
+ }) => void);
1752
1910
  /**
1753
1911
  * Callback(targetNode, data), return false to prevent autoExpand
1754
1912
  * @default null
1755
1913
  */
1756
- dragExpand: null;
1914
+ dragExpand?: null | ((e: WbNodeEventType & {
1915
+ event: DragEvent;
1916
+ }) => boolean);
1757
1917
  /**
1758
1918
  * Callback(targetNode, data)
1759
1919
  * @default null
1760
1920
  */
1761
- dragDrop: null;
1921
+ drop?: null | ((e: WbNodeEventType & {
1922
+ event: DragEvent;
1923
+ region: DropRegionType;
1924
+ defaultDropMode: string;
1925
+ sourceNode: WunderbaumNode;
1926
+ }) => void);
1762
1927
  /**
1763
1928
  * Callback(targetNode, data)
1764
1929
  * @default null
@@ -1769,15 +1934,15 @@ declare module "types" {
1769
1934
  declare module "wb_extension_base" {
1770
1935
  import { Wunderbaum } from "wunderbaum";
1771
1936
  export type ExtensionsDict = {
1772
- [key: string]: WunderbaumExtension;
1937
+ [key: string]: WunderbaumExtension<any>;
1773
1938
  };
1774
- export abstract class WunderbaumExtension {
1939
+ export abstract class WunderbaumExtension<TOptions> {
1775
1940
  enabled: boolean;
1776
1941
  readonly id: string;
1777
1942
  readonly tree: Wunderbaum;
1778
1943
  readonly treeOpts: any;
1779
1944
  readonly extensionOpts: any;
1780
- constructor(tree: Wunderbaum, id: string, defaults: any);
1945
+ constructor(tree: Wunderbaum, id: string, defaults: TOptions);
1781
1946
  /** Called on tree (re)init after all extensions are added, but before loading.*/
1782
1947
  init(): void;
1783
1948
  getPluginOption(name: string, defaultValue?: any): any;
@@ -1922,10 +2087,10 @@ declare module "debounce" {
1922
2087
  export function throttle<F extends Procedure>(func: F, wait?: number, options?: ThrottleOptions): DebouncedFunction<F>;
1923
2088
  }
1924
2089
  declare module "wb_ext_filter" {
1925
- import { FilterNodesOptions, NodeFilterCallback } from "types";
2090
+ import { FilterNodesOptions, FilterOptionsType, NodeFilterCallback } from "types";
1926
2091
  import { Wunderbaum } from "wunderbaum";
1927
2092
  import { WunderbaumExtension } from "wb_extension_base";
1928
- export class FilterExtension extends WunderbaumExtension {
2093
+ export class FilterExtension extends WunderbaumExtension<FilterOptionsType> {
1929
2094
  queryInput?: HTMLInputElement;
1930
2095
  lastFilterArgs: IArguments | null;
1931
2096
  constructor(tree: Wunderbaum);
@@ -1954,7 +2119,7 @@ declare module "wb_ext_filter" {
1954
2119
  declare module "wb_ext_keynav" {
1955
2120
  import { Wunderbaum } from "wunderbaum";
1956
2121
  import { WunderbaumExtension } from "wb_extension_base";
1957
- export class KeynavExtension extends WunderbaumExtension {
2122
+ export class KeynavExtension extends WunderbaumExtension<any> {
1958
2123
  constructor(tree: Wunderbaum);
1959
2124
  protected _getEmbeddedInputElem(elem: any): HTMLInputElement | null;
1960
2125
  protected _isCurInputFocused(): boolean;
@@ -1964,7 +2129,7 @@ declare module "wb_ext_keynav" {
1964
2129
  declare module "wb_ext_logger" {
1965
2130
  import { WunderbaumExtension } from "wb_extension_base";
1966
2131
  import { Wunderbaum } from "wunderbaum";
1967
- export class LoggerExtension extends WunderbaumExtension {
2132
+ export class LoggerExtension extends WunderbaumExtension<any> {
1968
2133
  readonly prefix: string;
1969
2134
  protected ignoreEvents: Set<string>;
1970
2135
  constructor(tree: Wunderbaum);
@@ -1976,9 +2141,9 @@ declare module "wb_ext_dnd" {
1976
2141
  import { Wunderbaum } from "wunderbaum";
1977
2142
  import { WunderbaumExtension } from "wb_extension_base";
1978
2143
  import { WunderbaumNode } from "wb_node";
1979
- import { DropRegionType, DropRegionTypeSet } from "types";
2144
+ import { DndOptionsType, DropRegionType, DropRegionTypeSet } from "types";
1980
2145
  import { DebouncedFunction } from "debounce";
1981
- export class DndExtension extends WunderbaumExtension {
2146
+ export class DndExtension extends WunderbaumExtension<DndOptionsType> {
1982
2147
  protected srcNode: WunderbaumNode | null;
1983
2148
  protected lastTargetNode: WunderbaumNode | null;
1984
2149
  protected lastEnterStamp: number;
@@ -2072,7 +2237,8 @@ declare module "wb_ext_grid" {
2072
2237
  import { Wunderbaum } from "wunderbaum";
2073
2238
  import { WunderbaumExtension } from "wb_extension_base";
2074
2239
  import { DragCallbackArgType, DragObserver } from "drag_observer";
2075
- export class GridExtension extends WunderbaumExtension {
2240
+ import { GridOptionsType } from "types";
2241
+ export class GridExtension extends WunderbaumExtension<GridOptionsType> {
2076
2242
  protected observer: DragObserver;
2077
2243
  constructor(tree: Wunderbaum);
2078
2244
  init(): void;
@@ -2088,8 +2254,8 @@ declare module "wb_ext_edit" {
2088
2254
  import { Wunderbaum } from "wunderbaum";
2089
2255
  import { WunderbaumExtension } from "wb_extension_base";
2090
2256
  import { WunderbaumNode } from "wb_node";
2091
- import { InsertNodeType, WbNodeData } from "types";
2092
- export class EditExtension extends WunderbaumExtension {
2257
+ import { EditOptionsType, InsertNodeType, WbNodeData } from "types";
2258
+ export class EditExtension extends WunderbaumExtension<EditOptionsType> {
2093
2259
  protected debouncedOnChange: (e: Event) => void;
2094
2260
  protected curEditNode: WunderbaumNode | null;
2095
2261
  protected relatedNode: WunderbaumNode | null;
@@ -2160,7 +2326,7 @@ declare module "wunderbaum" {
2160
2326
  [key: string]: any;
2161
2327
  };
2162
2328
  protected readonly _updateViewportThrottled: (...args: any) => void;
2163
- protected extensionList: WunderbaumExtension[];
2329
+ protected extensionList: WunderbaumExtension<any>[];
2164
2330
  protected extensions: ExtensionsDict;
2165
2331
  /** Merged options from constructor args and tree- and extension defaults. */
2166
2332
  options: WunderbaumOptions;
@@ -2239,7 +2405,7 @@ declare module "wunderbaum" {
2239
2405
  */
2240
2406
  [Symbol.iterator](): IterableIterator<WunderbaumNode>;
2241
2407
  /** @internal */
2242
- protected _registerExtension(extension: WunderbaumExtension): void;
2408
+ protected _registerExtension(extension: WunderbaumExtension<any>): void;
2243
2409
  /** Called on tree (re)init after markup is created, before loading. */
2244
2410
  protected _initExtensions(): void;
2245
2411
  /** Add node to tree's bookkeeping data structures. */
@@ -2247,7 +2413,7 @@ declare module "wunderbaum" {
2247
2413
  /** Remove node from tree's bookkeeping data structures. */
2248
2414
  _unregisterNode(node: WunderbaumNode): void;
2249
2415
  /** Call all hook methods of all registered extensions.*/
2250
- protected _callHook(hook: keyof WunderbaumExtension, data?: any): any;
2416
+ protected _callHook(hook: keyof WunderbaumExtension<any>, data?: any): any;
2251
2417
  /**
2252
2418
  * Call tree method or extension method if defined.
2253
2419
  *