@sula-tech/webcomponents 0.15.0 → 0.16.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 (116) hide show
  1. package/dist/cjs/{index-C19aFtyq.js → index-CHZXBkfx.js} +357 -7
  2. package/dist/cjs/index-CHZXBkfx.js.map +1 -0
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/{sula-avatar_22.cjs.entry.js → sula-avatar_28.cjs.entry.js} +195 -25
  5. package/dist/cjs/sula-avatar_28.cjs.entry.js.map +1 -0
  6. package/dist/cjs/webcomponents.cjs.js +2 -2
  7. package/dist/collection/collection-manifest.json +6 -0
  8. package/dist/collection/components/sula-avatar/sula-avatar.css +1 -1
  9. package/dist/collection/components/sula-dropdown/sula-dropdown.js +6 -6
  10. package/dist/collection/components/sula-dropdown/sula-dropdown.js.map +1 -1
  11. package/dist/collection/components/sula-icon/sula-icon.css +1 -1
  12. package/dist/collection/components/sula-table/model/sula-table.model.js +8 -0
  13. package/dist/collection/components/sula-table/model/sula-table.model.js.map +1 -0
  14. package/dist/collection/components/sula-table/sula-table.css +1 -0
  15. package/dist/collection/components/sula-table/sula-table.js +111 -0
  16. package/dist/collection/components/sula-table/sula-table.js.map +1 -0
  17. package/dist/collection/components/sula-table/sula-table.stories.js +298 -0
  18. package/dist/collection/components/sula-table/sula-table.stories.js.map +1 -0
  19. package/dist/collection/components/sula-table-body/sula-table-body.css +1 -0
  20. package/dist/collection/components/sula-table-body/sula-table-body.js +23 -0
  21. package/dist/collection/components/sula-table-body/sula-table-body.js.map +1 -0
  22. package/dist/collection/components/sula-table-cell/sula-table-cell.css +1 -0
  23. package/dist/collection/components/sula-table-cell/sula-table-cell.js +34 -0
  24. package/dist/collection/components/sula-table-cell/sula-table-cell.js.map +1 -0
  25. package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.css +1 -0
  26. package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.js +34 -0
  27. package/dist/collection/components/sula-table-head-cell/sula-table-head-cell.js.map +1 -0
  28. package/dist/collection/components/sula-table-header/sula-table-header.css +1 -0
  29. package/dist/collection/components/sula-table-header/sula-table-header.js +23 -0
  30. package/dist/collection/components/sula-table-header/sula-table-header.js.map +1 -0
  31. package/dist/collection/components/sula-table-row/sula-table-row.css +1 -0
  32. package/dist/collection/components/sula-table-row/sula-table-row.js +23 -0
  33. package/dist/collection/components/sula-table-row/sula-table-row.js.map +1 -0
  34. package/dist/collection/components/sula-tag/sula-tag.js +3 -3
  35. package/dist/collection/components/sula-textarea/sula-textarea.js +6 -6
  36. package/dist/collection/components/sula-textfield/sula-textfield.js +2 -2
  37. package/dist/collection/components/sula-tiles/sula-tiles.js +1 -1
  38. package/dist/collection/components/sula-timeline-list/sula-timeline-list.js +1 -1
  39. package/dist/collection/components/sula-tooltip/sula-tooltip.js +1 -1
  40. package/dist/collection/utils/replace-host-with-rendered-element.js +24 -0
  41. package/dist/collection/utils/replace-host-with-rendered-element.js.map +1 -0
  42. package/dist/components/index.js +355 -5
  43. package/dist/components/index.js.map +1 -1
  44. package/dist/components/{p-BESq0oqe.js → p-BoXZrDgj.js} +3 -3
  45. package/dist/components/{p-BESq0oqe.js.map → p-BoXZrDgj.js.map} +1 -1
  46. package/dist/components/p-CQ1I0UIz.js +12 -0
  47. package/dist/components/p-CQ1I0UIz.js.map +1 -0
  48. package/dist/components/p-DrIWCpI3.js +28 -0
  49. package/dist/components/p-DrIWCpI3.js.map +1 -0
  50. package/dist/components/{p-BznR9x_k.js → p-ExcZQ46X.js} +3 -3
  51. package/dist/components/{p-BznR9x_k.js.map → p-ExcZQ46X.js.map} +1 -1
  52. package/dist/components/sula-avatar.js +2 -2
  53. package/dist/components/sula-badge.js +1 -1
  54. package/dist/components/sula-breadcrumb.js +1 -1
  55. package/dist/components/sula-button.js +1 -1
  56. package/dist/components/sula-checkbox.js +1 -1
  57. package/dist/components/sula-chip.js +1 -1
  58. package/dist/components/sula-dropdown.js +7 -7
  59. package/dist/components/sula-dropdown.js.map +1 -1
  60. package/dist/components/sula-icon.js +1 -1
  61. package/dist/components/sula-modal.js +2 -2
  62. package/dist/components/sula-progress-bar.js +1 -1
  63. package/dist/components/sula-search-bar.js +1 -1
  64. package/dist/components/sula-segmented-control.js +1 -1
  65. package/dist/components/sula-table-body.d.ts +11 -0
  66. package/dist/components/sula-table-body.js +41 -0
  67. package/dist/components/sula-table-body.js.map +1 -0
  68. package/dist/components/sula-table-cell.d.ts +11 -0
  69. package/dist/components/sula-table-cell.js +52 -0
  70. package/dist/components/sula-table-cell.js.map +1 -0
  71. package/dist/components/sula-table-head-cell.d.ts +11 -0
  72. package/dist/components/sula-table-head-cell.js +52 -0
  73. package/dist/components/sula-table-head-cell.js.map +1 -0
  74. package/dist/components/sula-table-header.d.ts +11 -0
  75. package/dist/components/sula-table-header.js +41 -0
  76. package/dist/components/sula-table-header.js.map +1 -0
  77. package/dist/components/sula-table-row.d.ts +11 -0
  78. package/dist/components/sula-table-row.js +41 -0
  79. package/dist/components/sula-table-row.js.map +1 -0
  80. package/dist/components/sula-table.d.ts +11 -0
  81. package/dist/components/sula-table.js +61 -0
  82. package/dist/components/sula-table.js.map +1 -0
  83. package/dist/components/sula-tag.js +4 -4
  84. package/dist/components/sula-textarea.js +6 -6
  85. package/dist/components/sula-textfield.js +3 -3
  86. package/dist/components/sula-tiles.js +2 -2
  87. package/dist/components/sula-timeline-list.js +2 -2
  88. package/dist/components/sula-tooltip.js +2 -2
  89. package/dist/esm/{index-CwIBTB8E.js → index-CwrCjm3e.js} +357 -7
  90. package/dist/esm/index-CwrCjm3e.js.map +1 -0
  91. package/dist/esm/loader.js +3 -3
  92. package/dist/esm/{sula-avatar_22.entry.js → sula-avatar_28.entry.js} +190 -26
  93. package/dist/esm/sula-avatar_28.entry.js.map +1 -0
  94. package/dist/esm/webcomponents.js +3 -3
  95. package/dist/types/components/sula-table/model/sula-table.model.d.ts +6 -0
  96. package/dist/types/components/sula-table/sula-table.d.ts +16 -0
  97. package/dist/types/components/sula-table/sula-table.stories.d.ts +69 -0
  98. package/dist/types/components/sula-table-body/sula-table-body.d.ts +5 -0
  99. package/dist/types/components/sula-table-cell/sula-table-cell.d.ts +6 -0
  100. package/dist/types/components/sula-table-head-cell/sula-table-head-cell.d.ts +6 -0
  101. package/dist/types/components/sula-table-header/sula-table-header.d.ts +5 -0
  102. package/dist/types/components/sula-table-row/sula-table-row.d.ts +5 -0
  103. package/dist/types/components.d.ts +110 -0
  104. package/dist/types/utils/replace-host-with-rendered-element.d.ts +1 -0
  105. package/dist/webcomponents/{p-6dc2ae91.entry.js → p-8472342b.entry.js} +1636 -1413
  106. package/dist/webcomponents/p-8472342b.entry.js.map +1 -0
  107. package/dist/webcomponents/{p-CwIBTB8E.js → p-CwrCjm3e.js} +504 -150
  108. package/dist/webcomponents/p-CwrCjm3e.js.map +1 -0
  109. package/dist/webcomponents/webcomponents.esm.js +8 -4
  110. package/package.json +1 -1
  111. package/dist/cjs/index-C19aFtyq.js.map +0 -1
  112. package/dist/cjs/sula-avatar_22.cjs.entry.js.map +0 -1
  113. package/dist/esm/index-CwIBTB8E.js.map +0 -1
  114. package/dist/esm/sula-avatar_22.entry.js.map +0 -1
  115. package/dist/webcomponents/p-6dc2ae91.entry.js.map +0 -1
  116. package/dist/webcomponents/p-CwIBTB8E.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  const globalStyles = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scroll-snap-strictness:proximity;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;}/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box }:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;tab-size:4 }body{line-height:inherit;margin:0 }hr{border-top-width:1px;color:inherit;height:0 }abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal }small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0 }button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0 }button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none }:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px }::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit }summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1 }[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle }img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{text-rendering:optimizeLegibility}";
