@nanoporetech-digital/components 2.1.4 → 2.2.0

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.
Files changed (184) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/index-cb62df44.js +5 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/nano-alert.cjs.entry.js.map +1 -1
  6. package/dist/cjs/nano-checkbox.cjs.entry.js.map +1 -1
  7. package/dist/cjs/nano-components.cjs.js +1 -1
  8. package/dist/cjs/nano-datalist_3.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nano-date-input.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nano-details.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nano-dialog.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nano-file-upload.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nano-global-search-results.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nano-hero.cjs.entry.js.map +1 -1
  16. package/dist/cjs/nano-icon-button.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nano-menu-drawer.cjs.entry.js.map +1 -1
  18. package/dist/cjs/nano-rating.cjs.entry.js.map +1 -1
  19. package/dist/cjs/nano-split-pane.cjs.entry.js +284 -0
  20. package/dist/cjs/nano-split-pane.cjs.entry.js.map +1 -0
  21. package/dist/cjs/nano-tab-group.cjs.entry.js +1 -0
  22. package/dist/cjs/nano-tab-group.cjs.entry.js.map +1 -1
  23. package/dist/cjs/nano-tab.cjs.entry.js +1 -1
  24. package/dist/cjs/nano-tab.cjs.entry.js.map +1 -1
  25. package/dist/collection/collection-manifest.json +1 -0
  26. package/dist/collection/components/accordion/accordion.js +1 -1
  27. package/dist/collection/components/alert/alert.js +1 -1
  28. package/dist/collection/components/algolia/algolia-filter.js +2 -2
  29. package/dist/collection/components/algolia/algolia-input.js +5 -5
  30. package/dist/collection/components/algolia/algolia-results.js +1 -1
  31. package/dist/collection/components/algolia/algolia.js +6 -6
  32. package/dist/collection/components/checkbox/checkbox-group.js +2 -2
  33. package/dist/collection/components/checkbox/checkbox.js +3 -3
  34. package/dist/collection/components/datalist/datalist.css +1 -1
  35. package/dist/collection/components/datalist/datalist.js +1 -1
  36. package/dist/collection/components/date-input/date-input.js +7 -7
  37. package/dist/collection/components/date-picker/date-picker.js +5 -5
  38. package/dist/collection/components/details/details.js +1 -1
  39. package/dist/collection/components/dialog/dialog.js +1 -1
  40. package/dist/collection/components/file-upload/file-upload.js +4 -4
  41. package/dist/collection/components/global-nav/global-nav.js +4 -4
  42. package/dist/collection/components/grid/grid-item.js +1 -1
  43. package/dist/collection/components/icon/icon.js +1 -1
  44. package/dist/collection/components/input/input.js +5 -5
  45. package/dist/collection/components/nav-item/nav-item.js +4 -4
  46. package/dist/collection/components/range/range.js +4 -4
  47. package/dist/collection/components/resize-observe/resize-observe.js +1 -1
  48. package/dist/collection/components/select/select.js +7 -7
  49. package/dist/collection/components/slides/slides.js +7 -7
  50. package/dist/collection/components/split-pane/split-pane.css +104 -0
  51. package/dist/collection/components/split-pane/split-pane.js +479 -0
  52. package/dist/collection/components/split-pane/split-pane.js.map +1 -0
  53. package/dist/collection/components/tabs/tab-group.js +3 -2
  54. package/dist/collection/components/tabs/tab-group.js.map +1 -1
  55. package/dist/collection/components/tabs/tab.js +1 -1
  56. package/dist/collection/components/tabs/tab.js.map +1 -1
  57. package/dist/collection/utils/drag.js +21 -0
  58. package/dist/collection/utils/drag.js.map +1 -0
  59. package/dist/components/datalist.js.map +1 -1
  60. package/dist/components/icon-button.js.map +1 -1
  61. package/dist/components/menu.js.map +1 -1
  62. package/dist/components/nano-alert.js.map +1 -1
  63. package/dist/components/nano-checkbox.js.map +1 -1
  64. package/dist/components/nano-date-input.js.map +1 -1
  65. package/dist/components/nano-details.js.map +1 -1
  66. package/dist/components/nano-dialog.js.map +1 -1
  67. package/dist/components/nano-file-upload.js.map +1 -1
  68. package/dist/components/nano-global-nav.js.map +1 -1
  69. package/dist/components/nano-global-search-results.js.map +1 -1
  70. package/dist/components/nano-hero.js.map +1 -1
  71. package/dist/components/nano-menu-drawer.js.map +1 -1
  72. package/dist/components/nano-rating.js.map +1 -1
  73. package/dist/components/nano-split-pane.d.ts +11 -0
  74. package/dist/components/nano-split-pane.js +315 -0
  75. package/dist/components/nano-split-pane.js.map +1 -0
  76. package/dist/components/nano-tab-group.js +1 -0
  77. package/dist/components/nano-tab-group.js.map +1 -1
  78. package/dist/components/nano-tab.js +1 -1
  79. package/dist/components/nano-tab.js.map +1 -1
  80. package/dist/components/option.js.map +1 -1
  81. package/dist/custom-elements/index.d.ts +6 -0
  82. package/dist/custom-elements/index.js +280 -5
  83. package/dist/custom-elements/index.js.map +1 -1
  84. package/dist/esm/index-5f8d16e7.js +5 -0
  85. package/dist/esm/loader.js +1 -1
  86. package/dist/esm/nano-alert.entry.js.map +1 -1
  87. package/dist/esm/nano-checkbox.entry.js.map +1 -1
  88. package/dist/esm/nano-components.js +1 -1
  89. package/dist/esm/nano-datalist_3.entry.js.map +1 -1
  90. package/dist/esm/nano-date-input.entry.js.map +1 -1
  91. package/dist/esm/nano-details.entry.js.map +1 -1
  92. package/dist/esm/nano-dialog.entry.js.map +1 -1
  93. package/dist/esm/nano-file-upload.entry.js.map +1 -1
  94. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  95. package/dist/esm/nano-global-search-results.entry.js.map +1 -1
  96. package/dist/esm/nano-hero.entry.js.map +1 -1
  97. package/dist/esm/nano-icon-button.entry.js.map +1 -1
  98. package/dist/esm/nano-menu-drawer.entry.js.map +1 -1
  99. package/dist/esm/nano-rating.entry.js.map +1 -1
  100. package/dist/esm/nano-split-pane.entry.js +280 -0
  101. package/dist/esm/nano-split-pane.entry.js.map +1 -0
  102. package/dist/esm/nano-tab-group.entry.js +1 -0
  103. package/dist/esm/nano-tab-group.entry.js.map +1 -1
  104. package/dist/esm/nano-tab.entry.js +1 -1
  105. package/dist/esm/nano-tab.entry.js.map +1 -1
  106. package/dist/esm-es5/index-5f8d16e7.js +1 -1
  107. package/dist/esm-es5/loader.js +1 -1
  108. package/dist/esm-es5/loader.js.map +1 -1
  109. package/dist/esm-es5/nano-alert.entry.js.map +1 -1
  110. package/dist/esm-es5/nano-checkbox.entry.js.map +1 -1
  111. package/dist/esm-es5/nano-components.js +1 -1
  112. package/dist/esm-es5/nano-components.js.map +1 -1
  113. package/dist/esm-es5/nano-datalist_3.entry.js.map +1 -1
  114. package/dist/esm-es5/nano-date-input.entry.js.map +1 -1
  115. package/dist/esm-es5/nano-details.entry.js.map +1 -1
  116. package/dist/esm-es5/nano-dialog.entry.js.map +1 -1
  117. package/dist/esm-es5/nano-file-upload.entry.js.map +1 -1
  118. package/dist/esm-es5/nano-global-nav.entry.js.map +1 -1
  119. package/dist/esm-es5/nano-global-search-results.entry.js.map +1 -1
  120. package/dist/esm-es5/nano-hero.entry.js.map +1 -1
  121. package/dist/esm-es5/nano-icon-button.entry.js.map +1 -1
  122. package/dist/esm-es5/nano-menu-drawer.entry.js.map +1 -1
  123. package/dist/esm-es5/nano-rating.entry.js.map +1 -1
  124. package/dist/esm-es5/nano-split-pane.entry.js +5 -0
  125. package/dist/esm-es5/nano-split-pane.entry.js.map +1 -0
  126. package/dist/esm-es5/nano-tab-group.entry.js +1 -1
  127. package/dist/esm-es5/nano-tab-group.entry.js.map +1 -1
  128. package/dist/esm-es5/nano-tab.entry.js +2 -2
  129. package/dist/esm-es5/nano-tab.entry.js.map +1 -1
  130. package/dist/nano-components/nano-components.css +1 -1
  131. package/dist/nano-components/nano-components.esm.js +1 -1
  132. package/dist/nano-components/nano-components.esm.js.map +1 -1
  133. package/dist/nano-components/{p-e35eac75.entry.js → p-08b43111.entry.js} +2 -2
  134. package/dist/nano-components/p-08b43111.entry.js.map +1 -0
  135. package/dist/nano-components/p-090f22a9.system.entry.js.map +1 -1
  136. package/dist/nano-components/p-096682d9.system.js +1 -1
  137. package/dist/nano-components/p-096682d9.system.js.map +1 -1
  138. package/dist/nano-components/{p-e6f8f9f7.system.entry.js → p-1238f0fc.system.entry.js} +2 -2
  139. package/dist/nano-components/p-1238f0fc.system.entry.js.map +1 -0
  140. package/dist/nano-components/p-1e974cad.entry.js.map +1 -1
  141. package/dist/nano-components/p-1ec44caf.entry.js.map +1 -1
  142. package/dist/nano-components/p-1f99d776.entry.js.map +1 -1
  143. package/dist/nano-components/p-20db18f3.entry.js.map +1 -1
  144. package/dist/nano-components/p-3456db01.entry.js.map +1 -1
  145. package/dist/nano-components/p-3ad1d5aa.system.entry.js.map +1 -1
  146. package/dist/nano-components/{p-3cf35ac4.system.entry.js → p-3f736fa2.system.entry.js} +2 -2
  147. package/dist/nano-components/p-3f736fa2.system.entry.js.map +1 -0
  148. package/dist/nano-components/p-4429caac.system.entry.js.map +1 -1
  149. package/dist/nano-components/p-531d5275.system.entry.js.map +1 -1
  150. package/dist/nano-components/p-56ba0d63.entry.js.map +1 -1
  151. package/dist/nano-components/p-58419bed.system.entry.js.map +1 -1
  152. package/dist/nano-components/p-5a476bba.system.entry.js.map +1 -1
  153. package/dist/nano-components/p-6afdb510.system.entry.js.map +1 -1
  154. package/dist/nano-components/p-71c26ace.entry.js.map +1 -1
  155. package/dist/nano-components/p-730f60ea.entry.js.map +1 -1
  156. package/dist/nano-components/p-7d2e2685.entry.js.map +1 -1
  157. package/dist/nano-components/p-8a8f893b.system.entry.js.map +1 -1
  158. package/dist/nano-components/p-93448bcd.system.entry.js.map +1 -1
  159. package/dist/nano-components/p-94593617.system.entry.js.map +1 -1
  160. package/dist/nano-components/{p-bbe6b7af.entry.js → p-ad0715d1.entry.js} +2 -2
  161. package/dist/nano-components/p-ad0715d1.entry.js.map +1 -0
  162. package/dist/nano-components/p-b59d2bd5.entry.js.map +1 -1
  163. package/dist/nano-components/p-c0ddb4c3.entry.js.map +1 -1
  164. package/dist/nano-components/p-d628547b.entry.js +5 -0
  165. package/dist/nano-components/p-d628547b.entry.js.map +1 -0
  166. package/dist/nano-components/p-d6569144.entry.js.map +1 -1
  167. package/dist/nano-components/p-d87ebf95.system.entry.js +5 -0
  168. package/dist/nano-components/p-d87ebf95.system.entry.js.map +1 -0
  169. package/dist/nano-components/p-e11bd40d.entry.js.map +1 -1
  170. package/dist/nano-components/p-e15be516.system.entry.js.map +1 -1
  171. package/dist/nano-components/p-ef4e0912.system.entry.js.map +1 -1
  172. package/dist/nano-components/p-f2e7d2f9.system.entry.js.map +1 -1
  173. package/dist/themes/nanopore.css +1 -1
  174. package/dist/themes/nanopore.css.map +1 -1
  175. package/dist/types/components/split-pane/split-pane.d.ts +76 -0
  176. package/dist/types/components.d.ts +89 -0
  177. package/dist/types/utils/drag.d.ts +1 -0
  178. package/docs-json.json +309 -2
  179. package/docs-vscode.json +53 -0
  180. package/package.json +8 -6
  181. package/dist/nano-components/p-3cf35ac4.system.entry.js.map +0 -1
  182. package/dist/nano-components/p-bbe6b7af.entry.js.map +0 -1
  183. package/dist/nano-components/p-e35eac75.entry.js.map +0 -1
  184. package/dist/nano-components/p-e6f8f9f7.system.entry.js.map +0 -1
