@pine-ds/core 3.15.0 → 3.15.2-dev.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 (69) hide show
  1. package/components/pds-dropdown-menu-item.js +3 -3
  2. package/components/pds-dropdown-menu-item.js.map +1 -1
  3. package/components/pds-multiselect.js +63 -32
  4. package/components/pds-multiselect.js.map +1 -1
  5. package/components/pds-table-row.js +1 -1
  6. package/components/pds-table-row.js.map +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
  9. package/dist/cjs/pds-dropdown-menu-item.entry.cjs.js.map +1 -1
  10. package/dist/cjs/pds-multiselect.cjs.entry.js +62 -32
  11. package/dist/cjs/pds-multiselect.entry.cjs.js.map +1 -1
  12. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  13. package/dist/cjs/pds-table-row.entry.cjs.js.map +1 -1
  14. package/dist/cjs/pine-core.cjs.js +1 -1
  15. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +3 -3
  16. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js.map +1 -1
  17. package/dist/collection/components/pds-multiselect/pds-multiselect.js +81 -32
  18. package/dist/collection/components/pds-multiselect/pds-multiselect.js.map +1 -1
  19. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.css +1 -1
  20. package/dist/docs.json +26 -3
  21. package/dist/esm/loader.js +1 -1
  22. package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
  23. package/dist/esm/pds-dropdown-menu-item.entry.js.map +1 -1
  24. package/dist/esm/pds-multiselect.entry.js +62 -32
  25. package/dist/esm/pds-multiselect.entry.js.map +1 -1
  26. package/dist/esm/pds-table-row.entry.js +1 -1
  27. package/dist/esm/pds-table-row.entry.js.map +1 -1
  28. package/dist/esm/pine-core.js +1 -1
  29. package/dist/esm-es5/loader.js +1 -1
  30. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  31. package/dist/esm-es5/pds-dropdown-menu-item.entry.js.map +1 -1
  32. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  33. package/dist/esm-es5/pds-multiselect.entry.js.map +1 -1
  34. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  35. package/dist/esm-es5/pds-table-row.entry.js.map +1 -1
  36. package/dist/esm-es5/pine-core.js +1 -1
  37. package/dist/pine-core/{p-4ed357a4.entry.js → p-4c2809cb.entry.js} +2 -2
  38. package/dist/pine-core/p-4c2809cb.entry.js.map +1 -0
  39. package/dist/pine-core/{p-795e1727.entry.js → p-56cf3af8.entry.js} +2 -2
  40. package/dist/pine-core/{p-ef56bc80.system.entry.js → p-5f552640.system.entry.js} +2 -2
  41. package/dist/pine-core/p-93d0be59.entry.js +2 -0
  42. package/dist/pine-core/{p-88dd25dd.entry.js.map → p-93d0be59.entry.js.map} +1 -1
  43. package/dist/pine-core/p-Dtx30lCy.system.js.map +1 -0
  44. package/dist/pine-core/p-JAVnELnm.system.js +1 -1
  45. package/dist/pine-core/p-ZUqfslIz.system.js.map +1 -0
  46. package/dist/pine-core/p-aeb2f6ac.system.entry.js +2 -0
  47. package/dist/pine-core/{p-63a669c9.system.entry.js.map → p-aeb2f6ac.system.entry.js.map} +1 -1
  48. package/dist/pine-core/p-anXbtQm4.system.js.map +1 -0
  49. package/dist/pine-core/{p-ae359dc7.system.entry.js → p-b98a04cd.system.entry.js} +2 -2
  50. package/dist/pine-core/p-b98a04cd.system.entry.js.map +1 -0
  51. package/dist/pine-core/pds-dropdown-menu-item.entry.esm.js.map +1 -1
  52. package/dist/pine-core/pds-multiselect.entry.esm.js.map +1 -1
  53. package/dist/pine-core/pds-table-row.entry.esm.js.map +1 -1
  54. package/dist/pine-core/pine-core.esm.js +1 -1
  55. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +5 -0
  56. package/dist/types/components.d.ts +8 -0
  57. package/dist/vscode.html-data.json +10343 -0
  58. package/hydrate/index.js +68 -37
  59. package/hydrate/index.mjs +68 -37
  60. package/package.json +2 -2
  61. package/dist/pine-core/p-4ed357a4.entry.js.map +0 -1
  62. package/dist/pine-core/p-63a669c9.system.entry.js +0 -2
  63. package/dist/pine-core/p-88dd25dd.entry.js +0 -2
  64. package/dist/pine-core/p-CWPG1B5Z.system.js.map +0 -1
  65. package/dist/pine-core/p-DgtQU13G.system.js.map +0 -1
  66. package/dist/pine-core/p-DwXA2Glx.system.js.map +0 -1
  67. package/dist/pine-core/p-ae359dc7.system.entry.js.map +0 -1
  68. /package/dist/pine-core/{p-795e1727.entry.js.map → p-56cf3af8.entry.js.map} +0 -0
  69. /package/dist/pine-core/{p-ef56bc80.system.entry.js.map → p-5f552640.system.entry.js.map} +0 -0
package/hydrate/index.js CHANGED
@@ -9493,7 +9493,7 @@ class PdsDropdownMenuItem {
9493
9493
  }, tabIndex: this.disabled ? -1 : 0, type: "button", onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : null }, hAsync("slot", null)));
9494
9494
  }
