profile-pane 3.1.3 → 3.1.4
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.
- package/lib/FriendList.d.ts +0 -1
- package/lib/FriendList.d.ts.map +1 -1
- package/lib/FriendList.js +5 -33
- package/lib/SocialPresenter.js +1 -1
- package/lib/addMeToYourFriends.d.ts +4 -3
- package/lib/addMeToYourFriends.d.ts.map +1 -1
- package/lib/addMeToYourFriends.js +25 -9
- package/lib/editProfilePane/EditCVCard.d.ts.map +1 -1
- package/lib/editProfilePane/EditCVCard.js +2 -7
- package/lib/editProfilePane/EditCommunitiesCard.d.ts +3 -1
- package/lib/editProfilePane/EditCommunitiesCard.d.ts.map +1 -1
- package/lib/editProfilePane/EditCommunitiesCard.js +58 -23
- package/lib/editProfilePane/EditFriendsCard.d.ts +3 -1
- package/lib/editProfilePane/EditFriendsCard.d.ts.map +1 -1
- package/lib/editProfilePane/EditFriendsCard.js +58 -23
- package/lib/editProfilePane/EditOtherPreferences.js +1 -1
- package/lib/editProfilePane/EditProfileView.d.ts +1 -1
- package/lib/editProfilePane/EditProfileView.d.ts.map +1 -1
- package/lib/editProfilePane/EditProfileView.js +7 -3
- package/lib/editProfilePane/EditSocialCard.d.ts.map +1 -1
- package/lib/editProfilePane/EditSocialCard.js +2 -7
- package/lib/editProfilePane/editProfilePresenter.d.ts +4 -0
- package/lib/editProfilePane/editProfilePresenter.d.ts.map +1 -0
- package/lib/editProfilePane/editProfilePresenter.js +108 -0
- package/lib/profile-pane.js +1005 -340
- package/lib/profile-pane.js.map +1 -1
- package/lib/profile-pane.min.js +45 -46
- package/lib/profile-pane.min.js.map +1 -1
- package/lib/rdfFormsHelper.d.ts +1 -0
- package/lib/rdfFormsHelper.d.ts.map +1 -1
- package/lib/rdfFormsHelper.js +125 -0
- package/lib/styles/ProfileCard.css +6 -0
- package/lib/styles/ProfileView.css +3 -5
- package/lib/styles/editProfile.css +62 -0
- package/lib/styles/profileRDFFormsEnforced.css +427 -0
- package/lib/styles/utilities.css +30 -1
- package/lib/texts.d.ts +5 -5
- package/lib/texts.d.ts.map +1 -1
- package/lib/texts.js +5 -5
- package/package.json +9 -6
- package/lib/styles/rdfFormsEnforced.css +0 -186
package/lib/profile-pane.min.js
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("UI"),require("SolidLogic"),require("rdflib")):"function"==typeof define&&define.amd?define(["UI","SolidLogic","rdflib"],e):"object"==typeof exports?exports.ProfilePane=e(require("UI"),require("SolidLogic"),require("rdflib")):n.ProfilePane=e(n.UI,n.SolidLogic,n.rdflib)}(this,(n,e,t)=>(()=>{var i={1267(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvRole {\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0.2em;\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n","",{version:3,sources:["webpack://./src/styles/CVCard.css"],names:[],mappings:"AAAA,eAAe;AACf,2DAA2D;;AAE3D;EACE,qBAAqB;AACvB;;AAEA;EACE,2BAA2B;EAC3B,gCAAgC;EAChC,oCAAoC;EACpC,aAAa;EACb,sBAAsB;EACtB,UAAU;AACZ;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;AAC7B;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;EAC3B,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;EACE,wBAAwB;EACxB,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,gCAAgC;EAChC,iDAAiD;EACjD,iCAAiC;AACnC",sourcesContent:["/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvRole {\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0.2em;\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n"],sourceRoot:""}]);const s=a},3750(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n","",{version:3,sources:["webpack://./src/styles/ChatWithMe.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,qFAAqF;;AAErF;EACE,gBAAgB;AAClB",sourcesContent:["/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n"],sourceRoot:""}]);const s=a},1666(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* FriendList.css */\n/* Uses utilities: .list-reset, .section-title, .zebra-stripe, .flex, .gap-xs, .mb-md */\n\n.friendItem {\n padding: var(--spacing-xs) 0;\n font-size: 1em;\n color: var(--color-text-muted);\n}\n\n.friendItem:last-child {\n border-bottom: none;\n}\n","",{version:3,sources:["webpack://./src/styles/FriendList.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,uFAAuF;;AAEvF;EACE,4BAA4B;EAC5B,cAAc;EACd,8BAA8B;AAChC;;AAEA;EACE,mBAAmB;AACrB",sourcesContent:["/* FriendList.css */\n/* Uses utilities: .list-reset, .section-title, .zebra-stripe, .flex, .gap-xs, .mb-md */\n\n.friendItem {\n padding: var(--spacing-xs) 0;\n font-size: 1em;\n color: var(--color-text-muted);\n}\n\n.friendItem:last-child {\n border-bottom: none;\n}\n"],sourceRoot:""}]);const s=a},1937(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.image {\n width: 160px;\n height: 160px;\n border-radius: 50%;\n object-fit: cover;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n}\n\n.image-alt {\n width: 160px;\n height: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n color: var(--color-text-secondary);\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.intro {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n margin-bottom: var(--spacing-xs);\n max-width: 40ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.buttonSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n.qrCodeSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n","",{version:3,sources:["webpack://./src/styles/ProfileCard.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,oKAAoK;;AAEpK;EACE,wBAAwB;AAC1B;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,iBAAiB;EACjB,gCAAgC;EAChC,gCAAgC;EAChC,sCAAsC;EACtC,gCAAgC;EAChC,sBAAsB;AACxB;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;EAClB,gCAAgC;EAChC,gCAAgC;EAChC,sCAAsC;EACtC,gCAAgC;EAChC,sBAAsB;EACtB,kCAAkC;AACpC;;AAEA;EACE,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,0BAA0B;EAC1B,4BAA4B;EAC5B,SAAS;EACT,0CAA0C;AAC5C;;AAEA;EACE,kCAAkC;EAClC,gCAAgC;EAChC,oCAAoC;EACpC,gCAAgC;EAChC,eAAe;EACf,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,kCAAkC;EAClC,cAAc;EACd,gCAAgC;AAClC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,aAAa;AACf;;AAEA;EACE,WAAW;EACX,YAAY;AACd;;AAEA;EACE,kCAAkC;EAClC,cAAc;EACd,gCAAgC;AAClC;;AAEA;EACE,8BAA8B;EAC9B,gCAAgC;EAChC,oCAAoC;EACpC,eAAe;EACf,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA,sCAAsC;AACtC;EACE,sBAAsB;EACtB,aAAa;EACb,iBAAiB;AACnB",sourcesContent:["/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.image {\n width: 160px;\n height: 160px;\n border-radius: 50%;\n object-fit: cover;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n}\n\n.image-alt {\n width: 160px;\n height: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n color: var(--color-text-secondary);\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.intro {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n margin-bottom: var(--spacing-xs);\n max-width: 40ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.buttonSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n.qrCodeSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n"],sourceRoot:""}]);const s=a},436(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n.profileSection {\n \n}\n\n/* Horizontal layout for cards */\n.profile-grid .profileSection {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n}\n\n@media (min-width: 900px) {\n .profileSection {\n margin-bottom: 0;\n }\n}\n","",{version:3,sources:["webpack://./src/styles/ProfileView.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,8CAA8C;;AAE9C;;AAEA;;AAEA,gCAAgC;AAChC;EACE,WAAW;EACX,eAAe;EACf,sBAAsB;EACtB,gCAAgC;EAChC,sBAAsB;EACtB,gCAAgC;AAClC;;AAEA;EACE;IACE,gBAAgB;EAClB;AACF",sourcesContent:["/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n.profileSection {\n \n}\n\n/* Horizontal layout for cards */\n.profile-grid .profileSection {\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n}\n\n@media (min-width: 900px) {\n .profileSection {\n margin-bottom: 0;\n }\n}\n"],sourceRoot:""}]);const s=a},1134(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrCaption {\n text-align: center;\n margin-top: 0;\n font-size: 0.95em;\n color: var(--color-text-secondary);\n}\n\n.QRCode {\n width: 100%;\n max-width: 320px;\n min-width: 180px;\n margin: 0 auto;\n display: block;\n}\n\n.QRCode [role="img"]:focus {\n outline: 2px solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}',"",{version:3,sources:["webpack://./src/styles/QRCodeCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,uCAAuC;;AAEvC,8BAA8B;AAC9B;EACE,kBAAkB;EAClB,aAAa;EACb,iBAAiB;EACjB,kCAAkC;AACpC;;AAEA;EACE,WAAW;EACX,gBAAgB;EAChB,gBAAgB;EAChB,cAAc;EACd,cAAc;AAChB;;AAEA;EACE,gDAAgD;EAChD,mBAAmB;EACnB,0CAA0C;AAC5C",sourcesContent:['/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrCaption {\n text-align: center;\n margin-top: 0;\n font-size: 0.95em;\n color: var(--color-text-secondary);\n}\n\n.QRCode {\n width: 100%;\n max-width: 320px;\n min-width: 180px;\n margin: 0 auto;\n display: block;\n}\n\n.QRCode [role="img"]:focus {\n outline: 2px solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}'],sourceRoot:""}]);const s=a},1649(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-lg);\n justify-content: center;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: 1.1em;\n}\n\n.socialItem span {\n min-width: 0;\n display: block;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n min-height: var(--min-touch-target);\n padding: var(--spacing-xs);\n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: 2.5em;\n height: 2.5em;\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n',"",{version:3,sources:["webpack://./src/styles/SocialCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,2FAA2F;;AAE3F;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,sBAAsB;EACtB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,2BAA2B;EAC3B,qBAAqB;EACrB,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,mCAAmC;EACnC,0BAA0B;EAC1B,wCAAwC;EACxC,2DAA2D;EAC3D,kBAAkB;EAClB,OAAO;EACP,YAAY;AACd;;AAEA;;EAEE,0BAA0B;EAC1B,yCAAyC;AAC3C;;AAEA,gDAAgD;AAChD;EACE,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,wCAAwC;EACxC,gCAAgC;EAChC,cAAc;AAChB",sourcesContent:['/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-lg);\n justify-content: center;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: 1.1em;\n}\n\n.socialItem span {\n min-width: 0;\n display: block;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n min-height: var(--min-touch-target);\n padding: var(--spacing-xs);\n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: 2.5em;\n height: 2.5em;\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n'],sourceRoot:""}]);const s=a},6660(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* StuffCard.css */\n/* Uses utilities: .zebra-stripe */\n\n.stuffTable {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: var(--spacing-md);\n caption-side: top;\n}\n\n.stuffTable caption {\n font-weight: 600;\n padding: var(--spacing-sm);\n text-align: left;\n color: var(--color-text);\n}\n\n.stuffTable th,\n.stuffTable td {\n padding: var(--spacing-sm) var(--spacing-md);\n text-align: left;\n line-height: 1.4;\n}\n","",{version:3,sources:["webpack://./src/styles/StuffCard.css"],names:[],mappings:"AAAA,kBAAkB;AAClB,kCAAkC;;AAElC;EACE,WAAW;EACX,yBAAyB;EACzB,gCAAgC;EAChC,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;EAChB,0BAA0B;EAC1B,gBAAgB;EAChB,wBAAwB;AAC1B;;AAEA;;EAEE,4CAA4C;EAC5C,gBAAgB;EAChB,gBAAgB;AAClB",sourcesContent:["/* StuffCard.css */\n/* Uses utilities: .zebra-stripe */\n\n.stuffTable {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: var(--spacing-md);\n caption-side: top;\n}\n\n.stuffTable caption {\n font-weight: 600;\n padding: var(--spacing-sm);\n text-align: left;\n color: var(--color-text);\n}\n\n.stuffTable th,\n.stuffTable td {\n padding: var(--spacing-sm) var(--spacing-md);\n text-align: left;\n line-height: 1.4;\n}\n"],sourceRoot:""}]);const s=a},9053(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* Solid-UI form sizing fixes scoped to Edit CV section */\n.profile-form .hoverControl:not(:has(> img:first-child)) {\n border: 0.1em solid rgb(136, 136, 136) !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n padding: 0.7em !important;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.profile-form .hoverControlHide {\n width: 1.5em !important;\n height: 1.5em !important;\n display: block;\n margin-top: 0 !important;\n margin-left: 0 !important;\n margin-right: 0 !important;\n margin-bottom: 0.3em !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) > span {\n display: inline-flex;\n align-items: center;\n margin-left: 0.3em;\n}\n\n.profile-form div[style*="padding: 0.5em"]:has(> img) {\n display: inline-flex;\n align-items: center;\n}\n\n.profile-form div[style*="padding: 0.5em"]:has(> img) > span {\n margin-left: 0.3em;\n}\n\n.profile-form .hoverControl:has(> img:first-child):hover {\n background-color: transparent !important;\n}\n\n.profile-form button:has(> img[src$=".svg"]) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n}\n\n.profile-form button {\n\n}\n\n.profile-form input:not([type="color"]),\n.profile-form textarea,\n.profile-form select {\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box ;\n background-color: #eef !important;\n border: .05em solid #88c\n}\n\n.profile-form input[type="url"] {\n width: 100%;\n}\n\n.profile-form .formFieldValue {\n min-width: 0;\n margin-bottom: var(--spacing-sm);\n}\n\n.profile-form .formFieldValue table {\n margin: 0 !important;\n padding: 0 !important;\n}\n\n.profile-form .formFieldValue td {\n padding: 0 !important;\n}\n\n.profile-form .formFieldValue input:not([type="color"]),\n.profile-form .formFieldValue textarea,\n.profile-form .formFieldValue select {\n width: 100%;\n max-width: 100%;\n}\n\n.profile-form select#formSelect {\n width: 100%;\n max-width: 97%;\n box-sizing: border-box;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.profile-form span select {\n max-width: 96% !important;\n box-sizing: border-box;\n}\n\n/* Remove border/padding from the first wrapper div (and its first child wrapper). */\n.profile-form > div:first-of-type,\n.profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Remove border/padding from the inner div of the first wrapper in the contact section. */\nsection[aria-labelledby="edit-profile-contact-heading"] .profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* In contactPane, remove border/padding from all direct child divs. */\n.contactPane > div {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Align schema.org, solid terms, FOAF, vCard, and org field labels with their input values. */\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form textarea {\n width: 100%;\n box-sizing: border-box;\n margin-top: var(--spacing-xs);\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Add horizontal gap between label and textarea for all label+textarea pairs. */\n.profile-form div:has(> a) + div:has(textarea) {\n margin-left: var(--spacing-sm);\n}\n\n/* Center textarea label vertically in flex rows. */\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) {\n align-items: flex-start;\n}\n\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a) {\n padding-top: var(--spacing-xs);\n}\n\n.profile-form input:not([type="color"]) {\n width: 100%;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Remove padding from table cells within webidControl */\n.webidControl table td {\n padding: 0 !important;\n}\n\n/* Remove padding from contactPane divs inside webidControl table cells */\n.webidControl table td div.contactPane.namedPane.fullWidth.individualPane {\n padding: 0 !important;\n}\n\n.webidControl table td div.contactPane.namedPane {\n border: none !important;\n}\n',"",{version:3,sources:["webpack://./src/styles/rdfFormsEnforced.css"],names:[],mappings:"AAAA,yDAAyD;AACzD;EACE,iDAAiD;AACnD;;AAEA;EACE,wCAAwC;EACxC,uBAAuB;EACvB,oBAAoB;EACpB,2BAA2B;EAC3B,yBAAyB;EACzB,eAAe;EACf,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,uBAAuB;EACvB,wBAAwB;EACxB,cAAc;EACd,wBAAwB;EACxB,yBAAyB;EACzB,0BAA0B;EAC1B,+BAA+B;AACjC;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,wCAAwC;AAC1C;;AAEA;EACE,wCAAwC;EACxC,uBAAuB;EACvB,oBAAoB;EACpB,2BAA2B;AAC7B;;AAEA;;AAEA;;AAEA;;;EAGE,eAAe;EACf,YAAY;EACZ,uBAAuB;EACvB,iCAAiC;EACjC;AACF;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,YAAY;EACZ,gCAAgC;AAClC;;AAEA;EACE,oBAAoB;EACpB,qBAAqB;AACvB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;;;EAGE,WAAW;EACX,eAAe;AACjB;;AAEA;EACE,WAAW;EACX,cAAc;EACd,sBAAsB;EACtB,yBAAyB;EACzB,0BAA0B;AAC5B;;AAEA;EACE,yBAAyB;EACzB,sBAAsB;AACxB;;AAEA,oFAAoF;AACpF;;EAEE,uBAAuB;EACvB,qBAAqB;AACvB;;AAEA,0FAA0F;AAC1F;EACE,uBAAuB;EACvB,qBAAqB;AACvB;;AAEA,sEAAsE;AACtE;EACE,uBAAuB;EACvB,qBAAqB;AACvB;;AAEA,8FAA8F;AAC9F;;;;;EAKE,oBAAoB;EACpB,mBAAmB;EACnB,sBAAsB;AACxB;;AAEA;;;;;EAKE,oBAAoB;EACpB,mBAAmB;EACnB,sBAAsB;AACxB;;AAEA;EACE,WAAW;EACX,sBAAsB;EACtB,6BAA6B;EAC7B,yBAAyB;EACzB,0BAA0B;AAC5B;;AAEA,gFAAgF;AAChF;EACE,8BAA8B;AAChC;;AAEA,mDAAmD;AACnD;EACE,uBAAuB;AACzB;;AAEA;EACE,8BAA8B;AAChC;;AAEA;EACE,WAAW;EACX,yBAAyB;EACzB,0BAA0B;AAC5B;;AAEA,wDAAwD;AACxD;EACE,qBAAqB;AACvB;;AAEA,yEAAyE;AACzE;EACE,qBAAqB;AACvB;;AAEA;EACE,uBAAuB;AACzB",sourcesContent:['/* Solid-UI form sizing fixes scoped to Edit CV section */\n.profile-form .hoverControl:not(:has(> img:first-child)) {\n border: 0.1em solid rgb(136, 136, 136) !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n padding: 0.7em !important;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.profile-form .hoverControlHide {\n width: 1.5em !important;\n height: 1.5em !important;\n display: block;\n margin-top: 0 !important;\n margin-left: 0 !important;\n margin-right: 0 !important;\n margin-bottom: 0.3em !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) > span {\n display: inline-flex;\n align-items: center;\n margin-left: 0.3em;\n}\n\n.profile-form div[style*="padding: 0.5em"]:has(> img) {\n display: inline-flex;\n align-items: center;\n}\n\n.profile-form div[style*="padding: 0.5em"]:has(> img) > span {\n margin-left: 0.3em;\n}\n\n.profile-form .hoverControl:has(> img:first-child):hover {\n background-color: transparent !important;\n}\n\n.profile-form button:has(> img[src$=".svg"]) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n}\n\n.profile-form button {\n\n}\n\n.profile-form input:not([type="color"]),\n.profile-form textarea,\n.profile-form select {\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box ;\n background-color: #eef !important;\n border: .05em solid #88c\n}\n\n.profile-form input[type="url"] {\n width: 100%;\n}\n\n.profile-form .formFieldValue {\n min-width: 0;\n margin-bottom: var(--spacing-sm);\n}\n\n.profile-form .formFieldValue table {\n margin: 0 !important;\n padding: 0 !important;\n}\n\n.profile-form .formFieldValue td {\n padding: 0 !important;\n}\n\n.profile-form .formFieldValue input:not([type="color"]),\n.profile-form .formFieldValue textarea,\n.profile-form .formFieldValue select {\n width: 100%;\n max-width: 100%;\n}\n\n.profile-form select#formSelect {\n width: 100%;\n max-width: 97%;\n box-sizing: border-box;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.profile-form span select {\n max-width: 96% !important;\n box-sizing: border-box;\n}\n\n/* Remove border/padding from the first wrapper div (and its first child wrapper). */\n.profile-form > div:first-of-type,\n.profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Remove border/padding from the inner div of the first wrapper in the contact section. */\nsection[aria-labelledby="edit-profile-contact-heading"] .profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* In contactPane, remove border/padding from all direct child divs. */\n.contactPane > div {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Align schema.org, solid terms, FOAF, vCard, and org field labels with their input values. */\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form textarea {\n width: 100%;\n box-sizing: border-box;\n margin-top: var(--spacing-xs);\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Add horizontal gap between label and textarea for all label+textarea pairs. */\n.profile-form div:has(> a) + div:has(textarea) {\n margin-left: var(--spacing-sm);\n}\n\n/* Center textarea label vertically in flex rows. */\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) {\n align-items: flex-start;\n}\n\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a) {\n padding-top: var(--spacing-xs);\n}\n\n.profile-form input:not([type="color"]) {\n width: 100%;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Remove padding from table cells within webidControl */\n.webidControl table td {\n padding: 0 !important;\n}\n\n/* Remove padding from contactPane divs inside webidControl table cells */\n.webidControl table td div.contactPane.namedPane.fullWidth.individualPane {\n padding: 0 !important;\n}\n\n.webidControl table td div.contactPane.namedPane {\n border: none !important;\n}\n'],sourceRoot:""}]);const s=a},5092(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* Utility-first CSS classes for layout, spacing, and responsiveness */\n\n.actionButton {\n width: 100%;\n min-width: 180px;\n max-width: 320px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(30em, 1fr));\n gap: var(--spacing-lg);\n background: var(--color-background);\n}\n\n.profile-header,\n.profile-footer {\n grid-column: 1 / -1;\n}\n\n.center {\n justify-content: center;\n align-items: center;\n}\n\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n\n/* Spacing utilities using CSS variables */\n.gap-xs { gap: var(--spacing-xs); }\n.gap-sm { gap: var(--spacing-sm); }\n.gap-md { gap: var(--spacing-md); }\n.gap-lg { gap: var(--spacing-lg); }\n.gap-xl { gap: var(--spacing-xl); }\n\n.mt-xs { margin-top: var(--spacing-xs); }\n.mt-sm { margin-top: var(--spacing-sm); }\n.mt-md { margin-top: var(--spacing-md); }\n.mt-lg { margin-top: var(--spacing-lg); }\n\n.mb-xs { margin-bottom: var(--spacing-xs); }\n.mb-sm { margin-bottom: var(--spacing-sm); }\n.mb-md { margin-bottom: var(--spacing-md); }\n.mb-lg { margin-bottom: var(--spacing-lg); }\n\n.p-xs { padding: var(--spacing-xs); }\n.p-sm { padding: var(--spacing-sm); }\n.p-md { padding: var(--spacing-md); }\n.p-lg { padding: var(--spacing-lg); }\n\n.rounded { border-radius: var(--border-radius-full); }\n.rounded-sm { border-radius: var(--border-radius-base); }\n\n.shadow { box-shadow: var(--box-shadow); }\n.shadow-sm { box-shadow: var(--box-shadow-sm); }\n\n.bg-primary {\n background: var(--color-primary);\n color: #fff;\n}\n.bg-card {\n background: var(--color-card-bg);\n}\n\n/* Accessibility utilities */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.min-touch-target {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n/* Enhanced accessibility utilities */\n.visually-hidden {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.visually-hidden.focusable:focus,\n.visually-hidden.focusable:active {\n position: static !important;\n width: auto !important;\n height: auto !important;\n padding: inherit !important;\n margin: inherit !important;\n overflow: visible !important;\n clip: auto !important;\n white-space: inherit !important;\n}\n\n/* Skip links utility */\n.skip-links {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 1000;\n}\n\n.skip-links a {\n position: absolute;\n left: 6px;\n top: 6px;\n padding: var(--spacing-sm);\n background: var(--color-primary);\n color: white;\n text-decoration: none;\n border-radius: var(--border-radius-base);\n}\n\n.skip-links a:focus {\n top: 6px;\n}\n\n.reduced-motion {\n animation: none !important;\n transition: none !important;\n}\n\n/* Focus management */\n.focus-ring {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.no-focus-ring {\n outline: none;\n}\n\n.no-focus-ring:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n/* ARIA live regions */\n.live-region {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n/* Note: Use aria-live="polite" or aria-live="assertive" HTML attributes with .live-region */\n\n/* Text scaling utilities */\n.text-scale-friendly {\n line-height: 1.5;\n max-width: 70ch; /* Optimal reading length */\n}\n\n/* Text accessibility utilities */\n.text-readable {\n line-height: var(--line-height-base);\n max-width: 65ch;\n}\n\n.text-lg {\n font-size: var(--font-size-lg);\n line-height: var(--line-height-base);\n}\n\n.text-small {\n font-size: max(var(--font-size-sm), var(--min-font-size));\n line-height: var(--min-line-height);\n}\n\n.text-contrast-high {\n color: var(--color-text);\n font-weight: 600;\n}\n\n:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary);\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n}\n\n/* Better focus for text elements */\n.focusable-text:focus {\n background-color: rgba(124, 77, 255, 0.1);\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* High contrast text */\n.high-contrast {\n color: var(--color-text);\n background: var(--color-background);\n border: 1px solid var(--color-border-pale);\n}\n\n/* ===========================================\n CONSOLIDATED COMPONENT PATTERNS\n =========================================== */\n\n/* Primary Button - used by ChatWithMe, ProfileCard */\n.btn-primary {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n background: var(--color-primary);\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n/* Action Button Focus - used by ChatWithMe, ProfileCard */\n.action-button-focus:focus,\n.action-button-focus:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px var(--color-background), 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n/* List Reset - used by FriendList, SocialCard, nav */\n.list-reset {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n/* Section Title - primary colored heading */\n.section-title {\n font-size: 1.25em;\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n/* Text Overflow - used by ProfileCard, SocialCard */\n.text-truncate {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.text-wrap-anywhere {\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n/* Loading Text - primary colored centered loading indicator */\n.loading-text {\n color: var(--color-primary);\n text-align: center;\n margin: var(--spacing-md) 0;\n}\n\n/* Centered Section - flex column with center alignment */\n.section-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* Card Section Background */\n.section-bg {\n background: var(--color-section-bg);\n border-radius: var(--border-radius-full);\n box-shadow: var(--box-shadow);\n padding: var(--spacing-md);\n}\n\n\n/* Transparent button override (for solid-ui integration) */\n.btn-transparent {\n background-color: transparent;\n}\n\n.btn-transparent:hover {\n background-color: transparent;\n}\n',"",{version:3,sources:["webpack://./src/styles/utilities.css"],names:[],mappings:"AAAA,sEAAsE;;AAEtE;EACE,WAAW;EACX,gBAAgB;EAChB,gBAAgB;EAChB,sBAAsB;EACtB,qBAAqB;AACvB;;AAEA;;gDAEgD;;AAEhD;EACE,aAAa;EACb,0DAA0D;EAC1D,sBAAsB;EACtB,mCAAmC;AACrC;;AAEA;;EAEE,mBAAmB;AACrB;;AAEA;EACE,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,aAAa;AACf;AACA;EACE,aAAa;AACf;;AAEA,0CAA0C;AAC1C,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;;AAElC,SAAS,6BAA6B,EAAE;AACxC,SAAS,6BAA6B,EAAE;AACxC,SAAS,6BAA6B,EAAE;AACxC,SAAS,6BAA6B,EAAE;;AAExC,SAAS,gCAAgC,EAAE;AAC3C,SAAS,gCAAgC,EAAE;AAC3C,SAAS,gCAAgC,EAAE;AAC3C,SAAS,gCAAgC,EAAE;;AAE3C,QAAQ,0BAA0B,EAAE;AACpC,QAAQ,0BAA0B,EAAE;AACpC,QAAQ,0BAA0B,EAAE;AACpC,QAAQ,0BAA0B,EAAE;;AAEpC,WAAW,wCAAwC,EAAE;AACrD,cAAc,wCAAwC,EAAE;;AAExD,UAAU,6BAA6B,EAAE;AACzC,aAAa,gCAAgC,EAAE;;AAE/C;EACE,gCAAgC;EAChC,WAAW;AACb;AACA;EACE,gCAAgC;AAClC;;AAEA,4BAA4B;AAC5B;EACE,kBAAkB;EAClB,UAAU;EACV,WAAW;EACX,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,sBAAsB;EACtB,mBAAmB;EACnB,SAAS;AACX;;AAEA;EACE,mCAAmC;EACnC,kCAAkC;AACpC;;AAEA,qCAAqC;AACrC;EACE,6BAA6B;EAC7B,qBAAqB;EACrB,sBAAsB;EACtB,qBAAqB;EACrB,uBAAuB;EACvB,2BAA2B;EAC3B,iCAAiC;EACjC,8BAA8B;EAC9B,oBAAoB;AACtB;;AAEA;;EAEE,2BAA2B;EAC3B,sBAAsB;EACtB,uBAAuB;EACvB,2BAA2B;EAC3B,0BAA0B;EAC1B,4BAA4B;EAC5B,qBAAqB;EACrB,+BAA+B;AACjC;;AAEA,uBAAuB;AACvB;EACE,kBAAkB;EAClB,WAAW;EACX,OAAO;EACP,aAAa;AACf;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,QAAQ;EACR,0BAA0B;EAC1B,gCAAgC;EAChC,YAAY;EACZ,qBAAqB;EACrB,wCAAwC;AAC1C;;AAEA;EACE,QAAQ;AACV;;AAEA;EACE,0BAA0B;EAC1B,2BAA2B;AAC7B;;AAEA,qBAAqB;AACrB;EACE,uCAAuC;EACvC,mBAAmB;AACrB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,aAAa;EACb,gBAAgB;AAClB;;AAEA,sBAAsB;AACtB;EACE,kBAAkB;EAClB,cAAc;EACd,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA,4FAA4F;;AAE5F,2BAA2B;AAC3B;EACE,gBAAgB;EAChB,eAAe,EAAE,2BAA2B;AAC9C;;AAEA,iCAAiC;AACjC;EACE,oCAAoC;EACpC,eAAe;AACjB;;AAEA;EACE,8BAA8B;EAC9B,oCAAoC;AACtC;;AAEA;EACE,yDAAyD;EACzD,mCAAmC;AACrC;;AAEA;EACE,wBAAwB;EACxB,gBAAgB;AAClB;;AAEA;EACE,2DAA2D;EAC3D,mBAAmB;EACnB,6CAA6C;AAC/C;;AAEA;EACE,aAAa;EACb,gBAAgB;AAClB;;AAEA,mCAAmC;AACnC;EACE,yCAAyC;EACzC,uCAAuC;EACvC,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA,uBAAuB;AACvB;EACE,wBAAwB;EACxB,mCAAmC;EACnC,0CAA0C;AAC5C;;AAEA;;gDAEgD;;AAEhD,qDAAqD;AACrD;EACE,mCAAmC;EACnC,4CAA4C;EAC5C,sCAAsC;EACtC,wCAAwC;EACxC,gCAAgC;EAChC,YAAY;EACZ,gBAAgB;EAChB,eAAe;EACf,8CAA8C;AAChD;;AAEA;EACE,+DAA+D;EAC/D,6CAA6C;AAC/C;;AAEA;EACE,6CAA6C;AAC/C;;AAEA;EACE,YAAY;EACZ,mBAAmB;EACnB,eAAe;AACjB;;AAEA,0DAA0D;AAC1D;;EAEE,kDAAkD;EAClD,8BAA8B;EAC9B,4FAA4F;EAC5F,UAAU;AACZ;;AAEA,qDAAqD;AACrD;EACE,gBAAgB;EAChB,UAAU;EACV,SAAS;AACX;;AAEA,0DAA0D;AAC1D;;EAEE,qCAAqC;AACvC;;AAEA,4CAA4C;AAC5C;EACE,iBAAiB;EACjB,gBAAgB;EAChB,2BAA2B;EAC3B,SAAS;AACX;;AAEA,oDAAoD;AACpD;EACE,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;AAClB;;AAEA;EACE,uBAAuB;EACvB,sBAAsB;AACxB;;AAEA,8DAA8D;AAC9D;EACE,2BAA2B;EAC3B,kBAAkB;EAClB,2BAA2B;AAC7B;;AAEA,yDAAyD;AACzD;EACE,aAAa;EACb,sBAAsB;EACtB,mBAAmB;AACrB;;AAEA,4BAA4B;AAC5B;EACE,mCAAmC;EACnC,wCAAwC;EACxC,6BAA6B;EAC7B,0BAA0B;AAC5B;;;AAGA,2DAA2D;AAC3D;EACE,6BAA6B;AAC/B;;AAEA;EACE,6BAA6B;AAC/B",sourcesContent:['/* Utility-first CSS classes for layout, spacing, and responsiveness */\n\n.actionButton {\n width: 100%;\n min-width: 180px;\n max-width: 320px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(30em, 1fr));\n gap: var(--spacing-lg);\n background: var(--color-background);\n}\n\n.profile-header,\n.profile-footer {\n grid-column: 1 / -1;\n}\n\n.center {\n justify-content: center;\n align-items: center;\n}\n\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n\n/* Spacing utilities using CSS variables */\n.gap-xs { gap: var(--spacing-xs); }\n.gap-sm { gap: var(--spacing-sm); }\n.gap-md { gap: var(--spacing-md); }\n.gap-lg { gap: var(--spacing-lg); }\n.gap-xl { gap: var(--spacing-xl); }\n\n.mt-xs { margin-top: var(--spacing-xs); }\n.mt-sm { margin-top: var(--spacing-sm); }\n.mt-md { margin-top: var(--spacing-md); }\n.mt-lg { margin-top: var(--spacing-lg); }\n\n.mb-xs { margin-bottom: var(--spacing-xs); }\n.mb-sm { margin-bottom: var(--spacing-sm); }\n.mb-md { margin-bottom: var(--spacing-md); }\n.mb-lg { margin-bottom: var(--spacing-lg); }\n\n.p-xs { padding: var(--spacing-xs); }\n.p-sm { padding: var(--spacing-sm); }\n.p-md { padding: var(--spacing-md); }\n.p-lg { padding: var(--spacing-lg); }\n\n.rounded { border-radius: var(--border-radius-full); }\n.rounded-sm { border-radius: var(--border-radius-base); }\n\n.shadow { box-shadow: var(--box-shadow); }\n.shadow-sm { box-shadow: var(--box-shadow-sm); }\n\n.bg-primary {\n background: var(--color-primary);\n color: #fff;\n}\n.bg-card {\n background: var(--color-card-bg);\n}\n\n/* Accessibility utilities */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.min-touch-target {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n/* Enhanced accessibility utilities */\n.visually-hidden {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.visually-hidden.focusable:focus,\n.visually-hidden.focusable:active {\n position: static !important;\n width: auto !important;\n height: auto !important;\n padding: inherit !important;\n margin: inherit !important;\n overflow: visible !important;\n clip: auto !important;\n white-space: inherit !important;\n}\n\n/* Skip links utility */\n.skip-links {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 1000;\n}\n\n.skip-links a {\n position: absolute;\n left: 6px;\n top: 6px;\n padding: var(--spacing-sm);\n background: var(--color-primary);\n color: white;\n text-decoration: none;\n border-radius: var(--border-radius-base);\n}\n\n.skip-links a:focus {\n top: 6px;\n}\n\n.reduced-motion {\n animation: none !important;\n transition: none !important;\n}\n\n/* Focus management */\n.focus-ring {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.no-focus-ring {\n outline: none;\n}\n\n.no-focus-ring:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n/* ARIA live regions */\n.live-region {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n/* Note: Use aria-live="polite" or aria-live="assertive" HTML attributes with .live-region */\n\n/* Text scaling utilities */\n.text-scale-friendly {\n line-height: 1.5;\n max-width: 70ch; /* Optimal reading length */\n}\n\n/* Text accessibility utilities */\n.text-readable {\n line-height: var(--line-height-base);\n max-width: 65ch;\n}\n\n.text-lg {\n font-size: var(--font-size-lg);\n line-height: var(--line-height-base);\n}\n\n.text-small {\n font-size: max(var(--font-size-sm), var(--min-font-size));\n line-height: var(--min-line-height);\n}\n\n.text-contrast-high {\n color: var(--color-text);\n font-weight: 600;\n}\n\n:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary);\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n}\n\n/* Better focus for text elements */\n.focusable-text:focus {\n background-color: rgba(124, 77, 255, 0.1);\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* High contrast text */\n.high-contrast {\n color: var(--color-text);\n background: var(--color-background);\n border: 1px solid var(--color-border-pale);\n}\n\n/* ===========================================\n CONSOLIDATED COMPONENT PATTERNS\n =========================================== */\n\n/* Primary Button - used by ChatWithMe, ProfileCard */\n.btn-primary {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n background: var(--color-primary);\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n/* Action Button Focus - used by ChatWithMe, ProfileCard */\n.action-button-focus:focus,\n.action-button-focus:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px var(--color-background), 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n/* List Reset - used by FriendList, SocialCard, nav */\n.list-reset {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n/* Section Title - primary colored heading */\n.section-title {\n font-size: 1.25em;\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n/* Text Overflow - used by ProfileCard, SocialCard */\n.text-truncate {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.text-wrap-anywhere {\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n/* Loading Text - primary colored centered loading indicator */\n.loading-text {\n color: var(--color-primary);\n text-align: center;\n margin: var(--spacing-md) 0;\n}\n\n/* Centered Section - flex column with center alignment */\n.section-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* Card Section Background */\n.section-bg {\n background: var(--color-section-bg);\n border-radius: var(--border-radius-full);\n box-shadow: var(--box-shadow);\n padding: var(--spacing-md);\n}\n\n\n/* Transparent button override (for solid-ui integration) */\n.btn-transparent {\n background-color: transparent;\n}\n\n.btn-transparent:hover {\n background-color: transparent;\n}\n'],sourceRoot:""}]);const s=a},6314(n){"use strict";n.exports=function(n){var e=[];return e.toString=function(){return this.map(function(e){var t="",i=void 0!==e[5];return e[4]&&(t+="@supports (".concat(e[4],") {")),e[2]&&(t+="@media ".concat(e[2]," {")),i&&(t+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),t+=n(e),i&&(t+="}"),e[2]&&(t+="}"),e[4]&&(t+="}"),t}).join("")},e.i=function(n,t,i,o,r){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(i)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var c=0;c<n.length;c++){var d=[].concat(n[c]);i&&a[d[0]]||(void 0!==r&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=r),t&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=t):d[2]=t),o&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=o):d[4]="".concat(o)),e.push(d))}},e}},1354(n){"use strict";n.exports=function(n){var e=n[1],t=n[3];if(!t)return e;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),r="/*# ".concat(o," */");return[e].concat([r]).join("\n")}return[e].join("\n")}},6320(n){"use strict";var e={single_source_shortest_paths:function(n,t,i){var o={},r={};r[t]=0;var a,s,l,c,d,u,A,p=e.PriorityQueue.make();for(p.push(t,0);!p.empty();)for(l in s=(a=p.pop()).value,c=a.cost,d=n[s]||{})d.hasOwnProperty(l)&&(u=c+d[l],A=r[l],(void 0===r[l]||A>u)&&(r[l]=u,p.push(l,u),o[l]=s));if(void 0!==i&&void 0===r[i]){var f=["Could not find a path from ",t," to ",i,"."].join("");throw new Error(f)}return o},extract_shortest_path_from_predecessor_list:function(n,e){for(var t=[],i=e;i;)t.push(i),n[i],i=n[i];return t.reverse(),t},find_path:function(n,t,i){var o=e.single_source_shortest_paths(n,t,i);return e.extract_shortest_path_from_predecessor_list(o,i)},PriorityQueue:{make:function(n){var t,i=e.PriorityQueue,o={};for(t in n=n||{},i)i.hasOwnProperty(t)&&(o[t]=i[t]);return o.queue=[],o.sorter=n.sorter||i.default_sorter,o},default_sorter:function(n,e){return n.cost-e.cost},push:function(n,e){var t={value:n,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};n.exports=e},7583(n,e,t){const i=t(1333),o=t(157),r=t(7899),a=t(6756);function s(n,e,t,r,a){const s=[].slice.call(arguments,1),l=s.length,c="function"==typeof s[l-1];if(!c&&!i())throw new Error("Callback required as last argument");if(!c){if(l<1)throw new Error("Too few arguments provided");return 1===l?(t=e,e=r=void 0):2!==l||e.getContext||(r=t,t=e,e=void 0),new Promise(function(i,a){try{const a=o.create(t,r);i(n(a,e,r))}catch(n){a(n)}})}if(l<2)throw new Error("Too few arguments provided");2===l?(a=t,t=e,e=r=void 0):3===l&&(e.getContext&&void 0===a?(a=r,r=void 0):(a=r,r=t,t=e,e=void 0));try{const i=o.create(t,r);a(null,n(i,e,r))}catch(n){a(n)}}o.create,s.bind(null,r.render),s.bind(null,r.renderToDataURL),e.toString=s.bind(null,function(n,e,t){return a.render(n,t)})},1333(n){n.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},6421(n,e,t){const i=t(6886).getSymbolSize;e.getRowColCoords=function(n){if(1===n)return[];const e=Math.floor(n/7)+2,t=i(n),o=145===t?26:2*Math.ceil((t-13)/(2*e-2)),r=[t-7];for(let n=1;n<e-1;n++)r[n]=r[n-1]-o;return r.push(6),r.reverse()},e.getPositions=function(n){const t=[],i=e.getRowColCoords(n),o=i.length;for(let n=0;n<o;n++)for(let e=0;e<o;e++)0===n&&0===e||0===n&&e===o-1||n===o-1&&0===e||t.push([i[n],i[e]]);return t}},1433(n,e,t){const i=t(208),o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=i.ALPHANUMERIC,this.data=n}r.getBitsLength=function(n){return 11*Math.floor(n/2)+n%2*6},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let e;for(e=0;e+2<=this.data.length;e+=2){let t=45*o.indexOf(this.data[e]);t+=o.indexOf(this.data[e+1]),n.put(t,11)}this.data.length%2&&n.put(o.indexOf(this.data[e]),6)},n.exports=r},9899(n){function e(){this.buffer=[],this.length=0}e.prototype={get:function(n){const e=Math.floor(n/8);return 1==(this.buffer[e]>>>7-n%8&1)},put:function(n,e){for(let t=0;t<e;t++)this.putBit(1==(n>>>e-t-1&1))},getLengthInBits:function(){return this.length},putBit:function(n){const e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),n&&(this.buffer[e]|=128>>>this.length%8),this.length++}},n.exports=e},8820(n){function e(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}e.prototype.set=function(n,e,t,i){const o=n*this.size+e;this.data[o]=t,i&&(this.reservedBit[o]=!0)},e.prototype.get=function(n,e){return this.data[n*this.size+e]},e.prototype.xor=function(n,e,t){this.data[n*this.size+e]^=t},e.prototype.isReserved=function(n,e){return this.reservedBit[n*this.size+e]},n.exports=e},5822(n,e,t){const i=t(208);function o(n){this.mode=i.BYTE,this.data="string"==typeof n?(new TextEncoder).encode(n):new Uint8Array(n)}o.getBitsLength=function(n){return 8*n},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(n){for(let e=0,t=this.data.length;e<t;e++)n.put(this.data[e],8)},n.exports=o},7518(n,e,t){const i=t(9953),o=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(n,e){switch(e){case i.L:return o[4*(n-1)+0];case i.M:return o[4*(n-1)+1];case i.Q:return o[4*(n-1)+2];case i.H:return o[4*(n-1)+3];default:return}},e.getTotalCodewordsCount=function(n,e){switch(e){case i.L:return r[4*(n-1)+0];case i.M:return r[4*(n-1)+1];case i.Q:return r[4*(n-1)+2];case i.H:return r[4*(n-1)+3];default:return}}},9953(n,e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2},e.isValid=function(n){return n&&void 0!==n.bit&&n.bit>=0&&n.bit<4},e.from=function(n,t){if(e.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}(n)}catch(n){return t}}},7756(n,e,t){const i=t(6886).getSymbolSize;e.getPositions=function(n){const e=i(n);return[[0,0],[e-7,0],[0,e-7]]}},4565(n,e,t){const i=t(6886),o=i.getBCHDigit(1335);e.getEncodedBits=function(n,e){const t=n.bit<<3|e;let r=t<<10;for(;i.getBCHDigit(r)-o>=0;)r^=1335<<i.getBCHDigit(r)-o;return 21522^(t<<10|r)}},2731(n,e){const t=new Uint8Array(512),i=new Uint8Array(256);!function(){let n=1;for(let e=0;e<255;e++)t[e]=n,i[n]=e,n<<=1,256&n&&(n^=285);for(let n=255;n<512;n++)t[n]=t[n-255]}(),e.log=function(n){if(n<1)throw new Error("log("+n+")");return i[n]},e.exp=function(n){return t[n]},e.mul=function(n,e){return 0===n||0===e?0:t[i[n]+i[e]]}},4861(n,e,t){const i=t(208),o=t(6886);function r(n){this.mode=i.KANJI,this.data=n}r.getBitsLength=function(n){return 13*n},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let e;for(e=0;e<this.data.length;e++){let t=o.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else{if(!(t>=57408&&t<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");t-=49472}t=192*(t>>>8&255)+(255&t),n.put(t,13)}},n.exports=r},1332(n,e){e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const t=3,i=3,o=40,r=10;function a(n,t,i){switch(n){case e.Patterns.PATTERN000:return(t+i)%2==0;case e.Patterns.PATTERN001:return t%2==0;case e.Patterns.PATTERN010:return i%3==0;case e.Patterns.PATTERN011:return(t+i)%3==0;case e.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(i/3))%2==0;case e.Patterns.PATTERN101:return t*i%2+t*i%3==0;case e.Patterns.PATTERN110:return(t*i%2+t*i%3)%2==0;case e.Patterns.PATTERN111:return(t*i%3+(t+i)%2)%2==0;default:throw new Error("bad maskPattern:"+n)}}e.isValid=function(n){return null!=n&&""!==n&&!isNaN(n)&&n>=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const e=n.size;let i=0,o=0,r=0,a=null,s=null;for(let l=0;l<e;l++){o=r=0,a=s=null;for(let c=0;c<e;c++){let e=n.get(l,c);e===a?o++:(o>=5&&(i+=t+(o-5)),a=e,o=1),e=n.get(c,l),e===s?r++:(r>=5&&(i+=t+(r-5)),s=e,r=1)}o>=5&&(i+=t+(o-5)),r>=5&&(i+=t+(r-5))}return i},e.getPenaltyN2=function(n){const e=n.size;let t=0;for(let i=0;i<e-1;i++)for(let o=0;o<e-1;o++){const e=n.get(i,o)+n.get(i,o+1)+n.get(i+1,o)+n.get(i+1,o+1);4!==e&&0!==e||t++}return t*i},e.getPenaltyN3=function(n){const e=n.size;let t=0,i=0,r=0;for(let o=0;o<e;o++){i=r=0;for(let a=0;a<e;a++)i=i<<1&2047|n.get(o,a),a>=10&&(1488===i||93===i)&&t++,r=r<<1&2047|n.get(a,o),a>=10&&(1488===r||93===r)&&t++}return t*o},e.getPenaltyN4=function(n){let e=0;const t=n.data.length;for(let i=0;i<t;i++)e+=n.data[i];return Math.abs(Math.ceil(100*e/t/5)-10)*r},e.applyMask=function(n,e){const t=e.size;for(let i=0;i<t;i++)for(let o=0;o<t;o++)e.isReserved(o,i)||e.xor(o,i,a(n,o,i))},e.getBestMask=function(n,t){const i=Object.keys(e.Patterns).length;let o=0,r=1/0;for(let a=0;a<i;a++){t(a),e.applyMask(a,n);const i=e.getPenaltyN1(n)+e.getPenaltyN2(n)+e.getPenaltyN3(n)+e.getPenaltyN4(n);e.applyMask(a,n),i<r&&(r=i,o=a)}return o}},208(n,e,t){const i=t(1878),o=t(7044);e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(n,e){if(!n.ccBits)throw new Error("Invalid mode: "+n);if(!i.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?n.ccBits[0]:e<27?n.ccBits[1]:n.ccBits[2]},e.getBestModeForData=function(n){return o.testNumeric(n)?e.NUMERIC:o.testAlphanumeric(n)?e.ALPHANUMERIC:o.testKanji(n)?e.KANJI:e.BYTE},e.toString=function(n){if(n&&n.id)return n.id;throw new Error("Invalid mode")},e.isValid=function(n){return n&&n.bit&&n.ccBits},e.from=function(n,t){if(e.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}(n)}catch(n){return t}}},4357(n,e,t){const i=t(208);function o(n){this.mode=i.NUMERIC,this.data=n.toString()}o.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(n){let e,t,i;for(e=0;e+3<=this.data.length;e+=3)t=this.data.substr(e,3),i=parseInt(t,10),n.put(i,10);const o=this.data.length-e;o>0&&(t=this.data.substr(e),i=parseInt(t,10),n.put(i,3*o+1))},n.exports=o},4713(n,e,t){const i=t(2731);e.mul=function(n,e){const t=new Uint8Array(n.length+e.length-1);for(let o=0;o<n.length;o++)for(let r=0;r<e.length;r++)t[o+r]^=i.mul(n[o],e[r]);return t},e.mod=function(n,e){let t=new Uint8Array(n);for(;t.length-e.length>=0;){const n=t[0];for(let o=0;o<e.length;o++)t[o]^=i.mul(e[o],n);let o=0;for(;o<t.length&&0===t[o];)o++;t=t.slice(o)}return t},e.generateECPolynomial=function(n){let t=new Uint8Array([1]);for(let o=0;o<n;o++)t=e.mul(t,new Uint8Array([1,i.exp(o)]));return t}},157(n,e,t){const i=t(6886),o=t(9953),r=t(9899),a=t(8820),s=t(6421),l=t(7756),c=t(1332),d=t(7518),u=t(4764),A=t(1427),p=t(4565),f=t(208),m=t(9801);function h(n,e,t){const i=n.size,o=p.getEncodedBits(e,t);let r,a;for(r=0;r<15;r++)a=1==(o>>r&1),r<6?n.set(r,8,a,!0):r<8?n.set(r+1,8,a,!0):n.set(i-15+r,8,a,!0),r<8?n.set(8,i-r-1,a,!0):r<9?n.set(8,15-r-1+1,a,!0):n.set(8,15-r-1,a,!0);n.set(i-8,8,1,!0)}function g(n,e,t){const o=new r;t.forEach(function(e){o.put(e.mode.bit,4),o.put(e.getLength(),f.getCharCountIndicator(e.mode,n)),e.write(o)});const a=8*(i.getSymbolTotalCodewords(n)-d.getTotalCodewordsCount(n,e));for(o.getLengthInBits()+4<=a&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(0);const s=(a-o.getLengthInBits())/8;for(let n=0;n<s;n++)o.put(n%2?17:236,8);return function(n,e,t){const o=i.getSymbolTotalCodewords(e),r=d.getTotalCodewordsCount(e,t),a=o-r,s=d.getBlocksCount(e,t),l=o%s,c=s-l,A=Math.floor(o/s),p=Math.floor(a/s),f=p+1,m=A-p,h=new u(m);let g=0;const C=new Array(s),b=new Array(s);let E=0;const v=new Uint8Array(n.buffer);for(let n=0;n<s;n++){const e=n<c?p:f;C[n]=v.slice(g,g+e),b[n]=h.encode(C[n]),g+=e,E=Math.max(E,e)}const w=new Uint8Array(o);let B,y,x=0;for(B=0;B<E;B++)for(y=0;y<s;y++)B<C[y].length&&(w[x++]=C[y][B]);for(B=0;B<m;B++)for(y=0;y<s;y++)w[x++]=b[y][B];return w}(o,n,e)}function C(n,e,t,o){let r;if(Array.isArray(n))r=m.fromArray(n);else{if("string"!=typeof n)throw new Error("Invalid data");{let i=e;if(!i){const e=m.rawSplit(n);i=A.getBestVersionForData(e,t)}r=m.fromString(n,i||40)}}const d=A.getBestVersionForData(r,t);if(!d)throw new Error("The amount of data is too big to be stored in a QR Code");if(e){if(e<d)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+d+".\n")}else e=d;const u=g(e,t,r),p=i.getSymbolSize(e),f=new a(p);return function(n,e){const t=n.size,i=l.getPositions(e);for(let e=0;e<i.length;e++){const o=i[e][0],r=i[e][1];for(let e=-1;e<=7;e++)if(!(o+e<=-1||t<=o+e))for(let i=-1;i<=7;i++)r+i<=-1||t<=r+i||(e>=0&&e<=6&&(0===i||6===i)||i>=0&&i<=6&&(0===e||6===e)||e>=2&&e<=4&&i>=2&&i<=4?n.set(o+e,r+i,!0,!0):n.set(o+e,r+i,!1,!0))}}(f,e),function(n){const e=n.size;for(let t=8;t<e-8;t++){const e=t%2==0;n.set(t,6,e,!0),n.set(6,t,e,!0)}}(f),function(n,e){const t=s.getPositions(e);for(let e=0;e<t.length;e++){const i=t[e][0],o=t[e][1];for(let e=-2;e<=2;e++)for(let t=-2;t<=2;t++)-2===e||2===e||-2===t||2===t||0===e&&0===t?n.set(i+e,o+t,!0,!0):n.set(i+e,o+t,!1,!0)}}(f,e),h(f,t,0),e>=7&&function(n,e){const t=n.size,i=A.getEncodedBits(e);let o,r,a;for(let e=0;e<18;e++)o=Math.floor(e/3),r=e%3+t-8-3,a=1==(i>>e&1),n.set(o,r,a,!0),n.set(r,o,a,!0)}(f,e),function(n,e){const t=n.size;let i=-1,o=t-1,r=7,a=0;for(let s=t-1;s>0;s-=2)for(6===s&&s--;;){for(let t=0;t<2;t++)if(!n.isReserved(o,s-t)){let i=!1;a<e.length&&(i=1==(e[a]>>>r&1)),n.set(o,s-t,i),r--,-1===r&&(a++,r=7)}if(o+=i,o<0||t<=o){o-=i,i=-i;break}}}(f,u),isNaN(o)&&(o=c.getBestMask(f,h.bind(null,f,t))),c.applyMask(o,f),h(f,t,o),{modules:f,version:e,errorCorrectionLevel:t,maskPattern:o,segments:r}}e.create=function(n,e){if(void 0===n||""===n)throw new Error("No input text");let t,r,a=o.M;return void 0!==e&&(a=o.from(e.errorCorrectionLevel,o.M),t=A.from(e.version),r=c.from(e.maskPattern),e.toSJISFunc&&i.setToSJISFunction(e.toSJISFunc)),C(n,t,a,r)}},4764(n,e,t){const i=t(4713);function o(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}o.prototype.initialize=function(n){this.degree=n,this.genPoly=i.generateECPolynomial(this.degree)},o.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const e=new Uint8Array(n.length+this.degree);e.set(n);const t=i.mod(e,this.genPoly),o=this.degree-t.length;if(o>0){const n=new Uint8Array(this.degree);return n.set(t,o),n}return t},n.exports=o},7044(n,e){const t="[0-9]+";let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+")(?:.|[\r\n]))+";e.KANJI=new RegExp(i,"g"),e.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),e.BYTE=new RegExp(o,"g"),e.NUMERIC=new RegExp(t,"g"),e.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const r=new RegExp("^"+i+"$"),a=new RegExp("^"+t+"$"),s=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");e.testKanji=function(n){return r.test(n)},e.testNumeric=function(n){return a.test(n)},e.testAlphanumeric=function(n){return s.test(n)}},9801(n,e,t){const i=t(208),o=t(4357),r=t(1433),a=t(5822),s=t(4861),l=t(7044),c=t(6886),d=t(6320);function u(n){return unescape(encodeURIComponent(n)).length}function A(n,e,t){const i=[];let o;for(;null!==(o=n.exec(t));)i.push({data:o[0],index:o.index,mode:e,length:o[0].length});return i}function p(n){const e=A(l.NUMERIC,i.NUMERIC,n),t=A(l.ALPHANUMERIC,i.ALPHANUMERIC,n);let o,r;c.isKanjiModeEnabled()?(o=A(l.BYTE,i.BYTE,n),r=A(l.KANJI,i.KANJI,n)):(o=A(l.BYTE_KANJI,i.BYTE,n),r=[]);return e.concat(t,o,r).sort(function(n,e){return n.index-e.index}).map(function(n){return{data:n.data,mode:n.mode,length:n.length}})}function f(n,e){switch(e){case i.NUMERIC:return o.getBitsLength(n);case i.ALPHANUMERIC:return r.getBitsLength(n);case i.KANJI:return s.getBitsLength(n);case i.BYTE:return a.getBitsLength(n)}}function m(n,e){let t;const l=i.getBestModeForData(n);if(t=i.from(e,l),t!==i.BYTE&&t.bit<l.bit)throw new Error('"'+n+'" cannot be encoded with mode '+i.toString(t)+".\n Suggested mode is: "+i.toString(l));switch(t!==i.KANJI||c.isKanjiModeEnabled()||(t=i.BYTE),t){case i.NUMERIC:return new o(n);case i.ALPHANUMERIC:return new r(n);case i.KANJI:return new s(n);case i.BYTE:return new a(n)}}e.fromArray=function(n){return n.reduce(function(n,e){return"string"==typeof e?n.push(m(e,null)):e.data&&n.push(m(e.data,e.mode)),n},[])},e.fromString=function(n,t){const o=function(n){const e=[];for(let t=0;t<n.length;t++){const o=n[t];switch(o.mode){case i.NUMERIC:e.push([o,{data:o.data,mode:i.ALPHANUMERIC,length:o.length},{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.ALPHANUMERIC:e.push([o,{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.KANJI:e.push([o,{data:o.data,mode:i.BYTE,length:u(o.data)}]);break;case i.BYTE:e.push([{data:o.data,mode:i.BYTE,length:u(o.data)}])}}return e}(p(n,c.isKanjiModeEnabled())),r=function(n,e){const t={},o={start:{}};let r=["start"];for(let a=0;a<n.length;a++){const s=n[a],l=[];for(let n=0;n<s.length;n++){const c=s[n],d=""+a+n;l.push(d),t[d]={node:c,lastCount:0},o[d]={};for(let n=0;n<r.length;n++){const a=r[n];t[a]&&t[a].node.mode===c.mode?(o[a][d]=f(t[a].lastCount+c.length,c.mode)-f(t[a].lastCount,c.mode),t[a].lastCount+=c.length):(t[a]&&(t[a].lastCount=c.length),o[a][d]=f(c.length,c.mode)+4+i.getCharCountIndicator(c.mode,e))}}r=l}for(let n=0;n<r.length;n++)o[r[n]].end=0;return{map:o,table:t}}(o,t),a=d.find_path(r.map,"start","end"),s=[];for(let n=1;n<a.length-1;n++)s.push(r.table[a[n]].node);return e.fromArray(function(n){return n.reduce(function(n,e){const t=n.length-1>=0?n[n.length-1]:null;return t&&t.mode===e.mode?(n[n.length-1].data+=e.data,n):(n.push(e),n)},[])}(s))},e.rawSplit=function(n){return e.fromArray(p(n,c.isKanjiModeEnabled()))}},6886(n,e){let t;const i=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return 4*n+17},e.getSymbolTotalCodewords=function(n){return i[n]},e.getBCHDigit=function(n){let e=0;for(;0!==n;)e++,n>>>=1;return e},e.setToSJISFunction=function(n){if("function"!=typeof n)throw new Error('"toSJISFunc" is not a valid function.');t=n},e.isKanjiModeEnabled=function(){return void 0!==t},e.toSJIS=function(n){return t(n)}},1878(n,e){e.isValid=function(n){return!isNaN(n)&&n>=1&&n<=40}},1427(n,e,t){const i=t(6886),o=t(7518),r=t(9953),a=t(208),s=t(1878),l=i.getBCHDigit(7973);function c(n,e){return a.getCharCountIndicator(n,e)+4}function d(n,e){let t=0;return n.forEach(function(n){const i=c(n.mode,e);t+=i+n.getBitsLength()}),t}e.from=function(n,e){return s.isValid(n)?parseInt(n,10):e},e.getCapacity=function(n,e,t){if(!s.isValid(n))throw new Error("Invalid QR Code version");void 0===t&&(t=a.BYTE);const r=8*(i.getSymbolTotalCodewords(n)-o.getTotalCodewordsCount(n,e));if(t===a.MIXED)return r;const l=r-c(t,n);switch(t){case a.NUMERIC:return Math.floor(l/10*3);case a.ALPHANUMERIC:return Math.floor(l/11*2);case a.KANJI:return Math.floor(l/13);case a.BYTE:default:return Math.floor(l/8)}},e.getBestVersionForData=function(n,t){let i;const o=r.from(t,r.M);if(Array.isArray(n)){if(n.length>1)return function(n,t){for(let i=1;i<=40;i++)if(d(n,i)<=e.getCapacity(i,t,a.MIXED))return i}(n,o);if(0===n.length)return 1;i=n[0]}else i=n;return function(n,t,i){for(let o=1;o<=40;o++)if(t<=e.getCapacity(o,i,n))return o}(i.mode,i.getLength(),o)},e.getEncodedBits=function(n){if(!s.isValid(n)||n<7)throw new Error("Invalid QR Code version");let e=n<<12;for(;i.getBCHDigit(e)-l>=0;)e^=7973<<i.getBCHDigit(e)-l;return n<<12|e}},7899(n,e,t){const i=t(2726);e.render=function(n,e,t){let o=t,r=e;void 0!==o||e&&e.getContext||(o=e,e=void 0),e||(r=function(){try{return document.createElement("canvas")}catch(n){throw new Error("You need to specify a canvas element")}}()),o=i.getOptions(o);const a=i.getImageWidth(n.modules.size,o),s=r.getContext("2d"),l=s.createImageData(a,a);return i.qrToImageData(l.data,n,o),function(n,e,t){n.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}(s,r,a),s.putImageData(l,0,0),r},e.renderToDataURL=function(n,t,i){let o=i;void 0!==o||t&&t.getContext||(o=t,t=void 0),o||(o={});const r=e.render(n,t,o),a=o.type||"image/png",s=o.rendererOpts||{};return r.toDataURL(a,s.quality)}},6756(n,e,t){const i=t(2726);function o(n,e){const t=n.a/255,i=e+'="'+n.hex+'"';return t<1?i+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function r(n,e,t){let i=n+e;return void 0!==t&&(i+=" "+t),i}e.render=function(n,e,t){const a=i.getOptions(e),s=n.modules.size,l=n.modules.data,c=s+2*a.margin,d=a.color.light.a?"<path "+o(a.color.light,"fill")+' d="M0 0h'+c+"v"+c+'H0z"/>':"",u="<path "+o(a.color.dark,"stroke")+' d="'+function(n,e,t){let i="",o=0,a=!1,s=0;for(let l=0;l<n.length;l++){const c=Math.floor(l%e),d=Math.floor(l/e);c||a||(a=!0),n[l]?(s++,l>0&&c>0&&n[l-1]||(i+=a?r("M",c+t,.5+d+t):r("m",o,0),o=0,a=!1),c+1<e&&n[l+1]||(i+=r("h",s),s=0)):o++}return i}(l,s,a.margin)+'"/>',A='viewBox="0 0 '+c+" "+c+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(a.width?'width="'+a.width+'" height="'+a.width+'" ':"")+A+' shape-rendering="crispEdges">'+d+u+"</svg>\n";return"function"==typeof t&&t(null,p),p}},2726(n,e){function t(n){if("number"==typeof n&&(n=n.toString()),"string"!=typeof n)throw new Error("Color should be defined as hex string");let e=n.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+n);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map(function(n){return[n,n]}))),6===e.length&&e.push("F","F");const t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:255&t,hex:"#"+e.slice(0,6).join("")}}e.getOptions=function(n){n||(n={}),n.color||(n.color={});const e=void 0===n.margin||null===n.margin||n.margin<0?4:n.margin,i=n.width&&n.width>=21?n.width:void 0,o=n.scale||4;return{width:i,scale:i?4:o,margin:e,color:{dark:t(n.color.dark||"#000000ff"),light:t(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},e.getScale=function(n,e){return e.width&&e.width>=n+2*e.margin?e.width/(n+2*e.margin):e.scale},e.getImageWidth=function(n,t){const i=e.getScale(n,t);return Math.floor((n+2*t.margin)*i)},e.qrToImageData=function(n,t,i){const o=t.modules.size,r=t.modules.data,a=e.getScale(o,i),s=Math.floor((o+2*i.margin)*a),l=i.margin*a,c=[i.color.light,i.color.dark];for(let e=0;e<s;e++)for(let t=0;t<s;t++){let d=4*(e*s+t),u=i.color.light;if(e>=l&&t>=l&&e<s-l&&t<s-l){u=c[r[Math.floor((e-l)/a)*o+Math.floor((t-l)/a)]?1:0]}n[d++]=u.r,n[d++]=u.g,n[d++]=u.b,n[d]=u.a}}},5072(n){"use strict";var e=[];function t(n){for(var t=-1,i=0;i<e.length;i++)if(e[i].identifier===n){t=i;break}return t}function i(n,i){for(var r={},a=[],s=0;s<n.length;s++){var l=n[s],c=i.base?l[0]+i.base:l[0],d=r[c]||0,u="".concat(c," ").concat(d);r[c]=d+1;var A=t(u),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==A)e[A].references++,e[A].updater(p);else{var f=o(p,i);i.byIndex=s,e.splice(s,0,{identifier:u,updater:f,references:1})}a.push(u)}return a}function o(n,e){var t=e.domAPI(e);t.update(n);return function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap&&e.supports===n.supports&&e.layer===n.layer)return;t.update(n=e)}else t.remove()}}n.exports=function(n,o){var r=i(n=n||[],o=o||{});return function(n){n=n||[];for(var a=0;a<r.length;a++){var s=t(r[a]);e[s].references--}for(var l=i(n,o),c=0;c<r.length;c++){var d=t(r[c]);0===e[d].references&&(e[d].updater(),e.splice(d,1))}r=l}}},7659(n){"use strict";var e={};n.exports=function(n,t){var i=function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}e[n]=t}return e[n]}(n);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(t)}},540(n){"use strict";n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},5056(n,e,t){"use strict";n.exports=function(n){var e=t.nc;e&&n.setAttribute("nonce",e)}},7825(n){"use strict";n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(t){!function(n,e,t){var i="";t.supports&&(i+="@supports (".concat(t.supports,") {")),t.media&&(i+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(i+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),i+=t.css,o&&(i+="}"),t.media&&(i+="}"),t.supports&&(i+="}");var r=t.sourceMap;r&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleTagTransform(i,n,e.options)}(e,n,t)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}},1113(n){"use strict";n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},6077(n){n.exports=function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){"use strict";t.r(e),t.d(e,"validateHTMLColorName",function(){return a}),t.d(e,"validateHTMLColorSpecialName",function(){return s}),t.d(e,"validateHTMLColorHex",function(){return l}),t.d(e,"validateHTMLColorRgb",function(){return m}),t.d(e,"validateHTMLColorHsl",function(){return h}),t.d(e,"validateHTMLColorHwb",function(){return g}),t.d(e,"validateHTMLColorLab",function(){return C}),t.d(e,"validateHTMLColorLch",function(){return b}),t.d(e,"validateHTMLColor",function(){return E});const i=n=>n&&"string"==typeof n,o=["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenrod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","Goldenrod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenrodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquamarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenrod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"],r=["currentColor","inherit","transparent"],a=n=>{let e=!1;return i(n)&&o.map(t=>(n.toLowerCase()===t.toLowerCase()&&(e=!0),null)),e},s=n=>{let e=!1;return i(n)&&r.map(t=>(n.toLowerCase()===t.toLowerCase()&&(e=!0),null)),e},l=n=>{if(i(n)){return n&&/^#([\da-f]{3}){1,2}$|^#([\da-f]{4}){1,2}$/i.test(n)}return!1},c="(([\\d]{0,5})((\\.([\\d]{1,5}))?))",d=`(${c}%)`,u="(([0-9]|[1-9][0-9]|100)%)",A=`(${u}|(0?((\\.([\\d]{1,5}))?))|1)`,p=`([\\s]{0,5})\\)?)(([\\s]{0,5})(\\/?)([\\s]{1,5})(((${u}))|(0?((\\.([\\d]{1,5}))?))|1))?([\\s]{0,5})\\)`,f="(-?(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\.([\\d]{1,5}))?)|360)(deg)?)",m=n=>{if(i(n)){const e="([\\s]{0,5})([\\d]{1,5})%?([\\s]{0,5}),?",t="((([\\s]{0,5}),?([\\s]{0,5}))|(([\\s]{1,5})))",i=new RegExp(`^(rgb)a?\\(${e}${t}${e}${t}${e}${t}((\\/?([\\s]{0,5})(0?\\.?([\\d]{1,5})%?([\\s]{0,5}))?|1|0))?\\)$`);return n&&i.test(n)}return!1},h=n=>{if(i(n)){const e=new RegExp(`^(hsl)a?\\((([\\s]{0,5})(${f}|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-9][0-9]|400)grad)|((([0-5])?\\.([\\d]{1,5})|6\\.([0-9]|1[0-9]|2[0-8])|[0-6])rad)|((0?((\\.([\\d]{1,5}))?)|1)turn))((([\\s]{0,5}),([\\s]{0,5}))|(([\\s]{1,5}))))(([\\s]{0,5})(0|${u})((([\\s]{0,5}),([\\s]{0,5}))|(([\\s]{1,5}))))(([\\s]{0,5})(0|${u})([\\s]{0,5})\\)?)(([\\s]{0,5})(\\/?|,?)([\\s]{0,5})(((${u}))|(0?((\\.([\\d]{1,5}))?))|1))?\\)$`);return n&&e.test(n)}return!1},g=n=>{if(i(n)){const e=new RegExp(`^(hwb\\(([\\s]{0,5})${f}([\\s]{1,5}))((0|${u})([\\s]{1,5}))((0|${u})${p}$`);return n&&e.test(n)}return!1},C=n=>{if(i(n)){const e="(-?(([0-9]|[1-9][0-9]|1[0-5][0-9])((\\.([\\d]{1,5}))?)?|160))",t=new RegExp(`^(lab\\(([\\s]{0,5})${d}([\\s]{1,5})${e}([\\s]{1,5})${e}${p}$`);return n&&t.test(n)}return!1},b=n=>{if(i(n)){const e=new RegExp(`^lch\\((([\\s]{0,5})${"((([0-9]|[1-9][0-9])?((\\.([\\d]{1,5}))?)|100)(%)?)"}([\\s]{1,5})${""+c}([\\s]{1,5})${`((${f})|(0|${A})|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\.([\\d]{1,5}))?)|360))`}([\\s]{0,5})(${`(\\/([\\s]{0,5})${A})`})?)\\)$`);return n&&e.test(n)}return!1},E=n=>!!(n&&l(n)||m(n)||h(n)||g(n)||C(n)||b(n));e.default=n=>!!(n&&l(n)||a(n)||s(n)||m(n)||h(n)||g(n)||C(n)||b(n))}])},5663(n){"use strict";n.exports=e},9426(e){"use strict";e.exports=n},5491(n){"use strict";n.exports=t}},o={};function r(n){var e=o[n];if(void 0!==e)return e.exports;var t=o[n]={id:n,exports:{}};return i[n](t,t.exports,r),t.exports}r.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return r.d(e,{a:e}),e},r.d=(n,e)=>{for(var t in e)r.o(e,t)&&!r.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},r.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),r.nc=void 0;var a={};return(()=>{"use strict";r.d(a,{default:()=>Ue});var n=r(5072),e=r.n(n),t=r(7825),i=r.n(t),o=r(7659),s=r.n(o),l=r(5056),c=r.n(l),d=r(540),u=r.n(d),A=r(1113),p=r.n(A),f=r(1267),m={};m.styleTagTransform=p(),m.setAttributes=c(),m.insert=s().bind(null,"head"),m.domAPI=i(),m.insertStyleElement=u();e()(f.A,m);f.A&&f.A.locals&&f.A.locals;var h=r(3750),g={};g.styleTagTransform=p(),g.setAttributes=c(),g.insert=s().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=u();e()(h.A,g);h.A&&h.A.locals&&h.A.locals;var C=r(1666),b={};b.styleTagTransform=p(),b.setAttributes=c(),b.insert=s().bind(null,"head"),b.domAPI=i(),b.insertStyleElement=u();e()(C.A,b);C.A&&C.A.locals&&C.A.locals;var E=r(1937),v={};v.styleTagTransform=p(),v.setAttributes=c(),v.insert=s().bind(null,"head"),v.domAPI=i(),v.insertStyleElement=u();e()(E.A,v);E.A&&E.A.locals&&E.A.locals;var w=r(436),B={};B.styleTagTransform=p(),B.setAttributes=c(),B.insert=s().bind(null,"head"),B.domAPI=i(),B.insertStyleElement=u();e()(w.A,B);w.A&&w.A.locals&&w.A.locals;var y=r(1134),x={};x.styleTagTransform=p(),x.setAttributes=c(),x.insert=s().bind(null,"head"),x.domAPI=i(),x.insertStyleElement=u();e()(y.A,x);y.A&&y.A.locals&&y.A.locals;var k=r(1649),S={};S.styleTagTransform=p(),S.setAttributes=c(),S.insert=s().bind(null,"head"),S.domAPI=i(),S.insertStyleElement=u();e()(k.A,S);k.A&&k.A.locals&&k.A.locals;var F=r(6660),$={};$.styleTagTransform=p(),$.setAttributes=c(),$.insert=s().bind(null,"head"),$.domAPI=i(),$.insertStyleElement=u();e()(F.A,$);F.A&&F.A.locals&&F.A.locals;var P=r(5092),T={};T.styleTagTransform=p(),T.setAttributes=c(),T.insert=s().bind(null,"head"),T.domAPI=i(),T.insertStyleElement=u();e()(P.A,T);P.A&&P.A.locals&&P.A.locals;const L=globalThis,I=n=>n,N=L.trustedTypes,R=N?N.createPolicy("lit-html",{createHTML:n=>n}):void 0,z="$lit$",_=`lit$${Math.random().toFixed(9).slice(2)}$`,O="?"+_,M=`<${O}>`,D=document,U=()=>D.createComment(""),H=n=>null===n||"object"!=typeof n&&"function"!=typeof n,G=Array.isArray,j=n=>G(n)||"function"==typeof n?.[Symbol.iterator],q="[ \t\n\f\r]",W=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,V=/-->/g,Y=/>/g,Q=RegExp(`>|${q}(?:([^\\s"'>=/]+)(${q}*=${q}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),Z=/'/g,J=/"/g,K=/^(?:script|style|textarea|title)$/i,X=n=>(e,...t)=>({_$litType$:n,strings:e,values:t}),nn=X(1),en=(X(2),X(3),Symbol.for("lit-noChange")),tn=Symbol.for("lit-nothing"),on=new WeakMap,rn=D.createTreeWalker(D,129);function an(n,e){if(!G(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==R?R.createHTML(e):e}const sn=(n,e)=>{const t=n.length-1,i=[];let o,r=2===e?"<svg>":3===e?"<math>":"",a=W;for(let e=0;e<t;e++){const t=n[e];let s,l,c=-1,d=0;for(;d<t.length&&(a.lastIndex=d,l=a.exec(t),null!==l);)d=a.lastIndex,a===W?"!--"===l[1]?a=V:void 0!==l[1]?a=Y:void 0!==l[2]?(K.test(l[2])&&(o=RegExp("</"+l[2],"g")),a=Q):void 0!==l[3]&&(a=Q):a===Q?">"===l[0]?(a=o??W,c=-1):void 0===l[1]?c=-2:(c=a.lastIndex-l[2].length,s=l[1],a=void 0===l[3]?Q:'"'===l[3]?J:Z):a===J||a===Z?a=Q:a===V||a===Y?a=W:(a=Q,o=void 0);const u=a===Q&&n[e+1].startsWith("/>")?" ":"";r+=a===W?t+M:c>=0?(i.push(s),t.slice(0,c)+z+t.slice(c)+_+u):t+_+(-2===c?e:u)}return[an(n,r+(n[t]||"<?>")+(2===e?"</svg>":3===e?"</math>":"")),i]};class ln{constructor({strings:n,_$litType$:e},t){let i;this.parts=[];let o=0,r=0;const a=n.length-1,s=this.parts,[l,c]=sn(n,e);if(this.el=ln.createElement(l,t),rn.currentNode=this.el.content,2===e||3===e){const n=this.el.content.firstChild;n.replaceWith(...n.childNodes)}for(;null!==(i=rn.nextNode())&&s.length<a;){if(1===i.nodeType){if(i.hasAttributes())for(const n of i.getAttributeNames())if(n.endsWith(z)){const e=c[r++],t=i.getAttribute(n).split(_),a=/([.?@])?(.*)/.exec(e);s.push({type:1,index:o,name:a[2],strings:t,ctor:"."===a[1]?pn:"?"===a[1]?fn:"@"===a[1]?mn:An}),i.removeAttribute(n)}else n.startsWith(_)&&(s.push({type:6,index:o}),i.removeAttribute(n));if(K.test(i.tagName)){const n=i.textContent.split(_),e=n.length-1;if(e>0){i.textContent=N?N.emptyScript:"";for(let t=0;t<e;t++)i.append(n[t],U()),rn.nextNode(),s.push({type:2,index:++o});i.append(n[e],U())}}}else if(8===i.nodeType)if(i.data===O)s.push({type:2,index:o});else{let n=-1;for(;-1!==(n=i.data.indexOf(_,n+1));)s.push({type:7,index:o}),n+=_.length-1}o++}}static createElement(n,e){const t=D.createElement("template");return t.innerHTML=n,t}}function cn(n,e,t=n,i){if(e===en)return e;let o=void 0!==i?t._$Co?.[i]:t._$Cl;const r=H(e)?void 0:e._$litDirective$;return o?.constructor!==r&&(o?._$AO?.(!1),void 0===r?o=void 0:(o=new r(n),o._$AT(n,t,i)),void 0!==i?(t._$Co??=[])[i]=o:t._$Cl=o),void 0!==o&&(e=cn(n,o._$AS(n,e.values),o,i)),e}class dn{constructor(n,e){this._$AV=[],this._$AN=void 0,this._$AD=n,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(n){const{el:{content:e},parts:t}=this._$AD,i=(n?.creationScope??D).importNode(e,!0);rn.currentNode=i;let o=rn.nextNode(),r=0,a=0,s=t[0];for(;void 0!==s;){if(r===s.index){let e;2===s.type?e=new un(o,o.nextSibling,this,n):1===s.type?e=new s.ctor(o,s.name,s.strings,this,n):6===s.type&&(e=new hn(o,this,n)),this._$AV.push(e),s=t[++a]}r!==s?.index&&(o=rn.nextNode(),r++)}return rn.currentNode=D,i}p(n){let e=0;for(const t of this._$AV)void 0!==t&&(void 0!==t.strings?(t._$AI(n,t,e),e+=t.strings.length-2):t._$AI(n[e])),e++}}class un{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(n,e,t,i){this.type=2,this._$AH=tn,this._$AN=void 0,this._$AA=n,this._$AB=e,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let n=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===n?.nodeType&&(n=e.parentNode),n}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(n,e=this){n=cn(this,n,e),H(n)?n===tn||null==n||""===n?(this._$AH!==tn&&this._$AR(),this._$AH=tn):n!==this._$AH&&n!==en&&this._(n):void 0!==n._$litType$?this.$(n):void 0!==n.nodeType?this.T(n):j(n)?this.k(n):this._(n)}O(n){return this._$AA.parentNode.insertBefore(n,this._$AB)}T(n){this._$AH!==n&&(this._$AR(),this._$AH=this.O(n))}_(n){this._$AH!==tn&&H(this._$AH)?this._$AA.nextSibling.data=n:this.T(D.createTextNode(n)),this._$AH=n}$(n){const{values:e,_$litType$:t}=n,i="number"==typeof t?this._$AC(n):(void 0===t.el&&(t.el=ln.createElement(an(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{const n=new dn(i,this),t=n.u(this.options);n.p(e),this.T(t),this._$AH=n}}_$AC(n){let e=on.get(n.strings);return void 0===e&&on.set(n.strings,e=new ln(n)),e}k(n){G(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let t,i=0;for(const o of n)i===e.length?e.push(t=new un(this.O(U()),this.O(U()),this,this.options)):t=e[i],t._$AI(o),i++;i<e.length&&(this._$AR(t&&t._$AB.nextSibling,i),e.length=i)}_$AR(n=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);n!==this._$AB;){const e=I(n).nextSibling;I(n).remove(),n=e}}setConnected(n){void 0===this._$AM&&(this._$Cv=n,this._$AP?.(n))}}class An{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(n,e,t,i,o){this.type=1,this._$AH=tn,this._$AN=void 0,this.element=n,this.name=e,this._$AM=i,this.options=o,t.length>2||""!==t[0]||""!==t[1]?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=tn}_$AI(n,e=this,t,i){const o=this.strings;let r=!1;if(void 0===o)n=cn(this,n,e,0),r=!H(n)||n!==this._$AH&&n!==en,r&&(this._$AH=n);else{const i=n;let a,s;for(n=o[0],a=0;a<o.length-1;a++)s=cn(this,i[t+a],e,a),s===en&&(s=this._$AH[a]),r||=!H(s)||s!==this._$AH[a],s===tn?n=tn:n!==tn&&(n+=(s??"")+o[a+1]),this._$AH[a]=s}r&&!i&&this.j(n)}j(n){n===tn?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,n??"")}}class pn extends An{constructor(){super(...arguments),this.type=3}j(n){this.element[this.name]=n===tn?void 0:n}}class fn extends An{constructor(){super(...arguments),this.type=4}j(n){this.element.toggleAttribute(this.name,!!n&&n!==tn)}}class mn extends An{constructor(n,e,t,i,o){super(n,e,t,i,o),this.type=5}_$AI(n,e=this){if((n=cn(this,n,e,0)??tn)===en)return;const t=this._$AH,i=n===tn&&t!==tn||n.capture!==t.capture||n.once!==t.once||n.passive!==t.passive,o=n!==tn&&(t===tn||i);i&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,n),this._$AH=n}handleEvent(n){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,n):this._$AH.handleEvent(n)}}class hn{constructor(n,e,t){this.element=n,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(n){cn(this,n)}}const gn={M:z,P:_,A:O,C:1,L:sn,R:dn,D:j,V:cn,I:un,H:An,N:fn,U:mn,B:pn,F:hn},Cn=L.litHtmlPolyfillSupport;Cn?.(ln,un),(L.litHtmlVersions??=[]).push("3.3.2");var bn=r(9426),En=r(5663);const{I:vn}=gn,wn=2;class Bn{constructor(n){}get _$AU(){return this._$AM._$AU}_$AT(n,e,t){this._$Ct=n,this._$AM=e,this._$Ci=t}_$AS(n,e){return this.update(n,e)}update(n,e){return this.render(...e)}}const yn=(n,e)=>{const t=n._$AN;if(void 0===t)return!1;for(const n of t)n._$AO?.(e,!1),yn(n,e);return!0},xn=n=>{let e,t;do{if(void 0===(e=n._$AM))break;t=e._$AN,t.delete(n),n=e}while(0===t?.size)},kn=n=>{for(let e;e=n._$AM;n=e){let t=e._$AN;if(void 0===t)e._$AN=t=new Set;else if(t.has(n))break;t.add(n),$n(e)}};function Sn(n){void 0!==this._$AN?(xn(this),this._$AM=n,kn(this)):this._$AM=n}function Fn(n,e=!1,t=0){const i=this._$AH,o=this._$AN;if(void 0!==o&&0!==o.size)if(e)if(Array.isArray(i))for(let n=t;n<i.length;n++)yn(i[n],!1),xn(i[n]);else null!=i&&(yn(i,!1),xn(i));else yn(this,n)}const $n=n=>{n.type==wn&&(n._$AP??=Fn,n._$AQ??=Sn)};class Pn extends Bn{constructor(){super(...arguments),this._$AN=void 0}_$AT(n,e,t){super._$AT(n,e,t),kn(this),this.isConnected=n._$AU}_$AO(n,e=!0){n!==this.isConnected&&(this.isConnected=n,n?this.reconnected?.():this.disconnected?.()),e&&(yn(this,n),xn(this))}setValue(n){if((n=>void 0===n.strings)(this._$Ct))this._$Ct._$AI(n,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=n,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class Tn{constructor(n){this.G=n}disconnect(){this.G=void 0}reconnect(n){this.G=n}deref(){return this.G}}class Ln{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise(n=>this.Z=n)}resume(){this.Z?.(),this.Y=this.Z=void 0}}const In=(n=>(...e)=>({_$litDirective$:n,values:e}))(class extends Pn{constructor(){super(...arguments),this._$CK=new Tn(this),this._$CX=new Ln}render(n,e){return en}update(n,[e,t]){if(this.isConnected||this.disconnected(),e===this._$CJ)return en;this._$CJ=e;let i=0;const{_$CK:o,_$CX:r}=this;return(async(n,e)=>{for await(const t of n)if(!1===await e(t))return})(e,async n=>{for(;r.get();)await r.get();const a=o.deref();if(void 0!==a){if(a._$CJ!==e)return!1;void 0!==t&&(n=t(n,i)),a.commitValue(n,i),i++}return!0}),en}commitValue(n,e){this.setValue(n)}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}),Nn="Current user not found! Not logged in?",Rn="Friend already exists",zn="Add me to your friends",_n="Login to add me to your friends",On="Login to chat with me",Mn="Chat with me",Dn="Resume",Un="Social Accounts",Hn="Friends";function Gn(n,e,t){const i=bn.widgets.errorMessageBlock(e.dom,t);i.setAttribute("role","alert"),i.setAttribute("aria-live","assertive"),i.setAttribute("tabindex","0"),setTimeout(()=>{i.focus()},100),n.appendChild(i)}function jn(n){for(;n.childNodes.length>2;)n.removeChild(n.lastChild)}function qn(n){return!!n}const Wn=(n,{dom:e})=>{const t=e.createElement("div");return bn.widgets.attachmentList(e,n,t,{doc:n.doc(),modify:!1,predicate:bn.ns.foaf("knows"),noun:"friend"}),""===t.textContent?null:(t.querySelectorAll("li").forEach((n,e)=>{n.classList.add("friendItem");const t=n.querySelector("a");t&&t.textContent?n.setAttribute("aria-label",`Friend: ${t.textContent.trim()}`):n.textContent?n.setAttribute("aria-label",`Friend: ${n.textContent.trim()}`):n.setAttribute("aria-label",`Friend ${e+1}`)}),t)};var Vn=r(6077);const Yn=(n,e)=>{const t=bn.utils.label(n),i=bn.widgets.findImage(n),o=e.anyValue(n,bn.ns.vcard("role")),r=e.anyValue(n,bn.ns.vcard("organization-name")),a=e.any(n,bn.ns.vcard("hasAddress")),s=null!=a?e.anyValue(a,bn.ns.vcard("country-name")):null,l=null!=a?e.anyValue(a,bn.ns.vcard("locality")):null,{backgroundColor:c,highlightColor:d}=function(n,e){const t=e.anyValue(n,bn.ns.solid("profileBackgroundColor"),null,n.doc()),i=e.anyValue(n,bn.ns.solid("profileHighlightColor"),null,n.doc());return{backgroundColor:Jn(t,""),highlightColor:Jn(i,"")}}(n,e),u=function(n){let e=En.store.anyJS(n,bn.ns.solid("preferredSubjectPronoun"))||"";if(e){const t=En.store.anyJS(n,bn.ns.solid("preferredObjectPronoun"));if(t){e+="/"+t;const i=En.store.anyJS(n,bn.ns.solid("preferredRelativePronoun"));i&&(e+="/"+i)}e=" ("+e+") "}return e||""}(n);return{name:t,imageSrc:i,introduction:Zn(o,r),location:Qn(s,l),backgroundColor:c,pronouns:u,highlightColor:d}};function Qn(n,e){return n&&e?`${e}, ${n}`:n||e||null}function Zn(n,e){return n&&e?`${n} at ${e}`:e||n||null}function Jn(n,e){return n&&(0,Vn.validateHTMLColorHex)(n)?n:e}var Kn=r(5491);const Xn=(0,Kn.Namespace)("http://www.w3.org/ns/org#"),ne=["PastRole","CurrentRole","FutureRole"];function ee(n,e){return n?"("+n.value.slice(0,10)+" to "+(e?e.value.slice(0,10):"")+")":""}function te(n,e){const t=e.elements;if(Array.isArray(t))return t.flatMap(e=>te(n,e));if(!n.any(e,bn.ns.rdf("first")))return[e];const i=[];let o=e;for(;o;){const e=n.any(o,bn.ns.rdf("first"));e&&i.push(...te(n,e));const t=n.any(o,bn.ns.rdf("rest"));if(!t||"NamedNode"===t.termType&&t.value===bn.ns.rdf("nil").value)break;o=t}return i}function ie(n,e){const t=function(n,e){const t=n.each(null,Xn("member"),e,null),i={PastRole:[],CurrentRole:[],FutureRole:[]};for(const e of t){let t,o,r,a,s;const l=n.any(e,bn.ns.schema("startDate")),c=n.any(e,bn.ns.schema("endDate")),d=ee(l,c),u=n.any(e,Xn("organization"));u&&(o=n.anyJS(u,bn.ns.schema("name")),t=n.any(u,bn.ns.schema("uri")),s=n.any(u,bn.ns.solid("publicId"))),s&&(r=n.anyJS(s,bn.ns.schema("name")));const A=r||o,p=n.any(e,Xn("role"));p&&(a=n.anyJS(p,bn.ns.schema("name")));const f=n.anyJS(e,bn.ns.vcard("role")),m={startDate:l,endDate:c,orgName:A,roleText:f&&a?a+" - "+f:f||a,dates:d,orgHomePage:t};for(const t of ne)n.holds(e,bn.ns.rdf("type"),bn.ns.solid(t))&&i[t].push(m)}return i}(e,n);for(const n of ne)t[n].sort(function(n,e){return n.endDate&&e.endDate?n.endDate>e.endDate?-1:1:n.startDate>e.startDate?-1:1});const i=e.each(n,bn.ns.schema("skills")).map(n=>function(n,e){if("Literal"===e.termType)return e.value;const t=n.anyJS(e,bn.ns.solid("publicId"));if(t){const e=n.anyJS(t,bn.ns.schema("name"));if(e)return e}const i=n.anyJS(e,bn.ns.vcard("role"));return i&&i[0]>""?i:""}(e,n)).filter(n=>""!==n),o=e.each(n,bn.ns.schema("knowsLanguage")).flatMap(n=>te(e,n)).map(n=>function(n,e){if("Literal"===e.termType)return e.value;const t=n.anyJS(e,bn.ns.solid("publicId"));return t?bn.utils.label(t,!0):""}(e,n));return{rolesByType:t,skills:i,languages:Array.from(new Set(o))}}const oe='@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix org: <http://www.w3.org/ns/org#>.\n@prefix : <#>.\n\n########### ATTENTION - we cannot rename this ontology file name without migrating existing data on existing accounts\n\n########### Social Media - other accounts\n#\n# Twitter, linked In, Orkid, Mastodon, Matrix, Bluesky, Instagram, Facebook, Github,\n# Snapchat, TikTok, etc\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Social media form" ;\n a ui:Form ;\n ui:parts (\n :SocialsForm\n ).\n\n:SocialsForm a ui:Multiple;\n ui:label "online account";\n ui:property foaf:account; # the triple is created with the foaf:acccounts predicate\n ui:ordered true; # Allow user to order occounts most important first.\n ui:part :AccountsForm.\n\n:AccountsForm a ui:Group; \n ui:weight 1; \n ui:parts ( \n :AccountField \n :AccountIdField ).\n\n:AccountField a ui:Classifier; \n ui:label "Choose account"@en;\n ui:multiple false ; \n ui:category foaf:Account. # the accounts are described by the foaf:Account predicate\n\n# this is what is needed to make a dropdown box\nfoaf:Account a rdfs:Class;\n rdfs:label "Online Account Provider";\n owl:disjointUnionOf ( \n :BlueSkyAccount :DiggAccount :FacebookAccount :GithubAccount :InstagramAccount\n :LinkedInAccount :MastodonAccount :MatrixAccount :MediumAccount :NostrAccount \n :OrcidAccount :PinterestAccount :RedditAccount :SnapchatAccount :StravaAccount \n :TiktokAccount :TumblrAccount :TwitterAccount :OtherAccount) .\n\n:AccountIdField a ui:Options; \n ui:dependingOn rdf:type; \n ui:case\n [ ui:for :BlueSkyAccount; ui:use :BlueSkyIdField ],\n [ ui:for :DiggAccount; ui:use :DiggIdField],\n [ ui:for :FacebookAccount; ui:use :FacebookIdField ],\n [ ui:for :GithubAccount; ui:use :GithubIdField ],\n [ ui:for :InstagramAccount; ui:use :InstagramIdField ],\n [ ui:for :LinkedInAccount; ui:use :LinkedInIdField ],\n [ ui:for :MastodonAccount; ui:use :MastodonIdField ],\n [ ui:for :MatrixAccount; ui:use :MatrixIdField ],\n [ ui:for :MediumAccount; ui:use :MediumIdField ],\n [ ui:for :NostrAccount; ui:use :NostrIdField ],\n [ ui:for :OrcidAccount; ui:use :OrcidIdField ],\n [ ui:for :PinterestAccount; ui:use :PinterestIdField ],\n [ ui:for :RedditAccount; ui:use :RedditIdField ],\n [ ui:for :StravaAccount; ui:use :StravaIdField ],\n [ ui:for :SnapchatAccount; ui:use :SnapchatIdField ],\n [ ui:for :TiktokAccount; ui:use :TiktokIdField ],\n [ ui:for :TumblrAccount; ui:use :TumblrIdField ],\n [ ui:for :TwitterAccount; ui:use :TwitterIdField ],\n [ ui:for :OtherAccount; ui:use :OtherIdForm ] .\n\n:BlueSkyAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Bluesky";\n foaf:userProfilePrefix "https://bsky.app/profile/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/bluesky-1.svg>;\n foaf:homepage <https://bsky.app/> .\n\n:DiggAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Digg";\n foaf:userProfilePrefix "https://www.digg.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/digg-icon.svg>;\n foaf:homepage <https://www.digg.com/> .\n\n:FacebookAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Facebook";\n foaf:userProfilePrefix "https://www.facebook.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/facebook-2020-2-1.svg>;\n foaf:homepage <https://www.facebook.com/> .\n\n:GithubAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Github";\n foaf:userProfilePrefix "https://www.github.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/github-icon.svg>;\n foaf:homepage <https://github.com/> .\n\n:InstagramAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Instagram";\n foaf:userProfilePrefix "https://www.instagram.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/instagram-2016-5.svg>;\n foaf:homepage <https://www.instagram.com/> .\n\n:LinkedInAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "LinkedIn";\n foaf:userProfilePrefix "https://www.linkedin.com/in/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/linkedin-icon.svg>;\n foaf:homepage <https://linkedin.com/> .\n\n:MastodonAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Mastodon" ;\n foaf:userProfilePrefix "https://mastodon.social/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/mastodon-2.svg>;\n foaf:homepage <https://joinmastodon.org/> .\n\n:MatrixAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Matrix" ;\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/matrix-logo-black.svg> ;\n foaf:userProfilePrefix "https://matrix.to/#/" ;\n foaf:homepage <https://matrix.org/> .\n\n:MediumAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Medium";\n foaf:userProfilePrefix "https://medium.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/medium-logo-wordmark-black.svg>;\n foaf:homepage <https://medium.com/> .\n\n:NostrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Nostr";\n foaf:userProfilePrefix "https://primal.net/p/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/nostr-icon-purple-on-white.svg>;\n foaf:homepage <https://nostr.net/> .\n\n:OrcidAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "ORCiD";\n foaf:userProfilePrefix "https://orcid.org/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/ORCID-1.svg>;\n foaf:homepage <https://orcid.org/> .\n\n:PinterestAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Pinterest";\n foaf:userProfilePrefix "https://pin.it/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/pinterest-2-1.svg>;\n foaf:homepage <https://pinterest.com/> .\n\n:RedditAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Reddit";\n foaf:userProfilePrefix "https://www.reddit.com/user/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/reddit-4.svg>;\n foaf:homepage <https://reddit.com/> .\n\n:SnapchatAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Snapchat";\n foaf:userProfilePrefix "https://www.snapchat.com/add/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/snapchat-1.svg>;\n foaf:homepage <https://www.snapchat.com/> .\n\n:StravaAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Strava";\n foaf:userProfilePrefix "https://www.strava.com/athletes/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/strava-2.svg>;\n foaf:homepage <https://strava.com/> .\n\n:TiktokAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "TikTok";\n foaf:userProfilePrefix "https://www.tiktok.com/@";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/tiktok-icon-2.svg>;\n foaf:homepage <https://www.tiktok.com/> .\n\n:TumblrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Tumblr";\n foaf:userProfilePrefix "https://www.tumblr.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/tumblr-icon.svg>;\n foaf:homepage <https://www.tumblr.com/> .\n\n:TwitterAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "X";\n foaf:userProfilePrefix "https://x.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/x-2.svg>;\n foaf:homepage <https://x.com/> .\n\n:OtherAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Other" ;\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/noun_1689339.svg> .\n\n:BlueSkyIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:DiggIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:FacebookIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:GithubIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:InstagramIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:LinkedInIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MastodonIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MatrixIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MediumIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:NostrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:OrcidIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:PinterestIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:RedditIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:StravaIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:SnapchatIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TiktokIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TumblrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TwitterIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n# an unknown online account needs more info\n\n:OtherIdForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :OtherIdField \n :OtherIconField \n :OtherLabelField ).\n\n:OtherIdField\n a ui:NamedNodeURIField ;\n ui:label "Account link";\n ui:maxLength "200" ;\n ui:property foaf:homepage.\n\n:OtherIconField\n a ui:NamedNodeURIField ;\n ui:label "Icon link";\n ui:maxLength "200" ;\n ui:property foaf:icon.\n\n:OtherLabelField\n a ui:SingleLineTextField ;\n ui:label "Name";\n ui:maxLength "200" ;\n ui:property rdfs:label.\n\n# ends\n',re="https://solidos.github.io/profile-pane/src/ontology/";function ae(n,e,t,i,o,r,a,s){const l=re+i,c=s||"this",d=(0,Kn.Namespace)(l+"#")(c);se(o,t,i,l),bn.widgets.appendForm(r,n,{},e,d,a,(n,e)=>{n||bn.widgets.errorMessageBlock(r,e)})}function se(n,e,t,i){const o=i||re+t,r=(0,Kn.sym)(o);n.holds(void 0,void 0,void 0,r)||(0,Kn.parse)(e,n,o,"text/turtle",()=>null)}const le=bn.icons.iconBase+"noun_10636_grey.svg";function ce(n,e){function t(n){const t=e.any(n,bn.ns.foaf("name"))||e.any(n,bn.ns.rdfs("label"));if(t)return t.value;const i=e.each(n,bn.ns.rdf("type"));for(const n of i){const t=e.any(n,bn.ns.rdfs("label"));return t?t.value:bn.utils.label(n)}return"Unknown Account"}function i(n){const t=e.any(n,bn.ns.foaf("icon"));if(t)return t.value;const i=e.each(n,bn.ns.rdf("type"));if(i.length>0)for(const n of i){const t=e.any(n,bn.ns.foaf("icon"));if(null!==t)return t.value}return le}function o(n){const t=e.any(n,bn.ns.foaf("homepage"));if(t)return t.value;const i=e.anyJS(n,bn.ns.foaf("accountName"),null,n.doc())||"No_account_Name",o=e.each(n,bn.ns.rdf("type"));for(const n of o)if("NamedNode"===n.termType){const t=e.any(n,bn.ns.foaf("userProfilePrefix"));if(t)return t.value+i.trim()}return e.anyJS(n,bn.ns.foaf("homepage"),null,n.doc())||""}function r(n){return{name:t(n),icon:i(n),homepage:o(n)}}se(e,oe,"socialMedia.ttl");let a=e.each(n,bn.ns.foaf("account")).flatMap(n=>function(n,e){const t=new Set;return function e(i){const o=`${i.termType||typeof i}:${i.value||String(i)}`;if(t.has(o))return[];t.add(o);const r=i.elements;if(Array.isArray(r))return r.flatMap(n=>e(n));if(!n.any(i,bn.ns.rdf("first")))return[i];const a=[];let s=i;for(;s;){const t=n.any(s,bn.ns.rdf("first"));t&&a.push(...e(t));const i=n.any(s,bn.ns.rdf("rest"));if(!i||"NamedNode"===i.termType&&i.value===bn.ns.rdf("nil").value)break;s=i}return a}(e)}(e,n));const s=new Set,l=[];for(const n of a)if("NamedNode"===n.termType){const t=e.any(n,bn.ns.foaf("accountName")),i=t?t.value:"";s.has(i)||(s.add(i),l.push(r(n)))}return l.length?{accounts:l}:{accounts:[]}}const{iconForClass:de}=bn.widgets,{typeIndex:ue}=En.solidLogicSingleton,{getScopedAppInstances:Ae}=ue,pe={};for(const n in de){const e=n.split(":")[0],t=n.split(":")[1],i=bn.ns[e](t);pe[i.uri]=Kn.uri.join(de[n],bn.icons.iconBase)}async function fe(n){return{stuff:(await Ae(null,n)).map(n=>{const e=(t=n.type||bn.ns.rdf("Resource"),pe[t.uri]||bn.icons.iconBase+"noun_10636.svg");var t;return{href:n.instance.uri,name:bn.utils.label(n.instance),icon:e,instance:n.instance}})}}let me=document.createElement("section");const he=(n,e)=>{let t=ge(En.authn.currentUser())?zn.toUpperCase():_n.toUpperCase();const i=bn.widgets.button(e.dom,void 0,t,function(t){t.preventDefault(),async function(n,e){const t=En.authn.currentUser(),i=e.session.store;if(!ge(t))throw new Error(Nn);if(await Ce(i,t,n))throw new Error(Rn);{await i.fetcher.load(t);const e=i.updater,o=[(0,Kn.st)(t,bn.ns.foaf("knows"),n,t.doc())];try{await e.update([],o)}catch(n){let e=n;throw e.toString().includes("Unauthenticated")&&(e=Nn),new Error(e)}}}(n,e).then(()=>{jn(me),function(n,e){const t=document.createElement("div");t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("tabindex","0"),t.classList.add("actionButton","licOkay"),t.innerHTML=e,setTimeout(()=>{t.focus()},100),n.appendChild(t)}(me,"Friend was added!"),o()}).catch(n=>{jn(me),Gn(me,e,n)})},{needsBorder:!0});function o(){const t=En.authn.currentUser(),o=e.session.store;ge(t)?Ce(o,t,n).then(n=>{i.innerHTML=n?"Already part of friends".toUpperCase():zn.toUpperCase()}):i.innerHTML=_n.toUpperCase()}return i.refresh=o(),i};function ge(n){return!!n}async function Ce(n,e,t){return await n.fetcher.load(e),0!==n.whether(e,bn.ns.foaf("knows"),t,e.doc())}function be(n){if(3===(n=n.replace(/^#/,"")).length&&(n=n.split("").map(n=>n+n).join("")),6!==n.length)return null;const e=parseInt(n,16);return{r:e>>16&255,g:e>>8&255,b:255&e}}function Ee({r:n,g:e,b:t}){const i=[n,e,t].map(function(n){return(n/=255)<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)});return.2126*i[0]+.7152*i[1]+.0722*i[2]}const ve=(n,e,t)=>{const i=n||"#000000",o=e||"#ffffff",r=bn.utils.label(t),a=function(n,e){const t=be(n),i=be(e);if(!t||!i)return 1;const o=Ee(t),r=Ee(i);return(Math.max(o,r)+.05)/(Math.min(o,r)+.05)}(i,o);a<4.5&&console.warn(`QRCodeCard: The contrast ratio between highlightColor (${i}) and backgroundColor (${o}) is ${a.toFixed(2)}, which is below the WCAG 2.1 recommended minimum of 4.5:1 for normal text.`);const s="FN:"+r+"\r\n",l="URL:"+t.uri+"r\n";setTimeout(()=>{const n=document.querySelector('.QRCode [role="img"]');if(n){const e=n.hasAttribute("aria-label"),t=n.hasAttribute("alt");e||t||console.warn("QRCodeCard: The QR code element should have an accessible label (aria-label or alt attribute) for screen readers.")}else console.warn('QRCodeCard: No element with role="img" found for the QR code. Ensure the QR code is rendered as an <img> or <canvas> with proper ARIA attributes.')},0);return nn`
|
|
1
|
+
!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("UI"),require("SolidLogic"),require("rdflib")):"function"==typeof define&&define.amd?define(["UI","SolidLogic","rdflib"],e):"object"==typeof exports?exports.ProfilePane=e(require("UI"),require("SolidLogic"),require("rdflib")):n.ProfilePane=e(n.UI,n.SolidLogic,n.rdflib)}(this,(n,e,t)=>(()=>{var i={1267(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvRole {\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0.2em;\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n","",{version:3,sources:["webpack://./src/styles/CVCard.css"],names:[],mappings:"AAAA,eAAe;AACf,2DAA2D;;AAE3D;EACE,qBAAqB;AACvB;;AAEA;EACE,2BAA2B;EAC3B,gCAAgC;EAChC,oCAAoC;EACpC,aAAa;EACb,sBAAsB;EACtB,UAAU;AACZ;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;AAC7B;;AAEA;EACE,gBAAgB;EAChB,2BAA2B;EAC3B,gCAAgC;EAChC,oCAAoC;AACtC;;AAEA;EACE,wBAAwB;EACxB,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,gCAAgC;EAChC,iDAAiD;EACjD,iCAAiC;AACnC",sourcesContent:["/* CVCard.css */\n/* Note: Uses utilities: .section-title for cvOrg styling */\n\n.cvSection {\n margin-bottom: 1.25em;\n}\n\n.cvRole {\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n display: flex;\n flex-direction: column;\n gap: 0.2em;\n}\n\n.cvOrg {\n font-weight: 600;\n color: var(--color-primary);\n}\n\n.cvSkill, .cvLanguage {\n text-align: left;\n margin: var(--spacing-xs) 0;\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n}\n\n.cvSection h3 {\n color: var(--color-text);\n font-size: var(--font-size-lg);\n font-weight: 600;\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-border-pale);\n padding-bottom: var(--spacing-xs);\n}\n"],sourceRoot:""}]);const s=a},3750(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n","",{version:3,sources:["webpack://./src/styles/ChatWithMe.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,qFAAqF;;AAErF;EACE,gBAAgB;AAClB",sourcesContent:["/* ChatWithMe.css */\n/* Uses utilities: .section-centered, .loading-text, .btn-primary, .btn-transparent */\n\n.chatSection {\n overflow-x: auto;\n}\n"],sourceRoot:""}]);const s=a},1666(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* FriendList.css */\n/* Uses utilities: .list-reset, .section-title, .zebra-stripe, .flex, .gap-xs, .mb-md */\n\n.friendItem {\n padding: var(--spacing-xs) 0;\n font-size: 1em;\n color: var(--color-text-muted);\n}\n\n.friendItem:last-child {\n border-bottom: none;\n}\n","",{version:3,sources:["webpack://./src/styles/FriendList.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,uFAAuF;;AAEvF;EACE,4BAA4B;EAC5B,cAAc;EACd,8BAA8B;AAChC;;AAEA;EACE,mBAAmB;AACrB",sourcesContent:["/* FriendList.css */\n/* Uses utilities: .list-reset, .section-title, .zebra-stripe, .flex, .gap-xs, .mb-md */\n\n.friendItem {\n padding: var(--spacing-xs) 0;\n font-size: 1em;\n color: var(--color-text-muted);\n}\n\n.friendItem:last-child {\n border-bottom: none;\n}\n"],sourceRoot:""}]);const s=a},1937(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.image {\n width: 160px;\n height: 160px;\n border-radius: 50%;\n object-fit: cover;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n}\n\n.image-alt {\n width: 160px;\n height: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n color: var(--color-text-secondary);\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.intro {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n margin-bottom: var(--spacing-xs);\n max-width: 40ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.buttonSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n/* Ensure prompt inputs stretch to fit their container */\n.add-friend-button-container input[type="text"] {\n width: 100%;\n box-sizing: border-box;\n}\n\n.qrCodeSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n',"",{version:3,sources:["webpack://./src/styles/ProfileCard.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,oKAAoK;;AAEpK;EACE,wBAAwB;AAC1B;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,kBAAkB;EAClB,iBAAiB;EACjB,gCAAgC;EAChC,gCAAgC;EAChC,sCAAsC;EACtC,gCAAgC;EAChC,sBAAsB;AACxB;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;EAClB,gCAAgC;EAChC,gCAAgC;EAChC,sCAAsC;EACtC,gCAAgC;EAChC,sBAAsB;EACtB,kCAAkC;AACpC;;AAEA;EACE,8BAA8B;EAC9B,gBAAgB;EAChB,qCAAqC;EACrC,0BAA0B;EAC1B,4BAA4B;EAC5B,SAAS;EACT,0CAA0C;AAC5C;;AAEA;EACE,kCAAkC;EAClC,gCAAgC;EAChC,oCAAoC;EACpC,gCAAgC;EAChC,eAAe;EACf,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,kCAAkC;EAClC,cAAc;EACd,gCAAgC;AAClC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,aAAa;AACf;;AAEA;EACE,WAAW;EACX,YAAY;AACd;;AAEA,wDAAwD;AACxD;EACE,WAAW;EACX,sBAAsB;AACxB;;AAEA;EACE,kCAAkC;EAClC,cAAc;EACd,gCAAgC;AAClC;;AAEA;EACE,8BAA8B;EAC9B,gCAAgC;EAChC,oCAAoC;EACpC,eAAe;EACf,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA,sCAAsC;AACtC;EACE,sBAAsB;EACtB,aAAa;EACb,iBAAiB;AACnB",sourcesContent:['/* ProfileCard.css */\n/* Uses utilities: .action-button-focus, .btn-primary, .flex-column-center, .text-truncate, .text-center, .text-wrap-anywhere, .section-centered, .btn-transparent */\n\n.profileCard {\n /* Component container */\n}\n\n.image {\n width: 160px;\n height: 160px;\n border-radius: 50%;\n object-fit: cover;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n}\n\n.image-alt {\n width: 160px;\n height: 160px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n margin-bottom: var(--spacing-sm);\n box-shadow: var(--box-shadow-sm);\n border: 3px solid var(--color-primary);\n background: var(--color-card-bg);\n box-sizing: border-box;\n color: var(--color-text-secondary);\n}\n\n.name {\n font-size: var(--font-size-xl);\n font-weight: 700;\n line-height: var(--line-height-tight);\n text-decoration: underline;\n text-underline-offset: 0.2em;\n margin: 0;\n letter-spacing: var(--letter-spacing-wide);\n}\n\n.intro {\n color: var(--color-text-secondary);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n margin-bottom: var(--spacing-xs);\n max-width: 40ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n.buttonSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.buttonSubSection {\n width: 100%;\n min-width: 0;\n display: grid;\n}\n\n.buttonSubSection button {\n width: 100%;\n min-width: 0;\n}\n\n/* Ensure prompt inputs stretch to fit their container */\n.add-friend-button-container input[type="text"] {\n width: 100%;\n box-sizing: border-box;\n}\n\n.qrCodeSection {\n color: var(--color-text-secondary);\n font-size: 1em;\n margin-bottom: var(--spacing-xs);\n}\n\n.details {\n color: var(--color-text-muted);\n font-size: var(--font-size-base);\n line-height: var(--line-height-base);\n max-width: 45ch;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* ProfileCard styles as regular CSS */\n.profile-card {\n border: 1px solid #ccc;\n padding: 16px;\n background: white;\n}\n'],sourceRoot:""}]);const s=a},436(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n/* Horizontal layout for cards */\n.profile-grid .profileSection {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n overflow-wrap: anywhere;\n}\n\n@media (min-width: 900px) {\n .profile-grid .profileSection {\n margin-bottom: 0;\n }\n}\n","",{version:3,sources:["webpack://./src/styles/ProfileView.css"],names:[],mappings:"AAAA,oBAAoB;AACpB,8CAA8C;;AAE9C,gCAAgC;AAChC;EACE,WAAW;EACX,eAAe;EACf,YAAY;EACZ,sBAAsB;EACtB,gCAAgC;EAChC,sBAAsB;EACtB,gCAAgC;EAChC,uBAAuB;AACzB;;AAEA;EACE;IACE,gBAAgB;EAClB;AACF",sourcesContent:["/* ProfileView.css */\n/* Uses utilities: .section-bg, .text-center */\n\n/* Horizontal layout for cards */\n.profile-grid .profileSection {\n width: 100%;\n max-width: 100%;\n min-width: 0;\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n box-sizing: border-box;\n margin-bottom: var(--spacing-md);\n overflow-wrap: anywhere;\n}\n\n@media (min-width: 900px) {\n .profile-grid .profileSection {\n margin-bottom: 0;\n }\n}\n"],sourceRoot:""}]);const s=a},1134(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrCaption {\n text-align: center;\n margin-top: 0;\n font-size: 0.95em;\n color: var(--color-text-secondary);\n}\n\n.QRCode {\n width: 100%;\n max-width: 320px;\n min-width: 180px;\n margin: 0 auto;\n display: block;\n}\n\n.QRCode [role="img"]:focus {\n outline: 2px solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}',"",{version:3,sources:["webpack://./src/styles/QRCodeCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,uCAAuC;;AAEvC,8BAA8B;AAC9B;EACE,kBAAkB;EAClB,aAAa;EACb,iBAAiB;EACjB,kCAAkC;AACpC;;AAEA;EACE,WAAW;EACX,gBAAgB;EAChB,gBAAgB;EAChB,cAAc;EACd,cAAc;AAChB;;AAEA;EACE,gDAAgD;EAChD,mBAAmB;EACnB,0CAA0C;AAC5C",sourcesContent:['/* QRCodeCard.css */\n/* Note: Uses utilities: .text-center */\n\n/* Caption under the QR code */\n.qrCaption {\n text-align: center;\n margin-top: 0;\n font-size: 0.95em;\n color: var(--color-text-secondary);\n}\n\n.QRCode {\n width: 100%;\n max-width: 320px;\n min-width: 180px;\n margin: 0 auto;\n display: block;\n}\n\n.QRCode [role="img"]:focus {\n outline: 2px solid var(--color-primary, #7C4DFF);\n outline-offset: 2px;\n box-shadow: 0 0 0 2px rgba(124,77,255,0.2);\n}'],sourceRoot:""}]);const s=a},1649(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-lg);\n justify-content: center;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: 1.1em;\n}\n\n.socialItem span {\n min-width: 0;\n display: block;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n min-height: var(--min-touch-target);\n padding: var(--spacing-xs);\n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: 2.5em;\n height: 2.5em;\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n',"",{version:3,sources:["webpack://./src/styles/SocialCard.css"],names:[],mappings:"AAAA,mBAAmB;AACnB,2FAA2F;;AAE3F;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,sBAAsB;EACtB,uBAAuB;AACzB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,2BAA2B;EAC3B,qBAAqB;EACrB,aAAa;EACb,mBAAmB;EACnB,sBAAsB;EACtB,mCAAmC;EACnC,0BAA0B;EAC1B,wCAAwC;EACxC,2DAA2D;EAC3D,kBAAkB;EAClB,OAAO;EACP,YAAY;AACd;;AAEA;;EAEE,0BAA0B;EAC1B,yCAAyC;AAC3C;;AAEA,gDAAgD;AAChD;EACE,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,wCAAwC;EACxC,gCAAgC;EAChC,cAAc;AAChB",sourcesContent:['/* SocialCard.css */\n/* Uses utilities: .list-reset, .text-wrap-anywhere, .flex, .gap-sm, .gap-lg, .rounded-sm */\n\n.socialList {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--spacing-lg);\n justify-content: center;\n}\n\n.socialItem {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: 1.1em;\n}\n\n.socialItem span {\n min-width: 0;\n display: block;\n}\n\n.socialItem a {\n color: var(--color-primary);\n text-decoration: none;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n min-height: var(--min-touch-target);\n padding: var(--spacing-xs);\n border-radius: var(--border-radius-base);\n transition: background-color var(--animation-duration) ease;\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.socialItem a:hover,\n.socialItem a:focus {\n text-decoration: underline;\n background-color: rgba(124, 77, 255, 0.1);\n}\n\n/* Screen reader only external link indication */\n.socialItem a[href^="http"]:after {\n content: " (external link)";\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.socialIcon {\n width: 2.5em;\n height: 2.5em;\n border-radius: var(--border-radius-base);\n background: var(--color-card-bg);\n flex-shrink: 0;\n}\n'],sourceRoot:""}]);const s=a},6660(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,"/* StuffCard.css */\n/* Uses utilities: .zebra-stripe */\n\n.stuffTable {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: var(--spacing-md);\n caption-side: top;\n}\n\n.stuffTable caption {\n font-weight: 600;\n padding: var(--spacing-sm);\n text-align: left;\n color: var(--color-text);\n}\n\n.stuffTable th,\n.stuffTable td {\n padding: var(--spacing-sm) var(--spacing-md);\n text-align: left;\n line-height: 1.4;\n}\n","",{version:3,sources:["webpack://./src/styles/StuffCard.css"],names:[],mappings:"AAAA,kBAAkB;AAClB,kCAAkC;;AAElC;EACE,WAAW;EACX,yBAAyB;EACzB,gCAAgC;EAChC,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;EAChB,0BAA0B;EAC1B,gBAAgB;EAChB,wBAAwB;AAC1B;;AAEA;;EAEE,4CAA4C;EAC5C,gBAAgB;EAChB,gBAAgB;AAClB",sourcesContent:["/* StuffCard.css */\n/* Uses utilities: .zebra-stripe */\n\n.stuffTable {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: var(--spacing-md);\n caption-side: top;\n}\n\n.stuffTable caption {\n font-weight: 600;\n padding: var(--spacing-sm);\n text-align: left;\n color: var(--color-text);\n}\n\n.stuffTable th,\n.stuffTable td {\n padding: var(--spacing-sm) var(--spacing-md);\n text-align: left;\n line-height: 1.4;\n}\n"],sourceRoot:""}]);const s=a},5179(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,".profile-grid .add-friend-button-container,\n.profile-grid .add-community-button-container {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xxs);\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n/* Ensure the button container can shrink properly in narrow layouts */\n.profile-grid .add-community-button-container {\n min-width: 0;\n max-width: 100%;\n}\n\n/* Allow any direct children to shrink so no element forces overflow */\n.profile-grid .add-community-button-container > * {\n min-width: 0;\n max-width: 100%;\n}\n\n.profile-grid table {\n margin: 0 !important;\n}\n\n.profile-grid td {\n padding: 0;\n}\n\n.profile-grid .add-friend-button-container .span,\n.profile-grid .add-community-button-container .span {\n display: inline-flex;\n align-items: center;\n}\n\n.profile-grid .add-friend-button-container > div,\n.profile-grid .add-community-button-container > div {\n flex-basis: 100%;\n}\n\n/* Prevent the add-community input from overflowing its flex container */\n.profile-grid .add-community-button-container input {\n min-width: 0;\n max-width: 96%;\n flex: 1 1 0;\n word-break: break-word;\n}\n\n.profile-grid .profile-image {\n width: var( --profile-image-size);\n height: var( --profile-image-size);\n margin: var(--spacing-xxxs);\n border-radius: var(--spacing-lg);\n}\n\n.profile-grid .default-profile-image {\n width: 140%;\n height: 140%;\n object-fit: cover;\n margin-left: -0.6em;\n border-radius: var(--spacing-lg);\n}","",{version:3,sources:["webpack://./src/styles/editProfile.css"],names:[],mappings:"AAAA;;EAEE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,2BAA2B;AAC7B;;AAEA,sEAAsE;AACtE;EACE,YAAY;EACZ,eAAe;AACjB;;AAEA,sEAAsE;AACtE;EACE,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,UAAU;AACZ;;AAEA;;EAEE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;;EAEE,gBAAgB;AAClB;;AAEA,wEAAwE;AACxE;EACE,YAAY;EACZ,cAAc;EACd,WAAW;EACX,sBAAsB;AACxB;;AAEA;EACE,iCAAiC;EACjC,kCAAkC;EAClC,2BAA2B;EAC3B,gCAAgC;AAClC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;EACjB,mBAAmB;EACnB,gCAAgC;AAClC",sourcesContent:[".profile-grid .add-friend-button-container,\n.profile-grid .add-community-button-container {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xxs);\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n/* Ensure the button container can shrink properly in narrow layouts */\n.profile-grid .add-community-button-container {\n min-width: 0;\n max-width: 100%;\n}\n\n/* Allow any direct children to shrink so no element forces overflow */\n.profile-grid .add-community-button-container > * {\n min-width: 0;\n max-width: 100%;\n}\n\n.profile-grid table {\n margin: 0 !important;\n}\n\n.profile-grid td {\n padding: 0;\n}\n\n.profile-grid .add-friend-button-container .span,\n.profile-grid .add-community-button-container .span {\n display: inline-flex;\n align-items: center;\n}\n\n.profile-grid .add-friend-button-container > div,\n.profile-grid .add-community-button-container > div {\n flex-basis: 100%;\n}\n\n/* Prevent the add-community input from overflowing its flex container */\n.profile-grid .add-community-button-container input {\n min-width: 0;\n max-width: 96%;\n flex: 1 1 0;\n word-break: break-word;\n}\n\n.profile-grid .profile-image {\n width: var( --profile-image-size);\n height: var( --profile-image-size);\n margin: var(--spacing-xxxs);\n border-radius: var(--spacing-lg);\n}\n\n.profile-grid .default-profile-image {\n width: 140%;\n height: 140%;\n object-fit: cover;\n margin-left: -0.6em;\n border-radius: var(--spacing-lg);\n}"],sourceRoot:""}]);const s=a},6776(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* Delete pop up*/\n/* Make the Solid-UI delete confirmation popup appear near the last click position.\n Keep the built-in Solid-UI styling (orange border, white background) so it looks like the original.\n*/\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] {\n/* only override positioning; keep styling (border/background/etc) from solid-ui */\n position: absolute !important;\n z-index: 9999 !important;\n top: 0 !important;\n right: 0 !important;\n left: auto !important;\n display: grid !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n visibility: visible !important;\n padding: 0.7em !important;\n min-width: 280px !important;\n max-width: 90vw !important;\n background: var(--color-background) !important;\n border: 0.1em solid var(--color-primary) !important;\n border-radius: var(--border-radius-base) !important;\n box-shadow: 0 0.5em 0.9em rgba(0, 0, 0, 0.2) !important;\n grid-template-columns: auto auto !important;\n gap: 0.3em !important;\n}\n\n/* Ensure SVG icons and their buttons inside the Solid-UI delete popup have transparent backgrounds */\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] img[src$=".svg"],\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] button {\n background: transparent !important;\n}\n\n.profile-form .individualPane {\n box-shadow: none !important;\n}\n\n.profile-form p {\n padding: 0 !important;\n}\n\n.profile-form .mb-md {\n margin-bottom: 0 !important;\n}\n\n.profile-form h2 {\n margin-bottom: 1em !important;\n}\n\n.profile-form h3 {\n color: var(--color-primary) !important;\n padding: 0 !important;\n font-size: 1em !important;\n font-weight: 600 !important;\n}\n\n/* Shared form layout rules are imported from rdfFormsCommon.css */\n/* Solid-UI form sizing fixes scoped to Edit CV section */\n.profile-form .hoverControl:not(:has(> img:first-child)) {\n border: 0.1em solid rgb(136, 136, 136) !important;\n flex-direction: column !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n padding: 0.7em !important;\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Make sure the delete icon floats in the top-right corner of the full hoverControl wrapper */\n.profile-form .hoverControl,\n.profile-grid .hoverControl {\n position: relative !important;\n}\n\n.hoverControl > img.hoverControlHide,\n.hoverControl > [data-testid="deleteButtonWithCheck"] {\n position: absolute !important;\n top: 0.2em !important;\n right: 0.2em !important;\n width: 1.5em !important;\n height: 1.5em !important;\n align-items: center;\n justify-content: center;\n margin: 0 !important;\n float: none !important;\n transform: none !important;\n}\n\n/* When icon is 2nd or 3rd child (i.e. sibling elements exist), align it vertically to the previous item */\n.hoverControl > img.hoverControlHide:nth-child(1),\n.hoverControl > img.hoverControlHide:nth-child(2),\n.hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(1),\n.hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(2) {\n top: 50% !important;\n transform: translateY(-50%) !important;\n display: inline-flex !important;\n}\n\n/* Show the delete icon only when the container is hovered */\n.profile-grid .hoverControl:hover > img.hoverControlHide,\n.profile-grid .hoverControl:hover > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Also show the delete icon when the entire row is hovered */\n.profile-grid .attachmentTable tr:hover .hoverControl > img.hoverControlHide,\n.profile-grid .attachmentTable tr:hover .hoverControl > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Make the hover-control cell easier to hit */\n.profile-grid .hoverControl {\n padding: 0.75em !important;\n min-width: 2.5em !important;\n min-height: 2.5em !important;\n}\n\n/* When the hoverControl only contains the hidden delete icon, keep it out of layout so it doesn\'t create empty space */\n.profile-form .formFieldValue .hoverControl:has(> img.hoverControlHide) {\n min-width: 0 !important;\n min-height: 0 !important;\n width: 0 !important;\n height: 0 !important;\n padding: 0 !important;\n margin: 0 !important;\n overflow: visible !important;\n}\n\n/* Hide delete icon only in autocomplete fields */\n.profile-grid .formFieldValue:has(input[data-testid="autocomplete-input"]) [data-testid="delete-button"] {\n display: none !important;\n}\n\n/* Keep autocomplete cancel button hidden when the user is not interacting.\n This avoids the cancel button remaining visible when focus moves away. */\n.profile-grid .formFieldValue:not(:focus-within) [data-testid="cancel-button"] {\n display: none !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child) > span {\n display: inline-flex;\n align-items: center;\n margin-left: 0.3em;\n}\n\n.profile-grid div[style*="padding: 0.5em"]:has(> img) > span {\n margin-left: 0.3em;\n vertical-align: super !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child):hover {\n background-color: transparent !important;\n}\n\n.profile-grid button:has(> img[src$=".svg"]),\n.profile-grid .formFieldValue input[type ="color"] {\n background-color: var(--color-section-bg) !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n box-shadow: none !important;\n padding: 0.5em !important;\n transition: background-color 0.2s ease, box-shadow 0.2s ease;\n padding: 0 !important;\n}\n\n/* Specific icon button should have no extra padding */\n.profile-grid button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1369241.svg"]) {\n padding: 0 !important;\n}\n\n.profile-form button {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n.profile-form input:not([type="color"]) {\n width: 99%;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.profile-form input:not([type="color"]),\n.profile-form textarea,\n.profile-form select {\n max-width: 96%;\n min-width: 0;\n box-sizing: border-box ;\n font: inherit;\n color: var(--color-text);\n background-color: var(--color-card-bg) !important;\n border: 1px solid var(--color-border-pale);\n}\n\n.profile-form textarea {\n border-color: var(--color-border-pale) !important;\n}\n\n.profile-form input[type="date"],\n.profile-form input[type="month"],\n.profile-form input[type="week"],\n.profile-form input[type="time"],\n.profile-form input[type="datetime-local"] {\n min-height: var(--min-touch-target);\n}\n\n.profile-form .hoverControl:has(> img:first-child):focus-visible,\n.profile-form button:focus-visible,\n.profile-form input:not([type="color"]):focus-visible,\n.profile-form textarea:focus-visible,\n.profile-form select:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary) !important;\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n.profile-form input[type="url"] {\n width: 100%;\n}\n\n.profile-form select#formSelect {\n width: 100%;\n max-width: 97%;\n box-sizing: border-box;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Remove border/padding from the first wrapper div (and its first child wrapper). */\n.profile-form > div:first-of-type,\n.profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Remove border/padding from the inner div of the first wrapper in the contact section. */\nsection[aria-labelledby="edit-profile-contact-heading"] .profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* In contactPane, remove border/padding from all direct child divs. */\n.contactPane > div {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Align schema.org, solid terms, FOAF, vCard, and org field labels with their input values. */\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) {\n display: flex;\n}\n\n/* for the Resume inside corporation choice */\n/* Add space between classifierBox label and select box */\n.profile-form .choiceBox .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\n.profile-form .choiceBox .choiceBox-selectBox select {\n margin-left: 2.1em !important;\n}\n\n/* for the Resume orga details */\n/* Add space between classifierBox label and select box */\n.profile-form .classifierBox .classifierBox-label {\n /* Match .formFieldName for alignment */\n margin-right: 0;\n padding-left: 0.3em;\n width: 8em;\n padding: 0.3em;\n vertical-align: middle;\n}\n.profile-form .classifierBox .classifierBox-selectBox {\n margin-left: 0 !important;\n}\n\n.profile-form .classifierBox .classifierBox-selectBox select {\n margin-left: 0 !important;\n}\n\n/* for the social media */\n/* Add space between classifierBox label and select box */\nsection[data-testid="edit-social-section"] .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\nsection[data-testid="edit-social-section"] .classifierBox-selectBox select {\n margin-left: 0.7em !important;\n}\n\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) > .formFieldValue {\n margin-bottom: 0;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n flex: 1;\n min-width: 0;\n}\n\n.profile-form textarea,\n.profile-form .formFieldValue textarea {\n appearance: none;\n -webkit-appearance: none;\n border: .05em solid #88c !important;\n border-style: solid !important;\n border-width: .05em !important;\n border-color: #88c !important;\n border-radius: 0.2em !important;\n width: 99%;\n box-sizing: border-box;\n margin-top: var(--spacing-xs);\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Add horizontal gap between label and textarea for all label+textarea pairs. */\n.profile-form div:has(> a) + div:has(textarea) {\n margin-left: var(--spacing-sm);\n}\n\n/* Center textarea label vertically in flex rows. */\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) {\n align-items: flex-start;\n}\n\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a) {\n padding-left: var(--spacing-xs);\n padding-top: var(--spacing-sm);\n}\n\n\n.profile-form :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]) > .formFieldName {\n padding-top: 0.55em !important;\n}\n\n\n.profile-form input:disabled,\n.profile-form textarea:disabled,\n.profile-form select:disabled,\n.profile-form input[readonly],\n.profile-form textarea[readonly],\n.profile-form input:read-only,\n.profile-form textarea:read-only {\n background-color: var(--color-background) !important;\n cursor: not-allowed;\n opacity: 0.75;\n border: 0.05em solid white !important;\n}\n\n.webidControl table td div.contactPane.namedPane {\n border: none !important;\n}\n\n/* Hide the edit icon used by solid-ui (noun_253504.svg and noun_1180158.svg) when it appears as an <img> */\nimg[src*="noun_253504.svg"],\nimg[src*="noun_1180158.svg"] {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n}\n\n/* Ensure the parent button for that icon doesn\'t add padding/margin or affect layout */\nbutton:has(> img[src*="noun_253504.svg"]),\nbutton:has(> img[src*="noun_1180158.svg"]) {\n display: none !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n background: none !important;\n width: 0 !important;\n height: 0 !important;\n overflow: hidden !important;\n}\n\n/* Exceptions: allow these icons (and their buttons) when they\'re part of the add-friend or add-community flows. */\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]) {\n display: inline-flex !important;\n width: auto !important;\n height: auto !important;\n overflow: visible !important;\n}\n\n\n/* Exception: allow “Continue” buttons inside add-friend and add-community button containers. */\n.profile-grid .profileSection .add-friend-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"] {\n display: inline-flex !important;\n width: 2em !important;\n height: 2em !important;\n overflow: visible !important;\n}\n',"",{version:3,sources:["webpack://./src/styles/profileRDFFormsEnforced.css"],names:[],mappings:"AAAA,iBAAiB;AACjB;;CAEC;AACD;AACA,kFAAkF;EAChF,6BAA6B;EAC7B,wBAAwB;EACxB,iBAAiB;EACjB,mBAAmB;EACnB,qBAAqB;EACrB,wBAAwB;EACxB,+BAA+B;EAC/B,qBAAqB;EACrB,8BAA8B;EAC9B,yBAAyB;EACzB,2BAA2B;EAC3B,0BAA0B;EAC1B,8CAA8C;EAC9C,mDAAmD;EACnD,mDAAmD;EACnD,uDAAuD;EACvD,2CAA2C;EAC3C,qBAAqB;AACvB;;AAEA,qGAAqG;AACrG;;EAEE,kCAAkC;AACpC;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,sCAAsC;EACtC,qBAAqB;EACrB,yBAAyB;EACzB,2BAA2B;AAC7B;;AAEA,kEAAkE;AAClE,yDAAyD;AACzD;EACE,iDAAiD;EACjD,iCAAiC;AACnC;;AAEA;EACE,wCAAwC;EACxC,uBAAuB;EACvB,oBAAoB;EACpB,2BAA2B;EAC3B,yBAAyB;EACzB,mCAAmC;EACnC,kCAAkC;EAClC,eAAe;EACf,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA,8FAA8F;AAC9F;;EAEE,6BAA6B;AAC/B;;AAEA;;EAEE,6BAA6B;EAC7B,qBAAqB;EACrB,uBAAuB;EACvB,uBAAuB;EACvB,wBAAwB;EACxB,mBAAmB;EACnB,uBAAuB;EACvB,oBAAoB;EACpB,sBAAsB;EACtB,0BAA0B;AAC5B;;AAEA,0GAA0G;AAC1G;;;;EAIE,mBAAmB;EACnB,sCAAsC;EACtC,+BAA+B;AACjC;;AAEA,4DAA4D;AAC5D;;EAEE,+BAA+B;AACjC;;AAEA,6DAA6D;AAC7D;;EAEE,+BAA+B;AACjC;;AAEA,8CAA8C;AAC9C;EACE,0BAA0B;EAC1B,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA,uHAAuH;AACvH;EACE,uBAAuB;EACvB,wBAAwB;EACxB,mBAAmB;EACnB,oBAAoB;EACpB,qBAAqB;EACrB,oBAAoB;EACpB,4BAA4B;AAC9B;;AAEA,iDAAiD;AACjD;EACE,wBAAwB;AAC1B;;AAEA;2EAC2E;AAC3E;EACE,wBAAwB;AAC1B;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,gCAAgC;AAClC;;AAEA;EACE,wCAAwC;AAC1C;;AAEA;;EAEE,oDAAoD;EACpD,uBAAuB;EACvB,oBAAoB;EACpB,2BAA2B;EAC3B,2BAA2B;EAC3B,yBAAyB;EACzB,4DAA4D;EAC5D,qBAAqB;AACvB;;AAEA,sDAAsD;AACtD;EACE,qBAAqB;AACvB;;AAEA;EACE,mCAAmC;EACnC,kCAAkC;AACpC;;AAEA;EACE,UAAU;EACV,yBAAyB;EACzB,0BAA0B;AAC5B;;AAEA;;;EAGE,cAAc;EACd,YAAY;EACZ,uBAAuB;EACvB,aAAa;EACb,wBAAwB;EACxB,iDAAiD;EACjD,0CAA0C;AAC5C;;AAEA;EACE,iDAAiD;AACnD;;AAEA;;;;;EAKE,mCAAmC;AACrC;;AAEA;;;;;EAKE,sEAAsE;EACtE,mBAAmB;EACnB,6CAA6C;AAC/C;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,WAAW;EACX,cAAc;EACd,sBAAsB;EACtB,yBAAyB;EACzB,0BAA0B;AAC5B;;AAEA,oFAAoF;AACpF;;EAEE,uBAAuB;EACvB,qBAAqB;AACvB;;AAEA,0FAA0F;AAC1F;EACE,uBAAuB;EACvB,qBAAqB;AACvB;;AAEA,sEAAsE;AACtE;EACE,uBAAuB;EACvB,qBAAqB;AACvB;;AAEA,8FAA8F;AAC9F;EACE,aAAa;AACf;;AAEA,6CAA6C;AAC7C,yDAAyD;AACzD;EACE,qDAAqD;EACrD,eAAe;EACf,mBAAmB;AACrB;AACA;EACE,6BAA6B;AAC/B;;AAEA,gCAAgC;AAChC,yDAAyD;AACzD;EACE,uCAAuC;EACvC,eAAe;EACf,mBAAmB;EACnB,UAAU;EACV,cAAc;EACd,sBAAsB;AACxB;AACA;EACE,yBAAyB;AAC3B;;AAEA;EACE,yBAAyB;AAC3B;;AAEA,yBAAyB;AACzB,yDAAyD;AACzD;EACE,qDAAqD;EACrD,eAAe;EACf,mBAAmB;AACrB;AACA;EACE,6BAA6B;AAC/B;;AAEA;EACE,gBAAgB;AAClB;;AAEA;;;;;EAKE,oBAAoB;EACpB,mBAAmB;EACnB,sBAAsB;AACxB;;AAEA;;;;;EAKE,oBAAoB;EACpB,mBAAmB;EACnB,sBAAsB;EACtB,OAAO;EACP,YAAY;AACd;;AAEA;;EAEE,gBAAgB;EAChB,wBAAwB;EACxB,mCAAmC;EACnC,8BAA8B;EAC9B,8BAA8B;EAC9B,6BAA6B;EAC7B,+BAA+B;EAC/B,UAAU;EACV,sBAAsB;EACtB,6BAA6B;EAC7B,yBAAyB;EACzB,0BAA0B;AAC5B;;AAEA,gFAAgF;AAChF;EACE,8BAA8B;AAChC;;AAEA,mDAAmD;AACnD;EACE,uBAAuB;AACzB;;AAEA;EACE,+BAA+B;EAC/B,8BAA8B;AAChC;;;AAGA;EACE,8BAA8B;AAChC;;;AAGA;;;;;;;EAOE,oDAAoD;EACpD,mBAAmB;EACnB,aAAa;EACb,qCAAqC;AACvC;;AAEA;EACE,uBAAuB;AACzB;;AAEA,2GAA2G;AAC3G;;EAEE,wBAAwB;EACxB,mBAAmB;EACnB,oBAAoB;EACpB,oBAAoB;EACpB,qBAAqB;AACvB;;AAEA,uFAAuF;AACvF;;EAEE,wBAAwB;EACxB,qBAAqB;EACrB,oBAAoB;EACpB,uBAAuB;EACvB,2BAA2B;EAC3B,mBAAmB;EACnB,oBAAoB;EACpB,2BAA2B;AAC7B;;AAEA,kHAAkH;AAClH;;;;EAIE,+BAA+B;EAC/B,sBAAsB;EACtB,uBAAuB;EACvB,4BAA4B;AAC9B;;;AAGA,+FAA+F;AAC/F;;;;;;EAME,+BAA+B;EAC/B,qBAAqB;EACrB,sBAAsB;EACtB,4BAA4B;AAC9B",sourcesContent:['/* Delete pop up*/\n/* Make the Solid-UI delete confirmation popup appear near the last click position.\n Keep the built-in Solid-UI styling (orange border, white background) so it looks like the original.\n*/\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] {\n/* only override positioning; keep styling (border/background/etc) from solid-ui */\n position: absolute !important;\n z-index: 9999 !important;\n top: 0 !important;\n right: 0 !important;\n left: auto !important;\n display: grid !important;\n pointer-events: auto !important;\n opacity: 1 !important;\n visibility: visible !important;\n padding: 0.7em !important;\n min-width: 280px !important;\n max-width: 90vw !important;\n background: var(--color-background) !important;\n border: 0.1em solid var(--color-primary) !important;\n border-radius: var(--border-radius-base) !important;\n box-shadow: 0 0.5em 0.9em rgba(0, 0, 0, 0.2) !important;\n grid-template-columns: auto auto !important;\n gap: 0.3em !important;\n}\n\n/* Ensure SVG icons and their buttons inside the Solid-UI delete popup have transparent backgrounds */\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] img[src$=".svg"],\n.profile-grid div[style*="position: relative"] > div[style*="display: grid"] button {\n background: transparent !important;\n}\n\n.profile-form .individualPane {\n box-shadow: none !important;\n}\n\n.profile-form p {\n padding: 0 !important;\n}\n\n.profile-form .mb-md {\n margin-bottom: 0 !important;\n}\n\n.profile-form h2 {\n margin-bottom: 1em !important;\n}\n\n.profile-form h3 {\n color: var(--color-primary) !important;\n padding: 0 !important;\n font-size: 1em !important;\n font-weight: 600 !important;\n}\n\n/* Shared form layout rules are imported from rdfFormsCommon.css */\n/* Solid-UI form sizing fixes scoped to Edit CV section */\n.profile-form .hoverControl:not(:has(> img:first-child)) {\n border: 0.1em solid rgb(136, 136, 136) !important;\n flex-direction: column !important;\n}\n\n.profile-form .hoverControl:has(> img:first-child) {\n background-color: transparent !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n padding: 0.7em !important;\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Make sure the delete icon floats in the top-right corner of the full hoverControl wrapper */\n.profile-form .hoverControl,\n.profile-grid .hoverControl {\n position: relative !important;\n}\n\n.hoverControl > img.hoverControlHide,\n.hoverControl > [data-testid="deleteButtonWithCheck"] {\n position: absolute !important;\n top: 0.2em !important;\n right: 0.2em !important;\n width: 1.5em !important;\n height: 1.5em !important;\n align-items: center;\n justify-content: center;\n margin: 0 !important;\n float: none !important;\n transform: none !important;\n}\n\n/* When icon is 2nd or 3rd child (i.e. sibling elements exist), align it vertically to the previous item */\n.hoverControl > img.hoverControlHide:nth-child(1),\n.hoverControl > img.hoverControlHide:nth-child(2),\n.hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(1),\n.hoverControl > [data-testid="deleteButtonWithCheck"]:nth-child(2) {\n top: 50% !important;\n transform: translateY(-50%) !important;\n display: inline-flex !important;\n}\n\n/* Show the delete icon only when the container is hovered */\n.profile-grid .hoverControl:hover > img.hoverControlHide,\n.profile-grid .hoverControl:hover > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Also show the delete icon when the entire row is hovered */\n.profile-grid .attachmentTable tr:hover .hoverControl > img.hoverControlHide,\n.profile-grid .attachmentTable tr:hover .hoverControl > [data-testid="deleteButtonWithCheck"] {\n display: inline-flex !important;\n}\n\n/* Make the hover-control cell easier to hit */\n.profile-grid .hoverControl {\n padding: 0.75em !important;\n min-width: 2.5em !important;\n min-height: 2.5em !important;\n}\n\n/* When the hoverControl only contains the hidden delete icon, keep it out of layout so it doesn\'t create empty space */\n.profile-form .formFieldValue .hoverControl:has(> img.hoverControlHide) {\n min-width: 0 !important;\n min-height: 0 !important;\n width: 0 !important;\n height: 0 !important;\n padding: 0 !important;\n margin: 0 !important;\n overflow: visible !important;\n}\n\n/* Hide delete icon only in autocomplete fields */\n.profile-grid .formFieldValue:has(input[data-testid="autocomplete-input"]) [data-testid="delete-button"] {\n display: none !important;\n}\n\n/* Keep autocomplete cancel button hidden when the user is not interacting.\n This avoids the cancel button remaining visible when focus moves away. */\n.profile-grid .formFieldValue:not(:focus-within) [data-testid="cancel-button"] {\n display: none !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child) > span {\n display: inline-flex;\n align-items: center;\n margin-left: 0.3em;\n}\n\n.profile-grid div[style*="padding: 0.5em"]:has(> img) > span {\n margin-left: 0.3em;\n vertical-align: super !important;\n}\n\n.profile-grid .hoverControl:has(> img:first-child):hover {\n background-color: transparent !important;\n}\n\n.profile-grid button:has(> img[src$=".svg"]),\n.profile-grid .formFieldValue input[type ="color"] {\n background-color: var(--color-section-bg) !important;\n border: none !important;\n margin: 0 !important;\n border-radius: 0 !important;\n box-shadow: none !important;\n padding: 0.5em !important;\n transition: background-color 0.2s ease, box-shadow 0.2s ease;\n padding: 0 !important;\n}\n\n/* Specific icon button should have no extra padding */\n.profile-grid button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1369241.svg"]) {\n padding: 0 !important;\n}\n\n.profile-form button {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n.profile-form input:not([type="color"]) {\n width: 99%;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.profile-form input:not([type="color"]),\n.profile-form textarea,\n.profile-form select {\n max-width: 96%;\n min-width: 0;\n box-sizing: border-box ;\n font: inherit;\n color: var(--color-text);\n background-color: var(--color-card-bg) !important;\n border: 1px solid var(--color-border-pale);\n}\n\n.profile-form textarea {\n border-color: var(--color-border-pale) !important;\n}\n\n.profile-form input[type="date"],\n.profile-form input[type="month"],\n.profile-form input[type="week"],\n.profile-form input[type="time"],\n.profile-form input[type="datetime-local"] {\n min-height: var(--min-touch-target);\n}\n\n.profile-form .hoverControl:has(> img:first-child):focus-visible,\n.profile-form button:focus-visible,\n.profile-form input:not([type="color"]):focus-visible,\n.profile-form textarea:focus-visible,\n.profile-form select:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary) !important;\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n.profile-form input[type="url"] {\n width: 100%;\n}\n\n.profile-form select#formSelect {\n width: 100%;\n max-width: 97%;\n box-sizing: border-box;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Remove border/padding from the first wrapper div (and its first child wrapper). */\n.profile-form > div:first-of-type,\n.profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Remove border/padding from the inner div of the first wrapper in the contact section. */\nsection[aria-labelledby="edit-profile-contact-heading"] .profile-form > div:first-of-type > div:first-of-type {\n border: none !important;\n padding: 0 !important;\n}\n\n/* In contactPane, remove border/padding from all direct child divs. */\n.contactPane > div {\n border: none !important;\n padding: 0 !important;\n}\n\n/* Align schema.org, solid terms, FOAF, vCard, and org field labels with their input values. */\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) {\n display: flex;\n}\n\n/* for the Resume inside corporation choice */\n/* Add space between classifierBox label and select box */\n.profile-form .choiceBox .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\n.profile-form .choiceBox .choiceBox-selectBox select {\n margin-left: 2.1em !important;\n}\n\n/* for the Resume orga details */\n/* Add space between classifierBox label and select box */\n.profile-form .classifierBox .classifierBox-label {\n /* Match .formFieldName for alignment */\n margin-right: 0;\n padding-left: 0.3em;\n width: 8em;\n padding: 0.3em;\n vertical-align: middle;\n}\n.profile-form .classifierBox .classifierBox-selectBox {\n margin-left: 0 !important;\n}\n\n.profile-form .classifierBox .classifierBox-selectBox select {\n margin-left: 0 !important;\n}\n\n/* for the social media */\n/* Add space between classifierBox label and select box */\nsection[data-testid="edit-social-section"] .classifierBox-label {\n /* Optional: ensure label doesn\'t have extra margin */\n margin-right: 0;\n padding-left: 0.3em;\n}\nsection[data-testid="edit-social-section"] .classifierBox-selectBox select {\n margin-left: 0.7em !important;\n}\n\n.profile-form :not(.choiceBox):has(> .formFieldName):has(> .formFieldValue) > .formFieldValue {\n margin-bottom: 0;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]),\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n}\n\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://schema.org/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/solid/terms#"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://xmlns.com/foaf/0.1/"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/2006/vcard/ns"]) + .formFieldValue,\n.profile-form :not(.choiceBox) > .formFieldName:has(a[href*="http://www.w3.org/ns/org#"]) + .formFieldValue {\n display: inline-flex;\n align-items: center;\n vertical-align: middle;\n flex: 1;\n min-width: 0;\n}\n\n.profile-form textarea,\n.profile-form .formFieldValue textarea {\n appearance: none;\n -webkit-appearance: none;\n border: .05em solid #88c !important;\n border-style: solid !important;\n border-width: .05em !important;\n border-color: #88c !important;\n border-radius: 0.2em !important;\n width: 99%;\n box-sizing: border-box;\n margin-top: var(--spacing-xs);\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n/* Add horizontal gap between label and textarea for all label+textarea pairs. */\n.profile-form div:has(> a) + div:has(textarea) {\n margin-left: var(--spacing-sm);\n}\n\n/* Center textarea label vertically in flex rows. */\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) {\n align-items: flex-start;\n}\n\n.profile-form div[style*="display: flex"][style*="flex-direction: row"]:has(textarea) > div:has(> a) {\n padding-left: var(--spacing-xs);\n padding-top: var(--spacing-sm);\n}\n\n\n.profile-form :not(.choiceBox):has(> .formFieldValue input[data-testid="autocomplete-input"]) > .formFieldName {\n padding-top: 0.55em !important;\n}\n\n\n.profile-form input:disabled,\n.profile-form textarea:disabled,\n.profile-form select:disabled,\n.profile-form input[readonly],\n.profile-form textarea[readonly],\n.profile-form input:read-only,\n.profile-form textarea:read-only {\n background-color: var(--color-background) !important;\n cursor: not-allowed;\n opacity: 0.75;\n border: 0.05em solid white !important;\n}\n\n.webidControl table td div.contactPane.namedPane {\n border: none !important;\n}\n\n/* Hide the edit icon used by solid-ui (noun_253504.svg and noun_1180158.svg) when it appears as an <img> */\nimg[src*="noun_253504.svg"],\nimg[src*="noun_1180158.svg"] {\n display: none !important;\n width: 0 !important;\n height: 0 !important;\n margin: 0 !important;\n padding: 0 !important;\n}\n\n/* Ensure the parent button for that icon doesn\'t add padding/margin or affect layout */\nbutton:has(> img[src*="noun_253504.svg"]),\nbutton:has(> img[src*="noun_1180158.svg"]) {\n display: none !important;\n padding: 0 !important;\n margin: 0 !important;\n border: none !important;\n background: none !important;\n width: 0 !important;\n height: 0 !important;\n overflow: hidden !important;\n}\n\n/* Exceptions: allow these icons (and their buttons) when they\'re part of the add-friend or add-community flows. */\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"],\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_253504.svg"]) {\n display: inline-flex !important;\n width: auto !important;\n height: auto !important;\n overflow: visible !important;\n}\n\n\n/* Exception: allow “Continue” buttons inside add-friend and add-community button containers. */\n.profile-grid .profileSection .add-friend-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[title="Continue"]),\n.profile-grid .profileSection .add-friend-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-community-button-container button:has(> img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"]),\n.profile-grid .profileSection .add-friend-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"],\n.profile-grid .profileSection .add-community-button-container img[src="https://solidos.github.io/solid-ui/src/icons/noun_1180158.svg"] {\n display: inline-flex !important;\n width: 2em !important;\n height: 2em !important;\n overflow: visible !important;\n}\n'],sourceRoot:""}]);const s=a},5092(n,e,t){"use strict";t.d(e,{A:()=>s});var i=t(1354),o=t.n(i),r=t(6314),a=t.n(r)()(o());a.push([n.id,'/* Utility-first CSS classes for layout, spacing, and responsiveness */\n\n:root {\n --profile-image-size: 3em;\n}\n\n@media (max-width: 1000px) {\n .profile-grid,\n .profile-grid * {\n font-size: 2rem !important;\n }\n\n .profile-grid .actionButton,\n .profile-grid .searchInput,\n .profile-grid .flatButton,\n .profile-grid .buttonSection button,\n .profile-grid .groupButtonsList button {\n min-height: calc(var(--min-touch-target) + 0.5em) !important;\n font-size: 2rem !important;\n padding: 1em 1em !important;\n }\n}\n\n.actionButton {\n width: 100%;\n min-width: 180px;\n max-width: 320px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n /* Allow the grid to shrink below 30em on small viewports to avoid overflow */\n grid-template-columns: repeat(auto-fit, minmax(min(100%, 30em), 1fr));\n gap: var(--spacing-lg);\n background: var(--color-background);\n}\n\n.profile-header,\n.profile-footer {\n grid-column: 1 / -1;\n}\n\n.center {\n justify-content: center;\n align-items: center;\n}\n\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n\n/* Spacing utilities using CSS variables */\n.gap-xs { gap: var(--spacing-xs); }\n.gap-sm { gap: var(--spacing-sm); }\n.gap-md { gap: var(--spacing-md); }\n.gap-lg { gap: var(--spacing-lg); }\n.gap-xl { gap: var(--spacing-xl); }\n\n.mt-xs { margin-top: var(--spacing-xs); }\n.mt-sm { margin-top: var(--spacing-sm); }\n.mt-md { margin-top: var(--spacing-md); }\n.mt-lg { margin-top: var(--spacing-lg); }\n\n.mb-xs { margin-bottom: var(--spacing-xs); }\n.mb-sm { margin-bottom: var(--spacing-sm); }\n.mb-md { margin-bottom: var(--spacing-md); }\n.mb-lg { margin-bottom: var(--spacing-lg); }\n\n.p-xs { padding: var(--spacing-xs); }\n.p-sm { padding: var(--spacing-sm); }\n.p-md { padding: var(--spacing-md); }\n.p-lg { padding: var(--spacing-lg); }\n\n.rounded { border-radius: var(--border-radius-full); }\n.rounded-sm { border-radius: var(--border-radius-base); }\n\n.shadow { box-shadow: var(--box-shadow); }\n.shadow-sm { box-shadow: var(--box-shadow-sm); }\n\n.bg-primary {\n background: var(--color-primary);\n color: #fff;\n}\n.bg-card {\n background: var(--color-card-bg);\n}\n\n/* Accessibility utilities */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.min-touch-target {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n/* Enhanced accessibility utilities */\n.visually-hidden {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.visually-hidden.focusable:focus,\n.visually-hidden.focusable:active {\n position: static !important;\n width: auto !important;\n height: auto !important;\n padding: inherit !important;\n margin: inherit !important;\n overflow: visible !important;\n clip: auto !important;\n white-space: inherit !important;\n}\n\n/* Skip links utility */\n.skip-links {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 1000;\n}\n\n.skip-links a {\n position: absolute;\n left: 6px;\n top: 6px;\n padding: var(--spacing-sm);\n background: var(--color-primary);\n color: white;\n text-decoration: none;\n border-radius: var(--border-radius-base);\n}\n\n.skip-links a:focus {\n top: 6px;\n}\n\n.reduced-motion {\n animation: none !important;\n transition: none !important;\n}\n\n/* Focus management */\n.focus-ring {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.no-focus-ring {\n outline: none;\n}\n\n.no-focus-ring:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n/* ARIA live regions */\n.live-region {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n/* Note: Use aria-live="polite" or aria-live="assertive" HTML attributes with .live-region */\n\n/* Text scaling utilities */\n.text-scale-friendly {\n line-height: 1.5;\n max-width: 70ch; /* Optimal reading length */\n}\n\n/* Text accessibility utilities */\n.text-readable {\n line-height: var(--line-height-base);\n max-width: 65ch;\n}\n\n.text-lg {\n font-size: var(--font-size-lg);\n line-height: var(--line-height-base);\n}\n\n.text-small {\n font-size: max(var(--font-size-sm), var(--min-font-size));\n line-height: var(--min-line-height);\n}\n\n.text-contrast-high {\n color: var(--color-text);\n font-weight: 600;\n}\n\n:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary);\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n}\n\n/* Prevent labels from appearing focusable to keyboard users. */\nlabel:focus,\nlabel:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n}\n\n/* Better focus for text elements */\n.focusable-text:focus {\n background-color: rgba(124, 77, 255, 0.1);\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* High contrast text */\n.high-contrast {\n color: var(--color-text);\n background: var(--color-background);\n border: 1px solid var(--color-border-pale);\n}\n\n/* ===========================================\n CONSOLIDATED COMPONENT PATTERNS\n =========================================== */\n\n/* Primary Button - used by ChatWithMe, ProfileCard */\n.btn-primary {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n background: var(--color-primary);\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n/* Action Button Focus - used by ChatWithMe, ProfileCard */\n.action-button-focus:focus,\n.action-button-focus:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px var(--color-background), 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n/* List Reset - used by FriendList, SocialCard, nav */\n.list-reset {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n/* Section Title - primary colored heading */\n.section-title {\n font-size: 1.25em;\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n/* Text Overflow - used by ProfileCard, SocialCard */\n.text-truncate {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.text-wrap-anywhere {\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n/* Loading Text - primary colored centered loading indicator */\n.loading-text {\n color: var(--color-primary);\n text-align: center;\n margin: var(--spacing-md) 0;\n}\n\n/* Centered Section - flex column with center alignment */\n.section-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* Card Section Background */\n.section-bg {\n background: var(--color-section-bg);\n border-radius: var(--border-radius-full);\n box-shadow: var(--box-shadow);\n padding: var(--spacing-md);\n}\n\n\n/* Transparent button override (for solid-ui integration) */\n.btn-transparent {\n background-color: transparent;\n}\n\n.btn-transparent:hover {\n background-color: transparent;\n}\n',"",{version:3,sources:["webpack://./src/styles/utilities.css"],names:[],mappings:"AAAA,sEAAsE;;AAEtE;EACE,yBAAyB;AAC3B;;AAEA;EACE;;IAEE,0BAA0B;EAC5B;;EAEA;;;;;IAKE,4DAA4D;IAC5D,0BAA0B;IAC1B,2BAA2B;EAC7B;AACF;;AAEA;EACE,WAAW;EACX,gBAAgB;EAChB,gBAAgB;EAChB,sBAAsB;EACtB,qBAAqB;AACvB;;AAEA;;gDAEgD;;AAEhD;EACE,aAAa;EACb,6EAA6E;EAC7E,qEAAqE;EACrE,sBAAsB;EACtB,mCAAmC;AACrC;;AAEA;;EAEE,mBAAmB;AACrB;;AAEA;EACE,uBAAuB;EACvB,mBAAmB;AACrB;;AAEA;EACE,aAAa;AACf;AACA;EACE,aAAa;AACf;;AAEA,0CAA0C;AAC1C,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;AAClC,UAAU,sBAAsB,EAAE;;AAElC,SAAS,6BAA6B,EAAE;AACxC,SAAS,6BAA6B,EAAE;AACxC,SAAS,6BAA6B,EAAE;AACxC,SAAS,6BAA6B,EAAE;;AAExC,SAAS,gCAAgC,EAAE;AAC3C,SAAS,gCAAgC,EAAE;AAC3C,SAAS,gCAAgC,EAAE;AAC3C,SAAS,gCAAgC,EAAE;;AAE3C,QAAQ,0BAA0B,EAAE;AACpC,QAAQ,0BAA0B,EAAE;AACpC,QAAQ,0BAA0B,EAAE;AACpC,QAAQ,0BAA0B,EAAE;;AAEpC,WAAW,wCAAwC,EAAE;AACrD,cAAc,wCAAwC,EAAE;;AAExD,UAAU,6BAA6B,EAAE;AACzC,aAAa,gCAAgC,EAAE;;AAE/C;EACE,gCAAgC;EAChC,WAAW;AACb;AACA;EACE,gCAAgC;AAClC;;AAEA,4BAA4B;AAC5B;EACE,kBAAkB;EAClB,UAAU;EACV,WAAW;EACX,UAAU;EACV,YAAY;EACZ,gBAAgB;EAChB,sBAAsB;EACtB,mBAAmB;EACnB,SAAS;AACX;;AAEA;EACE,mCAAmC;EACnC,kCAAkC;AACpC;;AAEA,qCAAqC;AACrC;EACE,6BAA6B;EAC7B,qBAAqB;EACrB,sBAAsB;EACtB,qBAAqB;EACrB,uBAAuB;EACvB,2BAA2B;EAC3B,iCAAiC;EACjC,8BAA8B;EAC9B,oBAAoB;AACtB;;AAEA;;EAEE,2BAA2B;EAC3B,sBAAsB;EACtB,uBAAuB;EACvB,2BAA2B;EAC3B,0BAA0B;EAC1B,4BAA4B;EAC5B,qBAAqB;EACrB,+BAA+B;AACjC;;AAEA,uBAAuB;AACvB;EACE,kBAAkB;EAClB,WAAW;EACX,OAAO;EACP,aAAa;AACf;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,QAAQ;EACR,0BAA0B;EAC1B,gCAAgC;EAChC,YAAY;EACZ,qBAAqB;EACrB,wCAAwC;AAC1C;;AAEA;EACE,QAAQ;AACV;;AAEA;EACE,0BAA0B;EAC1B,2BAA2B;AAC7B;;AAEA,qBAAqB;AACrB;EACE,uCAAuC;EACvC,mBAAmB;AACrB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,aAAa;EACb,gBAAgB;AAClB;;AAEA,sBAAsB;AACtB;EACE,kBAAkB;EAClB,cAAc;EACd,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA,4FAA4F;;AAE5F,2BAA2B;AAC3B;EACE,gBAAgB;EAChB,eAAe,EAAE,2BAA2B;AAC9C;;AAEA,iCAAiC;AACjC;EACE,oCAAoC;EACpC,eAAe;AACjB;;AAEA;EACE,8BAA8B;EAC9B,oCAAoC;AACtC;;AAEA;EACE,yDAAyD;EACzD,mCAAmC;AACrC;;AAEA;EACE,wBAAwB;EACxB,gBAAgB;AAClB;;AAEA;EACE,2DAA2D;EAC3D,mBAAmB;EACnB,6CAA6C;AAC/C;;AAEA;EACE,aAAa;EACb,gBAAgB;AAClB;;AAEA,+DAA+D;AAC/D;;EAEE,wBAAwB;EACxB,2BAA2B;AAC7B;;AAEA,mCAAmC;AACnC;EACE,yCAAyC;EACzC,uCAAuC;EACvC,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA,uBAAuB;AACvB;EACE,wBAAwB;EACxB,mCAAmC;EACnC,0CAA0C;AAC5C;;AAEA;;gDAEgD;;AAEhD,qDAAqD;AACrD;EACE,mCAAmC;EACnC,4CAA4C;EAC5C,sCAAsC;EACtC,wCAAwC;EACxC,gCAAgC;EAChC,YAAY;EACZ,gBAAgB;EAChB,eAAe;EACf,8CAA8C;AAChD;;AAEA;EACE,+DAA+D;EAC/D,6CAA6C;AAC/C;;AAEA;EACE,6CAA6C;AAC/C;;AAEA;EACE,YAAY;EACZ,mBAAmB;EACnB,eAAe;AACjB;;AAEA,0DAA0D;AAC1D;;EAEE,kDAAkD;EAClD,8BAA8B;EAC9B,4FAA4F;EAC5F,UAAU;AACZ;;AAEA,qDAAqD;AACrD;EACE,gBAAgB;EAChB,UAAU;EACV,SAAS;AACX;;AAEA,0DAA0D;AAC1D;;EAEE,qCAAqC;AACvC;;AAEA,4CAA4C;AAC5C;EACE,iBAAiB;EACjB,gBAAgB;EAChB,2BAA2B;EAC3B,SAAS;AACX;;AAEA,oDAAoD;AACpD;EACE,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;AAClB;;AAEA;EACE,uBAAuB;EACvB,sBAAsB;AACxB;;AAEA,8DAA8D;AAC9D;EACE,2BAA2B;EAC3B,kBAAkB;EAClB,2BAA2B;AAC7B;;AAEA,yDAAyD;AACzD;EACE,aAAa;EACb,sBAAsB;EACtB,mBAAmB;AACrB;;AAEA,4BAA4B;AAC5B;EACE,mCAAmC;EACnC,wCAAwC;EACxC,6BAA6B;EAC7B,0BAA0B;AAC5B;;;AAGA,2DAA2D;AAC3D;EACE,6BAA6B;AAC/B;;AAEA;EACE,6BAA6B;AAC/B",sourcesContent:['/* Utility-first CSS classes for layout, spacing, and responsiveness */\n\n:root {\n --profile-image-size: 3em;\n}\n\n@media (max-width: 1000px) {\n .profile-grid,\n .profile-grid * {\n font-size: 2rem !important;\n }\n\n .profile-grid .actionButton,\n .profile-grid .searchInput,\n .profile-grid .flatButton,\n .profile-grid .buttonSection button,\n .profile-grid .groupButtonsList button {\n min-height: calc(var(--min-touch-target) + 0.5em) !important;\n font-size: 2rem !important;\n padding: 1em 1em !important;\n }\n}\n\n.actionButton {\n width: 100%;\n min-width: 180px;\n max-width: 320px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n/* ===========================================\n PROFILE GRID LAYOUT\n =========================================== */\n\n.profile-grid {\n display: grid;\n /* Allow the grid to shrink below 30em on small viewports to avoid overflow */\n grid-template-columns: repeat(auto-fit, minmax(min(100%, 30em), 1fr));\n gap: var(--spacing-lg);\n background: var(--color-background);\n}\n\n.profile-header,\n.profile-footer {\n grid-column: 1 / -1;\n}\n\n.center {\n justify-content: center;\n align-items: center;\n}\n\n.flex {\n display: flex;\n}\n.grid {\n display: grid;\n}\n\n/* Spacing utilities using CSS variables */\n.gap-xs { gap: var(--spacing-xs); }\n.gap-sm { gap: var(--spacing-sm); }\n.gap-md { gap: var(--spacing-md); }\n.gap-lg { gap: var(--spacing-lg); }\n.gap-xl { gap: var(--spacing-xl); }\n\n.mt-xs { margin-top: var(--spacing-xs); }\n.mt-sm { margin-top: var(--spacing-sm); }\n.mt-md { margin-top: var(--spacing-md); }\n.mt-lg { margin-top: var(--spacing-lg); }\n\n.mb-xs { margin-bottom: var(--spacing-xs); }\n.mb-sm { margin-bottom: var(--spacing-sm); }\n.mb-md { margin-bottom: var(--spacing-md); }\n.mb-lg { margin-bottom: var(--spacing-lg); }\n\n.p-xs { padding: var(--spacing-xs); }\n.p-sm { padding: var(--spacing-sm); }\n.p-md { padding: var(--spacing-md); }\n.p-lg { padding: var(--spacing-lg); }\n\n.rounded { border-radius: var(--border-radius-full); }\n.rounded-sm { border-radius: var(--border-radius-base); }\n\n.shadow { box-shadow: var(--box-shadow); }\n.shadow-sm { box-shadow: var(--box-shadow-sm); }\n\n.bg-primary {\n background: var(--color-primary);\n color: #fff;\n}\n.bg-card {\n background: var(--color-card-bg);\n}\n\n/* Accessibility utilities */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.min-touch-target {\n min-height: var(--min-touch-target);\n min-width: var(--min-touch-target);\n}\n\n/* Enhanced accessibility utilities */\n.visually-hidden {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.visually-hidden.focusable:focus,\n.visually-hidden.focusable:active {\n position: static !important;\n width: auto !important;\n height: auto !important;\n padding: inherit !important;\n margin: inherit !important;\n overflow: visible !important;\n clip: auto !important;\n white-space: inherit !important;\n}\n\n/* Skip links utility */\n.skip-links {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 1000;\n}\n\n.skip-links a {\n position: absolute;\n left: 6px;\n top: 6px;\n padding: var(--spacing-sm);\n background: var(--color-primary);\n color: white;\n text-decoration: none;\n border-radius: var(--border-radius-base);\n}\n\n.skip-links a:focus {\n top: 6px;\n}\n\n.reduced-motion {\n animation: none !important;\n transition: none !important;\n}\n\n/* Focus management */\n.focus-ring {\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n}\n\n.no-focus-ring {\n outline: none;\n}\n\n.no-focus-ring:focus-visible {\n outline: none;\n box-shadow: none;\n}\n\n/* ARIA live regions */\n.live-region {\n position: absolute;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n/* Note: Use aria-live="polite" or aria-live="assertive" HTML attributes with .live-region */\n\n/* Text scaling utilities */\n.text-scale-friendly {\n line-height: 1.5;\n max-width: 70ch; /* Optimal reading length */\n}\n\n/* Text accessibility utilities */\n.text-readable {\n line-height: var(--line-height-base);\n max-width: 65ch;\n}\n\n.text-lg {\n font-size: var(--font-size-lg);\n line-height: var(--line-height-base);\n}\n\n.text-small {\n font-size: max(var(--font-size-sm), var(--min-font-size));\n line-height: var(--min-line-height);\n}\n\n.text-contrast-high {\n color: var(--color-text);\n font-weight: 600;\n}\n\n:focus-visible {\n outline: var(--focus-ring-width) solid var(--color-primary);\n outline-offset: 2px;\n box-shadow: 0 0 0 1px var(--color-background);\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n box-shadow: none;\n}\n\n/* Prevent labels from appearing focusable to keyboard users. */\nlabel:focus,\nlabel:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n}\n\n/* Better focus for text elements */\n.focusable-text:focus {\n background-color: rgba(124, 77, 255, 0.1);\n outline: 2px solid var(--color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* High contrast text */\n.high-contrast {\n color: var(--color-text);\n background: var(--color-background);\n border: 1px solid var(--color-border-pale);\n}\n\n/* ===========================================\n CONSOLIDATED COMPONENT PATTERNS\n =========================================== */\n\n/* Primary Button - used by ChatWithMe, ProfileCard */\n.btn-primary {\n min-height: var(--min-touch-target);\n padding: var(--spacing-sm) var(--spacing-md);\n border: 1px solid var(--color-primary);\n border-radius: var(--border-radius-base);\n background: var(--color-primary);\n color: white;\n font-weight: 600;\n cursor: pointer;\n transition: all var(--animation-duration) ease;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--color-primary) 90%, black);\n box-shadow: 0 2px 4px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:active {\n box-shadow: 0 1px 2px rgba(124, 77, 255, 0.2);\n}\n\n.btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n/* Action Button Focus - used by ChatWithMe, ProfileCard */\n.action-button-focus:focus,\n.action-button-focus:focus-visible {\n outline: 3px solid var(--color-primary) !important;\n outline-offset: 2px !important;\n box-shadow: 0 0 0 2px var(--color-background), 0 0 0 5px rgba(124, 77, 255, 0.25) !important;\n z-index: 1;\n}\n\n/* List Reset - used by FriendList, SocialCard, nav */\n.list-reset {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\n/* Zebra Striping - used by FriendList, StuffCard tables */\n.zebra-stripe tr:nth-child(even),\n.zebra-stripe > *:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.02);\n}\n\n/* Section Title - primary colored heading */\n.section-title {\n font-size: 1.25em;\n font-weight: 600;\n color: var(--color-primary);\n margin: 0;\n}\n\n/* Text Overflow - used by ProfileCard, SocialCard */\n.text-truncate {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n\n.text-wrap-anywhere {\n overflow-wrap: anywhere;\n word-break: break-word;\n}\n\n/* Loading Text - primary colored centered loading indicator */\n.loading-text {\n color: var(--color-primary);\n text-align: center;\n margin: var(--spacing-md) 0;\n}\n\n/* Centered Section - flex column with center alignment */\n.section-centered {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n/* Card Section Background */\n.section-bg {\n background: var(--color-section-bg);\n border-radius: var(--border-radius-full);\n box-shadow: var(--box-shadow);\n padding: var(--spacing-md);\n}\n\n\n/* Transparent button override (for solid-ui integration) */\n.btn-transparent {\n background-color: transparent;\n}\n\n.btn-transparent:hover {\n background-color: transparent;\n}\n'],sourceRoot:""}]);const s=a},6314(n){"use strict";n.exports=function(n){var e=[];return e.toString=function(){return this.map(function(e){var t="",i=void 0!==e[5];return e[4]&&(t+="@supports (".concat(e[4],") {")),e[2]&&(t+="@media ".concat(e[2]," {")),i&&(t+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),t+=n(e),i&&(t+="}"),e[2]&&(t+="}"),e[4]&&(t+="}"),t}).join("")},e.i=function(n,t,i,o,r){"string"==typeof n&&(n=[[null,n,void 0]]);var a={};if(i)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(a[l]=!0)}for(var c=0;c<n.length;c++){var d=[].concat(n[c]);i&&a[d[0]]||(void 0!==r&&(void 0===d[5]||(d[1]="@layer".concat(d[5].length>0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=r),t&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=t):d[2]=t),o&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=o):d[4]="".concat(o)),e.push(d))}},e}},1354(n){"use strict";n.exports=function(n){var e=n[1],t=n[3];if(!t)return e;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(t)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),r="/*# ".concat(o," */");return[e].concat([r]).join("\n")}return[e].join("\n")}},6320(n){"use strict";var e={single_source_shortest_paths:function(n,t,i){var o={},r={};r[t]=0;var a,s,l,c,d,A,u,p=e.PriorityQueue.make();for(p.push(t,0);!p.empty();)for(l in s=(a=p.pop()).value,c=a.cost,d=n[s]||{})d.hasOwnProperty(l)&&(A=c+d[l],u=r[l],(void 0===r[l]||u>A)&&(r[l]=A,p.push(l,A),o[l]=s));if(void 0!==i&&void 0===r[i]){var m=["Could not find a path from ",t," to ",i,"."].join("");throw new Error(m)}return o},extract_shortest_path_from_predecessor_list:function(n,e){for(var t=[],i=e;i;)t.push(i),n[i],i=n[i];return t.reverse(),t},find_path:function(n,t,i){var o=e.single_source_shortest_paths(n,t,i);return e.extract_shortest_path_from_predecessor_list(o,i)},PriorityQueue:{make:function(n){var t,i=e.PriorityQueue,o={};for(t in n=n||{},i)i.hasOwnProperty(t)&&(o[t]=i[t]);return o.queue=[],o.sorter=n.sorter||i.default_sorter,o},default_sorter:function(n,e){return n.cost-e.cost},push:function(n,e){var t={value:n,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};n.exports=e},7583(n,e,t){const i=t(1333),o=t(157),r=t(7899),a=t(6756);function s(n,e,t,r,a){const s=[].slice.call(arguments,1),l=s.length,c="function"==typeof s[l-1];if(!c&&!i())throw new Error("Callback required as last argument");if(!c){if(l<1)throw new Error("Too few arguments provided");return 1===l?(t=e,e=r=void 0):2!==l||e.getContext||(r=t,t=e,e=void 0),new Promise(function(i,a){try{const a=o.create(t,r);i(n(a,e,r))}catch(n){a(n)}})}if(l<2)throw new Error("Too few arguments provided");2===l?(a=t,t=e,e=r=void 0):3===l&&(e.getContext&&void 0===a?(a=r,r=void 0):(a=r,r=t,t=e,e=void 0));try{const i=o.create(t,r);a(null,n(i,e,r))}catch(n){a(n)}}o.create,s.bind(null,r.render),s.bind(null,r.renderToDataURL),e.toString=s.bind(null,function(n,e,t){return a.render(n,t)})},1333(n){n.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},6421(n,e,t){const i=t(6886).getSymbolSize;e.getRowColCoords=function(n){if(1===n)return[];const e=Math.floor(n/7)+2,t=i(n),o=145===t?26:2*Math.ceil((t-13)/(2*e-2)),r=[t-7];for(let n=1;n<e-1;n++)r[n]=r[n-1]-o;return r.push(6),r.reverse()},e.getPositions=function(n){const t=[],i=e.getRowColCoords(n),o=i.length;for(let n=0;n<o;n++)for(let e=0;e<o;e++)0===n&&0===e||0===n&&e===o-1||n===o-1&&0===e||t.push([i[n],i[e]]);return t}},1433(n,e,t){const i=t(208),o=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function r(n){this.mode=i.ALPHANUMERIC,this.data=n}r.getBitsLength=function(n){return 11*Math.floor(n/2)+n%2*6},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let e;for(e=0;e+2<=this.data.length;e+=2){let t=45*o.indexOf(this.data[e]);t+=o.indexOf(this.data[e+1]),n.put(t,11)}this.data.length%2&&n.put(o.indexOf(this.data[e]),6)},n.exports=r},9899(n){function e(){this.buffer=[],this.length=0}e.prototype={get:function(n){const e=Math.floor(n/8);return 1==(this.buffer[e]>>>7-n%8&1)},put:function(n,e){for(let t=0;t<e;t++)this.putBit(1==(n>>>e-t-1&1))},getLengthInBits:function(){return this.length},putBit:function(n){const e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),n&&(this.buffer[e]|=128>>>this.length%8),this.length++}},n.exports=e},8820(n){function e(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}e.prototype.set=function(n,e,t,i){const o=n*this.size+e;this.data[o]=t,i&&(this.reservedBit[o]=!0)},e.prototype.get=function(n,e){return this.data[n*this.size+e]},e.prototype.xor=function(n,e,t){this.data[n*this.size+e]^=t},e.prototype.isReserved=function(n,e){return this.reservedBit[n*this.size+e]},n.exports=e},5822(n,e,t){const i=t(208);function o(n){this.mode=i.BYTE,this.data="string"==typeof n?(new TextEncoder).encode(n):new Uint8Array(n)}o.getBitsLength=function(n){return 8*n},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(n){for(let e=0,t=this.data.length;e<t;e++)n.put(this.data[e],8)},n.exports=o},7518(n,e,t){const i=t(9953),o=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(n,e){switch(e){case i.L:return o[4*(n-1)+0];case i.M:return o[4*(n-1)+1];case i.Q:return o[4*(n-1)+2];case i.H:return o[4*(n-1)+3];default:return}},e.getTotalCodewordsCount=function(n,e){switch(e){case i.L:return r[4*(n-1)+0];case i.M:return r[4*(n-1)+1];case i.Q:return r[4*(n-1)+2];case i.H:return r[4*(n-1)+3];default:return}}},9953(n,e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2},e.isValid=function(n){return n&&void 0!==n.bit&&n.bit>=0&&n.bit<4},e.from=function(n,t){if(e.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+n)}}(n)}catch(n){return t}}},7756(n,e,t){const i=t(6886).getSymbolSize;e.getPositions=function(n){const e=i(n);return[[0,0],[e-7,0],[0,e-7]]}},4565(n,e,t){const i=t(6886),o=i.getBCHDigit(1335);e.getEncodedBits=function(n,e){const t=n.bit<<3|e;let r=t<<10;for(;i.getBCHDigit(r)-o>=0;)r^=1335<<i.getBCHDigit(r)-o;return 21522^(t<<10|r)}},2731(n,e){const t=new Uint8Array(512),i=new Uint8Array(256);!function(){let n=1;for(let e=0;e<255;e++)t[e]=n,i[n]=e,n<<=1,256&n&&(n^=285);for(let n=255;n<512;n++)t[n]=t[n-255]}(),e.log=function(n){if(n<1)throw new Error("log("+n+")");return i[n]},e.exp=function(n){return t[n]},e.mul=function(n,e){return 0===n||0===e?0:t[i[n]+i[e]]}},4861(n,e,t){const i=t(208),o=t(6886);function r(n){this.mode=i.KANJI,this.data=n}r.getBitsLength=function(n){return 13*n},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(n){let e;for(e=0;e<this.data.length;e++){let t=o.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else{if(!(t>=57408&&t<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");t-=49472}t=192*(t>>>8&255)+(255&t),n.put(t,13)}},n.exports=r},1332(n,e){e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const t=3,i=3,o=40,r=10;function a(n,t,i){switch(n){case e.Patterns.PATTERN000:return(t+i)%2==0;case e.Patterns.PATTERN001:return t%2==0;case e.Patterns.PATTERN010:return i%3==0;case e.Patterns.PATTERN011:return(t+i)%3==0;case e.Patterns.PATTERN100:return(Math.floor(t/2)+Math.floor(i/3))%2==0;case e.Patterns.PATTERN101:return t*i%2+t*i%3==0;case e.Patterns.PATTERN110:return(t*i%2+t*i%3)%2==0;case e.Patterns.PATTERN111:return(t*i%3+(t+i)%2)%2==0;default:throw new Error("bad maskPattern:"+n)}}e.isValid=function(n){return null!=n&&""!==n&&!isNaN(n)&&n>=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const e=n.size;let i=0,o=0,r=0,a=null,s=null;for(let l=0;l<e;l++){o=r=0,a=s=null;for(let c=0;c<e;c++){let e=n.get(l,c);e===a?o++:(o>=5&&(i+=t+(o-5)),a=e,o=1),e=n.get(c,l),e===s?r++:(r>=5&&(i+=t+(r-5)),s=e,r=1)}o>=5&&(i+=t+(o-5)),r>=5&&(i+=t+(r-5))}return i},e.getPenaltyN2=function(n){const e=n.size;let t=0;for(let i=0;i<e-1;i++)for(let o=0;o<e-1;o++){const e=n.get(i,o)+n.get(i,o+1)+n.get(i+1,o)+n.get(i+1,o+1);4!==e&&0!==e||t++}return t*i},e.getPenaltyN3=function(n){const e=n.size;let t=0,i=0,r=0;for(let o=0;o<e;o++){i=r=0;for(let a=0;a<e;a++)i=i<<1&2047|n.get(o,a),a>=10&&(1488===i||93===i)&&t++,r=r<<1&2047|n.get(a,o),a>=10&&(1488===r||93===r)&&t++}return t*o},e.getPenaltyN4=function(n){let e=0;const t=n.data.length;for(let i=0;i<t;i++)e+=n.data[i];return Math.abs(Math.ceil(100*e/t/5)-10)*r},e.applyMask=function(n,e){const t=e.size;for(let i=0;i<t;i++)for(let o=0;o<t;o++)e.isReserved(o,i)||e.xor(o,i,a(n,o,i))},e.getBestMask=function(n,t){const i=Object.keys(e.Patterns).length;let o=0,r=1/0;for(let a=0;a<i;a++){t(a),e.applyMask(a,n);const i=e.getPenaltyN1(n)+e.getPenaltyN2(n)+e.getPenaltyN3(n)+e.getPenaltyN4(n);e.applyMask(a,n),i<r&&(r=i,o=a)}return o}},208(n,e,t){const i=t(1878),o=t(7044);e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(n,e){if(!n.ccBits)throw new Error("Invalid mode: "+n);if(!i.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?n.ccBits[0]:e<27?n.ccBits[1]:n.ccBits[2]},e.getBestModeForData=function(n){return o.testNumeric(n)?e.NUMERIC:o.testAlphanumeric(n)?e.ALPHANUMERIC:o.testKanji(n)?e.KANJI:e.BYTE},e.toString=function(n){if(n&&n.id)return n.id;throw new Error("Invalid mode")},e.isValid=function(n){return n&&n.bit&&n.ccBits},e.from=function(n,t){if(e.isValid(n))return n;try{return function(n){if("string"!=typeof n)throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}(n)}catch(n){return t}}},4357(n,e,t){const i=t(208);function o(n){this.mode=i.NUMERIC,this.data=n.toString()}o.getBitsLength=function(n){return 10*Math.floor(n/3)+(n%3?n%3*3+1:0)},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(n){let e,t,i;for(e=0;e+3<=this.data.length;e+=3)t=this.data.substr(e,3),i=parseInt(t,10),n.put(i,10);const o=this.data.length-e;o>0&&(t=this.data.substr(e),i=parseInt(t,10),n.put(i,3*o+1))},n.exports=o},4713(n,e,t){const i=t(2731);e.mul=function(n,e){const t=new Uint8Array(n.length+e.length-1);for(let o=0;o<n.length;o++)for(let r=0;r<e.length;r++)t[o+r]^=i.mul(n[o],e[r]);return t},e.mod=function(n,e){let t=new Uint8Array(n);for(;t.length-e.length>=0;){const n=t[0];for(let o=0;o<e.length;o++)t[o]^=i.mul(e[o],n);let o=0;for(;o<t.length&&0===t[o];)o++;t=t.slice(o)}return t},e.generateECPolynomial=function(n){let t=new Uint8Array([1]);for(let o=0;o<n;o++)t=e.mul(t,new Uint8Array([1,i.exp(o)]));return t}},157(n,e,t){const i=t(6886),o=t(9953),r=t(9899),a=t(8820),s=t(6421),l=t(7756),c=t(1332),d=t(7518),A=t(4764),u=t(1427),p=t(4565),m=t(208),f=t(9801);function h(n,e,t){const i=n.size,o=p.getEncodedBits(e,t);let r,a;for(r=0;r<15;r++)a=1==(o>>r&1),r<6?n.set(r,8,a,!0):r<8?n.set(r+1,8,a,!0):n.set(i-15+r,8,a,!0),r<8?n.set(8,i-r-1,a,!0):r<9?n.set(8,15-r-1+1,a,!0):n.set(8,15-r-1,a,!0);n.set(i-8,8,1,!0)}function g(n,e,t){const o=new r;t.forEach(function(e){o.put(e.mode.bit,4),o.put(e.getLength(),m.getCharCountIndicator(e.mode,n)),e.write(o)});const a=8*(i.getSymbolTotalCodewords(n)-d.getTotalCodewordsCount(n,e));for(o.getLengthInBits()+4<=a&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(0);const s=(a-o.getLengthInBits())/8;for(let n=0;n<s;n++)o.put(n%2?17:236,8);return function(n,e,t){const o=i.getSymbolTotalCodewords(e),r=d.getTotalCodewordsCount(e,t),a=o-r,s=d.getBlocksCount(e,t),l=o%s,c=s-l,u=Math.floor(o/s),p=Math.floor(a/s),m=p+1,f=u-p,h=new A(f);let g=0;const C=new Array(s),b=new Array(s);let B=0;const E=new Uint8Array(n.buffer);for(let n=0;n<s;n++){const e=n<c?p:m;C[n]=E.slice(g,g+e),b[n]=h.encode(C[n]),g+=e,B=Math.max(B,e)}const v=new Uint8Array(o);let w,y,x=0;for(w=0;w<B;w++)for(y=0;y<s;y++)w<C[y].length&&(v[x++]=C[y][w]);for(w=0;w<f;w++)for(y=0;y<s;y++)v[x++]=b[y][w];return v}(o,n,e)}function C(n,e,t,o){let r;if(Array.isArray(n))r=f.fromArray(n);else{if("string"!=typeof n)throw new Error("Invalid data");{let i=e;if(!i){const e=f.rawSplit(n);i=u.getBestVersionForData(e,t)}r=f.fromString(n,i||40)}}const d=u.getBestVersionForData(r,t);if(!d)throw new Error("The amount of data is too big to be stored in a QR Code");if(e){if(e<d)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+d+".\n")}else e=d;const A=g(e,t,r),p=i.getSymbolSize(e),m=new a(p);return function(n,e){const t=n.size,i=l.getPositions(e);for(let e=0;e<i.length;e++){const o=i[e][0],r=i[e][1];for(let e=-1;e<=7;e++)if(!(o+e<=-1||t<=o+e))for(let i=-1;i<=7;i++)r+i<=-1||t<=r+i||(e>=0&&e<=6&&(0===i||6===i)||i>=0&&i<=6&&(0===e||6===e)||e>=2&&e<=4&&i>=2&&i<=4?n.set(o+e,r+i,!0,!0):n.set(o+e,r+i,!1,!0))}}(m,e),function(n){const e=n.size;for(let t=8;t<e-8;t++){const e=t%2==0;n.set(t,6,e,!0),n.set(6,t,e,!0)}}(m),function(n,e){const t=s.getPositions(e);for(let e=0;e<t.length;e++){const i=t[e][0],o=t[e][1];for(let e=-2;e<=2;e++)for(let t=-2;t<=2;t++)-2===e||2===e||-2===t||2===t||0===e&&0===t?n.set(i+e,o+t,!0,!0):n.set(i+e,o+t,!1,!0)}}(m,e),h(m,t,0),e>=7&&function(n,e){const t=n.size,i=u.getEncodedBits(e);let o,r,a;for(let e=0;e<18;e++)o=Math.floor(e/3),r=e%3+t-8-3,a=1==(i>>e&1),n.set(o,r,a,!0),n.set(r,o,a,!0)}(m,e),function(n,e){const t=n.size;let i=-1,o=t-1,r=7,a=0;for(let s=t-1;s>0;s-=2)for(6===s&&s--;;){for(let t=0;t<2;t++)if(!n.isReserved(o,s-t)){let i=!1;a<e.length&&(i=1==(e[a]>>>r&1)),n.set(o,s-t,i),r--,-1===r&&(a++,r=7)}if(o+=i,o<0||t<=o){o-=i,i=-i;break}}}(m,A),isNaN(o)&&(o=c.getBestMask(m,h.bind(null,m,t))),c.applyMask(o,m),h(m,t,o),{modules:m,version:e,errorCorrectionLevel:t,maskPattern:o,segments:r}}e.create=function(n,e){if(void 0===n||""===n)throw new Error("No input text");let t,r,a=o.M;return void 0!==e&&(a=o.from(e.errorCorrectionLevel,o.M),t=u.from(e.version),r=c.from(e.maskPattern),e.toSJISFunc&&i.setToSJISFunction(e.toSJISFunc)),C(n,t,a,r)}},4764(n,e,t){const i=t(4713);function o(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}o.prototype.initialize=function(n){this.degree=n,this.genPoly=i.generateECPolynomial(this.degree)},o.prototype.encode=function(n){if(!this.genPoly)throw new Error("Encoder not initialized");const e=new Uint8Array(n.length+this.degree);e.set(n);const t=i.mod(e,this.genPoly),o=this.degree-t.length;if(o>0){const n=new Uint8Array(this.degree);return n.set(t,o),n}return t},n.exports=o},7044(n,e){const t="[0-9]+";let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const o="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+")(?:.|[\r\n]))+";e.KANJI=new RegExp(i,"g"),e.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),e.BYTE=new RegExp(o,"g"),e.NUMERIC=new RegExp(t,"g"),e.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const r=new RegExp("^"+i+"$"),a=new RegExp("^"+t+"$"),s=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");e.testKanji=function(n){return r.test(n)},e.testNumeric=function(n){return a.test(n)},e.testAlphanumeric=function(n){return s.test(n)}},9801(n,e,t){const i=t(208),o=t(4357),r=t(1433),a=t(5822),s=t(4861),l=t(7044),c=t(6886),d=t(6320);function A(n){return unescape(encodeURIComponent(n)).length}function u(n,e,t){const i=[];let o;for(;null!==(o=n.exec(t));)i.push({data:o[0],index:o.index,mode:e,length:o[0].length});return i}function p(n){const e=u(l.NUMERIC,i.NUMERIC,n),t=u(l.ALPHANUMERIC,i.ALPHANUMERIC,n);let o,r;c.isKanjiModeEnabled()?(o=u(l.BYTE,i.BYTE,n),r=u(l.KANJI,i.KANJI,n)):(o=u(l.BYTE_KANJI,i.BYTE,n),r=[]);return e.concat(t,o,r).sort(function(n,e){return n.index-e.index}).map(function(n){return{data:n.data,mode:n.mode,length:n.length}})}function m(n,e){switch(e){case i.NUMERIC:return o.getBitsLength(n);case i.ALPHANUMERIC:return r.getBitsLength(n);case i.KANJI:return s.getBitsLength(n);case i.BYTE:return a.getBitsLength(n)}}function f(n,e){let t;const l=i.getBestModeForData(n);if(t=i.from(e,l),t!==i.BYTE&&t.bit<l.bit)throw new Error('"'+n+'" cannot be encoded with mode '+i.toString(t)+".\n Suggested mode is: "+i.toString(l));switch(t!==i.KANJI||c.isKanjiModeEnabled()||(t=i.BYTE),t){case i.NUMERIC:return new o(n);case i.ALPHANUMERIC:return new r(n);case i.KANJI:return new s(n);case i.BYTE:return new a(n)}}e.fromArray=function(n){return n.reduce(function(n,e){return"string"==typeof e?n.push(f(e,null)):e.data&&n.push(f(e.data,e.mode)),n},[])},e.fromString=function(n,t){const o=function(n){const e=[];for(let t=0;t<n.length;t++){const o=n[t];switch(o.mode){case i.NUMERIC:e.push([o,{data:o.data,mode:i.ALPHANUMERIC,length:o.length},{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.ALPHANUMERIC:e.push([o,{data:o.data,mode:i.BYTE,length:o.length}]);break;case i.KANJI:e.push([o,{data:o.data,mode:i.BYTE,length:A(o.data)}]);break;case i.BYTE:e.push([{data:o.data,mode:i.BYTE,length:A(o.data)}])}}return e}(p(n,c.isKanjiModeEnabled())),r=function(n,e){const t={},o={start:{}};let r=["start"];for(let a=0;a<n.length;a++){const s=n[a],l=[];for(let n=0;n<s.length;n++){const c=s[n],d=""+a+n;l.push(d),t[d]={node:c,lastCount:0},o[d]={};for(let n=0;n<r.length;n++){const a=r[n];t[a]&&t[a].node.mode===c.mode?(o[a][d]=m(t[a].lastCount+c.length,c.mode)-m(t[a].lastCount,c.mode),t[a].lastCount+=c.length):(t[a]&&(t[a].lastCount=c.length),o[a][d]=m(c.length,c.mode)+4+i.getCharCountIndicator(c.mode,e))}}r=l}for(let n=0;n<r.length;n++)o[r[n]].end=0;return{map:o,table:t}}(o,t),a=d.find_path(r.map,"start","end"),s=[];for(let n=1;n<a.length-1;n++)s.push(r.table[a[n]].node);return e.fromArray(function(n){return n.reduce(function(n,e){const t=n.length-1>=0?n[n.length-1]:null;return t&&t.mode===e.mode?(n[n.length-1].data+=e.data,n):(n.push(e),n)},[])}(s))},e.rawSplit=function(n){return e.fromArray(p(n,c.isKanjiModeEnabled()))}},6886(n,e){let t;const i=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(n){if(!n)throw new Error('"version" cannot be null or undefined');if(n<1||n>40)throw new Error('"version" should be in range from 1 to 40');return 4*n+17},e.getSymbolTotalCodewords=function(n){return i[n]},e.getBCHDigit=function(n){let e=0;for(;0!==n;)e++,n>>>=1;return e},e.setToSJISFunction=function(n){if("function"!=typeof n)throw new Error('"toSJISFunc" is not a valid function.');t=n},e.isKanjiModeEnabled=function(){return void 0!==t},e.toSJIS=function(n){return t(n)}},1878(n,e){e.isValid=function(n){return!isNaN(n)&&n>=1&&n<=40}},1427(n,e,t){const i=t(6886),o=t(7518),r=t(9953),a=t(208),s=t(1878),l=i.getBCHDigit(7973);function c(n,e){return a.getCharCountIndicator(n,e)+4}function d(n,e){let t=0;return n.forEach(function(n){const i=c(n.mode,e);t+=i+n.getBitsLength()}),t}e.from=function(n,e){return s.isValid(n)?parseInt(n,10):e},e.getCapacity=function(n,e,t){if(!s.isValid(n))throw new Error("Invalid QR Code version");void 0===t&&(t=a.BYTE);const r=8*(i.getSymbolTotalCodewords(n)-o.getTotalCodewordsCount(n,e));if(t===a.MIXED)return r;const l=r-c(t,n);switch(t){case a.NUMERIC:return Math.floor(l/10*3);case a.ALPHANUMERIC:return Math.floor(l/11*2);case a.KANJI:return Math.floor(l/13);case a.BYTE:default:return Math.floor(l/8)}},e.getBestVersionForData=function(n,t){let i;const o=r.from(t,r.M);if(Array.isArray(n)){if(n.length>1)return function(n,t){for(let i=1;i<=40;i++)if(d(n,i)<=e.getCapacity(i,t,a.MIXED))return i}(n,o);if(0===n.length)return 1;i=n[0]}else i=n;return function(n,t,i){for(let o=1;o<=40;o++)if(t<=e.getCapacity(o,i,n))return o}(i.mode,i.getLength(),o)},e.getEncodedBits=function(n){if(!s.isValid(n)||n<7)throw new Error("Invalid QR Code version");let e=n<<12;for(;i.getBCHDigit(e)-l>=0;)e^=7973<<i.getBCHDigit(e)-l;return n<<12|e}},7899(n,e,t){const i=t(2726);e.render=function(n,e,t){let o=t,r=e;void 0!==o||e&&e.getContext||(o=e,e=void 0),e||(r=function(){try{return document.createElement("canvas")}catch(n){throw new Error("You need to specify a canvas element")}}()),o=i.getOptions(o);const a=i.getImageWidth(n.modules.size,o),s=r.getContext("2d"),l=s.createImageData(a,a);return i.qrToImageData(l.data,n,o),function(n,e,t){n.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}(s,r,a),s.putImageData(l,0,0),r},e.renderToDataURL=function(n,t,i){let o=i;void 0!==o||t&&t.getContext||(o=t,t=void 0),o||(o={});const r=e.render(n,t,o),a=o.type||"image/png",s=o.rendererOpts||{};return r.toDataURL(a,s.quality)}},6756(n,e,t){const i=t(2726);function o(n,e){const t=n.a/255,i=e+'="'+n.hex+'"';return t<1?i+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':i}function r(n,e,t){let i=n+e;return void 0!==t&&(i+=" "+t),i}e.render=function(n,e,t){const a=i.getOptions(e),s=n.modules.size,l=n.modules.data,c=s+2*a.margin,d=a.color.light.a?"<path "+o(a.color.light,"fill")+' d="M0 0h'+c+"v"+c+'H0z"/>':"",A="<path "+o(a.color.dark,"stroke")+' d="'+function(n,e,t){let i="",o=0,a=!1,s=0;for(let l=0;l<n.length;l++){const c=Math.floor(l%e),d=Math.floor(l/e);c||a||(a=!0),n[l]?(s++,l>0&&c>0&&n[l-1]||(i+=a?r("M",c+t,.5+d+t):r("m",o,0),o=0,a=!1),c+1<e&&n[l+1]||(i+=r("h",s),s=0)):o++}return i}(l,s,a.margin)+'"/>',u='viewBox="0 0 '+c+" "+c+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(a.width?'width="'+a.width+'" height="'+a.width+'" ':"")+u+' shape-rendering="crispEdges">'+d+A+"</svg>\n";return"function"==typeof t&&t(null,p),p}},2726(n,e){function t(n){if("number"==typeof n&&(n=n.toString()),"string"!=typeof n)throw new Error("Color should be defined as hex string");let e=n.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+n);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map(function(n){return[n,n]}))),6===e.length&&e.push("F","F");const t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:255&t,hex:"#"+e.slice(0,6).join("")}}e.getOptions=function(n){n||(n={}),n.color||(n.color={});const e=void 0===n.margin||null===n.margin||n.margin<0?4:n.margin,i=n.width&&n.width>=21?n.width:void 0,o=n.scale||4;return{width:i,scale:i?4:o,margin:e,color:{dark:t(n.color.dark||"#000000ff"),light:t(n.color.light||"#ffffffff")},type:n.type,rendererOpts:n.rendererOpts||{}}},e.getScale=function(n,e){return e.width&&e.width>=n+2*e.margin?e.width/(n+2*e.margin):e.scale},e.getImageWidth=function(n,t){const i=e.getScale(n,t);return Math.floor((n+2*t.margin)*i)},e.qrToImageData=function(n,t,i){const o=t.modules.size,r=t.modules.data,a=e.getScale(o,i),s=Math.floor((o+2*i.margin)*a),l=i.margin*a,c=[i.color.light,i.color.dark];for(let e=0;e<s;e++)for(let t=0;t<s;t++){let d=4*(e*s+t),A=i.color.light;if(e>=l&&t>=l&&e<s-l&&t<s-l){A=c[r[Math.floor((e-l)/a)*o+Math.floor((t-l)/a)]?1:0]}n[d++]=A.r,n[d++]=A.g,n[d++]=A.b,n[d]=A.a}}},5072(n){"use strict";var e=[];function t(n){for(var t=-1,i=0;i<e.length;i++)if(e[i].identifier===n){t=i;break}return t}function i(n,i){for(var r={},a=[],s=0;s<n.length;s++){var l=n[s],c=i.base?l[0]+i.base:l[0],d=r[c]||0,A="".concat(c," ").concat(d);r[c]=d+1;var u=t(A),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==u)e[u].references++,e[u].updater(p);else{var m=o(p,i);i.byIndex=s,e.splice(s,0,{identifier:A,updater:m,references:1})}a.push(A)}return a}function o(n,e){var t=e.domAPI(e);t.update(n);return function(e){if(e){if(e.css===n.css&&e.media===n.media&&e.sourceMap===n.sourceMap&&e.supports===n.supports&&e.layer===n.layer)return;t.update(n=e)}else t.remove()}}n.exports=function(n,o){var r=i(n=n||[],o=o||{});return function(n){n=n||[];for(var a=0;a<r.length;a++){var s=t(r[a]);e[s].references--}for(var l=i(n,o),c=0;c<r.length;c++){var d=t(r[c]);0===e[d].references&&(e[d].updater(),e.splice(d,1))}r=l}}},7659(n){"use strict";var e={};n.exports=function(n,t){var i=function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}e[n]=t}return e[n]}(n);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(t)}},540(n){"use strict";n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},5056(n,e,t){"use strict";n.exports=function(n){var e=t.nc;e&&n.setAttribute("nonce",e)}},7825(n){"use strict";n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(t){!function(n,e,t){var i="";t.supports&&(i+="@supports (".concat(t.supports,") {")),t.media&&(i+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(i+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),i+=t.css,o&&(i+="}"),t.media&&(i+="}"),t.supports&&(i+="}");var r=t.sourceMap;r&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleTagTransform(i,n,e.options)}(e,n,t)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}},1113(n){"use strict";n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},6077(n){n.exports=function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){"use strict";t.r(e),t.d(e,"validateHTMLColorName",function(){return a}),t.d(e,"validateHTMLColorSpecialName",function(){return s}),t.d(e,"validateHTMLColorHex",function(){return l}),t.d(e,"validateHTMLColorRgb",function(){return f}),t.d(e,"validateHTMLColorHsl",function(){return h}),t.d(e,"validateHTMLColorHwb",function(){return g}),t.d(e,"validateHTMLColorLab",function(){return C}),t.d(e,"validateHTMLColorLch",function(){return b}),t.d(e,"validateHTMLColor",function(){return B});const i=n=>n&&"string"==typeof n,o=["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenrod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","Goldenrod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenrodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquamarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenrod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"],r=["currentColor","inherit","transparent"],a=n=>{let e=!1;return i(n)&&o.map(t=>(n.toLowerCase()===t.toLowerCase()&&(e=!0),null)),e},s=n=>{let e=!1;return i(n)&&r.map(t=>(n.toLowerCase()===t.toLowerCase()&&(e=!0),null)),e},l=n=>{if(i(n)){return n&&/^#([\da-f]{3}){1,2}$|^#([\da-f]{4}){1,2}$/i.test(n)}return!1},c="(([\\d]{0,5})((\\.([\\d]{1,5}))?))",d=`(${c}%)`,A="(([0-9]|[1-9][0-9]|100)%)",u=`(${A}|(0?((\\.([\\d]{1,5}))?))|1)`,p=`([\\s]{0,5})\\)?)(([\\s]{0,5})(\\/?)([\\s]{1,5})(((${A}))|(0?((\\.([\\d]{1,5}))?))|1))?([\\s]{0,5})\\)`,m="(-?(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\.([\\d]{1,5}))?)|360)(deg)?)",f=n=>{if(i(n)){const e="([\\s]{0,5})([\\d]{1,5})%?([\\s]{0,5}),?",t="((([\\s]{0,5}),?([\\s]{0,5}))|(([\\s]{1,5})))",i=new RegExp(`^(rgb)a?\\(${e}${t}${e}${t}${e}${t}((\\/?([\\s]{0,5})(0?\\.?([\\d]{1,5})%?([\\s]{0,5}))?|1|0))?\\)$`);return n&&i.test(n)}return!1},h=n=>{if(i(n)){const e=new RegExp(`^(hsl)a?\\((([\\s]{0,5})(${m}|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-9][0-9]|400)grad)|((([0-5])?\\.([\\d]{1,5})|6\\.([0-9]|1[0-9]|2[0-8])|[0-6])rad)|((0?((\\.([\\d]{1,5}))?)|1)turn))((([\\s]{0,5}),([\\s]{0,5}))|(([\\s]{1,5}))))(([\\s]{0,5})(0|${A})((([\\s]{0,5}),([\\s]{0,5}))|(([\\s]{1,5}))))(([\\s]{0,5})(0|${A})([\\s]{0,5})\\)?)(([\\s]{0,5})(\\/?|,?)([\\s]{0,5})(((${A}))|(0?((\\.([\\d]{1,5}))?))|1))?\\)$`);return n&&e.test(n)}return!1},g=n=>{if(i(n)){const e=new RegExp(`^(hwb\\(([\\s]{0,5})${m}([\\s]{1,5}))((0|${A})([\\s]{1,5}))((0|${A})${p}$`);return n&&e.test(n)}return!1},C=n=>{if(i(n)){const e="(-?(([0-9]|[1-9][0-9]|1[0-5][0-9])((\\.([\\d]{1,5}))?)?|160))",t=new RegExp(`^(lab\\(([\\s]{0,5})${d}([\\s]{1,5})${e}([\\s]{1,5})${e}${p}$`);return n&&t.test(n)}return!1},b=n=>{if(i(n)){const e=new RegExp(`^lch\\((([\\s]{0,5})${"((([0-9]|[1-9][0-9])?((\\.([\\d]{1,5}))?)|100)(%)?)"}([\\s]{1,5})${""+c}([\\s]{1,5})${`((${m})|(0|${u})|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\.([\\d]{1,5}))?)|360))`}([\\s]{0,5})(${`(\\/([\\s]{0,5})${u})`})?)\\)$`);return n&&e.test(n)}return!1},B=n=>!!(n&&l(n)||f(n)||h(n)||g(n)||C(n)||b(n));e.default=n=>!!(n&&l(n)||a(n)||s(n)||f(n)||h(n)||g(n)||C(n)||b(n))}])},5663(n){"use strict";n.exports=e},9426(e){"use strict";e.exports=n},5491(n){"use strict";n.exports=t}},o={};function r(n){var e=o[n];if(void 0!==e)return e.exports;var t=o[n]={id:n,exports:{}};return i[n](t,t.exports,r),t.exports}r.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return r.d(e,{a:e}),e},r.d=(n,e)=>{for(var t in e)r.o(e,t)&&!r.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},r.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),r.nc=void 0;var a={};return(()=>{"use strict";r.d(a,{default:()=>Ze});var n=r(5072),e=r.n(n),t=r(7825),i=r.n(t),o=r(7659),s=r.n(o),l=r(5056),c=r.n(l),d=r(540),A=r.n(d),u=r(1113),p=r.n(u),m=r(1267),f={};f.styleTagTransform=p(),f.setAttributes=c(),f.insert=s().bind(null,"head"),f.domAPI=i(),f.insertStyleElement=A();e()(m.A,f);m.A&&m.A.locals&&m.A.locals;var h=r(3750),g={};g.styleTagTransform=p(),g.setAttributes=c(),g.insert=s().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=A();e()(h.A,g);h.A&&h.A.locals&&h.A.locals;var C=r(1666),b={};b.styleTagTransform=p(),b.setAttributes=c(),b.insert=s().bind(null,"head"),b.domAPI=i(),b.insertStyleElement=A();e()(C.A,b);C.A&&C.A.locals&&C.A.locals;var B=r(1937),E={};E.styleTagTransform=p(),E.setAttributes=c(),E.insert=s().bind(null,"head"),E.domAPI=i(),E.insertStyleElement=A();e()(B.A,E);B.A&&B.A.locals&&B.A.locals;var v=r(436),w={};w.styleTagTransform=p(),w.setAttributes=c(),w.insert=s().bind(null,"head"),w.domAPI=i(),w.insertStyleElement=A();e()(v.A,w);v.A&&v.A.locals&&v.A.locals;var y=r(1134),x={};x.styleTagTransform=p(),x.setAttributes=c(),x.insert=s().bind(null,"head"),x.domAPI=i(),x.insertStyleElement=A();e()(y.A,x);y.A&&y.A.locals&&y.A.locals;var k=r(1649),S={};S.styleTagTransform=p(),S.setAttributes=c(),S.insert=s().bind(null,"head"),S.domAPI=i(),S.insertStyleElement=A();e()(k.A,S);k.A&&k.A.locals&&k.A.locals;var F=r(6660),$={};$.styleTagTransform=p(),$.setAttributes=c(),$.insert=s().bind(null,"head"),$.domAPI=i(),$.insertStyleElement=A();e()(F.A,$);F.A&&F.A.locals&&F.A.locals;var I=r(5092),T={};T.styleTagTransform=p(),T.setAttributes=c(),T.insert=s().bind(null,"head"),T.domAPI=i(),T.insertStyleElement=A();e()(I.A,T);I.A&&I.A.locals&&I.A.locals;const L=globalThis,N=n=>n,_=L.trustedTypes,P=_?_.createPolicy("lit-html",{createHTML:n=>n}):void 0,D="$lit$",R=`lit$${Math.random().toFixed(9).slice(2)}$`,z="?"+R,M=`<${z}>`,O=document,U=()=>O.createComment(""),H=n=>null===n||"object"!=typeof n&&"function"!=typeof n,q=Array.isArray,G=n=>q(n)||"function"==typeof n?.[Symbol.iterator],j="[ \t\n\f\r]",W=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,V=/-->/g,Y=/>/g,Q=RegExp(`>|${j}(?:([^\\s"'>=/]+)(${j}*=${j}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),Z=/'/g,J=/"/g,K=/^(?:script|style|textarea|title)$/i,X=n=>(e,...t)=>({_$litType$:n,strings:e,values:t}),nn=X(1),en=(X(2),X(3),Symbol.for("lit-noChange")),tn=Symbol.for("lit-nothing"),on=new WeakMap,rn=O.createTreeWalker(O,129);function an(n,e){if(!q(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==P?P.createHTML(e):e}const sn=(n,e)=>{const t=n.length-1,i=[];let o,r=2===e?"<svg>":3===e?"<math>":"",a=W;for(let e=0;e<t;e++){const t=n[e];let s,l,c=-1,d=0;for(;d<t.length&&(a.lastIndex=d,l=a.exec(t),null!==l);)d=a.lastIndex,a===W?"!--"===l[1]?a=V:void 0!==l[1]?a=Y:void 0!==l[2]?(K.test(l[2])&&(o=RegExp("</"+l[2],"g")),a=Q):void 0!==l[3]&&(a=Q):a===Q?">"===l[0]?(a=o??W,c=-1):void 0===l[1]?c=-2:(c=a.lastIndex-l[2].length,s=l[1],a=void 0===l[3]?Q:'"'===l[3]?J:Z):a===J||a===Z?a=Q:a===V||a===Y?a=W:(a=Q,o=void 0);const A=a===Q&&n[e+1].startsWith("/>")?" ":"";r+=a===W?t+M:c>=0?(i.push(s),t.slice(0,c)+D+t.slice(c)+R+A):t+R+(-2===c?e:A)}return[an(n,r+(n[t]||"<?>")+(2===e?"</svg>":3===e?"</math>":"")),i]};class ln{constructor({strings:n,_$litType$:e},t){let i;this.parts=[];let o=0,r=0;const a=n.length-1,s=this.parts,[l,c]=sn(n,e);if(this.el=ln.createElement(l,t),rn.currentNode=this.el.content,2===e||3===e){const n=this.el.content.firstChild;n.replaceWith(...n.childNodes)}for(;null!==(i=rn.nextNode())&&s.length<a;){if(1===i.nodeType){if(i.hasAttributes())for(const n of i.getAttributeNames())if(n.endsWith(D)){const e=c[r++],t=i.getAttribute(n).split(R),a=/([.?@])?(.*)/.exec(e);s.push({type:1,index:o,name:a[2],strings:t,ctor:"."===a[1]?pn:"?"===a[1]?mn:"@"===a[1]?fn:un}),i.removeAttribute(n)}else n.startsWith(R)&&(s.push({type:6,index:o}),i.removeAttribute(n));if(K.test(i.tagName)){const n=i.textContent.split(R),e=n.length-1;if(e>0){i.textContent=_?_.emptyScript:"";for(let t=0;t<e;t++)i.append(n[t],U()),rn.nextNode(),s.push({type:2,index:++o});i.append(n[e],U())}}}else if(8===i.nodeType)if(i.data===z)s.push({type:2,index:o});else{let n=-1;for(;-1!==(n=i.data.indexOf(R,n+1));)s.push({type:7,index:o}),n+=R.length-1}o++}}static createElement(n,e){const t=O.createElement("template");return t.innerHTML=n,t}}function cn(n,e,t=n,i){if(e===en)return e;let o=void 0!==i?t._$Co?.[i]:t._$Cl;const r=H(e)?void 0:e._$litDirective$;return o?.constructor!==r&&(o?._$AO?.(!1),void 0===r?o=void 0:(o=new r(n),o._$AT(n,t,i)),void 0!==i?(t._$Co??=[])[i]=o:t._$Cl=o),void 0!==o&&(e=cn(n,o._$AS(n,e.values),o,i)),e}class dn{constructor(n,e){this._$AV=[],this._$AN=void 0,this._$AD=n,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(n){const{el:{content:e},parts:t}=this._$AD,i=(n?.creationScope??O).importNode(e,!0);rn.currentNode=i;let o=rn.nextNode(),r=0,a=0,s=t[0];for(;void 0!==s;){if(r===s.index){let e;2===s.type?e=new An(o,o.nextSibling,this,n):1===s.type?e=new s.ctor(o,s.name,s.strings,this,n):6===s.type&&(e=new hn(o,this,n)),this._$AV.push(e),s=t[++a]}r!==s?.index&&(o=rn.nextNode(),r++)}return rn.currentNode=O,i}p(n){let e=0;for(const t of this._$AV)void 0!==t&&(void 0!==t.strings?(t._$AI(n,t,e),e+=t.strings.length-2):t._$AI(n[e])),e++}}class An{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(n,e,t,i){this.type=2,this._$AH=tn,this._$AN=void 0,this._$AA=n,this._$AB=e,this._$AM=t,this.options=i,this._$Cv=i?.isConnected??!0}get parentNode(){let n=this._$AA.parentNode;const e=this._$AM;return void 0!==e&&11===n?.nodeType&&(n=e.parentNode),n}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(n,e=this){n=cn(this,n,e),H(n)?n===tn||null==n||""===n?(this._$AH!==tn&&this._$AR(),this._$AH=tn):n!==this._$AH&&n!==en&&this._(n):void 0!==n._$litType$?this.$(n):void 0!==n.nodeType?this.T(n):G(n)?this.k(n):this._(n)}O(n){return this._$AA.parentNode.insertBefore(n,this._$AB)}T(n){this._$AH!==n&&(this._$AR(),this._$AH=this.O(n))}_(n){this._$AH!==tn&&H(this._$AH)?this._$AA.nextSibling.data=n:this.T(O.createTextNode(n)),this._$AH=n}$(n){const{values:e,_$litType$:t}=n,i="number"==typeof t?this._$AC(n):(void 0===t.el&&(t.el=ln.createElement(an(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===i)this._$AH.p(e);else{const n=new dn(i,this),t=n.u(this.options);n.p(e),this.T(t),this._$AH=n}}_$AC(n){let e=on.get(n.strings);return void 0===e&&on.set(n.strings,e=new ln(n)),e}k(n){q(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let t,i=0;for(const o of n)i===e.length?e.push(t=new An(this.O(U()),this.O(U()),this,this.options)):t=e[i],t._$AI(o),i++;i<e.length&&(this._$AR(t&&t._$AB.nextSibling,i),e.length=i)}_$AR(n=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);n!==this._$AB;){const e=N(n).nextSibling;N(n).remove(),n=e}}setConnected(n){void 0===this._$AM&&(this._$Cv=n,this._$AP?.(n))}}class un{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(n,e,t,i,o){this.type=1,this._$AH=tn,this._$AN=void 0,this.element=n,this.name=e,this._$AM=i,this.options=o,t.length>2||""!==t[0]||""!==t[1]?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=tn}_$AI(n,e=this,t,i){const o=this.strings;let r=!1;if(void 0===o)n=cn(this,n,e,0),r=!H(n)||n!==this._$AH&&n!==en,r&&(this._$AH=n);else{const i=n;let a,s;for(n=o[0],a=0;a<o.length-1;a++)s=cn(this,i[t+a],e,a),s===en&&(s=this._$AH[a]),r||=!H(s)||s!==this._$AH[a],s===tn?n=tn:n!==tn&&(n+=(s??"")+o[a+1]),this._$AH[a]=s}r&&!i&&this.j(n)}j(n){n===tn?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,n??"")}}class pn extends un{constructor(){super(...arguments),this.type=3}j(n){this.element[this.name]=n===tn?void 0:n}}class mn extends un{constructor(){super(...arguments),this.type=4}j(n){this.element.toggleAttribute(this.name,!!n&&n!==tn)}}class fn extends un{constructor(n,e,t,i,o){super(n,e,t,i,o),this.type=5}_$AI(n,e=this){if((n=cn(this,n,e,0)??tn)===en)return;const t=this._$AH,i=n===tn&&t!==tn||n.capture!==t.capture||n.once!==t.once||n.passive!==t.passive,o=n!==tn&&(t===tn||i);i&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,n),this._$AH=n}handleEvent(n){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,n):this._$AH.handleEvent(n)}}class hn{constructor(n,e,t){this.element=n,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(n){cn(this,n)}}const gn={M:D,P:R,A:z,C:1,L:sn,R:dn,D:G,V:cn,I:An,H:un,N:mn,U:fn,B:pn,F:hn},Cn=L.litHtmlPolyfillSupport;Cn?.(ln,An),(L.litHtmlVersions??=[]).push("3.3.2");var bn=r(9426),Bn=r(5663);const{I:En}=gn,vn=2;class wn{constructor(n){}get _$AU(){return this._$AM._$AU}_$AT(n,e,t){this._$Ct=n,this._$AM=e,this._$Ci=t}_$AS(n,e){return this.update(n,e)}update(n,e){return this.render(...e)}}const yn=(n,e)=>{const t=n._$AN;if(void 0===t)return!1;for(const n of t)n._$AO?.(e,!1),yn(n,e);return!0},xn=n=>{let e,t;do{if(void 0===(e=n._$AM))break;t=e._$AN,t.delete(n),n=e}while(0===t?.size)},kn=n=>{for(let e;e=n._$AM;n=e){let t=e._$AN;if(void 0===t)e._$AN=t=new Set;else if(t.has(n))break;t.add(n),$n(e)}};function Sn(n){void 0!==this._$AN?(xn(this),this._$AM=n,kn(this)):this._$AM=n}function Fn(n,e=!1,t=0){const i=this._$AH,o=this._$AN;if(void 0!==o&&0!==o.size)if(e)if(Array.isArray(i))for(let n=t;n<i.length;n++)yn(i[n],!1),xn(i[n]);else null!=i&&(yn(i,!1),xn(i));else yn(this,n)}const $n=n=>{n.type==vn&&(n._$AP??=Fn,n._$AQ??=Sn)};class In extends wn{constructor(){super(...arguments),this._$AN=void 0}_$AT(n,e,t){super._$AT(n,e,t),kn(this),this.isConnected=n._$AU}_$AO(n,e=!0){n!==this.isConnected&&(this.isConnected=n,n?this.reconnected?.():this.disconnected?.()),e&&(yn(this,n),xn(this))}setValue(n){if((n=>void 0===n.strings)(this._$Ct))this._$Ct._$AI(n,this);else{const e=[...this._$Ct._$AH];e[this._$Ci]=n,this._$Ct._$AI(e,this,0)}}disconnected(){}reconnected(){}}class Tn{constructor(n){this.G=n}disconnect(){this.G=void 0}reconnect(n){this.G=n}deref(){return this.G}}class Ln{constructor(){this.Y=void 0,this.Z=void 0}get(){return this.Y}pause(){this.Y??=new Promise(n=>this.Z=n)}resume(){this.Z?.(),this.Y=this.Z=void 0}}const Nn=(n=>(...e)=>({_$litDirective$:n,values:e}))(class extends In{constructor(){super(...arguments),this._$CK=new Tn(this),this._$CX=new Ln}render(n,e){return en}update(n,[e,t]){if(this.isConnected||this.disconnected(),e===this._$CJ)return en;this._$CJ=e;let i=0;const{_$CK:o,_$CX:r}=this;return(async(n,e)=>{for await(const t of n)if(!1===await e(t))return})(e,async n=>{for(;r.get();)await r.get();const a=o.deref();if(void 0!==a){if(a._$CJ!==e)return!1;void 0!==t&&(n=t(n,i)),a.commitValue(n,i),i++}return!0}),en}commitValue(n,e){this.setValue(n)}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}),_n="Current user not found! Not logged in?",Pn="Add me to your friends",Dn="Login to add me to your friends",Rn="Login to chat with me",zn="Chat with me",Mn="Resume",On="Social accounts",Un="Friends";function Hn(n,e,t){const i=bn.widgets.errorMessageBlock(e.dom,t);i.setAttribute("role","alert"),i.setAttribute("aria-live","assertive"),i.setAttribute("tabindex","0"),setTimeout(()=>{i.focus()},100),n.appendChild(i)}function qn(n){for(;n.childNodes.length>2;)n.removeChild(n.lastChild)}function Gn(n){return!!n}var jn=r(5491);let Wn=document.createElement("section");const Vn=(n,e)=>{let t=Qn(Bn.authn.currentUser())?Pn.toUpperCase():Dn.toUpperCase();const i=bn.widgets.button(e.dom,void 0,t,function(t){t.preventDefault(),Yn(n,e,bn.ns.foaf("knows")).then(()=>{qn(Wn),function(n,e){const t=document.createElement("div");t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("tabindex","0"),t.classList.add("actionButton","licOkay"),t.innerHTML=e,setTimeout(()=>{t.focus()},100),n.appendChild(t)}(Wn,"Friend was added!"),o()}).catch(n=>{qn(Wn),Hn(Wn,e,n)})},{needsBorder:!0});function o(){const t=Bn.authn.currentUser(),o=e.session.store;Qn(t)?Zn(o,t,n,bn.ns.foaf("knows")).then(n=>{i.innerHTML=n?"Already part of friends".toUpperCase():Pn.toUpperCase()}):i.innerHTML=Dn.toUpperCase()}return i.refresh=o(),i};async function Yn(n,e,t){const i=Bn.authn.currentUser(),o=e.session.store;if(!Qn(i))throw new Error(_n);if(await Zn(o,i,n,t))throw new Error("Friend already exists");{await o.fetcher.load(i);const e=o.updater,r=[(0,jn.st)(i,t,n,i.doc())];try{await e.update([],r)}catch(n){let e=n;throw e.toString().includes("Unauthenticated")&&(e=_n),new Error(e)}}}function Qn(n){return!!n}async function Zn(n,e,t,i){return await n.fetcher.load(e),0!==n.whether(e,i,t,e.doc())}const Jn=(n,e)=>{var t;const i=function(n,e,{dom:t}){const i=t.createElement("div");return console.log("Extracting friends for subject:",e.doc()),bn.widgets.attachmentList(t,e,i,{doc:e.doc(),modify:n,predicate:bn.ns.foaf("knows"),noun:"friend"}),""===i.textContent?null:(console.log("Extracted friends:",i.innerHTML),i)}(!1,n,e);return i&&(null===(t=i.textContent)||void 0===t?void 0:t.trim())?nn`
|
|
2
|
+
<section
|
|
3
|
+
class="friendListSection"
|
|
4
|
+
data-testid="friend-list"
|
|
5
|
+
>
|
|
6
|
+
<h2 id="friends-section-title" class="sr-only">Friends</h2>
|
|
7
|
+
<nav aria-label="Friend profiles">
|
|
8
|
+
<ul class="list-reset zebra-stripe" role="list">
|
|
9
|
+
${i}
|
|
10
|
+
</ul>
|
|
11
|
+
</nav>
|
|
12
|
+
</section>
|
|
13
|
+
`:null};var Kn=r(6077);const Xn=(n,e)=>{const t=bn.utils.label(n),i=bn.widgets.findImage(n),o=e.anyValue(n,bn.ns.vcard("role")),r=e.anyValue(n,bn.ns.vcard("organization-name")),a=e.any(n,bn.ns.vcard("hasAddress")),s=null!=a?e.anyValue(a,bn.ns.vcard("country-name")):null,l=null!=a?e.anyValue(a,bn.ns.vcard("locality")):null,{backgroundColor:c,highlightColor:d}=function(n,e){const t=e.anyValue(n,bn.ns.solid("profileBackgroundColor"),null,n.doc()),i=e.anyValue(n,bn.ns.solid("profileHighlightColor"),null,n.doc());return{backgroundColor:te(t,""),highlightColor:te(i,"")}}(n,e),A=function(n){let e=Bn.store.anyJS(n,bn.ns.solid("preferredSubjectPronoun"))||"";if(e){const t=Bn.store.anyJS(n,bn.ns.solid("preferredObjectPronoun"));if(t){e+="/"+t;const i=Bn.store.anyJS(n,bn.ns.solid("preferredRelativePronoun"));i&&(e+="/"+i)}e=" ("+e+") "}return e||""}(n);return{name:t,imageSrc:i,introduction:ee(o,r),location:ne(s,l),backgroundColor:c,pronouns:A,highlightColor:d}};function ne(n,e){return n&&e?`${e}, ${n}`:n||e||null}function ee(n,e){return n&&e?`${n} at ${e}`:e||n||null}function te(n,e){return n&&(0,Kn.validateHTMLColorHex)(n)?n:e}const ie=(0,jn.Namespace)("http://www.w3.org/ns/org#"),oe=["PastRole","CurrentRole","FutureRole"];function re(n,e){return n?"("+n.value.slice(0,10)+" to "+(e?e.value.slice(0,10):"")+")":""}function ae(n,e){const t=e.elements;if(Array.isArray(t))return t.flatMap(e=>ae(n,e));if(!n.any(e,bn.ns.rdf("first")))return[e];const i=[];let o=e;for(;o;){const e=n.any(o,bn.ns.rdf("first"));e&&i.push(...ae(n,e));const t=n.any(o,bn.ns.rdf("rest"));if(!t||"NamedNode"===t.termType&&t.value===bn.ns.rdf("nil").value)break;o=t}return i}function se(n,e){const t=function(n,e){const t=n.each(null,ie("member"),e,null),i={PastRole:[],CurrentRole:[],FutureRole:[]};for(const e of t){let t,o,r,a,s;const l=n.any(e,bn.ns.schema("startDate")),c=n.any(e,bn.ns.schema("endDate")),d=re(l,c),A=n.any(e,ie("organization"));A&&(o=n.anyJS(A,bn.ns.schema("name")),t=n.any(A,bn.ns.schema("uri")),s=n.any(A,bn.ns.solid("publicId"))),s&&(r=n.anyJS(s,bn.ns.schema("name")));const u=r||o,p=n.any(e,ie("role"));p&&(a=n.anyJS(p,bn.ns.schema("name")));const m=n.anyJS(e,bn.ns.vcard("role")),f={startDate:l,endDate:c,orgName:u,roleText:m&&a?a+" - "+m:m||a,dates:d,orgHomePage:t};for(const t of oe)n.holds(e,bn.ns.rdf("type"),bn.ns.solid(t))&&i[t].push(f)}return i}(e,n);for(const n of oe)t[n].sort(function(n,e){return n.endDate&&e.endDate?n.endDate>e.endDate?-1:1:n.startDate>e.startDate?-1:1});const i=e.each(n,bn.ns.schema("skills")).map(n=>function(n,e){if("Literal"===e.termType)return e.value;const t=n.anyJS(e,bn.ns.solid("publicId"));if(t){const e=n.anyJS(t,bn.ns.schema("name"));if(e)return e}const i=n.anyJS(e,bn.ns.vcard("role"));return i&&i[0]>""?i:""}(e,n)).filter(n=>""!==n),o=e.each(n,bn.ns.schema("knowsLanguage")).flatMap(n=>ae(e,n)).map(n=>function(n,e){if("Literal"===e.termType)return e.value;const t=n.anyJS(e,bn.ns.solid("publicId"));return t?bn.utils.label(t,!0):""}(e,n));return{rolesByType:t,skills:i,languages:Array.from(new Set(o))}}const le='@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix org: <http://www.w3.org/ns/org#>.\n@prefix : <#>.\n\n########### ATTENTION - we cannot rename this ontology file name without migrating existing data on existing accounts\n\n########### Social Media - other accounts\n#\n# Twitter, linked In, Orkid, Mastodon, Matrix, Bluesky, Instagram, Facebook, Github,\n# Snapchat, TikTok, etc\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Social media form" ;\n a ui:Form ;\n ui:parts (\n :SocialsForm\n ).\n\n:SocialsForm a ui:Multiple;\n ui:label "online account";\n ui:property foaf:account; # the triple is created with the foaf:acccounts predicate\n ui:ordered true; # Allow user to order occounts most important first.\n ui:part :AccountsForm.\n\n:AccountsForm a ui:Group; \n ui:weight 1; \n ui:parts ( \n :AccountField \n :AccountIdField ).\n\n:AccountField a ui:Classifier; \n ui:label "Account"@en;\n ui:multiple false ; \n ui:category foaf:Account. # the accounts are described by the foaf:Account predicate\n\n# this is what is needed to make a dropdown box\nfoaf:Account a rdfs:Class;\n rdfs:label "Online Account Provider";\n owl:disjointUnionOf ( \n :BlueSkyAccount :DiggAccount :FacebookAccount :GithubAccount :InstagramAccount\n :LinkedInAccount :MastodonAccount :MatrixAccount :MediumAccount :NostrAccount \n :OrcidAccount :PinterestAccount :RedditAccount :SnapchatAccount :StravaAccount \n :TiktokAccount :TumblrAccount :TwitterAccount :OtherAccount) .\n\n:AccountIdField a ui:Options; \n ui:dependingOn rdf:type; \n ui:case\n [ ui:for :BlueSkyAccount; ui:use :BlueSkyIdField ],\n [ ui:for :DiggAccount; ui:use :DiggIdField],\n [ ui:for :FacebookAccount; ui:use :FacebookIdField ],\n [ ui:for :GithubAccount; ui:use :GithubIdField ],\n [ ui:for :InstagramAccount; ui:use :InstagramIdField ],\n [ ui:for :LinkedInAccount; ui:use :LinkedInIdField ],\n [ ui:for :MastodonAccount; ui:use :MastodonIdField ],\n [ ui:for :MatrixAccount; ui:use :MatrixIdField ],\n [ ui:for :MediumAccount; ui:use :MediumIdField ],\n [ ui:for :NostrAccount; ui:use :NostrIdField ],\n [ ui:for :OrcidAccount; ui:use :OrcidIdField ],\n [ ui:for :PinterestAccount; ui:use :PinterestIdField ],\n [ ui:for :RedditAccount; ui:use :RedditIdField ],\n [ ui:for :StravaAccount; ui:use :StravaIdField ],\n [ ui:for :SnapchatAccount; ui:use :SnapchatIdField ],\n [ ui:for :TiktokAccount; ui:use :TiktokIdField ],\n [ ui:for :TumblrAccount; ui:use :TumblrIdField ],\n [ ui:for :TwitterAccount; ui:use :TwitterIdField ],\n [ ui:for :OtherAccount; ui:use :OtherIdForm ] .\n\n:BlueSkyAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Bluesky";\n foaf:userProfilePrefix "https://bsky.app/profile/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/bluesky-1.svg>;\n foaf:homepage <https://bsky.app/> .\n\n:DiggAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Digg";\n foaf:userProfilePrefix "https://www.digg.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/digg-icon.svg>;\n foaf:homepage <https://www.digg.com/> .\n\n:FacebookAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Facebook";\n foaf:userProfilePrefix "https://www.facebook.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/facebook-2020-2-1.svg>;\n foaf:homepage <https://www.facebook.com/> .\n\n:GithubAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Github";\n foaf:userProfilePrefix "https://www.github.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/github-icon.svg>;\n foaf:homepage <https://github.com/> .\n\n:InstagramAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Instagram";\n foaf:userProfilePrefix "https://www.instagram.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/instagram-2016-5.svg>;\n foaf:homepage <https://www.instagram.com/> .\n\n:LinkedInAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "LinkedIn";\n foaf:userProfilePrefix "https://www.linkedin.com/in/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/linkedin-icon.svg>;\n foaf:homepage <https://linkedin.com/> .\n\n:MastodonAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Mastodon" ;\n foaf:userProfilePrefix "https://mastodon.social/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/mastodon-2.svg>;\n foaf:homepage <https://joinmastodon.org/> .\n\n:MatrixAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Matrix" ;\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/matrix-logo-black.svg> ;\n foaf:userProfilePrefix "https://matrix.to/#/" ;\n foaf:homepage <https://matrix.org/> .\n\n:MediumAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Medium";\n foaf:userProfilePrefix "https://medium.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/medium-logo-wordmark-black.svg>;\n foaf:homepage <https://medium.com/> .\n\n:NostrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Nostr";\n foaf:userProfilePrefix "https://primal.net/p/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/nostr-icon-purple-on-white.svg>;\n foaf:homepage <https://nostr.net/> .\n\n:OrcidAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "ORCiD";\n foaf:userProfilePrefix "https://orcid.org/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/ORCID-1.svg>;\n foaf:homepage <https://orcid.org/> .\n\n:PinterestAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Pinterest";\n foaf:userProfilePrefix "https://pin.it/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/pinterest-2-1.svg>;\n foaf:homepage <https://pinterest.com/> .\n\n:RedditAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Reddit";\n foaf:userProfilePrefix "https://www.reddit.com/user/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/reddit-4.svg>;\n foaf:homepage <https://reddit.com/> .\n\n:SnapchatAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Snapchat";\n foaf:userProfilePrefix "https://www.snapchat.com/add/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/snapchat-1.svg>;\n foaf:homepage <https://www.snapchat.com/> .\n\n:StravaAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Strava";\n foaf:userProfilePrefix "https://www.strava.com/athletes/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/strava-2.svg>;\n foaf:homepage <https://strava.com/> .\n\n:TiktokAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "TikTok";\n foaf:userProfilePrefix "https://www.tiktok.com/@";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/tiktok-icon-2.svg>;\n foaf:homepage <https://www.tiktok.com/> .\n\n:TumblrAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Tumblr";\n foaf:userProfilePrefix "https://www.tumblr.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/tumblr-icon.svg>;\n foaf:homepage <https://www.tumblr.com/> .\n\n:TwitterAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "X";\n foaf:userProfilePrefix "https://x.com/";\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/social/x-2.svg>;\n foaf:homepage <https://x.com/> .\n\n:OtherAccount rdfs:subClassOf foaf:Account ;\n rdfs:label "Other" ;\n foaf:icon <https://solidos.github.io/solid-ui/src/icons/noun_1689339.svg> .\n\n:BlueSkyIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:DiggIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-](.[a-z0-9A-Z_-])*".\n\n:FacebookIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:GithubIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:InstagramIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:LinkedInIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MastodonIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MatrixIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:MediumIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:NostrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*(.[a-z0-9A-Z_-])*".\n\n:OrcidIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:PinterestIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:RedditIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:StravaIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "[a-z0-9A-Z_-]*".\n\n:SnapchatIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TiktokIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TumblrIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n:TwitterIdField\n a ui:SingleLineTextField ;\n ui:label "Username";\n ui:maxLength "200" ;\n ui:property foaf:accountName ; \n ui:pattern "@[a-z0-9A-Z_-]*".\n\n# an unknown online account needs more info\n\n:OtherIdForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :OtherIdField \n :OtherIconField \n :OtherLabelField ).\n\n:OtherIdField\n a ui:NamedNodeURIField ;\n ui:label "Account link";\n ui:maxLength "200" ;\n ui:property foaf:homepage.\n\n:OtherIconField\n a ui:NamedNodeURIField ;\n ui:label "Icon link";\n ui:maxLength "200" ;\n ui:property foaf:icon.\n\n:OtherLabelField\n a ui:SingleLineTextField ;\n ui:label "Name";\n ui:maxLength "200" ;\n ui:property rdfs:label.\n\n# ends\n',ce="https://solidos.github.io/profile-pane/src/ontology/";function de(n,e,t,i,o,r,a,s){const l=ce+i,c=s||"this",d=(0,jn.Namespace)(l+"#")(c);Ae(o,t,i,l),bn.widgets.appendForm(r,n,{},e,d,a,(n,e)=>{n||bn.widgets.errorMessageBlock(r,e)}),function(n){const e="noun_19460_green.svg",t=n=>{var t;const i=n.querySelector("img"),o=n.querySelector("span");return(null==i?void 0:i.src.includes(e))&&(null===(t=null==o?void 0:o.textContent)||void 0===t?void 0:t.trim().toLowerCase().startsWith("add "))};Array.from(n.querySelectorAll("div")).filter(t).forEach(e=>{e.addEventListener("click",()=>{const t=function(e){let t=e;for(;t&&t!==n;){if(t.querySelector('input[data-testid="autocomplete-input"]'))return t;t=t.parentElement}return n}(e),i=new Set(Array.from(t.querySelectorAll('input[data-testid="autocomplete-input"]'))),o=Date.now(),r=setInterval(()=>{const n=Array.from(t.querySelectorAll('input[data-testid="autocomplete-input"]')).find(n=>!i.has(n));if(n)return ue(t),n.focus(),void clearInterval(r);Date.now()-o>1e3&&clearInterval(r)},50)})})}(n);let A={x:0,y:0};n.addEventListener("pointerdown",n=>{A={x:n.clientX,y:n.clientY}},{capture:!0});const u=n=>{const e=r.defaultView||window,t=10,i=e.innerWidth-t,o=e.innerHeight-t;n.style.position="fixed",n.style.zIndex="9999",n.style.pointerEvents="auto",n.style.opacity="1",n.style.visibility="visible";const a=n.getBoundingClientRect(),s=a.width||200,l=a.height||100,c=Math.min(Math.max(A.x+t,t),i-s),d=Math.min(Math.max(A.y+t,t),o-l);n.style.left=`${c}px`,n.style.top=`${d}px`};new MutationObserver(n=>{for(const e of n)for(const n of Array.from(e.addedNodes)){if(!(n instanceof HTMLElement))continue;if("absolute"===n.style.position&&"grid"===n.style.display&&"-1em"===n.style.top){u(n);continue}const e=n.querySelector('div[style*="position:absolute"][style*="display:grid"][style*="top:-1em"]');e&&u(e)}}).observe(n,{childList:!0,subtree:!0})}function Ae(n,e,t,i){const o=i||ce+t,r=(0,jn.sym)(o);n.holds(void 0,void 0,void 0,r)||(0,jn.parse)(e,n,o,"text/turtle",()=>null)}function ue(n){const e=["label",".formFieldName a",".classifierBox-label a",".choiceBox-label a",".label a",'a[href="http://www.w3.org/2006/vcard/ns#note"]','a[href$="#note"]'].join(", "),t=null==n?void 0:n.querySelectorAll(e);t&&Array.from(t).forEach(n=>{"number"==typeof n.tabIndex&&-1!==n.tabIndex&&(n.tabIndex=-1),"true"!==n.getAttribute("aria-hidden")&&n.setAttribute("aria-hidden","true")})}const pe=bn.icons.iconBase+"noun_10636_grey.svg";function me(n,e){function t(n){const t=e.any(n,bn.ns.foaf("name"))||e.any(n,bn.ns.rdfs("label"));if(t)return t.value;const i=e.each(n,bn.ns.rdf("type"));for(const n of i){const t=e.any(n,bn.ns.rdfs("label"));return t?t.value:bn.utils.label(n)}return"Unknown Account"}function i(n){const t=e.any(n,bn.ns.foaf("icon"));if(t)return t.value;const i=e.each(n,bn.ns.rdf("type"));if(i.length>0)for(const n of i){const t=e.any(n,bn.ns.foaf("icon"));if(null!==t)return t.value}return pe}function o(n){const t=e.any(n,bn.ns.foaf("homepage"));if(t)return t.value;const i=e.anyJS(n,bn.ns.foaf("accountName"),null,n.doc())||"No_account_Name",o=e.each(n,bn.ns.rdf("type"));for(const n of o)if("NamedNode"===n.termType){const t=e.any(n,bn.ns.foaf("userProfilePrefix"));if(t)return t.value+i.trim()}return e.anyJS(n,bn.ns.foaf("homepage"),null,n.doc())||""}function r(n){return{name:t(n),icon:i(n),homepage:o(n)}}Ae(e,le,"socialMedia.ttl");let a=e.each(n,bn.ns.foaf("account")).flatMap(n=>function(n,e){const t=new Set;return function e(i){const o=`${i.termType||typeof i}:${i.value||String(i)}`;if(t.has(o))return[];t.add(o);const r=i.elements;if(Array.isArray(r))return r.flatMap(n=>e(n));if(!n.any(i,bn.ns.rdf("first")))return[i];const a=[];let s=i;for(;s;){const t=n.any(s,bn.ns.rdf("first"));t&&a.push(...e(t));const i=n.any(s,bn.ns.rdf("rest"));if(!i||"NamedNode"===i.termType&&i.value===bn.ns.rdf("nil").value)break;s=i}return a}(e)}(e,n));const s=new Set,l=[];for(const n of a)if("NamedNode"===n.termType){const t=e.any(n,bn.ns.foaf("accountName")),i=t?t.value:"";s.has(i)||(s.add(i),l.push(r(n)))}return l.length?{accounts:l}:{accounts:[]}}const{iconForClass:fe}=bn.widgets,{typeIndex:he}=Bn.solidLogicSingleton,{getScopedAppInstances:ge}=he,Ce={};for(const n in fe){const e=n.split(":")[0],t=n.split(":")[1],i=bn.ns[e](t);Ce[i.uri]=jn.uri.join(fe[n],bn.icons.iconBase)}async function be(n){return{stuff:(await ge(null,n)).map(n=>{const e=(t=n.type||bn.ns.rdf("Resource"),Ce[t.uri]||bn.icons.iconBase+"noun_10636.svg");var t;return{href:n.instance.uri,name:bn.utils.label(n.instance),icon:e,instance:n.instance}})}}function Be(n){if(3===(n=n.replace(/^#/,"")).length&&(n=n.split("").map(n=>n+n).join("")),6!==n.length)return null;const e=parseInt(n,16);return{r:e>>16&255,g:e>>8&255,b:255&e}}function Ee({r:n,g:e,b:t}){const i=[n,e,t].map(function(n){return(n/=255)<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)});return.2126*i[0]+.7152*i[1]+.0722*i[2]}const ve=(n,e,t)=>{const i=n||"#000000",o=e||"#ffffff",r=bn.utils.label(t),a=function(n,e){const t=Be(n),i=Be(e);if(!t||!i)return 1;const o=Ee(t),r=Ee(i);return(Math.max(o,r)+.05)/(Math.min(o,r)+.05)}(i,o);a<4.5&&console.warn(`QRCodeCard: The contrast ratio between highlightColor (${i}) and backgroundColor (${o}) is ${a.toFixed(2)}, which is below the WCAG 2.1 recommended minimum of 4.5:1 for normal text.`);const s="FN:"+r+"\r\n",l="URL:"+t.uri+"r\n";setTimeout(()=>{const n=document.querySelector('.QRCode [role="img"]');if(n){const e=n.hasAttribute("aria-label"),t=n.hasAttribute("alt");e||t||console.warn("QRCodeCard: The QR code element should have an accessible label (aria-label or alt attribute) for screen readers.")}else console.warn('QRCodeCard: No element with role="img" found for the QR code. Ensure the QR code is rendered as an <img> or <canvas> with proper ARIA attributes.')},0);return nn`
|
|
2
14
|
<figure
|
|
3
15
|
class="QRCode"
|
|
4
16
|
data-value="${"BEGIN:VCARD\r\n"+s+l+"END:VCARD\r\nVERSION:4.0\r\n"}"
|
|
@@ -31,28 +43,28 @@
|
|
|
31
43
|
<article class="profileCard" aria-labelledby="profile-name">
|
|
32
44
|
<h2 id="profile-name" class="sr-only">${n}</h2>
|
|
33
45
|
<header class="header flex-column-center mb-md" aria-label="Profile information">
|
|
34
|
-
${
|
|
46
|
+
${xe(e,n)}
|
|
35
47
|
</header>
|
|
36
48
|
|
|
37
49
|
<section class="intro text-center" aria-label="About">
|
|
38
|
-
${
|
|
39
|
-
${
|
|
40
|
-
${
|
|
50
|
+
${ye(t,"","About")}
|
|
51
|
+
${ye(i,"🌐","Location")}
|
|
52
|
+
${ye(o,"","Pronouns")}
|
|
41
53
|
</section>
|
|
42
54
|
|
|
43
55
|
<section class="buttonSection text-center" aria-label="Actions">
|
|
44
|
-
${((n,e)=>{
|
|
56
|
+
${((n,e)=>{Wn=e.dom.createElement("section"),Wn.setAttribute("class","buttonSubSection text-truncate text-center section-centered"),Wn.setAttribute("aria-labelledby","add-me-to-your-friends-button-section"),Wn.setAttribute("data-testid","button");const t=e.dom.createElement("h3");t.setAttribute("id","add-me-to-your-friends-button-section"),t.setAttribute("class","sr-only"),t.textContent="Add me to your friends actions",Wn.appendChild(t);const i=Vn(n,e);return i.classList.add("actionButton","btn-primary","action-button-focus"),Wn.appendChild(i),nn`${Wn}`})(l,s)}
|
|
45
57
|
</section>
|
|
46
58
|
|
|
47
59
|
<div class="qrCodeSection section-centered">
|
|
48
60
|
${ve(r,a,l)}
|
|
49
61
|
</div>
|
|
50
62
|
</article>
|
|
51
|
-
`,
|
|
63
|
+
`,ye=(n,e=tn,t="")=>n?nn`
|
|
52
64
|
<div class="details" role="text" ${t?`aria-label="${t}: ${n}"`:""}>
|
|
53
65
|
${e} ${n}
|
|
54
66
|
</div>
|
|
55
|
-
`:tn,
|
|
67
|
+
`:tn,xe=(n,e)=>n?nn`
|
|
56
68
|
<img
|
|
57
69
|
class="image"
|
|
58
70
|
src=${n}
|
|
@@ -65,13 +77,13 @@
|
|
|
65
77
|
<div class="image-alt" role="img" aria-label="${e}" tabindex="0">
|
|
66
78
|
${e}
|
|
67
79
|
</div>
|
|
68
|
-
`,
|
|
80
|
+
`,ke=n=>{const{rolesByType:e,skills:t,languages:i}=n,o=e.FutureRole||[],r=e.CurrentRole||[],a=e.PastRole||[],s=t||[],l=i||[],c=Array.isArray(o)&&o.length>0,d=Array.isArray(r)&&r.length>0,A=Array.isArray(a)&&a.length>0,u=Array.isArray(s)&&s.length>0,p=Array.isArray(l)&&l.length>0;return c||d||A||u||p?nn`
|
|
69
81
|
<article class="cvCard" aria-label="Resume" data-testid="curriculum-vitae">
|
|
70
82
|
${c?nn`
|
|
71
83
|
<section class="cvSection" aria-labelledby="cv-future-heading">
|
|
72
84
|
<h3 id="cv-future-heading">Future Roles</h3>
|
|
73
85
|
<ul role="list" aria-label="Upcoming work experience">
|
|
74
|
-
${
|
|
86
|
+
${Se(o,!0)}
|
|
75
87
|
</ul>
|
|
76
88
|
</section>
|
|
77
89
|
`:""}
|
|
@@ -80,25 +92,25 @@
|
|
|
80
92
|
<section class="cvSection" aria-labelledby="cv-current-heading">
|
|
81
93
|
<h3 id="cv-current-heading">Current Roles</h3>
|
|
82
94
|
<ul role="list" aria-label="Current work experience">
|
|
83
|
-
${
|
|
95
|
+
${Se(r,!0)}
|
|
84
96
|
</ul>
|
|
85
97
|
</section>
|
|
86
98
|
`:""}
|
|
87
99
|
|
|
88
|
-
${
|
|
100
|
+
${A?nn`
|
|
89
101
|
<section class="cvSection" aria-labelledby="cv-past-heading">
|
|
90
102
|
<h3 id="cv-past-heading">Past Roles</h3>
|
|
91
103
|
<ul role="list" aria-label="Previous work experience">
|
|
92
|
-
${
|
|
104
|
+
${Se(a,!0)}
|
|
93
105
|
</ul>
|
|
94
106
|
</section>
|
|
95
107
|
`:""}
|
|
96
108
|
|
|
97
|
-
${
|
|
109
|
+
${u?nn`
|
|
98
110
|
<section class="cvSection" aria-labelledby="cv-skills-heading">
|
|
99
111
|
<h3 id="cv-skills-heading">Skills</h3>
|
|
100
112
|
<ul role="list" aria-label="Professional skills and competencies">
|
|
101
|
-
${
|
|
113
|
+
${Fe(s,!0)}
|
|
102
114
|
</ul>
|
|
103
115
|
</section>
|
|
104
116
|
`:""}
|
|
@@ -107,17 +119,17 @@
|
|
|
107
119
|
<section class="cvSection" aria-labelledby="cv-languages-heading">
|
|
108
120
|
<h3 id="cv-languages-heading">Languages</h3>
|
|
109
121
|
<ul role="list" aria-label="Known languages">
|
|
110
|
-
${
|
|
122
|
+
${$e(l,!0)}
|
|
111
123
|
</ul>
|
|
112
124
|
</section>
|
|
113
125
|
`:""}
|
|
114
126
|
</article>
|
|
115
|
-
`:nn``};function
|
|
127
|
+
`:nn``};function Se(n,e=!1){return n&&n.length&&n[0]?nn`${function(n,e=!1){return n&&e?nn`
|
|
116
128
|
<li class="cvRole" role="listitem">
|
|
117
129
|
<strong class="cvOrg" aria-label="Organization">${n.orgName}</strong>
|
|
118
|
-
<span aria-label="Role title">${
|
|
130
|
+
<span aria-label="Role title">${Ie(n.roleText)}</span>
|
|
119
131
|
<time aria-label="Employment period">${n.dates}</time>
|
|
120
|
-
</li>`:nn``}(n[0],e)}${n.length>1?
|
|
132
|
+
</li>`:nn``}(n[0],e)}${n.length>1?Se(n.slice(1),e):nn``}`:nn``}function Fe(n,e=!1){return n&&n.length&&n[0]?nn`${function(n,e=!1){return n&&e?nn`<li class="cvSkill">${Ie(n)}</li>`:nn``}(n[0],e)}${n.length>1?Fe(n.slice(1),e):nn``}`:nn``}function $e(n,e=!1){return n&&n.length&&n[0]?nn`${function(n,e=!1){return n&&e?nn`<li class="cvLanguage">${n}</li>`:nn``}(n[0],e)}${n.length>1?$e(n.slice(1),e):nn``}`:nn``}function Ie(n){if(n&&n[0]>""){const e=n.split(" ");for(let n=0;n<e.length;n++)e[n]=e[n].charAt(0).toUpperCase()+e[n].substring(1);return e.join(" ")}return""}const Te=n=>{const{accounts:e}=n;if(e.length)return nn`
|
|
121
133
|
<section
|
|
122
134
|
class="socialCard"
|
|
123
135
|
aria-labelledby="social-card-title"
|
|
@@ -148,7 +160,7 @@
|
|
|
148
160
|
</ul>
|
|
149
161
|
</nav>
|
|
150
162
|
</section>
|
|
151
|
-
`},
|
|
163
|
+
`},Le=(n,e,t,i)=>{const{stuff:o}=i,r=e.dom||document;return nn`
|
|
152
164
|
<section
|
|
153
165
|
class="stuffCard"
|
|
154
166
|
aria-labelledby="stuff-card-title"
|
|
@@ -162,12 +174,12 @@
|
|
|
162
174
|
<table class="stuffTable" data-testid="stuffTable">
|
|
163
175
|
<caption class="sr-only">Files and resources shared by ${n.name}</caption>
|
|
164
176
|
<tbody class="zebra-stripe">
|
|
165
|
-
${
|
|
177
|
+
${_e(o,r)}
|
|
166
178
|
</tbody>
|
|
167
179
|
</table>
|
|
168
180
|
</div>
|
|
169
181
|
</section>
|
|
170
|
-
`};function
|
|
182
|
+
`};function Ne(n,e){return function(n,e){return bn.widgets.personTR(e,null,n.instance,{})}(n,e)}function _e(n,e){return 0===n.length?nn``:nn`${Ne(n[0],e)}${n.length>1?_e(n.slice(1),e):nn``}`}async function Pe(n,e){const t=e.session.store,i=Xn(n,t),o=se(n,t),r=me(n,t),a=await be(n);return nn`
|
|
171
183
|
<main
|
|
172
184
|
id="main-content"
|
|
173
185
|
class="profile-grid"
|
|
@@ -189,7 +201,7 @@
|
|
|
189
201
|
${we(i,e,n)}
|
|
190
202
|
</article>
|
|
191
203
|
|
|
192
|
-
${(()=>{const n=
|
|
204
|
+
${(()=>{const n=ke(o);return n&&n.strings&&""!==n.strings.join("").trim()?nn`
|
|
193
205
|
<section
|
|
194
206
|
aria-labelledby="cv-heading"
|
|
195
207
|
class="profileSection section-bg"
|
|
@@ -197,7 +209,7 @@
|
|
|
197
209
|
tabindex="-1"
|
|
198
210
|
>
|
|
199
211
|
<header class="text-center mb-md">
|
|
200
|
-
<h2 id="cv-heading" tabindex="-1">${
|
|
212
|
+
<h2 id="cv-heading" tabindex="-1">${Mn}</h2>
|
|
201
213
|
</header>
|
|
202
214
|
<div>
|
|
203
215
|
${n}
|
|
@@ -213,10 +225,10 @@
|
|
|
213
225
|
tabindex="-1"
|
|
214
226
|
>
|
|
215
227
|
<header class="text-center mb-md">
|
|
216
|
-
<h2 id="social-heading" tabindex="-1">${
|
|
228
|
+
<h2 id="social-heading" tabindex="-1">${On}</h2>
|
|
217
229
|
</header>
|
|
218
230
|
<nav aria-label="Social media links">
|
|
219
|
-
${
|
|
231
|
+
${Te(r)}
|
|
220
232
|
</nav>
|
|
221
233
|
</aside>
|
|
222
234
|
`:""}
|
|
@@ -229,28 +241,15 @@
|
|
|
229
241
|
tabindex="-1"
|
|
230
242
|
>
|
|
231
243
|
<header class="text-center mb-md">
|
|
232
|
-
<h2 id="stuff-heading" tabindex="-1">${"Shared
|
|
244
|
+
<h2 id="stuff-heading" tabindex="-1">${"Shared items"}</h2>
|
|
233
245
|
</header>
|
|
234
246
|
<div>
|
|
235
|
-
${
|
|
247
|
+
${Le(i,e,0,a)}
|
|
236
248
|
</div>
|
|
237
249
|
</section>
|
|
238
250
|
`:""}
|
|
239
251
|
|
|
240
|
-
${(()=>{const t=(
|
|
241
|
-
<section
|
|
242
|
-
class="friendListSection"
|
|
243
|
-
role="region"
|
|
244
|
-
aria-labelledby="friends-section-title"
|
|
245
|
-
data-testid="friend-list"
|
|
246
|
-
>
|
|
247
|
-
<nav aria-label="Friend profiles">
|
|
248
|
-
<ul class="list-reset zebra-stripe" role="list">
|
|
249
|
-
${i}
|
|
250
|
-
</ul>
|
|
251
|
-
</nav>
|
|
252
|
-
</section>
|
|
253
|
-
`:null})(n,e);return t?nn`
|
|
252
|
+
${(()=>{const t=Jn(n,e);return t?nn`
|
|
254
253
|
<aside
|
|
255
254
|
aria-labelledby="friends-heading"
|
|
256
255
|
class="profileSection section-bg"
|
|
@@ -258,7 +257,7 @@
|
|
|
258
257
|
tabindex="-1"
|
|
259
258
|
>
|
|
260
259
|
<header class="text-center mb-md">
|
|
261
|
-
<h2 id="friends-heading" tabindex="-1">${
|
|
260
|
+
<h2 id="friends-heading" tabindex="-1">${Un}</h2>
|
|
262
261
|
</header>
|
|
263
262
|
<div role="list" aria-label="Friend connections">
|
|
264
263
|
${t}
|
|
@@ -276,15 +275,15 @@
|
|
|
276
275
|
<h2 id="chat-heading" tabindex="-1">${"Contact"}</h2>
|
|
277
276
|
</header>
|
|
278
277
|
<div>
|
|
279
|
-
${((n,e)=>{const t=e.session.logic,i=e.session.paneRegistry.byName("long chat");return nn` ${
|
|
278
|
+
${((n,e)=>{const t=e.session.logic,i=e.session.paneRegistry.byName("long chat");return nn` ${Nn(async function*(){const o=e.dom.createElement("section");o.setAttribute("class","chatSection section-centered"),o.setAttribute("aria-labelledby","chat-section-title"),o.setAttribute("role","region"),o.setAttribute("data-testid","chat");const r=e.dom.createElement("h3");let a;r.id="chat-section-title",r.className="sr-only",r.textContent="Communication",o.appendChild(r);try{yield nn`
|
|
280
279
|
<div class="buttonSubSection">
|
|
281
280
|
<div class="actionButton loading-text center" role="status" aria-live="polite">
|
|
282
281
|
${"Loading...".toUpperCase()}
|
|
283
282
|
</div>
|
|
284
283
|
</div>
|
|
285
|
-
`,a=await t.chat.getChat(n,!1)}catch(s){a=!1}if(a){const l=e.dom.createElement("div");l.setAttribute("role","log"),l.setAttribute("aria-label","Chat conversation"),l.appendChild(i.render(a,e,{})),o.appendChild(l),yield o}else{let c=
|
|
284
|
+
`,a=await t.chat.getChat(n,!1)}catch(s){a=!1}if(a){const l=e.dom.createElement("div");l.setAttribute("role","log"),l.setAttribute("aria-label","Chat conversation"),l.appendChild(i.render(a,e,{})),o.appendChild(l),yield o}else{let c=Gn(Bn.authn.currentUser())?zn.toUpperCase():Rn.toUpperCase();const d=bn.widgets.button(e.dom,void 0,c,A,{needsBorder:!0});async function A(r){r.preventDefault();try{const r=await t.chat.getChat(n,!0);o.innerHTML="",o.appendChild(i.render(r,e,{}))}catch(n){Hn(o,e,n)}}function u(){Gn(Bn.authn.currentUser())?d.innerHTML=zn.toUpperCase():d.innerHTML=Rn.toUpperCase()}d.refresh=u(),d.setAttribute("type","button"),d.setAttribute("aria-describedby","chat-button-description");const p=e.dom.createElement("span");p.id="chat-button-description",p.className="sr-only",p.textContent="Start a new conversation or sign in to continue existing chat",d.classList.add("actionButton","btn-primary","action-button-focus"),o.appendChild(d),o.appendChild(p),yield o}}())} `})(n,e)}
|
|
286
285
|
</div>
|
|
287
286
|
</section>
|
|
288
287
|
</main>
|
|
289
|
-
`}function Re(n,e){const t=n.dom.createElement("section");t.setAttribute("aria-labelledby","edit-profile-contact-heading"),t.classList.add("profileSection","section-bg","profile-form");const i=n.dom.createElement("header");i.classList.add("text-center","mb-md");const o=n.dom.createElement("h2");return o.id="edit-profile-contact-heading",o.classList.add("section-title"),o.textContent="Contact Information",i.appendChild(o),t.appendChild(i),t.appendChild(function(n,e,t){const i=n.session.paneRegistry.byName(t);if(!i){const e=n.dom.createElement("div");return e.innerText=`Unable to load view: ${t}`,e}const o=i.render(e,n);let r;o&&"function"==typeof o.setAttribute?r=o:o&&o.nodeType===Node.TEXT_NODE?(r=n.dom.createElement("section"),r.appendChild(o)):(r=n.dom.createElement("section"),r.innerText=`View render did not return a valid Node for: ${t}`);return r.setAttribute("role","region"),r.setAttribute("aria-label",`${t} section`),r}(n,e,"contact")),t}var ze=r(9053),_e={};_e.styleTagTransform=p(),_e.setAttributes=c(),_e.insert=s().bind(null,"head"),_e.domAPI=i(),_e.insertStyleElement=u();e()(ze.A,_e);ze.A&&ze.A.locals&&ze.A.locals;const Oe={global:!0,icon:bn.icons.iconBase+"noun_492246.svg",name:"editProfile",label:()=>null,render:function(n,e){const t=e.dom,i=e.session.store,o=t.createElement("section");let r;o.setAttribute("data-testid","profile-editor"),o.setAttribute("role","region"),o.setAttribute("aria-label","Edit your profile");const a=t.createElement("main");a.setAttribute("id","profile-edit-main-content"),a.setAttribute("aria-busy","true"),a.setAttribute("tabindex","-1"),a.classList.add("profile-grid","no-focus-ring");const s=t.createElement("h1");s.classList.add("visually-hidden"),s.textContent="Edit Profile",a.appendChild(s),o.appendChild(a);const l=t.createElement("aside");l.classList.add("p-sm"),l.setAttribute("role","status"),l.setAttribute("aria-live","polite"),l.setAttribute("aria-atomic","true");const c=()=>{l.isConnected||o.appendChild(l)},d={dom:t,div:a,statusArea:l,me:null};return bn.login.ensureLoadedProfile(d).then(n=>{const o=n.me,s=o.doc();if(!i.updater)throw new Error("Store has no updater");if(i.any(o,bn.ns.solid("editableProfile")))r=i.any(o,bn.ns.solid("editableProfile"));else{if(!i.updater.editable(s.uri,i))return c(),void l.appendChild(bn.widgets.errorMessageBlock(t,`⚠️ Your profile ${s} is not editable, so we cannot do much here.`,"straw"));r=s}a.appendChild(Re(e,o)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-cv-section"),o.setAttribute("aria-labelledby","edit-profile-cv-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");if(a.id="edit-profile-cv-heading",a.classList.add("section-title"),a.textContent=Dn,r.appendChild(a),o.appendChild(r),t){const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Edit your resume. These will be publicly visible on your profile.",o.appendChild(e)}else{const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Login to add resume information to your profile.",o.appendChild(e)}return ae(o,e,'@prefix os: <http://www.w3.org/2000/10/swap/os#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix org: <http://www.w3.org/ns/org#>.\n@prefix esco: <http://data.europa.eu/esco/model#>.\n@prefix wd: <http://www.wikidata.org/entity/>.\n@prefix wdt: <http://www.wikidata.org/prop/direct/>.\n\n@prefix : <#>.\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Resume form" ;\n a ui:Form ;\n ui:parts (\n :CVGroup\n :SkillsHeading :SkillsForm\n :LanguagesHeading :LanguagesForm\n ).\n\n# Curriculum Vitae: membership of organizations\n\n:CVGroup a ui:Group; \n ui:weight 1; \n ui:parts ( \n :CVPrompt \n :involvementWithOrganizationsForm \n ).\n\n:CVPrompt a ui:Comment; ui:contents "What organizations have you been involved with?" .\n\n:involvementWithOrganizationsForm a ui:Multiple;\n ui:label "Involvement with organization";\n ui:property org:member; \n ui:reverse true; # link back from role to member\n ui:ordered false; # Allow user to order CV secions rather than force date order? No.\n ui:part :RoleMembershipForm.\n\norg:member owl:inverse [ ui:label "Involvement with organization" ]. # timelimited involvement\n\n# This is a big important form for one of a series of roles in the list.\n\n:RoleMembershipForm a ui:Group; \n ui:weight 3; \n ui:parts ( \n :MembershipFormHeading \n :roleNameField\n :escoOccupationField \n :orgField \n :RoleClassifier \n :RoleDatesForm \n :RoleDescriptionForm).\n\n:MembershipFormHeading a ui:Heading; \n ui:contents "Details of the role"@en, "Détailes de ce rôle"@fr .\n\n:roleNameField a ui:SingleLineTextField; \n ui:property vcard:role .\n\n:escoOccupationField a ui:AutocompleteField;\n ui:label "Occupation";\n ui:property org:role;\n ui:dataSource :ESCO_Occupation_DataSource;\n ui:targetClass schema:Occupation .\n\n :ESCO_Occupation_DataSource a ui:DataSource;\n schema:name "ESCO";\n ui:targetClass schema:Occupation ;\n schema:logo <https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif>;\n ui:searchByNameURI "https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)".\n\n:orgField a ui:Choice; \n ui:label "Organization"@en, "Organization"@fr;\n ui:canMintNew true; \n ui:use :OrganizationCreationForm ;\n ui:property org:organization;\n ui:from vcard:Organization .\n\nvcard:Organization ui:creationForm :OrganizationCreationForm .\n\n###### eposodes in one\'s career - Roles\n\n:RoleClassifier a ui:Classifier; \n ui:label "What sort of role?"@en;\n ui:category solid:Role .\n\n:RoleDatesForm a ui:Options; \n ui:dependingOn rdf:type; \n ui:case\n [ ui:for solid:PastRole; ui:use :TwoDateForm ],\n [ ui:for solid:CurrentRole; ui:use :StartDateForm ],\n [ ui:for solid:FutureRole; ui:use :StartDateForm ].\n\n :TwoDateForm a ui:Group; \n ui:weight 0; \n ui:parts ( :StartDateForm :EndDateForm ) .\n :StartDateForm a ui:DateField; \n ui:label "Start"@en,"Début"@fr;\n ui:property schema:startDate .\n :EndDateForm a ui:DateField; \n ui:label "End"@en,"Fin"@fr;\n ui:property schema:endDate .\n\nsolid:Role a rdfs:Class;\n owl:disjointUnionOf ( solid:PastRole solid:CurrentRole solid:FutureRole ) ;\n owl:oneOf ( solid:CurrentRole solid:PastRole solid:FutureRole ). # Future Role too?\n\nsolid:PastRole a rdfs:Class; rdfs:label "Former role"@en, "Ancien rôle"@fr, "Vergangene Rolle"@de, "Rol anterior"@es .\nsolid:CurrentRole a rdfs:Class; rdfs:label "Current role"@en, "Rôle actuel"@fr, "Momentane Rolle"@de , "Rol actual"@es .\nsolid:FutureRole a rdfs:Class; rdfs:label "Future role"@en, "Rôle à venir"@fr, "Zukünftige Rolle"@de, "Rol futuro"@es .\n\n:RoleDescriptionForm a ui:MultiLineTextField; \n ui:property schema:description;\n ui:label "Describe your role" .\n\n###### Organizations\n\n:OrganizationCreationForm a ui:Form; \n schema:name "Form for editing an organization using public data" ;\n ui:parts ( \n :OrgClassifier \n :OrgSwitch \n :OrganizationNameField \n :homePageURIField ) .\n\n:OrgClassifier a ui:Classifier; \n ui:label "Type of organization?"@en;\n ui:category solid:InterestingOrganization .\n\n:OrgSwitch a ui:Options; \n ui:dependingOn rdf:type;\n ui:case\n [ ui:for schema:Corporation; ui:use :CorporationForm ],\n [ ui:for schema:GovernmentOrganization; ui:use :GovernmentOrganizationForm ],\n [ ui:for schema:PerformingGroup; ui:use :PerformingGroupForm ],\n [ ui:for schema:Project; ui:use :ProjectForm ],\n [ ui:for schema:NGO; ui:use :NGOForm ],\n [ ui:for schema:EducationalOrganization; ui:use :EducationalOrganizationForm ],\n [ ui:for schema:ResearchOrganization; ui:use :ResearchOrganizationForm ],\n [ ui:for schema:SportsOrganization; ui:use :SportsOrganizationForm ].\n\n:OrganizationNameField\n a ui:SingleLineTextField ;\n ui:label "Name";\n ui:maxLength "200" ;\n ui:property schema:name .\n\n:homePageURIField a ui:NamedNodeURIField;\n ui:label "Homepage"@en;\n ui:property schema:uri .\n\n# Ontology data to drive the :OrgClassifier classifier\nsolid:InterestingOrganization owl:disjointUnionOf (\n # Airline - a Corporation\n # Consortium - a Corporation or a NGO\n schema:Corporation\n schema:EducationalOrganization\n schema:ResearchOrganization # Proposed. https://github.com/schemaorg/schemaorg/issues/2877\n # FundingScheme - eh?\n schema:GovernmentOrganization\n # LibrarySystem\n # LocalBusiness - Corporation\n # MedicalOrganization - a Corporation or a NGO\n schema:NGO\n # NewsMediaOrganization - a Corporation or a NGO\n schema:PerformingGroup # a band\n schema:Project # like Solid\n schema:SportsOrganization) .\n\n# This until the schema.org ontology adopts it\nschema:ResearchOrganization a rdfs:Class; \n rdfs:label "Research Organization"@en, "Organization de Recherche"@fr ,"organización de investigación"@es, \n "منظمة البحث"@ar, "अनुसंधान संगठन"@hi, "Forschungsorganisation"@de, "shirika la utafiti"@sw .\n\n##### Depending on the type of org, chose a different form\n\n#### Corporation\n:CorporationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :CorporationPrompt \n :CorporationAutocomplete ) .\n\n :CorporationPrompt a ui:Comment; ui:contents "Corporation details".\n\n :CorporationAutocomplete a ui:AutocompleteField; \n ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q6881511>; # Enterprise\n ui:property solid:publicId; \n ui:dataSource :WikidataInstancesByName.\n\n :WikidataInstancesByName a ui:DataSource ;\n schema:name "Wikidata instances by name";\n ui:endpoint "https://query.wikidata.org/sparql" ;\n ui:searchByNameQuery """SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, "$(name)", "i")\n } LIMIT $(limit) """ ;\n\n # Note this form of the query is very experimental\n ui:searchByName [ ui:construct { ?subject schema:name ?name } ;\n ui:where { ?klass wdt:P279 ?targetClass .\n ?subject wdt:P31 ?klass; rdfs:label ?name .\n };\n ].\n\n#### Gouvernment\n:GovernmentOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :GovernmentOrganizationPrompt \n :GovernmentOrganizationAutocomplete ) .\n\n :GovernmentOrganizationPrompt a ui:Comment; ui:contents "Government organization details".\n\n :GovernmentOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q327333>; # GovernmentOrganization\n ui:property solid:publicId; \n ui:dataSource :WikidataInstancesByName.\n\n#### Educational\n:EducationalOrganizationForm a ui:Group; \n ui:weight 1; \n ui:parts ( \n :EducationalOrganizationPrompt \n :EducationalOrganizationAutocomplete ) .\n\n :EducationalOrganizationPrompt a ui:Comment; ui:contents "Educational organization details".\n\n :EducationalOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q2385804>; # EducationalOrganization\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Research Group\n:ResearchOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :ResearchOrganizationPrompt \n :ResearchOrganizationAutocomplete ) .\n\n :ResearchOrganizationPrompt a ui:Comment; ui:contents "Research organizationd details".\n\n :ResearchOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q31855>; # research institute\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### NGO\n:NGOForm a ui:Group; ui:weight 0; \n ui:parts ( \n :NGOPrompt \n :NGOAutocomplete ) .\n\n :NGOPrompt a ui:Comment; ui:contents "NGO details".\n\n :NGOAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q163740>; # Non-profit org\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Performing group\n:PerformingGroupForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :PerformingGroupPrompt \n :PerformingGroupAutocomplete ) .\n\n :PerformingGroupPrompt a ui:Comment; ui:contents "Performing group details".\n\n :PerformingGroupAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q32178211>; # Music Org\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Project\n:ProjectForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :ProjectPrompt \n :ProjectAutocomplete ) . # :ProjectAutocomplete - no: supress, as not in WD\n\n :ProjectPrompt a ui:Comment; ui:contents "Project details".\n\n :ProjectAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q170584>; # Project\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Sports Organization\n:SportsOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :SportsOrganizationPrompt \n :SportsOrganizationAutocomplete ) .\n\n:SportsOrganizationPrompt a ui:Comment; ui:contents "Sports organization details".\n\n:SportsOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q4438121>; # SportsOrganization\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#################### Skills\n\n:SkillsHeading a ui:Heading; \n ui:contents "Add your skills" .\n\n:SkillsForm a ui:Multiple;\n ui:label "Skills";\n ui:property schema:skills;\n ui:ordered false; # Allow reader to order skills\n ui:part :SkillForm.\n\n:SkillForm a ui:Group; ui:weight 1; ui:parts ( :escoSkillField ).\n\n :escoSkillField a ui:AutocompleteField;\n ui:label "Find in ESCO";\n ui:property solid:publicId;\n ui:dataSource :ESCO_Skill_DataSource;\n ui:targetClass schema:Skill .\n\n :ESCO_Skill_DataSource a ui:DataSource;\n schema:name "ESCO skill";\n ui:targetClass esco:Skill ;\n schema:logo <https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif>;\n ui:searchByNameURI "https://ec.europa.eu/esco/api/search?language=$(language)&limit=$(limit)&type=skill&text=$(name)".\n\n#################### Languages\n\n:LanguagesHeading a ui:Heading; ui:contents "Add your languages" .\n\n:LanguagesForm a ui:Multiple;\n ui:label "Languages";\n ui:property schema:knowsLanguage; \n ui:ordered true; # Allow user to order languages most important first.\n ui:part :LanguageForm.\n\n:LanguageForm a ui:Group; ui:weight 1; ui:parts ( :WikidataLanguageField ).\n\n :WikidataLanguageField a ui:AutocompleteField;\n ui:label "Language";\n ui:property solid:publicId; \n ui:dataSource :WikidataLanguageDataSource;\n ui:targetClass schema:Language .\n\n :WikidataLanguageDataSource\n schema:name "Find in wikidata";\n ui:endpoint "https://query.wikidata.org/sparql" ;\n ui:objectURIBase <https://www.w3.org/ns/iana/language-code/>;\n # Add this to any literal string returned as ?subject\n ui:searchByNameQuery """SELECT ?item ?subject ?name\n WHERE\n { ?item wdt:P305 ?subject .\n OPTIONAL {?item rdfs:label ?name}\n OPTIONAL {?item wdt:P1705 ?name}\n FILTER regex(?name, "$(name)", "i")\n FILTER regex(?subject, "^..$", "i")\n }""" .\n # Note we restrict code to two-letter codes with the second regex, so as to limit the deluge of languages\n # Hope there are not any important ones which have three-letter codes.\n # Omitted: SERVICE wikibase:label { bd:serviceParam wikibase:language "$(languages)". }',"resumeForm.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-social-section"),o.setAttribute("aria-labelledby","edit-profile-social-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");if(a.id="edit-profile-social-heading",a.classList.add("section-title"),a.textContent=Un,r.appendChild(a),o.appendChild(r),t){const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Add links to your social media accounts here. These will be publicly visible on your profile.",o.appendChild(e)}else{const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Login to add social media accounts to your profile.",o.appendChild(e)}return ae(o,e,oe,"socialMedia.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-other-preferences-section"),o.setAttribute("aria-labelledby","edit-profile-other-preferences-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");return a.id="edit-profile-other-preferences-heading",a.classList.add("section-title"),a.textContent="Other Preferences",r.appendChild(a),o.appendChild(r),ae(o,e,'@prefix os: <http://www.w3.org/2000/10/swap/os#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix wd: <http://www.wikidata.org/entity/>.\n@prefix wdt: <http://www.wikidata.org/prop/direct/>.\n\n@prefix : <#>.\n\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Other preferences form" ;\n a ui:Form ;\n ui:parts (\n :styleGroup\n :nicknameGroup\n :pronounsGroup\n ).\n\n:styleGroup a ui:Group; ui:weight 0; \n ui:parts ( :styleHeading :backgroundColor :highlightColor ).\n\n:styleHeading a ui:Heading; ui:contents "The style of your public profile.".\n\n:backgroundColor a ui:ColorField; ui:property solid:profileBackgroundColor;\n ui:label "Background color"; ui:default "#ffffff".\n:highlightColor a ui:ColorField; ui:property solid:profileHighlightColor;\n ui:label "Highlight color"; ui:default "#000000".\n\n# Nickname\n\n:nicknameGroup a ui:Group; ui:weight 0; \n ui:parts ( :nicknameHeading :nicknameField) .\n\n:nicknameHeading a ui:Heading; ui:contents "What is your nickname?" .\n\n:nicknameField a ui:SingleLineTextField; \n ui:property foaf:nick;\n ui:label "Nickname"@en, "Nom court"@fr.\n\n# Pronouns\n\n:pronounsGroup a ui:Group; ui:weight 0; \n ui:parts ( :pronounsHeading :subjectPronounForm :objectPronounForm :relativePronounForm) .\n\n:pronounsHeading a ui:Heading; ui:contents "What are your pronouns?" .\n\n:subjectPronounForm a ui:SingleLineTextField; ui:property solid:preferredSubjectPronoun;\n ui:size 10; ui:label "he/she/they..." .\n:objectPronounForm a ui:SingleLineTextField; ui:property solid:preferredObjectPronoun;\n ui:size 10; ui:label "him/her/them..." .\n:relativePronounForm a ui:SingleLineTextField; ui:property solid:preferredRelativePronoun;\n ui:size 10; ui:label "his/hers/theirs..." .',"otherPreferencesForm.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("aria-labelledby","edit-profile-friends-heading"),o.classList.add("profileSection","section-bg");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");a.id="edit-profile-friends-heading",a.classList.add("section-title"),a.textContent=Hn,r.appendChild(a),o.appendChild(r);const s=n.dom.createElement("p");s.id="edit-profile-friends-description",s.classList.add("p-md"),s.textContent="This is your public social network. Only put people here to whom you are happy to be publicly connected. (You can always keep private track of friends and family in your contacts.)",o.appendChild(s);let l=null;t&&(l=n.dom.createElement("p"),l.id="edit-profile-friends-help",l.classList.add("p-md"),l.textContent="Drag people onto the target below to add people.",o.appendChild(l));const c=bn.widgets.attachmentList(n.dom,e,o,{doc:i,modify:!!t,predicate:bn.ns.foaf("knows"),noun:"friend"}),d=[s.id];return(null==l?void 0:l.id)&&d.push(l.id),c.setAttribute("aria-describedby",d.join(" ")),o.appendChild(c),o}(e,o,r,s)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("aria-labelledby","edit-profile-communities-heading"),o.classList.add("profileSection","section-bg");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");a.id="edit-profile-communities-heading",a.classList.add("section-title"),a.textContent="Communities You Participate In",r.appendChild(a),o.appendChild(r);const s=n.dom.createElement("p");s.id="edit-profile-communities-description",s.classList.add("p-md"),s.textContent="These are organizations and projects whose stuff you share",o.appendChild(s);let l=null;t&&(l=n.dom.createElement("p"),l.id="edit-profile-communities-help",l.classList.add("p-md"),l.textContent="Drag organizations onto the target below to add organizations.",o.appendChild(l));const c=bn.widgets.attachmentList(n.dom,e,o,{doc:i,modify:!!t,predicate:bn.ns.solid("community"),noun:"community"}),d=[s.id];return(null==l?void 0:l.id)&&d.push(l.id),c.setAttribute("aria-describedby",d.join(" ")),o.appendChild(c),o}(e,o,r,s)),a.setAttribute("aria-busy","false"),a.focus()}).catch(n=>{c(),l.appendChild(bn.widgets.errorMessageBlock(t,n,"#fee")),a.setAttribute("aria-busy","false")}),o}};var Me=r(7583);const De={global:!1,icon:bn.icons.iconBase+"noun_15059.svg",name:"profile",label:function(n,e){const t=e.session.store.findTypeURIs(n);return t[bn.ns.vcard("Individual").uri]||t[bn.ns.foaf("Person").uri]||t[bn.ns.schema("Person").uri]?"Profile":null},editor:Oe,render:(n,e)=>{const t=e.dom.createElement("div");return async function(n,e){const t=n.each(e,bn.ns.rdfs("seeAlso"),null,e.doc());t.length>0&&await n.fetcher.load(t)}(e.session.store,n).then(async()=>{((n,e,t)=>{const i=t?.renderBefore??e;let o=i._$litPart$;if(void 0===o){const n=t?.renderBefore??null;i._$litPart$=o=new un(e.insertBefore(U(),n),n,void 0,t??{})}o._$AI(n)})(await Ne(n,e),t);const i=Array.from(t.getElementsByClassName("QRCode"));if(!i.length)return console.error("QRCode Ele missing");for(const n of i){const e=n.getAttribute("data-value");if(!e)return console.error("QRCode data-value missing");const t={type:"svg",color:{dark:n.getAttribute("highlightColor")||"#000000",light:n.getAttribute("backgroundColor")||"#ffffff"}};Me.toString(e,t,function(e,t){e?console.error("QRcode error!",e):(n.innerHTML=t,n.style.width="80%",n.style.height="80%",n.style.margin="10%")})}}),t}},Ue=De})(),a=a.default})());
|
|
288
|
+
`}function De(n,e){const t=n.dom.createElement("section");t.setAttribute("aria-labelledby","edit-profile-contact-heading"),t.classList.add("profileSection","section-bg","profile-form");const i=n.dom.createElement("header");i.classList.add("text-center","mb-md");const o=n.dom.createElement("h2");return o.id="edit-profile-contact-heading",o.classList.add("section-title"),o.textContent="Your profile",i.appendChild(o),t.appendChild(i),t.appendChild(function(n,e,t){const i=n.session.paneRegistry.byName(t);if(!i){const e=n.dom.createElement("div");return e.innerText=`Unable to load view: ${t}`,e}const o=i.render(e,n);let r;o&&"function"==typeof o.setAttribute?r=o:o&&o.nodeType===Node.TEXT_NODE?(r=n.dom.createElement("section"),r.appendChild(o)):(r=n.dom.createElement("section"),r.innerText=`View render did not return a valid Node for: ${t}`);return r.setAttribute("role","region"),r.setAttribute("aria-label",`${t} section`),r}(n,e,"contact")),t}var Re=r(6776),ze={};ze.styleTagTransform=p(),ze.setAttributes=c(),ze.insert=s().bind(null,"head"),ze.domAPI=i(),ze.insertStyleElement=A();e()(Re.A,ze);Re.A&&Re.A.locals&&Re.A.locals;var Me=r(5179),Oe={};Oe.styleTagTransform=p(),Oe.setAttributes=c(),Oe.insert=s().bind(null,"head"),Oe.domAPI=i(),Oe.insertStyleElement=A();e()(Me.A,Oe);Me.A&&Me.A.locals&&Me.A.locals;const Ue=bn.icons.iconBase+"noun_10636_grey.svg";function He(n,e,t,i,o){const r=Bn.store.each(t,o);(async()=>{Bn.store.fetcher&&await Promise.all(r.map(n=>{var e;return Bn.store.holds(n,null,null,null)?Promise.resolve():null===(e=Bn.store.fetcher)||void 0===e?void 0:e.load(n.value).catch(()=>{})})),r.sort((n,e)=>n.value>e.value?1:n.value<e.value?-1:0),bn.utils.syncTableToArray(e,r,r=>function(n,e,t,i,o,r){const a=t,s=n.createElement("img");s.src=function(n,e){const t=bn.widgets.findImage(n);if(t)return e.classList.add("profile-image"),t;return e.classList.add("default-profile-image"),Ue}((0,jn.sym)(t),s),s.alt=`Image of ${bn.utils.label((0,jn.sym)(t))}`;const l={image:s,title:bn.utils.label((0,jn.sym)(t)),link:!0};o&&(l.deleteFunction=function(){!async function(n,e,t,i,o,r){if(!Bn.store.updater)throw new Error("Store has no updater.");const a=Bn.store.statementsMatching(t,r,o,null);if(!a.length)return console.warn("No matching statement found to delete for",o.value),void He(n,e,t,i,r);try{if(await Bn.store.updater.update(a,[]),"function"==typeof Bn.store.removeStatements){if(Bn.store.holds(t,r,o,null))try{Bn.store.removeStatements(a)}catch(n){}}Bn.store.fetcher&&await Bn.store.fetcher.load(t.doc()),He(n,e,t,i,r)}catch(o){if(console.error("Error deleting:",o),"function"==typeof Bn.store.removeStatements)try{Bn.store.removeStatements(a)}catch(n){}Bn.store.fetcher&&await Bn.store.fetcher.load(t.doc()),He(n,e,t,i,r)}}(n,e,i,o,a,r)});return bn.widgets.renderAsRow(n,r,t,l)}(n,e,r,t,i,o))})()}function qe(n){if(n&&n.doc){return!!Bn.store.findTypeURIs(n.doc())[bn.ns.foaf("PersonalProfileDocument").uri]}return!1}const Ge=bn.icons.iconBase+"noun_34653_green.svg";const je=bn.icons.iconBase+"noun_34653_green.svg";const We={global:!0,icon:bn.icons.iconBase+"noun_492246.svg",name:"editProfile",label:()=>null,render:function(n,e){const t=e.dom,i=e.session.store,o=t.createElement("section");let r;o.setAttribute("data-testid","profile-editor"),o.setAttribute("role","region"),o.setAttribute("aria-label","Edit your profile");const a=t.createElement("main");a.setAttribute("id","profile-edit-main-content"),a.setAttribute("aria-busy","true"),a.setAttribute("tabindex","-1"),a.classList.add("profile-grid","no-focus-ring");const s=t.createElement("h1");s.classList.add("visually-hidden"),s.textContent="Edit Profile",a.appendChild(s),o.appendChild(a);const l=t.createElement("aside");l.classList.add("p-sm"),l.setAttribute("role","status"),l.setAttribute("aria-live","polite"),l.setAttribute("aria-atomic","true");const c=()=>{l.isConnected||o.appendChild(l)},d={dom:t,div:a,statusArea:l,me:null};return bn.login.ensureLoadedProfile(d).then(n=>{const o=n.me,s=o.doc();if(!i.updater)throw new Error("Store has no updater");if(i.any(o,bn.ns.solid("editableProfile")))r=i.any(o,bn.ns.solid("editableProfile"));else{if(!i.updater.editable(s.uri,i))return c(),void l.appendChild(bn.widgets.errorMessageBlock(t,`⚠️ Your profile ${s} is not editable, so we cannot do much here.`,"straw"));r=s}a.appendChild(De(e,o)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-cv-section"),o.setAttribute("aria-labelledby","edit-profile-cv-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");if(a.id="edit-profile-cv-heading",a.classList.add("section-title"),a.textContent=Mn,r.appendChild(a),o.appendChild(r),!t){const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Login to add resume information to your profile.",o.appendChild(e)}return de(o,e,'@prefix os: <http://www.w3.org/2000/10/swap/os#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix org: <http://www.w3.org/ns/org#>.\n@prefix esco: <http://data.europa.eu/esco/model#>.\n@prefix wd: <http://www.wikidata.org/entity/>.\n@prefix wdt: <http://www.wikidata.org/prop/direct/>.\n\n@prefix : <#>.\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Resume form" ;\n a ui:Form ;\n ui:parts (\n :CVGroup\n :SkillsHeading :SkillsForm\n :LanguagesHeading :LanguagesForm\n ).\n\n# Curriculum Vitae: membership of organizations\n\n:CVGroup a ui:Group; \n ui:weight 1; \n ui:parts ( \n :ResumeHeading \n :involvementWithOrganizationsForm \n ).\n\n:ResumeHeading a ui:Heading; \n ui:contents "Add your work experience" .\n\n:involvementWithOrganizationsForm a ui:Multiple;\n ui:label "work experience";\n ui:property org:member; \n ui:reverse true; # link back from role to member\n ui:ordered false; # Allow user to order CV secions rather than force date order? No.\n ui:part :RoleMembershipForm.\n\norg:member owl:inverse [ ui:label "Work experience" ]. # timelimited involvement\n\n# This is a big important form for one of a series of roles in the list.\n\n:RoleMembershipForm a ui:Group; \n ui:weight 3; \n ui:parts ( \n :MembershipFormHeading\n :RoleClassifier \n :roleNameField\n :escoOccupationField \n :orgField \n :RoleDatesForm \n :RoleDescriptionForm).\n\n:MembershipFormHeading a ui:Heading; \n ui:contents "Details of the role"@en, "Détailes de ce rôle"@fr .\n\n:roleNameField a ui:SingleLineTextField;\n ui:label "Job title";\n ui:property vcard:role .\n\n:escoOccupationField a ui:AutocompleteField;\n ui:label "Find in occupation catalog";\n ui:property org:role;\n ui:dataSource :ESCO_Occupation_DataSource;\n ui:targetClass schema:Occupation .\n\n :ESCO_Occupation_DataSource a ui:DataSource;\n schema:name "ESCO";\n ui:targetClass schema:Occupation ;\n schema:logo <https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif>;\n ui:searchByNameURI "https://ec.europa.eu/esco/api/search?language=$(language)&type=occupation&text=$(name)".\n\n:orgField a ui:Choice; \n ui:label "For organization"@en, "Pour l\'organisation"@fr;\n ui:canMintNew true; \n ui:use :OrganizationCreationForm ;\n ui:property org:organization;\n ui:from vcard:Organization .\n\nvcard:Organization ui:creationForm :OrganizationCreationForm .\n\n###### eposodes in one\'s career - Roles\n\n:RoleClassifier a ui:Classifier; \n ui:label "Job type"@en;\n ui:category solid:Role .\n\n:RoleDatesForm a ui:Options; \n ui:dependingOn rdf:type; \n ui:case\n [ ui:for solid:PastRole; ui:use :TwoDateForm ],\n [ ui:for solid:CurrentRole; ui:use :StartDateForm ],\n [ ui:for solid:FutureRole; ui:use :StartDateForm ].\n\n :TwoDateForm a ui:Group; \n ui:weight 0; \n ui:parts ( :StartDateForm :EndDateForm ) .\n :StartDateForm a ui:DateField; \n ui:label "Start"@en,"Début"@fr;\n ui:property schema:startDate .\n :EndDateForm a ui:DateField; \n ui:label "End"@en,"Fin"@fr;\n ui:property schema:endDate .\n\nsolid:Role a rdfs:Class;\n owl:disjointUnionOf ( solid:PastRole solid:CurrentRole solid:FutureRole ) ;\n owl:oneOf ( solid:CurrentRole solid:PastRole solid:FutureRole ). # Future Role too?\n\nsolid:PastRole a rdfs:Class; rdfs:label "Former role"@en, "Ancien rôle"@fr, "Vergangene Rolle"@de, "Rol anterior"@es .\nsolid:CurrentRole a rdfs:Class; rdfs:label "Current role"@en, "Rôle actuel"@fr, "Momentane Rolle"@de , "Rol actual"@es .\nsolid:FutureRole a rdfs:Class; rdfs:label "Future role"@en, "Rôle à venir"@fr, "Zukünftige Rolle"@de, "Rol futuro"@es .\n\n:RoleDescriptionForm a ui:MultiLineTextField; \n ui:property schema:description;\n ui:label "Describe your role" .\n\n###### Organizations\n\n:OrganizationCreationForm a ui:Form; \n schema:name "Form for editing an organization using public data" ;\n ui:parts ( \n :OrgClassifier \n :OrganizationNameField\n :OrgSwitch\n :homePageURIField ) .\n\n:OrgClassifier a ui:Classifier; \n ui:label "Type"@en;\n ui:category solid:InterestingOrganization .\n\n:OrgSwitch a ui:Options; \n ui:dependingOn rdf:type;\n ui:case\n [ ui:for schema:Corporation; ui:use :CorporationForm ],\n [ ui:for schema:GovernmentOrganization; ui:use :GovernmentOrganizationForm ],\n [ ui:for schema:PerformingGroup; ui:use :PerformingGroupForm ],\n [ ui:for schema:Project; ui:use :ProjectForm ],\n [ ui:for schema:NGO; ui:use :NGOForm ],\n [ ui:for schema:EducationalOrganization; ui:use :EducationalOrganizationForm ],\n [ ui:for schema:ResearchOrganization; ui:use :ResearchOrganizationForm ],\n [ ui:for schema:SportsOrganization; ui:use :SportsOrganizationForm ].\n\n:OrganizationNameField a ui:SingleLineTextField ;\n ui:label "Name";\n ui:maxLength "200" ;\n ui:property schema:name .\n\n:homePageURIField a ui:NamedNodeURIField;\n ui:label "Homepage"@en;\n ui:property schema:uri .\n\n# Ontology data to drive the :OrgClassifier classifier\nsolid:InterestingOrganization owl:disjointUnionOf (\n # Airline - a Corporation\n # Consortium - a Corporation or a NGO\n schema:Corporation\n schema:EducationalOrganization\n schema:ResearchOrganization # Proposed. https://github.com/schemaorg/schemaorg/issues/2877\n # FundingScheme - eh?\n schema:GovernmentOrganization\n # LibrarySystem\n # LocalBusiness - Corporation\n # MedicalOrganization - a Corporation or a NGO\n schema:NGO\n # NewsMediaOrganization - a Corporation or a NGO\n schema:PerformingGroup # a band\n schema:Project # like Solid\n schema:SportsOrganization) .\n\n# This until the schema.org ontology adopts it\nschema:ResearchOrganization a rdfs:Class; \n rdfs:label "Research Organization"@en, "Organization de Recherche"@fr ,"organización de investigación"@es, \n "منظمة البحث"@ar, "अनुसंधान संगठन"@hi, "Forschungsorganisation"@de, "shirika la utafiti"@sw .\n\n##### Depending on the type of org, chose a different form\n\n#### Corporation\n:CorporationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :CorporationAutocomplete ) .\n\n :CorporationAutocomplete a ui:AutocompleteField; \n ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q6881511>; # Enterprise\n ui:property solid:publicId; \n ui:dataSource :WikidataInstancesByName.\n\n :WikidataInstancesByName a ui:DataSource ;\n schema:name "Wikidata instances by name";\n ui:endpoint "https://query.wikidata.org/sparql" ;\n ui:searchByNameQuery """SELECT ?subject ?name\n WHERE {\n ?klass wdt:P279* $(targetClass) .\n ?subject wdt:P31 ?klass .\n ?subject rdfs:label ?name.\n FILTER regex(?name, "$(name)", "i")\n } LIMIT $(limit) """ ;\n\n # Note this form of the query is very experimental\n ui:searchByName [ ui:construct { ?subject schema:name ?name } ;\n ui:where { ?klass wdt:P279 ?targetClass .\n ?subject wdt:P31 ?klass; rdfs:label ?name .\n };\n ].\n\n#### Gouvernment\n:GovernmentOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :GovernmentOrganizationAutocomplete ) .\n\n :GovernmentOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q327333>; # GovernmentOrganization\n ui:property solid:publicId; \n ui:dataSource :WikidataInstancesByName.\n\n#### Educational\n:EducationalOrganizationForm a ui:Group; \n ui:weight 1; \n ui:parts ( \n :EducationalOrganizationAutocomplete ) .\n\n :EducationalOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q2385804>; # EducationalOrganization\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Research Group\n:ResearchOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :ResearchOrganizationAutocomplete ) .\n\n :ResearchOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q31855>; # research institute\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### NGO\n:NGOForm a ui:Group; ui:weight 0; \n ui:parts ( \n :NGOAutocomplete ) .\n\n :NGOAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q163740>; # Non-profit org\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Performing group\n:PerformingGroupForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :PerformingGroupAutocomplete ) .\n\n :PerformingGroupAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q32178211>; # Music Org\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Project\n:ProjectForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :ProjectAutocomplete ) . # :ProjectAutocomplete - no: supress, as not in WD\n\n :ProjectAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q170584>; # Project\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#### Sports Organization\n :SportsOrganizationForm a ui:Group; \n ui:weight 0; \n ui:parts ( \n :SportsOrganizationAutocomplete ) .\n\n :SportsOrganizationAutocomplete\n a ui:AutocompleteField; ui:label "Find in wikidata";\n ui:targetClass <http://www.wikidata.org/entity/Q4438121>; # SportsOrganization\n ui:property solid:publicId; ui:dataSource :WikidataInstancesByName.\n\n#################### Skills\n\n:SkillsHeading a ui:Heading; \n ui:contents "Add your skills" .\n\n:SkillsForm a ui:Multiple;\n ui:label "skill";\n ui:property schema:skills;\n ui:ordered false; # Allow reader to order skills\n ui:part :SkillForm.\n\n:SkillForm a ui:Group; ui:weight 1; ui:parts ( :escoSkillField ).\n\n :escoSkillField a ui:AutocompleteField;\n ui:label "Find in skills catalog";\n ui:property solid:publicId;\n ui:dataSource :ESCO_Skill_DataSource;\n ui:targetClass schema:Skill .\n\n :ESCO_Skill_DataSource a ui:DataSource;\n schema:name "ESCO skill";\n ui:targetClass esco:Skill ;\n schema:logo <https://ec.europa.eu/esco/portal/static_resource2/images/logo/logo_en.gif>;\n ui:searchByNameURI "https://ec.europa.eu/esco/api/search?language=$(language)&limit=$(limit)&type=skill&text=$(name)".\n\n#################### Languages\n\n:LanguagesHeading a ui:Heading; ui:contents "Add your languages" .\n\n:LanguagesForm a ui:Multiple;\n ui:label "language";\n ui:property schema:knowsLanguage; \n ui:ordered true; # Allow user to order languages most important first.\n ui:part :LanguageForm.\n\n:LanguageForm a ui:Group; ui:weight 1; ui:parts ( :WikidataLanguageField ).\n\n :WikidataLanguageField a ui:AutocompleteField;\n ui:label "Language";\n ui:property solid:publicId; \n ui:dataSource :WikidataLanguageDataSource;\n ui:targetClass schema:Language .\n\n :WikidataLanguageDataSource\n schema:name "Find in wikidata";\n ui:endpoint "https://query.wikidata.org/sparql" ;\n ui:objectURIBase <https://www.w3.org/ns/iana/language-code/>;\n # Add this to any literal string returned as ?subject\n ui:searchByNameQuery """SELECT ?item ?subject ?name\n WHERE\n { ?item wdt:P305 ?subject .\n OPTIONAL {?item rdfs:label ?name}\n OPTIONAL {?item wdt:P1705 ?name}\n FILTER regex(?name, "$(name)", "i")\n FILTER regex(?subject, "^..$", "i")\n }""" .\n # Note we restrict code to two-letter codes with the second regex, so as to limit the deluge of languages\n # Hope there are not any important ones which have three-letter codes.\n # Omitted: SERVICE wikibase:label { bd:serviceParam wikibase:language "$(languages)". }',"resumeForm.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-social-section"),o.setAttribute("aria-labelledby","edit-profile-social-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");if(a.id="edit-profile-social-heading",a.classList.add("section-title"),a.textContent=On,r.appendChild(a),o.appendChild(r),!t){const e=n.dom.createElement("p");e.classList.add("p-md"),e.textContent="Login to add social media accounts to your profile.",o.appendChild(e)}return de(o,e,le,"socialMedia.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t,i){const o=n.dom.createElement("section");o.setAttribute("data-testid","edit-other-preferences-section"),o.setAttribute("aria-labelledby","edit-profile-other-preferences-heading"),o.classList.add("profileSection","section-bg","profile-form");const r=n.dom.createElement("header");r.classList.add("text-center","mb-md");const a=n.dom.createElement("h2");return a.id="edit-profile-other-preferences-heading",a.classList.add("section-title"),a.textContent="Other preferences",r.appendChild(a),o.appendChild(r),de(o,e,'@prefix os: <http://www.w3.org/2000/10/swap/os#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n\n@prefix owl: <http://www.w3.org/2002/07/owl#>.\n@prefix solid: <http://www.w3.org/ns/solid/terms#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n@prefix schema: <http://schema.org/>.\n@prefix foaf: <http://xmlns.com/foaf/0.1/>.\n@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.\n@prefix wd: <http://www.wikidata.org/entity/>.\n@prefix wdt: <http://www.wikidata.org/prop/direct/>.\n\n@prefix : <#>.\n\n\n:this\n <http://purl.org/dc/elements/1.1/title> "Other preferences form" ;\n a ui:Form ;\n ui:parts (\n :styleGroup\n ).\n\n:styleGroup a ui:Group; ui:weight 0; \n ui:parts ( :styleHeading :backgroundColor :highlightColor ).\n\n:styleHeading a ui:Heading; ui:contents "The style of your public profile".\n\n:backgroundColor a ui:ColorField; ui:property solid:profileBackgroundColor;\n ui:label "Background color"; ui:default "#ffffff".\n:highlightColor a ui:ColorField; ui:property solid:profileHighlightColor;\n ui:label "Highlight color"; ui:default "#000000".',"otherPreferencesForm.ttl",i,n.dom,t),o}(e,o,r,i)),a.appendChild(function(n,e,t){const i=n.dom.createElement("section");i.setAttribute("aria-labelledby","edit-profile-friends-heading"),i.classList.add("profileSection","section-bg");const o=n.dom.createElement("header");o.classList.add("text-center","mb-md");const r=n.dom.createElement("h2");if(r.id="edit-profile-friends-heading",r.classList.add("section-title"),r.textContent=Un,o.appendChild(r),i.appendChild(o),t){let o=n.dom.createElement("div");o.classList.add("add-friend-button-container"),function(n,i){const o=n.appendChild(bn.widgets.button(i.dom,Ge,"Add a friend",l)),r=bn.ns.foaf("knows");o.setAttribute("class","add-button"),o.setAttribute("aria-label","Add a friend");const a=i.dom.createElement("span");async function l(o){const a=await bn.widgets.askName(i.dom,Bn.store,n,r,void 0,"WebID of the friend you");if(a){try{new URL(a)}catch{return void Hn(n,i,"Not a URL")}try{await Bn.store.fetcher.load(Bn.store.sym(a))}catch{return void Hn(n,i,"Not a valid WebID")}if(qe(Bn.store.sym(a)))return Yn(a,i,r).then(()=>{He(i.dom,s,e,t,r)}).catch(e=>{qn(n),Hn(n,i,e)});Hn(n,i,"WebID does not seem to exist")}}a.textContent="Add a friend",a.setAttribute("class","span"),n.appendChild(a)}(o,n),i.appendChild(o)}const a=i.appendChild(n.dom.createElement("table"));a.classList.add("edit-friends-attachment-outer");const s=a.appendChild(n.dom.createElement("tr")).appendChild(n.dom.createElement("td")).appendChild(n.dom.createElement("table"));return s.classList.add("attachmentTable","table","table-striped","table-hover"),a.refresh=He(n.dom,s,e,t,bn.ns.foaf("knows")),He(n.dom,s,e,t,bn.ns.foaf("knows")),i}(e,o,r)),a.appendChild(function(n,e,t){const i=n.dom.createElement("section");i.setAttribute("aria-labelledby","edit-profile-communities-heading"),i.classList.add("profileSection","section-bg");const o=n.dom.createElement("header");o.classList.add("text-center","mb-md");const r=n.dom.createElement("h2");if(r.id="edit-profile-communities-heading",r.classList.add("section-title"),r.textContent="Your communities",o.appendChild(r),i.appendChild(o),t){let o=n.dom.createElement("div");o.classList.add("add-community-button-container"),function(n,i){const o=n.appendChild(bn.widgets.button(i.dom,je,"Add a project or community",l)),r=bn.ns.solid("community");o.setAttribute("class","add-button"),o.setAttribute("aria-label","Add a new community");const a=i.dom.createElement("span");async function l(o){const a=await bn.widgets.askName(i.dom,Bn.store,n,r,void 0,"WebID of");if(a){try{new URL(a)}catch{return void Hn(n,i,"Not a URL")}try{await Bn.store.fetcher.load(Bn.store.sym(a))}catch{return void Hn(n,i,"Not a valid WebID")}if(qe(Bn.store.sym(a)))return Yn(a,i,r).then(()=>{He(i.dom,s,e,t,r)}).catch(e=>{qn(n),Hn(n,i,e)});Hn(n,i,"WebID does not seem to exist")}}a.textContent="Add a community or project",a.setAttribute("class","span"),n.appendChild(a)}(o,n),i.appendChild(o)}const a=i.appendChild(n.dom.createElement("table"));a.classList.add("edit-community-attachment-outer");const s=a.appendChild(n.dom.createElement("tr")).appendChild(n.dom.createElement("td")).appendChild(n.dom.createElement("table"));return s.classList.add("attachmentTable","table","table-striped","table-hover"),a.refresh=He(n.dom,s,e,t,bn.ns.solid("community")),He(n.dom,s,e,t,bn.ns.solid("community")),i}(e,o,r)),ue(a),a.setAttribute("aria-busy","false"),a.focus()}).catch(n=>{c(),l.appendChild(bn.widgets.errorMessageBlock(t,n,"#fee")),a.setAttribute("aria-busy","false")}),o}},Ve=We;var Ye=r(7583);const Qe={global:!1,icon:bn.icons.iconBase+"noun_15059.svg",name:"profile",label:function(n,e){const t=e.session.store.findTypeURIs(n);return t[bn.ns.vcard("Individual").uri]||t[bn.ns.foaf("Person").uri]||t[bn.ns.schema("Person").uri]?"Profile":null},editor:Ve,render:(n,e)=>{const t=e.dom.createElement("div");return async function(n,e){const t=n.each(e,bn.ns.rdfs("seeAlso"),null,e.doc());t.length>0&&await n.fetcher.load(t)}(e.session.store,n).then(async()=>{((n,e,t)=>{const i=t?.renderBefore??e;let o=i._$litPart$;if(void 0===o){const n=t?.renderBefore??null;i._$litPart$=o=new An(e.insertBefore(U(),n),n,void 0,t??{})}o._$AI(n)})(await Pe(n,e),t);const i=Array.from(t.getElementsByClassName("QRCode"));if(!i.length)return console.error("QRCode Ele missing");for(const n of i){const e=n.getAttribute("data-value");if(!e)return console.error("QRCode data-value missing");const t={type:"svg",color:{dark:n.getAttribute("highlightColor")||"#000000",light:n.getAttribute("backgroundColor")||"#ffffff"}};Ye.toString(e,t,function(e,t){e?console.error("QRcode error!",e):(n.innerHTML=t,n.style.width="80%",n.style.height="80%",n.style.margin="10%")})}}),t}},Ze=Qe})(),a=a.default})());
|
|
290
289
|
//# sourceMappingURL=profile-pane.min.js.map
|