contacts-pane 3.0.1-d52ee71e → 3.0.1-e34c052d

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.
@@ -150,7 +150,7 @@ dom, container, already, subject, form, doc, callbackFunction) {
150
150
  }
151
151
  if (!kb.updater.editable(doc.uri)) {
152
152
  field.readOnly = true // was: disabled. readOnly is better
153
- ;
153
+ ;
154
154
  field.style = _solidUi.style.textInputStyleUneditable;
155
155
  // backgroundColor = textInputBackgroundColorUneditable
156
156
  if (suppressEmptyUneditable && field.value === '') {
@@ -1 +1 @@
1
- {"version":3,"file":"autocompleteField.js","names":["_rdflib","require","_solidLogic","_solidUi","_autocompletePicker","autocompleteField","dom","container","already","subject","form","doc","callbackFunction","addOneIdAndRefresh","result","_name","ds","kb","statementsMatching","property","is","map","statement","st","predicate","why","length","updater","updateMany","err","box","appendChild","widgets","errorMessageBlock","store","formDoc","createElement","lhs","setAttribute","rhs","any","ns","ui","createTextNode","searchClass","endPoint","queryTemplate","suppressEmptyUneditable","anyJS","fieldLabel","uri","mostSpecificClassURI","params","fieldParams","undefined","klass","the","searchByNameQuery","queryParams","label","logo","class","value","options","renderAutoComplete","then","acWiget","field","style","textInputStyle","type","size","maxLength","fieldStore","obj","Error","editable","readOnly","textInputStyleUneditable","display"],"sources":["../src/autocompleteField.ts"],"sourcesContent":["/* Form field for doing autocompleete\n */\nimport { BlankNode, NamedNode, st, Variable } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { ns, style, widgets } from 'solid-ui'\nimport { renderAutoComplete } from './autocompletePicker' // dbpediaParameters\n\n// const AUTOCOMPLETE_THRESHOLD = 4 // don't check until this many characters typed\n// const AUTOCOMPLETE_ROWS = 12 // 20?\n\n/**\n * Render a autocomplete form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n\nexport function autocompleteField ( // @@ are they allowed too be async??\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (ok: boolean, errorMessage: string) => void\n): HTMLElement {\n async function addOneIdAndRefresh (result, _name) {\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n try {\n await kb.updater.updateMany(ds, is)\n } catch (err) {\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete form data write error:' + err))\n return\n }\n callbackFunction(true, '')\n }\n\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('tr')\n if (container) container.appendChild(box)\n const lhs = dom.createElement('td')\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', ' vertical-align: middle;')\n box.appendChild(lhs)\n const rhs = dom.createElement('td')\n rhs.setAttribute('class', 'formFieldValue')\n box.appendChild(rhs)\n\n const property = kb.any(form, ns.ui('property'))\n if (!property) {\n box.appendChild(\n dom.createTextNode('Error: No property given for autocomplete field: ' + form)\n )\n return box\n }\n const searchClass = kb.any(form, ns.ui('searchClass'))\n if (!searchClass) {\n box.appendChild(\n dom.createTextNode('Error: No searchClass given for autocomplete field: ' + form)\n )\n return box\n }\n const endPoint = kb.any(form, ns.ui('endPoint'))\n if (!endPoint) {\n box.appendChild(\n dom.createTextNode('Error: No SPARQL endPoint given for autocomplete field: ' + form)\n )\n return box\n }\n const queryTemplate = kb.any(form, ns.ui('queryTemplate'))\n if (!queryTemplate) {\n box.appendChild(\n dom.createTextNode('Error: No queryTemplate given for autocomplete field: ' + form)\n )\n return box\n }\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n lhs.appendChild(widgets.fieldLabel(dom, property as any, form))\n const uri = widgets.mostSpecificClassURI(form)\n let params = widgets.fieldParams[uri]\n if (params === undefined) params = {} // non-bottom field types can do this\n // const theStyle = params.style || style.textInputStyle\n const klass = kb.the(form, ns.ui('category'), null, formDoc) as NamedNode\n /*\n { label: string;\n logo: string;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endPoint?: string;\n class: object\n }\n*/\n\n const searchByNameQuery = kb.the(form, ns.ui('searchByNameQuery'), null, formDoc)\n\n if (!klass) {\n box.appendChild(\n dom.createTextNode('Error: No class given for autocomplete field: ' + form)\n )\n return box\n }\n\n const queryParams = { label: 'from form', logo: '', class: klass, endPoint: endPoint.value, searchByNameQuery: searchByNameQuery?.value }\n\n const options = { // cancelButton?: HTMLElement,\n // acceptButton?: HTMLElement,\n class: klass,\n queryParams\n }\n\n // const acWiget = rhs.appendChild(await renderAutoComplete(dom, options, addOneIdAndRefresh))\n\n // @@ set existing value is any\n renderAutoComplete(dom, options, addOneIdAndRefresh).then(acWiget => rhs.appendChild(acWiget))\n\n const field = dom.createElement('input')\n ;(field as any).style = style.textInputStyle // Do we have to override length etc?\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n\n const size = kb.any(form, ns.ui('size')) // Form has precedence\n field.setAttribute(\n 'size',\n size ? '' + size : params.size ? '' + params.size : '20'\n )\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : '4096')\n\n doc = doc || widgets.fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', style)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = style.textInputStyleUneditable\n // backgroundColor = textInputBackgroundColorUneditable\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n return box\n}\n\n// ends\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AALA;AACA;;AAI0D;;AAE1D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,SAASI,iBAAiBA;AAAG;AAClCC,GAAiB,EACjBC,SAAkC,EAClCC,OAAO,EACPC,OAAyC,EACzCC,IAAe,EACfC,GAA0B,EAC1BC,gBAA6D,EAChD;EACb,eAAeC,kBAAkBA,CAAEC,MAAM,EAAEC,KAAK,EAAE;IAChD,MAAMC,EAAE,GAAGC,EAAE,CAACC,kBAAkB,CAACT,OAAO,EAAEU,QAAe,CAAC,EAAC;;IAE3D,IAAIC,EAAE,GAAGJ,EAAE,CAACK,GAAG,CAACC,SAAS,IAAI,IAAAC,UAAE,EAACD,SAAS,CAACb,OAAO,EAAEa,SAAS,CAACE,SAAS,EAAEV,MAAM,EAAEQ,SAAS,CAACG,GAAG,CAAC,CAAC,EAAC;IAChG,IAAIL,EAAE,CAACM,MAAM,KAAK,CAAC,EAAE;MACnB;MACAN,EAAE,GAAG,CAAC,IAAAG,UAAE,EAACd,OAAO,EAAEU,QAAQ,EAASL,MAAM,EAAEH,GAAG,CAAC,CAAC;IAClD;IACA,IAAI;MACF,MAAMM,EAAE,CAACU,OAAO,CAACC,UAAU,CAACZ,EAAE,EAAEI,EAAE,CAAC;IACrC,CAAC,CAAC,OAAOS,GAAG,EAAE;MACZjB,gBAAgB,CAAC,KAAK,EAAEiB,GAAG,CAAC;MAC5BC,GAAG,CAACC,WAAW,CAACC,gBAAO,CAACC,iBAAiB,CAAC3B,GAAG,EAAE,qCAAqC,GAAGuB,GAAG,CAAC,CAAC;MAC5F;IACF;IACAjB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;EAC5B;EAEA,MAAMK,EAAE,GAAGiB,iBAAK;EAChB,MAAMC,OAAO,GAAGzB,IAAI,CAACC,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,IAAI,EAAC;;EAE7C,MAAMmB,GAAG,GAAGxB,GAAG,CAAC8B,aAAa,CAAC,IAAI,CAAC;EACnC,IAAI7B,SAAS,EAAEA,SAAS,CAACwB,WAAW,CAACD,GAAG,CAAC;EACzC,MAAMO,GAAG,GAAG/B,GAAG,CAAC8B,aAAa,CAAC,IAAI,CAAC;EACnCC,GAAG,CAACC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC;EAC1CD,GAAG,CAACC,YAAY,CAAC,OAAO,EAAE,2BAA2B,CAAC;EACtDR,GAAG,CAACC,WAAW,CAACM,GAAG,CAAC;EACpB,MAAME,GAAG,GAAGjC,GAAG,CAAC8B,aAAa,CAAC,IAAI,CAAC;EACnCG,GAAG,CAACD,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC;EAC3CR,GAAG,CAACC,WAAW,CAACQ,GAAG,CAAC;EAEpB,MAAMpB,QAAQ,GAAGF,EAAE,CAACuB,GAAG,CAAC9B,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,UAAU,CAAC,CAAC;EAChD,IAAI,CAACvB,QAAQ,EAAE;IACbW,GAAG,CAACC,WAAW,CACbzB,GAAG,CAACqC,cAAc,CAAC,mDAAmD,GAAGjC,IAAI,CAC/E,CAAC;IACD,OAAOoB,GAAG;EACZ;EACA,MAAMc,WAAW,GAAG3B,EAAE,CAACuB,GAAG,CAAC9B,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,aAAa,CAAC,CAAC;EACtD,IAAI,CAACE,WAAW,EAAE;IAChBd,GAAG,CAACC,WAAW,CACbzB,GAAG,CAACqC,cAAc,CAAC,sDAAsD,GAAGjC,IAAI,CAClF,CAAC;IACD,OAAOoB,GAAG;EACZ;EACA,MAAMe,QAAQ,GAAG5B,EAAE,CAACuB,GAAG,CAAC9B,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,UAAU,CAAC,CAAC;EAChD,IAAI,CAACG,QAAQ,EAAE;IACbf,GAAG,CAACC,WAAW,CACbzB,GAAG,CAACqC,cAAc,CAAC,0DAA0D,GAAGjC,IAAI,CACtF,CAAC;IACD,OAAOoB,GAAG;EACZ;EACA,MAAMgB,aAAa,GAAG7B,EAAE,CAACuB,GAAG,CAAC9B,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,eAAe,CAAC,CAAC;EAC1D,IAAI,CAACI,aAAa,EAAE;IAClBhB,GAAG,CAACC,WAAW,CACbzB,GAAG,CAACqC,cAAc,CAAC,wDAAwD,GAAGjC,IAAI,CACpF,CAAC;IACD,OAAOoB,GAAG;EACZ;EACA;EACA,MAAMiB,uBAAuB,GAAG9B,EAAE,CAAC+B,KAAK,CAACtC,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAEP,OAAO,CAAC;EAE/FE,GAAG,CAACN,WAAW,CAACC,gBAAO,CAACiB,UAAU,CAAC3C,GAAG,EAAEa,QAAQ,EAAST,IAAI,CAAC,CAAC;EAC/D,MAAMwC,GAAG,GAAGlB,gBAAO,CAACmB,oBAAoB,CAACzC,IAAI,CAAC;EAC9C,IAAI0C,MAAM,GAAGpB,gBAAO,CAACqB,WAAW,CAACH,GAAG,CAAC;EACrC,IAAIE,MAAM,KAAKE,SAAS,EAAEF,MAAM,GAAG,CAAC,CAAC,EAAC;EACtC;EACA,MAAMG,KAAK,GAAGtC,EAAE,CAACuC,GAAG,CAAC9C,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAEP,OAAO,CAAc;EACzE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEE,MAAMsB,iBAAiB,GAAGxC,EAAE,CAACuC,GAAG,CAAC9C,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAEP,OAAO,CAAC;EAEjF,IAAI,CAACoB,KAAK,EAAE;IACVzB,GAAG,CAACC,WAAW,CACbzB,GAAG,CAACqC,cAAc,CAAC,gDAAgD,GAAGjC,IAAI,CAC5E,CAAC;IACD,OAAOoB,GAAG;EACZ;EAEA,MAAM4B,WAAW,GAAG;IAAEC,KAAK,EAAE,WAAW;IAAEC,IAAI,EAAE,EAAE;IAAEC,KAAK,EAAEN,KAAK;IAAEV,QAAQ,EAAEA,QAAQ,CAACiB,KAAK;IAAEL,iBAAiB,EAAEA,iBAAiB,EAAEK;EAAM,CAAC;EAEzI,MAAMC,OAAO,GAAG;IAAE;IAChB;IACAF,KAAK,EAAEN,KAAK;IACZG;EACF,CAAC;;EAED;;EAEA;EACA,IAAAM,sCAAkB,EAAC1D,GAAG,EAAEyD,OAAO,EAAElD,kBAAkB,CAAC,CAACoD,IAAI,CAACC,OAAO,IAAI3B,GAAG,CAACR,WAAW,CAACmC,OAAO,CAAC,CAAC;EAE9F,MAAMC,KAAK,GAAG7D,GAAG,CAAC8B,aAAa,CAAC,OAAO,CAAC;EACtC+B,KAAK,CAASC,KAAK,GAAGA,cAAK,CAACC,cAAc,EAAC;EAC7C9B,GAAG,CAACR,WAAW,CAACoC,KAAK,CAAC;EACtBA,KAAK,CAAC7B,YAAY,CAAC,MAAM,EAAEc,MAAM,CAACkB,IAAI,GAAGlB,MAAM,CAACkB,IAAI,GAAG,MAAM,CAAC;EAE9D,MAAMC,IAAI,GAAGtD,EAAE,CAACuB,GAAG,CAAC9B,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAC;EACzCyB,KAAK,CAAC7B,YAAY,CAChB,MAAM,EACNiC,IAAI,GAAG,EAAE,GAAGA,IAAI,GAAGnB,MAAM,CAACmB,IAAI,GAAG,EAAE,GAAGnB,MAAM,CAACmB,IAAI,GAAG,IACtD,CAAC;EACD,MAAMC,SAAS,GAAGvD,EAAE,CAACuB,GAAG,CAAC9B,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,WAAW,CAAC,CAAC;EAClDyB,KAAK,CAAC7B,YAAY,CAAC,WAAW,EAAEkC,SAAS,GAAG,EAAE,GAAGA,SAAS,GAAG,MAAM,CAAC;EAEpE7D,GAAG,GAAGA,GAAG,IAAIqB,gBAAO,CAACyC,UAAU,CAAChE,OAAO,EAAEU,QAAQ,EAASR,GAAG,CAAC;EAE9D,IAAI+D,GAAG,GAAGzD,EAAE,CAACuB,GAAG,CAAC/B,OAAO,EAAEU,QAAQ,EAASmC,SAAS,EAAE3C,GAAG,CAAC;EAC1D,IAAI,CAAC+D,GAAG,EAAE;IACRA,GAAG,GAAGzD,EAAE,CAACuB,GAAG,CAAC9B,IAAI,EAAE+B,WAAE,CAACC,EAAE,CAAC,SAAS,CAAC,CAAC;EACtC;EACA,IAAIgC,GAAG,EAAE;IACP;IACAP,KAAK,CAACL,KAAK,GAAGY,GAAG,CAACZ,KAAK,IAAIY,GAAG,CAACZ,KAAK,IAAI,EAAE;EAC5C;EACAK,KAAK,CAAC7B,YAAY,CAAC,OAAO,EAAE8B,cAAK,CAAC;EAClC,IAAI,CAACnD,EAAE,CAACU,OAAO,EAAE;IACf,MAAM,IAAIgD,KAAK,CAAC,mBAAmB,CAAC;EACtC;EACA,IAAI,CAAC1D,EAAE,CAACU,OAAO,CAACiD,QAAQ,CAAEjE,GAAG,CAAeuC,GAAG,CAAC,EAAE;IAChDiB,KAAK,CAACU,QAAQ,GAAG,IAAI,CAAC;IAAA;IACpBV,KAAK,CAASC,KAAK,GAAGA,cAAK,CAACU,wBAAwB;IACtD;IACA,IAAI/B,uBAAuB,IAAIoB,KAAK,CAACL,KAAK,KAAK,EAAE,EAAE;MACjDhC,GAAG,CAACsC,KAAK,CAACW,OAAO,GAAG,MAAM,EAAC;IAC7B;IACA,OAAOjD,GAAG;EACZ;EACA,OAAOA,GAAG;AACZ;;AAEA","ignoreList":[]}
1
+ {"version":3,"file":"autocompleteField.js","names":["_rdflib","require","_solidLogic","_solidUi","_autocompletePicker","autocompleteField","dom","container","already","subject","form","doc","callbackFunction","addOneIdAndRefresh","result","_name","ds","kb","statementsMatching","property","is","map","statement","st","predicate","why","length","updater","updateMany","err","box","appendChild","widgets","errorMessageBlock","store","formDoc","createElement","lhs","setAttribute","rhs","any","ns","ui","createTextNode","searchClass","endPoint","queryTemplate","suppressEmptyUneditable","anyJS","fieldLabel","uri","mostSpecificClassURI","params","fieldParams","undefined","klass","the","searchByNameQuery","queryParams","label","logo","class","value","options","renderAutoComplete","then","acWiget","field","style","textInputStyle","type","size","maxLength","fieldStore","obj","Error","editable","readOnly","textInputStyleUneditable","display"],"sources":["../src/autocompleteField.ts"],"sourcesContent":["/* Form field for doing autocompleete\n */\nimport { BlankNode, NamedNode, st, Variable } from 'rdflib'\nimport { store } from 'solid-logic'\nimport { ns, style, widgets } from 'solid-ui'\nimport { renderAutoComplete } from './autocompletePicker' // dbpediaParameters\n\n// const AUTOCOMPLETE_THRESHOLD = 4 // don't check until this many characters typed\n// const AUTOCOMPLETE_ROWS = 12 // 20?\n\n/**\n * Render a autocomplete form field\n *\n * The same function is used for many similar one-value fields, with different\n * regexps used to validate.\n *\n * @param dom The HTML Document object aka Document Object Model\n * @param container If present, the created widget will be appended to this\n * @param already A hash table of (form, subject) kept to prevent recursive forms looping\n * @param subject The thing about which the form displays/edits data\n * @param form The form or field to be rendered\n * @param doc The web document in which the data is\n * @param callbackFunction Called when data is changed?\n *\n * @returns The HTML widget created\n */\n\nexport function autocompleteField ( // @@ are they allowed too be async??\n dom: HTMLDocument,\n container: HTMLElement | undefined,\n already,\n subject: NamedNode | BlankNode | Variable,\n form: NamedNode,\n doc: NamedNode | undefined,\n callbackFunction: (ok: boolean, errorMessage: string) => void\n): HTMLElement {\n async function addOneIdAndRefresh (result, _name) {\n const ds = kb.statementsMatching(subject, property as any) // remove any multiple values\n\n let is = ds.map(statement => st(statement.subject, statement.predicate, result, statement.why)) // can include >1 doc\n if (is.length === 0) {\n // or none\n is = [st(subject, property as any, result, doc)]\n }\n try {\n await kb.updater.updateMany(ds, is)\n } catch (err) {\n callbackFunction(false, err)\n box.appendChild(widgets.errorMessageBlock(dom, 'Autocomplete form data write error:' + err))\n return\n }\n callbackFunction(true, '')\n }\n\n const kb = store\n const formDoc = form.doc ? form.doc() : null // @@ if blank no way to know\n\n const box = dom.createElement('tr')\n if (container) container.appendChild(box)\n const lhs = dom.createElement('td')\n lhs.setAttribute('class', 'formFieldName')\n lhs.setAttribute('style', ' vertical-align: middle;')\n box.appendChild(lhs)\n const rhs = dom.createElement('td')\n rhs.setAttribute('class', 'formFieldValue')\n box.appendChild(rhs)\n\n const property = kb.any(form, ns.ui('property'))\n if (!property) {\n box.appendChild(\n dom.createTextNode('Error: No property given for autocomplete field: ' + form)\n )\n return box\n }\n const searchClass = kb.any(form, ns.ui('searchClass'))\n if (!searchClass) {\n box.appendChild(\n dom.createTextNode('Error: No searchClass given for autocomplete field: ' + form)\n )\n return box\n }\n const endPoint = kb.any(form, ns.ui('endPoint'))\n if (!endPoint) {\n box.appendChild(\n dom.createTextNode('Error: No SPARQL endPoint given for autocomplete field: ' + form)\n )\n return box\n }\n const queryTemplate = kb.any(form, ns.ui('queryTemplate'))\n if (!queryTemplate) {\n box.appendChild(\n dom.createTextNode('Error: No queryTemplate given for autocomplete field: ' + form)\n )\n return box\n }\n // It can be cleaner to just remove empty fields if you can't edit them anyway\n const suppressEmptyUneditable = kb.anyJS(form, ns.ui('suppressEmptyUneditable'), null, formDoc)\n\n lhs.appendChild(widgets.fieldLabel(dom, property as any, form))\n const uri = widgets.mostSpecificClassURI(form)\n let params = widgets.fieldParams[uri]\n if (params === undefined) params = {} // non-bottom field types can do this\n // const theStyle = params.style || style.textInputStyle\n const klass = kb.the(form, ns.ui('category'), null, formDoc) as NamedNode\n /*\n { label: string;\n logo: string;\n searchByNameQuery?: string;\n searchByNameURI?: string;\n insitituteDetailsQuery?: string;\n endPoint?: string;\n class: object\n }\n*/\n\n const searchByNameQuery = kb.the(form, ns.ui('searchByNameQuery'), null, formDoc)\n\n if (!klass) {\n box.appendChild(\n dom.createTextNode('Error: No class given for autocomplete field: ' + form)\n )\n return box\n }\n\n const queryParams = { label: 'from form', logo: '', class: klass, endPoint: endPoint.value, searchByNameQuery: searchByNameQuery?.value }\n\n const options = { // cancelButton?: HTMLElement,\n // acceptButton?: HTMLElement,\n class: klass,\n queryParams\n }\n\n // const acWiget = rhs.appendChild(await renderAutoComplete(dom, options, addOneIdAndRefresh))\n\n // @@ set existing value is any\n renderAutoComplete(dom, options, addOneIdAndRefresh).then(acWiget => rhs.appendChild(acWiget))\n\n const field = dom.createElement('input')\n ;(field as any).style = style.textInputStyle // Do we have to override length etc?\n rhs.appendChild(field)\n field.setAttribute('type', params.type ? params.type : 'text')\n\n const size = kb.any(form, ns.ui('size')) // Form has precedence\n field.setAttribute(\n 'size',\n size ? '' + size : params.size ? '' + params.size : '20'\n )\n const maxLength = kb.any(form, ns.ui('maxLength'))\n field.setAttribute('maxLength', maxLength ? '' + maxLength : '4096')\n\n doc = doc || widgets.fieldStore(subject, property as any, doc)\n\n let obj = kb.any(subject, property as any, undefined, doc)\n if (!obj) {\n obj = kb.any(form, ns.ui('default'))\n }\n if (obj) {\n /* istanbul ignore next */\n field.value = obj.value || obj.value || ''\n }\n field.setAttribute('style', style)\n if (!kb.updater) {\n throw new Error('kb has no updater')\n }\n if (!kb.updater.editable((doc as NamedNode).uri)) {\n field.readOnly = true // was: disabled. readOnly is better\n ;(field as any).style = style.textInputStyleUneditable\n // backgroundColor = textInputBackgroundColorUneditable\n if (suppressEmptyUneditable && field.value === '') {\n box.style.display = 'none' // clutter\n }\n return box\n }\n return box\n}\n\n// ends\n"],"mappings":"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","ignoreList":[]}
@@ -793,7 +793,6 @@ var _default = exports.default = {
793
793
  } // render function
794
794
  }; // pane object
795
795
  // ends
796
-
797
796
  function getSameAs(kb, item, doc) {
798
797
  return kb.each(item, ns.owl('sameAs'), null, doc).concat(kb.each(null, ns.owl('sameAs'), item, doc));
799
798
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contactsPane.js","names":["_solidLogic","require","_contactLogic","UI","_interopRequireWildcard","_mintNewAddressBook","_individual","_toolsPane","_groupMembershipControl","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","utils","style","_default","exports","icon","icons","iconBase","name","label","subject","context","session","store","findTypeURIs","vcard","uri","foaf","schema","mintClass","mintNew","mintNewAddressBook","render","dataBrowserContext","paneOptions","thisPane","complain","message","console","log","div","appendChild","widgets","errorMessageBlock","dom","complainIfBad","ok","body","newAddressBookButton","thisAddressBook","login","newAppInstance","noun","appPathSegment","ws","newBase","clone","me","kb","createElement","authn","currentUser","aclControl","preventBrowserDropEvents","setAttribute","asyncRender","then","err","target","renderThreeColumnBrowser","books","options","fetcher","load","_xhr","renderThreeColumnBrowser2","catch","classLabel","book","groupIndex","any","selectedGroups","selectedPeople","foreignGroup","title","dc","solo","document","value","findBookFromGroups","g","gu","sym","b","undefined","Error","nameFor","x","filterName","filter","searchInput","trim","toLowerCase","length","parts","split","j","word","indexOf","selectPerson","person","cardMain","innerHTML","refreshFilteredPeople","local","localNode","nowOrWhenFetched","doc","renderPane","linkIcon","deleteButton","deleteButtonWithCheck","container","dir","pname","confirm","loadAllGroups","nameEmailIndex","groups","groupMembership","removeFromGroups","forEach","group","webids","getSameAs","webid","concat","statementsMatching","updater","updateMany","deleteThingAndDoc","deleteRecursive","refreshNames","active","count","lastRow","peopleMainTable","children","row","matches","unique","selectAllGroups","groupsMainTable","callbackFunction","fetchGroupAndSelct","groupRow","msg","badness","push","refreshGroupsSelected","todo","k","gs","each","groupsInOrder","sortMe","gs2","map","sort","tuple","paneName","p","paneRegistry","byName","d","compareForSort","self","other","s","ds","delete","folder","Promise","resolve","promises","ldp","file","holds","rdf","webOperation","all","_res","_div","aliases","allAliases","prefix","slice","setPersonListener","personRow","addEventListener","event","preventDefault","cards","keys","groupURI","groupMembers","splice","peopleHeader","textContent","renderNameInGroupList","personLeft","dataCellStyle","makeDraggable","syncTableToArrayReOrdered","refreshThingsSelected","table","selectionArray","syncGroupTable","renderGroupRow","handleURIsDroppedOnGroup","uris","u","thing","addPersonToGroup","groupRowClickListener","groupList","metaKey","visible","ACLControlBox5","response","status","sharingButton","cssText","img","removeChild","makeDropTarget","checkDataModel","del","ins","getDataModelIssues","alert","newGroupClickHandler","_event","askName","saveNewGroup","craeteNewCard","klass","ourBook","saveNewContact","bookTable","bookHeader","bookMain","bookFooter","groupsHeader","cardHeader","groupsMain","peopleMain","groupsFooter","peopleFooter","cardFooter","searchInputStyle","setGroupListVisibility","vis","hfstyle","allGroups","state","newContactButton","checkUser","webId","removeAttribute","newOrganizationButton","container2","newGroupButton","toolsButton","toolsPane","renderIndividual","findAppInstances","addressBooks","instances","ensureLoadedProfile","location","acl","item","owl"],"sources":["../src/contactsPane.js"],"sourcesContent":["/* Contact AddressBook Pane\n**\n** This outline pane allows a user to interact with an contact,\nto change its state according to an ontology, comment on it, etc.\n**\n** See also things like\n** http://www.w3.org/TR/vcard-rdf/\n** http://tools.ietf.org/html/rfc6350\n** http://www.iana.org/assignments/vcard-elements/vcard-elements.xhtml\n**\n*/\n/* global alert, confirm */\n\nimport { authn } from 'solid-logic'\nimport { addPersonToGroup, saveNewContact, saveNewGroup, groupMembers, getDataModelIssues } from './contactLogic'\nimport * as UI from 'solid-ui'\nimport { mintNewAddressBook } from './mintNewAddressBook'\nimport { renderIndividual } from './individual'\nimport { toolsPane } from './toolsPane'\nimport { groupMembership } from './groupMembershipControl'\n\nconst ns = UI.ns\nconst utils = UI.utils\nconst style = UI.style\n\nexport default {\n icon: UI.icons.iconBase + 'noun_99101.svg', // changed from embedded icon 2016-05-01\n\n name: 'contact',\n\n // Does the subject deserve an contact pane?\n label: function (subject, context) {\n const t = context.session.store.findTypeURIs(subject)\n if (t[ns.vcard('Individual').uri]) return 'Contact'\n if (t[ns.vcard('Organization').uri]) return 'contact'\n if (t[ns.foaf('Person').uri]) return 'Person'\n if (t[ns.schema('Person').uri]) return 'Person'\n if (t[ns.vcard('Group').uri]) return 'Group'\n if (t[ns.vcard('AddressBook').uri]) return 'Address book'\n return null // No under other circumstances\n },\n\n mintClass: UI.ns.vcard('AddressBook'),\n\n mintNew: mintNewAddressBook, // Make a new address book\n\n // Render the pane\n render: function (subject, dataBrowserContext, paneOptions = {}) {\n const thisPane = this\n\n // stick functions here\n function complain (message) {\n console.log('contactsPane: ' + message)\n div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n function complainIfBad (ok, body) {\n if (!ok) {\n complain('Error: ' + body)\n }\n }\n\n // Reproduction: Spawn a new instance of this app\n function newAddressBookButton (thisAddressBook) {\n return UI.login.newAppInstance(\n dom,\n { noun: 'address book', appPathSegment: 'contactorator.timbl.com' },\n function (ws, newBase) {\n thisPane.clone(thisAddressBook, newBase, { // @@ clone is not a thing - use mintNew\n me,\n div,\n dom\n })\n }\n )\n } // newAddressBookButton\n\n const dom = dataBrowserContext.dom\n const kb = dataBrowserContext.session.store\n const div = dom.createElement('div')\n const me = authn.currentUser() // If already logged on\n\n UI.aclControl.preventBrowserDropEvents(dom) // protect drag and drop\n\n div.setAttribute('class', 'contactPane')\n\n asyncRender().then(\n () => console.log('contactsPane Rendered ' + subject),\n err => complain('' + err))\n return div\n\n // Async part of render. Maybe API will later allow render to be async\n async function asyncRender () {\n UI.aclControl.preventBrowserDropEvents(dom)\n\n const t = kb.findTypeURIs(subject)\n\n let me = authn.currentUser()\n\n const context = {\n target: subject,\n me,\n noun: 'address book',\n div,\n dom\n } // missing: statusRegion\n\n // Render a 3-column browser for an address book or a group\n function renderThreeColumnBrowser (books, context, options) {\n kb.fetcher\n .load(books)\n .then(function (_xhr) {\n renderThreeColumnBrowser2(books, context, options)\n })\n .catch(function (err) {\n complain(err)\n })\n }\n function renderThreeColumnBrowser2 (books, context, options) {\n const classLabel = utils.label(ns.vcard('AddressBook'))\n // const IndividualClassLabel = utils.label(ns.vcard('Individual'))\n\n let book = books[0] // for now\n const groupIndex = kb.any(book, ns.vcard('groupIndex'))\n let selectedGroups = {}\n let selectedPeople = {} // Actually prob max 1\n\n const target = options.foreignGroup || book\n\n let title =\n kb.any(target, ns.dc('title')) || kb.any(target, ns.vcard('fn'))\n if (paneOptions.solo && title && typeof document !== 'undefined') {\n document.title = title.value // @@ only when the outermmost pane\n }\n title = title ? title.value : classLabel\n\n // The book could be the main subject, or linked from a group we are dealing with\n function findBookFromGroups (book) {\n if (book) {\n return book\n }\n let g\n for (const gu in selectedGroups) {\n g = kb.sym(gu)\n const b = kb.any(undefined, ns.vcard('includesGroup'), g)\n if (b) return b\n }\n throw new Error(\n 'findBookFromGroups: Cant find address book which this group is part of'\n )\n }\n\n // Write a new contact to the web\n\n // organization-name is a hack for Mac records with no FN which is mandatory.\n function nameFor (x) {\n const name =\n kb.any(x, ns.vcard('fn')) ||\n kb.any(x, ns.foaf('name')) ||\n kb.any(x, ns.vcard('organization-name'))\n return name ? name.value : '???'\n }\n\n function filterName (name) {\n const filter = searchInput.value.trim().toLowerCase()\n if (filter.length === 0) return true\n const parts = filter.split(' ') // Each name part must be somewhere\n for (let j = 0; j < parts.length; j++) {\n const word = parts[j]\n if (name.toLowerCase().indexOf(word) < 0) return false\n }\n return true\n }\n\n function selectPerson (person) {\n cardMain.innerHTML = 'loading...'\n selectedPeople = {}\n selectedPeople[person.uri] = true\n refreshFilteredPeople() // Color to remember which one you picked\n const local = book ? localNode(person) : person\n kb.fetcher.nowOrWhenFetched(local.doc(), undefined, function (\n ok,\n message\n ) {\n cardMain.innerHTML = ''\n if (!ok) {\n return complainIfBad(\n ok,\n 'Can\\'t load card: ' + local + ': ' + message\n )\n }\n // console.log(\"Loaded card \" + local + '\\n')\n cardMain.appendChild(renderPane(dom, local, 'contact'))\n cardMain.appendChild(dom.createElement('br'))\n\n cardMain.appendChild(UI.widgets.linkIcon(dom, local)) // hoverHide\n\n // Add in a delete button to delete from AB\n const deleteButton = UI.widgets.deleteButtonWithCheck(\n dom,\n cardMain,\n 'contact',\n async function () {\n const container = person.dir() // ASSUMPTION THAT CARD IS IN ITS OWN DIRECTORY\n // alert('Container to delete is ' + container)\n const pname = kb.any(person, ns.vcard('fn'))\n if (\n confirm(\n 'Delete contact ' + pname + ' completely?? ' + container\n )\n ) {\n console.log('Deleting a contact ' + pname)\n await loadAllGroups() // need to wait for all groups to be loaded in case they have a link to this person\n // load people.ttl\n const nameEmailIndex = kb.any(book, ns.vcard('nameEmailIndex'))\n await kb.fetcher.load(nameEmailIndex)\n\n // - delete person's WebID's in each Group\n // - delete the references to it in group files and save them back\n // - delete the reference in people.ttl and save it back\n\n // find all Groups\n const groups = groupMembership(person)\n let removeFromGroups = []\n // find person WebID's\n groups.forEach(group => {\n const webids = getSameAs(kb, person, group.doc())\n // for each check in each Group that it is not used by an other person then delete\n webids.forEach(webid => {\n if (getSameAs(kb, webid, group.doc()).length === 1) {\n removeFromGroups = removeFromGroups.concat(kb.statementsMatching(group, ns.vcard('hasMember'), webid, group.doc()))\n }\n })\n })\n // console.log(removeFromGroups)\n await kb.updater.updateMany(removeFromGroups)\n await deleteThingAndDoc(person)\n await deleteRecursive(kb, container)\n refreshNames() // \"Doesn't work\" -- maybe does now with waiting for async\n cardMain.innerHTML = 'Contact Data Deleted.'\n }\n }\n )\n deleteButton.style = 'height: 2em;'\n })\n }\n\n function refreshFilteredPeople (active) {\n let count = 0\n let lastRow = null\n for (let i = 0; i < peopleMainTable.children.length; i++) {\n const row = peopleMainTable.children[i]\n const matches = filterName(nameFor(row.subject))\n if (matches) {\n count++\n lastRow = row\n }\n row.setAttribute(\n 'style',\n matches\n ? selectedPeople[row.subject.uri]\n ? 'background-color: #cce;'\n : ''\n : 'display: none;'\n )\n }\n if (count === 1 && active) {\n const unique = lastRow.subject\n // selectedPeople = { }\n // selectedPeople[unique.uri] = true\n // lastRow.setAttribute('style', 'background-color: #cce;')\n selectPerson(unique)\n }\n }\n\n function selectAllGroups (\n selectedGroups,\n groupsMainTable,\n callbackFunction\n ) {\n function fetchGroupAndSelct (group, groupRow) {\n groupRow.setAttribute('style', 'background-color: #ffe;')\n kb.fetcher.nowOrWhenFetched(group.doc(), undefined, function (\n ok,\n message\n ) {\n if (!ok) {\n const msg = 'Can\\'t load group file: ' + group + ': ' + message\n badness.push(msg)\n return complainIfBad(ok, msg)\n }\n groupRow.setAttribute('style', 'background-color: #cce;')\n selectedGroups[group.uri] = true\n refreshGroupsSelected()\n refreshNames() // @@ every time??\n todo -= 1\n if (!todo) {\n if (callbackFunction) { callbackFunction(badness.length === 0, badness) }\n }\n })\n }\n let todo = groupsMainTable.children.length\n var badness = [] /* eslint-disable-line no-var */\n for (let k = 0; k < groupsMainTable.children.length; k++) {\n const groupRow = groupsMainTable.children[k]\n const group = groupRow.subject\n fetchGroupAndSelct(group, groupRow)\n } // for each row\n }\n\n async function loadAllGroups () {\n await kb.fetcher.load(groupIndex)\n const gs = book ? kb.each(book, ns.vcard('includesGroup'), null, groupIndex) : []\n await kb.fetcher.load(gs)\n return gs\n }\n\n function groupsInOrder () {\n let sortMe = []\n if (options.foreignGroup) {\n sortMe.push([\n '',\n kb.any(options.foreignGroup, ns.vcard('fn')),\n options.foreignGroup\n ])\n }\n if (book) {\n books.forEach(function (book) {\n const gs = book ? kb.each(book, ns.vcard('includesGroup'), null, groupIndex) : []\n const gs2 = gs.map(function (g) {\n return [book, kb.any(g, ns.vcard('fn')), g]\n })\n sortMe = sortMe.concat(gs2)\n })\n sortMe.sort()\n }\n return sortMe.map(tuple => tuple[2])\n }\n\n function renderPane (dom, subject, paneName) {\n const p = dataBrowserContext.session.paneRegistry.byName(paneName)\n const d = p.render(subject, dataBrowserContext)\n d.setAttribute(\n 'style',\n 'border: 0.1em solid #444; border-radius: 0.5em'\n )\n return d\n }\n\n function compareForSort (self, other) {\n let s = nameFor(self)\n let o = nameFor(other)\n if (s && o) {\n s = s.toLowerCase()\n o = o.toLowerCase()\n if (s > o) return 1\n if (s < o) return -1\n }\n if (self.uri > other.uri) return 1\n if (self.uri < other.uri) return -1\n return 0\n }\n\n // In a LDP work, deletes the whole document describing a thing\n // plus patch out ALL mentiosn of it! Use with care!\n // beware of other data picked up from other places being smushed\n // together and then deleted.\n\n async function deleteThingAndDoc (x) {\n console.log('deleteThingAndDoc: ' + x)\n const ds = kb\n .statementsMatching(x)\n .concat(kb.statementsMatching(undefined, undefined, x))\n try {\n await kb.updater.updateMany(ds)\n console.log('Deleting resoure ' + x.doc())\n await kb.fetcher.delete(x.doc())\n console.log('Delete thing ' + x + ': complete.')\n } catch (err) {\n complain('Error deleting thing ' + x + ': ' + err)\n }\n }\n\n // For deleting an addressbook sub-folder eg person - use with care!\n // @@ move to solid-logic\n function deleteRecursive (kb, folder) {\n return new Promise(function (resolve) {\n kb.fetcher.load(folder).then(function () {\n const promises = kb.each(folder, ns.ldp('contains')).map(file => {\n if (kb.holds(file, ns.rdf('type'), ns.ldp('BasicContainer'))) {\n return deleteRecursive(kb, file)\n } else {\n console.log('deleteRecirsive file: ' + file)\n if (!confirm(' Really DELETE File ' + file)) {\n throw new Error('User aborted delete file')\n }\n return kb.fetcher.webOperation('DELETE', file.uri)\n }\n })\n console.log('deleteRecirsive folder: ' + folder)\n if (!confirm(' Really DELETE folder ' + folder)) {\n throw new Error('User aborted delete file')\n }\n promises.push(kb.fetcher.webOperation('DELETE', folder.uri))\n Promise.all(promises).then(_res => {\n resolve()\n })\n })\n })\n }\n\n function localNode (person, _div) {\n const aliases = kb.allAliases(person)\n const prefix = book.dir().uri\n for (let i = 0; i < aliases.length; i++) {\n if (aliases[i].uri.slice(0, prefix.length) === prefix) {\n return aliases[i]\n }\n }\n throw new Error('No local URI for ' + person)\n }\n\n /** Refresh the list of names\n */\n function refreshNames () {\n function setPersonListener (personRow, person) {\n personRow.addEventListener('click', function (event) {\n event.preventDefault()\n selectPerson(person)\n })\n }\n\n let cards = []\n const groups = Object.keys(selectedGroups).map(groupURI => kb.sym(groupURI))\n groups.forEach(group => {\n if (selectedGroups[group.value]) {\n cards = cards.concat(groupMembers(kb, group))\n }\n })\n cards.sort(compareForSort) // @@ sort by name not UID later\n for (let k = 0; k < cards.length - 1;) {\n if (cards[k].uri === cards[k + 1].uri) {\n cards.splice(k, 1) // Eliminate duplicates from more than one group\n } else {\n k++\n }\n }\n\n peopleHeader.textContent =\n cards.length > 5 ? '' + cards.length + ' contacts' : 'contact'\n\n function renderNameInGroupList (person) {\n const personRow = dom.createElement('tr')\n const personLeft = personRow.appendChild(dom.createElement('td'))\n // const personRight = personRow.appendChild(dom.createElement('td'))\n personLeft.setAttribute('style', dataCellStyle)\n personRow.subject = person\n const name = nameFor(person)\n personLeft.textContent = name\n personRow.subject = person\n UI.widgets.makeDraggable(personRow, person)\n\n setPersonListener(personRow, person)\n return personRow\n }\n\n utils.syncTableToArrayReOrdered(peopleMainTable, cards, renderNameInGroupList)\n refreshFilteredPeople()\n } // refreshNames\n\n function refreshThingsSelected (table, selectionArray) {\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n if (row.subject) {\n row.setAttribute(\n 'style',\n selectionArray[row.subject.uri] ? 'background-color: #cce;' : ''\n )\n }\n }\n }\n\n function refreshGroupsSelected () {\n return refreshThingsSelected(groupsMainTable, selectedGroups)\n }\n\n // Check every group is in the list and add it if not.\n\n function syncGroupTable () {\n function renderGroupRow (group) {\n // Is something is dropped on a group, add people to group\n async function handleURIsDroppedOnGroup (uris) {\n uris.forEach(function (u) {\n console.log('Dropped on group: ' + u)\n const thing = kb.sym(u)\n try {\n addPersonToGroup(thing, group)\n } catch (e) {\n complain(e)\n }\n refreshNames()\n })\n }\n function groupRowClickListener (event) {\n event.preventDefault()\n const groupList = kb.sym(group.uri.split('#')[0])\n if (!event.metaKey) {\n selectedGroups = {} // If Command key pressed, accumulate multiple\n }\n selectedGroups[group.uri] = !selectedGroups[group.uri]\n refreshGroupsSelected()\n peopleMainTable.innerHTML = '' // clear in case refreshNames doesn't work for unknown reason\n\n kb.fetcher.nowOrWhenFetched(\n groupList.uri,\n undefined,\n function (ok, message) {\n if (!ok) {\n return complainIfBad(\n ok,\n 'Can\\'t load group file: ' + groupList + ': ' + message\n )\n }\n refreshNames()\n\n if (!event.metaKey) {\n // If only one group has been selected, show ACL\n cardMain.innerHTML = ''\n let visible = false\n const aclControl = UI.aclControl.ACLControlBox5(\n group,\n dataBrowserContext,\n 'group',\n kb,\n function (ok, body, response) {\n if (!ok) {\n if (response && response.status && response.status === 403) {\n cardMain.innerHTML = 'No control access.'\n } else {\n cardMain.innerHTML = 'Failed to load access control: ' + body\n }\n }\n }\n )\n const sharingButton = cardMain.appendChild(\n dom.createElement('button')\n )\n sharingButton.style.cssText =\n 'padding: 1em; margin: 1em'\n const img = sharingButton.appendChild(\n dom.createElement('img')\n )\n img.style.cssText = 'width: 1.5em; height: 1.5em'\n img.setAttribute(\n 'src',\n UI.icons.iconBase + 'noun_123691.svg'\n )\n sharingButton.addEventListener('click', function () {\n visible = !visible\n if (visible) {\n cardMain.appendChild(aclControl)\n } else {\n cardMain.removeChild(aclControl)\n }\n })\n }\n }\n )\n }\n\n // Body of renderGroupRow\n const name = kb.any(group, ns.vcard('fn'))\n const groupRow = dom.createElement('tr')\n groupRow.subject = group\n UI.widgets.makeDraggable(groupRow, group)\n\n groupRow.setAttribute('style', dataCellStyle)\n groupRow.textContent = name\n\n UI.widgets.makeDropTarget(groupRow, handleURIsDroppedOnGroup)\n UI.widgets.deleteButtonWithCheck(\n dom,\n groupRow,\n 'group ' + name,\n async function () {\n await deleteThingAndDoc(group)\n syncGroupTable()\n }\n )\n groupRow.addEventListener('click', groupRowClickListener, true)\n return groupRow\n } // renderGroupRow\n\n const groups = groupsInOrder()\n utils.syncTableToArrayReOrdered(groupsMainTable, groups, renderGroupRow)\n refreshGroupsSelected()\n // await checkDataModel(groups)\n } // syncGroupTable\n\n async function checkDataModel () {\n // await kb.fetcher.load(groups) // asssume loaded already\n const groups = await loadAllGroups()\n\n const { del, ins } = await getDataModelIssues(groups)\n\n if (del.length && confirm(`Groups data model need to be updated? (${del.length})`)) {\n await kb.updater.updateMany(del, ins)\n alert('Update done')\n }\n } // checkDataModel\n\n // Click on New Group button\n async function newGroupClickHandler (_event) {\n cardMain.innerHTML = ''\n const groupIndex = kb.any(book, ns.vcard('groupIndex'))\n try {\n await kb.fetcher.load(groupIndex)\n } catch (e) {\n console.log('Error: Group index NOT loaded:' + e + '\\n')\n }\n console.log(' Group index has been loaded\\n')\n\n const name = await UI.widgets.askName(\n dom, kb, cardMain, UI.ns.foaf('name'), ns.vcard('Group'), 'group')\n if (!name) return // cancelled by user\n let group\n try {\n group = await saveNewGroup(book, name)\n } catch (err) {\n console.log('Error: can\\'t save new group:' + err)\n cardMain.innerHTML = 'Failed to save group' + err\n return\n }\n selectedGroups = {}\n selectedGroups[group.uri] = true\n syncGroupTable() // Refresh list of groups\n\n cardMain.innerHTML = ''\n cardMain.appendChild(UI.aclControl.ACLControlBox5(\n group.doc(), dataBrowserContext, 'group', kb,\n function (ok, body) {\n if (!ok) {\n cardMain.innerHTML =\n 'Group sharing setup failed: ' + body\n }\n }))\n } // newGroupClickHandler\n\n async function craeteNewCard (klass) {\n cardMain.innerHTML = ''\n const ourBook = findBookFromGroups(book)\n try {\n await kb.fetcher.load(ourBook)\n } catch (err) {\n throw new Error('Book won\\'t load:' + ourBook)\n }\n\n const nameEmailIndex = kb.any(ourBook, ns.vcard('nameEmailIndex'))\n if (!nameEmailIndex) throw new Error('Wot no nameEmailIndex?')\n await kb.fetcher.load(nameEmailIndex)\n // console.log('Name index loaded async' + nameEmailIndex)\n\n const name = await UI.widgets\n .askName(dom, kb, cardMain, UI.ns.foaf('name'), klass) // @@ was, 'person'\n\n if (!name) return // cancelled by user\n cardMain.innerHTML = 'indexing...'\n book = findBookFromGroups(book)\n let person\n try {\n person = await saveNewContact(book, name, selectedGroups, klass)\n } catch (err) {\n const msg = 'Error: can\\'t save new contact: ' + err\n console.log(msg)\n alert(msg)\n }\n\n selectedPeople = {}\n selectedPeople[person.uri] = true\n refreshNames() // Add name to list of group\n cardMain.innerHTML = '' // Clear 'indexing'\n cardMain.appendChild(renderPane(dom, person, 'contact'))\n }\n\n // //////////////////////////// Three-column Contact Browser - Body\n // ////////////////// Body of 3-column browser\n\n const bookTable = dom.createElement('table')\n bookTable.setAttribute(\n 'style',\n 'border-collapse: collapse; margin-right: 0; max-height: 9in;'\n )\n div.appendChild(bookTable)\n /*\n bookTable.innerHTML = `\n <tr>\n <td id=\"groupsHeader\"></td>\n <td id=\"peopleHeader\"></td>\n <td id=\"cardHeader\"></td>\n </tr>\n <tr id=\"bookMain\"></tr>\n <tr>\n <td id=\"groupsFooter\">\n </td><td id=\"peopleFooter\">\n </td><td id=\"cardFooter\">\n </td>\n </tr>`\n */\n const bookHeader = bookTable.appendChild(dom.createElement('tr'))\n const bookMain = bookTable.appendChild(dom.createElement('tr'))\n const bookFooter = bookTable.appendChild(dom.createElement('tr'))\n\n const groupsHeader = bookHeader.appendChild(dom.createElement('td'))\n const peopleHeader = bookHeader.appendChild(dom.createElement('td'))\n const cardHeader = bookHeader.appendChild(dom.createElement('td'))\n\n const groupsMain = bookMain.appendChild(dom.createElement('td'))\n const groupsMainTable = groupsMain.appendChild(dom.createElement('table'))\n const peopleMain = bookMain.appendChild(dom.createElement('td'))\n const peopleMainTable = peopleMain.appendChild(dom.createElement('table'))\n\n const groupsFooter = bookFooter.appendChild(dom.createElement('td'))\n const peopleFooter = bookFooter.appendChild(dom.createElement('td'))\n const cardFooter = bookFooter.appendChild(dom.createElement('td'))\n\n cardHeader.appendChild(dom.createElement('div')) // searchDiv\n // searchDiv.setAttribute('style', 'border: 0.1em solid #888; border-radius: 0.5em')\n const searchInput = cardHeader.appendChild(dom.createElement('input'))\n searchInput.setAttribute('type', 'text')\n searchInput.style = style.searchInputStyle ||\n 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em'\n\n searchInput.addEventListener('input', function (_event) {\n refreshFilteredPeople(true) // Active: select person if just one left\n })\n\n const cardMain = bookMain.appendChild(dom.createElement('td'))\n cardMain.setAttribute('style', 'margin: 0;') // fill space available\n const dataCellStyle = 'padding: 0.1em;'\n\n groupsHeader.textContent = 'groups'\n groupsHeader.setAttribute(\n 'style',\n 'min-width: 10em; padding-bottom 0.2em;'\n )\n\n function setGroupListVisibility (visible) {\n const vis = visible ? '' : 'display: none;'\n groupsHeader.setAttribute(\n 'style',\n 'min-width: 10em; padding-bottom 0.2em;' + vis\n )\n const hfstyle = 'padding: 0.1em;'\n groupsMain.setAttribute('style', hfstyle + vis)\n groupsFooter.setAttribute('style', hfstyle + vis)\n }\n setGroupListVisibility(true)\n\n if (options.foreignGroup) {\n selectedGroups[options.foreignGroup.uri] = true\n }\n if (book) {\n const allGroups = groupsHeader.appendChild(dom.createElement('button'))\n allGroups.textContent = 'All'\n const style = 'margin-left: 1em; font-size: 100%;'\n allGroups.setAttribute('style', style)\n allGroups.addEventListener('click', function (_event) {\n allGroups.state = allGroups.state ? 0 : 1\n peopleMainTable.innerHTML = '' // clear in case refreshNames doesn't work for unknown reason\n if (allGroups.state) {\n allGroups.setAttribute('style', style + 'background-color: #ff8;')\n selectAllGroups(selectedGroups, groupsMainTable, function (\n ok,\n message\n ) {\n if (!ok) return complain(message)\n allGroups.setAttribute(\n 'style',\n style + 'background-color: black; color: white'\n )\n refreshGroupsSelected()\n })\n } else {\n allGroups.setAttribute('style', style + 'background-color: #cfc;') // pale green hint groups loaded\n selectedGroups = {}\n refreshGroupsSelected()\n }\n }) // on button click\n kb.fetcher.nowOrWhenFetched(groupIndex.uri, book, function (ok, body) {\n if (!ok) return console.log('Cannot load group index: ' + body)\n syncGroupTable()\n refreshNames()\n })\n } else {\n syncGroupTable()\n refreshNames()\n console.log('No book, only one group -> hide list of groups')\n setGroupListVisibility(false) // If no books involved, hide group list\n } // if not book\n\n peopleHeader.textContent = 'name'\n peopleHeader.setAttribute('style', 'min-width: 18em;')\n peopleMain.setAttribute('style', 'overflow:scroll;')\n\n // New Contact button\n const newContactButton = dom.createElement('button')\n const container = dom.createElement('div')\n newContactButton.setAttribute('type', 'button')\n if (!me) newContactButton.setAttribute('disabled', 'true')\n authn.checkUser().then(webId => {\n if (webId) {\n me = webId\n newContactButton.removeAttribute('disabled')\n }\n })\n container.appendChild(newContactButton)\n newContactButton.innerHTML = 'New Contact' // + IndividualClassLabel\n peopleFooter.appendChild(container)\n newContactButton.addEventListener('click', async _event => craeteNewCard(ns.vcard('Individual')), false)\n\n // New Organization button\n const newOrganizationButton = dom.createElement('button')\n const container2 = dom.createElement('div')\n newOrganizationButton.setAttribute('type', 'button')\n if (!me) newOrganizationButton.setAttribute('disabled', 'true')\n authn.checkUser().then(webId => {\n if (webId) {\n me = webId\n newOrganizationButton.removeAttribute('disabled')\n }\n })\n container2.appendChild(newOrganizationButton)\n newOrganizationButton.innerHTML = 'New Organization' // + IndividualClassLabel\n peopleFooter.appendChild(container2)\n newOrganizationButton.addEventListener('click', async _event => craeteNewCard(ns.vcard('Organization')), false)\n\n // New Group button\n if (book) {\n const newGroupButton = groupsFooter.appendChild(\n dom.createElement('button')\n )\n newGroupButton.setAttribute('type', 'button')\n newGroupButton.innerHTML = 'New Group' // + IndividualClassLabel\n newGroupButton.addEventListener(\n 'click', newGroupClickHandler,\n false\n )\n\n // Tools button\n const toolsButton = cardFooter.appendChild(dom.createElement('button'))\n toolsButton.setAttribute('type', 'button')\n toolsButton.innerHTML = 'Tools'\n toolsButton.addEventListener('click', function (_event) {\n cardMain.innerHTML = ''\n cardMain.appendChild(\n toolsPane(\n selectAllGroups,\n selectedGroups,\n groupsMainTable,\n book,\n dataBrowserContext,\n me\n )\n )\n })\n } // if book\n\n cardFooter.appendChild(newAddressBookButton(book))\n\n // })\n\n div.appendChild(dom.createElement('hr'))\n\n // const groups = await loadAllGroups() @@@\n checkDataModel().then(() => { console.log('async checkDataModel done.') })\n\n // div.appendChild(newAddressBookButton(book)) // later\n // end of AddressBook instance\n } // renderThreeColumnBrowser\n\n // ///////////////////////////////////////////////////////////////////////////////////\n\n // Render a single contact Individual\n\n if (\n t[ns.vcard('Individual').uri] ||\n t[ns.foaf('Person').uri] ||\n t[ns.schema('Person').uri] ||\n t[ns.vcard('Organization').uri] ||\n t[ns.schema('Organization').uri]\n ) {\n renderIndividual(dom, div, subject, dataBrowserContext).then(() => console.log('(individual rendered)'))\n\n // Render a Group instance\n } else if (t[ns.vcard('Group').uri]) {\n // If we have a main address book, then render this group as a guest group within it\n UI.login\n .findAppInstances(context, ns.vcard('AddressBook'))\n .then(function (context) {\n const addressBooks = context.instances\n const options = { foreignGroup: subject }\n if (addressBooks.length > 0) {\n // const book = addressBooks[0]\n renderThreeColumnBrowser(addressBooks, context, options)\n } else {\n renderThreeColumnBrowser([], context, options)\n // @@ button to Make a new addressBook\n }\n })\n .catch(function (e) {\n UI.widgets.complain(context, e)\n })\n\n // Render a AddressBook instance\n } else if (t[ns.vcard('AddressBook').uri]) {\n renderThreeColumnBrowser([subject], context, {})\n } else {\n console.log(\n 'Error: Contact pane: No evidence that ' +\n subject +\n ' is anything to do with contacts.'\n )\n }\n\n me = authn.currentUser()\n if (!me) {\n console.log(\n '(You do not have your Web Id set. Sign in or sign up to make changes.)'\n )\n UI.login.ensureLoadedProfile(context).then(\n context => {\n console.log('Logged in as ' + context.me)\n me = context.me\n },\n err => {\n div.appendChild(UI.widgets.errorMessageBlock(err))\n }\n )\n } else {\n // console.log(\"(Your webid is \"+ me +\")\")\n }\n\n // /////////////// Fix user when testing on a plane\n\n if (\n typeof document !== 'undefined' &&\n document.location &&\n ('' + document.location).slice(0, 16) === 'http://localhost'\n ) {\n me = kb.any(subject, UI.ns.acl('owner')) // when testing on plane with no webid\n console.log('Assuming user is ' + me)\n }\n return div\n } // asyncRender\n } // render function\n} // pane object\n// ends\n\nexport function getSameAs (kb, item, doc) {\n return kb.each(item, ns.owl('sameAs'), null, doc).concat(\n kb.each(null, ns.owl('sameAs'), item, doc))\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"contactsPane.js","names":["_solidLogic","require","_contactLogic","UI","_interopRequireWildcard","_mintNewAddressBook","_individual","_toolsPane","_groupMembershipControl","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ns","utils","style","_default","exports","icon","icons","iconBase","name","label","subject","context","session","store","findTypeURIs","vcard","uri","foaf","schema","mintClass","mintNew","mintNewAddressBook","render","dataBrowserContext","paneOptions","thisPane","complain","message","console","log","div","appendChild","widgets","errorMessageBlock","dom","complainIfBad","ok","body","newAddressBookButton","thisAddressBook","login","newAppInstance","noun","appPathSegment","ws","newBase","clone","me","kb","createElement","authn","currentUser","aclControl","preventBrowserDropEvents","setAttribute","asyncRender","then","err","target","renderThreeColumnBrowser","books","options","fetcher","load","_xhr","renderThreeColumnBrowser2","catch","classLabel","book","groupIndex","any","selectedGroups","selectedPeople","foreignGroup","title","dc","solo","document","value","findBookFromGroups","g","gu","sym","b","undefined","Error","nameFor","x","filterName","filter","searchInput","trim","toLowerCase","length","parts","split","j","word","indexOf","selectPerson","person","cardMain","innerHTML","refreshFilteredPeople","local","localNode","nowOrWhenFetched","doc","renderPane","linkIcon","deleteButton","deleteButtonWithCheck","container","dir","pname","confirm","loadAllGroups","nameEmailIndex","groups","groupMembership","removeFromGroups","forEach","group","webids","getSameAs","webid","concat","statementsMatching","updater","updateMany","deleteThingAndDoc","deleteRecursive","refreshNames","active","count","lastRow","peopleMainTable","children","row","matches","unique","selectAllGroups","groupsMainTable","callbackFunction","fetchGroupAndSelct","groupRow","msg","badness","push","refreshGroupsSelected","todo","k","gs","each","groupsInOrder","sortMe","gs2","map","sort","tuple","paneName","p","paneRegistry","byName","d","compareForSort","self","other","s","ds","delete","folder","Promise","resolve","promises","ldp","file","holds","rdf","webOperation","all","_res","_div","aliases","allAliases","prefix","slice","setPersonListener","personRow","addEventListener","event","preventDefault","cards","keys","groupURI","groupMembers","splice","peopleHeader","textContent","renderNameInGroupList","personLeft","dataCellStyle","makeDraggable","syncTableToArrayReOrdered","refreshThingsSelected","table","selectionArray","syncGroupTable","renderGroupRow","handleURIsDroppedOnGroup","uris","u","thing","addPersonToGroup","groupRowClickListener","groupList","metaKey","visible","ACLControlBox5","response","status","sharingButton","cssText","img","removeChild","makeDropTarget","checkDataModel","del","ins","getDataModelIssues","alert","newGroupClickHandler","_event","askName","saveNewGroup","craeteNewCard","klass","ourBook","saveNewContact","bookTable","bookHeader","bookMain","bookFooter","groupsHeader","cardHeader","groupsMain","peopleMain","groupsFooter","peopleFooter","cardFooter","searchInputStyle","setGroupListVisibility","vis","hfstyle","allGroups","state","newContactButton","checkUser","webId","removeAttribute","newOrganizationButton","container2","newGroupButton","toolsButton","toolsPane","renderIndividual","findAppInstances","addressBooks","instances","ensureLoadedProfile","location","acl","item","owl"],"sources":["../src/contactsPane.js"],"sourcesContent":["/* Contact AddressBook Pane\n**\n** This outline pane allows a user to interact with an contact,\nto change its state according to an ontology, comment on it, etc.\n**\n** See also things like\n** http://www.w3.org/TR/vcard-rdf/\n** http://tools.ietf.org/html/rfc6350\n** http://www.iana.org/assignments/vcard-elements/vcard-elements.xhtml\n**\n*/\n/* global alert, confirm */\n\nimport { authn } from 'solid-logic'\nimport { addPersonToGroup, saveNewContact, saveNewGroup, groupMembers, getDataModelIssues } from './contactLogic'\nimport * as UI from 'solid-ui'\nimport { mintNewAddressBook } from './mintNewAddressBook'\nimport { renderIndividual } from './individual'\nimport { toolsPane } from './toolsPane'\nimport { groupMembership } from './groupMembershipControl'\n\nconst ns = UI.ns\nconst utils = UI.utils\nconst style = UI.style\n\nexport default {\n icon: UI.icons.iconBase + 'noun_99101.svg', // changed from embedded icon 2016-05-01\n\n name: 'contact',\n\n // Does the subject deserve an contact pane?\n label: function (subject, context) {\n const t = context.session.store.findTypeURIs(subject)\n if (t[ns.vcard('Individual').uri]) return 'Contact'\n if (t[ns.vcard('Organization').uri]) return 'contact'\n if (t[ns.foaf('Person').uri]) return 'Person'\n if (t[ns.schema('Person').uri]) return 'Person'\n if (t[ns.vcard('Group').uri]) return 'Group'\n if (t[ns.vcard('AddressBook').uri]) return 'Address book'\n return null // No under other circumstances\n },\n\n mintClass: UI.ns.vcard('AddressBook'),\n\n mintNew: mintNewAddressBook, // Make a new address book\n\n // Render the pane\n render: function (subject, dataBrowserContext, paneOptions = {}) {\n const thisPane = this\n\n // stick functions here\n function complain (message) {\n console.log('contactsPane: ' + message)\n div.appendChild(UI.widgets.errorMessageBlock(dom, message, 'pink'))\n }\n function complainIfBad (ok, body) {\n if (!ok) {\n complain('Error: ' + body)\n }\n }\n\n // Reproduction: Spawn a new instance of this app\n function newAddressBookButton (thisAddressBook) {\n return UI.login.newAppInstance(\n dom,\n { noun: 'address book', appPathSegment: 'contactorator.timbl.com' },\n function (ws, newBase) {\n thisPane.clone(thisAddressBook, newBase, { // @@ clone is not a thing - use mintNew\n me,\n div,\n dom\n })\n }\n )\n } // newAddressBookButton\n\n const dom = dataBrowserContext.dom\n const kb = dataBrowserContext.session.store\n const div = dom.createElement('div')\n const me = authn.currentUser() // If already logged on\n\n UI.aclControl.preventBrowserDropEvents(dom) // protect drag and drop\n\n div.setAttribute('class', 'contactPane')\n\n asyncRender().then(\n () => console.log('contactsPane Rendered ' + subject),\n err => complain('' + err))\n return div\n\n // Async part of render. Maybe API will later allow render to be async\n async function asyncRender () {\n UI.aclControl.preventBrowserDropEvents(dom)\n\n const t = kb.findTypeURIs(subject)\n\n let me = authn.currentUser()\n\n const context = {\n target: subject,\n me,\n noun: 'address book',\n div,\n dom\n } // missing: statusRegion\n\n // Render a 3-column browser for an address book or a group\n function renderThreeColumnBrowser (books, context, options) {\n kb.fetcher\n .load(books)\n .then(function (_xhr) {\n renderThreeColumnBrowser2(books, context, options)\n })\n .catch(function (err) {\n complain(err)\n })\n }\n function renderThreeColumnBrowser2 (books, context, options) {\n const classLabel = utils.label(ns.vcard('AddressBook'))\n // const IndividualClassLabel = utils.label(ns.vcard('Individual'))\n\n let book = books[0] // for now\n const groupIndex = kb.any(book, ns.vcard('groupIndex'))\n let selectedGroups = {}\n let selectedPeople = {} // Actually prob max 1\n\n const target = options.foreignGroup || book\n\n let title =\n kb.any(target, ns.dc('title')) || kb.any(target, ns.vcard('fn'))\n if (paneOptions.solo && title && typeof document !== 'undefined') {\n document.title = title.value // @@ only when the outermmost pane\n }\n title = title ? title.value : classLabel\n\n // The book could be the main subject, or linked from a group we are dealing with\n function findBookFromGroups (book) {\n if (book) {\n return book\n }\n let g\n for (const gu in selectedGroups) {\n g = kb.sym(gu)\n const b = kb.any(undefined, ns.vcard('includesGroup'), g)\n if (b) return b\n }\n throw new Error(\n 'findBookFromGroups: Cant find address book which this group is part of'\n )\n }\n\n // Write a new contact to the web\n\n // organization-name is a hack for Mac records with no FN which is mandatory.\n function nameFor (x) {\n const name =\n kb.any(x, ns.vcard('fn')) ||\n kb.any(x, ns.foaf('name')) ||\n kb.any(x, ns.vcard('organization-name'))\n return name ? name.value : '???'\n }\n\n function filterName (name) {\n const filter = searchInput.value.trim().toLowerCase()\n if (filter.length === 0) return true\n const parts = filter.split(' ') // Each name part must be somewhere\n for (let j = 0; j < parts.length; j++) {\n const word = parts[j]\n if (name.toLowerCase().indexOf(word) < 0) return false\n }\n return true\n }\n\n function selectPerson (person) {\n cardMain.innerHTML = 'loading...'\n selectedPeople = {}\n selectedPeople[person.uri] = true\n refreshFilteredPeople() // Color to remember which one you picked\n const local = book ? localNode(person) : person\n kb.fetcher.nowOrWhenFetched(local.doc(), undefined, function (\n ok,\n message\n ) {\n cardMain.innerHTML = ''\n if (!ok) {\n return complainIfBad(\n ok,\n 'Can\\'t load card: ' + local + ': ' + message\n )\n }\n // console.log(\"Loaded card \" + local + '\\n')\n cardMain.appendChild(renderPane(dom, local, 'contact'))\n cardMain.appendChild(dom.createElement('br'))\n\n cardMain.appendChild(UI.widgets.linkIcon(dom, local)) // hoverHide\n\n // Add in a delete button to delete from AB\n const deleteButton = UI.widgets.deleteButtonWithCheck(\n dom,\n cardMain,\n 'contact',\n async function () {\n const container = person.dir() // ASSUMPTION THAT CARD IS IN ITS OWN DIRECTORY\n // alert('Container to delete is ' + container)\n const pname = kb.any(person, ns.vcard('fn'))\n if (\n confirm(\n 'Delete contact ' + pname + ' completely?? ' + container\n )\n ) {\n console.log('Deleting a contact ' + pname)\n await loadAllGroups() // need to wait for all groups to be loaded in case they have a link to this person\n // load people.ttl\n const nameEmailIndex = kb.any(book, ns.vcard('nameEmailIndex'))\n await kb.fetcher.load(nameEmailIndex)\n\n // - delete person's WebID's in each Group\n // - delete the references to it in group files and save them back\n // - delete the reference in people.ttl and save it back\n\n // find all Groups\n const groups = groupMembership(person)\n let removeFromGroups = []\n // find person WebID's\n groups.forEach(group => {\n const webids = getSameAs(kb, person, group.doc())\n // for each check in each Group that it is not used by an other person then delete\n webids.forEach(webid => {\n if (getSameAs(kb, webid, group.doc()).length === 1) {\n removeFromGroups = removeFromGroups.concat(kb.statementsMatching(group, ns.vcard('hasMember'), webid, group.doc()))\n }\n })\n })\n // console.log(removeFromGroups)\n await kb.updater.updateMany(removeFromGroups)\n await deleteThingAndDoc(person)\n await deleteRecursive(kb, container)\n refreshNames() // \"Doesn't work\" -- maybe does now with waiting for async\n cardMain.innerHTML = 'Contact Data Deleted.'\n }\n }\n )\n deleteButton.style = 'height: 2em;'\n })\n }\n\n function refreshFilteredPeople (active) {\n let count = 0\n let lastRow = null\n for (let i = 0; i < peopleMainTable.children.length; i++) {\n const row = peopleMainTable.children[i]\n const matches = filterName(nameFor(row.subject))\n if (matches) {\n count++\n lastRow = row\n }\n row.setAttribute(\n 'style',\n matches\n ? selectedPeople[row.subject.uri]\n ? 'background-color: #cce;'\n : ''\n : 'display: none;'\n )\n }\n if (count === 1 && active) {\n const unique = lastRow.subject\n // selectedPeople = { }\n // selectedPeople[unique.uri] = true\n // lastRow.setAttribute('style', 'background-color: #cce;')\n selectPerson(unique)\n }\n }\n\n function selectAllGroups (\n selectedGroups,\n groupsMainTable,\n callbackFunction\n ) {\n function fetchGroupAndSelct (group, groupRow) {\n groupRow.setAttribute('style', 'background-color: #ffe;')\n kb.fetcher.nowOrWhenFetched(group.doc(), undefined, function (\n ok,\n message\n ) {\n if (!ok) {\n const msg = 'Can\\'t load group file: ' + group + ': ' + message\n badness.push(msg)\n return complainIfBad(ok, msg)\n }\n groupRow.setAttribute('style', 'background-color: #cce;')\n selectedGroups[group.uri] = true\n refreshGroupsSelected()\n refreshNames() // @@ every time??\n todo -= 1\n if (!todo) {\n if (callbackFunction) { callbackFunction(badness.length === 0, badness) }\n }\n })\n }\n let todo = groupsMainTable.children.length\n var badness = [] /* eslint-disable-line no-var */\n for (let k = 0; k < groupsMainTable.children.length; k++) {\n const groupRow = groupsMainTable.children[k]\n const group = groupRow.subject\n fetchGroupAndSelct(group, groupRow)\n } // for each row\n }\n\n async function loadAllGroups () {\n await kb.fetcher.load(groupIndex)\n const gs = book ? kb.each(book, ns.vcard('includesGroup'), null, groupIndex) : []\n await kb.fetcher.load(gs)\n return gs\n }\n\n function groupsInOrder () {\n let sortMe = []\n if (options.foreignGroup) {\n sortMe.push([\n '',\n kb.any(options.foreignGroup, ns.vcard('fn')),\n options.foreignGroup\n ])\n }\n if (book) {\n books.forEach(function (book) {\n const gs = book ? kb.each(book, ns.vcard('includesGroup'), null, groupIndex) : []\n const gs2 = gs.map(function (g) {\n return [book, kb.any(g, ns.vcard('fn')), g]\n })\n sortMe = sortMe.concat(gs2)\n })\n sortMe.sort()\n }\n return sortMe.map(tuple => tuple[2])\n }\n\n function renderPane (dom, subject, paneName) {\n const p = dataBrowserContext.session.paneRegistry.byName(paneName)\n const d = p.render(subject, dataBrowserContext)\n d.setAttribute(\n 'style',\n 'border: 0.1em solid #444; border-radius: 0.5em'\n )\n return d\n }\n\n function compareForSort (self, other) {\n let s = nameFor(self)\n let o = nameFor(other)\n if (s && o) {\n s = s.toLowerCase()\n o = o.toLowerCase()\n if (s > o) return 1\n if (s < o) return -1\n }\n if (self.uri > other.uri) return 1\n if (self.uri < other.uri) return -1\n return 0\n }\n\n // In a LDP work, deletes the whole document describing a thing\n // plus patch out ALL mentiosn of it! Use with care!\n // beware of other data picked up from other places being smushed\n // together and then deleted.\n\n async function deleteThingAndDoc (x) {\n console.log('deleteThingAndDoc: ' + x)\n const ds = kb\n .statementsMatching(x)\n .concat(kb.statementsMatching(undefined, undefined, x))\n try {\n await kb.updater.updateMany(ds)\n console.log('Deleting resoure ' + x.doc())\n await kb.fetcher.delete(x.doc())\n console.log('Delete thing ' + x + ': complete.')\n } catch (err) {\n complain('Error deleting thing ' + x + ': ' + err)\n }\n }\n\n // For deleting an addressbook sub-folder eg person - use with care!\n // @@ move to solid-logic\n function deleteRecursive (kb, folder) {\n return new Promise(function (resolve) {\n kb.fetcher.load(folder).then(function () {\n const promises = kb.each(folder, ns.ldp('contains')).map(file => {\n if (kb.holds(file, ns.rdf('type'), ns.ldp('BasicContainer'))) {\n return deleteRecursive(kb, file)\n } else {\n console.log('deleteRecirsive file: ' + file)\n if (!confirm(' Really DELETE File ' + file)) {\n throw new Error('User aborted delete file')\n }\n return kb.fetcher.webOperation('DELETE', file.uri)\n }\n })\n console.log('deleteRecirsive folder: ' + folder)\n if (!confirm(' Really DELETE folder ' + folder)) {\n throw new Error('User aborted delete file')\n }\n promises.push(kb.fetcher.webOperation('DELETE', folder.uri))\n Promise.all(promises).then(_res => {\n resolve()\n })\n })\n })\n }\n\n function localNode (person, _div) {\n const aliases = kb.allAliases(person)\n const prefix = book.dir().uri\n for (let i = 0; i < aliases.length; i++) {\n if (aliases[i].uri.slice(0, prefix.length) === prefix) {\n return aliases[i]\n }\n }\n throw new Error('No local URI for ' + person)\n }\n\n /** Refresh the list of names\n */\n function refreshNames () {\n function setPersonListener (personRow, person) {\n personRow.addEventListener('click', function (event) {\n event.preventDefault()\n selectPerson(person)\n })\n }\n\n let cards = []\n const groups = Object.keys(selectedGroups).map(groupURI => kb.sym(groupURI))\n groups.forEach(group => {\n if (selectedGroups[group.value]) {\n cards = cards.concat(groupMembers(kb, group))\n }\n })\n cards.sort(compareForSort) // @@ sort by name not UID later\n for (let k = 0; k < cards.length - 1;) {\n if (cards[k].uri === cards[k + 1].uri) {\n cards.splice(k, 1) // Eliminate duplicates from more than one group\n } else {\n k++\n }\n }\n\n peopleHeader.textContent =\n cards.length > 5 ? '' + cards.length + ' contacts' : 'contact'\n\n function renderNameInGroupList (person) {\n const personRow = dom.createElement('tr')\n const personLeft = personRow.appendChild(dom.createElement('td'))\n // const personRight = personRow.appendChild(dom.createElement('td'))\n personLeft.setAttribute('style', dataCellStyle)\n personRow.subject = person\n const name = nameFor(person)\n personLeft.textContent = name\n personRow.subject = person\n UI.widgets.makeDraggable(personRow, person)\n\n setPersonListener(personRow, person)\n return personRow\n }\n\n utils.syncTableToArrayReOrdered(peopleMainTable, cards, renderNameInGroupList)\n refreshFilteredPeople()\n } // refreshNames\n\n function refreshThingsSelected (table, selectionArray) {\n for (let i = 0; i < table.children.length; i++) {\n const row = table.children[i]\n if (row.subject) {\n row.setAttribute(\n 'style',\n selectionArray[row.subject.uri] ? 'background-color: #cce;' : ''\n )\n }\n }\n }\n\n function refreshGroupsSelected () {\n return refreshThingsSelected(groupsMainTable, selectedGroups)\n }\n\n // Check every group is in the list and add it if not.\n\n function syncGroupTable () {\n function renderGroupRow (group) {\n // Is something is dropped on a group, add people to group\n async function handleURIsDroppedOnGroup (uris) {\n uris.forEach(function (u) {\n console.log('Dropped on group: ' + u)\n const thing = kb.sym(u)\n try {\n addPersonToGroup(thing, group)\n } catch (e) {\n complain(e)\n }\n refreshNames()\n })\n }\n function groupRowClickListener (event) {\n event.preventDefault()\n const groupList = kb.sym(group.uri.split('#')[0])\n if (!event.metaKey) {\n selectedGroups = {} // If Command key pressed, accumulate multiple\n }\n selectedGroups[group.uri] = !selectedGroups[group.uri]\n refreshGroupsSelected()\n peopleMainTable.innerHTML = '' // clear in case refreshNames doesn't work for unknown reason\n\n kb.fetcher.nowOrWhenFetched(\n groupList.uri,\n undefined,\n function (ok, message) {\n if (!ok) {\n return complainIfBad(\n ok,\n 'Can\\'t load group file: ' + groupList + ': ' + message\n )\n }\n refreshNames()\n\n if (!event.metaKey) {\n // If only one group has been selected, show ACL\n cardMain.innerHTML = ''\n let visible = false\n const aclControl = UI.aclControl.ACLControlBox5(\n group,\n dataBrowserContext,\n 'group',\n kb,\n function (ok, body, response) {\n if (!ok) {\n if (response && response.status && response.status === 403) {\n cardMain.innerHTML = 'No control access.'\n } else {\n cardMain.innerHTML = 'Failed to load access control: ' + body\n }\n }\n }\n )\n const sharingButton = cardMain.appendChild(\n dom.createElement('button')\n )\n sharingButton.style.cssText =\n 'padding: 1em; margin: 1em'\n const img = sharingButton.appendChild(\n dom.createElement('img')\n )\n img.style.cssText = 'width: 1.5em; height: 1.5em'\n img.setAttribute(\n 'src',\n UI.icons.iconBase + 'noun_123691.svg'\n )\n sharingButton.addEventListener('click', function () {\n visible = !visible\n if (visible) {\n cardMain.appendChild(aclControl)\n } else {\n cardMain.removeChild(aclControl)\n }\n })\n }\n }\n )\n }\n\n // Body of renderGroupRow\n const name = kb.any(group, ns.vcard('fn'))\n const groupRow = dom.createElement('tr')\n groupRow.subject = group\n UI.widgets.makeDraggable(groupRow, group)\n\n groupRow.setAttribute('style', dataCellStyle)\n groupRow.textContent = name\n\n UI.widgets.makeDropTarget(groupRow, handleURIsDroppedOnGroup)\n UI.widgets.deleteButtonWithCheck(\n dom,\n groupRow,\n 'group ' + name,\n async function () {\n await deleteThingAndDoc(group)\n syncGroupTable()\n }\n )\n groupRow.addEventListener('click', groupRowClickListener, true)\n return groupRow\n } // renderGroupRow\n\n const groups = groupsInOrder()\n utils.syncTableToArrayReOrdered(groupsMainTable, groups, renderGroupRow)\n refreshGroupsSelected()\n // await checkDataModel(groups)\n } // syncGroupTable\n\n async function checkDataModel () {\n // await kb.fetcher.load(groups) // asssume loaded already\n const groups = await loadAllGroups()\n\n const { del, ins } = await getDataModelIssues(groups)\n\n if (del.length && confirm(`Groups data model need to be updated? (${del.length})`)) {\n await kb.updater.updateMany(del, ins)\n alert('Update done')\n }\n } // checkDataModel\n\n // Click on New Group button\n async function newGroupClickHandler (_event) {\n cardMain.innerHTML = ''\n const groupIndex = kb.any(book, ns.vcard('groupIndex'))\n try {\n await kb.fetcher.load(groupIndex)\n } catch (e) {\n console.log('Error: Group index NOT loaded:' + e + '\\n')\n }\n console.log(' Group index has been loaded\\n')\n\n const name = await UI.widgets.askName(\n dom, kb, cardMain, UI.ns.foaf('name'), ns.vcard('Group'), 'group')\n if (!name) return // cancelled by user\n let group\n try {\n group = await saveNewGroup(book, name)\n } catch (err) {\n console.log('Error: can\\'t save new group:' + err)\n cardMain.innerHTML = 'Failed to save group' + err\n return\n }\n selectedGroups = {}\n selectedGroups[group.uri] = true\n syncGroupTable() // Refresh list of groups\n\n cardMain.innerHTML = ''\n cardMain.appendChild(UI.aclControl.ACLControlBox5(\n group.doc(), dataBrowserContext, 'group', kb,\n function (ok, body) {\n if (!ok) {\n cardMain.innerHTML =\n 'Group sharing setup failed: ' + body\n }\n }))\n } // newGroupClickHandler\n\n async function craeteNewCard (klass) {\n cardMain.innerHTML = ''\n const ourBook = findBookFromGroups(book)\n try {\n await kb.fetcher.load(ourBook)\n } catch (err) {\n throw new Error('Book won\\'t load:' + ourBook)\n }\n\n const nameEmailIndex = kb.any(ourBook, ns.vcard('nameEmailIndex'))\n if (!nameEmailIndex) throw new Error('Wot no nameEmailIndex?')\n await kb.fetcher.load(nameEmailIndex)\n // console.log('Name index loaded async' + nameEmailIndex)\n\n const name = await UI.widgets\n .askName(dom, kb, cardMain, UI.ns.foaf('name'), klass) // @@ was, 'person'\n\n if (!name) return // cancelled by user\n cardMain.innerHTML = 'indexing...'\n book = findBookFromGroups(book)\n let person\n try {\n person = await saveNewContact(book, name, selectedGroups, klass)\n } catch (err) {\n const msg = 'Error: can\\'t save new contact: ' + err\n console.log(msg)\n alert(msg)\n }\n\n selectedPeople = {}\n selectedPeople[person.uri] = true\n refreshNames() // Add name to list of group\n cardMain.innerHTML = '' // Clear 'indexing'\n cardMain.appendChild(renderPane(dom, person, 'contact'))\n }\n\n // //////////////////////////// Three-column Contact Browser - Body\n // ////////////////// Body of 3-column browser\n\n const bookTable = dom.createElement('table')\n bookTable.setAttribute(\n 'style',\n 'border-collapse: collapse; margin-right: 0; max-height: 9in;'\n )\n div.appendChild(bookTable)\n /*\n bookTable.innerHTML = `\n <tr>\n <td id=\"groupsHeader\"></td>\n <td id=\"peopleHeader\"></td>\n <td id=\"cardHeader\"></td>\n </tr>\n <tr id=\"bookMain\"></tr>\n <tr>\n <td id=\"groupsFooter\">\n </td><td id=\"peopleFooter\">\n </td><td id=\"cardFooter\">\n </td>\n </tr>`\n */\n const bookHeader = bookTable.appendChild(dom.createElement('tr'))\n const bookMain = bookTable.appendChild(dom.createElement('tr'))\n const bookFooter = bookTable.appendChild(dom.createElement('tr'))\n\n const groupsHeader = bookHeader.appendChild(dom.createElement('td'))\n const peopleHeader = bookHeader.appendChild(dom.createElement('td'))\n const cardHeader = bookHeader.appendChild(dom.createElement('td'))\n\n const groupsMain = bookMain.appendChild(dom.createElement('td'))\n const groupsMainTable = groupsMain.appendChild(dom.createElement('table'))\n const peopleMain = bookMain.appendChild(dom.createElement('td'))\n const peopleMainTable = peopleMain.appendChild(dom.createElement('table'))\n\n const groupsFooter = bookFooter.appendChild(dom.createElement('td'))\n const peopleFooter = bookFooter.appendChild(dom.createElement('td'))\n const cardFooter = bookFooter.appendChild(dom.createElement('td'))\n\n cardHeader.appendChild(dom.createElement('div')) // searchDiv\n // searchDiv.setAttribute('style', 'border: 0.1em solid #888; border-radius: 0.5em')\n const searchInput = cardHeader.appendChild(dom.createElement('input'))\n searchInput.setAttribute('type', 'text')\n searchInput.style = style.searchInputStyle ||\n 'border: 0.1em solid #444; border-radius: 0.5em; width: 100%; font-size: 100%; padding: 0.1em 0.6em'\n\n searchInput.addEventListener('input', function (_event) {\n refreshFilteredPeople(true) // Active: select person if just one left\n })\n\n const cardMain = bookMain.appendChild(dom.createElement('td'))\n cardMain.setAttribute('style', 'margin: 0;') // fill space available\n const dataCellStyle = 'padding: 0.1em;'\n\n groupsHeader.textContent = 'groups'\n groupsHeader.setAttribute(\n 'style',\n 'min-width: 10em; padding-bottom 0.2em;'\n )\n\n function setGroupListVisibility (visible) {\n const vis = visible ? '' : 'display: none;'\n groupsHeader.setAttribute(\n 'style',\n 'min-width: 10em; padding-bottom 0.2em;' + vis\n )\n const hfstyle = 'padding: 0.1em;'\n groupsMain.setAttribute('style', hfstyle + vis)\n groupsFooter.setAttribute('style', hfstyle + vis)\n }\n setGroupListVisibility(true)\n\n if (options.foreignGroup) {\n selectedGroups[options.foreignGroup.uri] = true\n }\n if (book) {\n const allGroups = groupsHeader.appendChild(dom.createElement('button'))\n allGroups.textContent = 'All'\n const style = 'margin-left: 1em; font-size: 100%;'\n allGroups.setAttribute('style', style)\n allGroups.addEventListener('click', function (_event) {\n allGroups.state = allGroups.state ? 0 : 1\n peopleMainTable.innerHTML = '' // clear in case refreshNames doesn't work for unknown reason\n if (allGroups.state) {\n allGroups.setAttribute('style', style + 'background-color: #ff8;')\n selectAllGroups(selectedGroups, groupsMainTable, function (\n ok,\n message\n ) {\n if (!ok) return complain(message)\n allGroups.setAttribute(\n 'style',\n style + 'background-color: black; color: white'\n )\n refreshGroupsSelected()\n })\n } else {\n allGroups.setAttribute('style', style + 'background-color: #cfc;') // pale green hint groups loaded\n selectedGroups = {}\n refreshGroupsSelected()\n }\n }) // on button click\n kb.fetcher.nowOrWhenFetched(groupIndex.uri, book, function (ok, body) {\n if (!ok) return console.log('Cannot load group index: ' + body)\n syncGroupTable()\n refreshNames()\n })\n } else {\n syncGroupTable()\n refreshNames()\n console.log('No book, only one group -> hide list of groups')\n setGroupListVisibility(false) // If no books involved, hide group list\n } // if not book\n\n peopleHeader.textContent = 'name'\n peopleHeader.setAttribute('style', 'min-width: 18em;')\n peopleMain.setAttribute('style', 'overflow:scroll;')\n\n // New Contact button\n const newContactButton = dom.createElement('button')\n const container = dom.createElement('div')\n newContactButton.setAttribute('type', 'button')\n if (!me) newContactButton.setAttribute('disabled', 'true')\n authn.checkUser().then(webId => {\n if (webId) {\n me = webId\n newContactButton.removeAttribute('disabled')\n }\n })\n container.appendChild(newContactButton)\n newContactButton.innerHTML = 'New Contact' // + IndividualClassLabel\n peopleFooter.appendChild(container)\n newContactButton.addEventListener('click', async _event => craeteNewCard(ns.vcard('Individual')), false)\n\n // New Organization button\n const newOrganizationButton = dom.createElement('button')\n const container2 = dom.createElement('div')\n newOrganizationButton.setAttribute('type', 'button')\n if (!me) newOrganizationButton.setAttribute('disabled', 'true')\n authn.checkUser().then(webId => {\n if (webId) {\n me = webId\n newOrganizationButton.removeAttribute('disabled')\n }\n })\n container2.appendChild(newOrganizationButton)\n newOrganizationButton.innerHTML = 'New Organization' // + IndividualClassLabel\n peopleFooter.appendChild(container2)\n newOrganizationButton.addEventListener('click', async _event => craeteNewCard(ns.vcard('Organization')), false)\n\n // New Group button\n if (book) {\n const newGroupButton = groupsFooter.appendChild(\n dom.createElement('button')\n )\n newGroupButton.setAttribute('type', 'button')\n newGroupButton.innerHTML = 'New Group' // + IndividualClassLabel\n newGroupButton.addEventListener(\n 'click', newGroupClickHandler,\n false\n )\n\n // Tools button\n const toolsButton = cardFooter.appendChild(dom.createElement('button'))\n toolsButton.setAttribute('type', 'button')\n toolsButton.innerHTML = 'Tools'\n toolsButton.addEventListener('click', function (_event) {\n cardMain.innerHTML = ''\n cardMain.appendChild(\n toolsPane(\n selectAllGroups,\n selectedGroups,\n groupsMainTable,\n book,\n dataBrowserContext,\n me\n )\n )\n })\n } // if book\n\n cardFooter.appendChild(newAddressBookButton(book))\n\n // })\n\n div.appendChild(dom.createElement('hr'))\n\n // const groups = await loadAllGroups() @@@\n checkDataModel().then(() => { console.log('async checkDataModel done.') })\n\n // div.appendChild(newAddressBookButton(book)) // later\n // end of AddressBook instance\n } // renderThreeColumnBrowser\n\n // ///////////////////////////////////////////////////////////////////////////////////\n\n // Render a single contact Individual\n\n if (\n t[ns.vcard('Individual').uri] ||\n t[ns.foaf('Person').uri] ||\n t[ns.schema('Person').uri] ||\n t[ns.vcard('Organization').uri] ||\n t[ns.schema('Organization').uri]\n ) {\n renderIndividual(dom, div, subject, dataBrowserContext).then(() => console.log('(individual rendered)'))\n\n // Render a Group instance\n } else if (t[ns.vcard('Group').uri]) {\n // If we have a main address book, then render this group as a guest group within it\n UI.login\n .findAppInstances(context, ns.vcard('AddressBook'))\n .then(function (context) {\n const addressBooks = context.instances\n const options = { foreignGroup: subject }\n if (addressBooks.length > 0) {\n // const book = addressBooks[0]\n renderThreeColumnBrowser(addressBooks, context, options)\n } else {\n renderThreeColumnBrowser([], context, options)\n // @@ button to Make a new addressBook\n }\n })\n .catch(function (e) {\n UI.widgets.complain(context, e)\n })\n\n // Render a AddressBook instance\n } else if (t[ns.vcard('AddressBook').uri]) {\n renderThreeColumnBrowser([subject], context, {})\n } else {\n console.log(\n 'Error: Contact pane: No evidence that ' +\n subject +\n ' is anything to do with contacts.'\n )\n }\n\n me = authn.currentUser()\n if (!me) {\n console.log(\n '(You do not have your Web Id set. Sign in or sign up to make changes.)'\n )\n UI.login.ensureLoadedProfile(context).then(\n context => {\n console.log('Logged in as ' + context.me)\n me = context.me\n },\n err => {\n div.appendChild(UI.widgets.errorMessageBlock(err))\n }\n )\n } else {\n // console.log(\"(Your webid is \"+ me +\")\")\n }\n\n // /////////////// Fix user when testing on a plane\n\n if (\n typeof document !== 'undefined' &&\n document.location &&\n ('' + document.location).slice(0, 16) === 'http://localhost'\n ) {\n me = kb.any(subject, UI.ns.acl('owner')) // when testing on plane with no webid\n console.log('Assuming user is ' + me)\n }\n return div\n } // asyncRender\n } // render function\n} // pane object\n// ends\n\nexport function getSameAs (kb, item, doc) {\n return kb.each(item, ns.owl('sameAs'), null, doc).concat(\n kb.each(null, ns.owl('sameAs'), item, doc))\n}\n"],"mappings":";;;;;;;AAaA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,EAAA,GAAAC,uBAAA,CAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,UAAA,GAAAN,OAAA;AACA,IAAAO,uBAAA,GAAAP,OAAA;AAA0D,SAAAG,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAnB1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA,MAAMkB,EAAE,GAAGzB,EAAE,CAACyB,EAAE;AAChB,MAAMC,KAAK,GAAG1B,EAAE,CAAC0B,KAAK;AACtB,MAAMC,KAAK,GAAG3B,EAAE,CAAC2B,KAAK;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAb,OAAA,GAEP;EACbc,IAAI,EAAE9B,EAAE,CAAC+B,KAAK,CAACC,QAAQ,GAAG,gBAAgB;EAAE;;EAE5CC,IAAI,EAAE,SAAS;EAEf;EACAC,KAAK,EAAE,SAAAA,CAAUC,OAAO,EAAEC,OAAO,EAAE;IACjC,MAAM7B,CAAC,GAAG6B,OAAO,CAACC,OAAO,CAACC,KAAK,CAACC,YAAY,CAACJ,OAAO,CAAC;IACrD,IAAI5B,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,YAAY,CAAC,CAACC,GAAG,CAAC,EAAE,OAAO,SAAS;IACnD,IAAIlC,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,cAAc,CAAC,CAACC,GAAG,CAAC,EAAE,OAAO,SAAS;IACrD,IAAIlC,CAAC,CAACkB,EAAE,CAACiB,IAAI,CAAC,QAAQ,CAAC,CAACD,GAAG,CAAC,EAAE,OAAO,QAAQ;IAC7C,IAAIlC,CAAC,CAACkB,EAAE,CAACkB,MAAM,CAAC,QAAQ,CAAC,CAACF,GAAG,CAAC,EAAE,OAAO,QAAQ;IAC/C,IAAIlC,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,OAAO,CAAC,CAACC,GAAG,CAAC,EAAE,OAAO,OAAO;IAC5C,IAAIlC,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,aAAa,CAAC,CAACC,GAAG,CAAC,EAAE,OAAO,cAAc;IACzD,OAAO,IAAI,EAAC;EACd,CAAC;EAEDG,SAAS,EAAE5C,EAAE,CAACyB,EAAE,CAACe,KAAK,CAAC,aAAa,CAAC;EAErCK,OAAO,EAAEC,sCAAkB;EAAE;;EAE7B;EACAC,MAAM,EAAE,SAAAA,CAAUZ,OAAO,EAAEa,kBAAkB,EAAEC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC/D,MAAMC,QAAQ,GAAG,IAAI;;IAErB;IACA,SAASC,QAAQA,CAAEC,OAAO,EAAE;MAC1BC,OAAO,CAACC,GAAG,CAAC,gBAAgB,GAAGF,OAAO,CAAC;MACvCG,GAAG,CAACC,WAAW,CAACxD,EAAE,CAACyD,OAAO,CAACC,iBAAiB,CAACC,GAAG,EAAEP,OAAO,EAAE,MAAM,CAAC,CAAC;IACrE;IACA,SAASQ,aAAaA,CAAEC,EAAE,EAAEC,IAAI,EAAE;MAChC,IAAI,CAACD,EAAE,EAAE;QACPV,QAAQ,CAAC,SAAS,GAAGW,IAAI,CAAC;MAC5B;IACF;;IAEA;IACA,SAASC,oBAAoBA,CAAEC,eAAe,EAAE;MAC9C,OAAOhE,EAAE,CAACiE,KAAK,CAACC,cAAc,CAC5BP,GAAG,EACH;QAAEQ,IAAI,EAAE,cAAc;QAAEC,cAAc,EAAE;MAA0B,CAAC,EACnE,UAAUC,EAAE,EAAEC,OAAO,EAAE;QACrBpB,QAAQ,CAACqB,KAAK,CAACP,eAAe,EAAEM,OAAO,EAAE;UAAE;UACzCE,EAAE;UACFjB,GAAG;UACHI;QACF,CAAC,CAAC;MACJ,CACF,CAAC;IACH,CAAC,CAAC;;IAEF,MAAMA,GAAG,GAAGX,kBAAkB,CAACW,GAAG;IAClC,MAAMc,EAAE,GAAGzB,kBAAkB,CAACX,OAAO,CAACC,KAAK;IAC3C,MAAMiB,GAAG,GAAGI,GAAG,CAACe,aAAa,CAAC,KAAK,CAAC;IACpC,MAAMF,EAAE,GAAGG,iBAAK,CAACC,WAAW,CAAC,CAAC,EAAC;;IAE/B5E,EAAE,CAAC6E,UAAU,CAACC,wBAAwB,CAACnB,GAAG,CAAC,EAAC;;IAE5CJ,GAAG,CAACwB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC;IAExCC,WAAW,CAAC,CAAC,CAACC,IAAI,CAChB,MAAM5B,OAAO,CAACC,GAAG,CAAC,wBAAwB,GAAGnB,OAAO,CAAC,EACrD+C,GAAG,IAAI/B,QAAQ,CAAC,EAAE,GAAG+B,GAAG,CAAC,CAAC;IAC5B,OAAO3B,GAAG;;IAEV;IACA,eAAeyB,WAAWA,CAAA,EAAI;MAC5BhF,EAAE,CAAC6E,UAAU,CAACC,wBAAwB,CAACnB,GAAG,CAAC;MAE3C,MAAMpD,CAAC,GAAGkE,EAAE,CAAClC,YAAY,CAACJ,OAAO,CAAC;MAElC,IAAIqC,EAAE,GAAGG,iBAAK,CAACC,WAAW,CAAC,CAAC;MAE5B,MAAMxC,OAAO,GAAG;QACd+C,MAAM,EAAEhD,OAAO;QACfqC,EAAE;QACFL,IAAI,EAAE,cAAc;QACpBZ,GAAG;QACHI;MACF,CAAC,EAAC;;MAEF;MACA,SAASyB,wBAAwBA,CAAEC,KAAK,EAAEjD,OAAO,EAAEkD,OAAO,EAAE;QAC1Db,EAAE,CAACc,OAAO,CACPC,IAAI,CAACH,KAAK,CAAC,CACXJ,IAAI,CAAC,UAAUQ,IAAI,EAAE;UACpBC,yBAAyB,CAACL,KAAK,EAAEjD,OAAO,EAAEkD,OAAO,CAAC;QACpD,CAAC,CAAC,CACDK,KAAK,CAAC,UAAUT,GAAG,EAAE;UACpB/B,QAAQ,CAAC+B,GAAG,CAAC;QACf,CAAC,CAAC;MACN;MACA,SAASQ,yBAAyBA,CAAEL,KAAK,EAAEjD,OAAO,EAAEkD,OAAO,EAAE;QAC3D,MAAMM,UAAU,GAAGlE,KAAK,CAACQ,KAAK,CAACT,EAAE,CAACe,KAAK,CAAC,aAAa,CAAC,CAAC;QACvD;;QAEA,IAAIqD,IAAI,GAAGR,KAAK,CAAC,CAAC,CAAC,EAAC;QACpB,MAAMS,UAAU,GAAGrB,EAAE,CAACsB,GAAG,CAACF,IAAI,EAAEpE,EAAE,CAACe,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAIwD,cAAc,GAAG,CAAC,CAAC;QACvB,IAAIC,cAAc,GAAG,CAAC,CAAC,EAAC;;QAExB,MAAMd,MAAM,GAAGG,OAAO,CAACY,YAAY,IAAIL,IAAI;QAE3C,IAAIM,KAAK,GACP1B,EAAE,CAACsB,GAAG,CAACZ,MAAM,EAAE1D,EAAE,CAAC2E,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI3B,EAAE,CAACsB,GAAG,CAACZ,MAAM,EAAE1D,EAAE,CAACe,KAAK,CAAC,IAAI,CAAC,CAAC;QAClE,IAAIS,WAAW,CAACoD,IAAI,IAAIF,KAAK,IAAI,OAAOG,QAAQ,KAAK,WAAW,EAAE;UAChEA,QAAQ,CAACH,KAAK,GAAGA,KAAK,CAACI,KAAK,EAAC;QAC/B;QACAJ,KAAK,GAAGA,KAAK,GAAGA,KAAK,CAACI,KAAK,GAAGX,UAAU;;QAExC;QACA,SAASY,kBAAkBA,CAAEX,IAAI,EAAE;UACjC,IAAIA,IAAI,EAAE;YACR,OAAOA,IAAI;UACb;UACA,IAAIY,CAAC;UACL,KAAK,MAAMC,EAAE,IAAIV,cAAc,EAAE;YAC/BS,CAAC,GAAGhC,EAAE,CAACkC,GAAG,CAACD,EAAE,CAAC;YACd,MAAME,CAAC,GAAGnC,EAAE,CAACsB,GAAG,CAACc,SAAS,EAAEpF,EAAE,CAACe,KAAK,CAAC,eAAe,CAAC,EAAEiE,CAAC,CAAC;YACzD,IAAIG,CAAC,EAAE,OAAOA,CAAC;UACjB;UACA,MAAM,IAAIE,KAAK,CACb,wEACF,CAAC;QACH;;QAEA;;QAEA;QACA,SAASC,OAAOA,CAAEC,CAAC,EAAE;UACnB,MAAM/E,IAAI,GACRwC,EAAE,CAACsB,GAAG,CAACiB,CAAC,EAAEvF,EAAE,CAACe,KAAK,CAAC,IAAI,CAAC,CAAC,IACzBiC,EAAE,CAACsB,GAAG,CAACiB,CAAC,EAAEvF,EAAE,CAACiB,IAAI,CAAC,MAAM,CAAC,CAAC,IAC1B+B,EAAE,CAACsB,GAAG,CAACiB,CAAC,EAAEvF,EAAE,CAACe,KAAK,CAAC,mBAAmB,CAAC,CAAC;UAC1C,OAAOP,IAAI,GAAGA,IAAI,CAACsE,KAAK,GAAG,KAAK;QAClC;QAEA,SAASU,UAAUA,CAAEhF,IAAI,EAAE;UACzB,MAAMiF,MAAM,GAAGC,WAAW,CAACZ,KAAK,CAACa,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;UACrD,IAAIH,MAAM,CAACI,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;UACpC,MAAMC,KAAK,GAAGL,MAAM,CAACM,KAAK,CAAC,GAAG,CAAC,EAAC;UAChC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACD,MAAM,EAAEG,CAAC,EAAE,EAAE;YACrC,MAAMC,IAAI,GAAGH,KAAK,CAACE,CAAC,CAAC;YACrB,IAAIxF,IAAI,CAACoF,WAAW,CAAC,CAAC,CAACM,OAAO,CAACD,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK;UACxD;UACA,OAAO,IAAI;QACb;QAEA,SAASE,YAAYA,CAAEC,MAAM,EAAE;UAC7BC,QAAQ,CAACC,SAAS,GAAG,YAAY;UACjC9B,cAAc,GAAG,CAAC,CAAC;UACnBA,cAAc,CAAC4B,MAAM,CAACpF,GAAG,CAAC,GAAG,IAAI;UACjCuF,qBAAqB,CAAC,CAAC,EAAC;UACxB,MAAMC,KAAK,GAAGpC,IAAI,GAAGqC,SAAS,CAACL,MAAM,CAAC,GAAGA,MAAM;UAC/CpD,EAAE,CAACc,OAAO,CAAC4C,gBAAgB,CAACF,KAAK,CAACG,GAAG,CAAC,CAAC,EAAEvB,SAAS,EAAE,UAClDhD,EAAE,EACFT,OAAO,EACP;YACA0E,QAAQ,CAACC,SAAS,GAAG,EAAE;YACvB,IAAI,CAAClE,EAAE,EAAE;cACP,OAAOD,aAAa,CAClBC,EAAE,EACF,oBAAoB,GAAGoE,KAAK,GAAG,IAAI,GAAG7E,OACxC,CAAC;YACH;YACA;YACA0E,QAAQ,CAACtE,WAAW,CAAC6E,UAAU,CAAC1E,GAAG,EAAEsE,KAAK,EAAE,SAAS,CAAC,CAAC;YACvDH,QAAQ,CAACtE,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;YAE7CoD,QAAQ,CAACtE,WAAW,CAACxD,EAAE,CAACyD,OAAO,CAAC6E,QAAQ,CAAC3E,GAAG,EAAEsE,KAAK,CAAC,CAAC,EAAC;;YAEtD;YACA,MAAMM,YAAY,GAAGvI,EAAE,CAACyD,OAAO,CAAC+E,qBAAqB,CACnD7E,GAAG,EACHmE,QAAQ,EACR,SAAS,EACT,kBAAkB;cAChB,MAAMW,SAAS,GAAGZ,MAAM,CAACa,GAAG,CAAC,CAAC,EAAC;cAC/B;cACA,MAAMC,KAAK,GAAGlE,EAAE,CAACsB,GAAG,CAAC8B,MAAM,EAAEpG,EAAE,CAACe,KAAK,CAAC,IAAI,CAAC,CAAC;cAC5C,IACEoG,OAAO,CACL,iBAAiB,GAAGD,KAAK,GAAG,gBAAgB,GAAGF,SACjD,CAAC,EACD;gBACApF,OAAO,CAACC,GAAG,CAAC,qBAAqB,GAAGqF,KAAK,CAAC;gBAC1C,MAAME,aAAa,CAAC,CAAC,EAAC;gBACtB;gBACA,MAAMC,cAAc,GAAGrE,EAAE,CAACsB,GAAG,CAACF,IAAI,EAAEpE,EAAE,CAACe,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC/D,MAAMiC,EAAE,CAACc,OAAO,CAACC,IAAI,CAACsD,cAAc,CAAC;;gBAErC;gBACA;gBACA;;gBAEA;gBACA,MAAMC,MAAM,GAAG,IAAAC,uCAAe,EAACnB,MAAM,CAAC;gBACtC,IAAIoB,gBAAgB,GAAG,EAAE;gBACzB;gBACAF,MAAM,CAACG,OAAO,CAACC,KAAK,IAAI;kBACtB,MAAMC,MAAM,GAAGC,SAAS,CAAC5E,EAAE,EAAEoD,MAAM,EAAEsB,KAAK,CAACf,GAAG,CAAC,CAAC,CAAC;kBACjD;kBACAgB,MAAM,CAACF,OAAO,CAACI,KAAK,IAAI;oBACtB,IAAID,SAAS,CAAC5E,EAAE,EAAE6E,KAAK,EAAEH,KAAK,CAACf,GAAG,CAAC,CAAC,CAAC,CAACd,MAAM,KAAK,CAAC,EAAE;sBAClD2B,gBAAgB,GAAGA,gBAAgB,CAACM,MAAM,CAAC9E,EAAE,CAAC+E,kBAAkB,CAACL,KAAK,EAAE1H,EAAE,CAACe,KAAK,CAAC,WAAW,CAAC,EAAE8G,KAAK,EAAEH,KAAK,CAACf,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrH;kBACF,CAAC,CAAC;gBACJ,CAAC,CAAC;gBACF;gBACA,MAAM3D,EAAE,CAACgF,OAAO,CAACC,UAAU,CAACT,gBAAgB,CAAC;gBAC7C,MAAMU,iBAAiB,CAAC9B,MAAM,CAAC;gBAC/B,MAAM+B,eAAe,CAACnF,EAAE,EAAEgE,SAAS,CAAC;gBACpCoB,YAAY,CAAC,CAAC,EAAC;gBACf/B,QAAQ,CAACC,SAAS,GAAG,uBAAuB;cAC9C;YACF,CACF,CAAC;YACDQ,YAAY,CAAC5G,KAAK,GAAG,cAAc;UACrC,CAAC,CAAC;QACJ;QAEA,SAASqG,qBAAqBA,CAAE8B,MAAM,EAAE;UACtC,IAAIC,KAAK,GAAG,CAAC;UACb,IAAIC,OAAO,GAAG,IAAI;UAClB,KAAK,IAAInJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoJ,eAAe,CAACC,QAAQ,CAAC5C,MAAM,EAAEzG,CAAC,EAAE,EAAE;YACxD,MAAMsJ,GAAG,GAAGF,eAAe,CAACC,QAAQ,CAACrJ,CAAC,CAAC;YACvC,MAAMuJ,OAAO,GAAGnD,UAAU,CAACF,OAAO,CAACoD,GAAG,CAAChI,OAAO,CAAC,CAAC;YAChD,IAAIiI,OAAO,EAAE;cACXL,KAAK,EAAE;cACPC,OAAO,GAAGG,GAAG;YACf;YACAA,GAAG,CAACpF,YAAY,CACd,OAAO,EACPqF,OAAO,GACHnE,cAAc,CAACkE,GAAG,CAAChI,OAAO,CAACM,GAAG,CAAC,GAC7B,yBAAyB,GACzB,EAAE,GACJ,gBACN,CAAC;UACH;UACA,IAAIsH,KAAK,KAAK,CAAC,IAAID,MAAM,EAAE;YACzB,MAAMO,MAAM,GAAGL,OAAO,CAAC7H,OAAO;YAC9B;YACA;YACA;YACAyF,YAAY,CAACyC,MAAM,CAAC;UACtB;QACF;QAEA,SAASC,eAAeA,CACtBtE,cAAc,EACduE,eAAe,EACfC,gBAAgB,EAChB;UACA,SAASC,kBAAkBA,CAAEtB,KAAK,EAAEuB,QAAQ,EAAE;YAC5CA,QAAQ,CAAC3F,YAAY,CAAC,OAAO,EAAE,yBAAyB,CAAC;YACzDN,EAAE,CAACc,OAAO,CAAC4C,gBAAgB,CAACgB,KAAK,CAACf,GAAG,CAAC,CAAC,EAAEvB,SAAS,EAAE,UAClDhD,EAAE,EACFT,OAAO,EACP;cACA,IAAI,CAACS,EAAE,EAAE;gBACP,MAAM8G,GAAG,GAAG,0BAA0B,GAAGxB,KAAK,GAAG,IAAI,GAAG/F,OAAO;gBAC/DwH,OAAO,CAACC,IAAI,CAACF,GAAG,CAAC;gBACjB,OAAO/G,aAAa,CAACC,EAAE,EAAE8G,GAAG,CAAC;cAC/B;cACAD,QAAQ,CAAC3F,YAAY,CAAC,OAAO,EAAE,yBAAyB,CAAC;cACzDiB,cAAc,CAACmD,KAAK,CAAC1G,GAAG,CAAC,GAAG,IAAI;cAChCqI,qBAAqB,CAAC,CAAC;cACvBjB,YAAY,CAAC,CAAC,EAAC;cACfkB,IAAI,IAAI,CAAC;cACT,IAAI,CAACA,IAAI,EAAE;gBACT,IAAIP,gBAAgB,EAAE;kBAAEA,gBAAgB,CAACI,OAAO,CAACtD,MAAM,KAAK,CAAC,EAAEsD,OAAO,CAAC;gBAAC;cAC1E;YACF,CAAC,CAAC;UACJ;UACA,IAAIG,IAAI,GAAGR,eAAe,CAACL,QAAQ,CAAC5C,MAAM;UAC1C,IAAIsD,OAAO,GAAG,EAAE,EAAC;UACjB,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,eAAe,CAACL,QAAQ,CAAC5C,MAAM,EAAE0D,CAAC,EAAE,EAAE;YACxD,MAAMN,QAAQ,GAAGH,eAAe,CAACL,QAAQ,CAACc,CAAC,CAAC;YAC5C,MAAM7B,KAAK,GAAGuB,QAAQ,CAACvI,OAAO;YAC9BsI,kBAAkB,CAACtB,KAAK,EAAEuB,QAAQ,CAAC;UACrC,CAAC,CAAC;QACJ;QAEA,eAAe7B,aAAaA,CAAA,EAAI;UAC9B,MAAMpE,EAAE,CAACc,OAAO,CAACC,IAAI,CAACM,UAAU,CAAC;UACjC,MAAMmF,EAAE,GAAGpF,IAAI,GAAGpB,EAAE,CAACyG,IAAI,CAACrF,IAAI,EAAEpE,EAAE,CAACe,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAEsD,UAAU,CAAC,GAAG,EAAE;UACjF,MAAMrB,EAAE,CAACc,OAAO,CAACC,IAAI,CAACyF,EAAE,CAAC;UACzB,OAAOA,EAAE;QACX;QAEA,SAASE,aAAaA,CAAA,EAAI;UACxB,IAAIC,MAAM,GAAG,EAAE;UACf,IAAI9F,OAAO,CAACY,YAAY,EAAE;YACxBkF,MAAM,CAACP,IAAI,CAAC,CACV,EAAE,EACFpG,EAAE,CAACsB,GAAG,CAACT,OAAO,CAACY,YAAY,EAAEzE,EAAE,CAACe,KAAK,CAAC,IAAI,CAAC,CAAC,EAC5C8C,OAAO,CAACY,YAAY,CACrB,CAAC;UACJ;UACA,IAAIL,IAAI,EAAE;YACRR,KAAK,CAAC6D,OAAO,CAAC,UAAUrD,IAAI,EAAE;cAC5B,MAAMoF,EAAE,GAAGpF,IAAI,GAAGpB,EAAE,CAACyG,IAAI,CAACrF,IAAI,EAAEpE,EAAE,CAACe,KAAK,CAAC,eAAe,CAAC,EAAE,IAAI,EAAEsD,UAAU,CAAC,GAAG,EAAE;cACjF,MAAMuF,GAAG,GAAGJ,EAAE,CAACK,GAAG,CAAC,UAAU7E,CAAC,EAAE;gBAC9B,OAAO,CAACZ,IAAI,EAAEpB,EAAE,CAACsB,GAAG,CAACU,CAAC,EAAEhF,EAAE,CAACe,KAAK,CAAC,IAAI,CAAC,CAAC,EAAEiE,CAAC,CAAC;cAC7C,CAAC,CAAC;cACF2E,MAAM,GAAGA,MAAM,CAAC7B,MAAM,CAAC8B,GAAG,CAAC;YAC7B,CAAC,CAAC;YACFD,MAAM,CAACG,IAAI,CAAC,CAAC;UACf;UACA,OAAOH,MAAM,CAACE,GAAG,CAACE,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC;QAEA,SAASnD,UAAUA,CAAE1E,GAAG,EAAExB,OAAO,EAAEsJ,QAAQ,EAAE;UAC3C,MAAMC,CAAC,GAAG1I,kBAAkB,CAACX,OAAO,CAACsJ,YAAY,CAACC,MAAM,CAACH,QAAQ,CAAC;UAClE,MAAMI,CAAC,GAAGH,CAAC,CAAC3I,MAAM,CAACZ,OAAO,EAAEa,kBAAkB,CAAC;UAC/C6I,CAAC,CAAC9G,YAAY,CACZ,OAAO,EACP,gDACF,CAAC;UACD,OAAO8G,CAAC;QACV;QAEA,SAASC,cAAcA,CAAEC,IAAI,EAAEC,KAAK,EAAE;UACpC,IAAIC,CAAC,GAAGlF,OAAO,CAACgF,IAAI,CAAC;UACrB,IAAInL,CAAC,GAAGmG,OAAO,CAACiF,KAAK,CAAC;UACtB,IAAIC,CAAC,IAAIrL,CAAC,EAAE;YACVqL,CAAC,GAAGA,CAAC,CAAC5E,WAAW,CAAC,CAAC;YACnBzG,CAAC,GAAGA,CAAC,CAACyG,WAAW,CAAC,CAAC;YACnB,IAAI4E,CAAC,GAAGrL,CAAC,EAAE,OAAO,CAAC;YACnB,IAAIqL,CAAC,GAAGrL,CAAC,EAAE,OAAO,CAAC,CAAC;UACtB;UACA,IAAImL,IAAI,CAACtJ,GAAG,GAAGuJ,KAAK,CAACvJ,GAAG,EAAE,OAAO,CAAC;UAClC,IAAIsJ,IAAI,CAACtJ,GAAG,GAAGuJ,KAAK,CAACvJ,GAAG,EAAE,OAAO,CAAC,CAAC;UACnC,OAAO,CAAC;QACV;;QAEA;QACA;QACA;QACA;;QAEA,eAAekH,iBAAiBA,CAAE3C,CAAC,EAAE;UACnC3D,OAAO,CAACC,GAAG,CAAC,qBAAqB,GAAG0D,CAAC,CAAC;UACtC,MAAMkF,EAAE,GAAGzH,EAAE,CACV+E,kBAAkB,CAACxC,CAAC,CAAC,CACrBuC,MAAM,CAAC9E,EAAE,CAAC+E,kBAAkB,CAAC3C,SAAS,EAAEA,SAAS,EAAEG,CAAC,CAAC,CAAC;UACzD,IAAI;YACF,MAAMvC,EAAE,CAACgF,OAAO,CAACC,UAAU,CAACwC,EAAE,CAAC;YAC/B7I,OAAO,CAACC,GAAG,CAAC,mBAAmB,GAAG0D,CAAC,CAACoB,GAAG,CAAC,CAAC,CAAC;YAC1C,MAAM3D,EAAE,CAACc,OAAO,CAAC4G,MAAM,CAACnF,CAAC,CAACoB,GAAG,CAAC,CAAC,CAAC;YAChC/E,OAAO,CAACC,GAAG,CAAC,eAAe,GAAG0D,CAAC,GAAG,aAAa,CAAC;UAClD,CAAC,CAAC,OAAO9B,GAAG,EAAE;YACZ/B,QAAQ,CAAC,uBAAuB,GAAG6D,CAAC,GAAG,IAAI,GAAG9B,GAAG,CAAC;UACpD;QACF;;QAEA;QACA;QACA,SAAS0E,eAAeA,CAAEnF,EAAE,EAAE2H,MAAM,EAAE;UACpC,OAAO,IAAIC,OAAO,CAAC,UAAUC,OAAO,EAAE;YACpC7H,EAAE,CAACc,OAAO,CAACC,IAAI,CAAC4G,MAAM,CAAC,CAACnH,IAAI,CAAC,YAAY;cACvC,MAAMsH,QAAQ,GAAG9H,EAAE,CAACyG,IAAI,CAACkB,MAAM,EAAE3K,EAAE,CAAC+K,GAAG,CAAC,UAAU,CAAC,CAAC,CAAClB,GAAG,CAACmB,IAAI,IAAI;gBAC/D,IAAIhI,EAAE,CAACiI,KAAK,CAACD,IAAI,EAAEhL,EAAE,CAACkL,GAAG,CAAC,MAAM,CAAC,EAAElL,EAAE,CAAC+K,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE;kBAC5D,OAAO5C,eAAe,CAACnF,EAAE,EAAEgI,IAAI,CAAC;gBAClC,CAAC,MAAM;kBACLpJ,OAAO,CAACC,GAAG,CAAC,wBAAwB,GAAGmJ,IAAI,CAAC;kBAC5C,IAAI,CAAC7D,OAAO,CAAC,sBAAsB,GAAG6D,IAAI,CAAC,EAAE;oBAC3C,MAAM,IAAI3F,KAAK,CAAC,0BAA0B,CAAC;kBAC7C;kBACA,OAAOrC,EAAE,CAACc,OAAO,CAACqH,YAAY,CAAC,QAAQ,EAAEH,IAAI,CAAChK,GAAG,CAAC;gBACpD;cACF,CAAC,CAAC;cACFY,OAAO,CAACC,GAAG,CAAC,0BAA0B,GAAG8I,MAAM,CAAC;cAChD,IAAI,CAACxD,OAAO,CAAC,wBAAwB,GAAGwD,MAAM,CAAC,EAAE;gBAC/C,MAAM,IAAItF,KAAK,CAAC,0BAA0B,CAAC;cAC7C;cACAyF,QAAQ,CAAC1B,IAAI,CAACpG,EAAE,CAACc,OAAO,CAACqH,YAAY,CAAC,QAAQ,EAAER,MAAM,CAAC3J,GAAG,CAAC,CAAC;cAC5D4J,OAAO,CAACQ,GAAG,CAACN,QAAQ,CAAC,CAACtH,IAAI,CAAC6H,IAAI,IAAI;gBACjCR,OAAO,CAAC,CAAC;cACX,CAAC,CAAC;YACJ,CAAC,CAAC;UACJ,CAAC,CAAC;QACJ;QAEA,SAASpE,SAASA,CAAEL,MAAM,EAAEkF,IAAI,EAAE;UAChC,MAAMC,OAAO,GAAGvI,EAAE,CAACwI,UAAU,CAACpF,MAAM,CAAC;UACrC,MAAMqF,MAAM,GAAGrH,IAAI,CAAC6C,GAAG,CAAC,CAAC,CAACjG,GAAG;UAC7B,KAAK,IAAI5B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmM,OAAO,CAAC1F,MAAM,EAAEzG,CAAC,EAAE,EAAE;YACvC,IAAImM,OAAO,CAACnM,CAAC,CAAC,CAAC4B,GAAG,CAAC0K,KAAK,CAAC,CAAC,EAAED,MAAM,CAAC5F,MAAM,CAAC,KAAK4F,MAAM,EAAE;cACrD,OAAOF,OAAO,CAACnM,CAAC,CAAC;YACnB;UACF;UACA,MAAM,IAAIiG,KAAK,CAAC,mBAAmB,GAAGe,MAAM,CAAC;QAC/C;;QAEA;AACR;QACQ,SAASgC,YAAYA,CAAA,EAAI;UACvB,SAASuD,iBAAiBA,CAAEC,SAAS,EAAExF,MAAM,EAAE;YAC7CwF,SAAS,CAACC,gBAAgB,CAAC,OAAO,EAAE,UAAUC,KAAK,EAAE;cACnDA,KAAK,CAACC,cAAc,CAAC,CAAC;cACtB5F,YAAY,CAACC,MAAM,CAAC;YACtB,CAAC,CAAC;UACJ;UAEA,IAAI4F,KAAK,GAAG,EAAE;UACd,MAAM1E,MAAM,GAAGzH,MAAM,CAACoM,IAAI,CAAC1H,cAAc,CAAC,CAACsF,GAAG,CAACqC,QAAQ,IAAIlJ,EAAE,CAACkC,GAAG,CAACgH,QAAQ,CAAC,CAAC;UAC5E5E,MAAM,CAACG,OAAO,CAACC,KAAK,IAAI;YACtB,IAAInD,cAAc,CAACmD,KAAK,CAAC5C,KAAK,CAAC,EAAE;cAC/BkH,KAAK,GAAGA,KAAK,CAAClE,MAAM,CAAC,IAAAqE,0BAAY,EAACnJ,EAAE,EAAE0E,KAAK,CAAC,CAAC;YAC/C;UACF,CAAC,CAAC;UACFsE,KAAK,CAAClC,IAAI,CAACO,cAAc,CAAC,EAAC;UAC3B,KAAK,IAAId,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyC,KAAK,CAACnG,MAAM,GAAG,CAAC,GAAG;YACrC,IAAImG,KAAK,CAACzC,CAAC,CAAC,CAACvI,GAAG,KAAKgL,KAAK,CAACzC,CAAC,GAAG,CAAC,CAAC,CAACvI,GAAG,EAAE;cACrCgL,KAAK,CAACI,MAAM,CAAC7C,CAAC,EAAE,CAAC,CAAC,EAAC;YACrB,CAAC,MAAM;cACLA,CAAC,EAAE;YACL;UACF;UAEA8C,YAAY,CAACC,WAAW,GACtBN,KAAK,CAACnG,MAAM,GAAG,CAAC,GAAG,EAAE,GAAGmG,KAAK,CAACnG,MAAM,GAAG,WAAW,GAAG,SAAS;UAEhE,SAAS0G,qBAAqBA,CAAEnG,MAAM,EAAE;YACtC,MAAMwF,SAAS,GAAG1J,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC;YACzC,MAAMuJ,UAAU,GAAGZ,SAAS,CAAC7J,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;YACjE;YACAuJ,UAAU,CAAClJ,YAAY,CAAC,OAAO,EAAEmJ,aAAa,CAAC;YAC/Cb,SAAS,CAAClL,OAAO,GAAG0F,MAAM;YAC1B,MAAM5F,IAAI,GAAG8E,OAAO,CAACc,MAAM,CAAC;YAC5BoG,UAAU,CAACF,WAAW,GAAG9L,IAAI;YAC7BoL,SAAS,CAAClL,OAAO,GAAG0F,MAAM;YAC1B7H,EAAE,CAACyD,OAAO,CAAC0K,aAAa,CAACd,SAAS,EAAExF,MAAM,CAAC;YAE3CuF,iBAAiB,CAACC,SAAS,EAAExF,MAAM,CAAC;YACpC,OAAOwF,SAAS;UAClB;UAEA3L,KAAK,CAAC0M,yBAAyB,CAACnE,eAAe,EAAEwD,KAAK,EAAEO,qBAAqB,CAAC;UAC9EhG,qBAAqB,CAAC,CAAC;QACzB,CAAC,CAAC;;QAEF,SAASqG,qBAAqBA,CAAEC,KAAK,EAAEC,cAAc,EAAE;UACrD,KAAK,IAAI1N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyN,KAAK,CAACpE,QAAQ,CAAC5C,MAAM,EAAEzG,CAAC,EAAE,EAAE;YAC9C,MAAMsJ,GAAG,GAAGmE,KAAK,CAACpE,QAAQ,CAACrJ,CAAC,CAAC;YAC7B,IAAIsJ,GAAG,CAAChI,OAAO,EAAE;cACfgI,GAAG,CAACpF,YAAY,CACd,OAAO,EACPwJ,cAAc,CAACpE,GAAG,CAAChI,OAAO,CAACM,GAAG,CAAC,GAAG,yBAAyB,GAAG,EAChE,CAAC;YACH;UACF;QACF;QAEA,SAASqI,qBAAqBA,CAAA,EAAI;UAChC,OAAOuD,qBAAqB,CAAC9D,eAAe,EAAEvE,cAAc,CAAC;QAC/D;;QAEA;;QAEA,SAASwI,cAAcA,CAAA,EAAI;UACzB,SAASC,cAAcA,CAAEtF,KAAK,EAAE;YAC9B;YACA,eAAeuF,wBAAwBA,CAAEC,IAAI,EAAE;cAC7CA,IAAI,CAACzF,OAAO,CAAC,UAAU0F,CAAC,EAAE;gBACxBvL,OAAO,CAACC,GAAG,CAAC,oBAAoB,GAAGsL,CAAC,CAAC;gBACrC,MAAMC,KAAK,GAAGpK,EAAE,CAACkC,GAAG,CAACiI,CAAC,CAAC;gBACvB,IAAI;kBACF,IAAAE,8BAAgB,EAACD,KAAK,EAAE1F,KAAK,CAAC;gBAChC,CAAC,CAAC,OAAO7I,CAAC,EAAE;kBACV6C,QAAQ,CAAC7C,CAAC,CAAC;gBACb;gBACAuJ,YAAY,CAAC,CAAC;cAChB,CAAC,CAAC;YACJ;YACA,SAASkF,qBAAqBA,CAAExB,KAAK,EAAE;cACrCA,KAAK,CAACC,cAAc,CAAC,CAAC;cACtB,MAAMwB,SAAS,GAAGvK,EAAE,CAACkC,GAAG,CAACwC,KAAK,CAAC1G,GAAG,CAAC+E,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;cACjD,IAAI,CAAC+F,KAAK,CAAC0B,OAAO,EAAE;gBAClBjJ,cAAc,GAAG,CAAC,CAAC,EAAC;cACtB;cACAA,cAAc,CAACmD,KAAK,CAAC1G,GAAG,CAAC,GAAG,CAACuD,cAAc,CAACmD,KAAK,CAAC1G,GAAG,CAAC;cACtDqI,qBAAqB,CAAC,CAAC;cACvBb,eAAe,CAAClC,SAAS,GAAG,EAAE,EAAC;;cAE/BtD,EAAE,CAACc,OAAO,CAAC4C,gBAAgB,CACzB6G,SAAS,CAACvM,GAAG,EACboE,SAAS,EACT,UAAUhD,EAAE,EAAET,OAAO,EAAE;gBACrB,IAAI,CAACS,EAAE,EAAE;kBACP,OAAOD,aAAa,CAClBC,EAAE,EACF,0BAA0B,GAAGmL,SAAS,GAAG,IAAI,GAAG5L,OAClD,CAAC;gBACH;gBACAyG,YAAY,CAAC,CAAC;gBAEd,IAAI,CAAC0D,KAAK,CAAC0B,OAAO,EAAE;kBAClB;kBACAnH,QAAQ,CAACC,SAAS,GAAG,EAAE;kBACvB,IAAImH,OAAO,GAAG,KAAK;kBACnB,MAAMrK,UAAU,GAAG7E,EAAE,CAAC6E,UAAU,CAACsK,cAAc,CAC7ChG,KAAK,EACLnG,kBAAkB,EAClB,OAAO,EACPyB,EAAE,EACF,UAAUZ,EAAE,EAAEC,IAAI,EAAEsL,QAAQ,EAAE;oBAC5B,IAAI,CAACvL,EAAE,EAAE;sBACP,IAAIuL,QAAQ,IAAIA,QAAQ,CAACC,MAAM,IAAID,QAAQ,CAACC,MAAM,KAAK,GAAG,EAAE;wBAC1DvH,QAAQ,CAACC,SAAS,GAAG,oBAAoB;sBAC3C,CAAC,MAAM;wBACLD,QAAQ,CAACC,SAAS,GAAG,iCAAiC,GAAGjE,IAAI;sBAC/D;oBACF;kBACF,CACF,CAAC;kBACD,MAAMwL,aAAa,GAAGxH,QAAQ,CAACtE,WAAW,CACxCG,GAAG,CAACe,aAAa,CAAC,QAAQ,CAC5B,CAAC;kBACD4K,aAAa,CAAC3N,KAAK,CAAC4N,OAAO,GACzB,2BAA2B;kBAC7B,MAAMC,GAAG,GAAGF,aAAa,CAAC9L,WAAW,CACnCG,GAAG,CAACe,aAAa,CAAC,KAAK,CACzB,CAAC;kBACD8K,GAAG,CAAC7N,KAAK,CAAC4N,OAAO,GAAG,6BAA6B;kBACjDC,GAAG,CAACzK,YAAY,CACd,KAAK,EACL/E,EAAE,CAAC+B,KAAK,CAACC,QAAQ,GAAG,iBACtB,CAAC;kBACDsN,aAAa,CAAChC,gBAAgB,CAAC,OAAO,EAAE,YAAY;oBAClD4B,OAAO,GAAG,CAACA,OAAO;oBAClB,IAAIA,OAAO,EAAE;sBACXpH,QAAQ,CAACtE,WAAW,CAACqB,UAAU,CAAC;oBAClC,CAAC,MAAM;sBACLiD,QAAQ,CAAC2H,WAAW,CAAC5K,UAAU,CAAC;oBAClC;kBACF,CAAC,CAAC;gBACJ;cACF,CACF,CAAC;YACH;;YAEA;YACA,MAAM5C,IAAI,GAAGwC,EAAE,CAACsB,GAAG,CAACoD,KAAK,EAAE1H,EAAE,CAACe,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAMkI,QAAQ,GAAG/G,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC;YACxCgG,QAAQ,CAACvI,OAAO,GAAGgH,KAAK;YACxBnJ,EAAE,CAACyD,OAAO,CAAC0K,aAAa,CAACzD,QAAQ,EAAEvB,KAAK,CAAC;YAEzCuB,QAAQ,CAAC3F,YAAY,CAAC,OAAO,EAAEmJ,aAAa,CAAC;YAC7CxD,QAAQ,CAACqD,WAAW,GAAG9L,IAAI;YAE3BjC,EAAE,CAACyD,OAAO,CAACiM,cAAc,CAAChF,QAAQ,EAAEgE,wBAAwB,CAAC;YAC7D1O,EAAE,CAACyD,OAAO,CAAC+E,qBAAqB,CAC9B7E,GAAG,EACH+G,QAAQ,EACR,QAAQ,GAAGzI,IAAI,EACf,kBAAkB;cAChB,MAAM0H,iBAAiB,CAACR,KAAK,CAAC;cAC9BqF,cAAc,CAAC,CAAC;YAClB,CACF,CAAC;YACD9D,QAAQ,CAAC4C,gBAAgB,CAAC,OAAO,EAAEyB,qBAAqB,EAAE,IAAI,CAAC;YAC/D,OAAOrE,QAAQ;UACjB,CAAC,CAAC;;UAEF,MAAM3B,MAAM,GAAGoC,aAAa,CAAC,CAAC;UAC9BzJ,KAAK,CAAC0M,yBAAyB,CAAC7D,eAAe,EAAExB,MAAM,EAAE0F,cAAc,CAAC;UACxE3D,qBAAqB,CAAC,CAAC;UACvB;QACF,CAAC,CAAC;;QAEF,eAAe6E,cAAcA,CAAA,EAAI;UAC/B;UACA,MAAM5G,MAAM,GAAG,MAAMF,aAAa,CAAC,CAAC;UAEpC,MAAM;YAAE+G,GAAG;YAAEC;UAAI,CAAC,GAAG,MAAM,IAAAC,gCAAkB,EAAC/G,MAAM,CAAC;UAErD,IAAI6G,GAAG,CAACtI,MAAM,IAAIsB,OAAO,CAAC,0CAA0CgH,GAAG,CAACtI,MAAM,GAAG,CAAC,EAAE;YAClF,MAAM7C,EAAE,CAACgF,OAAO,CAACC,UAAU,CAACkG,GAAG,EAAEC,GAAG,CAAC;YACrCE,KAAK,CAAC,aAAa,CAAC;UACtB;QACF,CAAC,CAAC;;QAEF;QACA,eAAeC,oBAAoBA,CAAEC,MAAM,EAAE;UAC3CnI,QAAQ,CAACC,SAAS,GAAG,EAAE;UACvB,MAAMjC,UAAU,GAAGrB,EAAE,CAACsB,GAAG,CAACF,IAAI,EAAEpE,EAAE,CAACe,KAAK,CAAC,YAAY,CAAC,CAAC;UACvD,IAAI;YACF,MAAMiC,EAAE,CAACc,OAAO,CAACC,IAAI,CAACM,UAAU,CAAC;UACnC,CAAC,CAAC,OAAOxF,CAAC,EAAE;YACV+C,OAAO,CAACC,GAAG,CAAC,iCAAiC,GAAGhD,CAAC,GAAG,IAAI,CAAC;UAC3D;UACA+C,OAAO,CAACC,GAAG,CAAC,gCAAgC,CAAC;UAE7C,MAAMrB,IAAI,GAAG,MAAMjC,EAAE,CAACyD,OAAO,CAACyM,OAAO,CACnCvM,GAAG,EAAEc,EAAE,EAAEqD,QAAQ,EAAE9H,EAAE,CAACyB,EAAE,CAACiB,IAAI,CAAC,MAAM,CAAC,EAAEjB,EAAE,CAACe,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;UACpE,IAAI,CAACP,IAAI,EAAE,OAAM,CAAC;UAClB,IAAIkH,KAAK;UACT,IAAI;YACFA,KAAK,GAAG,MAAM,IAAAgH,0BAAY,EAACtK,IAAI,EAAE5D,IAAI,CAAC;UACxC,CAAC,CAAC,OAAOiD,GAAG,EAAE;YACZ7B,OAAO,CAACC,GAAG,CAAC,+BAA+B,GAAG4B,GAAG,CAAC;YAClD4C,QAAQ,CAACC,SAAS,GAAG,sBAAsB,GAAG7C,GAAG;YACjD;UACF;UACAc,cAAc,GAAG,CAAC,CAAC;UACnBA,cAAc,CAACmD,KAAK,CAAC1G,GAAG,CAAC,GAAG,IAAI;UAChC+L,cAAc,CAAC,CAAC,EAAC;;UAEjB1G,QAAQ,CAACC,SAAS,GAAG,EAAE;UACvBD,QAAQ,CAACtE,WAAW,CAACxD,EAAE,CAAC6E,UAAU,CAACsK,cAAc,CAC/ChG,KAAK,CAACf,GAAG,CAAC,CAAC,EAAEpF,kBAAkB,EAAE,OAAO,EAAEyB,EAAE,EAC5C,UAAUZ,EAAE,EAAEC,IAAI,EAAE;YAClB,IAAI,CAACD,EAAE,EAAE;cACPiE,QAAQ,CAACC,SAAS,GACd,8BAA8B,GAAGjE,IAAI;YAC3C;UACF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;;QAEF,eAAesM,aAAaA,CAAEC,KAAK,EAAE;UACnCvI,QAAQ,CAACC,SAAS,GAAG,EAAE;UACvB,MAAMuI,OAAO,GAAG9J,kBAAkB,CAACX,IAAI,CAAC;UACxC,IAAI;YACF,MAAMpB,EAAE,CAACc,OAAO,CAACC,IAAI,CAAC8K,OAAO,CAAC;UAChC,CAAC,CAAC,OAAOpL,GAAG,EAAE;YACZ,MAAM,IAAI4B,KAAK,CAAC,mBAAmB,GAAGwJ,OAAO,CAAC;UAChD;UAEA,MAAMxH,cAAc,GAAGrE,EAAE,CAACsB,GAAG,CAACuK,OAAO,EAAE7O,EAAE,CAACe,KAAK,CAAC,gBAAgB,CAAC,CAAC;UAClE,IAAI,CAACsG,cAAc,EAAE,MAAM,IAAIhC,KAAK,CAAC,wBAAwB,CAAC;UAC9D,MAAMrC,EAAE,CAACc,OAAO,CAACC,IAAI,CAACsD,cAAc,CAAC;UACrC;;UAEA,MAAM7G,IAAI,GAAG,MAAMjC,EAAE,CAACyD,OAAO,CAC1ByM,OAAO,CAACvM,GAAG,EAAEc,EAAE,EAAEqD,QAAQ,EAAE9H,EAAE,CAACyB,EAAE,CAACiB,IAAI,CAAC,MAAM,CAAC,EAAE2N,KAAK,CAAC,EAAC;;UAEzD,IAAI,CAACpO,IAAI,EAAE,OAAM,CAAC;UAClB6F,QAAQ,CAACC,SAAS,GAAG,aAAa;UAClClC,IAAI,GAAGW,kBAAkB,CAACX,IAAI,CAAC;UAC/B,IAAIgC,MAAM;UACV,IAAI;YACFA,MAAM,GAAG,MAAM,IAAA0I,4BAAc,EAAC1K,IAAI,EAAE5D,IAAI,EAAE+D,cAAc,EAAEqK,KAAK,CAAC;UAClE,CAAC,CAAC,OAAOnL,GAAG,EAAE;YACZ,MAAMyF,GAAG,GAAG,kCAAkC,GAAGzF,GAAG;YACpD7B,OAAO,CAACC,GAAG,CAACqH,GAAG,CAAC;YAChBoF,KAAK,CAACpF,GAAG,CAAC;UACZ;UAEA1E,cAAc,GAAG,CAAC,CAAC;UACnBA,cAAc,CAAC4B,MAAM,CAACpF,GAAG,CAAC,GAAG,IAAI;UACjCoH,YAAY,CAAC,CAAC,EAAC;UACf/B,QAAQ,CAACC,SAAS,GAAG,EAAE,EAAC;UACxBD,QAAQ,CAACtE,WAAW,CAAC6E,UAAU,CAAC1E,GAAG,EAAEkE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC1D;;QAEA;QACA;;QAEA,MAAM2I,SAAS,GAAG7M,GAAG,CAACe,aAAa,CAAC,OAAO,CAAC;QAC5C8L,SAAS,CAACzL,YAAY,CACpB,OAAO,EACP,8DACF,CAAC;QACDxB,GAAG,CAACC,WAAW,CAACgN,SAAS,CAAC;QAC1B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;QACQ,MAAMC,UAAU,GAAGD,SAAS,CAAChN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QACjE,MAAMgM,QAAQ,GAAGF,SAAS,CAAChN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAMiM,UAAU,GAAGH,SAAS,CAAChN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QAEjE,MAAMkM,YAAY,GAAGH,UAAU,CAACjN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QACpE,MAAMoJ,YAAY,GAAG2C,UAAU,CAACjN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QACpE,MAAMmM,UAAU,GAAGJ,UAAU,CAACjN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QAElE,MAAMoM,UAAU,GAAGJ,QAAQ,CAAClN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM6F,eAAe,GAAGuG,UAAU,CAACtN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAMqM,UAAU,GAAGL,QAAQ,CAAClN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QAChE,MAAMuF,eAAe,GAAG8G,UAAU,CAACvN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,OAAO,CAAC,CAAC;QAE1E,MAAMsM,YAAY,GAAGL,UAAU,CAACnN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QACpE,MAAMuM,YAAY,GAAGN,UAAU,CAACnN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QACpE,MAAMwM,UAAU,GAAGP,UAAU,CAACnN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QAElEmM,UAAU,CAACrN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,KAAK,CAAC,CAAC,EAAC;QACjD;QACA,MAAMyC,WAAW,GAAG0J,UAAU,CAACrN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,OAAO,CAAC,CAAC;QACtEyC,WAAW,CAACpC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;QACxCoC,WAAW,CAACxF,KAAK,GAAGA,KAAK,CAACwP,gBAAgB,IACxC,oGAAoG;QAEtGhK,WAAW,CAACmG,gBAAgB,CAAC,OAAO,EAAE,UAAU2C,MAAM,EAAE;UACtDjI,qBAAqB,CAAC,IAAI,CAAC,EAAC;QAC9B,CAAC,CAAC;QAEF,MAAMF,QAAQ,GAAG4I,QAAQ,CAAClN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9DoD,QAAQ,CAAC/C,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,EAAC;QAC7C,MAAMmJ,aAAa,GAAG,iBAAiB;QAEvC0C,YAAY,CAAC7C,WAAW,GAAG,QAAQ;QACnC6C,YAAY,CAAC7L,YAAY,CACvB,OAAO,EACP,wCACF,CAAC;QAED,SAASqM,sBAAsBA,CAAElC,OAAO,EAAE;UACxC,MAAMmC,GAAG,GAAGnC,OAAO,GAAG,EAAE,GAAG,gBAAgB;UAC3C0B,YAAY,CAAC7L,YAAY,CACvB,OAAO,EACP,wCAAwC,GAAGsM,GAC7C,CAAC;UACD,MAAMC,OAAO,GAAG,iBAAiB;UACjCR,UAAU,CAAC/L,YAAY,CAAC,OAAO,EAAEuM,OAAO,GAAGD,GAAG,CAAC;UAC/CL,YAAY,CAACjM,YAAY,CAAC,OAAO,EAAEuM,OAAO,GAAGD,GAAG,CAAC;QACnD;QACAD,sBAAsB,CAAC,IAAI,CAAC;QAE5B,IAAI9L,OAAO,CAACY,YAAY,EAAE;UACxBF,cAAc,CAACV,OAAO,CAACY,YAAY,CAACzD,GAAG,CAAC,GAAG,IAAI;QACjD;QACA,IAAIoD,IAAI,EAAE;UACR,MAAM0L,SAAS,GAAGX,YAAY,CAACpN,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,QAAQ,CAAC,CAAC;UACvE6M,SAAS,CAACxD,WAAW,GAAG,KAAK;UAC7B,MAAMpM,KAAK,GAAG,oCAAoC;UAClD4P,SAAS,CAACxM,YAAY,CAAC,OAAO,EAAEpD,KAAK,CAAC;UACtC4P,SAAS,CAACjE,gBAAgB,CAAC,OAAO,EAAE,UAAU2C,MAAM,EAAE;YACpDsB,SAAS,CAACC,KAAK,GAAGD,SAAS,CAACC,KAAK,GAAG,CAAC,GAAG,CAAC;YACzCvH,eAAe,CAAClC,SAAS,GAAG,EAAE,EAAC;YAC/B,IAAIwJ,SAAS,CAACC,KAAK,EAAE;cACnBD,SAAS,CAACxM,YAAY,CAAC,OAAO,EAAEpD,KAAK,GAAG,yBAAyB,CAAC;cAClE2I,eAAe,CAACtE,cAAc,EAAEuE,eAAe,EAAE,UAC/C1G,EAAE,EACFT,OAAO,EACP;gBACA,IAAI,CAACS,EAAE,EAAE,OAAOV,QAAQ,CAACC,OAAO,CAAC;gBACjCmO,SAAS,CAACxM,YAAY,CACpB,OAAO,EACPpD,KAAK,GAAG,uCACV,CAAC;gBACDmJ,qBAAqB,CAAC,CAAC;cACzB,CAAC,CAAC;YACJ,CAAC,MAAM;cACLyG,SAAS,CAACxM,YAAY,CAAC,OAAO,EAAEpD,KAAK,GAAG,yBAAyB,CAAC,EAAC;cACnEqE,cAAc,GAAG,CAAC,CAAC;cACnB8E,qBAAqB,CAAC,CAAC;YACzB;UACF,CAAC,CAAC,EAAC;UACHrG,EAAE,CAACc,OAAO,CAAC4C,gBAAgB,CAACrC,UAAU,CAACrD,GAAG,EAAEoD,IAAI,EAAE,UAAUhC,EAAE,EAAEC,IAAI,EAAE;YACpE,IAAI,CAACD,EAAE,EAAE,OAAOR,OAAO,CAACC,GAAG,CAAC,2BAA2B,GAAGQ,IAAI,CAAC;YAC/D0K,cAAc,CAAC,CAAC;YAChB3E,YAAY,CAAC,CAAC;UAChB,CAAC,CAAC;QACJ,CAAC,MAAM;UACL2E,cAAc,CAAC,CAAC;UAChB3E,YAAY,CAAC,CAAC;UACdxG,OAAO,CAACC,GAAG,CAAC,gDAAgD,CAAC;UAC7D8N,sBAAsB,CAAC,KAAK,CAAC,EAAC;QAChC,CAAC,CAAC;;QAEFtD,YAAY,CAACC,WAAW,GAAG,MAAM;QACjCD,YAAY,CAAC/I,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC;QACtDgM,UAAU,CAAChM,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC;;QAEpD;QACA,MAAM0M,gBAAgB,GAAG9N,GAAG,CAACe,aAAa,CAAC,QAAQ,CAAC;QACpD,MAAM+D,SAAS,GAAG9E,GAAG,CAACe,aAAa,CAAC,KAAK,CAAC;QAC1C+M,gBAAgB,CAAC1M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC/C,IAAI,CAACP,EAAE,EAAEiN,gBAAgB,CAAC1M,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;QAC1DJ,iBAAK,CAAC+M,SAAS,CAAC,CAAC,CAACzM,IAAI,CAAC0M,KAAK,IAAI;UAC9B,IAAIA,KAAK,EAAE;YACTnN,EAAE,GAAGmN,KAAK;YACVF,gBAAgB,CAACG,eAAe,CAAC,UAAU,CAAC;UAC9C;QACF,CAAC,CAAC;QACFnJ,SAAS,CAACjF,WAAW,CAACiO,gBAAgB,CAAC;QACvCA,gBAAgB,CAAC1J,SAAS,GAAG,aAAa,EAAC;QAC3CkJ,YAAY,CAACzN,WAAW,CAACiF,SAAS,CAAC;QACnCgJ,gBAAgB,CAACnE,gBAAgB,CAAC,OAAO,EAAE,MAAM2C,MAAM,IAAIG,aAAa,CAAC3O,EAAE,CAACe,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;;QAExG;QACA,MAAMqP,qBAAqB,GAAGlO,GAAG,CAACe,aAAa,CAAC,QAAQ,CAAC;QACzD,MAAMoN,UAAU,GAAGnO,GAAG,CAACe,aAAa,CAAC,KAAK,CAAC;QAC3CmN,qBAAqB,CAAC9M,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;QACpD,IAAI,CAACP,EAAE,EAAEqN,qBAAqB,CAAC9M,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC;QAC/DJ,iBAAK,CAAC+M,SAAS,CAAC,CAAC,CAACzM,IAAI,CAAC0M,KAAK,IAAI;UAC9B,IAAIA,KAAK,EAAE;YACTnN,EAAE,GAAGmN,KAAK;YACVE,qBAAqB,CAACD,eAAe,CAAC,UAAU,CAAC;UACnD;QACF,CAAC,CAAC;QACFE,UAAU,CAACtO,WAAW,CAACqO,qBAAqB,CAAC;QAC7CA,qBAAqB,CAAC9J,SAAS,GAAG,kBAAkB,EAAC;QACrDkJ,YAAY,CAACzN,WAAW,CAACsO,UAAU,CAAC;QACpCD,qBAAqB,CAACvE,gBAAgB,CAAC,OAAO,EAAE,MAAM2C,MAAM,IAAIG,aAAa,CAAC3O,EAAE,CAACe,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC;;QAE/G;QACA,IAAIqD,IAAI,EAAE;UACR,MAAMkM,cAAc,GAAGf,YAAY,CAACxN,WAAW,CAC7CG,GAAG,CAACe,aAAa,CAAC,QAAQ,CAC5B,CAAC;UACDqN,cAAc,CAAChN,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;UAC7CgN,cAAc,CAAChK,SAAS,GAAG,WAAW,EAAC;UACvCgK,cAAc,CAACzE,gBAAgB,CAC7B,OAAO,EAAE0C,oBAAoB,EAC7B,KACF,CAAC;;UAED;UACA,MAAMgC,WAAW,GAAGd,UAAU,CAAC1N,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,QAAQ,CAAC,CAAC;UACvEsN,WAAW,CAACjN,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;UAC1CiN,WAAW,CAACjK,SAAS,GAAG,OAAO;UAC/BiK,WAAW,CAAC1E,gBAAgB,CAAC,OAAO,EAAE,UAAU2C,MAAM,EAAE;YACtDnI,QAAQ,CAACC,SAAS,GAAG,EAAE;YACvBD,QAAQ,CAACtE,WAAW,CAClB,IAAAyO,oBAAS,EACP3H,eAAe,EACftE,cAAc,EACduE,eAAe,EACf1E,IAAI,EACJ7C,kBAAkB,EAClBwB,EACF,CACF,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;;QAEF0M,UAAU,CAAC1N,WAAW,CAACO,oBAAoB,CAAC8B,IAAI,CAAC,CAAC;;QAElD;;QAEAtC,GAAG,CAACC,WAAW,CAACG,GAAG,CAACe,aAAa,CAAC,IAAI,CAAC,CAAC;;QAExC;QACAiL,cAAc,CAAC,CAAC,CAAC1K,IAAI,CAAC,MAAM;UAAE5B,OAAO,CAACC,GAAG,CAAC,4BAA4B,CAAC;QAAC,CAAC,CAAC;;QAE1E;QACA;MACF,CAAC,CAAC;;MAEF;;MAEA;;MAEA,IACE/C,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,YAAY,CAAC,CAACC,GAAG,CAAC,IAC7BlC,CAAC,CAACkB,EAAE,CAACiB,IAAI,CAAC,QAAQ,CAAC,CAACD,GAAG,CAAC,IACxBlC,CAAC,CAACkB,EAAE,CAACkB,MAAM,CAAC,QAAQ,CAAC,CAACF,GAAG,CAAC,IAC1BlC,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,cAAc,CAAC,CAACC,GAAG,CAAC,IAC/BlC,CAAC,CAACkB,EAAE,CAACkB,MAAM,CAAC,cAAc,CAAC,CAACF,GAAG,CAAC,EAChC;QACA,IAAAyP,4BAAgB,EAACvO,GAAG,EAAEJ,GAAG,EAAEpB,OAAO,EAAEa,kBAAkB,CAAC,CAACiC,IAAI,CAAC,MAAM5B,OAAO,CAACC,GAAG,CAAC,uBAAuB,CAAC,CAAC;;QAExG;MACF,CAAC,MAAM,IAAI/C,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,OAAO,CAAC,CAACC,GAAG,CAAC,EAAE;QACnC;QACAzC,EAAE,CAACiE,KAAK,CACLkO,gBAAgB,CAAC/P,OAAO,EAAEX,EAAE,CAACe,KAAK,CAAC,aAAa,CAAC,CAAC,CAClDyC,IAAI,CAAC,UAAU7C,OAAO,EAAE;UACvB,MAAMgQ,YAAY,GAAGhQ,OAAO,CAACiQ,SAAS;UACtC,MAAM/M,OAAO,GAAG;YAAEY,YAAY,EAAE/D;UAAQ,CAAC;UACzC,IAAIiQ,YAAY,CAAC9K,MAAM,GAAG,CAAC,EAAE;YAC3B;YACAlC,wBAAwB,CAACgN,YAAY,EAAEhQ,OAAO,EAAEkD,OAAO,CAAC;UAC1D,CAAC,MAAM;YACLF,wBAAwB,CAAC,EAAE,EAAEhD,OAAO,EAAEkD,OAAO,CAAC;YAC9C;UACF;QACF,CAAC,CAAC,CACDK,KAAK,CAAC,UAAUrF,CAAC,EAAE;UAClBN,EAAE,CAACyD,OAAO,CAACN,QAAQ,CAACf,OAAO,EAAE9B,CAAC,CAAC;QACjC,CAAC,CAAC;;QAEJ;MACF,CAAC,MAAM,IAAIC,CAAC,CAACkB,EAAE,CAACe,KAAK,CAAC,aAAa,CAAC,CAACC,GAAG,CAAC,EAAE;QACzC2C,wBAAwB,CAAC,CAACjD,OAAO,CAAC,EAAEC,OAAO,EAAE,CAAC,CAAC,CAAC;MAClD,CAAC,MAAM;QACLiB,OAAO,CAACC,GAAG,CACT,wCAAwC,GACtCnB,OAAO,GACP,mCACJ,CAAC;MACH;MAEAqC,EAAE,GAAGG,iBAAK,CAACC,WAAW,CAAC,CAAC;MACxB,IAAI,CAACJ,EAAE,EAAE;QACPnB,OAAO,CAACC,GAAG,CACT,wEACF,CAAC;QACDtD,EAAE,CAACiE,KAAK,CAACqO,mBAAmB,CAAClQ,OAAO,CAAC,CAAC6C,IAAI,CACxC7C,OAAO,IAAI;UACTiB,OAAO,CAACC,GAAG,CAAC,eAAe,GAAGlB,OAAO,CAACoC,EAAE,CAAC;UACzCA,EAAE,GAAGpC,OAAO,CAACoC,EAAE;QACjB,CAAC,EACDU,GAAG,IAAI;UACL3B,GAAG,CAACC,WAAW,CAACxD,EAAE,CAACyD,OAAO,CAACC,iBAAiB,CAACwB,GAAG,CAAC,CAAC;QACpD,CACF,CAAC;MACH,CAAC,MAAM;QACL;MAAA;;MAGF;;MAEA,IACE,OAAOoB,QAAQ,KAAK,WAAW,IAC/BA,QAAQ,CAACiM,QAAQ,IACjB,CAAC,EAAE,GAAGjM,QAAQ,CAACiM,QAAQ,EAAEpF,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,kBAAkB,EAC5D;QACA3I,EAAE,GAAGC,EAAE,CAACsB,GAAG,CAAC5D,OAAO,EAAEnC,EAAE,CAACyB,EAAE,CAAC+Q,GAAG,CAAC,OAAO,CAAC,CAAC,EAAC;QACzCnP,OAAO,CAACC,GAAG,CAAC,mBAAmB,GAAGkB,EAAE,CAAC;MACvC;MACA,OAAOjB,GAAG;IACZ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,EAAC;AACF;AAEO,SAAS8F,SAASA,CAAE5E,EAAE,EAAEgO,IAAI,EAAErK,GAAG,EAAE;EACxC,OAAO3D,EAAE,CAACyG,IAAI,CAACuH,IAAI,EAAEhR,EAAE,CAACiR,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAEtK,GAAG,CAAC,CAACmB,MAAM,CACtD9E,EAAE,CAACyG,IAAI,CAAC,IAAI,EAAEzJ,EAAE,CAACiR,GAAG,CAAC,QAAQ,CAAC,EAAED,IAAI,EAAErK,GAAG,CAAC,CAAC;AAC/C","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "contacts-pane",
3
- "version": "3.0.1-d52ee71e",
3
+ "version": "3.0.1-e34c052d",
4
4
  "description": "Contacts Pane: Contacts manager for Address Book, Groups, and Individuals.",
5
5
  "main": "dist/contactsPane.js",
6
6
  "files": [