@limetech/lime-crm-building-blocks 1.43.6 → 1.44.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 (83) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/{factory-7974f06f.js → factory-77dbba8c.js} +1 -1
  3. package/dist/cjs/{index-fcfd461a.js → index-38585010.js} +385 -8
  4. package/dist/cjs/lime-crm-building-blocks.cjs.js +2 -2
  5. package/dist/cjs/limebb-browser.cjs.entry.js +1 -1
  6. package/dist/cjs/limebb-currency-picker.cjs.entry.js +1 -1
  7. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +1 -1
  8. package/dist/cjs/limebb-date-picker.cjs.entry.js +1 -1
  9. package/dist/cjs/limebb-date-range.cjs.entry.js +1 -1
  10. package/dist/cjs/limebb-empty-state.cjs.entry.js +1 -1
  11. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +7 -2
  12. package/dist/cjs/limebb-feed.cjs.entry.js +1 -1
  13. package/dist/cjs/limebb-icon-picker.cjs.entry.js +1 -1
  14. package/dist/cjs/limebb-info-tile.cjs.entry.js +2 -2
  15. package/dist/cjs/limebb-kanban-column.cjs.entry.js +1 -1
  16. package/dist/cjs/limebb-kanban-item.cjs.entry.js +1 -1
  17. package/dist/cjs/limebb-kanban.cjs.entry.js +1 -1
  18. package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +2 -2
  19. package/dist/cjs/limebb-locale-picker.cjs.entry.js +1 -1
  20. package/dist/cjs/limebb-mention.cjs.entry.js +70 -0
  21. package/dist/cjs/limebb-navigation-button.cjs.entry.js +1 -1
  22. package/dist/cjs/limebb-notification-item.cjs.entry.js +1 -1
  23. package/dist/cjs/limebb-notification-list.cjs.entry.js +1 -1
  24. package/dist/cjs/loader.cjs.js +2 -2
  25. package/dist/collection/collection-manifest.json +1 -0
  26. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +6 -1
  27. package/dist/collection/components/mention/mention.css +34 -0
  28. package/dist/collection/components/mention/mention.js +154 -0
  29. package/dist/components/feed-timeline-item.js +6 -1
  30. package/dist/components/index.d.ts +1 -0
  31. package/dist/components/index.js +1 -0
  32. package/dist/components/limebb-mention.d.ts +11 -0
  33. package/dist/components/limebb-mention.js +90 -0
  34. package/dist/esm/{factory-7eb19317.js → factory-8a902a7c.js} +1 -1
  35. package/dist/esm/{index-dbe082c7.js → index-17472c6c.js} +385 -8
  36. package/dist/esm/lime-crm-building-blocks.js +2 -2
  37. package/dist/esm/limebb-browser.entry.js +1 -1
  38. package/dist/esm/limebb-currency-picker.entry.js +1 -1
  39. package/dist/esm/limebb-dashboard-widget.entry.js +1 -1
  40. package/dist/esm/limebb-date-picker.entry.js +1 -1
  41. package/dist/esm/limebb-date-range.entry.js +1 -1
  42. package/dist/esm/limebb-empty-state.entry.js +1 -1
  43. package/dist/esm/limebb-feed-timeline-item.entry.js +7 -2
  44. package/dist/esm/limebb-feed.entry.js +1 -1
  45. package/dist/esm/limebb-icon-picker.entry.js +1 -1
  46. package/dist/esm/limebb-info-tile.entry.js +2 -2
  47. package/dist/esm/limebb-kanban-column.entry.js +1 -1
  48. package/dist/esm/limebb-kanban-item.entry.js +1 -1
  49. package/dist/esm/limebb-kanban.entry.js +1 -1
  50. package/dist/esm/limebb-limeobject-file-viewer.entry.js +2 -2
  51. package/dist/esm/limebb-locale-picker.entry.js +1 -1
  52. package/dist/esm/limebb-mention.entry.js +66 -0
  53. package/dist/esm/limebb-navigation-button.entry.js +1 -1
  54. package/dist/esm/limebb-notification-item.entry.js +1 -1
  55. package/dist/esm/limebb-notification-list.entry.js +1 -1
  56. package/dist/esm/loader.js +2 -2
  57. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  58. package/dist/lime-crm-building-blocks/{p-df0861cd.entry.js → p-09f93c65.entry.js} +1 -1
  59. package/dist/lime-crm-building-blocks/{p-bb835a01.entry.js → p-2480c4c9.entry.js} +1 -1
  60. package/dist/lime-crm-building-blocks/{p-baea9b27.entry.js → p-2a41b601.entry.js} +1 -1
  61. package/dist/lime-crm-building-blocks/{p-60f81501.entry.js → p-36a051c0.entry.js} +1 -1
  62. package/dist/lime-crm-building-blocks/{p-1025305f.entry.js → p-413f0ff2.entry.js} +1 -1
  63. package/dist/lime-crm-building-blocks/{p-c2976bfd.entry.js → p-4c047769.entry.js} +1 -1
  64. package/dist/lime-crm-building-blocks/{p-5a3df9bd.entry.js → p-543068f5.entry.js} +1 -1
  65. package/dist/lime-crm-building-blocks/{p-cb33b13c.entry.js → p-61351177.entry.js} +1 -1
  66. package/dist/lime-crm-building-blocks/{p-a884ff48.entry.js → p-6a5d8f7c.entry.js} +1 -1
  67. package/dist/lime-crm-building-blocks/{p-cfc1b2b8.entry.js → p-6d332f46.entry.js} +1 -1
  68. package/dist/lime-crm-building-blocks/{p-5f2ba7ee.js → p-710bb357.js} +1 -1
  69. package/dist/lime-crm-building-blocks/{p-61115e06.entry.js → p-74e87985.entry.js} +1 -1
  70. package/dist/lime-crm-building-blocks/p-8a43944c.entry.js +1 -0
  71. package/dist/lime-crm-building-blocks/{p-042d3249.entry.js → p-8a7242c9.entry.js} +1 -1
  72. package/dist/lime-crm-building-blocks/{p-bc4bcbeb.entry.js → p-8b7af192.entry.js} +1 -1
  73. package/dist/lime-crm-building-blocks/{p-4ee9ec0a.entry.js → p-8c87e918.entry.js} +1 -1
  74. package/dist/lime-crm-building-blocks/{p-98086794.entry.js → p-8dfbf2ec.entry.js} +1 -1
  75. package/dist/lime-crm-building-blocks/p-a5ea0bbf.entry.js +1 -0
  76. package/dist/lime-crm-building-blocks/{p-0866fc1b.entry.js → p-b7235641.entry.js} +1 -1
  77. package/dist/lime-crm-building-blocks/p-c2446eb7.js +2 -0
  78. package/dist/lime-crm-building-blocks/{p-0c1ba131.entry.js → p-f956bdb1.entry.js} +1 -1
  79. package/dist/types/components/mention/mention.d.ts +43 -0
  80. package/dist/types/components.d.ts +37 -0
  81. package/package.json +2 -2
  82. package/dist/lime-crm-building-blocks/p-fcdcc0f8.entry.js +0 -1
  83. package/dist/lime-crm-building-blocks/p-fd168243.js +0 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## [1.44.0](https://github.com/Lundalogik/lime-crm-building-blocks/compare/v1.43.6...v1.44.0) (2024-09-13)
