profile-pane 3.1.2-6e3fc707 → 3.1.2-78ae4e6b

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.
@@ -98,7 +98,7 @@ const createAddressBookUriEntryDiv = (context, contactsModule, addressBooksData,
98
98
  addressBookUriEntryDiv.setAttribute('aria-label', 'Address book URI entry div');
99
99
  addressBookUriEntryDiv.setAttribute('aria-describedby', 'addressbook-uri-entry-div');
100
100
  addressBookUriEntryDiv.setAttribute('id', 'contacts-addressbook-uri-entry');
101
- addressBookUriEntryDiv.classList.add('contactsPopupMessage', 'contactsAddressBookUriEntry');
101
+ addressBookUriEntryDiv.classList.add('contactsPopupDialog', 'contactsAddressBookUriEntry');
102
102
  const closeButton = createCloseButton(context, addressBookUriEntryDiv, 'contactsAddressBookUriEntryCloseButton');
103
103
  addressBookUriEntryDiv.appendChild(closeButton);
104
104
  addressBookUriEntryDiv.appendChild(createAddressBookUriEntryForm(context, contactsModule, addressBooksData, contactData));
@@ -434,7 +434,7 @@ const createNewAddressBookForm = (context, addressBooksData, contactsModule, con
434
434
  newAddressBookForm.method = 'post';
435
435
  newAddressBookForm.innerHTML = 'Create a new address book';
436
436
  newAddressBookForm.setAttribute('id', 'new-addressbook-form');
437
- newAddressBookForm.classList.add('contactsPopupMessage', 'contactsNewAddressForm');
437
+ newAddressBookForm.classList.add('contactsPopupDialog', 'contactsNewAddressForm');
438
438
  const addressBookNameLabel = context.dom.createElement('label');
439
439
  addressBookNameLabel.classList.add('label');
440
440
  addressBookNameLabel.setAttribute('for', 'addressBookNameInput');
@@ -559,7 +559,7 @@ const createGroupNameForm = (context, contactsModule, addressBooksData, contactD
559
559
  newGroupForm.addEventListener('submit', addGroupEventListener);
560
560
  newGroupForm.innerHTML = 'Create a new group';
561
561
  newGroupForm.setAttribute('id', 'new-group-form');
562
- newGroupForm.classList.add('contactsPopupMessage', 'contactsNewGroupForm');
562
+ newGroupForm.classList.add('contactsPopupDialog', 'contactsNewGroupForm');
563
563
  const groupNameLabel = context.dom.createElement('label');
564
564
  groupNameLabel.classList.add('label');
565
565
  groupNameLabel.setAttribute('for', 'groupNameInput');
@@ -713,7 +713,7 @@ const showPopupOverlay = context => {
713
713
  const removePopupOverlayIfNoPopup = context => {
714
714
  const selectorDialog = context.dom.getElementById('contacts-selector-dialog');
715
715
  if (!selectorDialog) return;
716
- const activePopup = selectorDialog.querySelector('.contactsPopupMessage, .contactsContactExistsAlert');
716
+ const activePopup = selectorDialog.querySelector('.contactsPopupDialog, .contactsContactExistsAlert');
717
717
  if (activePopup) return;
718
718
  const overlay = selectorDialog.querySelector(`#${CONTACTS_POPUP_OVERLAY_ID}`);
719
719
  if (overlay) overlay.remove();
@@ -67,16 +67,16 @@ const createAddMeToYourContactsButton = async (subject, context) => {
67
67
  needsBorder: true
68
68
  });
69
69
  button.setAttribute('id', 'add-to-contacts-button');
70
- //button.refresh = refreshButton(context, subject, addressBooksData)
71
70
  button.refresh = refreshButton();
72
71
  function refreshButton() {
73
72
  if ((0, _buttonsHelper.checkIfAnyUserLoggedIn)(me)) {
74
- const contactExistsByWebID = (0, _contactsHelpers.checkIfContactExistsByWebID)(addressBooksData, contactData.webID);
75
- const contactExistsByName = (0, _contactsHelpers.checkIfContactExistsByName)(addressBooksData, contactData.name);
73
+ const contactExistsByWebID = contactData ? (0, _contactsHelpers.checkIfContactExistsByWebID)(addressBooksData, contactData.webID) : false;
74
+ const contactExistsByName = contactData ? (0, _contactsHelpers.checkIfContactExistsByName)(addressBooksData, contactData.name) : false;
76
75
  if (contactExistsByWebID) {
77
76
  //logged in and friend exists or friend was just added
78
77
  button.innerHTML = _texts.contactExistsAlreadyButtonText.toUpperCase();
79
78
  button.onclick = null;
79
+ button.setAttribute('disabled', 'true');
80
80
  } else if (contactExistsByName) {
81
81
  button.innerHTML = _texts.contactExistsAlreadyByNameButtonText.toUpperCase();
82
82
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"contactsHelpers.d.ts","sourceRoot":"","sources":["../src/contactsHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAoB,MAAM,QAAQ,CAAA;AAE/D,OAAO,oBAAoB,MAAM,qCAAqC,CAAA;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,2BAA2B,CAAA;AAElC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAgB,SAAS,EAAgB,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAMnJ,iBAAe,uBAAuB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,oBAAoB,EACpC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,cAAc,iBAM1B;AA8GD,iBAAe,mBAAmB,CAChC,OAAO,EAAE,kBAAkB,EAC3B,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,gBAAgB,CAAC,CAY3B;AAkBD,iBAAe,cAAc,CAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CAiCtB;AAED,iBAAe,mCAAmC,CAChD,OAAO,EAAC,kBAAkB,EAC1B,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC;IAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAwBlF;AAED,iBAAe,0BAA0B,CACvC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,GAC/C,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAqFD,iBAAe,qBAAqB,CAClC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,iBAAe,qBAAqB,CAClC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,iBA0BhB;AAED,iBAAS,aAAa,CACpB,OAAO,EAAE,kBAAkB,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,QAuBvB;AAEH,iBAAS,2BAA2B,CAClC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,MAAM,GACjB,OAAO,CAIT;AAED,iBAAS,0BAA0B,CACjC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAYf;AAED,iBAAe,yBAAyB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,iBASnB;AA6CD,iBAAS,yBAAyB,CAChC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,SAAS,GACf,OAAO,CA0BT;AAED,iBAAe,yBAAyB,CACtC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,mCAAmC,EACnC,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EAC1B,CAAA"}
1
+ {"version":3,"file":"contactsHelpers.d.ts","sourceRoot":"","sources":["../src/contactsHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAoB,MAAM,QAAQ,CAAA;AAE/D,OAAO,oBAAoB,MAAM,qCAAqC,CAAA;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,2BAA2B,CAAA;AAElC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAgB,SAAS,EAAgB,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAMnJ,iBAAe,uBAAuB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,oBAAoB,EACpC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,cAAc,iBAM1B;AAgHD,iBAAe,mBAAmB,CAChC,OAAO,EAAE,kBAAkB,EAC3B,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,gBAAgB,CAAC,CAY3B;AAkBD,iBAAe,cAAc,CAC3B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CA8BtB;AAED,iBAAe,mCAAmC,CAChD,OAAO,EAAC,kBAAkB,EAC1B,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC;IAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAA;CAAE,CAAC,CA2BlF;AAED,iBAAe,0BAA0B,CACvC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,uBAAuB,GAC/C,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAqFD,iBAAe,qBAAqB,CAClC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,iBAAe,qBAAqB,CAClC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,iBA0BhB;AAED,iBAAS,aAAa,CACpB,OAAO,EAAE,kBAAkB,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,QAuBvB;AAEH,iBAAS,2BAA2B,CAClC,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,MAAM,GACjB,OAAO,CAGT;AAED,iBAAS,0BAA0B,CACjC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAYf;AAED,iBAAe,yBAAyB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,oBAAoB,EACpC,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,iBASnB;AA6CD,iBAAS,yBAAyB,CAChC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,SAAS,GACf,OAAO,CA0BT;AAED,iBAAe,yBAAyB,CACtC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,mCAAmC,EACnC,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EAC1B,CAAA"}
@@ -88,9 +88,10 @@ async function getAddressBooks(context, contactsModule) {
88
88
  };
89
89
  // let addressBookUris = await contactsModule.listAddressBooks(me.value)
90
90
 
91
- const publicAddressBookPromises = await addressBookUris.publicUris.map(addressBook => getAddressData(context, contactsModule, addressBook));
91
+ const publicAddressBookPromises = addressBookUris.publicUris.map(addressBook => getAddressData(context, contactsModule, addressBook));
92
92
  const publicAddressBooksData = await Promise.all(publicAddressBookPromises);
93
93
  publicAddressBooksData.map(addressBook => {
94
+ if (!addressBook) return;
94
95
  addressBooksData.public.set(addressBook.uri, {
95
96
  name: addressBook.title,
96
97
  groups: addressBook.groups,
@@ -104,6 +105,7 @@ async function getAddressBooks(context, contactsModule) {
104
105
  const privateAddressBookPromises = addressBookUris.privateUris.map(addressBook => getAddressData(context, contactsModule, addressBook));
105
106
  const privateAddressBooksData = await Promise.all(privateAddressBookPromises);
106
107
  privateAddressBooksData.map(addressBook => {
108
+ if (!addressBook) return;
107
109
  addressBooksData.private.set(addressBook.uri, {
108
110
  name: addressBook.title,
109
111
  groups: addressBook.groups,
@@ -135,7 +137,7 @@ async function processContactWebIDs(context, addressBooksData, allContacts) {
135
137
  const contactPromises = allContacts.map(getWebID.bind(null, context));
136
138
  const results = await Promise.all(contactPromises);
137
139
  results.map(contact => {
138
- if (contact) addressBooksData.contactWebIDs.set(contact.webID, contact.uri);
140
+ if (contact?.webID) addressBooksData.contactWebIDs.set(contact.webID.trim(), contact.uri);
139
141
  });
140
142
  return addressBooksData;
141
143
  }
@@ -164,11 +166,7 @@ async function getContactData(store, subject) {
164
166
  phoneNumber
165
167
  });
166
168
  });
167
-
168
- // Need to fix below right now don't want to add
169
- // while testing
170
- // const webID = subject.value
171
- const webID = 'https://testingsolidos.solidcommunity.net/profile/card#me';
169
+ const webID = subject.value;
172
170
  return {
173
171
  name,
174
172
  emails,
@@ -181,6 +179,12 @@ async function addANewAddressBookUriToAddressBooks(context, contactsModule, addr
181
179
  let contactsAddressBook = null;
182
180
  try {
183
181
  const addressBook = await getAddressData(context, contactsModule, enteredAddressBookUri);
182
+ if (!addressBook) {
183
+ return {
184
+ addressBooksData,
185
+ addressBook: null
186
+ };
187
+ }
184
188
  contactsAddressBook = {
185
189
  name: addressBook.title,
186
190
  groups: addressBook.groups,
@@ -215,6 +219,7 @@ async function createContactInAddressBook(context, contactsModule, addressBooksD
215
219
  });
216
220
  } else {
217
221
  (0, _contactsErrors.addErrorToErrorDisplay)(context, _texts.groupIsRequired);
222
+ return;
218
223
  }
219
224
  await context.session.store.fetcher.load(contactUri);
220
225
  await addWebIDToContact(context, groupUris, contactUri, contactData.webID);
@@ -340,8 +345,8 @@ function refreshButton(context, addressBooksData, contactData) {
340
345
  }
341
346
  }
342
347
  function checkIfContactExistsByWebID(addressBooksData, subjectUri) {
343
- if (addressBooksData.contactWebIDs.has(subjectUri)) return true;
344
- return false;
348
+ if (!subjectUri?.trim()) return false;
349
+ return addressBooksData.contactWebIDs.has(subjectUri.trim());
345
350
  }
346
351
  function checkIfContactExistsByName(addressBooksData, name) {
347
352
  let normalizedContactName = null;
@@ -4897,11 +4897,6 @@ ___CSS_LOADER_EXPORT___.push([module.id, `#add-to-contacts-button-container {
4897
4897
  justify-content: center;
4898
4898
  align-items: center;
4899
4899
  line-height: 1;
4900
-
4901
- /* width: 100% !important;
4902
- max-width: 100% !important;
4903
- margin-left: 0;
4904
- align-self: stretch !important; */
4905
4900
  }
4906
4901
 
4907
4902
  .contactsNewGroupForm {
@@ -5083,20 +5078,19 @@ ___CSS_LOADER_EXPORT___.push([module.id, `#add-to-contacts-button-container {
5083
5078
  z-index: 8;
5084
5079
  }
5085
5080
 
5086
- .contactsAddressBookSelector.contactsOverlayActive > *:not(.contactsPopupOverlay):not(.contactsPopupMessage):not(.contactsContactExistsAlert) {
5081
+ .contactsAddressBookSelector.contactsOverlayActive > *:not(.contactsPopupOverlay):not(.contactsPopupDialog):not(.contactsContactExistsAlert) {
5087
5082
  pointer-events: none;
5088
5083
  user-select: none;
5089
5084
  }
5090
5085
 
5091
- .contactsAddressBookSelector.contactsOverlayActive .contactsPopupMessage,
5086
+ .contactsAddressBookSelector.contactsOverlayActive .contactsPopupDialog,
5092
5087
  .contactsAddressBookSelector.contactsOverlayActive .contactsContactExistsAlert,
5093
- .contactsAddressBookSelector.contactsOverlayActive .contactsPopupMessage *,
5088
+ .contactsAddressBookSelector.contactsOverlayActive .contactsPopupDialog *,
5094
5089
  .contactsAddressBookSelector.contactsOverlayActive .contactsContactExistsAlert * {
5095
5090
  pointer-events: auto;
5096
5091
  }
5097
5092
 
5098
- /* SAM Look at finding a better name than popupMessage */
5099
- .contactsPopupMessage {
5093
+ .contactsPopupDialog {
5100
5094
  background: #F5F5F5 !important;
5101
5095
  color: var(--color-primary);
5102
5096
  padding: 2em;
@@ -5119,7 +5113,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `#add-to-contacts-button-container {
5119
5113
  padding-top: 3rem !important;
5120
5114
  }
5121
5115
 
5122
- .contactsPopupMessage {
5116
+ .contactsPopupDialog {
5123
5117
  max-width: 92vw;
5124
5118
  max-height: 78vh;
5125
5119
  padding: 1.25rem;
@@ -5188,7 +5182,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `#add-to-contacts-button-container {
5188
5182
  line-height: 1;
5189
5183
  }
5190
5184
 
5191
- `, "",{"version":3,"sources":["webpack://./src/styles/ContactsCard.css"],"names":[],"mappings":"AAAA;EACE,kBAAkB;EAClB,iBAAiB;AACnB;;AAEA;EACE,kBAAkB;EAClB,2BAA2B;EAC3B,YAAY;EACZ,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,wCAAwC;EACxC,4CAA4C;EAC5C,mBAAmB;EACnB,2BAA2B;EAC3B,gBAAgB;EAChB,oBAAoB;EACpB,sBAAsB;EACtB,QAAQ;EACR,aAAa;EACb,sBAAsB;EACtB,gBAAgB;EAChB,kBAAkB;EAClB,QAAQ;EACR,YAAY;EACZ,SAAS;EACT,gCAAgC;EAChC,aAAa;EACb,SAAS;EACT,YAAY;EACZ,UAAU;AACZ;;AAEA;EACE;IACE,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,gCAAgC;EAClC;;EAEA;IACE,iCAAiC,EAAE,6CAA6C;IAChF,8BAA8B;IAC9B,sBAAsB;IACtB,gBAAgB;IAChB,gBAAgB;IAChB,kBAAkB;EACpB;;EAEA;IACE,6BAA6B;IAC7B,eAAe;IACf,4BAA4B;IAC5B,6BAA6B;IAC7B,6BAA6B;IAC7B,+BAA+B;IAC/B,kCAAkC;IAClC,8BAA8B;IAC9B,kBAAkB;EACpB;AACF;;AAEA;EACE;IACE,WAAW;IACX,eAAe;IACf,YAAY;IACZ,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,gCAAgC;IAChC,iBAAiB;IACjB,eAAe;IACf,kBAAkB;EACpB;;EAEA;IACE,sBAAsB;IACtB,YAAY;IACZ,eAAe;EACjB;EACA;;IAEE,YAAY;IACZ,0BAA0B;IAC1B,WAAW;EACb;AACF;;AAEA;EACE,WAAW;EACX,wCAAwC;EACxC,mBAAmB;EACnB,sBAAsB;EACtB,YAAY;EACZ,QAAQ;EACR,aAAa;EACb,sBAAsB;EACtB,2CAA2C;AAC7C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,uBAAuB;EACvB,2CAA2C;EAC3C,0BAA0B;EAC1B,wCAAwC;AAC1C;;AAEA;EACE,cAAc;EACd,0EAA0E;EAC1E,sCAAsC;EACtC,kBAAkB;EAClB,gBAAgB;EAChB,eAAe;EACf,mBAAmB;AACrB;;AAEA;EACE,cAAc;EACd,0EAA0E;EAC1E,sCAAsC;EACtC,kBAAkB;EAClB,gBAAgB;EAChB,eAAe;EACf,mBAAmB;AACrB;;AAEA;EACE,gCAAgC;EAChC,YAAY;EACZ,wCAAwC;EACxC,gCAAgC;EAChC,eAAe;AACjB;;AAEA;EACE,2BAA2B;EAC3B,wCAAwC;AAC1C;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;;EAEE,kDAAkD;EAClD,8BAA8B;EAC9B,0EAA0E;EAC1E,UAAU;AACZ;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,aAAa;EACb,wCAAwC;EACxC,2BAA2B;EAC3B,sBAAsB;EACtB,SAAS;EACT,aAAa;EACb,mBAAmB;EACnB,0BAA0B;EAC1B,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;EACE,mCAAmC;EACnC,uCAAuC;EACvC,YAAY;EACZ,sBAAsB;EACtB,2BAA2B;EAC3B,QAAQ;EACR,aAAa;EACb,mBAAmB;EACnB,sBAAsB;;AAExB;;AAEA;EACE,WAAW;EACX,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,sBAAsB;EACtB,QAAQ;EACR,aAAa;EACb,eAAe;EACf,sBAAsB;EACtB,oBAAoB;AACtB;;AAEA;EACE,gCAAgC;EAChC,eAAe;EACf,YAAY;EACZ,cAAc;EACd,sBAAsB;EACtB,YAAY;EACZ,SAAS;EACT,wCAAwC;EACxC,sBAAsB;AACxB;;AAEA;EACE,UAAU;EACV,YAAY;EACZ,cAAc;EACd,+BAA+B;EAC/B,iBAAiB;EACjB,oBAAoB;EACpB,uBAAuB;EACvB,mBAAmB;EACnB,cAAc;;KAEX;;;qCAGgC;AACrC;;AAEA;EACE,sBAAsB;EACtB,8BAA8B;EAC9B,QAAQ;EACR,aAAa;EACb,sBAAsB;AACxB;;AAEA;EACE,mCAAmC;EACnC,YAAY;EACZ,0BAA0B;EAC1B,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;EACb,sBAAsB;EACtB,2CAA2C;AAC7C;;AAEA;EACE,WAAW;EACX,iCAAiC;EACjC,wCAAwC;EACxC,gBAAgB;EAChB,sBAAsB;EACtB,QAAQ;EACR,aAAa;EACb,sBAAsB;AACxB;;AAEA;EACE,WAAW;EACX,iCAAiC;EACjC,gBAAgB;EAChB,wCAAwC;EACxC,sBAAsB;EACtB,QAAQ;EACR,aAAa;EACb,sBAAsB;AACxB;;AAEA;EACE,UAAU;EACV,oBAAoB;EACpB,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;EAChB,aAAa;EACb,cAAc;EACd,wCAAwC;EACxC,2CAA2C;EAC3C,UAAU;AACZ;;AAEA;EACE,wBAAwB;EACxB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,kBAAkB;EAClB,WAAW;EACX,aAAa;EACb,uBAAuB;EACvB,cAAc;EACd,8BAA8B;EAC9B,YAAY;EACZ,8BAA8B;EAC9B,eAAe;EACf,UAAU;AACZ;;AAEA;EACE,6BAA6B;EAC7B,wCAAwC;EACxC,yBAAyB;EACzB,YAAY;EACZ,8BAA8B;EAC9B,kBAAkB;EAClB,MAAM;EACN,QAAQ;EACR,qBAAqB;EACrB,sBAAsB;EACtB,uBAAuB;EACvB,eAAe;EACf,8BAA8B;EAC9B,cAAc;AAChB;;AAEA;EACE,qDAAqD;AACvD;;AAEA;;EAEE,kDAAkD;EAClD,8BAA8B;EAC9B,0EAA0E;EAC1E,UAAU;AACZ;;AAEA;EACE,2BAA2B;EAC3B,QAAQ;EACR,aAAa;EACb,sBAAsB;AACxB;;AAEA;EACE,cAAc;EACd,mBAAmB;EACnB,cAAc;EACd,kBAAkB;EAClB,gBAAgB;EAChB,0BAA0B;EAC1B,eAAe;EACf,mBAAmB;AACrB;;AAEA;EACE,2BAA2B;EAC3B,0EAA0E;AAC5E;;AAEA;CACC,0EAA0E;CAC1E,2BAA2B;AAC5B;;AAEA;EACE,8BAA8B;EAC9B,cAAc;EACd,aAAa;EACb,wCAAwC;EACxC,4CAA4C;EAC5C,WAAW;EACX,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,gCAAgC;EAChC,YAAY;EACZ,aAAa;EACb,sBAAsB;EACtB,mBAAmB;EACnB,SAAS;EACT,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,iBAAiB;EACjB,uBAAuB;EACvB,mBAAmB;EACnB,SAAS;EACT,WAAW;AACb;;AAEA;;EAEE,+BAA+B;EAC/B,sBAAsB;EACtB,sBAAsB;EACtB,cAAc;EACd,SAAS;EACT,mBAAmB;AACrB;;AAEA;EACE,uBAAuB,EAAE,4CAA4C;AACvE;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,8BAA8B;EAC9B,UAAU;AACZ;;AAEA;EACE,oBAAoB;EACpB,iBAAiB;AACnB;;AAEA;;;;EAIE,oBAAoB;AACtB;;AAEA,yDAAyD;AACzD;EACE,8BAA8B;EAC9B,2BAA2B;EAC3B,YAAY;EACZ,wCAAwC;EACxC,4CAA4C;EAC5C,WAAW;EACX,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,gCAAgC;EAChC,WAAW;EACX,2BAA2B;EAC3B,8BAA8B;EAC9B,cAAc;EACd,sBAAsB;AACxB;;AAEA;EACE;IACE,4BAA4B;EAC9B;;EAEA;IACE,eAAe;IACf,gBAAgB;IAChB,gBAAgB;EAClB;AACF;;AAEA;EACE,gCAAgC;EAChC,YAAY;EACZ,wCAAwC;EACxC,0BAA0B;EAC1B,gCAAgC;EAChC,eAAe;AACjB;;AAEA;EACE,2BAA2B;EAC3B,wCAAwC;AAC1C;;AAEA;EACE,uBAAuB;EACvB,cAAc;EACd,wCAAwC;EACxC,0BAA0B;EAC1B,sBAAsB;EACtB,gCAAgC;EAChC,eAAe;AACjB;AACA;EACE,0EAA0E;EAC1E,2BAA2B;AAC7B;;AAEA;EACE,sBAAsB;EACtB,oBAAoB;EACpB,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,0EAA0E;EAC1E,sCAAsC;EACtC,kBAAkB;EAClB,gBAAgB;EAChB,eAAe;EACf,mBAAmB;AACrB;;AAEA;EACE,6BAA6B;EAC7B,iBAAiB;EACjB,mBAAmB;EACnB,UAAU;EACV,SAAS;EACT,2BAA2B;EAC3B,uBAAuB;EACvB,cAAc;EACd,8BAA8B;EAC9B,YAAY;EACZ,8BAA8B;EAC9B,eAAe;EACf,uBAAuB;EACvB,uBAAuB;EACvB,cAAc;AAChB","sourcesContent":["#add-to-contacts-button-container {\n position: relative;\n overflow: visible;\n}\n\n.contactsAddressBookSelector {\n width: fit-content;\n max-width: min(94vw, 48rem);\n min-width: 0;\n max-height: 80vh;\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\n background: #F0F0F0;\n color: var(--color-primary);\n padding-top: 4em;\n align-items: stretch;\n box-sizing: border-box;\n gap: 7px;\n display: flex;\n flex-direction: column;\n font-weight: 600;\n position: absolute;\n top: 54%;\n bottom: auto;\n left: 50%;\n transform: translate(-50%, -50%);\n margin-top: 0;\n margin: 0;\n z-index: 200;\n opacity: 1;\n}\n\n@media (max-width: 900px) {\n .contactsAddressBookSelector {\n top: 54%;\n bottom: auto;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .contactsAddressBookDetails {\n flex-direction: column !important; /* Stacks items vertically on small screens */\n align-items: center !important;\n width: 100% !important;\n max-height: 60vh;\n overflow-y: auto;\n overflow-x: hidden; \n }\n\n .contactsAddressBookCreationDiv .contactsNewContactCreationButton {\n width: fit-content !important;\n min-width: 10em;\n margin-left: auto !important;\n margin-right: auto !important;\n align-self: center !important;\n display: inline-flex !important;\n justify-content: center !important;\n align-items: center !important;\n text-align: center;\n }\n}\n\n@media (max-width: 333px) {\n .contactsAddressBookSelector {\n width: 96vw;\n max-width: 96vw;\n min-width: 0;\n top: 50%;\n bottom: auto;\n left: 50%;\n transform: translate(-50%, -50%);\n padding-top: 3rem;\n position: fixed;\n overflow-x: hidden;\n }\n\n .contactsAddressBookDetails {\n width: 100% !important;\n min-width: 0;\n padding: 0.5rem;\n }\n .contactsAddressBookList,\n .contactsGroupList {\n min-width: 0;\n max-width: 100% !important;\n width: 100%;\n }\n}\n\n.contactsAddressBookCreationDiv {\n width: 100%;\n border-radius: var(--border-radius-base);\n background: #F0F0F0;\n box-sizing: border-box;\n padding: 5px;\n gap: 5px;\n display: flex;\n flex-direction: column;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n}\n\n.contactsHelpersButtonDiv {\n display: flex;\n flex-direction: row;\n gap: var(--spacing-md);\n justify-content: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n padding: var(--spacing-md);\n border-radius: var(--border-radius-base);\n}\n\n.contactsAddressBookCreationButton {\n flex-shrink: 0;\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary) !important;\n border-radius: 8px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsAddressBookUriEntryButton {\n flex-shrink: 0;\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary) !important;\n border-radius: 8px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsActionButton {\n background: var(--color-primary);\n color: white;\n border-radius: var(--border-radius-base);\n transition: all 0.3s ease-in-out;\n cursor: pointer;\n}\n\n.contactsActionButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n}\n\n.contactsActionButton:active {\n box-shadow: 0 1px 2px white;\n}\n\n.contactsActionButton:focus,\n.contactsActionButton:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px white, 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1; \n}\n\n.contactsAddressBookDetails {\n width: 100%;\n min-width: 0;\n min-height: 0;\n border-radius: var(--border-radius-base);\n justify-content: flex-start;\n box-sizing: border-box;\n gap: 15px;\n display: flex;\n flex-direction: row;\n padding: var(--spacing-md);\n overflow-x: auto;\n overflow-y: auto;\n}\n\n.contactsAddressBookUriEntry {\n width: calc(100% - 1rem) !important;\n max-width: calc(100% - 1rem) !important;\n min-width: 0;\n box-sizing: border-box;\n padding-top: 3em !important;\n gap: 5px;\n display: flex;\n align-self: stretch;\n flex-direction: column;\n\n}\n\n.contactsAddressBookUriEntryForm {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n background: #F0F0F0;\n box-sizing: border-box;\n gap: 5px;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-items: stretch;\n}\n\n.contactsAddressBookUriInput {\n width: clamp(14rem, 60vw, 22rem);\n max-width: 100%;\n min-width: 0;\n flex: 0 0 auto;\n align-self: flex-start;\n padding: 5px;\n gap: 15px;\n border-radius: var(--border-radius-base);\n border: 1px solid #ccc;\n}\n\n.contactsAddressBookUriEntryAddButton {\n width: 10%;\n min-width: 0;\n max-width: 4em;\n align-self: flex-end !important;\n margin-left: auto;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n line-height: 1;\n\n /* width: 100% !important;\n max-width: 100% !important;\n margin-left: 0;\n align-self: stretch !important; */\n}\n\n.contactsNewGroupForm {\n box-sizing: border-box;\n padding-top: 2.5rem !important;\n gap: 5px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsCreateNewAddressBook {\n border-radius: var(--border-radius);\n color: white;\n padding: var(--spacing-md);\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n}\n\n.contactsAddressBookList {\n width: 100%;\n max-width: fit-content !important;\n box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);\n min-width: 200px;\n box-sizing: border-box;\n gap: 4px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsGroupList {\n width: auto;\n max-width: fit-content !important;\n min-width: 200px;\n box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);\n box-sizing: border-box;\n gap: 4px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsErrorDisplay {\n width: 90%;\n align-self: flex-end;\n padding: 5px;\n position: absolute;\n background: pink;\n display: none;\n color: #787878;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px; \n z-index: 3;\n}\n\n.contactsShowErrors {\n display: flex !important;\n flex-direction: row;\n justify-content: center;\n}\n.contactsCloseErrorDisplayButton {\n position: absolute;\n top: 0.2rem;\n right: 0.2rem;\n background: transparent;\n color: #787878;\n font-size: var(--font-size-xs);\n border: none;\n font-size: var(--font-size-sm);\n cursor: pointer;\n z-index: 4;\n}\n\n.contactsCloseButton {\n box-shadow: var(--box-shadow);\n border-radius: var(--border-radius-base);\n color: #787878 !important;\n padding: 1em;\n font-size: var(--font-size-sm);\n position: absolute;\n top: 0; \n right: 0;\n display: inline-block;\n width: auto !important;\n height: auto !important;\n cursor: pointer;\n font-size: var(--font-size-xs);\n line-height: 1;\n}\n\n.contactsCloseButton:hover {\n box-shadow: 0 2px 4px var(--color-primary) !important;\n}\n\n.contactsCloseButton:focus,\n.contactsCloseButton:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px white, 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n.contactsNewAddressForm {\n padding-top: 3em !important;\n gap: 5px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsButton {\n flex-shrink: 0;\n background: #F0F0F0;\n color: #787878;\n border-radius: 8px;\n text-align: left;\n padding: var(--spacing-md);\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsButton:hover {\n color: var(--color-primary);\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n} \n\n.contactsSelectedButton {\n background: color-mix(in srgb, var(--color-primary), white 60%) !important; \n color: var(--color-primary);\n}\n\n.contactsContactExistsAlert {\n background: #F0F0F0 !important;\n color: #787878;\n padding: 10px;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\n z-index: 10;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 300px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 15px; \n text-wrap: pretty;\n}\n\n.contactsContactExistsActions {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n gap: 10px;\n width: auto;\n}\n\n.contactsContactExistsActions .contactsConfirmButton,\n.contactsContactExistsActions .contactsCancelButton {\n display: inline-flex !important;\n width: auto !important;\n min-width: fit-content;\n flex: 0 0 auto;\n margin: 0;\n white-space: nowrap;\n}\n\n[role=\"alert\"] {\n border: none !important; /* Hides the element from all users and AT */\n}\n\n.contactsPopupOverlay {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.2);\n z-index: 8;\n}\n\n.contactsAddressBookSelector.contactsOverlayActive > *:not(.contactsPopupOverlay):not(.contactsPopupMessage):not(.contactsContactExistsAlert) {\n pointer-events: none;\n user-select: none;\n}\n\n.contactsAddressBookSelector.contactsOverlayActive .contactsPopupMessage,\n.contactsAddressBookSelector.contactsOverlayActive .contactsContactExistsAlert,\n.contactsAddressBookSelector.contactsOverlayActive .contactsPopupMessage *,\n.contactsAddressBookSelector.contactsOverlayActive .contactsContactExistsAlert * {\n pointer-events: auto;\n}\n\n/* SAM Look at finding a better name than popupMessage */\n.contactsPopupMessage {\n background: #F5F5F5 !important;\n color: var(--color-primary);\n padding: 2em;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\n z-index: 50;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: auto;\n max-width: min(92vw, 34rem);\n max-height: calc(100vh - 6rem);\n overflow: auto;\n box-sizing: border-box;\n}\n\n@media (max-width: 600px) {\n .contactsAddressBookUriEntry {\n padding-top: 3rem !important;\n }\n\n .contactsPopupMessage {\n max-width: 92vw;\n max-height: 78vh;\n padding: 1.25rem;\n }\n}\n\n.contactsConfirmButton {\n background: var(--color-primary);\n color: white;\n border-radius: var(--border-radius-base);\n padding: var(--spacing-md);\n transition: all 0.3s ease-in-out;\n cursor: pointer;\n}\n\n.contactsConfirmButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n}\n\n.contactsCancelButton {\n background: transparent;\n color: #787878;\n border-radius: var(--border-radius-base);\n padding: var(--spacing-md);\n border: 1px solid #ccc;\n transition: all 0.3s ease-in-out;\n cursor: pointer;\n}\n.contactsCancelButton:hover {\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary);\n} \n\n.contactsNewContactCreationButton {\n width: 10em !important;\n align-self: flex-end;\n line-height: 1;\n}\n\n.contactsCreateGroupCreationButton {\n flex-shrink: 0;\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary) !important;\n border-radius: 8px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsCloseButton {\n position: absolute !important;\n top: 0 !important;\n right: 0 !important;\n left: auto;\n margin: 0;\n align-self: auto !important;\n background: transparent;\n color: #787878;\n font-size: var(--font-size-xs);\n border: none;\n font-size: var(--font-size-sm);\n cursor: pointer;\n z-index: 100 !important;\n padding: 0.35rem 0.5rem;\n line-height: 1;\n}\n\n"],"sourceRoot":""}]);
5185
+ `, "",{"version":3,"sources":["webpack://./src/styles/ContactsCard.css"],"names":[],"mappings":"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","sourcesContent":["#add-to-contacts-button-container {\n position: relative;\n overflow: visible;\n}\n\n.contactsAddressBookSelector {\n width: fit-content;\n max-width: min(94vw, 48rem);\n min-width: 0;\n max-height: 80vh;\n overflow-y: auto;\n overflow-x: hidden;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\n background: #F0F0F0;\n color: var(--color-primary);\n padding-top: 4em;\n align-items: stretch;\n box-sizing: border-box;\n gap: 7px;\n display: flex;\n flex-direction: column;\n font-weight: 600;\n position: absolute;\n top: 54%;\n bottom: auto;\n left: 50%;\n transform: translate(-50%, -50%);\n margin-top: 0;\n margin: 0;\n z-index: 200;\n opacity: 1;\n}\n\n@media (max-width: 900px) {\n .contactsAddressBookSelector {\n top: 54%;\n bottom: auto;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n .contactsAddressBookDetails {\n flex-direction: column !important; /* Stacks items vertically on small screens */\n align-items: center !important;\n width: 100% !important;\n max-height: 60vh;\n overflow-y: auto;\n overflow-x: hidden; \n }\n\n .contactsAddressBookCreationDiv .contactsNewContactCreationButton {\n width: fit-content !important;\n min-width: 10em;\n margin-left: auto !important;\n margin-right: auto !important;\n align-self: center !important;\n display: inline-flex !important;\n justify-content: center !important;\n align-items: center !important;\n text-align: center;\n }\n}\n\n@media (max-width: 333px) {\n .contactsAddressBookSelector {\n width: 96vw;\n max-width: 96vw;\n min-width: 0;\n top: 50%;\n bottom: auto;\n left: 50%;\n transform: translate(-50%, -50%);\n padding-top: 3rem;\n position: fixed;\n overflow-x: hidden;\n }\n\n .contactsAddressBookDetails {\n width: 100% !important;\n min-width: 0;\n padding: 0.5rem;\n }\n .contactsAddressBookList,\n .contactsGroupList {\n min-width: 0;\n max-width: 100% !important;\n width: 100%;\n }\n}\n\n.contactsAddressBookCreationDiv {\n width: 100%;\n border-radius: var(--border-radius-base);\n background: #F0F0F0;\n box-sizing: border-box;\n padding: 5px;\n gap: 5px;\n display: flex;\n flex-direction: column;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n}\n\n.contactsHelpersButtonDiv {\n display: flex;\n flex-direction: row;\n gap: var(--spacing-md);\n justify-content: center;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n padding: var(--spacing-md);\n border-radius: var(--border-radius-base);\n}\n\n.contactsAddressBookCreationButton {\n flex-shrink: 0;\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary) !important;\n border-radius: 8px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsAddressBookUriEntryButton {\n flex-shrink: 0;\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary) !important;\n border-radius: 8px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsActionButton {\n background: var(--color-primary);\n color: white;\n border-radius: var(--border-radius-base);\n transition: all 0.3s ease-in-out;\n cursor: pointer;\n}\n\n.contactsActionButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n}\n\n.contactsActionButton:active {\n box-shadow: 0 1px 2px white;\n}\n\n.contactsActionButton:focus,\n.contactsActionButton:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px white, 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1; \n}\n\n.contactsAddressBookDetails {\n width: 100%;\n min-width: 0;\n min-height: 0;\n border-radius: var(--border-radius-base);\n justify-content: flex-start;\n box-sizing: border-box;\n gap: 15px;\n display: flex;\n flex-direction: row;\n padding: var(--spacing-md);\n overflow-x: auto;\n overflow-y: auto;\n}\n\n.contactsAddressBookUriEntry {\n width: calc(100% - 1rem) !important;\n max-width: calc(100% - 1rem) !important;\n min-width: 0;\n box-sizing: border-box;\n padding-top: 3em !important;\n gap: 5px;\n display: flex;\n align-self: stretch;\n flex-direction: column;\n\n}\n\n.contactsAddressBookUriEntryForm {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n background: #F0F0F0;\n box-sizing: border-box;\n gap: 5px;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-items: stretch;\n}\n\n.contactsAddressBookUriInput {\n width: clamp(14rem, 60vw, 22rem);\n max-width: 100%;\n min-width: 0;\n flex: 0 0 auto;\n align-self: flex-start;\n padding: 5px;\n gap: 15px;\n border-radius: var(--border-radius-base);\n border: 1px solid #ccc;\n}\n\n.contactsAddressBookUriEntryAddButton {\n width: 10%;\n min-width: 0;\n max-width: 4em;\n align-self: flex-end !important;\n margin-left: auto;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n line-height: 1;\n}\n\n.contactsNewGroupForm {\n box-sizing: border-box;\n padding-top: 2.5rem !important;\n gap: 5px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsCreateNewAddressBook {\n border-radius: var(--border-radius);\n color: white;\n padding: var(--spacing-md);\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;\n}\n\n.contactsAddressBookList {\n width: 100%;\n max-width: fit-content !important;\n box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);\n min-width: 200px;\n box-sizing: border-box;\n gap: 4px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsGroupList {\n width: auto;\n max-width: fit-content !important;\n min-width: 200px;\n box-shadow: 2px 0 5px rgba(0, 0, 0, 0.1);\n box-sizing: border-box;\n gap: 4px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsErrorDisplay {\n width: 90%;\n align-self: flex-end;\n padding: 5px;\n position: absolute;\n background: pink;\n display: none;\n color: #787878;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px; \n z-index: 3;\n}\n\n.contactsShowErrors {\n display: flex !important;\n flex-direction: row;\n justify-content: center;\n}\n.contactsCloseErrorDisplayButton {\n position: absolute;\n top: 0.2rem;\n right: 0.2rem;\n background: transparent;\n color: #787878;\n font-size: var(--font-size-xs);\n border: none;\n font-size: var(--font-size-sm);\n cursor: pointer;\n z-index: 4;\n}\n\n.contactsCloseButton {\n box-shadow: var(--box-shadow);\n border-radius: var(--border-radius-base);\n color: #787878 !important;\n padding: 1em;\n font-size: var(--font-size-sm);\n position: absolute;\n top: 0; \n right: 0;\n display: inline-block;\n width: auto !important;\n height: auto !important;\n cursor: pointer;\n font-size: var(--font-size-xs);\n line-height: 1;\n}\n\n.contactsCloseButton:hover {\n box-shadow: 0 2px 4px var(--color-primary) !important;\n}\n\n.contactsCloseButton:focus,\n.contactsCloseButton:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px white, 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n.contactsNewAddressForm {\n padding-top: 3em !important;\n gap: 5px;\n display: flex;\n flex-direction: column;\n}\n\n.contactsButton {\n flex-shrink: 0;\n background: #F0F0F0;\n color: #787878;\n border-radius: 8px;\n text-align: left;\n padding: var(--spacing-md);\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsButton:hover {\n color: var(--color-primary);\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n} \n\n.contactsSelectedButton {\n background: color-mix(in srgb, var(--color-primary), white 60%) !important; \n color: var(--color-primary);\n}\n\n.contactsContactExistsAlert {\n background: #F0F0F0 !important;\n color: #787878;\n padding: 10px;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\n z-index: 10;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 300px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 15px; \n text-wrap: pretty;\n}\n\n.contactsContactExistsActions {\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: center;\n align-items: center;\n gap: 10px;\n width: auto;\n}\n\n.contactsContactExistsActions .contactsConfirmButton,\n.contactsContactExistsActions .contactsCancelButton {\n display: inline-flex !important;\n width: auto !important;\n min-width: fit-content;\n flex: 0 0 auto;\n margin: 0;\n white-space: nowrap;\n}\n\n[role=\"alert\"] {\n border: none !important; /* Hides the element from all users and AT */\n}\n\n.contactsPopupOverlay {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.2);\n z-index: 8;\n}\n\n.contactsAddressBookSelector.contactsOverlayActive > *:not(.contactsPopupOverlay):not(.contactsPopupDialog):not(.contactsContactExistsAlert) {\n pointer-events: none;\n user-select: none;\n}\n\n.contactsAddressBookSelector.contactsOverlayActive .contactsPopupDialog,\n.contactsAddressBookSelector.contactsOverlayActive .contactsContactExistsAlert,\n.contactsAddressBookSelector.contactsOverlayActive .contactsPopupDialog *,\n.contactsAddressBookSelector.contactsOverlayActive .contactsContactExistsAlert * {\n pointer-events: auto;\n}\n\n.contactsPopupDialog {\n background: #F5F5F5 !important;\n color: var(--color-primary);\n padding: 2em;\n border-radius: var(--border-radius-base);\n box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;\n z-index: 50;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: auto;\n max-width: min(92vw, 34rem);\n max-height: calc(100vh - 6rem);\n overflow: auto;\n box-sizing: border-box;\n}\n\n@media (max-width: 600px) {\n .contactsAddressBookUriEntry {\n padding-top: 3rem !important;\n }\n\n .contactsPopupDialog {\n max-width: 92vw;\n max-height: 78vh;\n padding: 1.25rem;\n }\n}\n\n.contactsConfirmButton {\n background: var(--color-primary);\n color: white;\n border-radius: var(--border-radius-base);\n padding: var(--spacing-md);\n transition: all 0.3s ease-in-out;\n cursor: pointer;\n}\n\n.contactsConfirmButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n}\n\n.contactsCancelButton {\n background: transparent;\n color: #787878;\n border-radius: var(--border-radius-base);\n padding: var(--spacing-md);\n border: 1px solid #ccc;\n transition: all 0.3s ease-in-out;\n cursor: pointer;\n}\n.contactsCancelButton:hover {\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary);\n} \n\n.contactsNewContactCreationButton {\n width: 10em !important;\n align-self: flex-end;\n line-height: 1;\n}\n\n.contactsCreateGroupCreationButton {\n flex-shrink: 0;\n background: color-mix(in srgb, var(--color-primary), white 85%) !important; \n color: var(--color-primary) !important;\n border-radius: 8px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.contactsCloseButton {\n position: absolute !important;\n top: 0 !important;\n right: 0 !important;\n left: auto;\n margin: 0;\n align-self: auto !important;\n background: transparent;\n color: #787878;\n font-size: var(--font-size-xs);\n border: none;\n font-size: var(--font-size-sm);\n cursor: pointer;\n z-index: 100 !important;\n padding: 0.35rem 0.5rem;\n line-height: 1;\n}\n\n"],"sourceRoot":""}]);
5192
5186
  // Exports
5193
5187
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
5194
5188
 
@@ -11235,7 +11229,7 @@ const createAddressBookUriEntryDiv = (context, contactsModule, addressBooksData,
11235
11229
  addressBookUriEntryDiv.setAttribute('aria-label', 'Address book URI entry div');
11236
11230
  addressBookUriEntryDiv.setAttribute('aria-describedby', 'addressbook-uri-entry-div');
11237
11231
  addressBookUriEntryDiv.setAttribute('id', 'contacts-addressbook-uri-entry');
11238
- addressBookUriEntryDiv.classList.add('contactsPopupMessage', 'contactsAddressBookUriEntry');
11232
+ addressBookUriEntryDiv.classList.add('contactsPopupDialog', 'contactsAddressBookUriEntry');
11239
11233
  const closeButton = createCloseButton(context, addressBookUriEntryDiv, 'contactsAddressBookUriEntryCloseButton');
11240
11234
  addressBookUriEntryDiv.appendChild(closeButton);
11241
11235
  addressBookUriEntryDiv.appendChild(createAddressBookUriEntryForm(context, contactsModule, addressBooksData, contactData));
@@ -11567,7 +11561,7 @@ const createNewAddressBookForm = (context, addressBooksData, contactsModule, con
11567
11561
  newAddressBookForm.method = 'post';
11568
11562
  newAddressBookForm.innerHTML = 'Create a new address book';
11569
11563
  newAddressBookForm.setAttribute('id', 'new-addressbook-form');
11570
- newAddressBookForm.classList.add('contactsPopupMessage', 'contactsNewAddressForm');
11564
+ newAddressBookForm.classList.add('contactsPopupDialog', 'contactsNewAddressForm');
11571
11565
  const addressBookNameLabel = context.dom.createElement('label');
11572
11566
  addressBookNameLabel.classList.add('label');
11573
11567
  addressBookNameLabel.setAttribute('for', 'addressBookNameInput');
@@ -11691,7 +11685,7 @@ const createGroupNameForm = (context, contactsModule, addressBooksData, contactD
11691
11685
  newGroupForm.addEventListener('submit', addGroupEventListener);
11692
11686
  newGroupForm.innerHTML = 'Create a new group';
11693
11687
  newGroupForm.setAttribute('id', 'new-group-form');
11694
- newGroupForm.classList.add('contactsPopupMessage', 'contactsNewGroupForm');
11688
+ newGroupForm.classList.add('contactsPopupDialog', 'contactsNewGroupForm');
11695
11689
  const groupNameLabel = context.dom.createElement('label');
11696
11690
  groupNameLabel.classList.add('label');
11697
11691
  groupNameLabel.setAttribute('for', 'groupNameInput');
@@ -11850,7 +11844,7 @@ const removePopupOverlayIfNoPopup = (context) => {
11850
11844
  const selectorDialog = context.dom.getElementById('contacts-selector-dialog');
11851
11845
  if (!selectorDialog)
11852
11846
  return;
11853
- const activePopup = selectorDialog.querySelector('.contactsPopupMessage, .contactsContactExistsAlert');
11847
+ const activePopup = selectorDialog.querySelector('.contactsPopupDialog, .contactsContactExistsAlert');
11854
11848
  if (activePopup)
11855
11849
  return;
11856
11850
  const overlay = selectorDialog.querySelector(`#${CONTACTS_POPUP_OVERLAY_ID}`);
@@ -11966,9 +11960,11 @@ async function getAddressBooks(context, contactsModule) {
11966
11960
  privateUris: []
11967
11961
  };
11968
11962
  // let addressBookUris = await contactsModule.listAddressBooks(me.value)
11969
- const publicAddressBookPromises = await addressBookUris.publicUris.map(addressBook => getAddressData(context, contactsModule, addressBook));
11963
+ const publicAddressBookPromises = addressBookUris.publicUris.map(addressBook => getAddressData(context, contactsModule, addressBook));
11970
11964
  const publicAddressBooksData = await Promise.all(publicAddressBookPromises);
11971
11965
  publicAddressBooksData.map((addressBook) => {
11966
+ if (!addressBook)
11967
+ return;
11972
11968
  addressBooksData.public.set(addressBook.uri, {
11973
11969
  name: addressBook.title,
11974
11970
  groups: addressBook.groups,
@@ -11982,6 +11978,8 @@ async function getAddressBooks(context, contactsModule) {
11982
11978
  const privateAddressBookPromises = addressBookUris.privateUris.map(addressBook => getAddressData(context, contactsModule, addressBook));
11983
11979
  const privateAddressBooksData = await Promise.all(privateAddressBookPromises);
11984
11980
  privateAddressBooksData.map((addressBook) => {
11981
+ if (!addressBook)
11982
+ return;
11985
11983
  addressBooksData.private.set(addressBook.uri, {
11986
11984
  name: addressBook.title,
11987
11985
  groups: addressBook.groups,
@@ -12016,8 +12014,8 @@ async function processContactWebIDs(context, addressBooksData, allContacts) {
12016
12014
  const contactPromises = allContacts.map(getWebID.bind(null, context));
12017
12015
  const results = await Promise.all(contactPromises);
12018
12016
  results.map((contact) => {
12019
- if (contact)
12020
- addressBooksData.contactWebIDs.set(contact.webID, contact.uri);
12017
+ if (contact === null || contact === void 0 ? void 0 : contact.webID)
12018
+ addressBooksData.contactWebIDs.set(contact.webID.trim(), contact.uri);
12021
12019
  });
12022
12020
  return addressBooksData;
12023
12021
  }
@@ -12040,10 +12038,7 @@ async function getContactData(store, subject) {
12040
12038
  type = store.any(node, external_UI_.ns.rdf('type'), null, subject.doc());
12041
12039
  phoneNumbers.push({ type, phoneNumber });
12042
12040
  });
12043
- // Need to fix below right now don't want to add
12044
- // while testing
12045
- // const webID = subject.value
12046
- const webID = 'https://testingsolidos.solidcommunity.net/profile/card#me';
12041
+ const webID = subject.value;
12047
12042
  return {
12048
12043
  name,
12049
12044
  emails,
@@ -12056,6 +12051,9 @@ async function addANewAddressBookUriToAddressBooks(context, contactsModule, addr
12056
12051
  let contactsAddressBook = null;
12057
12052
  try {
12058
12053
  const addressBook = await getAddressData(context, contactsModule, enteredAddressBookUri);
12054
+ if (!addressBook) {
12055
+ return { addressBooksData, addressBook: null };
12056
+ }
12059
12057
  contactsAddressBook = {
12060
12058
  name: addressBook.title,
12061
12059
  groups: addressBook.groups,
@@ -12085,6 +12083,7 @@ async function createContactInAddressBook(context, contactsModule, addressBooksD
12085
12083
  }
12086
12084
  else {
12087
12085
  addErrorToErrorDisplay(context, groupIsRequired);
12086
+ return;
12088
12087
  }
12089
12088
  await context.session.store.fetcher.load(contactUri);
12090
12089
  await addWebIDToContact(context, groupUris, contactUri, contactData.webID);
@@ -12235,9 +12234,9 @@ function refreshButton(context, addressBooksData, contactData) {
12235
12234
  }
12236
12235
  }
12237
12236
  function checkIfContactExistsByWebID(addressBooksData, subjectUri) {
12238
- if (addressBooksData.contactWebIDs.has(subjectUri))
12239
- return true;
12240
- return false;
12237
+ if (!(subjectUri === null || subjectUri === void 0 ? void 0 : subjectUri.trim()))
12238
+ return false;
12239
+ return addressBooksData.contactWebIDs.has(subjectUri.trim());
12241
12240
  }
12242
12241
  function checkIfContactExistsByName(addressBooksData, name) {
12243
12242
  let normalizedContactName = null;
@@ -13269,16 +13268,16 @@ const createAddMeToYourContactsButton = async (subject, context) => {
13269
13268
  needsBorder: true,
13270
13269
  });
13271
13270
  button.setAttribute('id', 'add-to-contacts-button');
13272
- //button.refresh = refreshButton(context, subject, addressBooksData)
13273
13271
  button.refresh = refreshButton();
13274
13272
  function refreshButton() {
13275
13273
  if (checkIfAnyUserLoggedIn(me)) {
13276
- const contactExistsByWebID = checkIfContactExistsByWebID(addressBooksData, contactData.webID);
13277
- const contactExistsByName = checkIfContactExistsByName(addressBooksData, contactData.name);
13274
+ const contactExistsByWebID = (contactData) ? checkIfContactExistsByWebID(addressBooksData, contactData.webID) : false;
13275
+ const contactExistsByName = (contactData) ? checkIfContactExistsByName(addressBooksData, contactData.name) : false;
13278
13276
  if (contactExistsByWebID) {
13279
13277
  //logged in and friend exists or friend was just added
13280
13278
  button.innerHTML = contactExistsAlreadyButtonText.toUpperCase();
13281
13279
  button.onclick = null;
13280
+ button.setAttribute('disabled', 'true');
13282
13281
  }
13283
13282
  else if (contactExistsByName) {
13284
13283
  button.innerHTML = contactExistsAlreadyByNameButtonText.toUpperCase();