@@ -9921,7 +9921,7 @@ var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();
9921
9921
  * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation
9922
9922
  * exposing only those methods and properties that are defined in the spec.
9923
9923
  */
9924
- var ResizeObserver = /** @class */ (function () {
9924
+ var ResizeObserver$1 = /** @class */ (function () {
9925
9925
  /**
9926
9926
  * Creates a new instance of ResizeObserver.
9927
9927
  *
@@ -9947,7 +9947,7 @@ var ResizeObserver = /** @class */ (function () {
9947
9947
  'unobserve',
9948
9948
  'disconnect'
9949
9949
  ].forEach(function (method) {
9950
- ResizeObserver.prototype[method] = function () {
9950
+ ResizeObserver$1.prototype[method] = function () {
9951
9951
  var _a;
9952
9952
  return (_a = observers.get(this))[method].apply(_a, arguments);
9953
9953
  };
@@ -9958,7 +9958,7 @@ var index$2 = (function () {
9958
9958
  if (typeof global$1.ResizeObserver !== 'undefined') {
9959
9959
  return global$1.ResizeObserver;
9960
9960
  }
9961
- return ResizeObserver;
9961
+ return ResizeObserver$1;
9962
9962
  })();
9963
9963
 
9964
9964
  const detailsCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;--padding:1em;--btn-padding:var(--padding);--btn-bg-color:var(--nano-color-contrast, #dad6d3);--btn-bg-color--open:var(--nano-color-base, #dad6d3);--btn-bg-color--hover:var(--nano-color-tint, #f9f9fb);--btn-text-color:var(--nano-color-base, #455556);--btn-text-color--open:var(--nano-color-contrast, var(--btn-text-color));--btn-text-color--hover:var(--nano-color-contrast, var(--btn-text-color));--content-bg-color:transparent;--content-text-color:#455556;--content-transition:height 0.2s ease-out;--border-width:none;--border-color:none;--border-style:none;--border-radius:none;--box-shadow:none;--focus-style:var(--nano-control-focus-shadow, 0 0 0 0.1875rem var(--nano-control-focus-color, rgba(144, 198, 231, 0.8)));display:block;border-style:var(--border-style);border-width:var(--border-width-dims);border-color:var(--border-color);border-radius:var(--border-radius-dims);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}:host(:last-of-type){--border-width-dims:0 var(--border-width) var(--border-width);--border-radius-dims:0 0 var(--border-radius) var(--border-radius)}:host(:last-of-type) .open .content{border-radius:0 0 var(--border-radius) var(--border-radius)}:host(:first-of-type){--border-radius-dims:var(--border-radius) var(--border-radius) 0 0;--border-width-dims:var(--border-width)}:host(:first-of-type:last-of-type){--border-radius-dims:var(--border-radius);--border-width-dims:var(--border-width)}:host(:not(:last-of-type):not(:first-of-type)){--border-width-dims:0 var(--border-width) var(--border-width)}:host(.nano-color){--btn-bg-color:var(--nano-color-contrast, var(--nano-color-primary-contrast, #fff));--btn-bg-color--open:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-bg-color--hover:var(--nano-color-tint, var(--nano-color-primary-tint, #2689a5));--btn-text-color:var(--nano-color-base, var(--nano-color-primary, #007495));--btn-text-color--open:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n );--btn-text-color--hover:var(\n --nano-color-contrast,\n var(--nano-color-primary-contrast, #fff)\n )}button{left:0;top:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;position:absolute;width:100%;height:100%;border:0;background:transparent;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;padding:var(--btn-padding);text-align:inherit;position:relative;font-size:1em;margin:0;-webkit-transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;transition:0.3s ease background, 0.3s ease color, 0.15s ease box-shadow;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:var(--btn-bg-color);color:var(--btn-text-color);border-radius:var(--border-radius-dims)}button[dir=rtl]{left:unset;right:unset;right:0}button::-moz-focus-inner{border:0}button:focus{-webkit-box-shadow:var(--focus-style);box-shadow:var(--focus-style);outline:none;position:relative;z-index:1}:hover button{background:var(--btn-bg-color--hover);color:var(--btn-text-color--hover)}.open button{background:var(--btn-bg-color--open);color:var(--btn-text-color--open);border-bottom-right-radius:0;border-bottom-left-radius:0}button .label{width:100%;max-width:100%;max-height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block}button .icon{line-height:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:inline-block;color:currentColor;-webkit-transition:0.3s ease transform;transition:0.3s ease transform;-webkit-transform-origin:center;transform-origin:center}button .icon--start{margin-left:0;margin-right:var(--padding);margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--start{margin-left:unset;margin-right:unset;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:var(--padding);margin-inline-end:var(--padding)}}button .icon--end{margin-left:var(--padding);margin-right:0;margin-top:0;margin-bottom:0}@supports ((-webkit-margin-start: 0) or (margin-inline-start: 0)) or (-webkit-margin-start: 0){button .icon--end{margin-left:unset;margin-right:unset;-webkit-margin-start:var(--padding);margin-inline-start:var(--padding);-webkit-margin-end:0;margin-inline-end:0}}button .icon ::slotted(nano-icon){--color:\"currentColor\"}.content{color:var(--content-text-color);background:var(--content-bg-color);height:0;overflow:hidden;-webkit-transition:0.2s ease border-radius;transition:0.2s ease border-radius;outline:none}.loaded .content{-webkit-transition:var(--content-transition), 0.2s ease border-radius;transition:var(--content-transition), 0.2s ease border-radius}.content>*{opacity:0;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.open .content>*{opacity:1}.content__area{padding:var(--padding)}";
@@ -22333,6 +22333,278 @@ let Spinner = class extends H {
22333
22333
  static get style() { return spinnerCss; }
22334
22334
  };
22335
22335
 
22336
+ function drag(container, onMove) {
22337
+ function move(pointerEvent) {
22338
+ const dims = container.getBoundingClientRect();
22339
+ const defaultView = container.ownerDocument.defaultView;
22340
+ const offsetX = dims.left + defaultView.pageXOffset;
22341
+ const offsetY = dims.top + defaultView.pageYOffset;
22342
+ const x = pointerEvent.pageX - offsetX;
22343
+ const y = pointerEvent.pageY - offsetY;
22344
+ onMove(x, y);
22345
+ }
22346
+ function stop() {
22347
+ document.removeEventListener('pointermove', move);
22348
+ document.removeEventListener('pointerup', stop);
22349
+ }
22350
+ document.addEventListener('pointermove', move, { passive: true });
22351
+ document.addEventListener('pointerup', stop);
22352
+ }
22353
+
22354
+ const splitPaneCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--divider-width:12px;--divider-hit-area:14px;--min:0%;--max:100%;--background-color:#e4e6e8;--content-color:#918b86;display:-ms-grid;display:grid}.start,.end{overflow:hidden}.divider{-webkit-box-flex:0;-ms-flex:0 0 var(--divider-width);flex:0 0 var(--divider-width);display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background-color:var(--background-color);color:var(--content-color);z-index:1;font-size:0.8rem}.divider:focus{outline:none}:host(:not([disabled])) .divider:focus-visible{background-color:var(--nano-control-focus-color, rgba(144, 198, 231, 0.8))}:host([disabled]) .divider{cursor:not-allowed}:host(:not([vertical],[disabled])) .divider{cursor:col-resize}:host(:not([vertical])) .divider::after{display:-webkit-box;display:-ms-flexbox;display:flex;content:\"\";position:absolute;height:100%;left:calc(var(--divider-hit-area) / -2 + var(--divider-width) / 2);width:var(--divider-hit-area)}:host([vertical]){-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}:host([vertical]:not([disabled])) .divider{cursor:row-resize}:host([vertical]) .divider::after{content:\"\";position:absolute;width:100%;top:calc(var(--divider-hit-area) / -2 + var(--divider-width) / 2);height:var(--divider-hit-area)}";
22355
+
22356
+ let SplitPane = class extends H {
22357
+ constructor() {
22358
+ super();
22359
+ this.__registerHost();
22360
+ this.__attachShadow();
22361
+ this.nanoReposition = createEvent(this, "nanoReposition", 7);
22362
+ this.isAnimating = false;
22363
+ this.didLoad = false;
22364
+ this._shouldAnimate = true;
22365
+ /** Draws the split panel in a vertical orientation with the start and end panels stacked. */
22366
+ this.vertical = false;
22367
+ /** Disables resizing. Note that the position may still change as a result of resizing the host element. */
22368
+ this.disabled = false;
22369
+ /** How close the divider must be to a snap point until snapping occurs. */
22370
+ this.snapThreshold = 12;
22371
+ /** When changing `position` via property, the pane will animate into position. Make `animationDuration` 0 to disable. */
22372
+ this.animationDuration = 0.6;
22373
+ this._isDragging = false;
22374
+ this.handleIsDragging = (dragging) => {
22375
+ this._isDragging = dragging;
22376
+ };
22377
+ // Event handlers
22378
+ this.handleDrag = (e) => {
22379
+ if (this.disabled) {
22380
+ return;
22381
+ }
22382
+ // Prevent text selection when dragging
22383
+ e.preventDefault();
22384
+ drag(this.host, (x, y) => {
22385
+ this.handleIsDragging(true);
22386
+ let newPositionInPixels = this.vertical ? y : x;
22387
+ // Flip for end panels
22388
+ if (this.primary === 'end') {
22389
+ newPositionInPixels = this.size - newPositionInPixels;
22390
+ }
22391
+ // Check snap points
22392
+ if (this.snap) {
22393
+ const snaps = this.snap.split(' ');
22394
+ snaps.forEach((value) => {
22395
+ let snapPoint;
22396
+ if (value.endsWith('%')) {
22397
+ snapPoint = this.size * (parseFloat(value) / 100);
22398
+ }
22399
+ else {
22400
+ snapPoint = parseFloat(value);
22401
+ }
22402
+ if (newPositionInPixels >= snapPoint - this.snapThreshold &&
22403
+ newPositionInPixels <= snapPoint + this.snapThreshold) {
22404
+ newPositionInPixels = snapPoint;
22405
+ }
22406
+ });
22407
+ }
22408
+ this.shouldAnimate = false;
22409
+ this.position = clamp$2(this.pixelsToPercentage(newPositionInPixels), 0, 100);
22410
+ raf(() => (this.shouldAnimate = true));
22411
+ this.handleIsDragging(false);
22412
+ });
22413
+ };
22414
+ this.handleKeyDown = (event) => {
22415
+ if (this.disabled) {
22416
+ return;
22417
+ }
22418
+ if ([
22419
+ 'ArrowLeft',
22420
+ 'ArrowRight',
22421
+ 'ArrowUp',
22422
+ 'ArrowDown',
22423
+ 'Home',
22424
+ 'End',
22425
+ ].includes(event.key)) {
22426
+ let newPosition = this.position;
22427
+ const incr = (event.shiftKey ? 10 : 1) * (this.primary === 'end' ? -1 : 1);
22428
+ event.preventDefault();
22429
+ if ((event.key === 'ArrowLeft' && !this.vertical) ||
22430
+ (event.key === 'ArrowUp' && this.vertical)) {
22431
+ newPosition -= incr;
22432
+ }
22433
+ if ((event.key === 'ArrowRight' && !this.vertical) ||
22434
+ (event.key === 'ArrowDown' && this.vertical)) {
22435
+ newPosition += incr;
22436
+ }
22437
+ if (event.key === 'Home') {
22438
+ newPosition = this.primary === 'end' ? 100 : 0;
22439
+ }
22440
+ if (event.key === 'End') {
22441
+ newPosition = this.primary === 'end' ? 0 : 100;
22442
+ }
22443
+ this.shouldAnimate = false;
22444
+ this.position = clamp$2(newPosition, 0, 100);
22445
+ raf(() => (this.shouldAnimate = true));
22446
+ }
22447
+ };
22448
+ this.handleResize = () => {
22449
+ if (!this.didLoad || this.isAnimating)
22450
+ return;
22451
+ // Resize when a primary panel is set
22452
+ if (this.primary) {
22453
+ this.shouldAnimate = false;
22454
+ this.position = this.pixelsToPercentage(this.cachedPositionInPixels);
22455
+ raf(() => (this.shouldAnimate = true));
22456
+ }
22457
+ };
22458
+ this.handlePositionChange = debounce$1(this.handlePositionChange.bind(this), 100);
22459
+ this.handleIsDragging = debounce$1(this.handleIsDragging, 200);
22460
+ }
22461
+ get size() {
22462
+ const { width, height } = this.host.getBoundingClientRect();
22463
+ return this.vertical ? height : width;
22464
+ }
22465
+ get shouldAnimate() {
22466
+ return this.didLoad && this._shouldAnimate;
22467
+ }
22468
+ set shouldAnimate(sa) {
22469
+ this._shouldAnimate = sa;
22470
+ }
22471
+ /**
22472
+ * The current position of the divider from the primary panel's edge as a percentage 0-100. Defaults to 50% of the
22473
+ * container's initial size.
22474
+ */
22475
+ get position() {
22476
+ return this._position;
22477
+ }
22478
+ set position(pos) {
22479
+ // override too high / low
22480
+ pos = Math.min(Math.max(pos, 0), 100);
22481
+ if (isNaN(pos) || pos === this._position)
22482
+ return;
22483
+ if (this.shouldAnimate && this.animationDuration > 0) {
22484
+ this.animatePosition(pos);
22485
+ return;
22486
+ }
22487
+ this._position = pos;
22488
+ }
22489
+ // eslint-disable-next-line @stencil/no-unused-watch
22490
+ handlePositionChange() {
22491
+ this.cachedPositionInPixels = this.percentageToPixels(this.position);
22492
+ this.positionInPixels = this.percentageToPixels(this.position);
22493
+ this.nanoReposition.emit();
22494
+ }
22495
+ handlePositionInPixelsChange() {
22496
+ this.position = this.pixelsToPercentage(this.positionInPixels);
22497
+ }
22498
+ /** @readonly - hook to know if the pane is currently being dragged */
22499
+ get isDragging() {
22500
+ return this._isDragging;
22501
+ }
22502
+ // Private logic
22503
+ animatePosition(end) {
22504
+ if (this.isAnimating)
22505
+ return;
22506
+ const duration = this.animationDuration; // seconds
22507
+ const fps = 60;
22508
+ const start = this.position;
22509
+ const distance = end - start;
22510
+ let position = start;
22511
+ let time = 0;
22512
+ function easeInOutQuad(t, s, e, d) {
22513
+ if ((t /= d / 2) < 1)
22514
+ return (e / 2) * t * t + s;
22515
+ else
22516
+ return (-e / 2) * (--t * (t - 2) - 1) + s;
22517
+ }
22518
+ const go = () => {
22519
+ time += 1 / fps;
22520
+ position = easeInOutQuad(time, start, distance, duration);
22521
+ if ((end > start && position >= end) ||
22522
+ (end < start && position <= end)) {
22523
+ this.position = end;
22524
+ this.shouldAnimate = true;
22525
+ this.isAnimating = false;
22526
+ return;
22527
+ }
22528
+ this.position = position;
22529
+ raf(go);
22530
+ };
22531
+ this.shouldAnimate = false;
22532
+ this.isAnimating = true;
22533
+ raf(go);
22534
+ }
22535
+ percentageToPixels(value) {
22536
+ return this.size * (value / 100);
22537
+ }
22538
+ pixelsToPercentage(value) {
22539
+ return (value / this.size) * 100;
22540
+ }
22541
+ attachRO() {
22542
+ this.detachRO();
22543
+ this.ro = new ResizeObserver(() => this.handleResize());
22544
+ this.ro.observe(this.host);
22545
+ }
22546
+ detachRO() {
22547
+ if (!this.ro)
22548
+ return;
22549
+ this.ro.unobserve(this.host);
22550
+ this.ro = undefined;
22551
+ }
22552
+ componentDidLoad() {
22553
+ if (this.positionInPixels)
22554
+ this.handlePositionInPixelsChange();
22555
+ setTimeout(() => (this.didLoad = true));
22556
+ }
22557
+ connectedCallback() {
22558
+ this.cachedPositionInPixels = this.percentageToPixels(this.position);
22559
+ this.attachRO();
22560
+ }
22561
+ disconnectedCallback() {
22562
+ this.detachRO();
22563
+ }
22564
+ componentDidRender() {
22565
+ // bit hacky ... because we use getter / setter for position, there's a render *before* `position` is passed in via attribute
22566
+ // if we set a default position in the class, this causes the divider to jump (from default to user set position)
22567
+ // so - wait a render, see if there's a position passed in via attribute, *then* set default if not
22568
+ raf(() => {
22569
+ if (this.position === undefined)
22570
+ this.position = 50;
22571
+ });
22572
+ }
22573
+ render() {
22574
+ if (!this.position)
22575
+ return;
22576
+ const styles = {};
22577
+ const gridTemplate = this.vertical
22578
+ ? 'gridTemplateRows'
22579
+ : 'gridTemplateColumns';
22580
+ const primary = `
22581
+ clamp(
22582
+ 0%,
22583
+ clamp(
22584
+ var(--min),
22585
+ ${this.position}% - var(--divider-width) / 2,
22586
+ var(--max)
22587
+ ),
22588
+ calc(100% - var(--divider-width))
22589
+ )
22590
+ `;
22591
+ const secondary = 'auto';
22592
+ if (this.primary === 'end') {
22593
+ styles[gridTemplate] = `${secondary} var(--divider-width) ${primary}`;
22594
+ }
22595
+ else {
22596
+ styles[gridTemplate] = `${primary} var(--divider-width) ${secondary}`;
22597
+ }
22598
+ return (h$1(Host, { style: styles }, h$1("div", { part: "panel start", class: "start" }, h$1("slot", { name: "start" })), h$1("div", { part: "divider", class: "divider", tabindex: this.disabled ? undefined : '0', role: "separator", "aria-label": "Resize", onKeyDown: this.handleKeyDown, onMouseDown: this.handleDrag, onTouchStart: this.handleDrag }, h$1("slot", { name: "handle" }, !this.disabled && this.vertical ? (h$1("nano-icon", { slot: "handle", name: "solid/grip-lines" })) : (h$1("nano-icon", { slot: "handle", name: "solid/grip-lines-vertical" })))), h$1("div", { part: "panel end", class: "end" }, h$1("slot", { name: "end" }))));
22599
+ }
22600
+ get host() { return this; }
22601
+ static get watchers() { return {
22602
+ "position": ["handlePositionChange"],
22603
+ "positionInPixels": ["handlePositionInPixelsChange"]
22604
+ }; }
22605
+ static get style() { return splitPaneCss; }
22606
+ };
22607
+
22336
22608
  const stickerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}*,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}[hidden]{display:none !important}:host{--stuck-left:initial;--stuck-right:initial;--stuck-z-index:var(--nano-layer-index-menubar, 10);--top-hide:translateY(-110%);--bottom-hide:translateY(110%);display:block;max-width:100%}:host([sticky]){position:-webkit-sticky;position:sticky;-webkit-transition:0.3s ease transform;transition:0.3s ease transform;will-change:min-height}:host([sticky][stuck]){left:var(--stuck-left);right:var(--stuck-right);z-index:var(--stuck-z-index) !important}:host([sticky][hide][placed-top]){-webkit-transform:var(--top-hide);transform:var(--top-hide)}:host([sticky][hide][placed-bottom]){-webkit-transform:var(--bottom-hide);transform:var(--bottom-hide)}:host([sticky][index=\"1\"]){z-index:calc(var(--stuck-z-index) + 1)}:host([sticky][index=\"2\"]){z-index:calc(var(--stuck-z-index) + 2)}:host([sticky][index=\"3\"]){z-index:calc(var(--stuck-z-index) + 3)}:host([sticky][index=\"4\"]){z-index:calc(var(--stuck-z-index) + 4)}:host([sticky][index=\"5\"]){z-index:calc(var(--stuck-z-index) + 5)}.sticker{display:inherit;max-width:inherit;width:100%}.sticker:not(.stuck){width:auto !important}.sticker.sticky{-webkit-transition:0.3s ease all;transition:0.3s ease all;position:relative}:host([index=\"1\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 1)}:host([index=\"2\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 2)}:host([index=\"3\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 3)}:host([index=\"4\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 4)}:host([index=\"5\"]) .sticker.sticky{z-index:calc(var(--stuck-z-index) + 5)}.sticker.stuck{position:fixed;left:var(--stuck-left);right:var(--stuck-right);z-index:var(--stuck-z-index);-webkit-transform:translateY(0);transform:translateY(0)}:host([placed-top]) .sticker.stuck{top:0}:host([placed-bottom]) .sticker.stuck{bottom:0}:host([placed-top]) .sticker.stuck.hide{-webkit-transform:var(--top-hide);transform:var(--top-hide)}:host([placed-bottom]) .sticker.stuck.hide{-webkit-transform:var(--bottom-hide);transform:var(--bottom-hide)}.sticker-content{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}";
22337
22609
 
22338
22610
  function _getScrollTop(ele) {
@@ -22979,7 +23251,7 @@ let Tab = class extends H {
22979
23251
  'nanotab--active': this.active,
22980
23252
  'nanotab--disabled': this.disabled,
22981
23253
  'nanotab--closable': this.closable,
22982
- }, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, tabIndex: -1, "aria-hidden": "true" })))));
23254
+ }, role: "tab", "aria-disabled": this.disabled ? 'true' : 'false', "aria-selected": this.active ? 'true' : 'false', tabindex: this.disabled || !this.active ? '-1' : '0' }, h$1("slot", null), this.closable && (h$1("nano-icon-button", { label: "Close this tab", iconName: "light/times", class: "nanotab__close-button", onClick: this.handleCloseClick, tabIndex: -1 })))));
22983
23255
  }