9495
9495
  render() {
9496
- return (hAsync(Host, { key: '81fce1eaf2020b0e524dbbe0d872f29771b3a0f9', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
9496
+ return (hAsync(Host, { key: '2a0603c754506f9ff9293db0868342a057265b64', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
9497
9497
  }
9498
9498
  get host() { return getElement(this); }
9499
9499
  static get style() { return pdsDropdownMenuItemCss; }
@@ -9505,14 +9505,14 @@ class PdsDropdownMenuItem {
9505
9505
  "destructive": [4],
9506
9506
  "disabled": [4],
9507
9507
  "href": [1],
9508
- "external": [4],
9509
- "target": [1],
9508
+ "external": [516],
9509
+ "target": [513],
9510
9510
  "hasFocus": [32],
9511
9511
  "clickItem": [64]
9512
9512
  },
9513
9513
  "$listeners$": undefined,
9514
9514
  "$lazyBundleId$": "-",
9515
- "$attrsToReflect$": []
9515
+ "$attrsToReflect$": [["external", "external"], ["target", "target"]]
9516
9516
  }; }
9517
9517
  }
9518
9518
 
@@ -11843,9 +11843,25 @@ class PdsMultiselect {
11843
11843
  // Ensure value is an array (may be string from HTML attribute)
11844
11844
  const valueArray = this.ensureValueArray();
11845
11845
  const allOptions = this.getAllOptions();
11846
- this.selectedItems = valueArray
11847
- .map(val => allOptions.find(opt => String(opt.id) === String(val)))
11848
- .filter((opt) => opt !== undefined);
11846
+ // Map values to options, preserving existing selectedItems for values not yet in options
11847
+ const newSelectedItems = [];
11848
+ const existingItemsMap = new Map(this.selectedItems.map(item => [String(item.id), item]));
11849
+ valueArray.forEach(val => {
11850
+ // First try to find in available options
11851
+ const option = allOptions.find(opt => String(opt.id) === String(val));
11852
+ if (option) {
11853
+ newSelectedItems.push(option);
11854
+ }
11855
+ else if (existingItemsMap.has(String(val))) {
11856
+ // If not in options but exists in current selectedItems, preserve it
11857
+ // This handles the case where async data hasn't loaded yet or newly created items
11858
+ newSelectedItems.push(existingItemsMap.get(String(val)));
11859
+ }
11860
+ // Note: We don't create placeholders for values without matching options.
11861
+ // This ensures selectedItems remains empty until options are actually loaded,
11862
+ // which matches the expected behavior for preselected values.
11863
+ });
11864
+ this.selectedItems = newSelectedItems;
11849
11865
  }
11850
11866
  ensureValueArray() {
11851
11867
  // Handle JSON string values passed via HTML attribute
@@ -11911,6 +11927,15 @@ class PdsMultiselect {
11911
11927
  }
11912
11928
  }
11913
11929
  }
11930
+ getCsrfToken() {
11931
+ // Use provided token if available
11932
+ if (this.csrfToken) {
11933
+ return this.csrfToken;
11934
+ }
11935
+ // Try to read from meta tag
11936
+ const metaTag = document.querySelector('meta[name="csrf-token"]');
11937
+ return (metaTag === null || metaTag === void 0 ? void 0 : metaTag.content) || null;
11938
+ }
11914
11939
  async fetchOptions(query, page = 1) {
11915
11940
  var _a;
11916
11941
  if (!this.asyncUrl)
@@ -11942,10 +11967,15 @@ class PdsMultiselect {
11942
11967
  url.searchParams.set('search', query);
11943
11968
  url.searchParams.set('page', String(page));
11944
11969
  }
11945
- const response = await fetch(url.toString(), Object.assign({ method: this.asyncMethod, signal: this.abortController.signal, headers: {
11946
- 'Content-Type': 'application/json',
11947
- 'Accept': 'application/json',
11948
- } }, (this.asyncMethod === 'POST' && {
11970
+ const csrfToken = this.getCsrfToken();
11971
+ const headers = {
11972
+ 'Content-Type': 'application/json',
11973
+ 'Accept': 'application/json',
11974
+ };
11975
+ if (csrfToken) {
11976
+ headers['X-CSRF-Token'] = csrfToken;
11977
+ }
11978
+ const response = await fetch(url.toString(), Object.assign({ method: this.asyncMethod, signal: this.abortController.signal, headers }, (this.asyncMethod === 'POST' && {
11949
11979
  body: JSON.stringify({ search: query, page }),
11950
11980
  })));
11951
11981
  // Clear timeout on successful response
@@ -12003,30 +12033,35 @@ class PdsMultiselect {
12003
12033
  this.creating = true;
12004
12034
  try {
12005
12035
  const url = new URL(this.createUrl, window.location.origin);
12036
+ const csrfToken = this.getCsrfToken();
12037
+ const headers = {
12038
+ 'Content-Type': 'application/json',
12039
+ 'Accept': 'application/json',
12040
+ };
12041
+ if (csrfToken) {
12042
+ headers['X-CSRF-Token'] = csrfToken;
12043
+ }
12006
12044
  const response = await fetch(url.toString(), {
12007
12045
  method: 'POST',
12008
- headers: {
12009
- 'Content-Type': 'application/json',
12010
- 'Accept': 'application/json',
12011
- },
12046
+ headers,
12012
12047
  body: JSON.stringify({ text: query.trim() }),
12013
12048
  });
12014
12049
  if (!response.ok)
12015
12050
  throw new Error('Failed to create option');
12016
12051
  const data = await response.json();
12017
12052
  const newOption = Object.assign({ id: data.id, text: data.text }, data);
12018
- // Add to internal options
12053
+ // Add to internal options first
12019
12054
  this.internalOptions = [...this.internalOptions, newOption];
12020
12055
  // Select the new option
12021
12056
  this.value = [...this.value, String(newOption.id)];
12022
- // Sync selected items
12057
+ // Sync selected items to update display with new option
12023
12058
  this.syncSelectedItems();
12024
12059
  // Emit create event
12025
12060
  this.pdsMultiselectCreate.emit({
12026
12061
  query: query.trim(),
12027
12062
  newOption,
12028
12063
  });
12029
- // Emit change event
12064
+ // Emit change event with synced items
12030
12065
  this.pdsMultiselectChange.emit({
12031
12066
  values: this.value,
12032
12067
  items: this.selectedItems,
@@ -12136,27 +12171,22 @@ class PdsMultiselect {
12136
12171
  const isSelected = this.value.includes(String(option.id));
12137
12172
  if (isSelected) {
12138
12173
  // Remove from selection
12139
- const newValue = this.value.filter(v => v !== String(option.id));
12140
- this.value = newValue;
12141
- const newSelectedItems = this.selectedItems.filter(item => String(item.id) !== String(option.id));
12142
- this.pdsMultiselectChange.emit({
12143
- values: newValue,
12144
- items: newSelectedItems,
12145
- });
12174
+ this.value = this.value.filter(v => v !== String(option.id));
12146
12175
  }
12147
12176
  else {
12148
12177
  // Add to selection
12149
12178
  if (this.maxSelections && this.value.length >= this.maxSelections) {
12150
12179
  return;
12151
12180
  }
12152
- const newValue = [...this.value, String(option.id)];
12153
- this.value = newValue;
12154
- const newSelectedItems = [...this.selectedItems, option];
12155
- this.pdsMultiselectChange.emit({
12156
- values: newValue,
12157
- items: newSelectedItems,
12158
- });
12181
+ this.value = [...this.value, String(option.id)];
12159
12182
  }
12183
+ // Sync selected items to ensure no duplicates and accurate state
12184
+ this.syncSelectedItems();
12185
+ // Emit change event with synced items
12186
+ this.pdsMultiselectChange.emit({
12187
+ values: this.value,
12188
+ items: this.selectedItems,
12189
+ });
12160
12190
  // Keep focus on search input, don't close dropdown
12161
12191
  (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
12162
12192
  }
@@ -12200,19 +12230,19 @@ class PdsMultiselect {
12200
12230
  }
12201
12231
  render() {
12202
12232
  const hasSelections = this.selectedItems.length > 0;
12203
- return (hAsync(Host, { key: 'b03d0709427e89ae3971d2f1fdc42a6e6616e428', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: 'd71fc5ec468c6c54bafe93307a6b3e65c0fe5b81', class: "pds-multiselect" }, this.label && (hAsync("label", { key: 'c15deeec84eac043bb7c8813327d0f942b892734', htmlFor: this.componentId, class: {
12233
+ return (hAsync(Host, { key: '5eabf872bf4e4f109106c0dd7f9fc8ea48e8c0c0', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '2623280ddbb4e116da4dbf0fe9123b5f06f0da0c', class: "pds-multiselect" }, this.label && (hAsync("label", { key: 'ec644a7af54ca4dcdece849c6df692fae268b445', htmlFor: this.componentId, class: {
12204
12234
  'pds-multiselect__label': true,
12205
12235
  'visually-hidden': this.hideLabel,
12206
- } }, this.label)), hAsync("div", { key: 'f256795c69fd40f9c717d8c884d897032d3c4f49', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), onFocusout: this.handleContainerFocusOut, style: { width: this.triggerWidth } }, hAsync("button", { key: '131f3141229ee14418737010615e9e1f2f430c4f', ref: el => (this.triggerEl = el), type: "button", class: {
12236
+ } }, this.label)), hAsync("div", { key: 'ae08d5be617ee801a730fd9289146e82f2df8258', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), onFocusout: this.handleContainerFocusOut, style: { width: this.triggerWidth } }, hAsync("button", { key: 'c4639d573de4bb7963f848284057afcf9cc65cb9', ref: el => (this.triggerEl = el), type: "button", class: {
12207
12237
  'pds-multiselect__trigger': true,
12208
12238
  'pds-multiselect__trigger--open': this.isOpen,
12209
12239
  'pds-multiselect__trigger--disabled': this.disabled,
12210
12240
  'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
12211
12241
  'pds-multiselect__trigger--has-value': hasSelections,
12212
- }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hAsync("span", { key: '3e61f1728014a97a193b6fa6158f21abd0d169c3', class: {
12242
+ }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hAsync("span", { key: 'b16da29ea9a98d6672813d9c142ef63135b12dca', class: {
12213
12243
  'pds-multiselect__trigger-text': true,
12214
12244
  'pds-multiselect__trigger-text--placeholder': !hasSelections,
12215
- } }, this.getTriggerText()), hAsync("pds-icon", { key: '13bc74c492bf7ead5a77e42e92002b45389f1906', class: "pds-multiselect__icon", icon: enlarge })), this.renderDropdown()), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '53d6219eb3b910a277b5025be11d2d0a742c0ee1', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: '475fd9c02f8cc3cdd1f1911b3e71dce32e2f1743', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'ab6fdb8a743caa1712fc30532c0c2b6099703564', icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: '64d5db05c6b0e04a6cbf899ccc30ee479c23e9d6', style: { display: 'none' } }, hAsync("slot", { key: '378ceb06d78d5542ca40ed4852bb582da514028c' })))));
12245
+ } }, this.getTriggerText()), hAsync("pds-icon", { key: '4e86739529355331c9fa6b95b63f223d5a315ad5', class: "pds-multiselect__icon", icon: enlarge })), this.renderDropdown()), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '34cd42ddb1725546ce367699ef520e37d24cae25', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: '0eada43d1bcb44ea7b95927dd3f799aff6cc6b3a', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: '546dcc24794d274d73b3de867b79123b6f0069fc', icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: '3921e646c9e3638077c016e7cb28a19adaa302f0', style: { display: 'none' } }, hAsync("slot", { key: '3923872eaae0a59da8c4a5b9801abf41ae9a3c3d' })))));
12216
12246
  }
12217
12247
  static get formAssociated() { return true; }
12218
12248
  get el() { return getElement(this); }
@@ -12251,6 +12281,7 @@ class PdsMultiselect {
12251
12281
  "options": [16],
12252
12282
  "formatResult": [16],
12253
12283
  "createUrl": [1, "create-url"],
12284
+ "csrfToken": [1, "csrf-token"],
12254
12285
  "isOpen": [32],
12255
12286
  "searchQuery": [32],
12256
12287
  "highlightedIndex": [32],
@@ -17227,7 +17258,7 @@ class PdsTableHeadCell {
17227
17258
  }; }
17228
17259
  }
17229
17260
 
17230
- const pdsTableRowCss = ":host{--color-background-interactive:var(--pine-color-border-disabled);border-color:inherit;display:table-row;vertical-align:inherit}:host::part(checkbox-cell){background-color:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(:hover),:host(:hover)::part(checkbox-cell),:host(:hover) ::slotted(pds-table-cell),:host(.is-selected),:host(.is-selected)::part(checkbox-cell),:host(.is-selected) ::slotted(pds-table-cell){background:var(--color-background-interactive)}:host(.has-divider) ::slotted(pds-table-cell),:host(.has-divider) pds-table-cell{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle)}:host(.has-divider.is-last-row) ::slotted(pds-table-cell),:host(.has-divider.is-last-row) pds-table-cell{-webkit-border-after:0;border-block-end:0}";
17261
+ const pdsTableRowCss = ":host{--color-background-interactive:var(--pine-color-background-subtle);border-color:inherit;display:table-row;vertical-align:inherit}:host::part(checkbox-cell){background-color:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(:hover),:host(:hover)::part(checkbox-cell),:host(:hover) ::slotted(pds-table-cell),:host(.is-selected),:host(.is-selected)::part(checkbox-cell),:host(.is-selected) ::slotted(pds-table-cell){background:var(--color-background-interactive)}:host(.has-divider) ::slotted(pds-table-cell),:host(.has-divider) pds-table-cell{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle)}:host(.has-divider.is-last-row) ::slotted(pds-table-cell),:host(.has-divider.is-last-row) pds-table-cell{-webkit-border-after:0;border-block-end:0}";
17231
17262
 
17232
17263
  class PdsTableRow {
17233
17264
  constructor(hostRef) {
package/hydrate/index.mjs CHANGED
@@ -9491,7 +9491,7 @@ class PdsDropdownMenuItem {
9491
9491
  }, tabIndex: this.disabled ? -1 : 0, type: "button", onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : null }, hAsync("slot", null)));
9492
9492
  }
9493
9493
  render() {
9494
- return (hAsync(Host, { key: '81fce1eaf2020b0e524dbbe0d872f29771b3a0f9', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
9494
+ return (hAsync(Host, { key: '2a0603c754506f9ff9293db0868342a057265b64', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
9495
9495
  }
9496
9496
  get host() { return getElement(this); }
9497
9497
  static get style() { return pdsDropdownMenuItemCss; }
@@ -9503,14 +9503,14 @@ class PdsDropdownMenuItem {
9503
9503
  "destructive": [4],
9504
9504
  "disabled": [4],
9505
9505
  "href": [1],
9506
- "external": [4],
9507
- "target": [1],
9506
+ "external": [516],
9507
+ "target": [513],
9508
9508
  "hasFocus": [32],
9509
9509
  "clickItem": [64]
9510
9510
  },
9511
9511
  "$listeners$": undefined,
9512
9512
  "$lazyBundleId$": "-",
9513
- "$attrsToReflect$": []
9513
+ "$attrsToReflect$": [["external", "external"], ["target", "target"]]
9514
9514
  }; }
9515
9515
  }
9516
9516
 
@@ -11841,9 +11841,25 @@ class PdsMultiselect {
11841
11841
  // Ensure value is an array (may be string from HTML attribute)
11842
11842
  const valueArray = this.ensureValueArray();
11843
11843
  const allOptions = this.getAllOptions();
11844
- this.selectedItems = valueArray
11845
- .map(val => allOptions.find(opt => String(opt.id) === String(val)))
11846
- .filter((opt) => opt !== undefined);
11844
+ // Map values to options, preserving existing selectedItems for values not yet in options
11845
+ const newSelectedItems = [];
11846
+ const existingItemsMap = new Map(this.selectedItems.map(item => [String(item.id), item]));
11847
+ valueArray.forEach(val => {
11848
+ // First try to find in available options
11849
+ const option = allOptions.find(opt => String(opt.id) === String(val));
11850
+ if (option) {
11851
+ newSelectedItems.push(option);
11852
+ }
11853
+ else if (existingItemsMap.has(String(val))) {
11854
+ // If not in options but exists in current selectedItems, preserve it
11855
+ // This handles the case where async data hasn't loaded yet or newly created items
11856
+ newSelectedItems.push(existingItemsMap.get(String(val)));
11857
+ }
11858
+ // Note: We don't create placeholders for values without matching options.
11859
+ // This ensures selectedItems remains empty until options are actually loaded,
11860
+ // which matches the expected behavior for preselected values.
11861
+ });
11862
+ this.selectedItems = newSelectedItems;
11847
11863
  }
11848
11864
  ensureValueArray() {
11849
11865
  // Handle JSON string values passed via HTML attribute
@@ -11909,6 +11925,15 @@ class PdsMultiselect {
11909
11925
  }
11910
11926
  }
11911
11927
  }
11928
+ getCsrfToken() {
11929
+ // Use provided token if available
11930
+ if (this.csrfToken) {
11931
+ return this.csrfToken;
11932
+ }
11933
+ // Try to read from meta tag
11934
+ const metaTag = document.querySelector('meta[name="csrf-token"]');
11935
+ return (metaTag === null || metaTag === void 0 ? void 0 : metaTag.content) || null;
11936
+ }
11912
11937
  async fetchOptions(query, page = 1) {
11913
11938
  var _a;
11914
11939
  if (!this.asyncUrl)
@@ -11940,10 +11965,15 @@ class PdsMultiselect {
11940
11965
  url.searchParams.set('search', query);
11941
11966
  url.searchParams.set('page', String(page));
11942
11967
  }
11943
- const response = await fetch(url.toString(), Object.assign({ method: this.asyncMethod, signal: this.abortController.signal, headers: {
11944
- 'Content-Type': 'application/json',
11945
- 'Accept': 'application/json',
11946
- } }, (this.asyncMethod === 'POST' && {
11968
+ const csrfToken = this.getCsrfToken();
11969
+ const headers = {
11970
+ 'Content-Type': 'application/json',
11971
+ 'Accept': 'application/json',
11972
+ };
11973
+ if (csrfToken) {
11974
+ headers['X-CSRF-Token'] = csrfToken;
11975
+ }
11976
+ const response = await fetch(url.toString(), Object.assign({ method: this.asyncMethod, signal: this.abortController.signal, headers }, (this.asyncMethod === 'POST' && {
11947
11977
  body: JSON.stringify({ search: query, page }),
11948
11978
  })));
11949
11979
  // Clear timeout on successful response
@@ -12001,30 +12031,35 @@ class PdsMultiselect {
12001
12031
  this.creating = true;
12002
12032
  try {
12003
12033
  const url = new URL(this.createUrl, window.location.origin);
12034
+ const csrfToken = this.getCsrfToken();
12035
+ const headers = {
12036
+ 'Content-Type': 'application/json',
12037
+ 'Accept': 'application/json',
12038
+ };
12039
+ if (csrfToken) {
12040
+ headers['X-CSRF-Token'] = csrfToken;
12041
+ }
12004
12042
  const response = await fetch(url.toString(), {
12005
12043
  method: 'POST',
12006
- headers: {
12007
- 'Content-Type': 'application/json',
12008
- 'Accept': 'application/json',
12009
- },
12044
+ headers,
12010
12045
  body: JSON.stringify({ text: query.trim() }),
12011
12046
  });
12012
12047
  if (!response.ok)
12013
12048
  throw new Error('Failed to create option');
12014
12049
  const data = await response.json();
12015
12050
  const newOption = Object.assign({ id: data.id, text: data.text }, data);
12016
- // Add to internal options
12051
+ // Add to internal options first
12017
12052
  this.internalOptions = [...this.internalOptions, newOption];
12018
12053
  // Select the new option
12019
12054
  this.value = [...this.value, String(newOption.id)];
12020
- // Sync selected items
12055
+ // Sync selected items to update display with new option
12021
12056
  this.syncSelectedItems();
12022
12057
  // Emit create event
12023
12058
  this.pdsMultiselectCreate.emit({
12024
12059
  query: query.trim(),
12025
12060
  newOption,
12026
12061
  });
12027
- // Emit change event
12062
+ // Emit change event with synced items
12028
12063
  this.pdsMultiselectChange.emit({
12029
12064
  values: this.value,
12030
12065
  items: this.selectedItems,
@@ -12134,27 +12169,22 @@ class PdsMultiselect {
12134
12169
  const isSelected = this.value.includes(String(option.id));
12135
12170
  if (isSelected) {
12136
12171
  // Remove from selection
12137
- const newValue = this.value.filter(v => v !== String(option.id));
12138
- this.value = newValue;
12139
- const newSelectedItems = this.selectedItems.filter(item => String(item.id) !== String(option.id));
12140
- this.pdsMultiselectChange.emit({
12141
- values: newValue,
12142
- items: newSelectedItems,
12143
- });
12172
+ this.value = this.value.filter(v => v !== String(option.id));
12144
12173
  }
12145
12174
  else {
12146
12175
  // Add to selection
12147
12176
  if (this.maxSelections && this.value.length >= this.maxSelections) {
12148
12177
  return;
12149
12178
  }
12150
- const newValue = [...this.value, String(option.id)];
12151
- this.value = newValue;
12152
- const newSelectedItems = [...this.selectedItems, option];
12153
- this.pdsMultiselectChange.emit({
12154
- values: newValue,
12155
- items: newSelectedItems,
12156
- });
12179
+ this.value = [...this.value, String(option.id)];
12157
12180
  }
12181
+ // Sync selected items to ensure no duplicates and accurate state
12182
+ this.syncSelectedItems();
12183
+ // Emit change event with synced items
12184
+ this.pdsMultiselectChange.emit({
12185
+ values: this.value,
12186
+ items: this.selectedItems,
12187
+ });
12158
12188
  // Keep focus on search input, don't close dropdown
12159
12189
  (_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
12160
12190
  }
@@ -12198,19 +12228,19 @@ class PdsMultiselect {
12198
12228
  }
12199
12229
  render() {
12200
12230
  const hasSelections = this.selectedItems.length > 0;
12201
- return (hAsync(Host, { key: 'b03d0709427e89ae3971d2f1fdc42a6e6616e428', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: 'd71fc5ec468c6c54bafe93307a6b3e65c0fe5b81', class: "pds-multiselect" }, this.label && (hAsync("label", { key: 'c15deeec84eac043bb7c8813327d0f942b892734', htmlFor: this.componentId, class: {
12231
+ return (hAsync(Host, { key: '5eabf872bf4e4f109106c0dd7f9fc8ea48e8c0c0', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '2623280ddbb4e116da4dbf0fe9123b5f06f0da0c', class: "pds-multiselect" }, this.label && (hAsync("label", { key: 'ec644a7af54ca4dcdece849c6df692fae268b445', htmlFor: this.componentId, class: {
12202
12232
  'pds-multiselect__label': true,
12203
12233
  'visually-hidden': this.hideLabel,
12204
- } }, this.label)), hAsync("div", { key: 'f256795c69fd40f9c717d8c884d897032d3c4f49', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), onFocusout: this.handleContainerFocusOut, style: { width: this.triggerWidth } }, hAsync("button", { key: '131f3141229ee14418737010615e9e1f2f430c4f', ref: el => (this.triggerEl = el), type: "button", class: {
12234
+ } }, this.label)), hAsync("div", { key: 'ae08d5be617ee801a730fd9289146e82f2df8258', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), onFocusout: this.handleContainerFocusOut, style: { width: this.triggerWidth } }, hAsync("button", { key: 'c4639d573de4bb7963f848284057afcf9cc65cb9', ref: el => (this.triggerEl = el), type: "button", class: {
12205
12235
  'pds-multiselect__trigger': true,
12206
12236
  'pds-multiselect__trigger--open': this.isOpen,
12207
12237
  'pds-multiselect__trigger--disabled': this.disabled,
12208
12238
  'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
12209
12239
  'pds-multiselect__trigger--has-value': hasSelections,
12210
- }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hAsync("span", { key: '3e61f1728014a97a193b6fa6158f21abd0d169c3', class: {
12240
+ }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hAsync("span", { key: 'b16da29ea9a98d6672813d9c142ef63135b12dca', class: {
12211
12241
  'pds-multiselect__trigger-text': true,
12212
12242
  'pds-multiselect__trigger-text--placeholder': !hasSelections,
12213
- } }, this.getTriggerText()), hAsync("pds-icon", { key: '13bc74c492bf7ead5a77e42e92002b45389f1906', class: "pds-multiselect__icon", icon: enlarge })), this.renderDropdown()), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '53d6219eb3b910a277b5025be11d2d0a742c0ee1', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: '475fd9c02f8cc3cdd1f1911b3e71dce32e2f1743', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'ab6fdb8a743caa1712fc30532c0c2b6099703564', icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: '64d5db05c6b0e04a6cbf899ccc30ee479c23e9d6', style: { display: 'none' } }, hAsync("slot", { key: '378ceb06d78d5542ca40ed4852bb582da514028c' })))));
12243
+ } }, this.getTriggerText()), hAsync("pds-icon", { key: '4e86739529355331c9fa6b95b63f223d5a315ad5', class: "pds-multiselect__icon", icon: enlarge })), this.renderDropdown()), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '34cd42ddb1725546ce367699ef520e37d24cae25', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: '0eada43d1bcb44ea7b95927dd3f799aff6cc6b3a', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: '546dcc24794d274d73b3de867b79123b6f0069fc', icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: '3921e646c9e3638077c016e7cb28a19adaa302f0', style: { display: 'none' } }, hAsync("slot", { key: '3923872eaae0a59da8c4a5b9801abf41ae9a3c3d' })))));
12214
12244
  }
12215
12245
  static get formAssociated() { return true; }
12216
12246
  get el() { return getElement(this); }
@@ -12249,6 +12279,7 @@ class PdsMultiselect {
12249
12279
  "options": [16],
12250
12280
  "formatResult": [16],
12251
12281
  "createUrl": [1, "create-url"],
12282
+ "csrfToken": [1, "csrf-token"],
12252
12283
  "isOpen": [32],
12253
12284
  "searchQuery": [32],
12254
12285
  "highlightedIndex": [32],
@@ -17225,7 +17256,7 @@ class PdsTableHeadCell {
17225
17256
  }; }
17226
17257
  }
17227
17258
 
17228
- const pdsTableRowCss = ":host{--color-background-interactive:var(--pine-color-border-disabled);border-color:inherit;display:table-row;vertical-align:inherit}:host::part(checkbox-cell){background-color:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(:hover),:host(:hover)::part(checkbox-cell),:host(:hover) ::slotted(pds-table-cell),:host(.is-selected),:host(.is-selected)::part(checkbox-cell),:host(.is-selected) ::slotted(pds-table-cell){background:var(--color-background-interactive)}:host(.has-divider) ::slotted(pds-table-cell),:host(.has-divider) pds-table-cell{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle)}:host(.has-divider.is-last-row) ::slotted(pds-table-cell),:host(.has-divider.is-last-row) pds-table-cell{-webkit-border-after:0;border-block-end:0}";
17259
+ const pdsTableRowCss = ":host{--color-background-interactive:var(--pine-color-background-subtle);border-color:inherit;display:table-row;vertical-align:inherit}:host::part(checkbox-cell){background-color:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(:hover),:host(:hover)::part(checkbox-cell),:host(:hover) ::slotted(pds-table-cell),:host(.is-selected),:host(.is-selected)::part(checkbox-cell),:host(.is-selected) ::slotted(pds-table-cell){background:var(--color-background-interactive)}:host(.has-divider) ::slotted(pds-table-cell),:host(.has-divider) pds-table-cell{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle)}:host(.has-divider.is-last-row) ::slotted(pds-table-cell),:host(.has-divider.is-last-row) pds-table-cell{-webkit-border-after:0;border-block-end:0}";
17229
17260
 
17230
17261
  class PdsTableRow {
17231
17262
  constructor(hostRef) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pine-ds/core",
3
- "version": "3.15.0",
3
+ "version": "3.15.2-dev.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Base components for Pine Design System",
@@ -85,7 +85,7 @@
85
85
  "@babel/preset-env": "^7.22.10",
86
86
  "@chromatic-com/storybook": "^4.1.3",
87
87
  "@mdx-js/rollup": "^3.1.1",
88
- "@pine-ds/doc-components": "^3.15.0",
88
+ "@pine-ds/doc-components": "^3.15.2-dev.0",
89
89
  "@stencil-community/eslint-plugin": "^0.8.0",
90
90
  "@stencil/react-output-target": "^0.5.3",
91
91
  "@stencil/sass": "^3.2.0",
@@ -1 +0,0 @@
1
- {"version":3,"names":["registerInstance","createEvent","h","Host","getElement","autoUpdate","computePosition","offset","flip","shift","size","debounceEvent","assignDescription","messageId","enlarge","danger","pdsMultiselectCss","PdsMultiselect","constructor","hostRef","this","pdsMultiselectChange","pdsMultiselectSearch","pdsMultiselectLoadOptions","pdsMultiselectCreate","placeholder","value","disabled","asyncMethod","debounce","fetchTimeout","maxHeight","triggerWidth","minWidth","hideLabel","required","loading","isOpen","searchQuery","highlightedIndex","internalOptions","selectedItems","currentPage","hasMore","creating","isOpening","handleTriggerClick","closeDropdown","openDropdown","handleTriggerKeyDown","e","key","preventDefault","handleSearchInputChange","target","emit","query","asyncUrl","debouncedFetchAsyncOptions","handleSearchInputKeyDown","filteredOptions","getFilteredOptions","Math","min","length","scrollOptionIntoView","max","option","selectOption","handleContainerFocusOut","setTimeout","_a","activeElement","document","isInShadowRoot","el","shadowRoot","contains","isOnHost","handleOptionMouseDown","toggleOption","handleOptionMouseEnter","index","handleScroll","scrollBottom","scrollHeight","scrollTop","clientHeight","page","connectedCallback","attachInternals","internals","componentWillLoad","originalSearchEmitter","syncSelectedItems","componentDidLoad","setupDebounce","setupMutationObserver","setupSlotChangeListener","updateFormValue","requestAnimationFrame","updateOptionsFromSlot","slot","querySelector","addEventListener","disconnectedCallback","_b","observer","disconnect","cleanupAutoUpdate","call","clearAsyncFetchState","undefined","valueChanged","newValue","parsed","JSON","parse","Array","isArray","optionsChanged","options","internalOptionsChanged","setFocus","triggerEl","focus","handleWindowKeyDown","event","MutationObserver","observe","childList","subtree","assignedElements","flatten","filter","tagName","map","opt","id","text","textContent","fetchDebounceTimer","window","clearTimeout","fetchTimeoutTimer","abortController","abort","delay","fetchOptions","valueArray","ensureValueArray","allOptions","getAllOptions","val","find","String","singleValue","toLowerCase","filtered","includes","createUrl","trim","isCreateOption","setFormValue","formData","FormData","forEach","name","append","setValidity","valueMissing","AbortController","url","URL","location","origin","urlError","TypeError","searchParams","set","response","fetch","toString","Object","assign","method","signal","headers","Accept","body","stringify","search","ok","Error","data","json","formattedResults","results","item","formatResult","totalCount","error","console","createOption","newOption","values","items","searchInputEl","positionDropdown","containerEl","panelEl","referenceEl","panelWidth","updatePosition","placement","strategy","middleware","padding","apply","rects","elements","floating","style","width","reference","then","x","y","left","top","highlighted","listboxEl","scrollIntoView","block","behavior","isSelected","v","newSelectedItems","maxSelections","renderSelectedItemsList","class","role","renderDropdown","hasSlottedEmpty","hasSlottedLoading","ref","type","componentId","autocomplete","onInput","onKeyDown","label","onScroll","isHighlighted","optionId","isCreateDisabled","onMouseDown","onMouseEnter","gap","checked","pointerEvents","getTriggerText","count","render","hasSelections","htmlFor","onFocusout","invalid","errorMessage","helperMessage","onClick","icon","display","formAssociated","watchers"],"sources":["0"],"mappings":"YAAcA,OAAuBC,OAAaC,OAAQC,OAAWC,MAAkB,8BACzEC,OAAiBC,OAAsBC,OAAaC,OAAWC,OAAYC,MAAY,8BACvFC,MAAqB,8BACrBC,OAAwBC,MAAiB,8BACzCC,EAAcC,MAAc,kBAE1C,MAAMC,EAAoB,u/OAE1B,MAAMC,EAAiB,MACnB,WAAAC,CAAYC,GACRnB,EAAiBoB,KAAMD,GACvBC,KAAKC,qBAAuBpB,EAAYmB,KAAM,wBAC9CA,KAAKE,qBAAuBrB,EAAYmB,KAAM,wBAC9CA,KAAKG,0BAA4BtB,EAAYmB,KAAM,6BACnDA,KAAKI,qBAAuBvB,EAAYmB,KAAM,wBAI9CA,KAAKK,YAAc,YAInBL,KAAKM,MAAQ,GAIbN,KAAKO,SAAW,MAIhBP,KAAKQ,YAAc,MAInBR,KAAKS,SAAW,IAIhBT,KAAKU,aAAe,IAIpBV,KAAKW,UAAY,QAIjBX,KAAKY,aAAe,OAIpBZ,KAAKa,SAAW,QAIhBb,KAAKc,UAAY,MAIjBd,KAAKe,SAAW,MAIhBf,KAAKgB,QAAU,MAEfhB,KAAKiB,OAAS,MACdjB,KAAKkB,YAAc,GACnBlB,KAAKmB,kBAAoB,EACzBnB,KAAKoB,gBAAkB,GACvBpB,KAAKqB,cAAgB,GACrBrB,KAAKsB,YAAc,EACnBtB,KAAKuB,QAAU,MACfvB,KAAKwB,SAAW,MAEhBxB,KAAKyB,UAAY,MACjBzB,KAAK0B,mBAAqB,KACtB,GAAI1B,KAAKO,SACL,OACJ,GAAIP,KAAKiB,OAAQ,CACbjB,KAAK2B,eACT,KACK,CACD3B,KAAK4B,cACT,GAEJ5B,KAAK6B,qBAAwBC,IACzB,OAAQA,EAAEC,KACN,IAAK,YACL,IAAK,UACL,IAAK,QACL,IAAK,IACDD,EAAEE,iBACF,IAAKhC,KAAKiB,OAAQ,CACdjB,KAAK4B,cACT,CACA,MACR,EAEJ5B,KAAKiC,wBAA2BH,IAC5B,MAAMI,EAASJ,EAAEI,OACjBlC,KAAKkB,YAAcgB,EAAO5B,MAC1BN,KAAKmB,kBAAoB,EAEzBnB,KAAKE,qBAAqBiC,KAAK,CAAEC,MAAOpC,KAAKkB,cAE7C,GAAIlB,KAAKqC,SAAU,CACfrC,KAAKsC,2BAA2BtC,KAAKkB,YAAa,EACtD,GAEJlB,KAAKuC,yBAA4BT,IAC7B,MAAMU,EAAkBxC,KAAKyC,qBAC7B,OAAQX,EAAEC,KACN,IAAK,YACDD,EAAEE,iBACFhC,KAAKmB,iBAAmBuB,KAAKC,IAAI3C,KAAKmB,iBAAmB,EAAGqB,EAAgBI,OAAS,GACrF5C,KAAK6C,uBACL,MACJ,IAAK,UACDf,EAAEE,iBACFhC,KAAKmB,iBAAmBuB,KAAKI,IAAI9C,KAAKmB,iBAAmB,EAAG,GAC5DnB,KAAK6C,uBACL,MACJ,IAAK,QACDf,EAAEE,iBACF,GAAIhC,KAAKmB,kBAAoB,EAAG,CAC5B,MAAM4B,EAASP,EAAgBxC,KAAKmB,kBACpC,GAAI4B,EAAQ,CACR/C,KAAKgD,aAAaD,EACtB,CACJ,CACA,MAEJ,IAAK,MACD/C,KAAK2B,gBACL,MACR,EAEJ3B,KAAKiD,wBAA0B,KAG3BC,YAAW,KACP,IAAIC,EAEJ,IAAKnD,KAAKiB,QAAUjB,KAAKyB,UACrB,OACJ,MAAM2B,EAAgBC,SAASD,cAE/B,MAAME,GAAkBH,EAAKnD,KAAKuD,GAAGC,cAAgB,MAAQL,SAAY,OAAS,EAAIA,EAAGM,SAASL,GAElG,MAAMM,EAAWN,IAAkBpD,KAAKuD,GACxC,IAAKD,IAAmBI,EAAU,CAC9B1D,KAAK2B,eACT,IACD,EAAE,EAET3B,KAAK2D,sBAAyBZ,GAAYjB,IACtCA,EAAEE,iBACFhC,KAAK4D,aAAab,EAAO,EAE7B/C,KAAK6D,uBAA0BC,GAAU,KACrC9D,KAAKmB,iBAAmB2C,CAAK,EAEjC9D,KAAK+D,aAAgBjC,IACjB,IAAK9B,KAAKqC,WAAarC,KAAKuB,SAAWvB,KAAKgB,QACxC,OACJ,MAAMkB,EAASJ,EAAEI,OACjB,MAAM8B,EAAe9B,EAAO+B,aAAe/B,EAAOgC,UAAYhC,EAAOiC,aAErE,GAAIH,EAAe,GAAI,CACnBhE,KAAKG,0BAA0BgC,KAAK,CAChCC,MAAOpC,KAAKkB,YACZkD,KAAMpE,KAAKsB,YAAc,IAE7BtB,KAAKsC,2BAA2BtC,KAAKkB,YAAalB,KAAKsB,YAAc,EACzE,EAER,CACA,iBAAA+C,GAEI,GAAIrE,KAAKuD,GAAGe,kBAAoBtE,KAAKuE,UAAW,CAC5CvE,KAAKuE,UAAYvE,KAAKuD,GAAGe,iBAC7B,CACJ,CACA,iBAAAE,GACIxE,KAAKyE,sBAAwBzE,KAAKE,qBAClCF,KAAK0E,mBACT,CACA,gBAAAC,GACI3E,KAAK4E,gBACL5E,KAAK6E,wBACL7E,KAAK8E,0BACL9E,KAAK+E,kBAGLC,uBAAsB,KAClBhF,KAAKiF,wBACLjF,KAAK0E,mBAAmB,GAEhC,CACA,uBAAAI,GACI,IAAI3B,EACJ,MAAM+B,GAAQ/B,EAAKnD,KAAKuD,GAAGC,cAAgB,MAAQL,SAAY,OAAS,EAAIA,EAAGgC,cAAc,oBAC7F,GAAID,EAAM,CACNA,EAAKE,iBAAiB,cAAc,KAChCpF,KAAKiF,wBACLjF,KAAK0E,mBAAmB,IAG5B1E,KAAKiF,uBACT,CACJ,CACA,oBAAAI,GACI,IAAIlC,EAAImC,GACPnC,EAAKnD,KAAKuF,YAAc,MAAQpC,SAAY,OAAS,EAAIA,EAAGqC,cAC5DF,EAAKtF,KAAKyF,qBAAuB,MAAQH,SAAY,OAAS,EAAIA,EAAGI,KAAK1F,MAC3EA,KAAK2F,sBACT,CACA,aAAAf,GACI,MAAM1E,qBAAEA,EAAoBO,SAAEA,EAAQgE,sBAAEA,GAA0BzE,KAClEA,KAAKE,qBAAuBO,IAAamF,UACnCnB,IAA0B,MAAQA,SAA+B,EAAIA,EAAwBvE,EAC7FX,EAAcW,EAAsBO,EAC9C,CACA,YAAAoF,CAAaC,GAET,UAAWA,IAAa,SAAU,CAC9B,IACI,MAAMC,EAASC,KAAKC,MAAMH,GAC1B,GAAII,MAAMC,QAAQJ,GAAS,CACvB/F,KAAKM,MAAQyF,EACb,MACJ,CACJ,CACA,MAAO5C,GAEHnD,KAAKM,MAAQwF,EAAW,CAACA,GAAY,GACrC,MACJ,CACJ,CACA9F,KAAK0E,oBACL1E,KAAK+E,iBACT,CACA,cAAAqB,GACI,GAAIpG,KAAKqG,QAAS,CACdrG,KAAKoB,gBAAkB,IAAIpB,KAAKqG,QACpC,CACJ,CACA,sBAAAC,GAGItG,KAAK0E,mBACT,CAIA,cAAM6B,GACF,IAAIpD,GACHA,EAAKnD,KAAKwG,aAAe,MAAQrD,SAAY,OAAS,EAAIA,EAAGsD,OAClE,CAKA,mBAAAC,CAAoBC,GAChB,IAAIxD,EACJ,IAAKnD,KAAKiB,OACN,OACJ,GAAI0F,EAAM5E,MAAQ,SAAU,CACxB4E,EAAM3E,iBACNhC,KAAK2B,iBACJwB,EAAKnD,KAAKwG,aAAe,MAAQrD,SAAY,OAAS,EAAIA,EAAGsD,OAClE,CACJ,CACA,qBAAA5B,GACI7E,KAAKuF,SAAW,IAAIqB,kBAAiB,KACjC5G,KAAKiF,uBAAuB,IAEhCjF,KAAKuF,SAASsB,QAAQ7G,KAAKuD,GAAI,CAC3BuD,UAAW,KACXC,QAAS,MAEjB,CACA,qBAAA9B,GACI,IAAI9B,EACJ,MAAM+B,GAAQ/B,EAAKnD,KAAKuD,GAAGC,cAAgB,MAAQL,SAAY,OAAS,EAAIA,EAAGgC,cAAc,oBAC7F,IAAKD,EACD,OACJ,MAAMmB,EAAUnB,EAAK8B,iBAAiB,CAAEC,QAAS,OAC5CC,QAAQ3D,GAAOA,EAAG4D,UAAY,WAC9BC,KAAIC,IAAO,CACZC,GAAID,EAAI/G,MACRiH,KAAMF,EAAIG,aAAeH,EAAI/G,UAIjC,GAAI+F,EAAQzD,OAAS,IAAM5C,KAAKqC,WAAarC,KAAKqG,QAAS,CACvDrG,KAAKoB,gBAAkBiF,CAC3B,CACJ,CACA,oBAAAV,GACI,IAAIxC,EACJ,GAAInD,KAAKyH,qBAAuB7B,UAAW,CACvC8B,OAAOC,aAAa3H,KAAKyH,oBACzBzH,KAAKyH,mBAAqB7B,SAC9B,CACA,GAAI5F,KAAK4H,oBAAsBhC,UAAW,CACtC8B,OAAOC,aAAa3H,KAAK4H,mBACzB5H,KAAK4H,kBAAoBhC,SAC7B,EACCzC,EAAKnD,KAAK6H,mBAAqB,MAAQ1E,SAAY,OAAS,EAAIA,EAAG2E,QACpE9H,KAAK6H,gBAAkBjC,SAC3B,CACA,0BAAAtD,CAA2BF,EAAOgC,EAAO,GACrC,IAAIjB,EACJ,IAAKnD,KAAKqC,SACN,OACJ,GAAIrC,KAAKyH,qBAAuB7B,UAAW,CACvC8B,OAAOC,aAAa3H,KAAKyH,mBAC7B,CACA,MAAMM,EAAQrF,KAAKI,IAAI,GAAIK,EAAKnD,KAAKS,YAAc,MAAQ0C,SAAY,EAAIA,EAAK,GAChFnD,KAAKyH,mBAAqBC,OAAOxE,YAAW,KACxClD,KAAKyH,mBAAqB7B,UAC1B5F,KAAKgI,aAAa5F,EAAOgC,EAAK,GAC/B2D,EACP,CACA,iBAAArD,GAEI,MAAMuD,EAAajI,KAAKkI,mBACxB,MAAMC,EAAanI,KAAKoI,gBACxBpI,KAAKqB,cAAgB4G,EAChBb,KAAIiB,GAAOF,EAAWG,MAAKjB,GAAOkB,OAAOlB,EAAIC,MAAQiB,OAAOF,OAC5DnB,QAAQG,GAAQA,IAAQzB,WACjC,CACA,gBAAAsC,GAEI,UAAWlI,KAAKM,QAAU,SAAU,CAChC,IACI,MAAMyF,EAASC,KAAKC,MAAMjG,KAAKM,OAC/B,GAAI4F,MAAMC,QAAQJ,GAAS,CACvB/F,KAAKM,MAAQyF,EACb,OAAOA,CACX,CACJ,CACA,MAAO5C,GAEH,MAAMqF,EAAcxI,KAAKM,MACzBN,KAAKM,MAAQkI,EAAc,CAACA,GAAe,GAC3C,OAAOxI,KAAKM,KAChB,CACJ,CACA,OAAO4F,MAAMC,QAAQnG,KAAKM,OAASN,KAAKM,MAAQ,EACpD,CACA,aAAA8H,GACI,OAAOpI,KAAKqG,SAAWrG,KAAKoB,eAChC,CACA,kBAAAqB,GACI,MAAM0F,EAAanI,KAAKoI,gBACxB,MAAMhG,EAAQpC,KAAKkB,YAAYuH,cAC/B,MAAMC,EAAWP,EAAWjB,QAAOG,IAE/B,GAAIjF,EAAO,CACP,OAAOiF,EAAIE,KAAKkB,cAAcE,SAASvG,EAC3C,CACA,OAAO,IAAI,IAGf,GAAIpC,KAAK4I,WAAa5I,KAAKkB,YAAY2H,QAAUH,EAAS9F,SAAW,EAAG,CACpE,MAAO,CAAC,CACA0E,GAAI,aACJC,KAAMvH,KAAKkB,YAAY2H,OACvBC,eAAgB,MAE5B,CACA,OAAOJ,CACX,CACA,eAAA3D,GACI,IAAI5B,EACJ,IAAKA,EAAKnD,KAAKuE,aAAe,MAAQpB,SAAY,OAAS,EAAIA,EAAG4F,aAAc,CAE5E,MAAMd,EAAajI,KAAKkI,mBAExB,MAAMc,EAAW,IAAIC,SACrBhB,EAAWiB,SAAQb,IACf,GAAIrI,KAAKmJ,KAAM,CACXH,EAASI,OAAOpJ,KAAKmJ,KAAMd,EAC/B,KAEJrI,KAAKuE,UAAUwE,aAAaC,GAE5B,GAAIhJ,KAAKe,UAAYkH,EAAWrF,SAAW,EAAG,CAC1C5C,KAAKuE,UAAU8E,YAAY,CAAEC,aAAc,MAAQ,qCAAsCtJ,KAAKwG,UAClG,KACK,CACDxG,KAAKuE,UAAU8E,YAAY,CAAC,EAChC,CACJ,CACJ,CACA,kBAAMrB,CAAa5F,EAAOgC,EAAO,GAC7B,IAAIjB,EACJ,IAAKnD,KAAKqC,SACN,QAEHc,EAAKnD,KAAK6H,mBAAqB,MAAQ1E,SAAY,OAAS,EAAIA,EAAG2E,QACpE,GAAI9H,KAAK4H,oBAAsBhC,UAAW,CACtC8B,OAAOC,aAAa3H,KAAK4H,mBACzB5H,KAAK4H,kBAAoBhC,SAC7B,CACA5F,KAAK6H,gBAAkB,IAAI0B,gBAC3BvJ,KAAKgB,QAAU,KAEfhB,KAAK4H,kBAAoBF,OAAOxE,YAAW,KACvC,IAAIC,GACHA,EAAKnD,KAAK6H,mBAAqB,MAAQ1E,SAAY,OAAS,EAAIA,EAAG2E,QACpE9H,KAAK4H,kBAAoBhC,SAAS,GACnC5F,KAAKU,cACR,IAEI,IAAI8I,EACJ,IACIA,EAAM,IAAIC,IAAIzJ,KAAKqC,SAAUqF,OAAOgC,SAASC,OACjD,CACA,MAAOC,GACH,MAAM,IAAIC,UAAU,qBAAqB7J,KAAKqC,WAClD,CACA,GAAIrC,KAAKQ,cAAgB,MAAO,CAC5BgJ,EAAIM,aAAaC,IAAI,SAAU3H,GAC/BoH,EAAIM,aAAaC,IAAI,OAAQxB,OAAOnE,GACxC,CACA,MAAM4F,QAAiBC,MAAMT,EAAIU,WAAYC,OAAOC,OAAO,CAAEC,OAAQrK,KAAKQ,YAAa8J,OAAQtK,KAAK6H,gBAAgByC,OAAQC,QAAS,CAC7H,eAAgB,mBAChBC,OAAU,qBACRxK,KAAKQ,cAAgB,QAAU,CACrCiK,KAAMzE,KAAK0E,UAAU,CAAEC,OAAQvI,EAAOgC,YAG1C,GAAIpE,KAAK4H,oBAAsBhC,UAAW,CACtC8B,OAAOC,aAAa3H,KAAK4H,mBACzB5H,KAAK4H,kBAAoBhC,SAC7B,CACA,IAAKoE,EAASY,GACV,MAAM,IAAIC,MAAM,2BACpB,MAAMC,QAAad,EAASe,OAC5B,MAAMC,EAAmBF,EAAKG,QAAQ7D,KAAI8D,IAEtC,GAAIlL,KAAKmL,aAAc,CACnB,OAAOnL,KAAKmL,aAAaD,EAC7B,CAEA,UAAWA,IAAS,UAAYA,IAAS,KAAM,CAC3C,OAAOf,OAAOC,OAAO,CAAE9C,GAAI4D,EAAK5D,GAAIC,KAAM2D,EAAK3D,MAAQ2D,EAC3D,CAEA,MAAO,CACH5D,GAAIiB,OAAO2C,GACX3D,KAAMgB,OAAO2C,GAChB,IAEL,GAAI9G,IAAS,EAAG,CACZpE,KAAKoB,gBAAkB4J,CAC3B,KACK,CACDhL,KAAKoB,gBAAkB,IAAIpB,KAAKoB,mBAAoB4J,EACxD,CACAhL,KAAKuB,QAAUuJ,EAAKM,WAAapL,KAAKoB,gBAAgBwB,OAASkI,EAAKM,WAAa,MACjFpL,KAAKsB,YAAc8C,CACvB,CACA,MAAOiH,GAEH,GAAIrL,KAAK4H,oBAAsBhC,UAAW,CACtC8B,OAAOC,aAAa3H,KAAK4H,mBACzB5H,KAAK4H,kBAAoBhC,SAC7B,CACA,GAAIyF,EAAMlC,OAAS,aAAc,CAC7BmC,QAAQD,MAAM,0CAA2CA,EAC7D,CACJ,CACA,QACIrL,KAAKgB,QAAU,KACnB,CACJ,CACA,kBAAMuK,CAAanJ,GACf,IAAKpC,KAAK4I,YAAcxG,EAAMyG,OAC1B,OAEJ,GAAI7I,KAAKwB,SACL,OACJxB,KAAKwB,SAAW,KAChB,IACI,MAAMgI,EAAM,IAAIC,IAAIzJ,KAAK4I,UAAWlB,OAAOgC,SAASC,QACpD,MAAMK,QAAiBC,MAAMT,EAAIU,WAAY,CACzCG,OAAQ,OACRE,QAAS,CACL,eAAgB,mBAChBC,OAAU,oBAEdC,KAAMzE,KAAK0E,UAAU,CAAEnD,KAAMnF,EAAMyG,WAEvC,IAAKmB,EAASY,GACV,MAAM,IAAIC,MAAM,2BACpB,MAAMC,QAAad,EAASe,OAC5B,MAAMS,EAAYrB,OAAOC,OAAO,CAAE9C,GAAIwD,EAAKxD,GAAIC,KAAMuD,EAAKvD,MAAQuD,GAElE9K,KAAKoB,gBAAkB,IAAIpB,KAAKoB,gBAAiBoK,GAEjDxL,KAAKM,MAAQ,IAAIN,KAAKM,MAAOiI,OAAOiD,EAAUlE,KAE9CtH,KAAK0E,oBAEL1E,KAAKI,qBAAqB+B,KAAK,CAC3BC,MAAOA,EAAMyG,OACb2C,cAGJxL,KAAKC,qBAAqBkC,KAAK,CAC3BsJ,OAAQzL,KAAKM,MACboL,MAAO1L,KAAKqB,gBAGhBrB,KAAKkB,YAAc,GACnBlB,KAAKmB,kBAAoB,EAEzB6D,uBAAsB,KAClB,IAAI7B,GACHA,EAAKnD,KAAK2L,iBAAmB,MAAQxI,SAAY,OAAS,EAAIA,EAAGsD,OAAO,GAEjF,CACA,MAAO4E,GACHC,QAAQD,MAAM,0CAA2CA,EAC7D,CACA,QACIrL,KAAKwB,SAAW,KACpB,CACJ,CACA,YAAAI,GACI,GAAI5B,KAAKO,SACL,OACJP,KAAKyB,UAAY,KACjBzB,KAAKiB,OAAS,KACdjB,KAAKmB,kBAAoB,EAEzB,GAAInB,KAAKqC,UAAYrC,KAAKoB,gBAAgBwB,SAAW,EAAG,CACpD5C,KAAKsC,2BAA2BtC,KAAKkB,YAAa,EACtD,CACA8D,uBAAsB,KAClB,IAAI7B,EACJnD,KAAK4L,oBAEJzI,EAAKnD,KAAK2L,iBAAmB,MAAQxI,SAAY,OAAS,EAAIA,EAAGsD,QAElEvD,YAAW,KACPlD,KAAKyB,UAAY,KAAK,GACvB,GAAG,GAEd,CACA,aAAAE,GACI3B,KAAKiB,OAAS,MACdjB,KAAKmB,kBAAoB,EACzBnB,KAAKkB,YAAc,GAEnB,GAAIlB,KAAKyF,kBAAmB,CACxBzF,KAAKyF,oBACLzF,KAAKyF,kBAAoBG,SAC7B,CACJ,CACA,gBAAAgG,GACI,IAAK5L,KAAK6L,cAAgB7L,KAAK8L,QAC3B,OACJ,MAAMC,EAAc/L,KAAKwG,WAAaxG,KAAK6L,YAC3C,MAAMhL,SAAEA,EAAQmL,WAAEA,GAAehM,KACjC,MAAMiM,EAAiB,KACnB/M,EAAgB6M,EAAa/L,KAAK8L,QAAS,CACvCI,UAAW,eACXC,SAAU,WACVC,WAAY,CACRjN,EAAO,IACPC,IACAC,EAAM,CAAEgN,QAAS,IACjB/M,EAAK,CACDgN,MAAO,EAAGC,QAAOC,eACbrC,OAAOC,OAAOoC,EAASC,SAASC,MAAO,CACnCC,MAAOX,IAAe,MAAQA,SAAoB,EAAIA,EAAa,GAAGO,EAAMK,UAAUD,UACtF9L,YACF,OAIfgM,MAAK,EAAGC,IAAGC,QACV,GAAI/M,KAAK8L,QAAS,CACd9L,KAAK8L,QAAQY,MAAMM,KAAO,GAAGF,MAC7B9M,KAAK8L,QAAQY,MAAMO,IAAM,GAAGF,KAChC,IACF,EAGNd,IAEA,MAAMxG,EAAoBxG,EAAW8M,EAAa/L,KAAK8L,QAASG,GAChEjM,KAAKyF,kBAAoB,KACrBA,IACAzF,KAAK2F,sBAAsB,CAEnC,CACA,oBAAA9C,GACImC,uBAAsB,KAClB,IAAI7B,EACJ,MAAM+J,GAAe/J,EAAKnD,KAAKmN,aAAe,MAAQhK,SAAY,OAAS,EAAIA,EAAGgC,cAAc,gBAAgBnF,KAAKmB,sBACrH+L,IAAgB,MAAQA,SAAqB,OAAS,EAAIA,EAAYE,eAAe,CAAEC,MAAO,UAAWC,SAAU,UAAW,GAEtI,CACA,YAAA1J,CAAab,GACT,IAAII,EAEJ,GAAIJ,EAAO+F,eAAgB,CAEvB,IAAK9I,KAAKwB,SAAU,CAChBxB,KAAKuL,aAAavL,KAAKkB,YAC3B,CACA,MACJ,CACA,MAAMqM,EAAavN,KAAKM,MAAMqI,SAASJ,OAAOxF,EAAOuE,KACrD,GAAIiG,EAAY,CAEZ,MAAMzH,EAAW9F,KAAKM,MAAM4G,QAAOsG,GAAKA,IAAMjF,OAAOxF,EAAOuE,MAC5DtH,KAAKM,MAAQwF,EACb,MAAM2H,EAAmBzN,KAAKqB,cAAc6F,QAAOgE,GAAQ3C,OAAO2C,EAAK5D,MAAQiB,OAAOxF,EAAOuE,MAC7FtH,KAAKC,qBAAqBkC,KAAK,CAC3BsJ,OAAQ3F,EACR4F,MAAO+B,GAEf,KACK,CAED,GAAIzN,KAAK0N,eAAiB1N,KAAKM,MAAMsC,QAAU5C,KAAK0N,cAAe,CAC/D,MACJ,CACA,MAAM5H,EAAW,IAAI9F,KAAKM,MAAOiI,OAAOxF,EAAOuE,KAC/CtH,KAAKM,MAAQwF,EACb,MAAM2H,EAAmB,IAAIzN,KAAKqB,cAAe0B,GACjD/C,KAAKC,qBAAqBkC,KAAK,CAC3BsJ,OAAQ3F,EACR4F,MAAO+B,GAEf,EAECtK,EAAKnD,KAAK2L,iBAAmB,MAAQxI,SAAY,OAAS,EAAIA,EAAGsD,OACtE,CACA,YAAAzD,CAAaD,GAET/C,KAAK4D,aAAab,EACtB,CACA,uBAAA4K,GACI,GAAI3N,KAAKqB,cAAcuB,SAAW,EAC9B,OAAO,KACX,OAAQ9D,EAAE,MAAO,CAAE8O,MAAO,qCAAuC9O,EAAE,KAAM,CAAE8O,MAAO,iCAAkCC,KAAM,QAAU7N,KAAKqB,cAAc+F,KAAI8D,GAASpM,EAAE,KAAM,CAAEiD,IAAKwG,OAAO2C,EAAK5D,IAAKsG,MAAO,kCAAoC1C,EAAK3D,SACxP,CACA,cAAAuG,GACI,IAAK9N,KAAKiB,OACN,OAAO,KACX,MAAMuB,EAAkBxC,KAAKyC,qBAC7B,MAAMwF,EAAajI,KAAKkI,mBACxB,MAAM6F,IAAoB/N,KAAKuD,GAAG4B,cAAc,kBAChD,MAAM6I,IAAsBhO,KAAKuD,GAAG4B,cAAc,oBAClD,OAAQrG,EAAE,MAAO,CAAE8O,MAAO,yBAA0BK,IAAK1K,GAAOvD,KAAK8L,QAAUvI,EAAKmJ,MAAO,CAAE7L,SAAUb,KAAKa,WAAc/B,EAAE,MAAO,CAAE8O,MAAO,2BAA6B9O,EAAE,WAAY,CAAEqK,KAAM,SAAU7J,KAAM,UAAYR,EAAE,QAAS,CAAEmP,IAAK1K,GAAOvD,KAAK2L,cAAgBpI,EAAK2K,KAAM,OAAQN,MAAO,gCAAiCvN,YAAa,UAAWC,MAAON,KAAKkB,YAAa,aAAc,iBAAkB,gBAAiB,GAAGlB,KAAKmO,sBAAuB,wBAAyBnO,KAAKmB,kBAAoB,EAAI,GAAGnB,KAAKmO,sBAAsBnO,KAAKmB,mBAAqByE,UAAWiI,KAAM,WAAY,gBAAiB,UAAW,gBAAiB,OAAQ,oBAAqB,OAAQO,aAAc,MAAOC,QAASrO,KAAKiC,wBAAyBqM,UAAWtO,KAAKuC,4BAA8BvC,KAAK2N,0BAA2B7O,EAAE,KAAM,CAAE8O,MAAO,2BAA4BC,KAAM,UAAW,uBAAwB,OAAQ,aAAc7N,KAAKuO,OAAS,UAAWjH,GAAI,GAAGtH,KAAKmO,sBAAuBF,IAAK1K,GAAOvD,KAAKmN,UAAY5J,EAAKmJ,MAAO,CAAE/L,UAAWX,KAAKW,WAAa6N,SAAUxO,KAAK+D,cAAgB/D,KAAKgB,SAAYlC,EAAE,KAAM,CAAE8O,MAAO,2BAA4BC,KAAM,gBAAkBG,EAAqBlP,EAAE,OAAQ,CAAEqK,KAAM,YAAiBrK,EAAE,aAAc,CAAEQ,KAAM,YAAgBU,KAAKgB,SAAWwB,EAAgBI,SAAW,GAAM9D,EAAE,KAAM,CAAE8O,MAAO,yBAA0BC,KAAM,gBAAkBE,EAAmBjP,EAAE,OAAQ,CAAEqK,KAAM,UAAerK,EAAE,OAAQ,KAAM,qBAAwB0D,EAAgB4E,KAAI,CAACrE,EAAQe,KAC19C,MAAMyJ,EAAatF,EAAWU,SAASJ,OAAOxF,EAAOuE,KACrD,MAAMwB,EAAiB/F,EAAO+F,eAC9B,MAAM2F,EAAgB3K,IAAU9D,KAAKmB,mBAAqB2H,EAC1D,MAAM4F,EAAW,GAAG1O,KAAKmO,sBAAsBrK,IAC/C,MAAM6K,EAAmB7F,GAAkB9I,KAAKwB,SAChD,OAAQ1C,EAAE,KAAM,CAAEiD,IAAKwG,OAAOxF,EAAOuE,IAAKA,GAAIoH,EAAUd,MAAO,CACvD,0BAA2B,KAC3B,uCAAwCa,EACxC,oCAAqClB,EACrC,kCAAmCzE,EACnC,oCAAqC6F,GACtCd,KAAM,SAAU,gBAAiBN,EAAa,OAAS,QAAS,gBAAiBoB,EAAmB,OAAS/I,UAAW,aAAckD,EAAiB,mBAAmB/F,EAAOwE,OAAS3B,UAAW,aAAc9B,EAAO8K,YAAa5O,KAAK2D,sBAAsBZ,GAAS8L,aAAc7O,KAAK6D,uBAAuBC,IAAUgF,EAAkBhK,EAAE,UAAW,CAAE8O,MAAO,iCAAkC,cAAe,SAAUkB,IAAK,MAAQhQ,EAAE,WAAY,CAAEqK,KAAM,MAAO7J,KAAM,UAAYR,EAAE,WAAY,KAAM,QAAUiE,EAAOwE,KAAM,MAAWzI,EAAE,eAAgB,CAAEqP,YAAa,GAAGnO,KAAKmO,wBAAwBrK,IAASiL,QAASxB,EAAYgB,MAAOxL,EAAOwE,KAAMmF,MAAO,CAAEsC,cAAe,UAAc,IACprBhP,KAAKuB,UAAYvB,KAAKgB,SAAYlC,EAAE,KAAM,CAAE8O,MAAO,6BAA8BC,KAAM,gBAAkB/O,EAAE,aAAc,CAAEQ,KAAM,YACzI,CACA,cAAA2P,GACI,MAAMC,EAAQlP,KAAKqB,cAAcuB,OACjC,GAAIsM,IAAU,EAAG,CACb,OAAOlP,KAAKK,aAAe,WAC/B,CACA,MAAO,GAAG6O,SAAaA,IAAU,EAAI,GAAK,KAC9C,CACA,MAAAC,GACI,MAAMC,EAAgBpP,KAAKqB,cAAcuB,OAAS,EAClD,OAAQ9D,EAAEC,EAAM,CAAEgD,IAAK,2CAA4C,gBAAiB/B,KAAKO,SAAW,OAAS,MAAQzB,EAAE,MAAO,CAAEiD,IAAK,2CAA4C6L,MAAO,mBAAqB5N,KAAKuO,OAAUzP,EAAE,QAAS,CAAEiD,IAAK,2CAA4CsN,QAASrP,KAAKmO,YAAaP,MAAO,CACpT,yBAA0B,KAC1B,kBAAmB5N,KAAKc,YACvBd,KAAKuO,OAASzP,EAAE,MAAO,CAAEiD,IAAK,2CAA4C6L,MAAO,2BAA4BK,IAAK1K,GAAOvD,KAAK6L,YAActI,EAAK+L,WAAYtP,KAAKiD,wBAAyByJ,MAAO,CAAEC,MAAO3M,KAAKY,eAAkB9B,EAAE,SAAU,CAAEiD,IAAK,2CAA4CkM,IAAK1K,GAAOvD,KAAKwG,UAAYjD,EAAK2K,KAAM,SAAUN,MAAO,CAC3V,2BAA4B,KAC5B,iCAAkC5N,KAAKiB,OACvC,qCAAsCjB,KAAKO,SAC3C,oCAAqCP,KAAKuP,WAAavP,KAAKwP,aAC5D,sCAAuCJ,GACxC9H,GAAItH,KAAKmO,YAAa5N,SAAUP,KAAKO,SAAU,gBAAiBP,KAAKe,SAAW,OAAS6E,UAAW,gBAAiB5F,KAAKiB,OAAS,OAAS,QAAS,gBAAiB,UAAW,mBAAoBzB,EAAkBQ,KAAKmO,YAAanO,KAAKuP,WAAavP,KAAKwP,aAAcxP,KAAKwP,cAAgBxP,KAAKyP,eAAgB,eAAgBzP,KAAKuP,WAAavP,KAAKwP,aAAe,OAAS5J,UAAW8J,QAAS1P,KAAK0B,mBAAoB4M,UAAWtO,KAAK6B,sBAAwB/C,EAAE,OAAQ,CAAEiD,IAAK,2CAA4C6L,MAAO,CAC/gB,gCAAiC,KACjC,8CAA+CwB,IAC9CpP,KAAKiP,kBAAmBnQ,EAAE,WAAY,CAAEiD,IAAK,2CAA4C6L,MAAO,wBAAyB+B,KAAMjQ,KAAaM,KAAK8N,kBAAmB9N,KAAKyP,iBAAmBzP,KAAKwP,cAAgBxP,KAAKwP,aAAa5M,OAAS,IAAO9D,EAAE,IAAK,CAAEiD,IAAK,2CAA4C6L,MAAO,0BAA2BtG,GAAI7H,EAAUO,KAAKmO,YAAa,WAAanO,KAAKyP,eAAiBzP,KAAKwP,cAAiB1Q,EAAE,IAAK,CAAEiD,IAAK,2CAA4C6L,MAAO,yBAA0BtG,GAAI7H,EAAUO,KAAKmO,YAAa,UAAYrP,EAAE,WAAY,CAAEiD,IAAK,2CAA4C4N,KAAMhQ,EAAQL,KAAM,UAAYU,KAAKwP,cAAgB1Q,EAAE,MAAO,CAAEiD,IAAK,2CAA4C2K,MAAO,CAAEkD,QAAS,SAAY9Q,EAAE,OAAQ,CAAEiD,IAAK,+CAC7xB,CACA,yBAAW8N,GAAmB,OAAO,IAAM,CAC3C,MAAItM,GAAO,OAAOvE,EAAWgB,KAAO,CACpC,mBAAW8P,GAAa,MAAO,CAC3BrP,SAAY,CAAC,iBACbH,MAAS,CAAC,gBACV+F,QAAW,CAAC,kBACZjF,gBAAmB,CAAC,0BACrB,GAEPvB,EAAe6M,MAAQ9M,SAEdC","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- System.register(["./p-5D9wXQuJ.system.js","./p-kYMYDfJY.system.js"],(function(t){"use strict";var e,i,s,r,o,n;return{setters:[function(t){e=t.r;i=t.c;s=t.h;r=t.H;o=t.a},function(t){n=t.c}],execute:function(){var h=":host{--color-background-interactive:var(--pine-color-border-disabled);border-color:inherit;display:table-row;vertical-align:inherit}:host::part(checkbox-cell){background-color:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(:hover),:host(:hover)::part(checkbox-cell),:host(:hover) ::slotted(pds-table-cell),:host(.is-selected),:host(.is-selected)::part(checkbox-cell),:host(.is-selected) ::slotted(pds-table-cell){background:var(--color-background-interactive)}:host(.has-divider) ::slotted(pds-table-cell),:host(.has-divider) pds-table-cell{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle)}:host(.has-divider.is-last-row) ::slotted(pds-table-cell),:host(.has-divider.is-last-row) pds-table-cell{-webkit-border-after:0;border-block-end:0}";var l=t("pds_table_row",function(){function t(t){var s=this;e(this,t);this.pdsTableRowSelected=i(this,"pdsTableRowSelected");this.observer=null;this.bodyObserver=null;this.hasDivider=false;this.isLastRow=false;this.handleClick=function(){s.isSelected=!s.isSelected;s.handleSelect(s.isSelected)};this.handleSelect=function(t){s.indeterminate=false;if(!n("pds-table-head",s.hostElement)){var e=Array.from(s.hostElement.parentNode.children).indexOf(s.hostElement);s.pdsTableRowSelected.emit({rowIndex:e,isSelected:t})}};this.generateUniqueId=function(){var t=Math.random().toString(36).substring(2,8);var e=(new Date).toISOString().replace(/[:.]/g,"-");var i="".concat(t,"-").concat(e);return i}}t.prototype.classNames=function(){var t=[];if(this.isSelected){t.push("is-selected")}if(this.hasDivider){t.push("has-divider")}if(this.isLastRow){t.push("is-last-row")}return t.join(" ")};t.prototype.componentWillRender=function(){this.tableRef=this.hostElement.closest("pds-table");if(this.tableRef&&this.tableRef.fixedColumn){var t=this.hostElement.querySelector("pds-table-cell");t===null||t===void 0?void 0:t.classList.add("is-fixed")}};t.prototype.componentWillLoad=function(){if(this.isSelected){this.handleSelect(this.isSelected)}};t.prototype.connectedCallback=function(){this.tableRef=this.hostElement.closest("pds-table");this.setupObservers();this.updateDividerState()};t.prototype.disconnectedCallback=function(){this.cleanupObservers()};t.prototype.cleanupObservers=function(){if(this.observer){this.observer.disconnect();this.observer=null}if(this.bodyObserver){this.bodyObserver.disconnect();this.bodyObserver=null}};t.prototype.setupObservers=function(){var t=this;this.cleanupObservers();if(this.tableRef&&typeof MutationObserver!=="undefined"){this.observer=new MutationObserver((function(){t.updateDividerState()}));this.observer.observe(this.tableRef,{attributes:true,attributeFilter:["row-dividers"]})}var e=this.hostElement.closest("pds-table-body");if(e&&typeof MutationObserver!=="undefined"){this.bodyObserver=new MutationObserver((function(){t.updateLastRowState()}));this.bodyObserver.observe(e,{childList:true})}};t.prototype.shouldHaveDivider=function(){if(!this.tableRef){this.tableRef=this.hostElement.closest("pds-table")}return!!(this.tableRef&&this.tableRef.rowDividers)};t.prototype.updateDividerState=function(){this.hasDivider=this.shouldHaveDivider();this.updateLastRowState()};t.prototype.updateLastRowState=function(){if(!this.hasDivider){this.isLastRow=false;return}var t=this.hostElement.closest("pds-table-body");if(t){var e=Array.from(t.querySelectorAll("pds-table-row"));this.isLastRow=e[e.length-1]===this.hostElement}else{this.isLastRow=false}};t.prototype.render=function(){return s(r,{key:"ad282466c93a2f9bc15dd466bdc4c6ac4e408042",class:this.classNames(),role:"row",part:"row"},this.tableRef&&this.tableRef.selectable&&s("pds-table-cell",{key:"19d88e362f07c3ce546356c1abdf7027e6701b3a",part:this.tableRef.fixedColumn?"checkbox-cell":"checkbox-cell",class:this.tableRef.selectable?"has-checkbox":""},s("pds-checkbox",{key:"e65963f7e2e6ac78f911451dd09a3f21e38ead45",componentId:this.generateUniqueId(),onClick:this.handleClick,indeterminate:this.indeterminate,label:"Select Row",hideLabel:true,checked:this.isSelected,part:"row-checkbox"})),s("slot",{key:"c17d0098092adbc45d84b3e497b6023e344eb260"}))};Object.defineProperty(t.prototype,"hostElement",{get:function(){return o(this)},enumerable:false,configurable:true});return t}());l.style=h}}}));
2
- //# sourceMappingURL=p-63a669c9.system.entry.js.map
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as s,H as i,a as r}from"./p-DHPhrb5T.js";import{c as o}from"./p-DnUJodVd.js";const h=":host{--color-background-interactive:var(--pine-color-border-disabled);border-color:inherit;display:table-row;vertical-align:inherit}:host::part(checkbox-cell){background-color:var(--pine-color-background-container);inset-inline-start:var(--pine-dimension-none);position:-webkit-sticky;position:sticky;z-index:var(--pine-z-index-raised)}:host(:hover),:host(:hover)::part(checkbox-cell),:host(:hover) ::slotted(pds-table-cell),:host(.is-selected),:host(.is-selected)::part(checkbox-cell),:host(.is-selected) ::slotted(pds-table-cell){background:var(--color-background-interactive)}:host(.has-divider) ::slotted(pds-table-cell),:host(.has-divider) pds-table-cell{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle)}:host(.has-divider.is-last-row) ::slotted(pds-table-cell),:host(.has-divider.is-last-row) pds-table-cell{-webkit-border-after:0;border-block-end:0}";const l=class{constructor(s){t(this,s);this.pdsTableRowSelected=e(this,"pdsTableRowSelected");this.observer=null;this.bodyObserver=null;this.hasDivider=false;this.isLastRow=false;this.handleClick=()=>{this.isSelected=!this.isSelected;this.handleSelect(this.isSelected)};this.handleSelect=t=>{this.indeterminate=false;if(!o("pds-table-head",this.hostElement)){const e=Array.from(this.hostElement.parentNode.children).indexOf(this.hostElement);this.pdsTableRowSelected.emit({rowIndex:e,isSelected:t})}};this.generateUniqueId=()=>{const t=Math.random().toString(36).substring(2,8);const e=(new Date).toISOString().replace(/[:.]/g,"-");const s=`${t}-${e}`;return s}}classNames(){const t=[];if(this.isSelected){t.push("is-selected")}if(this.hasDivider){t.push("has-divider")}if(this.isLastRow){t.push("is-last-row")}return t.join(" ")}componentWillRender(){this.tableRef=this.hostElement.closest("pds-table");if(this.tableRef&&this.tableRef.fixedColumn){const t=this.hostElement.querySelector("pds-table-cell");t===null||t===void 0?void 0:t.classList.add("is-fixed")}}componentWillLoad(){if(this.isSelected){this.handleSelect(this.isSelected)}}connectedCallback(){this.tableRef=this.hostElement.closest("pds-table");this.setupObservers();this.updateDividerState()}disconnectedCallback(){this.cleanupObservers()}cleanupObservers(){if(this.observer){this.observer.disconnect();this.observer=null}if(this.bodyObserver){this.bodyObserver.disconnect();this.bodyObserver=null}}setupObservers(){this.cleanupObservers();if(this.tableRef&&typeof MutationObserver!=="undefined"){this.observer=new MutationObserver((()=>{this.updateDividerState()}));this.observer.observe(this.tableRef,{attributes:true,attributeFilter:["row-dividers"]})}const t=this.hostElement.closest("pds-table-body");if(t&&typeof MutationObserver!=="undefined"){this.bodyObserver=new MutationObserver((()=>{this.updateLastRowState()}));this.bodyObserver.observe(t,{childList:true})}}shouldHaveDivider(){if(!this.tableRef){this.tableRef=this.hostElement.closest("pds-table")}return!!(this.tableRef&&this.tableRef.rowDividers)}updateDividerState(){this.hasDivider=this.shouldHaveDivider();this.updateLastRowState()}updateLastRowState(){if(!this.hasDivider){this.isLastRow=false;return}const t=this.hostElement.closest("pds-table-body");if(t){const e=Array.from(t.querySelectorAll("pds-table-row"));this.isLastRow=e[e.length-1]===this.hostElement}else{this.isLastRow=false}}render(){return s(i,{key:"ad282466c93a2f9bc15dd466bdc4c6ac4e408042",class:this.classNames(),role:"row",part:"row"},this.tableRef&&this.tableRef.selectable&&s("pds-table-cell",{key:"19d88e362f07c3ce546356c1abdf7027e6701b3a",part:this.tableRef.fixedColumn?"checkbox-cell":"checkbox-cell",class:this.tableRef.selectable?"has-checkbox":""},s("pds-checkbox",{key:"e65963f7e2e6ac78f911451dd09a3f21e38ead45",componentId:this.generateUniqueId(),onClick:this.handleClick,indeterminate:this.indeterminate,label:"Select Row",hideLabel:true,checked:this.isSelected,part:"row-checkbox"})),s("slot",{key:"c17d0098092adbc45d84b3e497b6023e344eb260"}))}get hostElement(){return r(this)}};l.style=h;export{l as pds_table_row};
2
- //# sourceMappingURL=p-88dd25dd.entry.js.map