solid-ui 2.4.30 → 2.4.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/solid-ui.js +1520 -1074
  2. package/dist/solid-ui.js.map +1 -1
  3. package/dist/solid-ui.min.js +1 -1
  4. package/dist/solid-ui.min.js.map +1 -1
  5. package/lib/login/login.d.ts.map +1 -1
  6. package/lib/login/login.js +14 -18
  7. package/lib/login/login.js.map +1 -1
  8. package/lib/media/media-capture.d.ts +2 -2
  9. package/lib/media/media-capture.d.ts.map +1 -1
  10. package/lib/media/media-capture.js +11 -15
  11. package/lib/media/media-capture.js.map +1 -1
  12. package/lib/pad.d.ts +2 -2
  13. package/lib/pad.d.ts.map +1 -1
  14. package/lib/pad.js +15 -39
  15. package/lib/pad.js.map +1 -1
  16. package/lib/participation.d.ts +7 -7
  17. package/lib/participation.d.ts.map +1 -1
  18. package/lib/participation.js +26 -24
  19. package/lib/participation.js.map +1 -1
  20. package/lib/style.js +93 -85
  21. package/lib/style.js.map +1 -1
  22. package/lib/styleConstants.js +35 -0
  23. package/lib/styleConstants.js.map +1 -0
  24. package/lib/tabs.d.ts +0 -125
  25. package/lib/tabs.d.ts.map +1 -1
  26. package/lib/tabs.js +15 -8
  27. package/lib/tabs.js.map +1 -1
  28. package/lib/versionInfo.js +3 -3
  29. package/lib/versionInfo.js.map +1 -1
  30. package/lib/widgets/dragAndDrop.js +11 -19
  31. package/lib/widgets/dragAndDrop.js.map +1 -1
  32. package/lib/widgets/error.d.ts.map +1 -1
  33. package/lib/widgets/error.js +9 -2
  34. package/lib/widgets/error.js.map +1 -1
  35. package/lib/widgets/forms/autocomplete/autocompletePicker.d.ts.map +1 -1
  36. package/lib/widgets/forms/autocomplete/autocompletePicker.js +2 -1
  37. package/lib/widgets/forms/autocomplete/autocompletePicker.js.map +1 -1
  38. package/lib/widgets/forms/basic.d.ts.map +1 -1
  39. package/lib/widgets/forms/basic.js +5 -4
  40. package/lib/widgets/forms/basic.js.map +1 -1
  41. package/lib/widgets/forms/fieldParams.js +2 -2
  42. package/lib/widgets/forms/fieldParams.js.map +1 -1
  43. package/lib/widgets/forms.js +9 -8
  44. package/lib/widgets/forms.js.map +1 -1
  45. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/login/login.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAa,SAAS,EAAM,MAAM,QAAQ,CAAA;AAGjD,OAAO,EACL,UAAU,EACV,qBAAqB,EAYtB,MAAM,aAAa,CAAA;AAwBpB;;;;GAIG;AAEH,wBAAgB,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwB9F;AAED;;;;;;;GAOG;AAEH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAwDhC;AAED;;;;;;GAMG;AAEH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED;;;;IAII;AACJ,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,SAAS,EACnB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAShC;AAED,wBAAgB,UAAU,CAAE,OAAO,KAAA,EAAE,KAAK,KAAA,UAIzC;AACD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,KAAA,EACR,QAAQ,KAAA,GACP,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgEvC;AAED,wBAAgB,qBAAqB,CAAE,OAAO,KAAA,EAAE,KAAK,KAAA,EAAE,KAAK,KAAA,OAY3D;AACD;;IAEI;AACJ,wBAAsB,gBAAgB,CAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAuCjC;AAqGD,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,YAAY,QA+InD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,QAAQ,GAAE,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,IAAW,EACtD,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,WAAW,CAwFb;AAyBD;;;GAGG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAC9D,WAAW,CA0Pb;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAC5D,WAAW,CAmBb;AACD;;;GAGG;AACH,wBAAsB,YAAY,IAAK,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAgB/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,GAC3B,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAGhC"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/login/login.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAa,SAAS,EAAM,MAAM,QAAQ,CAAA;AAGjD,OAAO,EACL,UAAU,EACV,qBAAqB,EAYtB,MAAM,aAAa,CAAA;AAwBpB;;;;GAIG;AAEH,wBAAgB,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwB9F;AAED;;;;;;;GAOG;AAEH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAwDhC;AAED;;;;;;GAMG;AAEH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED;;;;IAII;AACJ,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,SAAS,EACnB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAShC;AAED,wBAAgB,UAAU,CAAE,OAAO,KAAA,EAAE,KAAK,KAAA,UAIzC;AACD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,KAAA,EACR,QAAQ,KAAA,GACP,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgEvC;AAED,wBAAgB,qBAAqB,CAAE,OAAO,KAAA,EAAE,KAAK,KAAA,EAAE,KAAK,KAAA,OAY3D;AACD;;IAEI;AACJ,wBAAsB,gBAAgB,CAAE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAuCjC;AAiGD,wBAAgB,iBAAiB,CAAE,GAAG,EAAE,YAAY,QA+InD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,QAAQ,GAAE,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,IAAW,EACtD,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,GACL,WAAW,CAwFb;AAyBD;;;GAGG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAC9D,WAAW,CA0Pb;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAC5D,WAAW,CAmBb;AACD;;;GAGG;AACH,wBAAsB,YAAY,IAAK,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAgB/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,GAC3B,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAGhC"}
@@ -425,6 +425,15 @@ function renderScopeHeadingRow(context, store, scope) {
425
425
  function registrationList(_x9, _x10) {
426
426
  return _registrationList.apply(this, arguments);
427
427
  } // registrationList
428
+ /**
429
+ * Bootstrapping identity
430
+ * (Called by `loginStatusBox()`)
431
+ *
432
+ * @param dom
433
+ * @param setUserCallback
434
+ *
435
+ * @returns
436
+ */
428
437
  function _registrationList() {
429
438
  _registrationList = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9(context, options) {
430
439
  var dom, div, box, scopes, table, tbody, _iterator2, _step2, scope, headingRow, items, _iterator3, _step3, _loop;
@@ -556,23 +565,10 @@ function _registrationList() {
556
565
  }));
557
566
  return _registrationList.apply(this, arguments);
558
567
  }