2
+
3
+
4
+ ### Features
5
+
6
+
7
+ * **mentions:** add a component ([c31dfb3](https://github.com/Lundalogik/lime-crm-building-blocks/commit/c31dfb36aac28e630191dc662d5d531737de8a3d)), closes [Lundalogik/crm-feature#4356](https://github.com/Lundalogik/crm-feature/issues/4356)
8
+
9
+ ### Bug Fixes
10
+
11
+
12
+ * **feed-item:** whitelist limebb-mention ([36c4f36](https://github.com/Lundalogik/lime-crm-building-blocks/commit/36c4f36b630b8414d4a9175b8539e23b4f3c4a13))
13
+
1
14
  ### [1.43.6](https://github.com/Lundalogik/lime-crm-building-blocks/compare/v1.43.5...v1.43.6) (2024-09-12)
2
15
 
3
16
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-fcfd461a.js');
3
+ const index = require('./index-38585010.js');
4
4
 
5
5
  function isFunction(value) {
6
6
  return typeof value === 'function';
@@ -31,7 +31,11 @@ const NAMESPACE = 'lime-crm-building-blocks';
31
31
  * Modified for Stencil's renderer and slot projection
32
32
  */
33
33
  let scopeId;
34
+ let contentRef;
34
35
  let hostTagName;
36
+ let useNativeShadowDom = false;
37
+ let checkSlotFallbackVisibility = false;
38
+ let checkSlotRelocate = false;
35
39
  let isSvgMode = false;
36
40
  let queuePending = false;
37
41
  const createTime = (fnName, tagName = '') => {
@@ -78,6 +82,7 @@ const isComplexType = (o) => {
78
82
  const h = (nodeName, vnodeData, ...children) => {
79
83
  let child = null;
80
84
  let key = null;
85
+ let slotName = null;
81
86
  let simple = false;
82
87
  let lastSimple = false;
83
88
  const vNodeChildren = [];
@@ -109,6 +114,9 @@ const h = (nodeName, vnodeData, ...children) => {
109
114
  if (vnodeData.key) {
110
115
  key = vnodeData.key;
111
116
  }
117
+ if (vnodeData.name) {
118
+ slotName = vnodeData.name;
119
+ }
112
120
  {
113
121
  const classData = vnodeData.className || vnodeData.class;
114
122
  if (classData) {
@@ -129,6 +137,9 @@ const h = (nodeName, vnodeData, ...children) => {
129
137
  {
130
138
  vnode.$key$ = key;
131
139
  }
140
+ {
141
+ vnode.$name$ = slotName;
142
+ }
132
143
  return vnode;
133
144
  };
134
145
  const newVNode = (tag, text) => {
@@ -145,6 +156,9 @@ const newVNode = (tag, text) => {
145
156
  {
146
157
  vnode.$key$ = null;
147
158
  }
159
+ {
160
+ vnode.$name$ = null;
161
+ }
148
162
  return vnode;
149
163
  };
150
164
  const Host = {};
@@ -480,13 +494,36 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
480
494
  let i = 0;
481
495
  let elm;
482
496
  let childNode;
497
+ let oldVNode;
498
+ if (!useNativeShadowDom) {
499
+ // remember for later we need to check to relocate nodes
500
+ checkSlotRelocate = true;
501
+ if (newVNode.$tag$ === 'slot') {
502
+ if (scopeId) {
503
+ // scoped css needs to add its scoped id to the parent element
504
+ parentElm.classList.add(scopeId + '-s');
505
+ }
506
+ newVNode.$flags$ |= newVNode.$children$
507
+ ? // slot element has fallback content
508
+ 2 /* VNODE_FLAGS.isSlotFallback */
509
+ : // slot element does not have fallback content
510
+ 1 /* VNODE_FLAGS.isSlotReference */;
511
+ }
512
+ }
483
513
  if (newVNode.$text$ !== null) {
484
514
  // create text node
485
515
  elm = newVNode.$elm$ = doc.createTextNode(newVNode.$text$);
486
516
  }
517
+ else if (newVNode.$flags$ & 1 /* VNODE_FLAGS.isSlotReference */) {
518
+ // create a slot reference node
519
+ elm = newVNode.$elm$ =
520
+ doc.createTextNode('');
521
+ }
487
522
  else {
488
523
  // create element
489
- elm = newVNode.$elm$ = (doc.createElement(newVNode.$tag$));
524
+ elm = newVNode.$elm$ = (doc.createElement(newVNode.$flags$ & 2 /* VNODE_FLAGS.isSlotFallback */
525
+ ? 'slot-fb'
526
+ : newVNode.$tag$));
490
527
  // add css classes, attrs, props, listeners, etc.
491
528
  {
492
529
  updateElement(null, newVNode, isSvgMode);
@@ -499,7 +536,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
499
536
  if (newVNode.$children$) {
500
537
  for (i = 0; i < newVNode.$children$.length; ++i) {
501
538
  // create the node
502
- childNode = createElm(oldParentVNode, newVNode, i);
539
+ childNode = createElm(oldParentVNode, newVNode, i, elm);
503
540
  // return node could have been null
504
541
  if (childNode) {
505
542
  // append our new node
@@ -508,20 +545,62 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
508
545
  }
509
546
  }
510
547
  }
548
+ {
549
+ elm['s-hn'] = hostTagName;
550
+ if (newVNode.$flags$ & (2 /* VNODE_FLAGS.isSlotFallback */ | 1 /* VNODE_FLAGS.isSlotReference */)) {
551
+ // remember the content reference comment
552
+ elm['s-sr'] = true;
553
+ // remember the content reference comment
554
+ elm['s-cr'] = contentRef;
555
+ // remember the slot name, or empty string for default slot
556
+ elm['s-sn'] = newVNode.$name$ || '';
557
+ // check if we've got an old vnode for this slot
558
+ oldVNode = oldParentVNode && oldParentVNode.$children$ && oldParentVNode.$children$[childIndex];
559
+ if (oldVNode && oldVNode.$tag$ === newVNode.$tag$ && oldParentVNode.$elm$) {
560
+ // we've got an old slot vnode and the wrapper is being replaced
561
+ // so let's move the old slot content back to it's original location
562
+ putBackInOriginalLocation(oldParentVNode.$elm$, false);
563
+ }
564
+ }
565
+ }
511
566
  return elm;
512
567
  };
568
+ const putBackInOriginalLocation = (parentElm, recursive) => {
569
+ plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
570
+ const oldSlotChildNodes = parentElm.childNodes;
571
+ for (let i = oldSlotChildNodes.length - 1; i >= 0; i--) {
572
+ const childNode = oldSlotChildNodes[i];
573
+ if (childNode['s-hn'] !== hostTagName && childNode['s-ol']) {
574
+ // // this child node in the old element is from another component
575
+ // // remove this node from the old slot's parent
576
+ // childNode.remove();
577
+ // and relocate it back to it's original location
578
+ parentReferenceNode(childNode).insertBefore(childNode, referenceNode(childNode));
579
+ // remove the old original location comment entirely
580
+ // later on the patch function will know what to do
581
+ // and move this to the correct spot in need be
582
+ childNode['s-ol'].remove();
583
+ childNode['s-ol'] = undefined;
584
+ checkSlotRelocate = true;
585
+ }
586
+ if (recursive) {
587
+ putBackInOriginalLocation(childNode, recursive);
588
+ }
589
+ }
590
+ plt.$flags$ &= ~1 /* PLATFORM_FLAGS.isTmpDisconnected */;
591
+ };
513
592
  const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {
514
- let containerElm = (parentElm);
593
+ let containerElm = ((parentElm['s-cr'] && parentElm['s-cr'].parentNode) || parentElm);
515
594
  let childNode;
516
595
  if (containerElm.shadowRoot && containerElm.tagName === hostTagName) {
517
596
  containerElm = containerElm.shadowRoot;
518
597
  }
519
598
  for (; startIdx <= endIdx; ++startIdx) {
520
599
  if (vnodes[startIdx]) {
521
- childNode = createElm(null, parentVNode, startIdx);
600
+ childNode = createElm(null, parentVNode, startIdx, parentElm);
522
601
  if (childNode) {
523
602
  vnodes[startIdx].$elm$ = childNode;
524
- containerElm.insertBefore(childNode, before);
603
+ containerElm.insertBefore(childNode, referenceNode(before) );
525
604
  }
526
605
  }
527
606
  }
@@ -531,6 +610,20 @@ const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
531
610
  if ((vnode = vnodes[startIdx])) {
532
611
  elm = vnode.$elm$;
533
612
  callNodeRefs(vnode);
613
+ {
614
+ // we're removing this element
615
+ // so it's possible we need to show slot fallback content now
616
+ checkSlotFallbackVisibility = true;
617
+ if (elm['s-ol']) {
618
+ // remove the original location comment
619
+ elm['s-ol'].remove();
620
+ }
621
+ else {
622
+ // it's possible that child nodes of the node
623
+ // that's being removed are slot nodes
624
+ putBackInOriginalLocation(elm, true);
625
+ }
626
+ }
534
627
  // remove the vnode's element from the dom
535
628
  elm.remove();
536
629
  }
@@ -649,6 +742,23 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
649
742
  newEndVnode = newCh[--newEndIdx];
650
743
  }
651
744
  else if (isSameVnode(oldStartVnode, newEndVnode)) {
745
+ // case: "Vnode moved right"
746
+ //
747
+ // We've found that the last node in our window on the new children is
748
+ // the same VNode as the _first_ node in our window on the old children
749
+ // we're dealing with now. Visually, this is the layout of these two
750
+ // nodes:
751
+ //
752
+ // newCh: [..., newStartVnode , ... , newEndVnode , ...]
753
+ // ^^^^^^^^^^^
754
+ // oldCh: [..., oldStartVnode , ... , oldEndVnode , ...]
755
+ // ^^^^^^^^^^^^^
756
+ //
757
+ // In this situation we need to patch `newEndVnode` onto `oldStartVnode`
758
+ // and move the DOM element for `oldStartVnode`.
759
+ if ((oldStartVnode.$tag$ === 'slot' || newEndVnode.$tag$ === 'slot')) {
760
+ putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);
761
+ }
652
762
  patch(oldStartVnode, newEndVnode);
653
763
  // We need to move the element for `oldStartVnode` into a position which
654
764
  // will be appropriate for `newEndVnode`. For this we can use
@@ -672,6 +782,24 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
672
782
  newEndVnode = newCh[--newEndIdx];
673
783
  }
674
784
  else if (isSameVnode(oldEndVnode, newStartVnode)) {
785
+ // case: "Vnode moved left"
786
+ //
787
+ // We've found that the first node in our window on the new children is
788
+ // the same VNode as the _last_ node in our window on the old children.
789
+ // Visually, this is the layout of these two nodes:
790
+ //
791
+ // newCh: [..., newStartVnode , ... , newEndVnode , ...]
792
+ // ^^^^^^^^^^^^^
793
+ // oldCh: [..., oldStartVnode , ... , oldEndVnode , ...]
794
+ // ^^^^^^^^^^^
795
+ //
796
+ // In this situation we need to patch `newStartVnode` onto `oldEndVnode`
797
+ // (which will handle updating any changed attributes, reconciling their
798
+ // children etc) but we also need to move the DOM node to which
799
+ // `oldEndVnode` corresponds.
800
+ if ((oldStartVnode.$tag$ === 'slot' || newEndVnode.$tag$ === 'slot')) {
801
+ putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);
802
+ }
675
803
  patch(oldEndVnode, newStartVnode);
676
804
  // We've already checked above if `oldStartVnode` and `newStartVnode` are
677
805
  // the same node, so since we're here we know that they are not. Thus we
@@ -706,7 +834,7 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
706
834
  elmToMove = oldCh[idxInOld];
707
835
  if (elmToMove.$tag$ !== newStartVnode.$tag$) {
708
836
  // the tag doesn't match so we'll need a new DOM element
709
- node = createElm(oldCh && oldCh[newStartIdx], newVNode, idxInOld);
837
+ node = createElm(oldCh && oldCh[newStartIdx], newVNode, idxInOld, parentElm);
710
838
  }
711
839
  else {
712
840
  patch(elmToMove, newStartVnode);
@@ -722,13 +850,13 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
722
850
  // the key of the first new child OR the build is not using `key`
723
851
  // attributes at all. In either case we need to create a new element
724
852
  // for the new node.
725
- node = createElm(oldCh && oldCh[newStartIdx], newVNode, newStartIdx);
853
+ node = createElm(oldCh && oldCh[newStartIdx], newVNode, newStartIdx, parentElm);
726
854
  newStartVnode = newCh[++newStartIdx];
727
855
  }
728
856
  if (node) {
729
857
  // if we created a new node then handle inserting it to the DOM
730
858
  {
731
- oldStartVnode.$elm$.parentNode.insertBefore(node, oldStartVnode.$elm$);
859
+ parentReferenceNode(oldStartVnode.$elm$).insertBefore(node, referenceNode(oldStartVnode.$elm$));
732
860
  }
733
861
  }
734
862
  }
@@ -765,6 +893,9 @@ const isSameVnode = (leftVNode, rightVNode) => {
765
893
  // compare if two vnode to see if they're "technically" the same
766
894
  // need to have the same element tag, and same key to be the same
767
895
  if (leftVNode.$tag$ === rightVNode.$tag$) {
896
+ if (leftVNode.$tag$ === 'slot') {
897
+ return leftVNode.$name$ === rightVNode.$name$;
898
+ }
768
899
  // this will be set if components in the build have `key` attrs set on them
769
900
  {
770
901
  return leftVNode.$key$ === rightVNode.$key$;
@@ -772,6 +903,14 @@ const isSameVnode = (leftVNode, rightVNode) => {
772
903
  }
773
904
  return false;
774
905
  };
906
+ const referenceNode = (node) => {
907
+ // this node was relocated to a new location in the dom
908
+ // because of some other component's slot
909
+ // but we still have an html comment in place of where
910
+ // it's original location was according to it's original vdom
911
+ return (node && node['s-ol']) || node;
912
+ };
913
+ const parentReferenceNode = (node) => (node['s-ol'] ? node['s-ol'] : node).parentNode;
775
914
  /**
776
915
  * Handle reconciling an outdated VNode with a new one which corresponds to
777
916
  * it. This function handles flushing updates to the DOM and reconciling the
@@ -786,6 +925,7 @@ const patch = (oldVNode, newVNode) => {
786
925
  const newChildren = newVNode.$children$;
787
926
  const tag = newVNode.$tag$;
788
927
  const text = newVNode.$text$;
928
+ let defaultHolder;
789
929
  if (text === null) {
790
930
  {
791
931
  if (tag === 'slot')
@@ -816,12 +956,147 @@ const patch = (oldVNode, newVNode) => {
816
956
  removeVnodes(oldChildren, 0, oldChildren.length - 1);
817
957
  }
818
958
  }
959
+ else if ((defaultHolder = elm['s-cr'])) {
960
+ // this element has slotted content
961
+ defaultHolder.parentNode.textContent = text;
962
+ }
819
963
  else if (oldVNode.$text$ !== text) {
820
964
  // update the text content for the text only vnode
821
965
  // and also only if the text is different than before
822
966
  elm.data = text;
823
967
  }
824
968
  };
969
+ const updateFallbackSlotVisibility = (elm) => {
970
+ // tslint:disable-next-line: prefer-const
971
+ const childNodes = elm.childNodes;
972
+ let childNode;
973
+ let i;
974
+ let ilen;
975
+ let j;
976
+ let slotNameAttr;
977
+ let nodeType;
978
+ for (i = 0, ilen = childNodes.length; i < ilen; i++) {
979
+ childNode = childNodes[i];
980
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
981
+ if (childNode['s-sr']) {
982
+ // this is a slot fallback node
983
+ // get the slot name for this slot reference node
984
+ slotNameAttr = childNode['s-sn'];
985
+ // by default always show a fallback slot node
986
+ // then hide it if there are other slots in the light dom
987
+ childNode.hidden = false;
988
+ for (j = 0; j < ilen; j++) {
989
+ nodeType = childNodes[j].nodeType;
990
+ if (childNodes[j]['s-hn'] !== childNode['s-hn'] || slotNameAttr !== '') {
991
+ // this sibling node is from a different component OR is a named fallback slot node
992
+ if (nodeType === 1 /* NODE_TYPE.ElementNode */ && slotNameAttr === childNodes[j].getAttribute('slot')) {
993
+ childNode.hidden = true;
994
+ break;
995
+ }
996
+ }
997
+ else {
998
+ // this is a default fallback slot node
999
+ // any element or text node (with content)
1000
+ // should hide the default fallback slot node
1001
+ if (nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1002
+ (nodeType === 3 /* NODE_TYPE.TextNode */ && childNodes[j].textContent.trim() !== '')) {
1003
+ childNode.hidden = true;
1004
+ break;
1005
+ }
1006
+ }
1007
+ }
1008
+ }
1009
+ // keep drilling down
1010
+ updateFallbackSlotVisibility(childNode);
1011
+ }
1012
+ }
1013
+ };
1014
+ const relocateNodes = [];
1015
+ const relocateSlotContent = (elm) => {
1016
+ // tslint:disable-next-line: prefer-const
1017
+ let childNode;
1018
+ let node;
1019
+ let hostContentNodes;
1020
+ let slotNameAttr;
1021
+ let relocateNodeData;
1022
+ let j;
1023
+ let i = 0;
1024
+ const childNodes = elm.childNodes;
1025
+ const ilen = childNodes.length;
1026
+ for (; i < ilen; i++) {
1027
+ childNode = childNodes[i];
1028
+ if (childNode['s-sr'] && (node = childNode['s-cr']) && node.parentNode) {
1029
+ // first got the content reference comment node
1030
+ // then we got it's parent, which is where all the host content is in now
1031
+ hostContentNodes = node.parentNode.childNodes;
1032
+ slotNameAttr = childNode['s-sn'];
1033
+ for (j = hostContentNodes.length - 1; j >= 0; j--) {
1034
+ node = hostContentNodes[j];
1035
+ if (!node['s-cn'] && !node['s-nr'] && node['s-hn'] !== childNode['s-hn']) {
1036
+ // let's do some relocating to its new home
1037
+ // but never relocate a content reference node
1038
+ // that is suppose to always represent the original content location
1039
+ if (isNodeLocatedInSlot(node, slotNameAttr)) {
1040
+ // it's possible we've already decided to relocate this node
1041
+ relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
1042
+ // made some changes to slots
1043
+ // let's make sure we also double check
1044
+ // fallbacks are correctly hidden or shown
1045
+ checkSlotFallbackVisibility = true;
1046
+ node['s-sn'] = node['s-sn'] || slotNameAttr;
1047
+ if (relocateNodeData) {
1048
+ // previously we never found a slot home for this node
1049
+ // but turns out we did, so let's remember it now
1050
+ relocateNodeData.$slotRefNode$ = childNode;
1051
+ }
1052
+ else {
1053
+ // add to our list of nodes to relocate
1054
+ relocateNodes.push({
1055
+ $slotRefNode$: childNode,
1056
+ $nodeToRelocate$: node,
1057
+ });
1058
+ }
1059
+ if (node['s-sr']) {
1060
+ relocateNodes.map((relocateNode) => {
1061
+ if (isNodeLocatedInSlot(relocateNode.$nodeToRelocate$, node['s-sn'])) {
1062
+ relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
1063
+ if (relocateNodeData && !relocateNode.$slotRefNode$) {
1064
+ relocateNode.$slotRefNode$ = relocateNodeData.$slotRefNode$;
1065
+ }
1066
+ }
1067
+ });
1068
+ }
1069
+ }
1070
+ else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {
1071
+ // so far this element does not have a slot home, not setting slotRefNode on purpose
1072
+ // if we never find a home for this element then we'll need to hide it
1073
+ relocateNodes.push({
1074
+ $nodeToRelocate$: node,
1075
+ });
1076
+ }
1077
+ }
1078
+ }
1079
+ }
1080
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1081
+ relocateSlotContent(childNode);
1082
+ }
1083
+ }
1084
+ };
1085
+ const isNodeLocatedInSlot = (nodeToRelocate, slotNameAttr) => {
1086
+ if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1087
+ if (nodeToRelocate.getAttribute('slot') === null && slotNameAttr === '') {
1088
+ return true;
1089
+ }
1090
+ if (nodeToRelocate.getAttribute('slot') === slotNameAttr) {
1091
+ return true;
1092
+ }
1093
+ return false;
1094
+ }
1095
+ if (nodeToRelocate['s-sn'] === slotNameAttr) {
1096
+ return true;
1097
+ }
1098
+ return slotNameAttr === '';
1099
+ };
825
1100
  const callNodeRefs = (vNode) => {
826
1101
  {
827
1102
  vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
@@ -845,8 +1120,90 @@ const renderVdom = (hostRef, renderFnResults) => {
845
1120
  {
846
1121
  scopeId = hostElm['s-sc'];
847
1122
  }
1123
+ {
1124
+ contentRef = hostElm['s-cr'];
1125
+ useNativeShadowDom = (cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) !== 0;
1126
+ // always reset
1127
+ checkSlotFallbackVisibility = false;
1128
+ }
848
1129
  // synchronous patch
849
1130
  patch(oldVNode, rootVnode);
1131
+ {
1132
+ // while we're moving nodes around existing nodes, temporarily disable
1133
+ // the disconnectCallback from working
1134
+ plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
1135
+ if (checkSlotRelocate) {
1136
+ relocateSlotContent(rootVnode.$elm$);
1137
+ let relocateData;
1138
+ let nodeToRelocate;
1139
+ let orgLocationNode;
1140
+ let parentNodeRef;
1141
+ let insertBeforeNode;
1142
+ let refNode;
1143
+ let i = 0;
1144
+ for (; i < relocateNodes.length; i++) {
1145
+ relocateData = relocateNodes[i];
1146
+ nodeToRelocate = relocateData.$nodeToRelocate$;
1147
+ if (!nodeToRelocate['s-ol']) {
1148
+ // add a reference node marking this node's original location
1149
+ // keep a reference to this node for later lookups
1150
+ orgLocationNode =
1151
+ doc.createTextNode('');
1152
+ orgLocationNode['s-nr'] = nodeToRelocate;
1153
+ nodeToRelocate.parentNode.insertBefore((nodeToRelocate['s-ol'] = orgLocationNode), nodeToRelocate);
1154
+ }
1155
+ }
1156
+ for (i = 0; i < relocateNodes.length; i++) {
1157
+ relocateData = relocateNodes[i];
1158
+ nodeToRelocate = relocateData.$nodeToRelocate$;
1159
+ if (relocateData.$slotRefNode$) {
1160
+ // by default we're just going to insert it directly
1161
+ // after the slot reference node
1162
+ parentNodeRef = relocateData.$slotRefNode$.parentNode;
1163
+ insertBeforeNode = relocateData.$slotRefNode$.nextSibling;
1164
+ orgLocationNode = nodeToRelocate['s-ol'];
1165
+ while ((orgLocationNode = orgLocationNode.previousSibling)) {
1166
+ refNode = orgLocationNode['s-nr'];
1167
+ if (refNode && refNode['s-sn'] === nodeToRelocate['s-sn'] && parentNodeRef === refNode.parentNode) {
1168
+ refNode = refNode.nextSibling;
1169
+ if (!refNode || !refNode['s-nr']) {
1170
+ insertBeforeNode = refNode;
1171
+ break;
1172
+ }
1173
+ }
1174
+ }
1175
+ if ((!insertBeforeNode && parentNodeRef !== nodeToRelocate.parentNode) ||
1176
+ nodeToRelocate.nextSibling !== insertBeforeNode) {
1177
+ // we've checked that it's worth while to relocate
1178
+ // since that the node to relocate
1179
+ // has a different next sibling or parent relocated
1180
+ if (nodeToRelocate !== insertBeforeNode) {
1181
+ if (!nodeToRelocate['s-hn'] && nodeToRelocate['s-ol']) {
1182
+ // probably a component in the index.html that doesn't have it's hostname set
1183
+ nodeToRelocate['s-hn'] = nodeToRelocate['s-ol'].parentNode.nodeName;
1184
+ }
1185
+ // add it back to the dom but in its new home
1186
+ parentNodeRef.insertBefore(nodeToRelocate, insertBeforeNode);
1187
+ }
1188
+ }
1189
+ }
1190
+ else {
1191
+ // this node doesn't have a slot home to go to, so let's hide it
1192
+ if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1193
+ nodeToRelocate.hidden = true;
1194
+ }
1195
+ }
1196
+ }
1197
+ }
1198
+ if (checkSlotFallbackVisibility) {
1199
+ updateFallbackSlotVisibility(rootVnode.$elm$);
1200
+ }
1201
+ // done moving nodes around
1202
+ // allow the disconnect callback to work again
1203
+ plt.$flags$ &= ~1 /* PLATFORM_FLAGS.isTmpDisconnected */;
1204
+ // always reset
1205
+ relocateNodes.length = 0;
1206
+ }
850
1207
  };
851
1208
  const attachToAncestor = (hostRef, ancestorComponent) => {
852
1209
  if (ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent['s-p']) {
@@ -1240,6 +1597,15 @@ const connectedCallback = (elm) => {
1240
1597
  if (!(hostRef.$flags$ & 1 /* HOST_FLAGS.hasConnected */)) {
1241
1598
  // first time this component has connected
1242
1599
  hostRef.$flags$ |= 1 /* HOST_FLAGS.hasConnected */;
1600
+ {
1601
+ // initUpdate
1602
+ // if the slot polyfill is required we'll need to put some nodes
1603
+ // in here to act as original content anchors as we move nodes around
1604
+ // host element has been connected to the DOM
1605
+ if ((cmpMeta.$flags$ & (4 /* CMP_FLAGS.hasSlotRelocation */ | 8 /* CMP_FLAGS.needsShadowDomShim */))) {
1606
+ setContentReference(elm);
1607
+ }
1608
+ }
1243
1609
  {
1244
1610
  // find the first ancestor component (if there is one) and register
1245
1611
  // this component as one of the actively loading child components for its ancestor
@@ -1273,6 +1639,17 @@ const connectedCallback = (elm) => {
1273
1639
  endConnected();
1274
1640
  }
1275
1641
  };
1642
+ const setContentReference = (elm) => {
1643
+ // only required when we're NOT using native shadow dom (slot)
1644
+ // or this browser doesn't support native shadow dom
1645
+ // and this host element was NOT created with SSR
1646
+ // let's pick out the inner content for slot projection
1647
+ // create a node to represent where the original
1648
+ // content was first placed, which is useful later on
1649
+ const contentRefElm = (elm['s-cr'] = doc.createComment(''));
1650
+ contentRefElm['s-cn'] = true;
1651
+ elm.insertBefore(contentRefElm, elm.firstChild);
1652
+ };
1276
1653
  const disconnectedCallback = (elm) => {
1277
1654
  if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1278
1655
  const hostRef = getHostRef(elm);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-fcfd461a.js');
3
+ const index = require('./index-38585010.js');
4
4
 
5
5
  /*
6
6
  Stencil Client Patch Browser v2.18.1 | MIT Licensed | https://stenciljs.com
@@ -15,5 +15,5 @@ const patchBrowser = () => {
15
15
  };
16
16
 
17
17
  patchBrowser().then(options => {
18
- return index.bootstrapLazy([["limebb-kanban.cjs",[[1,"limebb-kanban",{"platform":[16],"context":[16],"items":[16],"paginationSize":[2,"pagination-size"],"groupBy":[513,"group-by"],"groups":[16]}]]],["limebb-date-range.cjs",[[1,"limebb-date-range",{"platform":[16],"context":[16],"startTime":[16],"endTime":[16],"startTimeLabel":[1,"start-time-label"],"endTimeLabel":[1,"end-time-label"],"language":[1],"timeFormat":[1,"time-format"],"type":[1]}]]],["limebb-feed.cjs",[[1,"limebb-feed",{"platform":[16],"context":[16],"items":[16],"emptyStateMessage":[1,"empty-state-message"],"loading":[4],"minutesOfProximity":[2,"minutes-of-proximity"],"totalCount":[2,"total-count"],"lastVisitedTimestamp":[1,"last-visited-timestamp"]}]]],["limebb-notification-list.cjs",[[1,"limebb-notification-list",{"platform":[16],"context":[16],"items":[16],"loading":[4],"lastVisitedTimestamp":[1,"last-visited-timestamp"]}]]],["limebb-browser.cjs",[[17,"limebb-browser",{"platform":[16],"context":[16],"items":[16],"layout":[1],"filter":[32]}]]],["limebb-currency-picker.cjs",[[1,"limebb-currency-picker",{"label":[513],"platform":[16],"currencies":[16],"helperText":[513,"helper-text"],"required":[516],"readonly":[516],"invalid":[516],"disabled":[516],"value":[16]}]]],["limebb-dashboard-widget.cjs",[[1,"limebb-dashboard-widget",{"heading":[513],"subheading":[513],"supportingText":[513,"supporting-text"],"icon":[513]}]]],["limebb-empty-state.cjs",[[1,"limebb-empty-state",{"heading":[513],"value":[513],"icon":[16]}]]],["limebb-icon-picker.cjs",[[1,"limebb-icon-picker",{"value":[1],"required":[4],"readonly":[4],"invalid":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"]}]]],["limebb-info-tile.cjs",[[1,"limebb-info-tile",{"platform":[16],"context":[16],"filterId":[1,"filter-id"],"disabled":[4],"icon":[1],"label":[1],"prefix":[1],"suffix":[1],"propertyName":[1,"property-name"],"aggregateOperator":[1,"aggregate-operator"],"filters":[32],"value":[32],"loading":[32],"error":[32]}]]],["limebb-limeobject-file-viewer.cjs",[[1,"limebb-limeobject-file-viewer",{"platform":[16],"context":[16],"property":[1],"fileTypes":[16],"limeobject":[32],"limetype":[32]}]]],["limebb-locale-picker.cjs",[[1,"limebb-locale-picker",{"platform":[16],"context":[16],"value":[1],"required":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"],"readonly":[4],"multipleChoice":[4,"multiple-choice"],"allLanguages":[32]}]]],["limebb-navigation-button.cjs",[[17,"limebb-navigation-button",{"href":[513],"tooltipLabel":[513,"tooltip-label"],"tooltipHelperLabel":[513,"tooltip-helper-label"],"type":[513]}]]],["limebb-kanban-item.cjs",[[1,"limebb-kanban-item",{"platform":[16],"context":[16],"item":[16]}]]],["limebb-kanban-column.cjs",[[1,"limebb-kanban-column",{"platform":[16],"context":[16],"columnHeading":[1,"column-heading"],"items":[16],"loading":[4],"paginationSize":[2,"pagination-size"],"displayedItemCount":[32]}]]],["limebb-date-picker.cjs",[[1,"limebb-date-picker",{"platform":[16],"context":[16],"disabled":[516],"readonly":[516],"invalid":[516],"label":[513],"placeholder":[513],"helperText":[513,"helper-text"],"required":[516],"value":[1],"type":[513]}]]],["limebb-feed-timeline-item.cjs",[[1,"limebb-feed-timeline-item",{"platform":[16],"context":[16],"item":[16],"ui":[513],"isBundled":[516,"is-bundled"],"headingCanExpand":[32],"isHeadingExpanded":[32],"showMore":[32],"isTall":[32]}]]],["limebb-notification-item.cjs",[[1,"limebb-notification-item",{"platform":[16],"context":[16],"item":[16]}]]]], options);
18
+ return index.bootstrapLazy([["limebb-kanban.cjs",[[1,"limebb-kanban",{"platform":[16],"context":[16],"items":[16],"paginationSize":[2,"pagination-size"],"groupBy":[513,"group-by"],"groups":[16]}]]],["limebb-date-range.cjs",[[1,"limebb-date-range",{"platform":[16],"context":[16],"startTime":[16],"endTime":[16],"startTimeLabel":[1,"start-time-label"],"endTimeLabel":[1,"end-time-label"],"language":[1],"timeFormat":[1,"time-format"],"type":[1]}]]],["limebb-feed.cjs",[[1,"limebb-feed",{"platform":[16],"context":[16],"items":[16],"emptyStateMessage":[1,"empty-state-message"],"loading":[4],"minutesOfProximity":[2,"minutes-of-proximity"],"totalCount":[2,"total-count"],"lastVisitedTimestamp":[1,"last-visited-timestamp"]}]]],["limebb-notification-list.cjs",[[1,"limebb-notification-list",{"platform":[16],"context":[16],"items":[16],"loading":[4],"lastVisitedTimestamp":[1,"last-visited-timestamp"]}]]],["limebb-browser.cjs",[[17,"limebb-browser",{"platform":[16],"context":[16],"items":[16],"layout":[1],"filter":[32]}]]],["limebb-currency-picker.cjs",[[1,"limebb-currency-picker",{"label":[513],"platform":[16],"currencies":[16],"helperText":[513,"helper-text"],"required":[516],"readonly":[516],"invalid":[516],"disabled":[516],"value":[16]}]]],["limebb-dashboard-widget.cjs",[[1,"limebb-dashboard-widget",{"heading":[513],"subheading":[513],"supportingText":[513,"supporting-text"],"icon":[513]}]]],["limebb-empty-state.cjs",[[1,"limebb-empty-state",{"heading":[513],"value":[513],"icon":[16]}]]],["limebb-icon-picker.cjs",[[1,"limebb-icon-picker",{"value":[1],"required":[4],"readonly":[4],"invalid":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"]}]]],["limebb-info-tile.cjs",[[1,"limebb-info-tile",{"platform":[16],"context":[16],"filterId":[1,"filter-id"],"disabled":[4],"icon":[1],"label":[1],"prefix":[1],"suffix":[1],"propertyName":[1,"property-name"],"aggregateOperator":[1,"aggregate-operator"],"filters":[32],"value":[32],"loading":[32],"error":[32]}]]],["limebb-limeobject-file-viewer.cjs",[[1,"limebb-limeobject-file-viewer",{"platform":[16],"context":[16],"property":[1],"fileTypes":[16],"limeobject":[32],"limetype":[32]}]]],["limebb-locale-picker.cjs",[[1,"limebb-locale-picker",{"platform":[16],"context":[16],"value":[1],"required":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"],"readonly":[4],"multipleChoice":[4,"multiple-choice"],"allLanguages":[32]}]]],["limebb-mention.cjs",[[4,"limebb-mention",{"platform":[16],"limetype":[1],"objectid":[2],"mentionedObject":[32],"loading":[32],"platformFromDocument":[32]}]]],["limebb-navigation-button.cjs",[[17,"limebb-navigation-button",{"href":[513],"tooltipLabel":[513,"tooltip-label"],"tooltipHelperLabel":[513,"tooltip-helper-label"],"type":[513]}]]],["limebb-kanban-item.cjs",[[1,"limebb-kanban-item",{"platform":[16],"context":[16],"item":[16]}]]],["limebb-kanban-column.cjs",[[1,"limebb-kanban-column",{"platform":[16],"context":[16],"columnHeading":[1,"column-heading"],"items":[16],"loading":[4],"paginationSize":[2,"pagination-size"],"displayedItemCount":[32]}]]],["limebb-date-picker.cjs",[[1,"limebb-date-picker",{"platform":[16],"context":[16],"disabled":[516],"readonly":[516],"invalid":[516],"label":[513],"placeholder":[513],"helperText":[513,"helper-text"],"required":[516],"value":[1],"type":[513]}]]],["limebb-feed-timeline-item.cjs",[[1,"limebb-feed-timeline-item",{"platform":[16],"context":[16],"item":[16],"ui":[513],"isBundled":[516,"is-bundled"],"headingCanExpand":[32],"isHeadingExpanded":[32],"showMore":[32],"isTall":[32]}]]],["limebb-notification-item.cjs",[[1,"limebb-notification-item",{"platform":[16],"context":[16],"item":[16]}]]]], options);
19
19
  });
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-fcfd461a.js');
5
+ const index = require('./index-38585010.js');
6
6
  const types = require('./types-c7646c23.js');
7
7
  const negate = require('./negate-14a67e26.js');
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-fcfd461a.js');
5
+ const index = require('./index-38585010.js');
6
6
  const types = require('./types-c7646c23.js');
7
7
 
8
8
  const nordicMarketCurrencies = [
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-fcfd461a.js');
5
+ const index = require('./index-38585010.js');
6
6
 
7
7
  const dashboardWidgetCss = ":host(limebb-dashboard-widget){--dashboard-widget-background-color:var(\n --start-page-grid-widget-background-color,\n rgb(var(--contrast-100))\n );--header-icon-color:var(--dashboard-widget-icon-color);--header-background-color:var(\n --dashboard-widget-header-background-color,\n var(--start-page-grid-widget-header-color)\n );--dashboard-widget-border-radius:var(\n --start-page-grid-widget-border-radius,\n 1rem\n );--header-top-right-left-border-radius:0;display:flex;flex-direction:column;border-radius:var(--dashboard-widget-border-radius);background-color:var(--dashboard-widget-background-color);height:100%;width:100%;overflow:hidden}";
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-fcfd461a.js');
5
+ const index = require('./index-38585010.js');
6
6
  const types = require('./types-c7646c23.js');
7
7
 
8
8
  /**