2
2
 
3
3
  const NAMESPACE = 'webcomponents';
4
- const BUILD = /* webcomponents */ { hydratedSelectorName: "hydrated", lazyLoad: false, updatable: true};
4
+ const BUILD = /* webcomponents */ { hydratedSelectorName: "hydrated", lazyLoad: false, slotRelocation: true, updatable: true};
5
5
 
6
6
  /*
7
7
  Stencil Client Platform v4.35.1 | MIT Licensed | https://stenciljs.com
@@ -193,6 +193,112 @@ function createShadowRoot(cmpMeta) {
193
193
  shadowRoot.adoptedStyleSheets.push(sheet);
194
194
  }
195
195
  }
196
+ var updateFallbackSlotVisibility = (elm) => {
197
+ const childNodes = internalCall(elm, "childNodes");
198
+ if (elm.tagName && elm.tagName.includes("-") && elm["s-cr"] && elm.tagName !== "SLOT-FB") {
199
+ getHostSlotNodes(childNodes, elm.tagName).forEach((slotNode) => {
200
+ if (slotNode.nodeType === 1 /* ElementNode */ && slotNode.tagName === "SLOT-FB") {
201
+ if (getSlotChildSiblings(slotNode, getSlotName(slotNode), false).length) {
202
+ slotNode.hidden = true;
203
+ } else {
204
+ slotNode.hidden = false;
205
+ }
206
+ }
207
+ });
208
+ }
209
+ let i2 = 0;
210
+ for (i2 = 0; i2 < childNodes.length; i2++) {
211
+ const childNode = childNodes[i2];
212
+ if (childNode.nodeType === 1 /* ElementNode */ && internalCall(childNode, "childNodes").length) {
213
+ updateFallbackSlotVisibility(childNode);
214
+ }
215
+ }
216
+ };
217
+ var getSlottedChildNodes = (childNodes) => {
218
+ const result = [];
219
+ for (let i2 = 0; i2 < childNodes.length; i2++) {
220
+ const slottedNode = childNodes[i2]["s-nr"] || void 0;
221
+ if (slottedNode && slottedNode.isConnected) {
222
+ result.push(slottedNode);
223
+ }
224
+ }
225
+ return result;
226
+ };
227
+ function getHostSlotNodes(childNodes, hostName, slotName) {
228
+ let i2 = 0;
229
+ let slottedNodes = [];
230
+ let childNode;
231
+ for (; i2 < childNodes.length; i2++) {
232
+ childNode = childNodes[i2];
233
+ if (childNode["s-sr"] && (!hostName || childNode["s-hn"] === hostName) && (slotName === void 0)) {
234
+ slottedNodes.push(childNode);
235
+ }
236
+ slottedNodes = [...slottedNodes, ...getHostSlotNodes(childNode.childNodes, hostName, slotName)];
237
+ }
238
+ return slottedNodes;
239
+ }
240
+ var getSlotChildSiblings = (slot, slotName, includeSlot = true) => {
241
+ const childNodes = [];
242
+ if (includeSlot && slot["s-sr"] || !slot["s-sr"]) childNodes.push(slot);
243
+ let node = slot;
244
+ while (node = node.nextSibling) {
245
+ if (getSlotName(node) === slotName && (includeSlot || !node["s-sr"])) childNodes.push(node);
246
+ }
247
+ return childNodes;
248
+ };
249
+ var isNodeLocatedInSlot = (nodeToRelocate, slotName) => {
250
+ if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
251
+ if (nodeToRelocate.getAttribute("slot") === null && slotName === "") {
252
+ return true;
253
+ }
254
+ if (nodeToRelocate.getAttribute("slot") === slotName) {
255
+ return true;
256
+ }
257
+ return false;
258
+ }
259
+ if (nodeToRelocate["s-sn"] === slotName) {
260
+ return true;
261
+ }
262
+ return slotName === "";
263
+ };
264
+ var getSlotName = (node) => typeof node["s-sn"] === "string" ? node["s-sn"] : node.nodeType === 1 && node.getAttribute("slot") || void 0;
265
+ function patchSlotNode(node) {
266
+ if (node.assignedElements || node.assignedNodes || !node["s-sr"]) return;
267
+ const assignedFactory = (elementsOnly) => (function(opts) {
268
+ const toReturn = [];
269
+ const slotName = this["s-sn"];
270
+ if (opts == null ? void 0 : opts.flatten) {
271
+ console.error(`
272
+ Flattening is not supported for Stencil non-shadow slots.
273
+ You can use \`.childNodes\` to nested slot fallback content.
274
+ If you have a particular use case, please open an issue on the Stencil repo.
275
+ `);
276
+ }
277
+ const parent = this["s-cr"].parentElement;
278
+ const slottedNodes = parent.__childNodes ? parent.childNodes : getSlottedChildNodes(parent.childNodes);
279
+ slottedNodes.forEach((n) => {
280
+ if (slotName === getSlotName(n)) {
281
+ toReturn.push(n);
282
+ }
283
+ });
284
+ if (elementsOnly) {
285
+ return toReturn.filter((n) => n.nodeType === 1 /* ElementNode */);
286
+ }
287
+ return toReturn;
288
+ }).bind(node);
289
+ node.assignedElements = assignedFactory(true);
290
+ node.assignedNodes = assignedFactory(false);
291
+ }
292
+ function internalCall(node, method) {
293
+ if ("__" + method in node) {
294
+ const toReturn = node["__" + method];
295
+ if (typeof toReturn !== "function") return toReturn;
296
+ return toReturn.bind(node);
297
+ } else {
298
+ if (typeof node[method] !== "function") return node[method];
299
+ return node[method].bind(node);
300
+ }
301
+ }
196
302
  var createTime = (fnName, tagName = "") => {
197
303
  {
198
304
  return () => {
@@ -203,6 +309,7 @@ var createTime = (fnName, tagName = "") => {
203
309
  var h = (nodeName, vnodeData, ...children) => {
204
310
  let child = null;
205
311
  let key = null;
312
+ let slotName = null;
206
313
  let simple = false;
207
314
  let lastSimple = false;
208
315
  const vNodeChildren = [];
@@ -229,6 +336,9 @@ var h = (nodeName, vnodeData, ...children) => {
229
336
  if (vnodeData.key) {
230
337
  key = vnodeData.key;
231
338
  }
339
+ if (vnodeData.name) {
340
+ slotName = vnodeData.name;
341
+ }
232
342
  {
233
343
  const classData = vnodeData.className || vnodeData.class;
234
344
  if (classData) {
@@ -244,6 +354,9 @@ var h = (nodeName, vnodeData, ...children) => {
244
354
  {
245
355
  vnode.$key$ = key;
246
356
  }
357
+ {
358
+ vnode.$name$ = slotName;
359
+ }
247
360
  return vnode;
248
361
  };
249
362
  var newVNode = (tag, text) => {
@@ -260,6 +373,9 @@ var newVNode = (tag, text) => {
260
373
  {
261
374
  vnode.$key$ = null;
262
375
  }
376
+ {
377
+ vnode.$name$ = null;
378
+ }
263
379
  return vnode;
264
380
  };
265
381
  var Host = {};
@@ -552,15 +668,41 @@ function sortedAttrNames(attrNames) {
552
668
  attrNames
553
669
  );
554
670
  }
671
+ var contentRef;
555
672
  var hostTagName;
673
+ var useNativeShadowDom = false;
674
+ var checkSlotFallbackVisibility = false;
675
+ var checkSlotRelocate = false;
556
676
  var isSvgMode = false;
557
677
  var createElm = (oldParentVNode, newParentVNode, childIndex) => {
678
+ var _a;
558
679
  const newVNode2 = newParentVNode.$children$[childIndex];
559
680
  let i2 = 0;
560
681
  let elm;
561
682
  let childNode;
683
+ let oldVNode;
684
+ if (!useNativeShadowDom) {
685
+ checkSlotRelocate = true;
686
+ if (newVNode2.$tag$ === "slot") {
687
+ newVNode2.$flags$ |= newVNode2.$children$ ? (
688
+ // slot element has fallback content
689
+ // still create an element that "mocks" the slot element
690
+ 2 /* isSlotFallback */
691
+ ) : (
692
+ // slot element does not have fallback content
693
+ // create an html comment we'll use to always reference
694
+ // where actual slot content should sit next to
695
+ 1 /* isSlotReference */
696
+ );
697
+ }
698
+ }
562
699
  if (newVNode2.$text$ !== null) {
563
700
  elm = newVNode2.$elm$ = win.document.createTextNode(newVNode2.$text$);
701
+ } else if (newVNode2.$flags$ & 1 /* isSlotReference */) {
702
+ elm = newVNode2.$elm$ = slotReferenceDebugNode(newVNode2) ;
703
+ {
704
+ updateElement(null, newVNode2, isSvgMode);
705
+ }
564
706
  } else {
565
707
  if (!win.document) {
566
708
  throw new Error(
@@ -568,7 +710,7 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
568
710
  );
569
711
  }
570
712
  elm = newVNode2.$elm$ = win.document.createElement(
571
- newVNode2.$tag$
713
+ !useNativeShadowDom && BUILD.slotRelocation && newVNode2.$flags$ & 2 /* isSlotFallback */ ? "slot-fb" : newVNode2.$tag$
572
714
  );
573
715
  {
574
716
  updateElement(null, newVNode2, isSvgMode);
@@ -583,10 +725,43 @@ var createElm = (oldParentVNode, newParentVNode, childIndex) => {
583
725
  }
584
726
  }
585
727
  elm["s-hn"] = hostTagName;
728
+ {
729
+ if (newVNode2.$flags$ & (2 /* isSlotFallback */ | 1 /* isSlotReference */)) {
730
+ elm["s-sr"] = true;
731
+ elm["s-cr"] = contentRef;
732
+ elm["s-sn"] = newVNode2.$name$ || "";
733
+ elm["s-rf"] = (_a = newVNode2.$attrs$) == null ? void 0 : _a.ref;
734
+ patchSlotNode(elm);
735
+ oldVNode = oldParentVNode && oldParentVNode.$children$ && oldParentVNode.$children$[childIndex];
736
+ if (oldVNode && oldVNode.$tag$ === newVNode2.$tag$ && oldParentVNode.$elm$) {
737
+ {
738
+ putBackInOriginalLocation(oldParentVNode.$elm$, false);
739
+ }
740
+ }
741
+ }
742
+ }
586
743
  return elm;
587
744
  };
745
+ var putBackInOriginalLocation = (parentElm, recursive) => {
746
+ plt.$flags$ |= 1 /* isTmpDisconnected */;
747
+ const oldSlotChildNodes = Array.from(parentElm.__childNodes || parentElm.childNodes);
748
+ for (let i2 = oldSlotChildNodes.length - 1; i2 >= 0; i2--) {
749
+ const childNode = oldSlotChildNodes[i2];
750
+ if (childNode["s-hn"] !== hostTagName && childNode["s-ol"]) {
751
+ insertBefore(referenceNode(childNode).parentNode, childNode, referenceNode(childNode));
752
+ childNode["s-ol"].remove();
753
+ childNode["s-ol"] = void 0;
754
+ childNode["s-sh"] = void 0;
755
+ checkSlotRelocate = true;
756
+ }
757
+ if (recursive) {
758
+ putBackInOriginalLocation(childNode, recursive);
759
+ }
760
+ }
761
+ plt.$flags$ &= -2 /* isTmpDisconnected */;
762
+ };
588
763
  var addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {
589
- let containerElm = parentElm;
764
+ let containerElm = parentElm["s-cr"] && parentElm["s-cr"].parentNode || parentElm;
590
765
  let childNode;
591
766
  if (containerElm.shadowRoot && containerElm.tagName === hostTagName) {
592
767
  containerElm = containerElm.shadowRoot;
@@ -596,7 +771,7 @@ var addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {
596
771
  childNode = createElm(null, parentVNode, startIdx);
597
772
  if (childNode) {
598
773
  vnodes[startIdx].$elm$ = childNode;
599
- insertBefore(containerElm, childNode, before);
774
+ insertBefore(containerElm, childNode, referenceNode(before) );
600
775
  }
601
776
  }
602
777
  }
@@ -608,6 +783,14 @@ var removeVnodes = (vnodes, startIdx, endIdx) => {
608
783
  const elm = vnode.$elm$;
609
784
  nullifyVNodeRefs(vnode);
610
785
  if (elm) {
786
+ {
787
+ checkSlotFallbackVisibility = true;
788
+ if (elm["s-ol"]) {
789
+ elm["s-ol"].remove();
790
+ } else {
791
+ putBackInOriginalLocation(elm, true);
792
+ }
793
+ }
611
794
  elm.remove();
612
795
  }
613
796
  }
@@ -644,11 +827,17 @@ var updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = fals
644
827
  oldEndVnode = oldCh[--oldEndIdx];
645
828
  newEndVnode = newCh[--newEndIdx];
646
829
  } else if (isSameVnode(oldStartVnode, newEndVnode, isInitialRender)) {
830
+ if ((oldStartVnode.$tag$ === "slot" || newEndVnode.$tag$ === "slot")) {
831
+ putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);
832
+ }
647
833
  patch(oldStartVnode, newEndVnode, isInitialRender);
648
834
  insertBefore(parentElm, oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);
649
835
  oldStartVnode = oldCh[++oldStartIdx];
650
836
  newEndVnode = newCh[--newEndIdx];
651
837
  } else if (isSameVnode(oldEndVnode, newStartVnode, isInitialRender)) {
838
+ if ((oldStartVnode.$tag$ === "slot" || newEndVnode.$tag$ === "slot")) {
839
+ putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);
840
+ }
652
841
  patch(oldEndVnode, newStartVnode, isInitialRender);
653
842
  insertBefore(parentElm, oldEndVnode.$elm$, oldStartVnode.$elm$);
654
843
  oldEndVnode = oldCh[--oldEndIdx];
@@ -679,7 +868,11 @@ var updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = fals
679
868
  }
680
869
  if (node) {
681
870
  {
682
- insertBefore(oldStartVnode.$elm$.parentNode, node, oldStartVnode.$elm$);
871
+ insertBefore(
872
+ referenceNode(oldStartVnode.$elm$).parentNode,
873
+ node,
874
+ referenceNode(oldStartVnode.$elm$)
875
+ );
683
876
  }
684
877
  }
685
878
  }
@@ -699,6 +892,9 @@ var updateChildren = (parentElm, oldCh, newVNode2, newCh, isInitialRender = fals
699
892
  };
700
893
  var isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {
701
894
  if (leftVNode.$tag$ === rightVNode.$tag$) {
895
+ if (leftVNode.$tag$ === "slot") {
896
+ return leftVNode.$name$ === rightVNode.$name$;
897
+ }
702
898
  if (!isInitialRender) {
703
899
  return leftVNode.$key$ === rightVNode.$key$;
704
900
  }
@@ -709,11 +905,13 @@ var isSameVnode = (leftVNode, rightVNode, isInitialRender = false) => {
709
905
  }
710
906
  return false;
711
907
  };
908
+ var referenceNode = (node) => node && node["s-ol"] || node;
712
909
  var patch = (oldVNode, newVNode2, isInitialRender = false) => {
713
910
  const elm = newVNode2.$elm$ = oldVNode.$elm$;
714
911
  const oldChildren = oldVNode.$children$;
715
912
  const newChildren = newVNode2.$children$;
716
913
  const text = newVNode2.$text$;
914
+ let defaultHolder;
717
915
  if (text === null) {
718
916
  {
719
917
  updateElement(oldVNode, newVNode2, isSvgMode);
@@ -731,10 +929,62 @@ var patch = (oldVNode, newVNode2, isInitialRender = false) => {
731
929
  ) {
732
930
  removeVnodes(oldChildren, 0, oldChildren.length - 1);
733
931
  }
932
+ } else if ((defaultHolder = elm["s-cr"])) {
933
+ defaultHolder.parentNode.textContent = text;
734
934
  } else if (oldVNode.$text$ !== text) {
735
935
  elm.data = text;
736
936
  }
737
937
  };
938
+ var relocateNodes = [];
939
+ var markSlotContentForRelocation = (elm) => {
940
+ let node;
941
+ let hostContentNodes;
942
+ let j;
943
+ const children = elm.__childNodes || elm.childNodes;
944
+ for (const childNode of children) {
945
+ if (childNode["s-sr"] && (node = childNode["s-cr"]) && node.parentNode) {
946
+ hostContentNodes = node.parentNode.__childNodes || node.parentNode.childNodes;
947
+ const slotName = childNode["s-sn"];
948
+ for (j = hostContentNodes.length - 1; j >= 0; j--) {
949
+ node = hostContentNodes[j];
950
+ if (!node["s-cn"] && !node["s-nr"] && node["s-hn"] !== childNode["s-hn"] && (true)) {
951
+ if (isNodeLocatedInSlot(node, slotName)) {
952
+ let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
953
+ checkSlotFallbackVisibility = true;
954
+ node["s-sn"] = node["s-sn"] || slotName;
955
+ if (relocateNodeData) {
956
+ relocateNodeData.$nodeToRelocate$["s-sh"] = childNode["s-hn"];
957
+ relocateNodeData.$slotRefNode$ = childNode;
958
+ } else {
959
+ node["s-sh"] = childNode["s-hn"];
960
+ relocateNodes.push({
961
+ $slotRefNode$: childNode,
962
+ $nodeToRelocate$: node
963
+ });
964
+ }
965
+ if (node["s-sr"]) {
966
+ relocateNodes.map((relocateNode) => {
967
+ if (isNodeLocatedInSlot(relocateNode.$nodeToRelocate$, node["s-sn"])) {
968
+ relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
969
+ if (relocateNodeData && !relocateNode.$slotRefNode$) {
970
+ relocateNode.$slotRefNode$ = relocateNodeData.$slotRefNode$;
971
+ }
972
+ }
973
+ });
974
+ }
975
+ } else if (!relocateNodes.some((r) => r.$nodeToRelocate$ === node)) {
976
+ relocateNodes.push({
977
+ $nodeToRelocate$: node
978
+ });
979
+ }
980
+ }
981
+ }
982
+ }
983
+ if (childNode.nodeType === 1 /* ElementNode */) {
984
+ markSlotContentForRelocation(childNode);
985
+ }
986
+ }
987
+ };
738
988
  var nullifyVNodeRefs = (vNode) => {
739
989
  {
740
990
  vNode.$attrs$ && vNode.$attrs$.ref && vNode.$attrs$.ref(null);
@@ -747,6 +997,7 @@ var insertBefore = (parent, newNode, reference) => {
747
997
  }
748
998
  };
749
999
  var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
1000
+ var _a, _b, _c, _d;
750
1001
  const hostElm = hostRef.$hostElement$;
751
1002
  const cmpMeta = hostRef.$cmpMeta$;
752
1003
  const oldVNode = hostRef.$vnode$ || newVNode(null, null);
@@ -770,7 +1021,90 @@ var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
770
1021
  rootVnode.$flags$ |= 4 /* isHost */;
771
1022
  hostRef.$vnode$ = rootVnode;
772
1023
  rootVnode.$elm$ = oldVNode.$elm$ = hostElm.shadowRoot || hostElm ;
1024
+ useNativeShadowDom = !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) && !(cmpMeta.$flags$ & 128 /* shadowNeedsScopedCss */);
1025
+ {
1026
+ contentRef = hostElm["s-cr"];
1027
+ checkSlotFallbackVisibility = false;
1028
+ }
773
1029
  patch(oldVNode, rootVnode, isInitialLoad);
1030
+ {
1031
+ plt.$flags$ |= 1 /* isTmpDisconnected */;
1032
+ if (checkSlotRelocate) {
1033
+ markSlotContentForRelocation(rootVnode.$elm$);
1034
+ for (const relocateData of relocateNodes) {
1035
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1036
+ if (!nodeToRelocate["s-ol"] && win.document) {
1037
+ const orgLocationNode = originalLocationDebugNode(nodeToRelocate) ;
1038
+ orgLocationNode["s-nr"] = nodeToRelocate;
1039
+ insertBefore(nodeToRelocate.parentNode, nodeToRelocate["s-ol"] = orgLocationNode, nodeToRelocate);
1040
+ }
1041
+ }
1042
+ for (const relocateData of relocateNodes) {
1043
+ const nodeToRelocate = relocateData.$nodeToRelocate$;
1044
+ const slotRefNode = relocateData.$slotRefNode$;
1045
+ if (slotRefNode) {
1046
+ const parentNodeRef = slotRefNode.parentNode;
1047
+ let insertBeforeNode = slotRefNode.nextSibling;
1048
+ {
1049
+ let orgLocationNode = (_a = nodeToRelocate["s-ol"]) == null ? void 0 : _a.previousSibling;
1050
+ while (orgLocationNode) {
1051
+ let refNode = (_b = orgLocationNode["s-nr"]) != null ? _b : null;
1052
+ if (refNode && refNode["s-sn"] === nodeToRelocate["s-sn"] && parentNodeRef === (refNode.__parentNode || refNode.parentNode)) {
1053
+ refNode = refNode.nextSibling;
1054
+ while (refNode === nodeToRelocate || (refNode == null ? void 0 : refNode["s-sr"])) {
1055
+ refNode = refNode == null ? void 0 : refNode.nextSibling;
1056
+ }
1057
+ if (!refNode || !refNode["s-nr"]) {
1058
+ insertBeforeNode = refNode;
1059
+ break;
1060
+ }
1061
+ }
1062
+ orgLocationNode = orgLocationNode.previousSibling;
1063
+ }
1064
+ }
1065
+ const parent = nodeToRelocate.__parentNode || nodeToRelocate.parentNode;
1066
+ const nextSibling = nodeToRelocate.__nextSibling || nodeToRelocate.nextSibling;
1067
+ if (!insertBeforeNode && parentNodeRef !== parent || nextSibling !== insertBeforeNode) {
1068
+ if (nodeToRelocate !== insertBeforeNode) {
1069
+ if (!nodeToRelocate["s-hn"] && nodeToRelocate["s-ol"]) {
1070
+ nodeToRelocate["s-hn"] = nodeToRelocate["s-ol"].parentNode.nodeName;
1071
+ }
1072
+ insertBefore(parentNodeRef, nodeToRelocate, insertBeforeNode);
1073
+ if (nodeToRelocate.nodeType === 1 /* ElementNode */ && nodeToRelocate.tagName !== "SLOT-FB") {
1074
+ nodeToRelocate.hidden = (_c = nodeToRelocate["s-ih"]) != null ? _c : false;
1075
+ }
1076
+ }
1077
+ }
1078
+ nodeToRelocate && typeof slotRefNode["s-rf"] === "function" && slotRefNode["s-rf"](slotRefNode);
1079
+ } else {
1080
+ if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
1081
+ if (isInitialLoad) {
1082
+ nodeToRelocate["s-ih"] = (_d = nodeToRelocate.hidden) != null ? _d : false;
1083
+ }
1084
+ nodeToRelocate.hidden = true;
1085
+ }
1086
+ }
1087
+ }
1088
+ }
1089
+ if (checkSlotFallbackVisibility) {
1090
+ updateFallbackSlotVisibility(rootVnode.$elm$);
1091
+ }
1092
+ plt.$flags$ &= -2 /* isTmpDisconnected */;
1093
+ relocateNodes.length = 0;
1094
+ }
1095
+ contentRef = void 0;
1096
+ };
1097
+ var slotReferenceDebugNode = (slotVNode) => {
1098
+ var _a;
1099
+ return (_a = win.document) == null ? void 0 : _a.createComment(
1100
+ `<slot${slotVNode.$name$ ? ' name="' + slotVNode.$name$ + '"' : ""}> (host=${hostTagName.toLowerCase()})`
1101
+ );
1102
+ };
1103
+ var originalLocationDebugNode = (nodeToRelocate) => {
1104
+ var _a;
1105
+ return (_a = win.document) == null ? void 0 : _a.createComment(
1106
+ `org-location for ` + (nodeToRelocate.localName ? `<${nodeToRelocate.localName}> (host=${nodeToRelocate["s-hn"]})` : `[${nodeToRelocate.textContent}]`)
1107
+ );
774
1108
  };
775
1109
 
776
1110
  // src/runtime/update-component.ts
@@ -1127,6 +1461,12 @@ var connectedCallback = (elm) => {
1127
1461
  const endConnected = createTime("connectedCallback", cmpMeta.$tagName$);
1128
1462
  if (!(hostRef.$flags$ & 1 /* hasConnected */)) {
1129
1463
  hostRef.$flags$ |= 1 /* hasConnected */;
1464
+ {
1465
+ if (// TODO(STENCIL-854): Remove code related to legacy shadowDomShim field
1466
+ cmpMeta.$flags$ & (4 /* hasSlotRelocation */ | 8 /* needsShadowDomShim */)) {
1467
+ setContentReference(elm);
1468
+ }
1469
+ }
1130
1470
  {
1131
1471
  let ancestorComponent = elm;
1132
1472
  while (ancestorComponent = ancestorComponent.parentNode || ancestorComponent.host) {
@@ -1159,6 +1499,16 @@ var connectedCallback = (elm) => {
1159
1499
  endConnected();
1160
1500
  }
1161
1501
  };
1502
+ var setContentReference = (elm) => {
1503
+ if (!win.document) {
1504
+ return;
1505
+ }
1506
+ const contentRefElm = elm["s-cr"] = win.document.createComment(
1507
+ `content-ref (host=${elm.localName})`
1508
+ );
1509
+ contentRefElm["s-cn"] = true;
1510
+ insertBefore(elm, contentRefElm, elm.firstChild);
1511
+ };
1162
1512
  var disconnectedCallback = async (elm) => {
1163
1513
  if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {
1164
1514
  const hostRef = getHostRef(elm);