22984
23256
  get host() { return this; }
22985
23257
  static get style() { return tabCss; }
@@ -23385,6 +23657,7 @@ let TabGroup = class extends H {
23385
23657
  setTimeout(() => {
23386
23658
  this.updateScrollControls();
23387
23659
  this.syncActiveTabIndicator();
23660
+ scrollIntoView(this.activeTab, this.nav, 'horizontal', 'center');
23388
23661
  }, 500);
23389
23662
  });
23390
23663
  this.resizeObserver.observe(this.nav);
@@ -23655,6 +23928,7 @@ const NanoSkeleton = /*@__PURE__*/proxyCustomElement(Skeleton, [1,"nano-skeleton
23655
23928
  const NanoSlide = /*@__PURE__*/proxyCustomElement(Slide$2, [1,"nano-slide",{"ready":[1540]}]);
23656
23929
  const NanoSlides = /*@__PURE__*/proxyCustomElement(Slides, [1,"nano-slides",{"options":[1040],"navbtns":[4],"pager":[4],"fullscreenbtn":[4],"fullscreen":[1540],"animation":[513],"currentSlide":[1538,"current-slide"],"autoplay":[8],"ready":[1540],"iCurrentSlide":[32],"slidesReady":[32],"didInit":[32]}]);
23657
23930
  const NanoSpinner = /*@__PURE__*/proxyCustomElement(Spinner, [1,"nano-spinner",{"type":[1],"overlay":[516],"hasText":[32]}]);
23931
+ const NanoSplitPane = /*@__PURE__*/proxyCustomElement(SplitPane, [1,"nano-split-pane",{"position":[6146],"positionInPixels":[1026,"position-in-pixels"],"vertical":[516],"disabled":[516],"primary":[1],"snap":[1],"snapThreshold":[2,"snap-threshold"],"animationDuration":[2,"animation-duration"],"isDragging":[2564,"is-dragging"]}]);
23658
23932
  const NanoSticker = /*@__PURE__*/proxyCustomElement(Sticker, [1,"nano-sticker",{"autoResize":[4,"auto-resize"],"isSticky":[1028,"is-sticky"],"offset":[1026],"position":[1],"quietMode":[1,"quiet-mode"],"hideOnNewStickers":[4,"hide-on-new-stickers"],"breakPointMax":[2,"break-point-max"],"breakPointMin":[2,"break-point-min"],"scrollParent":[1040],"stickTo":[1,"stick-to"],"isStuck":[32],"isRootSticker":[32],"hide":[32],"scrollHide":[32],"multiStickerHide":[32],"scrollingTo":[32],"quietModeIsOn":[32],"stuckCounter":[32],"stickerIndex":[32],"stickToEle":[32],"triggerPos":[32],"trigger":[32],"_offset":[32]}]);
23659
23933
  const NanoTab = /*@__PURE__*/proxyCustomElement(Tab, [1,"nano-tab",{"panel":[513],"active":[516],"disabled":[516],"closable":[4]}]);
23660
23934
  const NanoTabContent = /*@__PURE__*/proxyCustomElement(TabPanel, [1,"nano-tab-content",{"name":[513],"active":[516]}]);
@@ -23702,6 +23976,7 @@ const defineCustomElements = (opts) => {
23702
23976
  NanoSlide,
23703
23977
  NanoSlides,
23704
23978
  NanoSpinner,
23979
+ NanoSplitPane,
23705
23980
  NanoSticker,
23706
23981
  NanoTab,
23707
23982
  NanoTabContent,
@@ -27162,6 +27437,6 @@ const index = /*#__PURE__*/Object.freeze({
27162
27437
  GESTURE_CONTROLLER: GESTURE_CONTROLLER
27163
27438
  });
27164
27439
 
27165
- export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$1 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle$1 as nanoThrottle, setAssetPath, setPlatformOptions };
27440
+ export { NanoAccordion, NanoAlert, NanoAlgolia, NanoAlgoliaFilter, NanoAlgoliaInput, NanoAlgoliaPagination, NanoAlgoliaResults, NanoAspectRatio, NanoCheckbox, NanoCheckboxGroup, NanoDatalist, NanoDateInput, NanoDatePicker, NanoDetails, NanoDialog, NanoDrawer, NanoDropdown, NanoFileUpload, NanoGlobalNav, NanoGlobalSearchResults, NanoGrid, NanoGridItem, NanoHero, NanoIcon, NanoIconButton, NanoImg, NanoInput, NanoMenu, NanoMenuDrawer, NanoNavItem, NanoOption, NanoRange, NanoRating, NanoResizeObserve, NanoSelect, NanoSkeleton, NanoSlide, NanoSlides, NanoSpinner, NanoSplitPane, NanoSticker, NanoTab, NanoTabContent, NanoTabGroup, NanoTooltip, defineCustomElements, nanoCreateDialog, debounce$1 as nanoDebounce, raf as nanoRaf, nanoShowAlert, nanoShowToast, throttle$1 as nanoThrottle, setAssetPath, setPlatformOptions };
27166
27441
 
27167
27442
  //# sourceMappingURL=index.js.map