559
- function getDefaultSignInButtonStyle() {
560
- return 'padding: 1em; border-radius:0.5em; font-size: 100%;';
561
- }
562
-
563
- /**
564
- * Bootstrapping identity
565
- * (Called by `loginStatusBox()`)
566
- *
567
- * @param dom
568
- * @param setUserCallback
569
- *
570
- * @returns
571
- */
572
568
  function signInOrSignUpBox(dom, setUserCallback) {
573
569
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
574
570
  options = options || {};
575
- var signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle();
571
+ var signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle;
576
572
  var box = dom.createElement('div');
577
573
  var magicClassName = 'SolidSignInOrSignUpBox';
578
574
  debug.log('widgets.signInOrSignUpBox');
@@ -585,7 +581,7 @@ function signInOrSignUpBox(dom, setUserCallback) {
585
581
  box.appendChild(signInPopUpButton);
586
582
  signInPopUpButton.setAttribute('type', 'button');
587
583
  signInPopUpButton.setAttribute('value', 'Log in');
588
- signInPopUpButton.setAttribute('style', "".concat(signInButtonStyle, "background-color: #eef;").concat(style.headerBannerLoginInput));
584
+ signInPopUpButton.setAttribute('style', "".concat(signInButtonStyle).concat(style.headerBannerLoginInput) + style.signUpBackground);
589
585
  _solidLogic.authSession.onLogin(function () {
590
586
  var me = _solidLogic.authn.currentUser();
591
587
  // const sessionInfo = authSession.info
@@ -626,7 +622,7 @@ function signInOrSignUpBox(dom, setUserCallback) {
626
622
  box.appendChild(signupButton);
627
623
  signupButton.setAttribute('type', 'button');
628
624
  signupButton.setAttribute('value', 'Sign Up for Solid');
629
- signupButton.setAttribute('style', "".concat(signInButtonStyle, "background-color: #efe;").concat(style.headerBannerLoginInput));
625
+ signupButton.setAttribute('style', "".concat(signInButtonStyle).concat(style.headerBannerLoginInput) + style.signInBackground);
630
626
  signupButton.addEventListener('click', function (_event) {
631
627
  var signupMgr = new _signup.Signup();
632
628
  signupMgr.signup().then(function (uri) {
@@ -794,7 +790,7 @@ function loginStatusBox(dom) {
794
790
  });
795
791
  }
796
792
  function logoutButton(me, options) {
797
- var signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle();
793
+ var signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle;
798
794
  var logoutLabel = 'WebID logout';
799
795
  if (me) {
800
796
  var nick = _solidLogic.solidLogicSingleton.store.any(me, ns.foaf('nick')) || _solidLogic.solidLogicSingleton.store.any(me, ns.foaf('name'));
@@ -806,7 +802,7 @@ function loginStatusBox(dom) {
806
802
  // signOutButton.className = 'WebIDCancelButton'
807
803
  signOutButton.setAttribute('type', 'button');
808
804
  signOutButton.setAttribute('value', logoutLabel);
809
- signOutButton.setAttribute('style', "".concat(signInButtonStyle, "background-color: #eee;"));
805
+ signOutButton.setAttribute('style', "".concat(signInButtonStyle));
810
806
  signOutButton.addEventListener('click', logoutButtonHandler, false);
811
807
  return signOutButton;
812
808
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","names":["_rdflib","require","_solidLogic","debug","_interopRequireWildcard","style","_log","ns","_signup","utils","widgets","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","F","s","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","store","solidLogicSingleton","_solidLogicSingleton$","profile","loadPreferences","loadProfile","_solidLogicSingleton$2","typeIndex","getScopedAppInstances","getRegistrations","loadAllTypeIndexes","getScopedAppsFromIndex","deleteTypeIndexRegistration","ensureLoggedIn","context","me","authn","currentUser","saveUser","Promise","resolve","checkUser","then","webId","log","concat","div","dom","box","loginStatusBox","webIdUri","appendChild","ensureLoadedPreferences","_x","_ensureLoadedPreferences","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee4","progressDisplay","preferencesFile","m2","wrap","_callee4$","_context4","prev","abrupt","ensureLoadedProfile","sent","parentNode","removeChild","t0","UnauthorizedError","alert","CrossOriginForbiddenError","window","location","origin","preferencesFileError","SameOriginForbiddenError","warn","NotEditableError","WebOperationError","FetchError","status","message","Error","stop","_x2","_ensureLoadedProfile","_callee5","logInContext","_callee5$","_context5","publicProfile","errorMessageBlock","findAppInstances","_x3","_x4","_x5","_findAppInstances","_callee6","theClass","isPublic","items","_callee6$","_context6","filter","item","scope","label","instances","map","instance","scopeLabel","mine","sameTerm","agent","registrationControl","_x6","_x7","_x8","_registrationControl","_callee7","registrationStatements","renderScopeCheckbox","scopes","msg","tbody","form","_iterator","_step","row","_callee7$","_context7","_renderScopeCheckbox","statements","index","noun","buildCheckboxForm","_registrationStatemen","registrations","reg","newThing","st","solid","createElement","innerHTML","textContent","setAttribute","children","BlankNode","renderScopeHeadingRow","backgroundColor","cell","backgoundColor","header","textAlign","registrationList","_x9","_x10","_registrationList","_callee9","options","table","_iterator2","_step2","headingRow","_iterator3","_step3","_loop","_callee9$","_context10","firstChild","type","display","_loop$","_context9","personTR","deleteFunction","_deleteFunction","_callee8","_callee8$","_context8","paddingLeft","delegateYield","t1","finish","t2","getDefaultSignInButtonStyle","signInOrSignUpBox","setUserCallback","undefined","signInButtonStyle","buttonStyle","magicClassName","signInPopUpButton","headerBannerLoginInput","authSession","onLogin","webIdURI","uri","divs","getElementsByClassName","parent","addEventListener","offline","offlineTestID","renderSignInPopup","signupButton","_event","signupMgr","Signup","signup","issuerPopup","body","issuerPopupBox","issuerPopupBoxTopMenu","issuerPopupBoxLabel","innerText","issuerPopupBoxCloseButton","remove","loginToIssuer","_ref","_callee","issuerUri","preLoginRedirectHash","locationUrl","_callee$","_context","updater","flagAuthorizationMetadata","URL","href","hash","localStorage","setItem","login","redirectUrl","oidcIssuer","_x11","issuerTextContainer","issuerTextInputContainer","issuerTextLabel","issuerTextInput","getItem","issuerTextGoButton","issuerButtonContainer","issuerBottonLabel","getSuggestedIssuers","forEach","issuerInfo","issuerButton","listener","setIt","newidURI","refresh","logoutButtonHandler","oldMe","logout","logoutButton","logoutLabel","nick","any","foaf","signOutButton","sessionInfo","info","isLoggedIn","sym","clearElement","trackSession","onLogout","_callee2","issuer","wellKnownUri","wellKnownResult","openidConfiguration","_callee2$","_context2","pathname","fetch","json","end_session_endpoint","credentials","reload","selectWorkspace","appDetails","callbackWS","appPathSegment","say","background","figureOutBase","ws","newBaseNode","space","newBaseString","split","now","Date","getTime","displayOptions","makeNewWorkspace","_x12","_makeNewWorkspace","_callee3","newBase","newWs","newData","_callee3$","_context3","padding","encodeURI","askName","update","id","w","each","storages","ldp","file","includes","toLowerCase","p","commentStyle","baseField","textInputStyle","size","autocomplete","button","replace","x","holds","rdf","col1","col2","col3","tr","localStyle","comment","cellStyle","deselectedStyle","anyValue","ui","reduce","b","charCodeAt","bgcolor","target","rdfs","disabled","trLast","newAppInstance","callback","gotWS","base","getUserRoles","_getUserRoles","_callee10","_yield$ensureLoadedPr","_callee10$","_context11","doc","filterAvailablePanes","_x13","_filterAvailablePanes","_callee11","panes","userRoles","_callee11$","_context12","pane","isMatchingAudience","audience","isMatch","audienceRole","find","role","equals"],"sources":["../../src/login/login.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/**\n * Signing in, signing up, profile and preferences reloading\n * Type index management\n *\n * Many functions in this module take a context object which\n * holds various RDF symbols, add to it, and return a promise of it.\n *\n * * `me` RDF symbol for the user's WebID\n * * `publicProfile` The user's public profile, iff loaded\n * * `preferencesFile` The user's personal preference file, iff loaded\n * * `index.public` The user's public type index file\n * * `index.private` The user's private type index file\n *\n * Not RDF symbols:\n * * `noun` A string in english for the type of thing -- like \"address book\"\n * * `instance` An array of nodes which are existing instances\n * * `containers` An array of nodes of containers of instances\n * * `div` A DOM element where UI can be displayed\n * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages\n * *\n * * Vocabulary: \"load\" loads a file if it exists;\n * * 'Ensure\" CREATES the file if it does not exist (if it can) and then loads it.\n * @packageDocumentation\n */\nimport { PaneDefinition } from 'pane-registry'\nimport { BlankNode, NamedNode, st } from 'rdflib'\n// eslint-disable-next-line camelcase\nimport { Quad_Object } from 'rdflib/lib/tf-types'\nimport {\n AppDetails,\n AuthenticationContext,\n authn,\n authSession,\n CrossOriginForbiddenError,\n FetchError,\n getSuggestedIssuers,\n NotEditableError,\n offlineTestID,\n SameOriginForbiddenError,\n solidLogicSingleton,\n UnauthorizedError,\n WebOperationError\n} from 'solid-logic'\nimport * as debug from '../debug'\nimport * as style from '../style'\nimport { alert } from '../log'\nimport * as ns from '../ns.js'\nimport { Signup } from '../signup/signup.js'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst store = solidLogicSingleton.store\n\nconst {\n loadPreferences,\n loadProfile\n} = solidLogicSingleton.profile\n\nconst {\n getScopedAppInstances,\n getRegistrations,\n loadAllTypeIndexes,\n getScopedAppsFromIndex,\n deleteTypeIndexRegistration\n} = solidLogicSingleton.typeIndex\n\n/**\n * Resolves with the logged in user's WebID\n *\n * @param context\n */\n// used to be logIn\nexport function ensureLoggedIn (context: AuthenticationContext): Promise<AuthenticationContext> {\n const me = authn.currentUser()\n if (me) {\n authn.saveUser(me, context)\n return Promise.resolve(context)\n }\n\n return new Promise((resolve) => {\n authn.checkUser().then((webId) => {\n // Already logged in?\n if (webId) {\n debug.log(`logIn: Already logged in as ${webId}`)\n return resolve(context)\n }\n if (!context.div || !context.dom) {\n return resolve(context)\n }\n const box = loginStatusBox(context.dom, (webIdUri) => {\n authn.saveUser(webIdUri, context)\n resolve(context) // always pass growing context\n })\n context.div.appendChild(box)\n })\n })\n}\n\n/**\n * Loads preference file\n * Do this after having done log in and load profile\n *\n * @private\n *\n * @param context\n */\n// used to be logInLoadPreferences\nexport async function ensureLoadedPreferences (\n context: AuthenticationContext\n): Promise<AuthenticationContext> {\n if (context.preferencesFile) return Promise.resolve(context) // already done\n\n // const statusArea = context.statusArea || context.div || null\n let progressDisplay\n /* COMPLAIN FUNCTION NOT USED/TAKING IT OUT FOR NOW\n function complain (message) {\n message = `ensureLoadedPreferences: ${message}`\n if (statusArea) {\n // statusArea.innerHTML = ''\n statusArea.appendChild(widgets.errorMessageBlock(context.dom, message))\n }\n debug.log(message)\n // reject(new Error(message))\n } */\n try {\n context = await ensureLoadedProfile(context)\n\n // console.log('back in Solid UI after logInLoadProfile', context)\n const preferencesFile = await loadPreferences(context.me as NamedNode)\n if (progressDisplay) {\n progressDisplay.parentNode.removeChild(progressDisplay)\n }\n context.preferencesFile = preferencesFile\n } catch (err) {\n let m2: string\n if (err instanceof UnauthorizedError) {\n m2 =\n 'Ooops - you are not authenticated (properly logged in) to for me to read your preference file. Try loggin out and logging in?'\n alert(m2)\n } else if (err instanceof CrossOriginForbiddenError) {\n m2 = `Unauthorized: Assuming preference file blocked for origin ${window.location.origin}`\n context.preferencesFileError = m2\n return context\n } else if (err instanceof SameOriginForbiddenError) {\n m2 =\n 'You are not authorized to read your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n return context\n } else if (err instanceof NotEditableError) {\n m2 =\n 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n return context\n } else if (err instanceof WebOperationError) {\n m2 =\n 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n } else if (err instanceof FetchError) {\n m2 = `Strange: Error ${err.status} trying to read your preference file.${err.message}`\n alert(m2)\n } else {\n throw new Error(`(via loadPrefs) ${err}`)\n }\n }\n return context\n}\n\n/**\n * Logs the user in and loads their WebID profile document into the store\n *\n * @param context\n *\n * @returns Resolves with the context after login / fetch\n */\n// used to be logInLoadProfile\nexport async function ensureLoadedProfile (\n context: AuthenticationContext\n): Promise<AuthenticationContext> {\n if (context.publicProfile) {\n return context\n } // already done\n try {\n const logInContext = await ensureLoggedIn(context)\n if (!logInContext.me) {\n throw new Error('Could not log in')\n }\n context.publicProfile = await loadProfile(logInContext.me)\n } catch (err) {\n if (context.div && context.dom) {\n context.div.appendChild(widgets.errorMessageBlock(context.dom, err.message))\n }\n throw new Error(`Can't log in: ${err}`)\n }\n return context\n}\n\n/**\n * Returns promise of context with arrays of symbols\n *\n * leaving the `isPublic` param undefined will bring in community index things, too\n */\nexport async function findAppInstances (\n context: AuthenticationContext,\n theClass: NamedNode,\n isPublic?: boolean\n): Promise<AuthenticationContext> {\n let items = context.me ? await getScopedAppInstances(theClass, context.me) : []\n if (isPublic === true) { // old API - not recommended!\n items = items.filter(item => item.scope.label === 'public')\n } else if (isPublic === false) {\n items = items.filter(item => item.scope.label === 'private')\n }\n context.instances = items.map(item => item.instance)\n return context\n}\n\nexport function scopeLabel (context, scope) {\n const mine = context.me && context.me.sameTerm(scope.agent)\n const name = mine ? '' : utils.label(scope.agent) + ' '\n return `${name}${scope.label}`\n}\n/**\n * UI to control registration of instance\n */\nexport async function registrationControl (\n context: AuthenticationContext,\n instance,\n theClass\n): Promise<AuthenticationContext | void> {\n function registrationStatements (index) {\n const registrations = getRegistrations(instance, theClass)\n const reg = registrations.length ? registrations[0] : widgets.newThing(index)\n return [\n st(reg, ns.solid('instance'), instance, index),\n st(reg, ns.solid('forClass'), theClass, index)\n ]\n }\n\n function renderScopeCheckbox (scope) {\n const statements = registrationStatements(scope.index)\n const name = scopeLabel(context, scope)\n const label = `${name} link to this ${context.noun}`\n return widgets.buildCheckboxForm(\n context.dom,\n solidLogicSingleton.store,\n label,\n null,\n statements,\n form,\n scope.index\n )\n }\n /// / body of registrationControl\n const dom = context.dom\n if (!dom || !context.div) {\n throw new Error('registrationControl: need dom and div')\n }\n const box = dom.createElement('div')\n context.div.appendChild(box)\n context.me = authn.currentUser() // @@\n const me = context.me\n if (!me) {\n box.innerHTML = '<p style=\"margin:2em;\">(Log in to save a link to this)</p>'\n return context\n }\n\n let scopes // @@ const\n try {\n scopes = await loadAllTypeIndexes(me)\n } catch (e) {\n let msg\n if (context.div && context.preferencesFileError) {\n msg = '(Lists of stuff not available)'\n context.div.appendChild(dom.createElement('p')).textContent = msg\n } else if (context.div) {\n msg = `registrationControl: Type indexes not available: ${e}`\n context.div.appendChild(widgets.errorMessageBlock(context.dom, e))\n }\n debug.log(msg)\n return context\n }\n\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid gray 0.05em;')\n const tbody = box.children[0].children[0]\n const form = new BlankNode() // @@ say for now\n\n for (const scope of scopes) {\n const row = tbody.appendChild(dom.createElement('tr'))\n row.appendChild(renderScopeCheckbox(scope)) // @@ index\n }\n return context\n}\n\nexport function renderScopeHeadingRow (context, store, scope) {\n const backgroundColor = { private: '#fee', public: '#efe' }\n const { dom } = context\n const name = scopeLabel(context, scope)\n const row = dom.createElement('tr')\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.backgoundColor = backgroundColor[scope.label] || 'white'\n const header = cell.appendChild(dom.createElement('h3'))\n header.textContent = name + ' links'\n header.style.textAlign = 'left'\n return row\n}\n/**\n * UI to List at all registered things\n */\nexport async function registrationList (context: AuthenticationContext, options: {\n private?: boolean\n public?: boolean\n type?: NamedNode\n}): Promise<AuthenticationContext> {\n const dom = context.dom as HTMLDocument\n const div = context.div as HTMLElement\n\n const box = dom.createElement('div')\n div.appendChild(box)\n context.me = authn.currentUser() // @@\n if (!context.me) {\n box.innerHTML = '<p style=\"margin:2em;\">(Log in list your stuff)</p>'\n return context\n }\n\n const scopes = await loadAllTypeIndexes(context.me) // includes community indexes\n\n // console.log('@@ registrationList ', scopes)\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid #eee 0.5em;')\n const table = box.firstChild as HTMLElement\n const tbody = table.firstChild as HTMLElement\n\n for (const scope of scopes) { // need some predicate for listing/adding agents\n const headingRow = renderScopeHeadingRow(context, store, scope)\n tbody.appendChild(headingRow)\n const items = await getScopedAppsFromIndex(scope, options.type || null) // any class\n if (items.length === 0) headingRow.style.display = 'none'\n // console.log(`registrationList: @@ instance items for class ${options.type || 'undefined' }:`, items)\n for (const item of items) {\n const row = widgets.personTR(dom, ns.solid('instance'), item.instance, {\n deleteFunction: async () => {\n await deleteTypeIndexRegistration(item)\n tbody.removeChild(row)\n }\n })\n row.children[0].style.paddingLeft = '3em'\n\n tbody.appendChild(row)\n }\n }\n return context\n} // registrationList\n\nfunction getDefaultSignInButtonStyle (): string {\n return 'padding: 1em; border-radius:0.5em; font-size: 100%;'\n}\n\n/**\n * Bootstrapping identity\n * (Called by `loginStatusBox()`)\n *\n * @param dom\n * @param setUserCallback\n *\n * @returns\n */\nfunction signInOrSignUpBox (\n dom: HTMLDocument,\n setUserCallback: (user: string) => void,\n options: {\n buttonStyle?: string;\n } = {}\n): HTMLElement {\n options = options || {}\n const signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle()\n\n const box: any = dom.createElement('div')\n const magicClassName = 'SolidSignInOrSignUpBox'\n debug.log('widgets.signInOrSignUpBox')\n box.setUserCallback = setUserCallback\n box.setAttribute('class', magicClassName)\n box.setAttribute('style', 'display:flex;')\n\n // Sign in button with PopUP\n const signInPopUpButton = dom.createElement('input') // multi\n box.appendChild(signInPopUpButton)\n signInPopUpButton.setAttribute('type', 'button')\n signInPopUpButton.setAttribute('value', 'Log in')\n signInPopUpButton.setAttribute('style', `${signInButtonStyle}background-color: #eef;${style.headerBannerLoginInput}`)\n\n authSession.onLogin(() => {\n const me = authn.currentUser()\n // const sessionInfo = authSession.info\n // if (sessionInfo && sessionInfo.isLoggedIn) {\n if (me) {\n // const webIdURI = sessionInfo.webId\n const webIdURI = me.uri\n // setUserCallback(webIdURI)\n const divs = dom.getElementsByClassName(magicClassName)\n debug.log(`Logged in, ${divs.length} panels to be serviced`)\n // At the same time, satisfy all the other login boxes\n for (let i = 0; i < divs.length; i++) {\n const div: any = divs[i]\n // @@ TODO Remove the need to manipulate HTML elements\n if (div.setUserCallback) {\n try {\n div.setUserCallback(webIdURI)\n const parent = div.parentNode\n if (parent) {\n parent.removeChild(div)\n }\n } catch (e) {\n debug.log(`## Error satisfying login box: ${e}`)\n div.appendChild(widgets.errorMessageBlock(dom, e))\n }\n }\n }\n }\n })\n\n signInPopUpButton.addEventListener(\n 'click',\n () => {\n const offline = offlineTestID()\n if (offline) return setUserCallback(offline.uri)\n\n renderSignInPopup(dom)\n },\n false\n )\n\n // Sign up button\n const signupButton = dom.createElement('input')\n box.appendChild(signupButton)\n signupButton.setAttribute('type', 'button')\n signupButton.setAttribute('value', 'Sign Up for Solid')\n signupButton.setAttribute('style', `${signInButtonStyle}background-color: #efe;${style.headerBannerLoginInput}`)\n\n signupButton.addEventListener(\n 'click',\n function (_event) {\n const signupMgr = new Signup()\n signupMgr.signup().then(function (uri) {\n debug.log('signInOrSignUpBox signed up ' + uri)\n setUserCallback(uri)\n })\n },\n false\n )\n return box\n}\n\nexport function renderSignInPopup (dom: HTMLDocument) {\n /**\n * Issuer Menu\n */\n const issuerPopup = dom.createElement('div')\n issuerPopup.setAttribute(\n 'style',\n 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center;'\n )\n dom.body.appendChild(issuerPopup)\n const issuerPopupBox = dom.createElement('div')\n issuerPopupBox.setAttribute(\n 'style',\n `\n background-color: white;\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -moz-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -o-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n min-width: 400px;\n padding: 10px;\n z-index : 10;\n `\n )\n issuerPopup.appendChild(issuerPopupBox)\n const issuerPopupBoxTopMenu = dom.createElement('div')\n issuerPopupBoxTopMenu.setAttribute(\n 'style',\n `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n `\n )\n issuerPopupBox.appendChild(issuerPopupBoxTopMenu)\n const issuerPopupBoxLabel = dom.createElement('label')\n issuerPopupBoxLabel.setAttribute('style', 'margin-right: 5px; font-weight: 800')\n issuerPopupBoxLabel.innerText = 'Select an identity provider'\n const issuerPopupBoxCloseButton = dom.createElement('button')\n issuerPopupBoxCloseButton.innerHTML =\n '<img src=\"https://solidos.github.io/solid-ui/src/icons/noun_1180156.svg\" style=\"width: 2em; height: 2em;\" title=\"Cancel\">'\n issuerPopupBoxCloseButton.setAttribute('style', 'background-color: transparent; border: none;')\n issuerPopupBoxCloseButton.addEventListener('click', () => {\n issuerPopup.remove()\n })\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxLabel)\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxCloseButton)\n\n const loginToIssuer = async (issuerUri: string) => {\n try {\n // clear authorization metadata from store\n solidLogicSingleton.store.updater.flagAuthorizationMetadata() as any\n // Save hash\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n window.localStorage.setItem('loginIssuer', issuerUri)\n // Login\n const locationUrl = new URL(window.location.href)\n locationUrl.hash = '' // remove hash part\n await authSession.login({\n redirectUrl: locationUrl.href,\n oidcIssuer: issuerUri\n })\n } catch (err) {\n alert(err.message)\n }\n }\n\n /**\n * Text-based idp selection\n */\n const issuerTextContainer = dom.createElement('div')\n issuerTextContainer.setAttribute(\n 'style',\n `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `\n )\n const issuerTextInputContainer = dom.createElement('div')\n issuerTextInputContainer.setAttribute(\n 'style',\n `\n display: flex;\n flex-direction: row;\n `\n )\n const issuerTextLabel = dom.createElement('label')\n issuerTextLabel.innerText = 'Enter the URL of your identity provider:'\n issuerTextLabel.setAttribute('style', 'color: #888')\n const issuerTextInput = dom.createElement('input')\n issuerTextInput.setAttribute('type', 'text')\n issuerTextInput.setAttribute(\n 'style',\n 'margin-left: 0 !important; flex: 1; margin-right: 5px !important'\n )\n issuerTextInput.setAttribute('placeholder', 'https://example.com')\n issuerTextInput.value = localStorage.getItem('loginIssuer') || ''\n const issuerTextGoButton = dom.createElement('button')\n issuerTextGoButton.innerText = 'Go'\n issuerTextGoButton.setAttribute('style', 'margin-top: 12px; margin-bottom: 12px;')\n issuerTextGoButton.addEventListener('click', () => {\n loginToIssuer(issuerTextInput.value)\n })\n issuerTextContainer.appendChild(issuerTextLabel)\n issuerTextInputContainer.appendChild(issuerTextInput)\n issuerTextInputContainer.appendChild(issuerTextGoButton)\n issuerTextContainer.appendChild(issuerTextInputContainer)\n issuerPopupBox.appendChild(issuerTextContainer)\n\n /**\n * Button-based idp selection\n */\n const issuerButtonContainer = dom.createElement('div')\n issuerButtonContainer.setAttribute(\n 'style',\n `\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `\n )\n const issuerBottonLabel = dom.createElement('label')\n issuerBottonLabel.innerText = 'Or pick an identity provider from the list below:'\n issuerBottonLabel.setAttribute('style', 'color: #888')\n issuerButtonContainer.appendChild(issuerBottonLabel)\n getSuggestedIssuers().forEach((issuerInfo) => {\n const issuerButton = dom.createElement('button')\n issuerButton.innerText = issuerInfo.name\n issuerButton.setAttribute('style', 'height: 38px; margin-top: 10px')\n issuerButton.addEventListener('click', () => {\n loginToIssuer(issuerInfo.uri)\n })\n issuerButtonContainer.appendChild(issuerButton)\n })\n issuerPopupBox.appendChild(issuerButtonContainer)\n}\n\n/**\n * Login status box\n *\n * A big sign-up/sign in box or a logout box depending on the state\n *\n * @param dom\n * @param listener\n *\n * @returns\n */\nexport function loginStatusBox (\n dom: HTMLDocument,\n listener: ((uri: string | null) => void) | null = null,\n options: {\n buttonStyle?: string;\n } = {}\n): HTMLElement {\n // 20190630\n let me = offlineTestID()\n // @@ TODO Remove the need to cast HTML element to any\n const box: any = dom.createElement('div')\n\n function setIt (newidURI) {\n if (!newidURI) {\n return\n }\n\n // const uri = newidURI.uri || newidURI\n // me = sym(uri)\n me = authn.saveUser(newidURI)\n box.refresh()\n if (listener) listener(me!.uri)\n }\n\n function logoutButtonHandler (_event) {\n const oldMe = me\n authSession.logout().then(\n function () {\n const message = `Your WebID was ${oldMe}. It has been forgotten.`\n me = null\n try {\n alert(message)\n } catch (e) {\n window.alert(message)\n }\n box.refresh()\n if (listener) listener(null)\n },\n (err) => {\n alert('Fail to log out:' + err)\n }\n )\n }\n\n function logoutButton (me, options) {\n const signInButtonStyle = options.buttonStyle || getDefaultSignInButtonStyle()\n let logoutLabel = 'WebID logout'\n if (me) {\n const nick =\n solidLogicSingleton.store.any(me, ns.foaf('nick')) ||\n solidLogicSingleton.store.any(me, ns.foaf('name'))\n if (nick) {\n logoutLabel = 'Logout ' + nick.value\n }\n }\n const signOutButton = dom.createElement('input')\n // signOutButton.className = 'WebIDCancelButton'\n signOutButton.setAttribute('type', 'button')\n signOutButton.setAttribute('value', logoutLabel)\n signOutButton.setAttribute('style', `${signInButtonStyle}background-color: #eee;`)\n signOutButton.addEventListener('click', logoutButtonHandler, false)\n return signOutButton\n }\n\n box.refresh = function () {\n const sessionInfo = authSession.info\n if (sessionInfo && sessionInfo.webId && sessionInfo.isLoggedIn) {\n me = solidLogicSingleton.store.sym(sessionInfo.webId)\n } else {\n me = null\n }\n if ((me && box.me !== me.uri) || (!me && box.me)) {\n widgets.clearElement(box)\n if (me) {\n box.appendChild(logoutButton(me, options))\n } else {\n box.appendChild(signInOrSignUpBox(dom, setIt, options))\n }\n }\n box.me = me ? me.uri : null\n }\n box.refresh()\n\n function trackSession () {\n me = authn.currentUser()\n box.refresh()\n }\n trackSession()\n\n authSession.onLogin(trackSession)\n authSession.onLogout(trackSession)\n box.me = '99999' // Force refresh\n box.refresh()\n return box\n}\n\nauthSession.onLogout(async () => {\n const issuer = window.localStorage.getItem('loginIssuer')\n if (issuer) {\n try {\n // clear authorization metadata from store\n solidLogicSingleton.store.updater.flagAuthorizationMetadata() as any\n\n const wellKnownUri = new URL(issuer)\n wellKnownUri.pathname = '/.well-known/openid-configuration'\n const wellKnownResult = await fetch(wellKnownUri.toString())\n if (wellKnownResult.status === 200) {\n const openidConfiguration = await wellKnownResult.json()\n if (openidConfiguration && openidConfiguration.end_session_endpoint) {\n await fetch(openidConfiguration.end_session_endpoint, { credentials: 'include' })\n }\n }\n } catch (err) {\n // Do nothing\n }\n }\n window.location.reload()\n})\n\n/**\n * Workspace selection etc\n * See https://github.com/solidos/userguide/issues/16\n */\n\n/**\n * Returns a UI object which, if it selects a workspace,\n * will callback(workspace, newBase).\n * See https://github.com/solidos/userguide/issues/16 for more info on workspaces.\n *\n * If necessary, will get an account, preference file, etc. In sequence:\n *\n * - If not logged in, log in.\n * - Load preference file\n * - Prompt user for workspaces\n * - Allows the user to just type in a URI by hand\n *\n * Calls back with the workspace and the base URI\n *\n * @param dom\n * @param appDetails\n * @param callbackWS\n */\nexport function selectWorkspace (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callbackWS: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const noun = appDetails.noun\n const appPathSegment = appDetails.appPathSegment\n\n const me = offlineTestID()\n const box = dom.createElement('div')\n const context: AuthenticationContext = { me, dom, div: box }\n\n function say (s, background) {\n box.appendChild(widgets.errorMessageBlock(dom, s, background))\n }\n\n function figureOutBase (ws) {\n const newBaseNode: NamedNode = solidLogicSingleton.store.any(\n ws,\n ns.space('uriPrefix')\n ) as NamedNode\n let newBaseString: string\n if (!newBaseNode) {\n newBaseString = ws.uri.split('#')[0]\n } else {\n newBaseString = newBaseNode.value\n }\n if (newBaseString.slice(-1) !== '/') {\n debug.log(`${appPathSegment}: No / at end of uriPrefix ${newBaseString}`) // @@ paramater?\n newBaseString = `${newBaseString}/`\n }\n const now = new Date()\n newBaseString += `${appPathSegment}/id${now.getTime()}/` // unique id\n return newBaseString\n }\n\n function displayOptions (context) {\n // console.log('displayOptions!', context)\n async function makeNewWorkspace (_event) {\n const row = table.appendChild(dom.createElement('tr'))\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.padding = '0.5em'\n const newBase = encodeURI(\n await widgets.askName(\n dom,\n solidLogicSingleton.store,\n cell,\n ns.solid('URL'),\n ns.space('Workspace'),\n 'Workspace'\n )\n )\n const newWs = widgets.newThing(context.preferencesFile)\n const newData = [\n st(context.me, ns.space('workspace'), newWs, context.preferencesFile),\n // eslint-disable-next-line camelcase\n st(\n newWs,\n ns.space('uriPrefix'),\n newBase as unknown as Quad_Object,\n context.preferencesFile\n )\n ]\n if (!solidLogicSingleton.store.updater) {\n throw new Error('store has no updater')\n }\n await solidLogicSingleton.store.updater.update([], newData)\n // @@ now refresh list of workspaces\n }\n\n // const status = ''\n const id = context.me\n const preferencesFile = context.preferencesFile\n let newBase: any = null\n\n // A workspace specifically defined in the private preference file:\n let w: any = solidLogicSingleton.store.each(\n id,\n ns.space('workspace'),\n undefined,\n preferencesFile\n ) // Only trust preference file here\n\n // A workspace in a storage in the public profile:\n const storages = solidLogicSingleton.store.each(id, ns.space('storage')) // @@ No provenance requirement at the moment\n if (w.length === 0 && storages) {\n say(\n `You don't seem to have any workspaces. You have ${storages.length} storage spaces.`,\n 'white'\n )\n storages\n .map(function (s: any) {\n w = w.concat(solidLogicSingleton.store.each(s, ns.ldp('contains')))\n return w\n })\n .filter((file) => {\n return file.id ? ['public', 'private'].includes(file.id().toLowerCase()) : ''\n })\n }\n\n if (w.length === 1) {\n say(`Workspace used: ${w[0].uri}`, 'white') // @@ allow user to see URI\n newBase = figureOutBase(w[0])\n // callbackWS(w[0], newBase)\n // } else if (w.length === 0) {\n }\n\n // Prompt for ws selection or creation\n // say( w.length + \" workspaces for \" + id + \"Choose one.\");\n const table = dom.createElement('table')\n table.setAttribute('style', 'border-collapse:separate; border-spacing: 0.5em;')\n\n // const popup = window.open(undefined, '_blank', { height: 300, width:400 }, false)\n box.appendChild(table)\n\n // Add a field for directly adding the URI yourself\n\n // const hr = box.appendChild(dom.createElement('hr')) // @@\n box.appendChild(dom.createElement('hr')) // @@\n\n const p = box.appendChild(dom.createElement('p'))\n p.setAttribute('style', style.commentStyle)\n p.textContent = `Where would you like to store the data for the ${noun}?\n Give the URL of the folder where you would like the data stored.\n It can be anywhere in solid world - this URI is just an idea.`\n // @@ TODO Remove the need to cast baseField to any\n const baseField: any = box.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n baseField.setAttribute('style', style.textInputStyle)\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n if (newBase) {\n // set to default\n baseField.value = newBase\n }\n\n context.baseField = baseField\n\n box.appendChild(dom.createElement('br')) // @@\n\n const button = box.appendChild(dom.createElement('button'))\n button.setAttribute('style', style.buttonStyle)\n button.textContent = `Start new ${noun} at this URI`\n button.addEventListener('click', function (_event) {\n let newBase = baseField.value.replace(' ', '%20') // do not re-encode in general, as % encodings may exist\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n callbackWS(null, newBase)\n })\n\n // Now go set up the table of spaces\n\n // const row = 0\n w = w.filter(function (x) {\n return !solidLogicSingleton.store.holds(\n x,\n ns.rdf('type'), // Ignore master workspaces\n ns.space('MasterWorkspace')\n )\n })\n let col1, col2, col3, tr, ws, localStyle, comment\n const cellStyle = 'height: 3em; margin: 1em; padding: 1em white; border-radius: 0.3em;'\n const deselectedStyle = `${cellStyle}border: 0px;`\n // const selectedStyle = cellStyle + 'border: 1px solid black;'\n for (let i = 0; i < w.length; i++) {\n ws = w[i]\n tr = dom.createElement('tr')\n if (i === 0) {\n col1 = dom.createElement('td')\n col1.setAttribute('rowspan', `${w.length}`)\n col1.textContent = 'Choose a workspace for this:'\n col1.setAttribute('style', 'vertical-align:middle;')\n tr.appendChild(col1)\n }\n col2 = dom.createElement('td')\n localStyle = solidLogicSingleton.store.anyValue(ws, ns.ui('style'))\n if (!localStyle) {\n // Otherwise make up arbitrary colour\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n const bgcolor = `#${((hash(ws.uri) & 0xffffff) | 0xc0c0c0).toString(16)}` // c0c0c0 forces pale\n localStyle = `color: black ; background-color: ${bgcolor};`\n }\n col2.setAttribute('style', deselectedStyle + localStyle)\n tr.target = ws.uri\n let label = solidLogicSingleton.store.any(ws, ns.rdfs('label'))\n if (!label) {\n label = ws.uri.split('/').slice(-1)[0] || ws.uri.split('/').slice(-2)[0]\n }\n col2.textContent = label || '???'\n tr.appendChild(col2)\n if (i === 0) {\n col3 = dom.createElement('td')\n col3.setAttribute('rowspan', `${w.length}1`)\n // col3.textContent = '@@@@@ remove';\n col3.setAttribute('style', 'width:50%;')\n tr.appendChild(col3)\n }\n table.appendChild(tr)\n\n comment = solidLogicSingleton.store.any(ws, ns.rdfs('comment'))\n comment = comment ? comment.value : 'Use this workspace'\n col2.addEventListener(\n 'click',\n function (_event) {\n col3.textContent = comment ? comment.value : ''\n col3.setAttribute('style', deselectedStyle + localStyle)\n const button = dom.createElement('button')\n button.textContent = 'Continue'\n // button.setAttribute('style', style);\n const newBase = figureOutBase(ws)\n baseField.value = newBase // show user proposed URI\n\n button.addEventListener(\n 'click',\n function (_event) {\n button.disabled = true\n callbackWS(ws, newBase)\n button.textContent = '---->'\n },\n true\n ) // capture vs bubble\n col3.appendChild(button)\n },\n true\n ) // capture vs bubble\n }\n\n // last line with \"Make new workspace\"\n const trLast = dom.createElement('tr')\n col2 = dom.createElement('td')\n col2.setAttribute('style', cellStyle)\n col2.textContent = '+ Make a new workspace'\n col2.addEventListener('click', makeNewWorkspace)\n trLast.appendChild(col2)\n table.appendChild(trLast)\n } // displayOptions\n\n // console.log('kicking off async operation')\n ensureLoadedPreferences(context) // kick off async operation\n .then(displayOptions)\n .catch((err) => {\n // console.log(\"err from async op\")\n box.appendChild(widgets.errorMessageBlock(context.dom, err))\n })\n\n return box // return the box element, while login proceeds\n} // selectWorkspace\n\n/**\n * Creates a new instance of an app.\n *\n * An instance of an app could be e.g. an issue tracker for a given project,\n * or a chess game, or calendar, or a health/fitness record for a person.\n *\n * Note that this use of the term 'app' refers more to entries in the user's\n * type index than to actual software applications that use the personal data\n * to which these entries point.\n *\n * @param dom\n * @param appDetails\n * @param callback\n *\n * @returns A div with a button in it for making a new app instance\n */\nexport function newAppInstance (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callback: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const gotWS = function (ws, base) {\n // log.debug(\"newAppInstance: Selected workspace = \" + (ws? ws.uri : 'none'))\n callback(ws, base)\n }\n const div = dom.createElement('div')\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n div.appendChild(b)\n b.innerHTML = `Make new ${appDetails.noun}`\n b.addEventListener(\n 'click',\n (_event) => {\n div.appendChild(selectWorkspace(dom, appDetails, gotWS))\n },\n false\n )\n div.appendChild(b)\n return div\n}\n/**\n * Retrieves whether the currently logged in user is a power user\n * and/or a developer\n */\nexport async function getUserRoles (): Promise<Array<NamedNode>> {\n try {\n const { me, preferencesFile, preferencesFileError } = await ensureLoadedPreferences({})\n if (!preferencesFile || preferencesFileError) {\n throw new Error(preferencesFileError)\n }\n return solidLogicSingleton.store.each(\n me,\n ns.rdf('type'),\n null,\n preferencesFile.doc()\n ) as NamedNode[]\n } catch (error) {\n debug.warn('Unable to fetch your preferences - this was the error: ', error)\n }\n return []\n}\n\n/**\n * Filters which panes should be available, based on the result of [[getUserRoles]]\n */\nexport async function filterAvailablePanes (\n panes: Array<PaneDefinition>\n): Promise<Array<PaneDefinition>> {\n const userRoles = await getUserRoles()\n return panes.filter((pane) => isMatchingAudience(pane, userRoles))\n}\n\nfunction isMatchingAudience (pane: PaneDefinition, userRoles: Array<NamedNode>): boolean {\n const audience = pane.audience || []\n return audience.reduce(\n (isMatch, audienceRole) => isMatch && !!userRoles.find((role) => role.equals(audienceRole)),\n true as boolean\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0BA,IAAAA,OAAA,GAAAC,OAAA;AAGA,IAAAC,WAAA,GAAAD,OAAA;AAeA,IAAAE,KAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,KAAA,GAAAD,uBAAA,CAAAH,OAAA;AACA,IAAAK,IAAA,GAAAL,OAAA;AACA,IAAAM,EAAA,GAAAH,uBAAA,CAAAH,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,KAAA,GAAAL,uBAAA,CAAAH,OAAA;AACA,IAAAS,OAAA,GAAAN,uBAAA,CAAAH,OAAA;AAAqC,SAAAU,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,sBAAAA,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,cAAAR,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAY,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,KAAA,CAAAC,OAAA,CAAAN,CAAA,MAAAE,EAAA,GAAAK,2BAAA,CAAAP,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAQ,MAAA,qBAAAN,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAL,CAAA,UAAAY,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAtB,CAAA,WAAAA,EAAA,QAAAU,CAAA,IAAAG,CAAA,CAAAQ,MAAA,WAAAG,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAZ,CAAA,CAAAH,CAAA,UAAAlB,CAAA,WAAAA,EAAAkC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAL,CAAA,gBAAAM,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAR,CAAA,WAAAA,EAAA,IAAAR,EAAA,GAAAA,EAAA,CAAAN,IAAA,CAAAI,CAAA,MAAAb,CAAA,WAAAA,EAAA,QAAAgC,IAAA,GAAAjB,EAAA,CAAAkB,IAAA,IAAAJ,gBAAA,GAAAG,IAAA,CAAAR,IAAA,SAAAQ,IAAA,KAAAxC,CAAA,WAAAA,EAAA0C,GAAA,IAAAJ,MAAA,SAAAC,GAAA,GAAAG,GAAA,KAAAP,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAd,EAAA,oBAAAA,EAAA,8BAAAe,MAAA,QAAAC,GAAA;AAAA,SAAAX,4BAAAP,CAAA,EAAAsB,MAAA,SAAAtB,CAAA,qBAAAA,CAAA,sBAAAuB,iBAAA,CAAAvB,CAAA,EAAAsB,MAAA,OAAAnC,CAAA,GAAAG,MAAA,CAAAI,SAAA,CAAA8B,QAAA,CAAA5B,IAAA,CAAAI,CAAA,EAAAyB,KAAA,aAAAtC,CAAA,iBAAAa,CAAA,CAAA0B,WAAA,EAAAvC,CAAA,GAAAa,CAAA,CAAA0B,WAAA,CAAAC,IAAA,MAAAxC,CAAA,cAAAA,CAAA,mBAAAkB,KAAA,CAAAuB,IAAA,CAAA5B,CAAA,OAAAb,CAAA,+DAAA0C,IAAA,CAAA1C,CAAA,UAAAoC,iBAAA,CAAAvB,CAAA,EAAAsB,MAAA;AAAA,SAAAC,kBAAAO,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAAtB,MAAA,EAAAuB,GAAA,GAAAD,GAAA,CAAAtB,MAAA,WAAAX,CAAA,MAAAmC,IAAA,OAAA3B,KAAA,CAAA0B,GAAA,GAAAlC,CAAA,GAAAkC,GAAA,EAAAlC,CAAA,IAAAmC,IAAA,CAAAnC,CAAA,IAAAiC,GAAA,CAAAjC,CAAA,UAAAmC,IAAA,IAlDrC,+BACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAvBA,CA0BA;AAyBA,IAAMC,KAAK,GAAGC,+BAAmB,CAACD,KAAK;AAEvC,IAAAE,qBAAA,GAGID,+BAAmB,CAACE,OAAO;EAF7BC,eAAe,GAAAF,qBAAA,CAAfE,eAAe;EACfC,WAAW,GAAAH,qBAAA,CAAXG,WAAW;AAGb,IAAAC,sBAAA,GAMIL,+BAAmB,CAACM,SAAS;EAL/BC,qBAAqB,GAAAF,sBAAA,CAArBE,qBAAqB;EACrBC,gBAAgB,GAAAH,sBAAA,CAAhBG,gBAAgB;EAChBC,kBAAkB,GAAAJ,sBAAA,CAAlBI,kBAAkB;EAClBC,sBAAsB,GAAAL,sBAAA,CAAtBK,sBAAsB;EACtBC,2BAA2B,GAAAN,sBAAA,CAA3BM,2BAA2B;;AAG7B;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAEC,OAA8B,EAAkC;EAC9F,IAAMC,EAAE,GAAGC,iBAAK,CAACC,WAAW,CAAC,CAAC;EAC9B,IAAIF,EAAE,EAAE;IACNC,iBAAK,CAACE,QAAQ,CAACH,EAAE,EAAED,OAAO,CAAC;IAC3B,OAAOK,OAAO,CAACC,OAAO,CAACN,OAAO,CAAC;EACjC;EAEA,OAAO,IAAIK,OAAO,CAAC,UAACC,OAAO,EAAK;IAC9BJ,iBAAK,CAACK,SAAS,CAAC,CAAC,CAACC,IAAI,CAAC,UAACC,KAAK,EAAK;MAChC;MACA,IAAIA,KAAK,EAAE;QACTtF,KAAK,CAACuF,GAAG,gCAAAC,MAAA,CAAgCF,KAAK,CAAE,CAAC;QACjD,OAAOH,OAAO,CAACN,OAAO,CAAC;MACzB;MACA,IAAI,CAACA,OAAO,CAACY,GAAG,IAAI,CAACZ,OAAO,CAACa,GAAG,EAAE;QAChC,OAAOP,OAAO,CAACN,OAAO,CAAC;MACzB;MACA,IAAMc,GAAG,GAAGC,cAAc,CAACf,OAAO,CAACa,GAAG,EAAE,UAACG,QAAQ,EAAK;QACpDd,iBAAK,CAACE,QAAQ,CAACY,QAAQ,EAAEhB,OAAO,CAAC;QACjCM,OAAO,CAACN,OAAO,CAAC,EAAC;MACnB,CAAC,CAAC;MACFA,OAAO,CAACY,GAAG,CAACK,WAAW,CAACH,GAAG,CAAC;IAC9B,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,SACsBI,uBAAuBA,CAAAC,EAAA;EAAA,OAAAC,wBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AA4D7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,SAAAF,yBAAA;EAAAA,wBAAA,OAAAG,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAnEO,SAAAC,SACL1B,OAA8B;IAAA,IAAA2B,eAAA,EAAAC,eAAA,EAAAC,EAAA;IAAA,OAAAL,YAAA,YAAAM,IAAA,UAAAC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAA3D,IAAA;QAAA;UAAA,KAE1B2B,OAAO,CAAC4B,eAAe;YAAAI,SAAA,CAAA3D,IAAA;YAAA;UAAA;UAAA,OAAA2D,SAAA,CAAAE,MAAA,WAAS7B,OAAO,CAACC,OAAO,CAACN,OAAO,CAAC;QAAA;UAAAgC,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAA3D,IAAA;UAAA,OAe1C8D,mBAAmB,CAACnC,OAAO,CAAC;QAAA;UAA5CA,OAAO,GAAAgC,SAAA,CAAAI,IAAA;UAAAJ,SAAA,CAAA3D,IAAA;UAAA,OAGuBiB,eAAe,CAACU,OAAO,CAACC,EAAe,CAAC;QAAA;UAAhE2B,eAAe,GAAAI,SAAA,CAAAI,IAAA;UACrB,IAAIT,eAAe,EAAE;YACnBA,eAAe,CAACU,UAAU,CAACC,WAAW,CAACX,eAAe,CAAC;UACzD;UACA3B,OAAO,CAAC4B,eAAe,GAAGA,eAAe;UAAAI,SAAA,CAAA3D,IAAA;UAAA;QAAA;UAAA2D,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAAO,EAAA,GAAAP,SAAA;UAAA,MAGrCA,SAAA,CAAAO,EAAA,YAAeC,6BAAiB;YAAAR,SAAA,CAAA3D,IAAA;YAAA;UAAA;UAClCwD,EAAE,GACA,gIAAgI;UAClI,IAAAY,UAAK,EAACZ,EAAE,CAAC;UAAAG,SAAA,CAAA3D,IAAA;UAAA;QAAA;UAAA,MACA2D,SAAA,CAAAO,EAAA,YAAeG,qCAAyB;YAAAV,SAAA,CAAA3D,IAAA;YAAA;UAAA;UACjDwD,EAAE,gEAAAlB,MAAA,CAAgEgC,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAE;UAC1F7C,OAAO,CAAC8C,oBAAoB,GAAGjB,EAAE;UAAA,OAAAG,SAAA,CAAAE,MAAA,WAC1BlC,OAAO;QAAA;UAAA,MACLgC,SAAA,CAAAO,EAAA,YAAeQ,oCAAwB;YAAAf,SAAA,CAAA3D,IAAA;YAAA;UAAA;UAChDwD,EAAE,GACA,8GAA8G;UAChH1G,KAAK,CAAC6H,IAAI,CAACnB,EAAE,CAAC;UAAA,OAAAG,SAAA,CAAAE,MAAA,WACPlC,OAAO;QAAA;UAAA,MACLgC,SAAA,CAAAO,EAAA,YAAeU,4BAAgB;YAAAjB,SAAA,CAAA3D,IAAA;YAAA;UAAA;UACxCwD,EAAE,GACA,8GAA8G;UAChH1G,KAAK,CAAC6H,IAAI,CAACnB,EAAE,CAAC;UAAA,OAAAG,SAAA,CAAAE,MAAA,WACPlC,OAAO;QAAA;UAAA,MACLgC,SAAA,CAAAO,EAAA,YAAeW,6BAAiB;YAAAlB,SAAA,CAAA3D,IAAA;YAAA;UAAA;UACzCwD,EAAE,GACA,8GAA8G;UAChH1G,KAAK,CAAC6H,IAAI,CAACnB,EAAE,CAAC;UAAAG,SAAA,CAAA3D,IAAA;UAAA;QAAA;UAAA,MACL2D,SAAA,CAAAO,EAAA,YAAeY,sBAAU;YAAAnB,SAAA,CAAA3D,IAAA;YAAA;UAAA;UAClCwD,EAAE,qBAAAlB,MAAA,CAAqBqB,SAAA,CAAAO,EAAA,CAAIa,MAAM,2CAAAzC,MAAA,CAAwCqB,SAAA,CAAAO,EAAA,CAAIc,OAAO,CAAE;UACtF,IAAAZ,UAAK,EAACZ,EAAE,CAAC;UAAAG,SAAA,CAAA3D,IAAA;UAAA;QAAA;UAAA,MAEH,IAAIiF,KAAK,oBAAA3C,MAAA,CAAAqB,SAAA,CAAAO,EAAA,CAAyB,CAAC;QAAA;UAAA,OAAAP,SAAA,CAAAE,MAAA,WAGtClC,OAAO;QAAA;QAAA;UAAA,OAAAgC,SAAA,CAAAuB,IAAA;MAAA;IAAA,GAAA7B,QAAA;EAAA,CACf;EAAA,OAAAN,wBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAUqBa,mBAAmBA,CAAAqB,GAAA;EAAA,OAAAC,oBAAA,CAAApC,KAAA,OAAAC,SAAA;AAAA;AAqBzC;AACA;AACA;AACA;AACA;AAJA,SAAAmC,qBAAA;EAAAA,oBAAA,OAAAlC,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CArBO,SAAAiC,SACL1D,OAA8B;IAAA,IAAA2D,YAAA;IAAA,OAAAnC,YAAA,YAAAM,IAAA,UAAA8B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA5B,IAAA,GAAA4B,SAAA,CAAAxF,IAAA;QAAA;UAAA,KAE1B2B,OAAO,CAAC8D,aAAa;YAAAD,SAAA,CAAAxF,IAAA;YAAA;UAAA;UAAA,OAAAwF,SAAA,CAAA3B,MAAA,WAChBlC,OAAO;QAAA;UAAA6D,SAAA,CAAA5B,IAAA;UAAA4B,SAAA,CAAAxF,IAAA;UAAA,OAGa0B,cAAc,CAACC,OAAO,CAAC;QAAA;UAA5C2D,YAAY,GAAAE,SAAA,CAAAzB,IAAA;UAAA,IACbuB,YAAY,CAAC1D,EAAE;YAAA4D,SAAA,CAAAxF,IAAA;YAAA;UAAA;UAAA,MACZ,IAAIiF,KAAK,CAAC,kBAAkB,CAAC;QAAA;UAAAO,SAAA,CAAAxF,IAAA;UAAA,OAEPkB,WAAW,CAACoE,YAAY,CAAC1D,EAAE,CAAC;QAAA;UAA1DD,OAAO,CAAC8D,aAAa,GAAAD,SAAA,CAAAzB,IAAA;UAAAyB,SAAA,CAAAxF,IAAA;UAAA;QAAA;UAAAwF,SAAA,CAAA5B,IAAA;UAAA4B,SAAA,CAAAtB,EAAA,GAAAsB,SAAA;UAErB,IAAI7D,OAAO,CAACY,GAAG,IAAIZ,OAAO,CAACa,GAAG,EAAE;YAC9Bb,OAAO,CAACY,GAAG,CAACK,WAAW,CAACvF,OAAO,CAACqI,iBAAiB,CAAC/D,OAAO,CAACa,GAAG,EAAEgD,SAAA,CAAAtB,EAAA,CAAIc,OAAO,CAAC,CAAC;UAC9E;UAAC,MACK,IAAIC,KAAK,kBAAA3C,MAAA,CAAAkD,SAAA,CAAAtB,EAAA,CAAuB,CAAC;QAAA;UAAA,OAAAsB,SAAA,CAAA3B,MAAA,WAElClC,OAAO;QAAA;QAAA;UAAA,OAAA6D,SAAA,CAAAN,IAAA;MAAA;IAAA,GAAAG,QAAA;EAAA,CACf;EAAA,OAAAD,oBAAA,CAAApC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAOqB0C,gBAAgBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,iBAAA,CAAA/C,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAA8C,kBAAA;EAAAA,iBAAA,OAAA7C,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAA/B,SAAA4C,SACLrE,OAA8B,EAC9BsE,QAAmB,EACnBC,QAAkB;IAAA,IAAAC,KAAA;IAAA,OAAAhD,YAAA,YAAAM,IAAA,UAAA2C,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAzC,IAAA,GAAAyC,SAAA,CAAArG,IAAA;QAAA;UAAA,KAEN2B,OAAO,CAACC,EAAE;YAAAyE,SAAA,CAAArG,IAAA;YAAA;UAAA;UAAAqG,SAAA,CAAArG,IAAA;UAAA,OAASqB,qBAAqB,CAAC4E,QAAQ,EAAEtE,OAAO,CAACC,EAAE,CAAC;QAAA;UAAAyE,SAAA,CAAAnC,EAAA,GAAAmC,SAAA,CAAAtC,IAAA;UAAAsC,SAAA,CAAArG,IAAA;UAAA;QAAA;UAAAqG,SAAA,CAAAnC,EAAA,GAAG,EAAE;QAAA;UAA3EiC,KAAK,GAAAE,SAAA,CAAAnC,EAAA;UACT,IAAIgC,QAAQ,KAAK,IAAI,EAAE;YAAE;YACvBC,KAAK,GAAGA,KAAK,CAACG,MAAM,CAAC,UAAAC,IAAI;cAAA,OAAIA,IAAI,CAACC,KAAK,CAACC,KAAK,KAAK,QAAQ;YAAA,EAAC;UAC7D,CAAC,MAAM,IAAIP,QAAQ,KAAK,KAAK,EAAE;YAC7BC,KAAK,GAAGA,KAAK,CAACG,MAAM,CAAC,UAAAC,IAAI;cAAA,OAAIA,IAAI,CAACC,KAAK,CAACC,KAAK,KAAK,SAAS;YAAA,EAAC;UAC9D;UACA9E,OAAO,CAAC+E,SAAS,GAAGP,KAAK,CAACQ,GAAG,CAAC,UAAAJ,IAAI;YAAA,OAAIA,IAAI,CAACK,QAAQ;UAAA,EAAC;UAAA,OAAAP,SAAA,CAAAxC,MAAA,WAC7ClC,OAAO;QAAA;QAAA;UAAA,OAAA0E,SAAA,CAAAnB,IAAA;MAAA;IAAA,GAAAc,QAAA;EAAA,CACf;EAAA,OAAAD,iBAAA,CAAA/C,KAAA,OAAAC,SAAA;AAAA;AAEM,SAAS4D,UAAUA,CAAElF,OAAO,EAAE6E,KAAK,EAAE;EAC1C,IAAMM,IAAI,GAAGnF,OAAO,CAACC,EAAE,IAAID,OAAO,CAACC,EAAE,CAACmF,QAAQ,CAACP,KAAK,CAACQ,KAAK,CAAC;EAC3D,IAAMzG,IAAI,GAAGuG,IAAI,GAAG,EAAE,GAAG1J,KAAK,CAACqJ,KAAK,CAACD,KAAK,CAACQ,KAAK,CAAC,GAAG,GAAG;EACvD,UAAA1E,MAAA,CAAU/B,IAAI,EAAA+B,MAAA,CAAGkE,KAAK,CAACC,KAAK;AAC9B;AACA;AACA;AACA;AAFA,SAGsBQ,mBAAmBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,oBAAA,CAAArE,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAoE,qBAAA;EAAAA,oBAAA,OAAAnE,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAlC,SAAAkE,SACL3F,OAA8B,EAC9BiF,QAAQ,EACRX,QAAQ;IAAA,IAECsB,sBAAsB,EAStBC,mBAAmB,EAAAhF,GAAA,EAAAC,GAAA,EAAAb,EAAA,EAAA6F,MAAA,EAAAC,GAAA,EAAAC,KAAA,EAAAC,IAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAtB,KAAA,EAAAuB,GAAA;IAAA,OAAA5E,YAAA,YAAAM,IAAA,UAAAuE,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAArE,IAAA,GAAAqE,SAAA,CAAAjI,IAAA;QAAA;UAAnBwH,mBAAmB,YAAAU,qBAAE1B,KAAK,EAAE;YACnC,IAAM2B,UAAU,GAAGZ,sBAAsB,CAACf,KAAK,CAAC4B,KAAK,CAAC;YACtD,IAAM7H,IAAI,GAAGsG,UAAU,CAAClF,OAAO,EAAE6E,KAAK,CAAC;YACvC,IAAMC,KAAK,MAAAnE,MAAA,CAAM/B,IAAI,oBAAA+B,MAAA,CAAiBX,OAAO,CAAC0G,IAAI,CAAE;YACpD,OAAOhL,OAAO,CAACiL,iBAAiB,CAC9B3G,OAAO,CAACa,GAAG,EACX1B,+BAAmB,CAACD,KAAK,EACzB4F,KAAK,EACL,IAAI,EACJ0B,UAAU,EACVP,IAAI,EACJpB,KAAK,CAAC4B,KACR,CAAC;UACH,CAAC;UAtBQb,sBAAsB,YAAAgB,sBAAEH,KAAK,EAAE;YACtC,IAAMI,aAAa,GAAGlH,gBAAgB,CAACsF,QAAQ,EAAEX,QAAQ,CAAC;YAC1D,IAAMwC,GAAG,GAAGD,aAAa,CAACpJ,MAAM,GAAGoJ,aAAa,CAAC,CAAC,CAAC,GAAGnL,OAAO,CAACqL,QAAQ,CAACN,KAAK,CAAC;YAC7E,OAAO,CACL,IAAAO,UAAE,EAACF,GAAG,EAAEvL,EAAE,CAAC0L,KAAK,CAAC,UAAU,CAAC,EAAEhC,QAAQ,EAAEwB,KAAK,CAAC,EAC9C,IAAAO,UAAE,EAACF,GAAG,EAAEvL,EAAE,CAAC0L,KAAK,CAAC,UAAU,CAAC,EAAE3C,QAAQ,EAAEmC,KAAK,CAAC,CAC/C;UACH,CAAC;UAgBD;UACM5F,GAAG,GAAGb,OAAO,CAACa,GAAG;UAAA,MACnB,CAACA,GAAG,IAAI,CAACb,OAAO,CAACY,GAAG;YAAA0F,SAAA,CAAAjI,IAAA;YAAA;UAAA;UAAA,MAChB,IAAIiF,KAAK,CAAC,uCAAuC,CAAC;QAAA;UAEpDxC,GAAG,GAAGD,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;UACpClH,OAAO,CAACY,GAAG,CAACK,WAAW,CAACH,GAAG,CAAC;UAC5Bd,OAAO,CAACC,EAAE,GAAGC,iBAAK,CAACC,WAAW,CAAC,CAAC,EAAC;UAC3BF,EAAE,GAAGD,OAAO,CAACC,EAAE;UAAA,IAChBA,EAAE;YAAAqG,SAAA,CAAAjI,IAAA;YAAA;UAAA;UACLyC,GAAG,CAACqG,SAAS,GAAG,4DAA4D;UAAA,OAAAb,SAAA,CAAApE,MAAA,WACrElC,OAAO;QAAA;UAAAsG,SAAA,CAAArE,IAAA;UAAAqE,SAAA,CAAAjI,IAAA;UAAA,OAKCuB,kBAAkB,CAACK,EAAE,CAAC;QAAA;UAArC6F,MAAM,GAAAQ,SAAA,CAAAlE,IAAA;UAAAkE,SAAA,CAAAjI,IAAA;UAAA;QAAA;UAAAiI,SAAA,CAAArE,IAAA;UAAAqE,SAAA,CAAA/D,EAAA,GAAA+D,SAAA;UAGN,IAAItG,OAAO,CAACY,GAAG,IAAIZ,OAAO,CAAC8C,oBAAoB,EAAE;YAC/CiD,GAAG,GAAG,gCAAgC;YACtC/F,OAAO,CAACY,GAAG,CAACK,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,GAAG,CAAC,CAAC,CAACE,WAAW,GAAGrB,GAAG;UACnE,CAAC,MAAM,IAAI/F,OAAO,CAACY,GAAG,EAAE;YACtBmF,GAAG,uDAAApF,MAAA,CAAA2F,SAAA,CAAA/D,EAAA,CAA0D;YAC7DvC,OAAO,CAACY,GAAG,CAACK,WAAW,CAACvF,OAAO,CAACqI,iBAAiB,CAAC/D,OAAO,CAACa,GAAG,EAAAyF,SAAA,CAAA/D,EAAG,CAAC,CAAC;UACpE;UACApH,KAAK,CAACuF,GAAG,CAACqF,GAAG,CAAC;UAAA,OAAAO,SAAA,CAAApE,MAAA,WACPlC,OAAO;QAAA;UAGhBc,GAAG,CAACqG,SAAS,GAAG,gCAAgC,EAAC;UACjDrG,GAAG,CAACuG,YAAY,CAAC,OAAO,EAAE,8EAA8E,CAAC;UACnGrB,KAAK,GAAGlF,GAAG,CAACwG,QAAQ,CAAC,CAAC,CAAC,CAACA,QAAQ,CAAC,CAAC,CAAC;UACnCrB,IAAI,GAAG,IAAIsB,iBAAS,CAAC,CAAC,EAAC;UAAArB,SAAA,GAAAlJ,0BAAA,CAET8I,MAAM;UAAA;YAA1B,KAAAI,SAAA,CAAAvI,CAAA,MAAAwI,KAAA,GAAAD,SAAA,CAAA9J,CAAA,IAAAwB,IAAA,GAA4B;cAAjBiH,KAAK,GAAAsB,KAAA,CAAAtI,KAAA;cACRuI,GAAG,GAAGJ,KAAK,CAAC/E,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC,CAAC;cACtDd,GAAG,CAACnF,WAAW,CAAC4E,mBAAmB,CAAChB,KAAK,CAAC,CAAC,EAAC;YAC9C;UAAC,SAAA1G,GAAA;YAAA+H,SAAA,CAAAtK,CAAA,CAAAuC,GAAA;UAAA;YAAA+H,SAAA,CAAAnI,CAAA;UAAA;UAAA,OAAAuI,SAAA,CAAApE,MAAA,WACMlC,OAAO;QAAA;QAAA;UAAA,OAAAsG,SAAA,CAAA/C,IAAA;MAAA;IAAA,GAAAoC,QAAA;EAAA,CACf;EAAA,OAAAD,oBAAA,CAAArE,KAAA,OAAAC,SAAA;AAAA;AAEM,SAASkG,qBAAqBA,CAAExH,OAAO,EAAEd,KAAK,EAAE2F,KAAK,EAAE;EAC5D,IAAM4C,eAAe,GAAG;IAAE,WAAS,MAAM;IAAE,UAAQ;EAAO,CAAC;EAC3D,IAAQ5G,GAAG,GAAKb,OAAO,CAAfa,GAAG;EACX,IAAMjC,IAAI,GAAGsG,UAAU,CAAClF,OAAO,EAAE6E,KAAK,CAAC;EACvC,IAAMuB,GAAG,GAAGvF,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC;EACnC,IAAMQ,IAAI,GAAGtB,GAAG,CAACnF,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC,CAAC;EACrDQ,IAAI,CAACL,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC;EACjCK,IAAI,CAACrM,KAAK,CAACsM,cAAc,GAAGF,eAAe,CAAC5C,KAAK,CAACC,KAAK,CAAC,IAAI,OAAO;EACnE,IAAM8C,MAAM,GAAGF,IAAI,CAACzG,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC,CAAC;EACxDU,MAAM,CAACR,WAAW,GAAGxI,IAAI,GAAG,QAAQ;EACpCgJ,MAAM,CAACvM,KAAK,CAACwM,SAAS,GAAG,MAAM;EAC/B,OAAOzB,GAAG;AACZ;AACA;AACA;AACA;AAFA,SAGsB0B,gBAAgBA,CAAAC,GAAA,EAAAC,IAAA;EAAA,OAAAC,iBAAA,CAAA5G,KAAA,OAAAC,SAAA;AAAA,EA2CpC;AAAA,SAAA2G,kBAAA;EAAAA,iBAAA,OAAA1G,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CA3CK,SAAAyG,SAAiClI,OAA8B,EAAEmI,OAIvE;IAAA,IAAAtH,GAAA,EAAAD,GAAA,EAAAE,GAAA,EAAAgF,MAAA,EAAAsC,KAAA,EAAApC,KAAA,EAAAqC,UAAA,EAAAC,MAAA,EAAAzD,KAAA,EAAA0D,UAAA,EAAA/D,KAAA,EAAAgE,UAAA,EAAAC,MAAA,EAAAC,KAAA;IAAA,OAAAlH,YAAA,YAAAM,IAAA,UAAA6G,UAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAA3G,IAAA,GAAA2G,UAAA,CAAAvK,IAAA;QAAA;UACOwC,GAAG,GAAGb,OAAO,CAACa,GAAG;UACjBD,GAAG,GAAGZ,OAAO,CAACY,GAAG;UAEjBE,GAAG,GAAGD,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;UACpCtG,GAAG,CAACK,WAAW,CAACH,GAAG,CAAC;UACpBd,OAAO,CAACC,EAAE,GAAGC,iBAAK,CAACC,WAAW,CAAC,CAAC,EAAC;UAAA,IAC5BH,OAAO,CAACC,EAAE;YAAA2I,UAAA,CAAAvK,IAAA;YAAA;UAAA;UACbyC,GAAG,CAACqG,SAAS,GAAG,qDAAqD;UAAA,OAAAyB,UAAA,CAAA1G,MAAA,WAC9DlC,OAAO;QAAA;UAAA4I,UAAA,CAAAvK,IAAA;UAAA,OAGKuB,kBAAkB,CAACI,OAAO,CAACC,EAAE,CAAC;QAAA;UAA7C6F,MAAM,GAAA8C,UAAA,CAAAxG,IAAA;UAAwC;;UAEpD;UACAtB,GAAG,CAACqG,SAAS,GAAG,gCAAgC,EAAC;UACjDrG,GAAG,CAACuG,YAAY,CAAC,OAAO,EAAE,6EAA6E,CAAC;UAClGe,KAAK,GAAGtH,GAAG,CAAC+H,UAAU;UACtB7C,KAAK,GAAGoC,KAAK,CAACS,UAAU;UAAAR,UAAA,GAAArL,0BAAA,CAEV8I,MAAM;UAAA8C,UAAA,CAAA3G,IAAA;UAAAoG,UAAA,CAAA1K,CAAA;QAAA;UAAA,KAAA2K,MAAA,GAAAD,UAAA,CAAAjM,CAAA,IAAAwB,IAAA;YAAAgL,UAAA,CAAAvK,IAAA;YAAA;UAAA;UAAfwG,KAAK,GAAAyD,MAAA,CAAAzK,KAAA;UAAc;UACtB0K,UAAU,GAAGf,qBAAqB,CAACxH,OAAO,EAAEd,KAAK,EAAE2F,KAAK,CAAC;UAC/DmB,KAAK,CAAC/E,WAAW,CAACsH,UAAU,CAAC;UAAAK,UAAA,CAAAvK,IAAA;UAAA,OACTwB,sBAAsB,CAACgF,KAAK,EAAEsD,OAAO,CAACW,IAAI,IAAI,IAAI,CAAC;QAAA;UAAjEtE,KAAK,GAAAoE,UAAA,CAAAxG,IAAA;UAA6D;UACxE,IAAIoC,KAAK,CAAC/G,MAAM,KAAK,CAAC,EAAE8K,UAAU,CAAClN,KAAK,CAAC0N,OAAO,GAAG,MAAM;UACzD;UAAAP,UAAA,GAAAxL,0BAAA,CACmBwH,KAAK;UAAAoE,UAAA,CAAA3G,IAAA;UAAAyG,KAAA,gBAAAlH,YAAA,YAAAC,IAAA,UAAAiH,MAAA;YAAA,IAAA9D,IAAA,EAAAwB,GAAA;YAAA,OAAA5E,YAAA,YAAAM,IAAA,UAAAkH,OAAAC,SAAA;cAAA,kBAAAA,SAAA,CAAAhH,IAAA,GAAAgH,SAAA,CAAA5K,IAAA;gBAAA;kBAAbuG,IAAI,GAAA6D,MAAA,CAAA5K,KAAA;kBACPuI,GAAG,GAAG1K,OAAO,CAACwN,QAAQ,CAACrI,GAAG,EAAEtF,EAAE,CAAC0L,KAAK,CAAC,UAAU,CAAC,EAAErC,IAAI,CAACK,QAAQ,EAAE;oBACrEkE,cAAc;sBAAA,IAAAC,eAAA,OAAA7H,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA4H,SAAA;wBAAA,OAAA7H,YAAA,YAAAM,IAAA,UAAAwH,UAAAC,SAAA;0BAAA,kBAAAA,SAAA,CAAAtH,IAAA,GAAAsH,SAAA,CAAAlL,IAAA;4BAAA;8BAAAkL,SAAA,CAAAlL,IAAA;8BAAA,OACRyB,2BAA2B,CAAC8E,IAAI,CAAC;4BAAA;8BACvCoB,KAAK,CAAC1D,WAAW,CAAC8D,GAAG,CAAC;4BAAA;4BAAA;8BAAA,OAAAmD,SAAA,CAAAhG,IAAA;0BAAA;wBAAA,GAAA8F,QAAA;sBAAA,CACvB;sBAAA,SAAAF,eAAA;wBAAA,OAAAC,eAAA,CAAA/H,KAAA,OAAAC,SAAA;sBAAA;sBAAA,OAAA6H,cAAA;oBAAA;kBACH,CAAC,CAAC;kBACF/C,GAAG,CAACkB,QAAQ,CAAC,CAAC,CAAC,CAACjM,KAAK,CAACmO,WAAW,GAAG,KAAK;kBAEzCxD,KAAK,CAAC/E,WAAW,CAACmF,GAAG,CAAC;gBAAA;gBAAA;kBAAA,OAAA6C,SAAA,CAAA1F,IAAA;cAAA;YAAA,GAAAmF,KAAA;UAAA;UAAAF,UAAA,CAAA7K,CAAA;QAAA;UAAA,KAAA8K,MAAA,GAAAD,UAAA,CAAApM,CAAA,IAAAwB,IAAA;YAAAgL,UAAA,CAAAvK,IAAA;YAAA;UAAA;UAAA,OAAAuK,UAAA,CAAAa,aAAA,CAAAf,KAAA;QAAA;UAAAE,UAAA,CAAAvK,IAAA;UAAA;QAAA;UAAAuK,UAAA,CAAAvK,IAAA;UAAA;QAAA;UAAAuK,UAAA,CAAA3G,IAAA;UAAA2G,UAAA,CAAAc,EAAA,GAAAd,UAAA;UAAAJ,UAAA,CAAA5M,CAAA,CAAAgN,UAAA,CAAAc,EAAA;QAAA;UAAAd,UAAA,CAAA3G,IAAA;UAAAuG,UAAA,CAAAzK,CAAA;UAAA,OAAA6K,UAAA,CAAAe,MAAA;QAAA;UAAAf,UAAA,CAAAvK,IAAA;UAAA;QAAA;UAAAuK,UAAA,CAAAvK,IAAA;UAAA;QAAA;UAAAuK,UAAA,CAAA3G,IAAA;UAAA2G,UAAA,CAAAgB,EAAA,GAAAhB,UAAA;UAAAP,UAAA,CAAAzM,CAAA,CAAAgN,UAAA,CAAAgB,EAAA;QAAA;UAAAhB,UAAA,CAAA3G,IAAA;UAAAoG,UAAA,CAAAtK,CAAA;UAAA,OAAA6K,UAAA,CAAAe,MAAA;QAAA;UAAA,OAAAf,UAAA,CAAA1G,MAAA,WAGnBlC,OAAO;QAAA;QAAA;UAAA,OAAA4I,UAAA,CAAArF,IAAA;MAAA;IAAA,GAAA2E,QAAA;EAAA,CACf;EAAA,OAAAD,iBAAA,CAAA5G,KAAA,OAAAC,SAAA;AAAA;AAED,SAASuI,2BAA2BA,CAAA,EAAY;EAC9C,OAAO,qDAAqD;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CACxBjJ,GAAiB,EACjBkJ,eAAuC,EAI1B;EAAA,IAHb5B,OAEC,GAAA7G,SAAA,CAAA7D,MAAA,QAAA6D,SAAA,QAAA0I,SAAA,GAAA1I,SAAA,MAAG,CAAC,CAAC;EAEN6G,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;EACvB,IAAM8B,iBAAiB,GAAG9B,OAAO,CAAC+B,WAAW,IAAIL,2BAA2B,CAAC,CAAC;EAE9E,IAAM/I,GAAQ,GAAGD,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EACzC,IAAMiD,cAAc,GAAG,wBAAwB;EAC/ChP,KAAK,CAACuF,GAAG,CAAC,2BAA2B,CAAC;EACtCI,GAAG,CAACiJ,eAAe,GAAGA,eAAe;EACrCjJ,GAAG,CAACuG,YAAY,CAAC,OAAO,EAAE8C,cAAc,CAAC;EACzCrJ,GAAG,CAACuG,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC;;EAE1C;EACA,IAAM+C,iBAAiB,GAAGvJ,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC,EAAC;EACrDpG,GAAG,CAACG,WAAW,CAACmJ,iBAAiB,CAAC;EAClCA,iBAAiB,CAAC/C,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;EAChD+C,iBAAiB,CAAC/C,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC;EACjD+C,iBAAiB,CAAC/C,YAAY,CAAC,OAAO,KAAA1G,MAAA,CAAKsJ,iBAAiB,6BAAAtJ,MAAA,CAA0BtF,KAAK,CAACgP,sBAAsB,CAAE,CAAC;EAErHC,uBAAW,CAACC,OAAO,CAAC,YAAM;IACxB,IAAMtK,EAAE,GAAGC,iBAAK,CAACC,WAAW,CAAC,CAAC;IAC9B;IACA;IACA,IAAIF,EAAE,EAAE;MACN;MACA,IAAMuK,QAAQ,GAAGvK,EAAE,CAACwK,GAAG;MACvB;MACA,IAAMC,IAAI,GAAG7J,GAAG,CAAC8J,sBAAsB,CAACR,cAAc,CAAC;MACvDhP,KAAK,CAACuF,GAAG,eAAAC,MAAA,CAAe+J,IAAI,CAACjN,MAAM,2BAAwB,CAAC;MAC5D;MACA,KAAK,IAAIX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4N,IAAI,CAACjN,MAAM,EAAEX,CAAC,EAAE,EAAE;QACpC,IAAM8D,GAAQ,GAAG8J,IAAI,CAAC5N,CAAC,CAAC;QACxB;QACA,IAAI8D,GAAG,CAACmJ,eAAe,EAAE;UACvB,IAAI;YACFnJ,GAAG,CAACmJ,eAAe,CAACS,QAAQ,CAAC;YAC7B,IAAMI,MAAM,GAAGhK,GAAG,CAACyB,UAAU;YAC7B,IAAIuI,MAAM,EAAE;cACVA,MAAM,CAACtI,WAAW,CAAC1B,GAAG,CAAC;YACzB;UACF,CAAC,CAAC,OAAOhF,CAAC,EAAE;YACVT,KAAK,CAACuF,GAAG,mCAAAC,MAAA,CAAmC/E,CAAC,CAAE,CAAC;YAChDgF,GAAG,CAACK,WAAW,CAACvF,OAAO,CAACqI,iBAAiB,CAAClD,GAAG,EAAEjF,CAAC,CAAC,CAAC;UACpD;QACF;MACF;IACF;EACF,CAAC,CAAC;EAEFwO,iBAAiB,CAACS,gBAAgB,CAChC,OAAO,EACP,YAAM;IACJ,IAAMC,OAAO,GAAG,IAAAC,yBAAa,EAAC,CAAC;IAC/B,IAAID,OAAO,EAAE,OAAOf,eAAe,CAACe,OAAO,CAACL,GAAG,CAAC;IAEhDO,iBAAiB,CAACnK,GAAG,CAAC;EACxB,CAAC,EACD,KACF,CAAC;;EAED;EACA,IAAMoK,YAAY,GAAGpK,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC;EAC/CpG,GAAG,CAACG,WAAW,CAACgK,YAAY,CAAC;EAC7BA,YAAY,CAAC5D,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;EAC3C4D,YAAY,CAAC5D,YAAY,CAAC,OAAO,EAAE,mBAAmB,CAAC;EACvD4D,YAAY,CAAC5D,YAAY,CAAC,OAAO,KAAA1G,MAAA,CAAKsJ,iBAAiB,6BAAAtJ,MAAA,CAA0BtF,KAAK,CAACgP,sBAAsB,CAAE,CAAC;EAEhHY,YAAY,CAACJ,gBAAgB,CAC3B,OAAO,EACP,UAAUK,MAAM,EAAE;IAChB,IAAMC,SAAS,GAAG,IAAIC,cAAM,CAAC,CAAC;IAC9BD,SAAS,CAACE,MAAM,CAAC,CAAC,CAAC7K,IAAI,CAAC,UAAUiK,GAAG,EAAE;MACrCtP,KAAK,CAACuF,GAAG,CAAC,8BAA8B,GAAG+J,GAAG,CAAC;MAC/CV,eAAe,CAACU,GAAG,CAAC;IACtB,CAAC,CAAC;EACJ,CAAC,EACD,KACF,CAAC;EACD,OAAO3J,GAAG;AACZ;AAEO,SAASkK,iBAAiBA,CAAEnK,GAAiB,EAAE;EACpD;AACF;AACA;EACE,IAAMyK,WAAW,GAAGzK,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EAC5CoE,WAAW,CAACjE,YAAY,CACtB,OAAO,EACP,qHACF,CAAC;EACDxG,GAAG,CAAC0K,IAAI,CAACtK,WAAW,CAACqK,WAAW,CAAC;EACjC,IAAME,cAAc,GAAG3K,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EAC/CsE,cAAc,CAACnE,YAAY,CACzB,OAAO,qWAYT,CAAC;EACDiE,WAAW,CAACrK,WAAW,CAACuK,cAAc,CAAC;EACvC,IAAMC,qBAAqB,GAAG5K,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EACtDuE,qBAAqB,CAACpE,YAAY,CAChC,OAAO,qKAQT,CAAC;EACDmE,cAAc,CAACvK,WAAW,CAACwK,qBAAqB,CAAC;EACjD,IAAMC,mBAAmB,GAAG7K,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC;EACtDwE,mBAAmB,CAACrE,YAAY,CAAC,OAAO,EAAE,qCAAqC,CAAC;EAChFqE,mBAAmB,CAACC,SAAS,GAAG,6BAA6B;EAC7D,IAAMC,yBAAyB,GAAG/K,GAAG,CAACqG,aAAa,CAAC,QAAQ,CAAC;EAC7D0E,yBAAyB,CAACzE,SAAS,GACjC,2HAA2H;EAC7HyE,yBAAyB,CAACvE,YAAY,CAAC,OAAO,EAAE,8CAA8C,CAAC;EAC/FuE,yBAAyB,CAACf,gBAAgB,CAAC,OAAO,EAAE,YAAM;IACxDS,WAAW,CAACO,MAAM,CAAC,CAAC;EACtB,CAAC,CAAC;EACFJ,qBAAqB,CAACxK,WAAW,CAACyK,mBAAmB,CAAC;EACtDD,qBAAqB,CAACxK,WAAW,CAAC2K,yBAAyB,CAAC;EAE5D,IAAME,aAAa;IAAA,IAAAC,IAAA,OAAAxK,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAG,SAAAuK,QAAOC,SAAiB;MAAA,IAAAC,oBAAA,EAAAC,WAAA;MAAA,OAAA3K,YAAA,YAAAM,IAAA,UAAAsK,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAApK,IAAA,GAAAoK,QAAA,CAAAhO,IAAA;UAAA;YAAAgO,QAAA,CAAApK,IAAA;YAE1C;YACA9C,+BAAmB,CAACD,KAAK,CAACoN,OAAO,CAACC,yBAAyB,CAAC,CAAC;YAC7D;YACML,oBAAoB,GAAG,IAAIM,GAAG,CAAC7J,MAAM,CAACC,QAAQ,CAAC6J,IAAI,CAAC,CAACC,IAAI;YAC/D,IAAIR,oBAAoB,EAAE;cACxBvJ,MAAM,CAACgK,YAAY,CAACC,OAAO,CAAC,sBAAsB,EAAEV,oBAAoB,CAAC;YAC3E;YACAvJ,MAAM,CAACgK,YAAY,CAACC,OAAO,CAAC,aAAa,EAAEX,SAAS,CAAC;YACrD;YACME,WAAW,GAAG,IAAIK,GAAG,CAAC7J,MAAM,CAACC,QAAQ,CAAC6J,IAAI,CAAC;YACjDN,WAAW,CAACO,IAAI,GAAG,EAAE,EAAC;YAAAL,QAAA,CAAAhO,IAAA;YAAA,OAChBiM,uBAAW,CAACuC,KAAK,CAAC;cACtBC,WAAW,EAAEX,WAAW,CAACM,IAAI;cAC7BM,UAAU,EAAEd;YACd,CAAC,CAAC;UAAA;YAAAI,QAAA,CAAAhO,IAAA;YAAA;UAAA;YAAAgO,QAAA,CAAApK,IAAA;YAAAoK,QAAA,CAAA9J,EAAA,GAAA8J,QAAA;YAEF,IAAA5J,UAAK,EAAC4J,QAAA,CAAA9J,EAAA,CAAIc,OAAO,CAAC;UAAA;UAAA;YAAA,OAAAgJ,QAAA,CAAA9I,IAAA;QAAA;MAAA,GAAAyI,OAAA;IAAA,CAErB;IAAA,gBApBKF,aAAaA,CAAAkB,IAAA;MAAA,OAAAjB,IAAA,CAAA1K,KAAA,OAAAC,SAAA;IAAA;EAAA,GAoBlB;;EAED;AACF;AACA;EACE,IAAM2L,mBAAmB,GAAGpM,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EACpD+F,mBAAmB,CAAC5F,YAAY,CAC9B,OAAO,+HAOT,CAAC;EACD,IAAM6F,wBAAwB,GAAGrM,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EACzDgG,wBAAwB,CAAC7F,YAAY,CACnC,OAAO,4DAKT,CAAC;EACD,IAAM8F,eAAe,GAAGtM,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC;EAClDiG,eAAe,CAACxB,SAAS,GAAG,0CAA0C;EACtEwB,eAAe,CAAC9F,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;EACpD,IAAM+F,eAAe,GAAGvM,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC;EAClDkG,eAAe,CAAC/F,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;EAC5C+F,eAAe,CAAC/F,YAAY,CAC1B,OAAO,EACP,kEACF,CAAC;EACD+F,eAAe,CAAC/F,YAAY,CAAC,aAAa,EAAE,qBAAqB,CAAC;EAClE+F,eAAe,CAACvP,KAAK,GAAG8O,YAAY,CAACU,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;EACjE,IAAMC,kBAAkB,GAAGzM,GAAG,CAACqG,aAAa,CAAC,QAAQ,CAAC;EACtDoG,kBAAkB,CAAC3B,SAAS,GAAG,IAAI;EACnC2B,kBAAkB,CAACjG,YAAY,CAAC,OAAO,EAAE,wCAAwC,CAAC;EAClFiG,kBAAkB,CAACzC,gBAAgB,CAAC,OAAO,EAAE,YAAM;IACjDiB,aAAa,CAACsB,eAAe,CAACvP,KAAK,CAAC;EACtC,CAAC,CAAC;EACFoP,mBAAmB,CAAChM,WAAW,CAACkM,eAAe,CAAC;EAChDD,wBAAwB,CAACjM,WAAW,CAACmM,eAAe,CAAC;EACrDF,wBAAwB,CAACjM,WAAW,CAACqM,kBAAkB,CAAC;EACxDL,mBAAmB,CAAChM,WAAW,CAACiM,wBAAwB,CAAC;EACzD1B,cAAc,CAACvK,WAAW,CAACgM,mBAAmB,CAAC;;EAE/C;AACF;AACA;EACE,IAAMM,qBAAqB,GAAG1M,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EACtDqG,qBAAqB,CAAClG,YAAY,CAChC,OAAO,yFAMT,CAAC;EACD,IAAMmG,iBAAiB,GAAG3M,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC;EACpDsG,iBAAiB,CAAC7B,SAAS,GAAG,mDAAmD;EACjF6B,iBAAiB,CAACnG,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;EACtDkG,qBAAqB,CAACtM,WAAW,CAACuM,iBAAiB,CAAC;EACpD,IAAAC,+BAAmB,EAAC,CAAC,CAACC,OAAO,CAAC,UAACC,UAAU,EAAK;IAC5C,IAAMC,YAAY,GAAG/M,GAAG,CAACqG,aAAa,CAAC,QAAQ,CAAC;IAChD0G,YAAY,CAACjC,SAAS,GAAGgC,UAAU,CAAC/O,IAAI;IACxCgP,YAAY,CAACvG,YAAY,CAAC,OAAO,EAAE,gCAAgC,CAAC;IACpEuG,YAAY,CAAC/C,gBAAgB,CAAC,OAAO,EAAE,YAAM;MAC3CiB,aAAa,CAAC6B,UAAU,CAAClD,GAAG,CAAC;IAC/B,CAAC,CAAC;IACF8C,qBAAqB,CAACtM,WAAW,CAAC2M,YAAY,CAAC;EACjD,CAAC,CAAC;EACFpC,cAAc,CAACvK,WAAW,CAACsM,qBAAqB,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASxM,cAAcA,CAC5BF,GAAiB,EAKJ;EAAA,IAJbgN,QAA+C,GAAAvM,SAAA,CAAA7D,MAAA,QAAA6D,SAAA,QAAA0I,SAAA,GAAA1I,SAAA,MAAG,IAAI;EAAA,IACtD6G,OAEC,GAAA7G,SAAA,CAAA7D,MAAA,QAAA6D,SAAA,QAAA0I,SAAA,GAAA1I,SAAA,MAAG,CAAC,CAAC;EAEN;EACA,IAAIrB,EAAE,GAAG,IAAA8K,yBAAa,EAAC,CAAC;EACxB;EACA,IAAMjK,GAAQ,GAAGD,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EAEzC,SAAS4G,KAAKA,CAAEC,QAAQ,EAAE;IACxB,IAAI,CAACA,QAAQ,EAAE;MACb;IACF;;IAEA;IACA;IACA9N,EAAE,GAAGC,iBAAK,CAACE,QAAQ,CAAC2N,QAAQ,CAAC;IAC7BjN,GAAG,CAACkN,OAAO,CAAC,CAAC;IACb,IAAIH,QAAQ,EAAEA,QAAQ,CAAC5N,EAAE,CAAEwK,GAAG,CAAC;EACjC;EAEA,SAASwD,mBAAmBA,CAAE/C,MAAM,EAAE;IACpC,IAAMgD,KAAK,GAAGjO,EAAE;IAChBqK,uBAAW,CAAC6D,MAAM,CAAC,CAAC,CAAC3N,IAAI,CACvB,YAAY;MACV,IAAM6C,OAAO,qBAAA1C,MAAA,CAAqBuN,KAAK,6BAA0B;MACjEjO,EAAE,GAAG,IAAI;MACT,IAAI;QACF,IAAAwC,UAAK,EAACY,OAAO,CAAC;MAChB,CAAC,CAAC,OAAOzH,CAAC,EAAE;QACV+G,MAAM,CAACF,KAAK,CAACY,OAAO,CAAC;MACvB;MACAvC,GAAG,CAACkN,OAAO,CAAC,CAAC;MACb,IAAIH,QAAQ,EAAEA,QAAQ,CAAC,IAAI,CAAC;IAC9B,CAAC,EACD,UAAC1P,GAAG,EAAK;MACP,IAAAsE,UAAK,EAAC,kBAAkB,GAAGtE,GAAG,CAAC;IACjC,CACF,CAAC;EACH;EAEA,SAASiQ,YAAYA,CAAEnO,EAAE,EAAEkI,OAAO,EAAE;IAClC,IAAM8B,iBAAiB,GAAG9B,OAAO,CAAC+B,WAAW,IAAIL,2BAA2B,CAAC,CAAC;IAC9E,IAAIwE,WAAW,GAAG,cAAc;IAChC,IAAIpO,EAAE,EAAE;MACN,IAAMqO,IAAI,GACRnP,+BAAmB,CAACD,KAAK,CAACqP,GAAG,CAACtO,EAAE,EAAE1E,EAAE,CAACiT,IAAI,CAAC,MAAM,CAAC,CAAC,IAClDrP,+BAAmB,CAACD,KAAK,CAACqP,GAAG,CAACtO,EAAE,EAAE1E,EAAE,CAACiT,IAAI,CAAC,MAAM,CAAC,CAAC;MACpD,IAAIF,IAAI,EAAE;QACRD,WAAW,GAAG,SAAS,GAAGC,IAAI,CAACzQ,KAAK;MACtC;IACF;IACA,IAAM4Q,aAAa,GAAG5N,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC;IAChD;IACAuH,aAAa,CAACpH,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC5CoH,aAAa,CAACpH,YAAY,CAAC,OAAO,EAAEgH,WAAW,CAAC;IAChDI,aAAa,CAACpH,YAAY,CAAC,OAAO,KAAA1G,MAAA,CAAKsJ,iBAAiB,4BAAyB,CAAC;IAClFwE,aAAa,CAAC5D,gBAAgB,CAAC,OAAO,EAAEoD,mBAAmB,EAAE,KAAK,CAAC;IACnE,OAAOQ,aAAa;EACtB;EAEA3N,GAAG,CAACkN,OAAO,GAAG,YAAY;IACxB,IAAMU,WAAW,GAAGpE,uBAAW,CAACqE,IAAI;IACpC,IAAID,WAAW,IAAIA,WAAW,CAACjO,KAAK,IAAIiO,WAAW,CAACE,UAAU,EAAE;MAC9D3O,EAAE,GAAGd,+BAAmB,CAACD,KAAK,CAAC2P,GAAG,CAACH,WAAW,CAACjO,KAAK,CAAC;IACvD,CAAC,MAAM;MACLR,EAAE,GAAG,IAAI;IACX;IACA,IAAKA,EAAE,IAAIa,GAAG,CAACb,EAAE,KAAKA,EAAE,CAACwK,GAAG,IAAM,CAACxK,EAAE,IAAIa,GAAG,CAACb,EAAG,EAAE;MAChDvE,OAAO,CAACoT,YAAY,CAAChO,GAAG,CAAC;MACzB,IAAIb,EAAE,EAAE;QACNa,GAAG,CAACG,WAAW,CAACmN,YAAY,CAACnO,EAAE,EAAEkI,OAAO,CAAC,CAAC;MAC5C,CAAC,MAAM;QACLrH,GAAG,CAACG,WAAW,CAAC6I,iBAAiB,CAACjJ,GAAG,EAAEiN,KAAK,EAAE3F,OAAO,CAAC,CAAC;MACzD;IACF;IACArH,GAAG,CAACb,EAAE,GAAGA,EAAE,GAAGA,EAAE,CAACwK,GAAG,GAAG,IAAI;EAC7B,CAAC;EACD3J,GAAG,CAACkN,OAAO,CAAC,CAAC;EAEb,SAASe,YAAYA,CAAA,EAAI;IACvB9O,EAAE,GAAGC,iBAAK,CAACC,WAAW,CAAC,CAAC;IACxBW,GAAG,CAACkN,OAAO,CAAC,CAAC;EACf;EACAe,YAAY,CAAC,CAAC;EAEdzE,uBAAW,CAACC,OAAO,CAACwE,YAAY,CAAC;EACjCzE,uBAAW,CAAC0E,QAAQ,CAACD,YAAY,CAAC;EAClCjO,GAAG,CAACb,EAAE,GAAG,OAAO,EAAC;EACjBa,GAAG,CAACkN,OAAO,CAAC,CAAC;EACb,OAAOlN,GAAG;AACZ;AAEAwJ,uBAAW,CAAC0E,QAAQ,mBAAAzN,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAwN,SAAA;EAAA,IAAAC,MAAA,EAAAC,YAAA,EAAAC,eAAA,EAAAC,mBAAA;EAAA,OAAA7N,YAAA,YAAAM,IAAA,UAAAwN,UAAAC,SAAA;IAAA,kBAAAA,SAAA,CAAAtN,IAAA,GAAAsN,SAAA,CAAAlR,IAAA;MAAA;QACb6Q,MAAM,GAAGvM,MAAM,CAACgK,YAAY,CAACU,OAAO,CAAC,aAAa,CAAC;QAAA,KACrD6B,MAAM;UAAAK,SAAA,CAAAlR,IAAA;UAAA;QAAA;QAAAkR,SAAA,CAAAtN,IAAA;QAEN;QACA9C,+BAAmB,CAACD,KAAK,CAACoN,OAAO,CAACC,yBAAyB,CAAC,CAAC;QAEvD4C,YAAY,GAAG,IAAI3C,GAAG,CAAC0C,MAAM,CAAC;QACpCC,YAAY,CAACK,QAAQ,GAAG,mCAAmC;QAAAD,SAAA,CAAAlR,IAAA;QAAA,OAC7BoR,KAAK,CAACN,YAAY,CAAC1Q,QAAQ,CAAC,CAAC,CAAC;MAAA;QAAtD2Q,eAAe,GAAAG,SAAA,CAAAnN,IAAA;QAAA,MACjBgN,eAAe,CAAChM,MAAM,KAAK,GAAG;UAAAmM,SAAA,CAAAlR,IAAA;UAAA;QAAA;QAAAkR,SAAA,CAAAlR,IAAA;QAAA,OACE+Q,eAAe,CAACM,IAAI,CAAC,CAAC;MAAA;QAAlDL,mBAAmB,GAAAE,SAAA,CAAAnN,IAAA;QAAA,MACrBiN,mBAAmB,IAAIA,mBAAmB,CAACM,oBAAoB;UAAAJ,SAAA,CAAAlR,IAAA;UAAA;QAAA;QAAAkR,SAAA,CAAAlR,IAAA;QAAA,OAC3DoR,KAAK,CAACJ,mBAAmB,CAACM,oBAAoB,EAAE;UAAEC,WAAW,EAAE;QAAU,CAAC,CAAC;MAAA;QAAAL,SAAA,CAAAlR,IAAA;QAAA;MAAA;QAAAkR,SAAA,CAAAtN,IAAA;QAAAsN,SAAA,CAAAhN,EAAA,GAAAgN,SAAA;MAAA;QAOzF5M,MAAM,CAACC,QAAQ,CAACiN,MAAM,CAAC,CAAC;MAAA;MAAA;QAAA,OAAAN,SAAA,CAAAhM,IAAA;IAAA;EAAA,GAAA0L,QAAA;AAAA,CACzB,GAAC;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASa,eAAeA,CAC7BjP,GAAiB,EACjBkP,UAAsB,EACtBC,UAA+D,EAClD;EACb,IAAMtJ,IAAI,GAAGqJ,UAAU,CAACrJ,IAAI;EAC5B,IAAMuJ,cAAc,GAAGF,UAAU,CAACE,cAAc;EAEhD,IAAMhQ,EAAE,GAAG,IAAA8K,yBAAa,EAAC,CAAC;EAC1B,IAAMjK,GAAG,GAAGD,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EACpC,IAAMlH,OAA8B,GAAG;IAAEC,EAAE,EAAFA,EAAE;IAAEY,GAAG,EAAHA,GAAG;IAAED,GAAG,EAAEE;EAAI,CAAC;EAE5D,SAASoP,GAAGA,CAAEvS,CAAC,EAAEwS,UAAU,EAAE;IAC3BrP,GAAG,CAACG,WAAW,CAACvF,OAAO,CAACqI,iBAAiB,CAAClD,GAAG,EAAElD,CAAC,EAAEwS,UAAU,CAAC,CAAC;EAChE;EAEA,SAASC,aAAaA,CAAEC,EAAE,EAAE;IAC1B,IAAMC,WAAsB,GAAGnR,+BAAmB,CAACD,KAAK,CAACqP,GAAG,CAC1D8B,EAAE,EACF9U,EAAE,CAACgV,KAAK,CAAC,WAAW,CACtB,CAAc;IACd,IAAIC,aAAqB;IACzB,IAAI,CAACF,WAAW,EAAE;MAChBE,aAAa,GAAGH,EAAE,CAAC5F,GAAG,CAACgG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,MAAM;MACLD,aAAa,GAAGF,WAAW,CAACzS,KAAK;IACnC;IACA,IAAI2S,aAAa,CAAC9R,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACnCvD,KAAK,CAACuF,GAAG,IAAAC,MAAA,CAAIsP,cAAc,iCAAAtP,MAAA,CAA8B6P,aAAa,CAAE,CAAC,EAAC;MAC1EA,aAAa,MAAA7P,MAAA,CAAM6P,aAAa,MAAG;IACrC;IACA,IAAME,GAAG,GAAG,IAAIC,IAAI,CAAC,CAAC;IACtBH,aAAa,OAAA7P,MAAA,CAAOsP,cAAc,SAAAtP,MAAA,CAAM+P,GAAG,CAACE,OAAO,CAAC,CAAC,MAAG,EAAC;IACzD,OAAOJ,aAAa;EACtB;EAEA,SAASK,cAAcA,CAAE7Q,OAAO,EAAE;IAChC;IAAA,SACe8Q,gBAAgBA,CAAAC,IAAA;MAAA,OAAAC,iBAAA,CAAA3P,KAAA,OAAAC,SAAA;IAAA,EAiC/B;IAAA,SAAA0P,kBAAA;MAAAA,iBAAA,OAAAzP,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAjCA,SAAAwP,SAAiC/F,MAAM;QAAA,IAAA9E,GAAA,EAAAsB,IAAA,EAAAwJ,OAAA,EAAAC,KAAA,EAAAC,OAAA;QAAA,OAAA5P,YAAA,YAAAM,IAAA,UAAAuP,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAArP,IAAA,GAAAqP,SAAA,CAAAjT,IAAA;YAAA;cAC/B+H,GAAG,GAAGgC,KAAK,CAACnH,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC,CAAC;cAChDQ,IAAI,GAAGtB,GAAG,CAACnF,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC,CAAC;cACrDQ,IAAI,CAACL,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC;cACjCK,IAAI,CAACrM,KAAK,CAACkW,OAAO,GAAG,OAAO;cAAAD,SAAA,CAAA/O,EAAA,GACZiP,SAAS;cAAAF,SAAA,CAAAjT,IAAA;cAAA,OACjB3C,OAAO,CAAC+V,OAAO,CACnB5Q,GAAG,EACH1B,+BAAmB,CAACD,KAAK,EACzBwI,IAAI,EACJnM,EAAE,CAAC0L,KAAK,CAAC,KAAK,CAAC,EACf1L,EAAE,CAACgV,KAAK,CAAC,WAAW,CAAC,EACrB,WACF,CAAC;YAAA;cAAAe,SAAA,CAAA5H,EAAA,GAAA4H,SAAA,CAAAlP,IAAA;cARG8O,OAAO,OAAAI,SAAA,CAAA/O,EAAA,EAAA+O,SAAA,CAAA5H,EAAA;cAUPyH,KAAK,GAAGzV,OAAO,CAACqL,QAAQ,CAAC/G,OAAO,CAAC4B,eAAe,CAAC;cACjDwP,OAAO,GAAG,CACd,IAAApK,UAAE,EAAChH,OAAO,CAACC,EAAE,EAAE1E,EAAE,CAACgV,KAAK,CAAC,WAAW,CAAC,EAAEY,KAAK,EAAEnR,OAAO,CAAC4B,eAAe,CAAC;cACrE;cACA,IAAAoF,UAAE,EACAmK,KAAK,EACL5V,EAAE,CAACgV,KAAK,CAAC,WAAW,CAAC,EACrBW,OAAO,EACPlR,OAAO,CAAC4B,eACV,CAAC,CACF;cAAA,IACIzC,+BAAmB,CAACD,KAAK,CAACoN,OAAO;gBAAAgF,SAAA,CAAAjT,IAAA;gBAAA;cAAA;cAAA,MAC9B,IAAIiF,KAAK,CAAC,sBAAsB,CAAC;YAAA;cAAAgO,SAAA,CAAAjT,IAAA;cAAA,OAEnCc,+BAAmB,CAACD,KAAK,CAACoN,OAAO,CAACoF,MAAM,CAAC,EAAE,EAAEN,OAAO,CAAC;YAAA;YAAA;cAAA,OAAAE,SAAA,CAAA/N,IAAA;UAAA;QAAA,GAAA0N,QAAA;MAAA,CAE5D;MAAA,OAAAD,iBAAA,CAAA3P,KAAA,OAAAC,SAAA;IAAA;IAGD,IAAMqQ,EAAE,GAAG3R,OAAO,CAACC,EAAE;IACrB,IAAM2B,eAAe,GAAG5B,OAAO,CAAC4B,eAAe;IAC/C,IAAIsP,OAAY,GAAG,IAAI;;IAEvB;IACA,IAAIU,CAAM,GAAGzS,+BAAmB,CAACD,KAAK,CAAC2S,IAAI,CACzCF,EAAE,EACFpW,EAAE,CAACgV,KAAK,CAAC,WAAW,CAAC,EACrBvG,SAAS,EACTpI,eACF,CAAC,EAAC;;IAEF;IACA,IAAMkQ,QAAQ,GAAG3S,+BAAmB,CAACD,KAAK,CAAC2S,IAAI,CAACF,EAAE,EAAEpW,EAAE,CAACgV,KAAK,CAAC,SAAS,CAAC,CAAC,EAAC;IACzE,IAAIqB,CAAC,CAACnU,MAAM,KAAK,CAAC,IAAIqU,QAAQ,EAAE;MAC9B5B,GAAG,oDAAAvP,MAAA,CACkDmR,QAAQ,CAACrU,MAAM,uBAClE,OACF,CAAC;MACDqU,QAAQ,CACL9M,GAAG,CAAC,UAAUrH,CAAM,EAAE;QACrBiU,CAAC,GAAGA,CAAC,CAACjR,MAAM,CAACxB,+BAAmB,CAACD,KAAK,CAAC2S,IAAI,CAAClU,CAAC,EAAEpC,EAAE,CAACwW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACnE,OAAOH,CAAC;MACV,CAAC,CAAC,CACDjN,MAAM,CAAC,UAACqN,IAAI,EAAK;QAChB,OAAOA,IAAI,CAACL,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAACM,QAAQ,CAACD,IAAI,CAACL,EAAE,CAAC,CAAC,CAACO,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE;MAC/E,CAAC,CAAC;IACN;IAEA,IAAIN,CAAC,CAACnU,MAAM,KAAK,CAAC,EAAE;MAClByS,GAAG,oBAAAvP,MAAA,CAAoBiR,CAAC,CAAC,CAAC,CAAC,CAACnH,GAAG,GAAI,OAAO,CAAC,EAAC;MAC5CyG,OAAO,GAAGd,aAAa,CAACwB,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7B;MACA;IACF;;IAEA;IACA;IACA,IAAMxJ,KAAK,GAAGvH,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC;IACxCkB,KAAK,CAACf,YAAY,CAAC,OAAO,EAAE,kDAAkD,CAAC;;IAE/E;IACAvG,GAAG,CAACG,WAAW,CAACmH,KAAK,CAAC;;IAEtB;;IAEA;IACAtH,GAAG,CAACG,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAC;;IAEzC,IAAMiL,CAAC,GAAGrR,GAAG,CAACG,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjDiL,CAAC,CAAC9K,YAAY,CAAC,OAAO,EAAEhM,KAAK,CAAC+W,YAAY,CAAC;IAC3CD,CAAC,CAAC/K,WAAW,qDAAAzG,MAAA,CAAqD+F,IAAI,+IAER;IAC9D;IACA,IAAM2L,SAAc,GAAGvR,GAAG,CAACG,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,OAAO,CAAC,CAAC;IAClEmL,SAAS,CAAChL,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IACtCgL,SAAS,CAAChL,YAAY,CAAC,OAAO,EAAEhM,KAAK,CAACiX,cAAc,CAAC;IACrDD,SAAS,CAACE,IAAI,GAAG,EAAE,EAAC;IACpBF,SAAS,CAACvN,KAAK,GAAG,UAAU;IAC5BuN,SAAS,CAACG,YAAY,GAAG,IAAI;IAC7B,IAAItB,OAAO,EAAE;MACX;MACAmB,SAAS,CAACxU,KAAK,GAAGqT,OAAO;IAC3B;IAEAlR,OAAO,CAACqS,SAAS,GAAGA,SAAS;IAE7BvR,GAAG,CAACG,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC,CAAC,EAAC;;IAEzC,IAAMuL,MAAM,GAAG3R,GAAG,CAACG,WAAW,CAACJ,GAAG,CAACqG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3DuL,MAAM,CAACpL,YAAY,CAAC,OAAO,EAAEhM,KAAK,CAAC6O,WAAW,CAAC;IAC/CuI,MAAM,CAACrL,WAAW,gBAAAzG,MAAA,CAAgB+F,IAAI,iBAAc;IACpD+L,MAAM,CAAC5H,gBAAgB,CAAC,OAAO,EAAE,UAAUK,MAAM,EAAE;MACjD,IAAIgG,OAAO,GAAGmB,SAAS,CAACxU,KAAK,CAAC6U,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAC;MAClD,IAAIxB,OAAO,CAACxS,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAC7BwS,OAAO,IAAI,GAAG;MAChB;MACAlB,UAAU,CAAC,IAAI,EAAEkB,OAAO,CAAC;IAC3B,CAAC,CAAC;;IAEF;;IAEA;IACAU,CAAC,GAAGA,CAAC,CAACjN,MAAM,CAAC,UAAUgO,CAAC,EAAE;MACxB,OAAO,CAACxT,+BAAmB,CAACD,KAAK,CAAC0T,KAAK,CACrCD,CAAC,EACDpX,EAAE,CAACsX,GAAG,CAAC,MAAM,CAAC;MAAE;MAChBtX,EAAE,CAACgV,KAAK,CAAC,iBAAiB,CAC5B,CAAC;IACH,CAAC,CAAC;IACF,IAAIuC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,EAAE,EAAE5C,EAAE,EAAE6C,UAAU,EAAEC,OAAO;IACjD,IAAMC,SAAS,GAAG,qEAAqE;IACvF,IAAMC,eAAe,MAAA1S,MAAA,CAAMyS,SAAS,iBAAc;IAClD;IACA,KAAK,IAAItW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8U,CAAC,CAACnU,MAAM,EAAEX,CAAC,EAAE,EAAE;MACjCuT,EAAE,GAAGuB,CAAC,CAAC9U,CAAC,CAAC;MACTmW,EAAE,GAAGpS,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC;MAC5B,IAAIpK,CAAC,KAAK,CAAC,EAAE;QACXgW,IAAI,GAAGjS,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC;QAC9B4L,IAAI,CAACzL,YAAY,CAAC,SAAS,KAAA1G,MAAA,CAAKiR,CAAC,CAACnU,MAAM,CAAE,CAAC;QAC3CqV,IAAI,CAAC1L,WAAW,GAAG,8BAA8B;QACjD0L,IAAI,CAACzL,YAAY,CAAC,OAAO,EAAE,wBAAwB,CAAC;QACpD4L,EAAE,CAAChS,WAAW,CAAC6R,IAAI,CAAC;MACtB;MACAC,IAAI,GAAGlS,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC;MAC9BgM,UAAU,GAAG/T,+BAAmB,CAACD,KAAK,CAACoU,QAAQ,CAACjD,EAAE,EAAE9U,EAAE,CAACgY,EAAE,CAAC,OAAO,CAAC,CAAC;MACnE,IAAI,CAACL,UAAU,EAAE;QACf;QACA,IAAMxG,IAAI,GAAG,SAAPA,IAAIA,CAAaiG,CAAC,EAAE;UACxB,OAAOA,CAAC,CAAClC,KAAK,CAAC,EAAE,CAAC,CAAC+C,MAAM,CAAC,UAAUlX,CAAC,EAAEmX,CAAC,EAAE;YACxCnX,CAAC,GAAG,CAACA,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAGmX,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC;YAClC,OAAOpX,CAAC,GAAGA,CAAC;UACd,CAAC,EAAE,CAAC,CAAC;QACP,CAAC;QACD,IAAMqX,OAAO,OAAAhT,MAAA,CAAO,CAAE+L,IAAI,CAAC2D,EAAE,CAAC5F,GAAG,CAAC,GAAG,QAAQ,GAAI,QAAQ,EAAEhM,QAAQ,CAAC,EAAE,CAAC,CAAE,EAAC;QAC1EyU,UAAU,uCAAAvS,MAAA,CAAuCgT,OAAO,MAAG;MAC7D;MACAZ,IAAI,CAAC1L,YAAY,CAAC,OAAO,EAAEgM,eAAe,GAAGH,UAAU,CAAC;MACxDD,EAAE,CAACW,MAAM,GAAGvD,EAAE,CAAC5F,GAAG;MAClB,IAAI3F,KAAK,GAAG3F,+BAAmB,CAACD,KAAK,CAACqP,GAAG,CAAC8B,EAAE,EAAE9U,EAAE,CAACsY,IAAI,CAAC,OAAO,CAAC,CAAC;MAC/D,IAAI,CAAC/O,KAAK,EAAE;QACVA,KAAK,GAAGuL,EAAE,CAAC5F,GAAG,CAACgG,KAAK,CAAC,GAAG,CAAC,CAAC/R,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI2R,EAAE,CAAC5F,GAAG,CAACgG,KAAK,CAAC,GAAG,CAAC,CAAC/R,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC1E;MACAqU,IAAI,CAAC3L,WAAW,GAAGtC,KAAK,IAAI,KAAK;MACjCmO,EAAE,CAAChS,WAAW,CAAC8R,IAAI,CAAC;MACpB,IAAIjW,CAAC,KAAK,CAAC,EAAE;QACXkW,IAAI,GAAGnS,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC;QAC9B8L,IAAI,CAAC3L,YAAY,CAAC,SAAS,KAAA1G,MAAA,CAAKiR,CAAC,CAACnU,MAAM,MAAG,CAAC;QAC5C;QACAuV,IAAI,CAAC3L,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC;QACxC4L,EAAE,CAAChS,WAAW,CAAC+R,IAAI,CAAC;MACtB;MACA5K,KAAK,CAACnH,WAAW,CAACgS,EAAE,CAAC;MAErBE,OAAO,GAAGhU,+BAAmB,CAACD,KAAK,CAACqP,GAAG,CAAC8B,EAAE,EAAE9U,EAAE,CAACsY,IAAI,CAAC,SAAS,CAAC,CAAC;MAC/DV,OAAO,GAAGA,OAAO,GAAGA,OAAO,CAACtV,KAAK,GAAG,oBAAoB;MACxDkV,IAAI,CAAClI,gBAAgB,CACnB,OAAO,EACP,UAAUK,MAAM,EAAE;QAChB8H,IAAI,CAAC5L,WAAW,GAAG+L,OAAO,GAAGA,OAAO,CAACtV,KAAK,GAAG,EAAE;QAC/CmV,IAAI,CAAC3L,YAAY,CAAC,OAAO,EAAEgM,eAAe,GAAGH,UAAU,CAAC;QACxD,IAAMT,MAAM,GAAG5R,GAAG,CAACqG,aAAa,CAAC,QAAQ,CAAC;QAC1CuL,MAAM,CAACrL,WAAW,GAAG,UAAU;QAC/B;QACA,IAAM8J,OAAO,GAAGd,aAAa,CAACC,EAAE,CAAC;QACjCgC,SAAS,CAACxU,KAAK,GAAGqT,OAAO,EAAC;;QAE1BuB,MAAM,CAAC5H,gBAAgB,CACrB,OAAO,EACP,UAAUK,MAAM,EAAE;UAChBuH,MAAM,CAACqB,QAAQ,GAAG,IAAI;UACtB9D,UAAU,CAACK,EAAE,EAAEa,OAAO,CAAC;UACvBuB,MAAM,CAACrL,WAAW,GAAG,OAAO;QAC9B,CAAC,EACD,IACF,CAAC,EAAC;QACF4L,IAAI,CAAC/R,WAAW,CAACwR,MAAM,CAAC;MAC1B,CAAC,EACD,IACF,CAAC,EAAC;IACJ;;IAEA;IACA,IAAMsB,MAAM,GAAGlT,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC;IACtC6L,IAAI,GAAGlS,GAAG,CAACqG,aAAa,CAAC,IAAI,CAAC;IAC9B6L,IAAI,CAAC1L,YAAY,CAAC,OAAO,EAAE+L,SAAS,CAAC;IACrCL,IAAI,CAAC3L,WAAW,GAAG,wBAAwB;IAC3C2L,IAAI,CAAClI,gBAAgB,CAAC,OAAO,EAAEiG,gBAAgB,CAAC;IAChDiD,MAAM,CAAC9S,WAAW,CAAC8R,IAAI,CAAC;IACxB3K,KAAK,CAACnH,WAAW,CAAC8S,MAAM,CAAC;EAC3B,CAAC,CAAC;;EAEF;EACA7S,uBAAuB,CAAClB,OAAO,CAAC,CAAC;EAAA,CAC9BQ,IAAI,CAACqQ,cAAc,CAAC,SACf,CAAC,UAAC1S,GAAG,EAAK;IACd;IACA2C,GAAG,CAACG,WAAW,CAACvF,OAAO,CAACqI,iBAAiB,CAAC/D,OAAO,CAACa,GAAG,EAAE1C,GAAG,CAAC,CAAC;EAC9D,CAAC,CAAC;EAEJ,OAAO2C,GAAG,EAAC;AACb,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkT,cAAcA,CAC5BnT,GAAiB,EACjBkP,UAAsB,EACtBkE,QAA6D,EAChD;EACb,IAAMC,KAAK,GAAG,SAARA,KAAKA,CAAa7D,EAAE,EAAE8D,IAAI,EAAE;IAChC;IACAF,QAAQ,CAAC5D,EAAE,EAAE8D,IAAI,CAAC;EACpB,CAAC;EACD,IAAMvT,GAAG,GAAGC,GAAG,CAACqG,aAAa,CAAC,KAAK,CAAC;EACpC,IAAMuM,CAAC,GAAG5S,GAAG,CAACqG,aAAa,CAAC,QAAQ,CAAC;EACrCuM,CAAC,CAACpM,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;EAChCzG,GAAG,CAACK,WAAW,CAACwS,CAAC,CAAC;EAClBA,CAAC,CAACtM,SAAS,eAAAxG,MAAA,CAAeoP,UAAU,CAACrJ,IAAI,CAAE;EAC3C+M,CAAC,CAAC5I,gBAAgB,CAChB,OAAO,EACP,UAACK,MAAM,EAAK;IACVtK,GAAG,CAACK,WAAW,CAAC6O,eAAe,CAACjP,GAAG,EAAEkP,UAAU,EAAEmE,KAAK,CAAC,CAAC;EAC1D,CAAC,EACD,KACF,CAAC;EACDtT,GAAG,CAACK,WAAW,CAACwS,CAAC,CAAC;EAClB,OAAO7S,GAAG;AACZ;AACA;AACA;AACA;AACA;AAHA,SAIsBwT,YAAYA,CAAA;EAAA,OAAAC,aAAA,CAAAhT,KAAA,OAAAC,SAAA;AAAA;AAkBlC;AACA;AACA;AAFA,SAAA+S,cAAA;EAAAA,aAAA,OAAA9S,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAlBO,SAAA6S,UAAA;IAAA,IAAAC,qBAAA,EAAAtU,EAAA,EAAA2B,eAAA,EAAAkB,oBAAA;IAAA,OAAAtB,YAAA,YAAAM,IAAA,UAAA0S,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAxS,IAAA,GAAAwS,UAAA,CAAApW,IAAA;QAAA;UAAAoW,UAAA,CAAAxS,IAAA;UAAAwS,UAAA,CAAApW,IAAA;UAAA,OAEyD6C,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAAA;UAAAqT,qBAAA,GAAAE,UAAA,CAAArS,IAAA;UAA/EnC,EAAE,GAAAsU,qBAAA,CAAFtU,EAAE;UAAE2B,eAAe,GAAA2S,qBAAA,CAAf3S,eAAe;UAAEkB,oBAAoB,GAAAyR,qBAAA,CAApBzR,oBAAoB;UAAA,MAC7C,CAAClB,eAAe,IAAIkB,oBAAoB;YAAA2R,UAAA,CAAApW,IAAA;YAAA;UAAA;UAAA,MACpC,IAAIiF,KAAK,CAACR,oBAAoB,CAAC;QAAA;UAAA,OAAA2R,UAAA,CAAAvS,MAAA,WAEhC/C,+BAAmB,CAACD,KAAK,CAAC2S,IAAI,CACnC5R,EAAE,EACF1E,EAAE,CAACsX,GAAG,CAAC,MAAM,CAAC,EACd,IAAI,EACJjR,eAAe,CAAC8S,GAAG,CAAC,CACtB,CAAC;QAAA;UAAAD,UAAA,CAAAxS,IAAA;UAAAwS,UAAA,CAAAlS,EAAA,GAAAkS,UAAA;UAEDtZ,KAAK,CAAC6H,IAAI,CAAC,yDAAyD,EAAAyR,UAAA,CAAAlS,EAAO,CAAC;QAAA;UAAA,OAAAkS,UAAA,CAAAvS,MAAA,WAEvE,EAAE;QAAA;QAAA;UAAA,OAAAuS,UAAA,CAAAlR,IAAA;MAAA;IAAA,GAAA+Q,SAAA;EAAA,CACV;EAAA,OAAAD,aAAA,CAAAhT,KAAA,OAAAC,SAAA;AAAA;AAAA,SAKqBqT,oBAAoBA,CAAAC,IAAA;EAAA,OAAAC,qBAAA,CAAAxT,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAuT,sBAAA;EAAAA,qBAAA,OAAAtT,kBAAA,2BAAAC,YAAA,YAAAC,IAAA,CAAnC,SAAAqT,UACLC,KAA4B;IAAA,IAAAC,SAAA;IAAA,OAAAxT,YAAA,YAAAM,IAAA,UAAAmT,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAjT,IAAA,GAAAiT,UAAA,CAAA7W,IAAA;QAAA;UAAA6W,UAAA,CAAA7W,IAAA;UAAA,OAEJ+V,YAAY,CAAC,CAAC;QAAA;UAAhCY,SAAS,GAAAE,UAAA,CAAA9S,IAAA;UAAA,OAAA8S,UAAA,CAAAhT,MAAA,WACR6S,KAAK,CAACpQ,MAAM,CAAC,UAACwQ,IAAI;YAAA,OAAKC,kBAAkB,CAACD,IAAI,EAAEH,SAAS,CAAC;UAAA,EAAC;QAAA;QAAA;UAAA,OAAAE,UAAA,CAAA3R,IAAA;MAAA;IAAA,GAAAuR,SAAA;EAAA,CACnE;EAAA,OAAAD,qBAAA,CAAAxT,KAAA,OAAAC,SAAA;AAAA;AAED,SAAS8T,kBAAkBA,CAAED,IAAoB,EAAEH,SAA2B,EAAW;EACvF,IAAMK,QAAQ,GAAGF,IAAI,CAACE,QAAQ,IAAI,EAAE;EACpC,OAAOA,QAAQ,CAAC7B,MAAM,CACpB,UAAC8B,OAAO,EAAEC,YAAY;IAAA,OAAKD,OAAO,IAAI,CAAC,CAACN,SAAS,CAACQ,IAAI,CAAC,UAACC,IAAI;MAAA,OAAKA,IAAI,CAACC,MAAM,CAACH,YAAY,CAAC;IAAA,EAAC;EAAA,GAC3F,IACF,CAAC;AACH"}
1
+ {"version":3,"file":"login.js","names":["_rdflib","require","_solidLogic","debug","_interopRequireWildcard","style","_log","ns","_signup","utils","widgets","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","F","s","done","value","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","store","solidLogicSingleton","_solidLogicSingleton$","profile","loadPreferences","loadProfile","_solidLogicSingleton$2","typeIndex","getScopedAppInstances","getRegistrations","loadAllTypeIndexes","getScopedAppsFromIndex","deleteTypeIndexRegistration","ensureLoggedIn","context","me","authn","currentUser","saveUser","Promise","resolve","checkUser","then","webId","log","concat","div","dom","box","loginStatusBox","webIdUri","appendChild","ensureLoadedPreferences","_x","_ensureLoadedPreferences","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee4","progressDisplay","preferencesFile","m2","wrap","_callee4$","_context4","prev","abrupt","ensureLoadedProfile","sent","parentNode","removeChild","t0","UnauthorizedError","alert","CrossOriginForbiddenError","window","location","origin","preferencesFileError","SameOriginForbiddenError","warn","NotEditableError","WebOperationError","FetchError","status","message","Error","stop","_x2","_ensureLoadedProfile","_callee5","logInContext","_callee5$","_context5","publicProfile","errorMessageBlock","findAppInstances","_x3","_x4","_x5","_findAppInstances","_callee6","theClass","isPublic","items","_callee6$","_context6","filter","item","scope","label","instances","map","instance","scopeLabel","mine","sameTerm","agent","registrationControl","_x6","_x7","_x8","_registrationControl","_callee7","registrationStatements","renderScopeCheckbox","scopes","msg","tbody","form","_iterator","_step","row","_callee7$","_context7","_renderScopeCheckbox","statements","index","noun","buildCheckboxForm","_registrationStatemen","registrations","reg","newThing","st","solid","createElement","innerHTML","textContent","setAttribute","children","BlankNode","renderScopeHeadingRow","backgroundColor","cell","backgoundColor","header","textAlign","registrationList","_x9","_x10","_registrationList","_callee9","options","table","_iterator2","_step2","headingRow","_iterator3","_step3","_loop","_callee9$","_context10","firstChild","type","display","_loop$","_context9","personTR","deleteFunction","_deleteFunction","_callee8","_callee8$","_context8","paddingLeft","delegateYield","t1","finish","t2","signInOrSignUpBox","setUserCallback","undefined","signInButtonStyle","buttonStyle","signInAndUpButtonStyle","magicClassName","signInPopUpButton","headerBannerLoginInput","signUpBackground","authSession","onLogin","webIdURI","uri","divs","getElementsByClassName","parent","addEventListener","offline","offlineTestID","renderSignInPopup","signupButton","signInBackground","_event","signupMgr","Signup","signup","issuerPopup","body","issuerPopupBox","issuerPopupBoxTopMenu","issuerPopupBoxLabel","innerText","issuerPopupBoxCloseButton","remove","loginToIssuer","_ref","_callee","issuerUri","preLoginRedirectHash","locationUrl","_callee$","_context","updater","flagAuthorizationMetadata","URL","href","hash","localStorage","setItem","login","redirectUrl","oidcIssuer","_x11","issuerTextContainer","issuerTextInputContainer","issuerTextLabel","issuerTextInput","getItem","issuerTextGoButton","issuerButtonContainer","issuerBottonLabel","getSuggestedIssuers","forEach","issuerInfo","issuerButton","listener","setIt","newidURI","refresh","logoutButtonHandler","oldMe","logout","logoutButton","logoutLabel","nick","any","foaf","signOutButton","sessionInfo","info","isLoggedIn","sym","clearElement","trackSession","onLogout","_callee2","issuer","wellKnownUri","wellKnownResult","openidConfiguration","_callee2$","_context2","pathname","fetch","json","end_session_endpoint","credentials","reload","selectWorkspace","appDetails","callbackWS","appPathSegment","say","background","figureOutBase","ws","newBaseNode","space","newBaseString","split","now","Date","getTime","displayOptions","makeNewWorkspace","_x12","_makeNewWorkspace","_callee3","newBase","newWs","newData","_callee3$","_context3","padding","encodeURI","askName","update","id","w","each","storages","ldp","file","includes","toLowerCase","p","commentStyle","baseField","textInputStyle","size","autocomplete","button","replace","x","holds","rdf","col1","col2","col3","tr","localStyle","comment","cellStyle","deselectedStyle","anyValue","ui","reduce","b","charCodeAt","bgcolor","target","rdfs","disabled","trLast","newAppInstance","callback","gotWS","base","getUserRoles","_getUserRoles","_callee10","_yield$ensureLoadedPr","_callee10$","_context11","doc","filterAvailablePanes","_x13","_filterAvailablePanes","_callee11","panes","userRoles","_callee11$","_context12","pane","isMatchingAudience","audience","isMatch","audienceRole","find","role","equals"],"sources":["../../src/login/login.ts"],"sourcesContent":["/* eslint-disable camelcase */\n/**\n * Signing in, signing up, profile and preferences reloading\n * Type index management\n *\n * Many functions in this module take a context object which\n * holds various RDF symbols, add to it, and return a promise of it.\n *\n * * `me` RDF symbol for the user's WebID\n * * `publicProfile` The user's public profile, iff loaded\n * * `preferencesFile` The user's personal preference file, iff loaded\n * * `index.public` The user's public type index file\n * * `index.private` The user's private type index file\n *\n * Not RDF symbols:\n * * `noun` A string in english for the type of thing -- like \"address book\"\n * * `instance` An array of nodes which are existing instances\n * * `containers` An array of nodes of containers of instances\n * * `div` A DOM element where UI can be displayed\n * * `statusArea` A DOM element (opt) progress stuff can be displayed, or error messages\n * *\n * * Vocabulary: \"load\" loads a file if it exists;\n * * 'Ensure\" CREATES the file if it does not exist (if it can) and then loads it.\n * @packageDocumentation\n */\nimport { PaneDefinition } from 'pane-registry'\nimport { BlankNode, NamedNode, st } from 'rdflib'\n// eslint-disable-next-line camelcase\nimport { Quad_Object } from 'rdflib/lib/tf-types'\nimport {\n AppDetails,\n AuthenticationContext,\n authn,\n authSession,\n CrossOriginForbiddenError,\n FetchError,\n getSuggestedIssuers,\n NotEditableError,\n offlineTestID,\n SameOriginForbiddenError,\n solidLogicSingleton,\n UnauthorizedError,\n WebOperationError\n} from 'solid-logic'\nimport * as debug from '../debug'\nimport * as style from '../style'\nimport { alert } from '../log'\nimport * as ns from '../ns.js'\nimport { Signup } from '../signup/signup.js'\nimport * as utils from '../utils'\nimport * as widgets from '../widgets'\n\nconst store = solidLogicSingleton.store\n\nconst {\n loadPreferences,\n loadProfile\n} = solidLogicSingleton.profile\n\nconst {\n getScopedAppInstances,\n getRegistrations,\n loadAllTypeIndexes,\n getScopedAppsFromIndex,\n deleteTypeIndexRegistration\n} = solidLogicSingleton.typeIndex\n\n/**\n * Resolves with the logged in user's WebID\n *\n * @param context\n */\n// used to be logIn\nexport function ensureLoggedIn (context: AuthenticationContext): Promise<AuthenticationContext> {\n const me = authn.currentUser()\n if (me) {\n authn.saveUser(me, context)\n return Promise.resolve(context)\n }\n\n return new Promise((resolve) => {\n authn.checkUser().then((webId) => {\n // Already logged in?\n if (webId) {\n debug.log(`logIn: Already logged in as ${webId}`)\n return resolve(context)\n }\n if (!context.div || !context.dom) {\n return resolve(context)\n }\n const box = loginStatusBox(context.dom, (webIdUri) => {\n authn.saveUser(webIdUri, context)\n resolve(context) // always pass growing context\n })\n context.div.appendChild(box)\n })\n })\n}\n\n/**\n * Loads preference file\n * Do this after having done log in and load profile\n *\n * @private\n *\n * @param context\n */\n// used to be logInLoadPreferences\nexport async function ensureLoadedPreferences (\n context: AuthenticationContext\n): Promise<AuthenticationContext> {\n if (context.preferencesFile) return Promise.resolve(context) // already done\n\n // const statusArea = context.statusArea || context.div || null\n let progressDisplay\n /* COMPLAIN FUNCTION NOT USED/TAKING IT OUT FOR NOW\n function complain (message) {\n message = `ensureLoadedPreferences: ${message}`\n if (statusArea) {\n // statusArea.innerHTML = ''\n statusArea.appendChild(widgets.errorMessageBlock(context.dom, message))\n }\n debug.log(message)\n // reject(new Error(message))\n } */\n try {\n context = await ensureLoadedProfile(context)\n\n // console.log('back in Solid UI after logInLoadProfile', context)\n const preferencesFile = await loadPreferences(context.me as NamedNode)\n if (progressDisplay) {\n progressDisplay.parentNode.removeChild(progressDisplay)\n }\n context.preferencesFile = preferencesFile\n } catch (err) {\n let m2: string\n if (err instanceof UnauthorizedError) {\n m2 =\n 'Ooops - you are not authenticated (properly logged in) to for me to read your preference file. Try loggin out and logging in?'\n alert(m2)\n } else if (err instanceof CrossOriginForbiddenError) {\n m2 = `Unauthorized: Assuming preference file blocked for origin ${window.location.origin}`\n context.preferencesFileError = m2\n return context\n } else if (err instanceof SameOriginForbiddenError) {\n m2 =\n 'You are not authorized to read your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n return context\n } else if (err instanceof NotEditableError) {\n m2 =\n 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n return context\n } else if (err instanceof WebOperationError) {\n m2 =\n 'You are not authorized to edit your preference file. This may be because you are using an untrusted web app.'\n debug.warn(m2)\n } else if (err instanceof FetchError) {\n m2 = `Strange: Error ${err.status} trying to read your preference file.${err.message}`\n alert(m2)\n } else {\n throw new Error(`(via loadPrefs) ${err}`)\n }\n }\n return context\n}\n\n/**\n * Logs the user in and loads their WebID profile document into the store\n *\n * @param context\n *\n * @returns Resolves with the context after login / fetch\n */\n// used to be logInLoadProfile\nexport async function ensureLoadedProfile (\n context: AuthenticationContext\n): Promise<AuthenticationContext> {\n if (context.publicProfile) {\n return context\n } // already done\n try {\n const logInContext = await ensureLoggedIn(context)\n if (!logInContext.me) {\n throw new Error('Could not log in')\n }\n context.publicProfile = await loadProfile(logInContext.me)\n } catch (err) {\n if (context.div && context.dom) {\n context.div.appendChild(widgets.errorMessageBlock(context.dom, err.message))\n }\n throw new Error(`Can't log in: ${err}`)\n }\n return context\n}\n\n/**\n * Returns promise of context with arrays of symbols\n *\n * leaving the `isPublic` param undefined will bring in community index things, too\n */\nexport async function findAppInstances (\n context: AuthenticationContext,\n theClass: NamedNode,\n isPublic?: boolean\n): Promise<AuthenticationContext> {\n let items = context.me ? await getScopedAppInstances(theClass, context.me) : []\n if (isPublic === true) { // old API - not recommended!\n items = items.filter(item => item.scope.label === 'public')\n } else if (isPublic === false) {\n items = items.filter(item => item.scope.label === 'private')\n }\n context.instances = items.map(item => item.instance)\n return context\n}\n\nexport function scopeLabel (context, scope) {\n const mine = context.me && context.me.sameTerm(scope.agent)\n const name = mine ? '' : utils.label(scope.agent) + ' '\n return `${name}${scope.label}`\n}\n/**\n * UI to control registration of instance\n */\nexport async function registrationControl (\n context: AuthenticationContext,\n instance,\n theClass\n): Promise<AuthenticationContext | void> {\n function registrationStatements (index) {\n const registrations = getRegistrations(instance, theClass)\n const reg = registrations.length ? registrations[0] : widgets.newThing(index)\n return [\n st(reg, ns.solid('instance'), instance, index),\n st(reg, ns.solid('forClass'), theClass, index)\n ]\n }\n\n function renderScopeCheckbox (scope) {\n const statements = registrationStatements(scope.index)\n const name = scopeLabel(context, scope)\n const label = `${name} link to this ${context.noun}`\n return widgets.buildCheckboxForm(\n context.dom,\n solidLogicSingleton.store,\n label,\n null,\n statements,\n form,\n scope.index\n )\n }\n /// / body of registrationControl\n const dom = context.dom\n if (!dom || !context.div) {\n throw new Error('registrationControl: need dom and div')\n }\n const box = dom.createElement('div')\n context.div.appendChild(box)\n context.me = authn.currentUser() // @@\n const me = context.me\n if (!me) {\n box.innerHTML = '<p style=\"margin:2em;\">(Log in to save a link to this)</p>'\n return context\n }\n\n let scopes // @@ const\n try {\n scopes = await loadAllTypeIndexes(me)\n } catch (e) {\n let msg\n if (context.div && context.preferencesFileError) {\n msg = '(Lists of stuff not available)'\n context.div.appendChild(dom.createElement('p')).textContent = msg\n } else if (context.div) {\n msg = `registrationControl: Type indexes not available: ${e}`\n context.div.appendChild(widgets.errorMessageBlock(context.dom, e))\n }\n debug.log(msg)\n return context\n }\n\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid gray 0.05em;')\n const tbody = box.children[0].children[0]\n const form = new BlankNode() // @@ say for now\n\n for (const scope of scopes) {\n const row = tbody.appendChild(dom.createElement('tr'))\n row.appendChild(renderScopeCheckbox(scope)) // @@ index\n }\n return context\n}\n\nexport function renderScopeHeadingRow (context, store, scope) {\n const backgroundColor = { private: '#fee', public: '#efe' }\n const { dom } = context\n const name = scopeLabel(context, scope)\n const row = dom.createElement('tr')\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.backgoundColor = backgroundColor[scope.label] || 'white'\n const header = cell.appendChild(dom.createElement('h3'))\n header.textContent = name + ' links'\n header.style.textAlign = 'left'\n return row\n}\n/**\n * UI to List at all registered things\n */\nexport async function registrationList (context: AuthenticationContext, options: {\n private?: boolean\n public?: boolean\n type?: NamedNode\n}): Promise<AuthenticationContext> {\n const dom = context.dom as HTMLDocument\n const div = context.div as HTMLElement\n\n const box = dom.createElement('div')\n div.appendChild(box)\n context.me = authn.currentUser() // @@\n if (!context.me) {\n box.innerHTML = '<p style=\"margin:2em;\">(Log in list your stuff)</p>'\n return context\n }\n\n const scopes = await loadAllTypeIndexes(context.me) // includes community indexes\n\n // console.log('@@ registrationList ', scopes)\n box.innerHTML = '<table><tbody></tbody></table>' // tbody will be inserted anyway\n box.setAttribute('style', 'font-size: 120%; text-align: right; padding: 1em; border: solid #eee 0.5em;')\n const table = box.firstChild as HTMLElement\n const tbody = table.firstChild as HTMLElement\n\n for (const scope of scopes) { // need some predicate for listing/adding agents\n const headingRow = renderScopeHeadingRow(context, store, scope)\n tbody.appendChild(headingRow)\n const items = await getScopedAppsFromIndex(scope, options.type || null) // any class\n if (items.length === 0) headingRow.style.display = 'none'\n // console.log(`registrationList: @@ instance items for class ${options.type || 'undefined' }:`, items)\n for (const item of items) {\n const row = widgets.personTR(dom, ns.solid('instance'), item.instance, {\n deleteFunction: async () => {\n await deleteTypeIndexRegistration(item)\n tbody.removeChild(row)\n }\n })\n row.children[0].style.paddingLeft = '3em'\n\n tbody.appendChild(row)\n }\n }\n return context\n} // registrationList\n\n/**\n * Bootstrapping identity\n * (Called by `loginStatusBox()`)\n *\n * @param dom\n * @param setUserCallback\n *\n * @returns\n */\nfunction signInOrSignUpBox (\n dom: HTMLDocument,\n setUserCallback: (user: string) => void,\n options: {\n buttonStyle?: string;\n } = {}\n): HTMLElement {\n options = options || {}\n const signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle\n\n const box: any = dom.createElement('div')\n const magicClassName = 'SolidSignInOrSignUpBox'\n debug.log('widgets.signInOrSignUpBox')\n box.setUserCallback = setUserCallback\n box.setAttribute('class', magicClassName)\n box.setAttribute('style', 'display:flex;')\n\n // Sign in button with PopUP\n const signInPopUpButton = dom.createElement('input') // multi\n box.appendChild(signInPopUpButton)\n signInPopUpButton.setAttribute('type', 'button')\n signInPopUpButton.setAttribute('value', 'Log in')\n signInPopUpButton.setAttribute('style', `${signInButtonStyle}${style.headerBannerLoginInput}` + style.signUpBackground)\n\n authSession.onLogin(() => {\n const me = authn.currentUser()\n // const sessionInfo = authSession.info\n // if (sessionInfo && sessionInfo.isLoggedIn) {\n if (me) {\n // const webIdURI = sessionInfo.webId\n const webIdURI = me.uri\n // setUserCallback(webIdURI)\n const divs = dom.getElementsByClassName(magicClassName)\n debug.log(`Logged in, ${divs.length} panels to be serviced`)\n // At the same time, satisfy all the other login boxes\n for (let i = 0; i < divs.length; i++) {\n const div: any = divs[i]\n // @@ TODO Remove the need to manipulate HTML elements\n if (div.setUserCallback) {\n try {\n div.setUserCallback(webIdURI)\n const parent = div.parentNode\n if (parent) {\n parent.removeChild(div)\n }\n } catch (e) {\n debug.log(`## Error satisfying login box: ${e}`)\n div.appendChild(widgets.errorMessageBlock(dom, e))\n }\n }\n }\n }\n })\n\n signInPopUpButton.addEventListener(\n 'click',\n () => {\n const offline = offlineTestID()\n if (offline) return setUserCallback(offline.uri)\n\n renderSignInPopup(dom)\n },\n false\n )\n\n // Sign up button\n const signupButton = dom.createElement('input')\n box.appendChild(signupButton)\n signupButton.setAttribute('type', 'button')\n signupButton.setAttribute('value', 'Sign Up for Solid')\n signupButton.setAttribute('style', `${signInButtonStyle}${style.headerBannerLoginInput}` + style.signInBackground)\n\n signupButton.addEventListener(\n 'click',\n function (_event) {\n const signupMgr = new Signup()\n signupMgr.signup().then(function (uri) {\n debug.log('signInOrSignUpBox signed up ' + uri)\n setUserCallback(uri)\n })\n },\n false\n )\n return box\n}\n\nexport function renderSignInPopup (dom: HTMLDocument) {\n /**\n * Issuer Menu\n */\n const issuerPopup = dom.createElement('div')\n issuerPopup.setAttribute(\n 'style',\n 'position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; justify-content: center; align-items: center;'\n )\n dom.body.appendChild(issuerPopup)\n const issuerPopupBox = dom.createElement('div')\n issuerPopupBox.setAttribute(\n 'style',\n `\n background-color: white;\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -moz-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n -o-box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n min-width: 400px;\n padding: 10px;\n z-index : 10;\n `\n )\n issuerPopup.appendChild(issuerPopupBox)\n const issuerPopupBoxTopMenu = dom.createElement('div')\n issuerPopupBoxTopMenu.setAttribute(\n 'style',\n `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n `\n )\n issuerPopupBox.appendChild(issuerPopupBoxTopMenu)\n const issuerPopupBoxLabel = dom.createElement('label')\n issuerPopupBoxLabel.setAttribute('style', 'margin-right: 5px; font-weight: 800')\n issuerPopupBoxLabel.innerText = 'Select an identity provider'\n const issuerPopupBoxCloseButton = dom.createElement('button')\n issuerPopupBoxCloseButton.innerHTML =\n '<img src=\"https://solidos.github.io/solid-ui/src/icons/noun_1180156.svg\" style=\"width: 2em; height: 2em;\" title=\"Cancel\">'\n issuerPopupBoxCloseButton.setAttribute('style', 'background-color: transparent; border: none;')\n issuerPopupBoxCloseButton.addEventListener('click', () => {\n issuerPopup.remove()\n })\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxLabel)\n issuerPopupBoxTopMenu.appendChild(issuerPopupBoxCloseButton)\n\n const loginToIssuer = async (issuerUri: string) => {\n try {\n // clear authorization metadata from store\n solidLogicSingleton.store.updater.flagAuthorizationMetadata() as any\n // Save hash\n const preLoginRedirectHash = new URL(window.location.href).hash\n if (preLoginRedirectHash) {\n window.localStorage.setItem('preLoginRedirectHash', preLoginRedirectHash)\n }\n window.localStorage.setItem('loginIssuer', issuerUri)\n // Login\n const locationUrl = new URL(window.location.href)\n locationUrl.hash = '' // remove hash part\n await authSession.login({\n redirectUrl: locationUrl.href,\n oidcIssuer: issuerUri\n })\n } catch (err) {\n alert(err.message)\n }\n }\n\n /**\n * Text-based idp selection\n */\n const issuerTextContainer = dom.createElement('div')\n issuerTextContainer.setAttribute(\n 'style',\n `\n border-bottom: 1px solid #DDD;\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `\n )\n const issuerTextInputContainer = dom.createElement('div')\n issuerTextInputContainer.setAttribute(\n 'style',\n `\n display: flex;\n flex-direction: row;\n `\n )\n const issuerTextLabel = dom.createElement('label')\n issuerTextLabel.innerText = 'Enter the URL of your identity provider:'\n issuerTextLabel.setAttribute('style', 'color: #888')\n const issuerTextInput = dom.createElement('input')\n issuerTextInput.setAttribute('type', 'text')\n issuerTextInput.setAttribute(\n 'style',\n 'margin-left: 0 !important; flex: 1; margin-right: 5px !important'\n )\n issuerTextInput.setAttribute('placeholder', 'https://example.com')\n issuerTextInput.value = localStorage.getItem('loginIssuer') || ''\n const issuerTextGoButton = dom.createElement('button')\n issuerTextGoButton.innerText = 'Go'\n issuerTextGoButton.setAttribute('style', 'margin-top: 12px; margin-bottom: 12px;')\n issuerTextGoButton.addEventListener('click', () => {\n loginToIssuer(issuerTextInput.value)\n })\n issuerTextContainer.appendChild(issuerTextLabel)\n issuerTextInputContainer.appendChild(issuerTextInput)\n issuerTextInputContainer.appendChild(issuerTextGoButton)\n issuerTextContainer.appendChild(issuerTextInputContainer)\n issuerPopupBox.appendChild(issuerTextContainer)\n\n /**\n * Button-based idp selection\n */\n const issuerButtonContainer = dom.createElement('div')\n issuerButtonContainer.setAttribute(\n 'style',\n `\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n `\n )\n const issuerBottonLabel = dom.createElement('label')\n issuerBottonLabel.innerText = 'Or pick an identity provider from the list below:'\n issuerBottonLabel.setAttribute('style', 'color: #888')\n issuerButtonContainer.appendChild(issuerBottonLabel)\n getSuggestedIssuers().forEach((issuerInfo) => {\n const issuerButton = dom.createElement('button')\n issuerButton.innerText = issuerInfo.name\n issuerButton.setAttribute('style', 'height: 38px; margin-top: 10px')\n issuerButton.addEventListener('click', () => {\n loginToIssuer(issuerInfo.uri)\n })\n issuerButtonContainer.appendChild(issuerButton)\n })\n issuerPopupBox.appendChild(issuerButtonContainer)\n}\n\n/**\n * Login status box\n *\n * A big sign-up/sign in box or a logout box depending on the state\n *\n * @param dom\n * @param listener\n *\n * @returns\n */\nexport function loginStatusBox (\n dom: HTMLDocument,\n listener: ((uri: string | null) => void) | null = null,\n options: {\n buttonStyle?: string;\n } = {}\n): HTMLElement {\n // 20190630\n let me = offlineTestID()\n // @@ TODO Remove the need to cast HTML element to any\n const box: any = dom.createElement('div')\n\n function setIt (newidURI) {\n if (!newidURI) {\n return\n }\n\n // const uri = newidURI.uri || newidURI\n // me = sym(uri)\n me = authn.saveUser(newidURI)\n box.refresh()\n if (listener) listener(me!.uri)\n }\n\n function logoutButtonHandler (_event) {\n const oldMe = me\n authSession.logout().then(\n function () {\n const message = `Your WebID was ${oldMe}. It has been forgotten.`\n me = null\n try {\n alert(message)\n } catch (e) {\n window.alert(message)\n }\n box.refresh()\n if (listener) listener(null)\n },\n (err) => {\n alert('Fail to log out:' + err)\n }\n )\n }\n\n function logoutButton (me, options) {\n const signInButtonStyle = options.buttonStyle || style.signInAndUpButtonStyle\n let logoutLabel = 'WebID logout'\n if (me) {\n const nick =\n solidLogicSingleton.store.any(me, ns.foaf('nick')) ||\n solidLogicSingleton.store.any(me, ns.foaf('name'))\n if (nick) {\n logoutLabel = 'Logout ' + nick.value\n }\n }\n const signOutButton = dom.createElement('input')\n // signOutButton.className = 'WebIDCancelButton'\n signOutButton.setAttribute('type', 'button')\n signOutButton.setAttribute('value', logoutLabel)\n signOutButton.setAttribute('style', `${signInButtonStyle}`)\n signOutButton.addEventListener('click', logoutButtonHandler, false)\n return signOutButton\n }\n\n box.refresh = function () {\n const sessionInfo = authSession.info\n if (sessionInfo && sessionInfo.webId && sessionInfo.isLoggedIn) {\n me = solidLogicSingleton.store.sym(sessionInfo.webId)\n } else {\n me = null\n }\n if ((me && box.me !== me.uri) || (!me && box.me)) {\n widgets.clearElement(box)\n if (me) {\n box.appendChild(logoutButton(me, options))\n } else {\n box.appendChild(signInOrSignUpBox(dom, setIt, options))\n }\n }\n box.me = me ? me.uri : null\n }\n box.refresh()\n\n function trackSession () {\n me = authn.currentUser()\n box.refresh()\n }\n trackSession()\n\n authSession.onLogin(trackSession)\n authSession.onLogout(trackSession)\n box.me = '99999' // Force refresh\n box.refresh()\n return box\n}\n\nauthSession.onLogout(async () => {\n const issuer = window.localStorage.getItem('loginIssuer')\n if (issuer) {\n try {\n // clear authorization metadata from store\n solidLogicSingleton.store.updater.flagAuthorizationMetadata() as any\n\n const wellKnownUri = new URL(issuer)\n wellKnownUri.pathname = '/.well-known/openid-configuration'\n const wellKnownResult = await fetch(wellKnownUri.toString())\n if (wellKnownResult.status === 200) {\n const openidConfiguration = await wellKnownResult.json()\n if (openidConfiguration && openidConfiguration.end_session_endpoint) {\n await fetch(openidConfiguration.end_session_endpoint, { credentials: 'include' })\n }\n }\n } catch (err) {\n // Do nothing\n }\n }\n window.location.reload()\n})\n\n/**\n * Workspace selection etc\n * See https://github.com/solidos/userguide/issues/16\n */\n\n/**\n * Returns a UI object which, if it selects a workspace,\n * will callback(workspace, newBase).\n * See https://github.com/solidos/userguide/issues/16 for more info on workspaces.\n *\n * If necessary, will get an account, preference file, etc. In sequence:\n *\n * - If not logged in, log in.\n * - Load preference file\n * - Prompt user for workspaces\n * - Allows the user to just type in a URI by hand\n *\n * Calls back with the workspace and the base URI\n *\n * @param dom\n * @param appDetails\n * @param callbackWS\n */\nexport function selectWorkspace (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callbackWS: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const noun = appDetails.noun\n const appPathSegment = appDetails.appPathSegment\n\n const me = offlineTestID()\n const box = dom.createElement('div')\n const context: AuthenticationContext = { me, dom, div: box }\n\n function say (s, background) {\n box.appendChild(widgets.errorMessageBlock(dom, s, background))\n }\n\n function figureOutBase (ws) {\n const newBaseNode: NamedNode = solidLogicSingleton.store.any(\n ws,\n ns.space('uriPrefix')\n ) as NamedNode\n let newBaseString: string\n if (!newBaseNode) {\n newBaseString = ws.uri.split('#')[0]\n } else {\n newBaseString = newBaseNode.value\n }\n if (newBaseString.slice(-1) !== '/') {\n debug.log(`${appPathSegment}: No / at end of uriPrefix ${newBaseString}`) // @@ paramater?\n newBaseString = `${newBaseString}/`\n }\n const now = new Date()\n newBaseString += `${appPathSegment}/id${now.getTime()}/` // unique id\n return newBaseString\n }\n\n function displayOptions (context) {\n // console.log('displayOptions!', context)\n async function makeNewWorkspace (_event) {\n const row = table.appendChild(dom.createElement('tr'))\n const cell = row.appendChild(dom.createElement('td'))\n cell.setAttribute('colspan', '3')\n cell.style.padding = '0.5em'\n const newBase = encodeURI(\n await widgets.askName(\n dom,\n solidLogicSingleton.store,\n cell,\n ns.solid('URL'),\n ns.space('Workspace'),\n 'Workspace'\n )\n )\n const newWs = widgets.newThing(context.preferencesFile)\n const newData = [\n st(context.me, ns.space('workspace'), newWs, context.preferencesFile),\n // eslint-disable-next-line camelcase\n st(\n newWs,\n ns.space('uriPrefix'),\n newBase as unknown as Quad_Object,\n context.preferencesFile\n )\n ]\n if (!solidLogicSingleton.store.updater) {\n throw new Error('store has no updater')\n }\n await solidLogicSingleton.store.updater.update([], newData)\n // @@ now refresh list of workspaces\n }\n\n // const status = ''\n const id = context.me\n const preferencesFile = context.preferencesFile\n let newBase: any = null\n\n // A workspace specifically defined in the private preference file:\n let w: any = solidLogicSingleton.store.each(\n id,\n ns.space('workspace'),\n undefined,\n preferencesFile\n ) // Only trust preference file here\n\n // A workspace in a storage in the public profile:\n const storages = solidLogicSingleton.store.each(id, ns.space('storage')) // @@ No provenance requirement at the moment\n if (w.length === 0 && storages) {\n say(\n `You don't seem to have any workspaces. You have ${storages.length} storage spaces.`,\n 'white'\n )\n storages\n .map(function (s: any) {\n w = w.concat(solidLogicSingleton.store.each(s, ns.ldp('contains')))\n return w\n })\n .filter((file) => {\n return file.id ? ['public', 'private'].includes(file.id().toLowerCase()) : ''\n })\n }\n\n if (w.length === 1) {\n say(`Workspace used: ${w[0].uri}`, 'white') // @@ allow user to see URI\n newBase = figureOutBase(w[0])\n // callbackWS(w[0], newBase)\n // } else if (w.length === 0) {\n }\n\n // Prompt for ws selection or creation\n // say( w.length + \" workspaces for \" + id + \"Choose one.\");\n const table = dom.createElement('table')\n table.setAttribute('style', 'border-collapse:separate; border-spacing: 0.5em;')\n\n // const popup = window.open(undefined, '_blank', { height: 300, width:400 }, false)\n box.appendChild(table)\n\n // Add a field for directly adding the URI yourself\n\n // const hr = box.appendChild(dom.createElement('hr')) // @@\n box.appendChild(dom.createElement('hr')) // @@\n\n const p = box.appendChild(dom.createElement('p'))\n p.setAttribute('style', style.commentStyle)\n p.textContent = `Where would you like to store the data for the ${noun}?\n Give the URL of the folder where you would like the data stored.\n It can be anywhere in solid world - this URI is just an idea.`\n // @@ TODO Remove the need to cast baseField to any\n const baseField: any = box.appendChild(dom.createElement('input'))\n baseField.setAttribute('type', 'text')\n baseField.setAttribute('style', style.textInputStyle)\n baseField.size = 80 // really a string\n baseField.label = 'base URL'\n baseField.autocomplete = 'on'\n if (newBase) {\n // set to default\n baseField.value = newBase\n }\n\n context.baseField = baseField\n\n box.appendChild(dom.createElement('br')) // @@\n\n const button = box.appendChild(dom.createElement('button'))\n button.setAttribute('style', style.buttonStyle)\n button.textContent = `Start new ${noun} at this URI`\n button.addEventListener('click', function (_event) {\n let newBase = baseField.value.replace(' ', '%20') // do not re-encode in general, as % encodings may exist\n if (newBase.slice(-1) !== '/') {\n newBase += '/'\n }\n callbackWS(null, newBase)\n })\n\n // Now go set up the table of spaces\n\n // const row = 0\n w = w.filter(function (x) {\n return !solidLogicSingleton.store.holds(\n x,\n ns.rdf('type'), // Ignore master workspaces\n ns.space('MasterWorkspace')\n )\n })\n let col1, col2, col3, tr, ws, localStyle, comment\n const cellStyle = 'height: 3em; margin: 1em; padding: 1em white; border-radius: 0.3em;'\n const deselectedStyle = `${cellStyle}border: 0px;`\n // const selectedStyle = cellStyle + 'border: 1px solid black;'\n for (let i = 0; i < w.length; i++) {\n ws = w[i]\n tr = dom.createElement('tr')\n if (i === 0) {\n col1 = dom.createElement('td')\n col1.setAttribute('rowspan', `${w.length}`)\n col1.textContent = 'Choose a workspace for this:'\n col1.setAttribute('style', 'vertical-align:middle;')\n tr.appendChild(col1)\n }\n col2 = dom.createElement('td')\n localStyle = solidLogicSingleton.store.anyValue(ws, ns.ui('style'))\n if (!localStyle) {\n // Otherwise make up arbitrary colour\n const hash = function (x) {\n return x.split('').reduce(function (a, b) {\n a = (a << 5) - a + b.charCodeAt(0)\n return a & a\n }, 0)\n }\n const bgcolor = `#${((hash(ws.uri) & 0xffffff) | 0xc0c0c0).toString(16)}` // c0c0c0 forces pale\n localStyle = `color: black ; background-color: ${bgcolor};`\n }\n col2.setAttribute('style', deselectedStyle + localStyle)\n tr.target = ws.uri\n let label = solidLogicSingleton.store.any(ws, ns.rdfs('label'))\n if (!label) {\n label = ws.uri.split('/').slice(-1)[0] || ws.uri.split('/').slice(-2)[0]\n }\n col2.textContent = label || '???'\n tr.appendChild(col2)\n if (i === 0) {\n col3 = dom.createElement('td')\n col3.setAttribute('rowspan', `${w.length}1`)\n // col3.textContent = '@@@@@ remove';\n col3.setAttribute('style', 'width:50%;')\n tr.appendChild(col3)\n }\n table.appendChild(tr)\n\n comment = solidLogicSingleton.store.any(ws, ns.rdfs('comment'))\n comment = comment ? comment.value : 'Use this workspace'\n col2.addEventListener(\n 'click',\n function (_event) {\n col3.textContent = comment ? comment.value : ''\n col3.setAttribute('style', deselectedStyle + localStyle)\n const button = dom.createElement('button')\n button.textContent = 'Continue'\n // button.setAttribute('style', style);\n const newBase = figureOutBase(ws)\n baseField.value = newBase // show user proposed URI\n\n button.addEventListener(\n 'click',\n function (_event) {\n button.disabled = true\n callbackWS(ws, newBase)\n button.textContent = '---->'\n },\n true\n ) // capture vs bubble\n col3.appendChild(button)\n },\n true\n ) // capture vs bubble\n }\n\n // last line with \"Make new workspace\"\n const trLast = dom.createElement('tr')\n col2 = dom.createElement('td')\n col2.setAttribute('style', cellStyle)\n col2.textContent = '+ Make a new workspace'\n col2.addEventListener('click', makeNewWorkspace)\n trLast.appendChild(col2)\n table.appendChild(trLast)\n } // displayOptions\n\n // console.log('kicking off async operation')\n ensureLoadedPreferences(context) // kick off async operation\n .then(displayOptions)\n .catch((err) => {\n // console.log(\"err from async op\")\n box.appendChild(widgets.errorMessageBlock(context.dom, err))\n })\n\n return box // return the box element, while login proceeds\n} // selectWorkspace\n\n/**\n * Creates a new instance of an app.\n *\n * An instance of an app could be e.g. an issue tracker for a given project,\n * or a chess game, or calendar, or a health/fitness record for a person.\n *\n * Note that this use of the term 'app' refers more to entries in the user's\n * type index than to actual software applications that use the personal data\n * to which these entries point.\n *\n * @param dom\n * @param appDetails\n * @param callback\n *\n * @returns A div with a button in it for making a new app instance\n */\nexport function newAppInstance (\n dom: HTMLDocument,\n appDetails: AppDetails,\n callback: (workspace: string | null, newBase: string) => void\n): HTMLElement {\n const gotWS = function (ws, base) {\n // log.debug(\"newAppInstance: Selected workspace = \" + (ws? ws.uri : 'none'))\n callback(ws, base)\n }\n const div = dom.createElement('div')\n const b = dom.createElement('button')\n b.setAttribute('type', 'button')\n div.appendChild(b)\n b.innerHTML = `Make new ${appDetails.noun}`\n b.addEventListener(\n 'click',\n (_event) => {\n div.appendChild(selectWorkspace(dom, appDetails, gotWS))\n },\n false\n )\n div.appendChild(b)\n return div\n}\n/**\n * Retrieves whether the currently logged in user is a power user\n * and/or a developer\n */\nexport async function getUserRoles (): Promise<Array<NamedNode>> {\n try {\n const { me, preferencesFile, preferencesFileError } = await ensureLoadedPreferences({})\n if (!preferencesFile || preferencesFileError) {\n throw new Error(preferencesFileError)\n }\n return solidLogicSingleton.store.each(\n me,\n ns.rdf('type'),\n null,\n preferencesFile.doc()\n ) as NamedNode[]\n } catch (error) {\n debug.warn('Unable to fetch your preferences - this was the error: ', error)\n }\n return []\n}\n\n/**\n * Filters which panes should be available, based on the result of [[getUserRoles]]\n */\nexport async function filterAvailablePanes (\n panes: Array<PaneDefinition>\n): Promise<Array<PaneDefinition>> {\n const userRoles = await getUserRoles()\n return panes.filter((pane) => isMatchingAudience(pane, userRoles))\n}\n\nfunction isMatchingAudience (pane: PaneDefinition, userRoles: Array<NamedNode>): boolean {\n const audience = pane.audience || []\n return audience.reduce(\n (isMatch, audienceRole) => isMatch && !!userRoles.find((role) => role.equals(audienceRole)),\n true as boolean\n )\n}\n"],"mappings":"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"}
@@ -11,9 +11,9 @@ export declare function cameraCaptureControl(dom: HTMLDocument, store: IndexedFo
11
11
  * @param {IndexedForumla} store - The quadstore to store data in
12
12
  * @param {fuunction} getImageDoc - returns NN of the image file to be created
13
13
  * @param {function<Node>} doneCallback - called with the image taken
14
- * @returns {DomElement} - A div element with the buton in it
14
+ * @returns {DomElement} - A div element with the button in it
15
15
  *
16
- * This expacts the buttton to a large control when it is pressed
16
+ * This expands the button to a large control when it is pressed
17
17
  */
18
18
  export declare function cameraButton(dom: HTMLDocument, store: IndexedFormula, getImageDoc: () => NamedNode, doneCallback: (imageDoc: any) => Promise<void>): HTMLElement;
19
19
  //# sourceMappingURL=media-capture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-capture.d.ts","sourceRoot":"","sources":["../../src/media/media-capture.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAYlD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,SAAS,EAC5B,YAAY,EAAE,CAAC,QAAQ,KAAA,KAAK,OAAO,CAAC,IAAI,CAAC,kBAmI1C;AAED;;;;;;;;GAQG;AAEH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,SAAS,EAC5B,YAAY,EAAE,CAAC,QAAQ,KAAA,KAAK,OAAO,CAAC,IAAI,CAAC,GACxC,WAAW,CAqBb"}
1
+ {"version":3,"file":"media-capture.d.ts","sourceRoot":"","sources":["../../src/media/media-capture.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAOlD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,SAAS,EAC5B,YAAY,EAAE,CAAC,QAAQ,KAAA,KAAK,OAAO,CAAC,IAAI,CAAC,kBAmI1C;AAED;;;;;;;;GAQG;AAEH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,MAAM,SAAS,EAC5B,YAAY,EAAE,CAAC,QAAQ,KAAA,KAAK,OAAO,CAAC,IAAI,CAAC,GACxC,WAAW,CAqBb"}
@@ -11,21 +11,21 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
11
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
12
  var debug = _interopRequireWildcard(require("../debug"));
13
13
  var _iconBase = require("../iconBase");
14
+ var style = _interopRequireWildcard(require("../style"));
14
15
  var widgets = _interopRequireWildcard(require("../widgets"));
15
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
16
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
17
- /// /////////////////////////////////////////////
18
18
  //
19
19
  // Media input widget
20
20
  //
21
21
  //
22
22
  // Workflow:
23
- // The HTML5 functionality (on mobille) is to prompt for either
24
- // a realtime camera capture , OR a selection from images already ont the device
23
+ // The HTML5 functionality (on mobile) is to prompt for either
24
+ // a realtime camera capture, OR a selection from images already on the device
25
25
  // (eg camera roll).
26
26
  //
27
- // The solid alternative is to either take a phtoto
28
- // or access cemra roll (etc) OR to access solid cloud storage of favorite photo almbums.
27
+ // The solid alternative is to either take a photo
28
+ // or access camera roll (etc) OR to access solid cloud storage of favorite photo albums.
29
29
  // (Especially latest taken ones)
30
30
  //
31
31
 
@@ -34,10 +34,6 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
34
34
  var cameraIcon = _iconBase.icons.iconBase + 'noun_Camera_1618446_000000.svg'; // Get it from github
35
35
  var retakeIcon = _iconBase.icons.iconBase + 'noun_479395.svg'; // Get it from github
36
36
 
37
- var canvasWidth = '640';
38
- var canvasHeight = '480';
39
- var controlStyle = "border-radius: 0.5em; margin: 0.8em; width: ".concat(canvasWidth, "; height:").concat(canvasHeight, ";");
40
- // const controlStyle = 'border-radius: 0.5em; margin: 0.8em; width: 320; height:240;'
41
37
  var contentType = 'image/png';
42
38
 
43
39
  /** A control to capture a picture using camera
@@ -82,7 +78,7 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
82
78
  player = main.appendChild(dom.createElement('video'));
83
79
  player.setAttribute('controls', '1');
84
80
  player.setAttribute('autoplay', '1');
85
- player.setAttribute('style', controlStyle);
81
+ player.setAttribute('style', style.controlStyle);
86
82
  if (!navigator.mediaDevices) {
87
83
  throw new Error('navigator.mediaDevices not available');
88
84
  }
@@ -103,9 +99,9 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
103
99
  function grabCanvas() {
104
100
  // Draw the video frame to the canvas.
105
101
  canvas = dom.createElement('canvas');
106
- canvas.setAttribute('width', canvasWidth);
107
- canvas.setAttribute('height', canvasHeight);
108
- canvas.setAttribute('style', controlStyle);
102
+ canvas.setAttribute('width', style.canvasWidth);
103
+ canvas.setAttribute('height', style.canvasHeight);
104
+ canvas.setAttribute('style', style.controlStyle);
109
105
  main.appendChild(canvas);
110
106
  var context = canvas.getContext('2d');
111
107
  context.drawImage(player, 0, 0, canvas.width, canvas.height);
@@ -160,9 +156,9 @@ function cameraCaptureControl(dom, store, getImageDoc, doneCallback) {
160
156
  * @param {IndexedForumla} store - The quadstore to store data in
161
157
  * @param {fuunction} getImageDoc - returns NN of the image file to be created
162
158
  * @param {function<Node>} doneCallback - called with the image taken
163
- * @returns {DomElement} - A div element with the buton in it
159
+ * @returns {DomElement} - A div element with the button in it
164
160
  *
165
- * This expacts the buttton to a large control when it is pressed
161
+ * This expands the button to a large control when it is pressed
166
162
  */
167
163
 
168
164
  function cameraButton(dom, store, getImageDoc, doneCallback) {