hypothesis 1.1433.0 → 1.1434.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/boot.js CHANGED
@@ -1 +1 @@
1
- !function(){"use strict";var s={"scripts/annotator.bundle.js":"scripts/annotator.bundle.js?345bbc","styles/annotator.css":"styles/annotator.css?51e5f8","styles/annotator.css.map":"styles/annotator.css.map?dcd4af","styles/highlights.css":"styles/highlights.css?6b4ebd","styles/highlights.css.map":"styles/highlights.css.map?241350","styles/katex.min.css":"styles/katex.min.css?e179ab","styles/katex.min.css.map":"styles/katex.min.css.map?cd8c0e","styles/pdfjs-overrides.css":"styles/pdfjs-overrides.css?c95edf","styles/pdfjs-overrides.css.map":"styles/pdfjs-overrides.css.map?1d8ac6","styles/sidebar.css":"styles/sidebar.css?314666","styles/sidebar.css.map":"styles/sidebar.css.map?402fbd","styles/ui-playground.css":"styles/ui-playground.css?76654f","styles/ui-playground.css.map":"styles/ui-playground.css.map?9667ea","scripts/annotator.bundle.js.map":"scripts/annotator.bundle.js.map?b68d18","scripts/ui-playground.bundle.js":"scripts/ui-playground.bundle.js?885080","scripts/sidebar.bundle.js":"scripts/sidebar.bundle.js?1af9f7","scripts/ui-playground.bundle.js.map":"scripts/ui-playground.bundle.js.map?476c34","scripts/sidebar.bundle.js.map":"scripts/sidebar.bundle.js.map?f4b7be"};function t(s){s.setAttribute("data-hypothesis-asset","")}function e(s,e){var n=s.createElement("link");n.rel="stylesheet",n.type="text/css",n.href=e,t(n),s.head.appendChild(n)}function n(s,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.esModule,o=void 0===r||r,i=n.forceReload,a=void 0!==i&&i,l=s.createElement("script");o&&(l.type="module"),a&&(e+="#ts=".concat(Date.now())),l.src=e,l.async=!1,t(l),s.head.appendChild(l)}function r(s,e,n,r){var o=s.createElement("link");o.rel=e,o.href=r,o.type="application/annotator+".concat(n),t(o),s.head.appendChild(o)}function o(s,e,n){var r=s.createElement("link");r.rel="preload",r.as=e,r.href=n,"fetch"===e&&(r.crossOrigin="anonymous"),t(r),s.head.appendChild(r)}function i(s,t){return s.assetRoot+"build/"+s.manifest[t]}function a(s){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;if(-1===s.indexOf("{"))return s;var e=function(){var s,t,e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:document).currentScript;return e?(s=e.src,(t=s.match(/(https?):\/\/([^:/]+)/))?{protocol:t[1],hostname:t[2]}:null):null}(t);if(!e)throw new Error("Could not process URL template because script origin is unknown");return s=(s=s.replace("{current_host}",e.hostname)).replace("{current_scheme}",e.protocol)}if(function(){var s=[function(){return Object.fromEntries([])},function(){return new URL(document.location.href)},function(){return new Request("https://hypothes.is")},function(){return Element.prototype.attachShadow},function(){return CSS.supports("display: grid")},function(){return document.evaluate("/html/body",document,null,XPathResult.ANY_TYPE,null),!0}];try{return s.every((function(s){return s()}))}catch(s){return!1}}()){var l=function(s){for(var t={},e=s.querySelectorAll("script.js-hypothesis-config"),n=0;n<e.length;n++){var r=void 0;try{r=JSON.parse(e[n].textContent||"")}catch(s){console.warn("Could not parse settings from js-hypothesis-config tags",s),r={}}Object.assign(t,r)}return t}(document),c=a(l.assetRoot||"https://cdn.hypothes.is/hypothesis/1.1433.0/");if(document.querySelector("hypothesis-app")){!function(s,t){o(s,"fetch",t.apiUrl),o(s,"fetch",t.apiUrl+"links");for(var r=0,a=["scripts/sidebar.bundle.js"];r<a.length;r++)n(s,i(t,a[r]),{esModule:!0});for(var l=0,c=["styles/katex.min.css","styles/sidebar.css"];l<c.length;l++)e(s,i(t,c[l]))}(document,{assetRoot:c,manifest:s,apiUrl:l.apiUrl})}else{var p=function(){var s;return null===(s=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).chrome)||void 0===s||null===(s=s.runtime)||void 0===s?void 0:s.id}();if(p&&!function(s){return!!(arguments.length>1&&void 0!==arguments[1]?arguments[1]:document).querySelector("script.js-hypothesis-config[data-extension-id=".concat(s,"]"))}(p))throw new Error("Could not start Hypothesis extension as configuration is missing");var u=l,d=a(u.notebookAppUrl||"https://hypothes.is/notebook"),h=a(u.profileAppUrl||"https://hypothes.is/user-profile"),y=a(u.sidebarAppUrl||"https://hypothes.is/app.html");!function(s,t){if(!s.querySelector('link[type="application/annotator+html"]')){r(s,"sidebar","html",t.sidebarAppUrl),r(s,"notebook","html",t.notebookAppUrl),r(s,"profile","html",t.profileAppUrl),o(s,"style",i(t,"styles/annotator.css")),r(s,"hypothesis-client","javascript",t.assetRoot+"build/boot.js");for(var a=0,l=["scripts/annotator.bundle.js"];a<l.length;a++)n(s,i(t,l[a]),{esModule:!1});var c=[];void 0!==window.PDFViewerApplication&&c.push("styles/pdfjs-overrides.css"),c.push("styles/highlights.css");for(var p=0,u=c;p<u.length;p++)e(s,i(t,u[p]))}}(document,{assetRoot:c,manifest:s,notebookAppUrl:d,profileAppUrl:h,sidebarAppUrl:y})}}else console.warn("The Hypothesis annotation tool is not supported in this browser. See https://web.hypothes.is/help/which-browsers-are-supported-by-hypothesis/.")}();
1
+ !function(){"use strict";var s={"scripts/annotator.bundle.js":"scripts/annotator.bundle.js?c47fee","styles/annotator.css":"styles/annotator.css?51e5f8","styles/annotator.css.map":"styles/annotator.css.map?dcd4af","styles/highlights.css":"styles/highlights.css?6b4ebd","styles/highlights.css.map":"styles/highlights.css.map?241350","styles/katex.min.css":"styles/katex.min.css?e179ab","styles/katex.min.css.map":"styles/katex.min.css.map?cd8c0e","styles/pdfjs-overrides.css":"styles/pdfjs-overrides.css?c95edf","styles/pdfjs-overrides.css.map":"styles/pdfjs-overrides.css.map?1d8ac6","styles/sidebar.css":"styles/sidebar.css?314666","styles/sidebar.css.map":"styles/sidebar.css.map?402fbd","styles/ui-playground.css":"styles/ui-playground.css?76654f","styles/ui-playground.css.map":"styles/ui-playground.css.map?9667ea","scripts/ui-playground.bundle.js":"scripts/ui-playground.bundle.js?885080","scripts/annotator.bundle.js.map":"scripts/annotator.bundle.js.map?b68d18","scripts/sidebar.bundle.js":"scripts/sidebar.bundle.js?46d155","scripts/ui-playground.bundle.js.map":"scripts/ui-playground.bundle.js.map?476c34","scripts/sidebar.bundle.js.map":"scripts/sidebar.bundle.js.map?708c4f"};function t(s){s.setAttribute("data-hypothesis-asset","")}function e(s,e){var n=s.createElement("link");n.rel="stylesheet",n.type="text/css",n.href=e,t(n),s.head.appendChild(n)}function n(s,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.esModule,o=void 0===r||r,i=n.forceReload,a=void 0!==i&&i,l=s.createElement("script");o&&(l.type="module"),a&&(e+="#ts=".concat(Date.now())),l.src=e,l.async=!1,t(l),s.head.appendChild(l)}function r(s,e,n,r){var o=s.createElement("link");o.rel=e,o.href=r,o.type="application/annotator+".concat(n),t(o),s.head.appendChild(o)}function o(s,e,n){var r=s.createElement("link");r.rel="preload",r.as=e,r.href=n,"fetch"===e&&(r.crossOrigin="anonymous"),t(r),s.head.appendChild(r)}function i(s,t){return s.assetRoot+"build/"+s.manifest[t]}function a(s){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document;if(-1===s.indexOf("{"))return s;var e=function(){var s,t,e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:document).currentScript;return e?(s=e.src,(t=s.match(/(https?):\/\/([^:/]+)/))?{protocol:t[1],hostname:t[2]}:null):null}(t);if(!e)throw new Error("Could not process URL template because script origin is unknown");return s=(s=s.replace("{current_host}",e.hostname)).replace("{current_scheme}",e.protocol)}if(function(){var s=[function(){return Object.fromEntries([])},function(){return new URL(document.location.href)},function(){return new Request("https://hypothes.is")},function(){return Element.prototype.attachShadow},function(){return CSS.supports("display: grid")},function(){return document.evaluate("/html/body",document,null,XPathResult.ANY_TYPE,null),!0}];try{return s.every((function(s){return s()}))}catch(s){return!1}}()){var l=function(s){for(var t={},e=s.querySelectorAll("script.js-hypothesis-config"),n=0;n<e.length;n++){var r=void 0;try{r=JSON.parse(e[n].textContent||"")}catch(s){console.warn("Could not parse settings from js-hypothesis-config tags",s),r={}}Object.assign(t,r)}return t}(document),c=a(l.assetRoot||"https://cdn.hypothes.is/hypothesis/1.1434.0/");if(document.querySelector("hypothesis-app")){!function(s,t){o(s,"fetch",t.apiUrl),o(s,"fetch",t.apiUrl+"links");for(var r=0,a=["scripts/sidebar.bundle.js"];r<a.length;r++)n(s,i(t,a[r]),{esModule:!0});for(var l=0,c=["styles/katex.min.css","styles/sidebar.css"];l<c.length;l++)e(s,i(t,c[l]))}(document,{assetRoot:c,manifest:s,apiUrl:l.apiUrl})}else{var p=function(){var s;return null===(s=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).chrome)||void 0===s||null===(s=s.runtime)||void 0===s?void 0:s.id}();if(p&&!function(s){return!!(arguments.length>1&&void 0!==arguments[1]?arguments[1]:document).querySelector("script.js-hypothesis-config[data-extension-id=".concat(s,"]"))}(p))throw new Error("Could not start Hypothesis extension as configuration is missing");var u=l,d=a(u.notebookAppUrl||"https://hypothes.is/notebook"),h=a(u.profileAppUrl||"https://hypothes.is/user-profile"),y=a(u.sidebarAppUrl||"https://hypothes.is/app.html");!function(s,t){if(!s.querySelector('link[type="application/annotator+html"]')){r(s,"sidebar","html",t.sidebarAppUrl),r(s,"notebook","html",t.notebookAppUrl),r(s,"profile","html",t.profileAppUrl),o(s,"style",i(t,"styles/annotator.css")),r(s,"hypothesis-client","javascript",t.assetRoot+"build/boot.js");for(var a=0,l=["scripts/annotator.bundle.js"];a<l.length;a++)n(s,i(t,l[a]),{esModule:!1});var c=[];void 0!==window.PDFViewerApplication&&c.push("styles/pdfjs-overrides.css"),c.push("styles/highlights.css");for(var p=0,u=c;p<u.length;p++)e(s,i(t,u[p]))}}(document,{assetRoot:c,manifest:s,notebookAppUrl:d,profileAppUrl:h,sidebarAppUrl:y})}}else console.warn("The Hypothesis annotation tool is not supported in this browser. See https://web.hypothes.is/help/which-browsers-are-supported-by-hypothesis/.")}();
@@ -1,5 +1,5 @@
1
1
  {
2
- "scripts/annotator.bundle.js": "scripts/annotator.bundle.js?345bbc",
2
+ "scripts/annotator.bundle.js": "scripts/annotator.bundle.js?c47fee",
3
3
  "styles/annotator.css": "styles/annotator.css?51e5f8",
4
4
  "styles/annotator.css.map": "styles/annotator.css.map?dcd4af",
5
5
  "styles/highlights.css": "styles/highlights.css?6b4ebd",
@@ -12,9 +12,9 @@
12
12
  "styles/sidebar.css.map": "styles/sidebar.css.map?402fbd",
13
13
  "styles/ui-playground.css": "styles/ui-playground.css?76654f",
14
14
  "styles/ui-playground.css.map": "styles/ui-playground.css.map?9667ea",
15
- "scripts/annotator.bundle.js.map": "scripts/annotator.bundle.js.map?b68d18",
16
15
  "scripts/ui-playground.bundle.js": "scripts/ui-playground.bundle.js?885080",
17
- "scripts/sidebar.bundle.js": "scripts/sidebar.bundle.js?1af9f7",
16
+ "scripts/annotator.bundle.js.map": "scripts/annotator.bundle.js.map?b68d18",
17
+ "scripts/sidebar.bundle.js": "scripts/sidebar.bundle.js?46d155",
18
18
  "scripts/ui-playground.bundle.js.map": "scripts/ui-playground.bundle.js.map?476c34",
19
- "scripts/sidebar.bundle.js.map": "scripts/sidebar.bundle.js.map?f4b7be"
19
+ "scripts/sidebar.bundle.js.map": "scripts/sidebar.bundle.js.map?708c4f"
20
20
  }
@@ -138,7 +138,7 @@ const e=this.anchors.find((e=>e.annotation.$tag===t));null!=e&&e.highlights&&awa
138
138
  this._sendDocumentInfo()}destroy(){var t;this._portFinder.destroy(),this._hostRPC.destroy(),this._sidebarRPC.destroy(),this._listeners.removeAll(),this._selectionObserver.disconnect(),this._adder.destroy(),this._bucketBarClient.destroy(),null===(t=this._clusterToolbar)||void 0===t||t.destroy(),function(t){Gn(Array.from(t.querySelectorAll("hypothesis-highlight")))}(this.element),this._integration.destroy()}async anchor(t){this._contentReady&&(await this._contentReady,this._contentReady=void 0);const e=t=>{var e;const n=cr(t);if(!n)return;const i=Xn(n,null===(e=t.annotation)||void 0===e?void 0:e.$cluster);i.forEach((e=>{e._annotation=t.annotation})),t.highlights=i,this._hoveredAnnotations.has(t.annotation.$tag)&&Kn(i,!0)};this.detach(t.$tag,!1),this._annotations.add(t.$tag),t.target||(t.target=[]);const n=await Promise.all(t.target.map((async e=>{if(!e.selector||!e.selector.some((t=>"TextQuoteSelector"===t.type)))return{annotation:t,target:e};let n;try{
139
139
  const i=await this._integration.anchor(this.element,e.selector),o=Bn.fromRange(i);n={annotation:t,target:e,range:o}}catch(i){n={annotation:t,target:e}}return n})));if(!this._annotations.has(t.$tag))return[];for(const t of n)e(t);return t.$orphan=n.length>0&&n.every((t=>t.target.selector&&!t.range)),this._updateAnchors(this.anchors.concat(n),!0),this._sidebarRPC.call("syncAnchoringStatus",t),n}detach(t,e=!0){this._annotations.delete(t);const n=[];for(const e of this.anchors)e.annotation.$tag!==t?n.push(e):e.highlights&&Gn(e.highlights);this._updateAnchors(n,e)}_updateAnchors(t,e){var n;this.anchors=t,null===(n=this._clusterToolbar)||void 0===n||n.scheduleClusterUpdates(),e&&this._bucketBarClient.update(this.anchors)}async createAnnotation({highlight:t=!1}={}){const e=this.selectedRanges;this.selectedRanges=[];const n=await this.getDocumentInfo(),i=this.element,o=(await Promise.all(e.map((t=>this._integration.describe(i,t))))).map((t=>({source:n.uri,selector:t}))),r={uri:n.uri,document:n.metadata,target:o,
140
140
  $highlight:t,$cluster:t?"user-highlights":"user-annotations",$tag:"a:"+s(8)};return this._sidebarRPC.call("createAnnotation",r),this.anchor(r),hr(),r}_hoverAnnotations(t){this._hoveredAnnotations.clear(),t.forEach((t=>this._hoveredAnnotations.add(t)));for(const e of this.anchors)if(e.highlights){const n=t.includes(e.annotation.$tag);Kn(e.highlights,n)}this._sidebarRPC.call("hoverAnnotations",t)}_onSelection(t){const e=this._integration.getAnnotatableRange(t);if(!e)return void this._onClearSelection();const n=document.getSelection(),i=Un(n),o=zn(n);o?(this.selectedRanges=[e],this._hostRPC.call("textSelected"),this._adder.annotationsForSelection=ar(),this._isAdderVisible=!0,this._adder.show(o,i)):this._onClearSelection()}_onClearSelection(){this._isAdderVisible=!1,this._adder.hide(),this.selectedRanges=[],this._informHostOnNextSelectionClear&&this._hostRPC.call("textUnselected"),this._informHostOnNextSelectionClear=!0}selectAnnotations(t,{toggle:e=!1,focusInSidebar:n=!1}={}){
141
- e?this._sidebarRPC.call("toggleAnnotationSelection",t):this._sidebarRPC.call("showAnnotations",t,n),this._sidebarRPC.call("openSidebar")}setHighlightsVisible(t,e=!0){!function(t,e){t.classList.toggle("hypothesis-highlights-always-on",e)}(this.element,t),this._highlightsVisible=t,e&&this._hostRPC.call("highlightsVisibleChanged",t)}get highlightsVisible(){return this._highlightsVisible}fitSideBySide(t){this._sidebarLayout=t,this._integration.fitSideBySide(t)}get hoveredAnnotationTags(){return this._hoveredAnnotations}_handleShortcut(t){oe(t,"Ctrl+Shift+H")&&this.setHighlightsVisible(!this._highlightsVisible)}}function fr(t,e){const n=new URL(t),i=new URLSearchParams;return i.append("config",JSON.stringify(e)),n.hash=i.toString(),n.toString()}function pr(t,e){var n;const i={};for(const[t,n]of Object.entries(e))"notebookAppUrl"!==t&&"sidebarAppUrl"!==t&&null!=n&&(i[t]=n);i.origin=new URL(t).origin,i.version="1.1433.0";const o=new URL(window.location.href);if(o.hash="",i.hostURL=o.toString(),
141
+ e?this._sidebarRPC.call("toggleAnnotationSelection",t):this._sidebarRPC.call("showAnnotations",t,n),this._sidebarRPC.call("openSidebar")}setHighlightsVisible(t,e=!0){!function(t,e){t.classList.toggle("hypothesis-highlights-always-on",e)}(this.element,t),this._highlightsVisible=t,e&&this._hostRPC.call("highlightsVisibleChanged",t)}get highlightsVisible(){return this._highlightsVisible}fitSideBySide(t){this._sidebarLayout=t,this._integration.fitSideBySide(t)}get hoveredAnnotationTags(){return this._hoveredAnnotations}_handleShortcut(t){oe(t,"Ctrl+Shift+H")&&this.setHighlightsVisible(!this._highlightsVisible)}}function fr(t,e){const n=new URL(t),i=new URLSearchParams;return i.append("config",JSON.stringify(e)),n.hash=i.toString(),n.toString()}function pr(t,e){var n;const i={};for(const[t,n]of Object.entries(e))"notebookAppUrl"!==t&&"sidebarAppUrl"!==t&&null!=n&&(i[t]=n);i.origin=new URL(t).origin,i.version="1.1434.0";const o=new URL(window.location.href);if(o.hash="",i.hostURL=o.toString(),
142
142
  Array.isArray(i.services)&&(null===(n=i.services)||void 0===n?void 0:n.length)>0){const t=i.services[0];t.onLoginRequest&&(t.onLoginRequestProvided=!0),t.onLogoutRequest&&(t.onLogoutRequestProvided=!0),t.onSignupRequest&&(t.onSignupRequestProvided=!0),t.onProfileRequest&&(t.onProfileRequestProvided=!0),t.onHelpRequest&&(t.onHelpRequestProvided=!0)}return i}function mr({config:t,groupId:e}){return _e("iframe",{title:"Hypothesis annotation notebook",className:"h-full w-full border-0",allowFullScreen:!0,src:fr(t.notebookAppUrl,{...pr(t.notebookAppUrl,t),group:e})})}function gr({eventBus:t,config:e}){const[n,i]=Wt(0),[o,r]=Wt(!0),[s,a]=Wt(null),l=jt(""),c=jt(null);zt((()=>(l.current=document.body.style.overflow,()=>{document.body.style.overflow=l.current})),[]),zt((()=>{document.body.style.overflow=o?l.current:"hidden"}),[o]),zt((()=>{const e=t.createEmitter();return e.subscribe("openNotebook",(t=>{r(!1),i((t=>t+1)),a(t)})),c.current=e,()=>{e.destroy()}}),[t]);return null===s?null:_e("div",{
143
143
  className:me("fixed z-max top-0 left-0 right-0 bottom-0 p-3 bg-black/50",{hidden:o}),"data-testid":"notebook-outer",children:_e("div",{className:"relative w-full h-full","data-testid":"notebook-inner",children:[_e("div",{className:"absolute right-0 m-3",children:_e(nn,{title:"Close the Notebook",onClick:()=>{var t;r(!0),null===(t=c.current)||void 0===t||t.publish("closeNotebook")},variant:"dark",classes:me("!bg-transparent enabled:hover:!bg-grey-3"),children:_e(Ne,{className:"w-4 h-4"})})}),_e(mr,{config:e,groupId:s},n)]})})}class _r{constructor(t,e,n){i(this,"_outerContainer",void 0),i(this,"_shadowRoot",void 0),this._outerContainer=document.createElement("hypothesis-notebook"),t.appendChild(this._outerContainer),this._shadowRoot=Sn(this._outerContainer),Tt(_e(gr,{eventBus:e,config:n}),this._shadowRoot)}destroy(){Tt(null,this._shadowRoot),this._outerContainer.remove()}}function vr({eventBus:t,config:e}){const[n,i]=Wt(!0),o=jt(null);zt((()=>{const e=t.createEmitter();return e.subscribe("openProfile",(()=>{
144
144
  i(!1)})),o.current=e,()=>{e.destroy()}}),[t]);return n?null:_e("div",{className:"fixed z-max top-0 left-0 right-0 bottom-0 p-3 bg-black/50","data-testid":"profile-outer",children:_e("div",{className:"relative w-full h-full","data-testid":"profile-inner",children:[_e("div",{className:"absolute right-0 m-3",children:_e(nn,{title:"Close the Profile",onClick:()=>{var t;i(!0),null===(t=o.current)||void 0===t||t.publish("closeProfile")},variant:"dark",classes:me("!bg-transparent enabled:hover:!bg-grey-3"),children:_e(Ne,{className:"w-4 h-4"})})}),_e("iframe",{title:"Hypothesis profile",className:"h-full w-full border-0",src:e.profileAppUrl})]})})}class br{constructor(t,e,n){i(this,"_outerContainer",void 0),i(this,"shadowRoot",void 0),this._outerContainer=document.createElement("hypothesis-profile"),t.appendChild(this._outerContainer),this.shadowRoot=Sn(this._outerContainer),Tt(_e(vr,{eventBus:e,config:n}),this.shadowRoot)}destroy(){Tt(null,this.shadowRoot),this._outerContainer.remove()}}var yr={exports:{}}
@@ -552,7 +552,7 @@ const n=e.match(/(?:[^\s"']+|"[^"]*"|'[^']*')+/g);return n?n.map(cf).filter((e=>
552
552
  const a=null!==(n=o.position)&&void 0!==n?n:Number.MAX_SAFE_INTEGER,s=null!==(r=i.position)&&void 0!==r?r:Number.MAX_SAFE_INTEGER;return Math.sign(a-s)}};const gf=function(e){if(1!==e.length)throw new Error("Memoize input must be a function of one argument");let t,n;return function(r){return r===t||(t=r,n=e(r)),n}}((function(e){const t=e.selection,n={expanded:t.expanded,forcedVisible:t.forcedVisible,selected:t.selected,sortCompareFn:ff[t.sortKey]};if(!!t.filterQuery||Object.keys(t.filters).length>0){const e=function(e,t={}){const n=e=>{const n=t[e];return"string"==typeof n?[n]:[]},r=n("cfi"),o=n("page"),i=n("quote"),a=n("tag"),s=n("text"),l=n("uri"),c=n("user"),u=[],d=[],h=uf(e,af);for(const e of h){const t=e.slice(0,e.indexOf(":")),n=e.slice(t.length+1);switch(t){case"cfi":r.push(n);break;case"quote":i.push(n);break;case"page":o.push(n);break;case"since":{const t=86400,n={sec:1,min:60,hour:3600,day:t,week:7*t,month:30*t,year:365*t
553
553
  },r=e.slice(6).toLowerCase().match(/^(\d+)(sec|min|hour|day|week|month|year)?$/);if(r){const e=parseFloat(r[1]),t=r[2]||"sec";d.push(e*n[t])}}break;case"tag":a.push(n);break;case"text":s.push(n);break;case"uri":l.push(n);break;case"user":c.push(n);break;default:u.push(e)}}return{any:{terms:u,operator:"and"},cfi:{terms:r,operator:"or"},quote:{terms:i,operator:"and"},page:{terms:o,operator:"or"},since:{terms:d,operator:"and"},tag:{terms:a,operator:"and"},text:{terms:s,operator:"and"},uri:{terms:l,operator:"or"},user:{terms:c,operator:"or"}}}(t.filterQuery||"",t.filters);n.filterFn=t=>function(e,t){const n=(e,t)=>new tf(t,of[e]),r=Object.entries(t).filter((([,e])=>e.terms.length>0)).map((([e,t])=>{let r;if("any"===e){const e=["quote","text","tag","user"];r=t.terms.map((t=>new nf("or",e.map((e=>n(e,t))))))}else r=t.terms.map((t=>n(e,t)));return new nf(t.operator,r)})),o=new nf("and",r);return e.filter((e=>e.id&&o.matches(e))).map((e=>e.id))}([t],e).length>0}const r=Xp(e.annotations,n),o={annotation:0,note:0,
554
554
  orphan:0};return e.showTabs&&(r.children=r.children.filter((e=>{if(!e.annotation)return!1;if(Do(e.annotation))return!1;const n=hf(e.annotation);return o[n]+=1,n===t.selectedTab}))),{tabCounts:o,rootThread:r}}));function vf(){const e=Ea(),t=e.allAnnotations(),n=e.filterQuery(),r=e.route(),o=e.selectionState(),i=e.getFilterValues(),a=e.isFeatureEnabled("search_panel"),s=e.hasAppliedFilter()||e.hasSelectedAnnotations(),l="sidebar"===r&&(a||!s),c=de((()=>{const e={...o,filterQuery:n,filters:i};return{annotations:t,selection:e,showTabs:l}}),[t,n,o,i,l]);return gf(c)}var bf=Kr((function({loadAnnotationsService:e,onLogin:t}){var n;const r=Ea(),o=null!==(n=r.routeParams().id)&&void 0!==n?n:"",{rootThread:i}=vf(),a=r.profile().userid,[s,l]=ae(!1);return le((()=>{l(!1),r.clearAnnotations(),e.loadThread(o).then((e=>{const t=e.filter((e=>0===(e.references||[]).length))[0];t&&(e.forEach((e=>e.id&&r.setExpanded(e.id,!0))),t.id!==o&&r.highlightAnnotations([o]))})).catch((()=>{l(!0)}))}),[o,a,e,r]),Oe(v,{children:[s&&Oe(Ta,{
555
- errorType:"annotation",onLoginRequest:t}),Oe(Hp,{threads:i.children})]})}),["loadAnnotationsService"]);class yf{constructor(e,t,n=window){var r,o,i;B(this,"version",void 0),B(this,"userAgent",void 0),B(this,"urls",void 0),B(this,"fingerprint",void 0),B(this,"account",void 0),B(this,"timestamp",void 0),B(this,"segment",void 0);const a="N/A";let s=a;e.userid&&(s=e.userid,e.displayName&&(s=`${e.displayName} (${s})`)),this.version="1.1433.0",this.userAgent=n.navigator.userAgent,this.urls=t.map((e=>e.uri)).join(", ")||a,this.fingerprint=null!==(r=null===(o=t[0])||void 0===o||null===(o=o.metadata)||void 0===o?void 0:o.documentFingerprint)&&void 0!==r?r:a,this.account=s,this.timestamp=(new Date).toString();const l=null===(i=t[0])||void 0===i?void 0:i.segment;if(l){const e=[];l.cfi&&e.push(["CFI",l.cfi]),l.url&&e.push(["URL",l.url]),this.segment=e.map((([e,t])=>`${e}: ${t}`)).join(", ")}}asFormattedString(){
555
+ errorType:"annotation",onLoginRequest:t}),Oe(Hp,{threads:i.children})]})}),["loadAnnotationsService"]);class yf{constructor(e,t,n=window){var r,o,i;B(this,"version",void 0),B(this,"userAgent",void 0),B(this,"urls",void 0),B(this,"fingerprint",void 0),B(this,"account",void 0),B(this,"timestamp",void 0),B(this,"segment",void 0);const a="N/A";let s=a;e.userid&&(s=e.userid,e.displayName&&(s=`${e.displayName} (${s})`)),this.version="1.1434.0",this.userAgent=n.navigator.userAgent,this.urls=t.map((e=>e.uri)).join(", ")||a,this.fingerprint=null!==(r=null===(o=t[0])||void 0===o||null===(o=o.metadata)||void 0===o?void 0:o.documentFingerprint)&&void 0!==r?r:a,this.account=s,this.timestamp=(new Date).toString();const l=null===(i=t[0])||void 0===i?void 0:i.segment;if(l){const e=[];l.cfi&&e.push(["CFI",l.cfi]),l.url&&e.push(["URL",l.url]),this.segment=e.map((([e,t])=>`${e}: ${t}`)).join(", ")}}asFormattedString(){
556
556
  return`Version: ${this.version}\nUser Agent: ${this.userAgent}\nURL: ${this.urls}\nFingerprint: ${this.fingerprint}\nAccount: ${this.account}\nDate: ${this.timestamp}\n`}asEncodedURLString(){return encodeURIComponent(this.asFormattedString())}}var _f="complete",wf="canceled";function xf(e,t,n){e.self===e?e.scrollTo(t,n):(e.scrollLeft=t,e.scrollTop=n)}function kf(e){var t=e._scrollSettings;if(t){var n=t.maxSynchronousAlignments,r=function(e,t){var n,r,o,i,a,s,l,c=e.align,u=e.target.getBoundingClientRect(),d=c&&null!=c.left?c.left:.5,h=c&&null!=c.top?c.top:.5,m=c&&null!=c.leftOffset?c.leftOffset:0,p=c&&null!=c.topOffset?c.topOffset:0,f=d,g=h;if(e.isWindow(t))s=Math.min(u.width,t.innerWidth),l=Math.min(u.height,t.innerHeight),r=u.left+t.pageXOffset-t.innerWidth*f+s*f,o=u.top+t.pageYOffset-t.innerHeight*g+l*g,r-=m,o-=p,r=e.align.lockX?t.pageXOffset:r,o=e.align.lockY?t.pageYOffset:o,i=r-t.pageXOffset,a=o-t.pageYOffset;else{s=u.width,l=u.height,n=t.getBoundingClientRect()
557
557
  ;var v=u.left-(n.left-t.scrollLeft),b=u.top-(n.top-t.scrollTop);r=v+s*f-t.clientWidth*f,o=b+l*g-t.clientHeight*g,r-=m,o-=p,r=Math.max(Math.min(r,t.scrollWidth-t.clientWidth),0),o=Math.max(Math.min(o,t.scrollHeight-t.clientHeight),0),r=e.align.lockX?t.scrollLeft:r,o=e.align.lockY?t.scrollTop:o,i=r-t.scrollLeft,a=o-t.scrollTop}return{x:r,y:o,differenceX:i,differenceY:a}}(t,e),o=Date.now()-t.startTime,i=Math.min(1/t.time*o,1);if(t.endIterations>=n)return xf(e,r.x,r.y),e._scrollSettings=null,t.end(_f);var a=1-t.ease(i);if(xf(e,r.x-r.differenceX*a,r.y-r.differenceY*a),o>=t.time)return t.endIterations++,t.scrollAncestor&&kf(t.scrollAncestor),void kf(e);!function(e){if("requestAnimationFrame"in window)return window.requestAnimationFrame(e);setTimeout(e,16)}(kf.bind(null,e))}}function Nf(e){return e.self===e}function Sf(e){return"pageXOffset"in e||(e.scrollHeight!==e.clientHeight||e.scrollWidth!==e.clientWidth)&&"hidden"!==getComputedStyle(e).overflow}function Af(){return!0}function Ef(e){
558
558
  if(e.assignedSlot)return Ef(e.assignedSlot);if(e.parentElement)return"body"===e.parentElement.tagName.toLowerCase()?e.parentElement.ownerDocument.defaultView||e.parentElement.ownerDocument.ownerWindow:e.parentElement;if(e.getRootNode){var t=e.getRootNode();if(11===t.nodeType)return t.host}}var Tf=function(e,t,n){if(e){"function"==typeof t&&(n=t,t=null),t||(t={}),t.time=isNaN(t.time)?1e3:t.time,t.ease=t.ease||function(e){return 1-Math.pow(1-e,e/2)},t.align=t.align||{};var r=Ef(e),o=1,i=t.validTarget||Af,a=t.isScrollable;t.debug&&(console.log("About to scroll to",e),r||console.error("Target did not have a parent, is it mounted in the DOM?"));for(var s=[];r;)if(t.debug&&console.log("Scrolling parent node",r),i(r,o)&&(a?a(r,Sf):Sf(r))&&(o++,s.push(r)),!(r=Ef(r))){l(_f);break}return s.reduce(((n,r,o)=>function(e,t,n,r,o){var i,a=!t._scrollSettings,s=t._scrollSettings,l=Date.now(),c={passive:!0};function u(e){t._scrollSettings=null,
@@ -641,31 +641,32 @@ const n=Wo(e),r=Go(e),o=[`Created at: ${xp(new Date(e.created))}`,`Author: ${c(e
641
641
  Total replies: ${0}
642
642
 
643
643
  ${0}`),xp(o),a,i,t,s.length,s.join(", "),e.length,l.length,u.join("\n\n"))}buildCSVExportContent(e,{groupName:t="",defaultAuthority:n="",displayNamesEnabled:r=!1,separator:o=","}={}){const{uri:i,extractUsername:a}=this._exportCommon(e,{displayNamesEnabled:r,defaultAuthority:n}),s=e=>{var n,r;return[xp(new Date(e.created)),a(e),null!==(n=Wo(e))&&void 0!==n?n:"",i,t,Uo(e),null!==(r=Go(e))&&void 0!==r?r:"",e.text,e.tags.join(",")].map((e=>function(e,t){return new RegExp(`["\n\r${t}]`).test(e)?`"${e.replace(/"/g,'""')}"`:e}(e,o))).join(o)};return`${["Created at","Author","Page","URL","Group","Type","Quote","Comment","Tags"].join(o)}\n${e.map((e=>s(e))).join("\n")}`}buildHTMLExportContent(e,{groupName:t="",displayNamesEnabled:n=!1,defaultAuthority:r="",now:o=new Date}={}){const{uri:i,title:a,uniqueUsers:s,replies:l,extractUsername:c}=this._exportCommon(e,{displayNamesEnabled:n,defaultAuthority:r});return function(e,t,n){var r=Object.assign({},ib,n||{});return r.jsx||(r.attributeHook=null),zv(e,t,r)
644
- }(Oe("html",{lang:"en",children:[Oe("head",{children:[Oe("title",{children:`Annotations on "${a}"`}),Oe("meta",{charSet:"UTF-8"})]}),Oe("body",{children:[Oe("section",{children:[Oe("h1",{children:"Summary"}),Oe("p",{children:Oe("time",{dateTime:o.toISOString(),children:xp(o)})}),Oe("p",{children:Oe("strong",{children:a})}),Oe("p",{children:Oe("a",{href:i,target:"_blank",rel:"noopener noreferrer",children:i})}),Oe("table",{children:Oe("tbody",{children:[Oe("tr",{children:[Oe("td",{children:"Group:"}),Oe("td",{children:t})]}),Oe("tr",{children:[Oe("td",{children:"Total users:"}),Oe("td",{children:s.length})]}),Oe("tr",{children:[Oe("td",{children:"Users:"}),Oe("td",{children:s.join(", ")})]}),Oe("tr",{children:[Oe("td",{children:"Total annotations:"}),Oe("td",{children:e.length})]}),Oe("tr",{children:[Oe("td",{children:"Total replies:"}),Oe("td",{children:l.length})]})]})})]}),Oe("hr",{}),Oe("section",{children:[Oe("h1",{children:"Annotations"}),e.map(((e,t)=>{const n=Wo(e),r=Go(e);return Oe("article",{
645
- children:[Oe("h2",{children:["Annotation ",t+1,":"]}),Oe("table",{children:Oe("tbody",{children:[Oe("tr",{children:[Oe("td",{children:"Created at:"}),Oe("td",{children:Oe("time",{dateTime:e.created,children:xp(new Date(e.created))})})]}),Oe("tr",{children:[Oe("td",{children:"Author:"}),Oe("td",{children:c(e)})]}),n&&Oe("tr",{children:[Oe("td",{children:"Page:"}),Oe("td",{children:n})]}),Oe("tr",{children:[Oe("td",{children:"Type:"}),Oe("td",{children:Uo(e)})]}),r&&Oe("tr",{children:[Oe("td",{children:"Quote:"}),Oe("td",{children:Oe("blockquote",{style:{margin:0},children:r})})]}),Oe("tr",{children:[Oe("td",{children:"Comment:"}),Oe("td",{children:e.text})]}),e.tags.length>0&&Oe("tr",{children:[Oe("td",{children:"Tags:"}),Oe("td",{children:e.tags.join(", ")})]})]})})]},e.id)}))]})]})]}),{},{pretty:!0}).replace(/\t/g," ")}_exportCommon(e,{displayNamesEnabled:t,defaultAuthority:n}){const[r]=e;if(!r)throw new Error("No annotations to export");const o=e=>rs(e,n,t),{uri:i,title:a}=To(r);return{uri:i,title:a,
646
- uniqueUsers:[...new Set(e.map((e=>o(e))).filter(Boolean))],replies:e.filter((e=>zo(e))),extractUsername:o}}}hb.$inject=[];class mb extends Error{constructor(e,t,n=""){let r="Network request failed";t&&(r+=` (${t.status})`),n&&(r+=`: ${n}`),super(r),B(this,"url",void 0),B(this,"response",void 0),B(this,"reason",void 0),this.url=e,this.response=t,this.reason=n}}async function pb(e,t){let n,r;try{n=await fetch(e,t)}catch(t){throw new mb(e,null,t.message)}if(204===n.status)return null;try{r=await n.json()}catch(t){throw new mb(e,n,"Failed to parse response")}var o;if(!n.ok)throw new mb(e,n,null===(o=r)||void 0===o?void 0:o.reason);return r}class fb{constructor(e,t,n){B(this,"_clientId",void 0),B(this,"search",void 0),B(this,"annotation",void 0),B(this,"group",void 0),B(this,"groups",void 0),B(this,"profile",void 0),this._clientId=null;const r=e.routes(),o=()=>this._clientId,i=e=>function(e,t,{getAccessToken:n,getClientId:r,onRequestStarted:o,onRequestFinished:i}){return async(a,s)=>{o();try{
647
- const[o,i]=await Promise.all([e,n()]),l=function(e,t){let n=e;const r=t.split(".");for(const[e,t]of r.entries()){const o=n[t];if(!o||"url"in o){if(o&&e===r.length-1)return o;break}n=o}return null}(o,t);if(!l)throw new Error(`Missing API route: ${t}`);const c={"Content-Type":"application/json","Hypothesis-Client-Version":"1.1433.0"};i&&(c.Authorization="Bearer "+i);const u=r();u&&(c["X-Client-Id"]=u);const{url:d,unusedParams:h}=Qi(l.url,a),m=new URL(d);for(const[e,t]of Object.entries(h)){const n=Array.isArray(t)?t:[t];for(const t of n)null!=t&&m.searchParams.append(e,t.toString())}return await pb(m.toString(),{body:s?JSON.stringify(lb(s)):null,headers:c,method:l.method})}finally{i()}}}(r,e,{getAccessToken:()=>t.getAccessToken(),getClientId:o,onRequestStarted:n.apiRequestStarted,onRequestFinished:n.apiRequestFinished});this.search=i("search"),this.annotation={create:i("annotation.create"),delete:i("annotation.delete"),get:i("annotation.read"),update:i("annotation.update"),flag:i("annotation.flag"),
648
- hide:i("annotation.hide"),unhide:i("annotation.unhide")},this.group={member:{delete:i("group.member.delete")},read:i("group.read")},this.groups={list:i("groups.read")},this.profile={groups:{read:i("profile.groups.read")},read:i("profile.read"),update:i("profile.update")}}setClientId(e){this._clientId=e}}fb.$inject=["apiRoutes","auth","store"];var gb={};function vb(e,t){"boolean"==typeof t&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}var bb=vb;vb.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)},vb.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],
649
- this._cachedTimeouts=null},vb.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=(new Date).getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.push(e),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var n=this._timeouts.shift();if(void 0===n){if(!this._cachedTimeouts)return!1;this._errors.splice(0,this._errors.length-1),n=this._cachedTimeouts.slice(-1)}var r=this;return this._timer=setTimeout((function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout((function(){r._operationTimeoutCb(r._attempts)}),r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)}),n),this._options.unref&&this._timer.unref(),!0},vb.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout((function(){n._operationTimeoutCb()}),n._operationTimeout)),
650
- this._operationStart=(new Date).getTime(),this._fn(this._attempts)},vb.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)},vb.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)},vb.prototype.start=vb.prototype.try,vb.prototype.errors=function(){return this._errors},vb.prototype.attempts=function(){return this._attempts},vb.prototype.mainError=function(){if(0===this._errors.length)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var o=this._errors[r],i=o.message,a=(e[i]||0)+1;e[i]=a,a>=n&&(t=o,n=a)}return t},function(e){var t=bb;e.operation=function(n){var r=e.timeouts(n);return new t(r,{forever:n&&(n.forever||n.retries===1/0),unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n]
651
- ;if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var r=[],o=0;o<t.retries;o++)r.push(this.createTimeout(o,t));return e&&e.forever&&!r.length&&r.push(this.createTimeout(o,t)),r.sort((function(e,t){return e-t})),r},e.createTimeout=function(e,t){var n=t.randomize?Math.random()+1:1,r=Math.round(n*Math.max(t.minTimeout,1)*Math.pow(t.factor,e));return r=Math.min(r,t.maxTimeout)},e.wrap=function(t,n,r){if(n instanceof Array&&(r=n,n=null),!r)for(var o in r=[],t)"function"==typeof t[o]&&r.push(o);for(var i=0;i<r.length;i++){var a=r[i],s=t[a];t[a]=function(r){var o=e.operation(n),i=Array.prototype.slice.call(arguments,1),a=i.pop();i.push((function(e){o.retry(e)||(e&&(arguments[0]=o.mainError()),a.apply(this,arguments))})),o.attempt((function(){r.apply(t,i)}))}.bind(t,s),t[a].options=n}}}(gb);var yb=t(gb);function _b(e,t){return new Promise(((n,r)=>{const o=yb.operation(t);o.attempt((async()=>{try{const t=await e();o.retry(),n(t)}catch(e){o.retry(e)||r(e)}}))}))}function wb(e){
652
- return _b((()=>pb(e)))}class xb{constructor(e){B(this,"_apiURL",void 0),B(this,"_routeCache",void 0),B(this,"_linkCache",void 0),this._apiURL=e.apiUrl,this._routeCache=null,this._linkCache=null}routes(){return this._routeCache||(this._routeCache=wb(this._apiURL).then((e=>e.links))),this._routeCache}links(){return this._linkCache||(this._linkCache=this.routes().then((async e=>wb(e.links.url)))),this._linkCache}}xb.$inject=["settings"];class kb extends Error{constructor(e,t){super(e),B(this,"cause",void 0),this.cause=t}}class Nb{constructor(e){B(this,"clientId",void 0),B(this,"tokenEndpoint",void 0),B(this,"authorizationEndpoint",void 0),B(this,"revokeEndpoint",void 0),this.clientId=e.clientId,this.tokenEndpoint=e.tokenEndpoint,this.authorizationEndpoint=e.authorizationEndpoint,this.revokeEndpoint=e.revokeEndpoint}exchangeAuthCode(e){return this._getAccessToken({client_id:this.clientId,grant_type:"authorization_code",code:e})}exchangeGrantToken(e){return this._getAccessToken({
653
- grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:e})}refreshToken(e){return this._getAccessToken({grant_type:"refresh_token",refresh_token:e})}async revokeToken(e){try{await this._formPost(this.revokeEndpoint,{token:e})}catch(e){throw new kb("Failed to revoke access token",e)}}authorize(e){const t=Xg(16),n=new Promise(((n,r)=>{e.addEventListener("message",(function o(i){if("object"!=typeof i.data)return;const a=i.data;a.state===t&&("authorization_response"===a.type&&n(i.data),"authorization_canceled"===a.type&&r(new Error("Authorization window was closed")),e.removeEventListener("message",o))}))})),r=new URL(this.authorizationEndpoint);r.searchParams.set("client_id",this.clientId),r.searchParams.set("origin",e.location.origin),r.searchParams.set("response_mode","web_message"),r.searchParams.set("response_type","code"),r.searchParams.set("state",t);const o=`left=${e.screen.width/2-237.5},top=${e.screen.height/2-215},width=475,height=430`
654
- ;if(!e.open(r.toString(),"Log in to Hypothesis",o))throw new Error("Failed to open login window");return n.then((e=>e.code))}async _formPost(e,t){const n=new URLSearchParams;for(const[e,r]of Object.entries(t))n.set(e,r);n.sort();return pb(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()})}async _getAccessToken(e){let t;try{t=await this._formPost(this.tokenEndpoint,e)}catch(e){throw new kb("Failed to fetch access token",e)}return{accessToken:t.access_token,expiresAt:Date.now()+1e3*(t.expires_in-10),refreshToken:t.refresh_token}}}class Sb extends jf{constructor(e,t,n,r,o){super(),B(this,"_authCode",void 0),B(this,"_client",void 0),B(this,"_tokenInfoPromise",void 0),B(this,"_apiRoutes",void 0),B(this,"_localStorage",void 0),B(this,"_settings",void 0),B(this,"_toastMessenger",void 0),B(this,"_window",void 0),this._authCode=null,this._client=null,this._tokenInfoPromise=null,this._apiRoutes=t,this._localStorage=n,this._settings=r,this._toastMessenger=o,this._window=e,
655
- this._listenForTokenStorageEvents()}_listenForTokenStorageEvents(){this._window.addEventListener("storage",(({key:e})=>{e===this._storageKey()&&(this._tokenInfoPromise=null,this.emit("oauthTokensChanged"))}))}_loadToken(){const e=this._localStorage.getObject(this._storageKey());return(e=>!!e&&"object"==typeof e&&"accessToken"in e&&"string"==typeof e.accessToken&&"refreshToken"in e&&"string"==typeof e.refreshToken&&"expiresAt"in e&&"number"==typeof e.expiresAt)(e)?{accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.expiresAt}:null}async _oauthClient(){if(this._client)return this._client;const e=await this._apiRoutes.links();var t,n;return this._client=new Nb({clientId:this._settings.oauthClientId,authorizationEndpoint:e["oauth.authorize"],revokeEndpoint:e["oauth.revoke"],tokenEndpoint:(t="token",n=this._settings.apiUrl,new URL(t,n).href)}),this._client}async _exchangeAuthCodeForToken(e){const t=await this._oauthClient(),n=await t.exchangeAuthCode(e);return this._saveToken(n),n}
656
- async _exchangeGrantToken(e){const t=await this._oauthClient();try{return await t.exchangeGrantToken(e)}catch(e){throw this._toastMessenger.error("Hypothesis login lost: You must reload the page to annotate.",{autoDismiss:!1}),e}}_getGrantToken(){var e;return null===(e=qr(this._settings))||void 0===e?void 0:e.grantToken}_storageKey(){let e=new URL(this._settings.apiUrl).hostname;return e=e.replace(/\./g,"%2E"),`hypothesis.oauth.${e}.token`}_saveToken(e){this._localStorage.setObject(this._storageKey(),e)}async _refreshAccessToken(e,t){const n=await this._oauthClient();let r;try{if(r=await n.refreshToken(e),Date.now()>r.expiresAt)throw new Error("Refreshed token expired in the past")}catch{return null}return t.persist&&this._saveToken(r),r}async getAccessToken(){if(!this._tokenInfoPromise){const e=this._getGrantToken();void 0!==e?this._tokenInfoPromise=e?this._exchangeGrantToken(e):Promise.resolve(null):this._authCode?(this._tokenInfoPromise=this._exchangeAuthCodeForToken(this._authCode),
657
- this._authCode=null):this._tokenInfoPromise=Promise.resolve(this._loadToken())}const e=this._tokenInfoPromise,t=await this._tokenInfoPromise;if(!t)return null;if(e!==this._tokenInfoPromise)return this.getAccessToken();if(Date.now()>t.expiresAt){const e=this._getGrantToken();return this._tokenInfoPromise=this._refreshAccessToken(t.refreshToken,{persist:void 0===e}),this.getAccessToken()}return t.accessToken}async login(){const e=await this._oauthClient(),t=await e.authorize(this._window);this._authCode=t,this._tokenInfoPromise=null}async logout(){const[e,t]=await Promise.all([this._tokenInfoPromise,this._oauthClient()]);e&&await t.revokeToken(e.accessToken),this._tokenInfoPromise=null,this._localStorage.removeItem(this._storageKey())}}Sb.$inject=["$window","apiRoutes","localStorage","settings","toastMessenger"];class Ab{constructor(e,t,n){B(this,"_annotationsService",void 0),B(this,"_toastMessenger",void 0),B(this,"_store",void 0),B(this,"_saving",void 0),B(this,"_failed",void 0),this._annotationsService=e,
658
- this._toastMessenger=t,this._store=n,this._saving=new Set,this._failed=new Set}init(){const e=e=>!this._saving.has(e)&&!this._failed.has(e);this._store.subscribe((()=>{this._store.newHighlights().forEach((t=>{const n=t.$tag;e(n)&&(this._saving.add(n),_b((()=>this._annotationsService.save(t))).then((()=>{this._toastMessenger.success("Highlight saved",{visuallyHidden:!0})})).catch((()=>{this._failed.add(n)})).finally((()=>{this._saving.delete(n)})))}))}))}isSaving(){return this._saving.size>0}}function Eb(e){if(null===e||"object"!=typeof e)return!1;for(const t of["frame1","frame2","type","requestId"])if("string"!=typeof e[t])return!1;return!0}Ab.$inject=["annotationsService","toastMessenger","store"];class Tb extends Error{constructor(e){super(e)}}class Cb{constructor({hostFrame:e,source:t,sourceId:n}){B(this,"_hostFrame",void 0),B(this,"_listeners",void 0),B(this,"_source",void 0),B(this,"_sourceId",void 0),this._hostFrame=e,this._source=t,this._sourceId=n,this._listeners=new Wa}destroy(){
659
- this._listeners.removeAll()}async discover(e){const t=Xg(6);return new Promise(((n,r)=>{const o=()=>{this._hostFrame.postMessage({frame1:this._source,frame2:e,type:"request",requestId:t,sourceId:this._sourceId},"*")},i=setInterval(o,250),a=setTimeout((()=>{clearInterval(i),r(new Tb(`Unable to establish ${this._source}-${e} communication channel`))}),2e4),s=this._listeners.add(window,"message",(o=>{const{data:l,ports:c}=o;Eb(l)&&l.requestId===t&&"request"!==l.type&&(clearInterval(i),clearTimeout(a),this._listeners.remove(s),"string"==typeof l.error?r(new Tb(l.error)):c.length>0?n(c[0]):r(new Tb(`${this._source}-${e} port request failed`)))}));o()}))}}function Mb(e){const t=t=>{const{data:n}=t;if(n&&"hypothesis-error"===(null==n?void 0:n.type)){const{context:t,error:r}=n;e(r instanceof Error?r:function(e){const t=new Error(e.message);return t.stack=e.stack,t}(r),t)}};return window.addEventListener("message",t),()=>window.removeEventListener("message",t)}const Ib="1.0.0",zb="frame-rpc"
660
- ;function Lb(e,t,n=[],r=-1){e.postMessage({protocol:zb,version:Ib,arguments:n,method:t,sequence:r})}class Ob{constructor({userAgent:e=navigator.userAgent,currentWindow:t=window}={}){B(this,"_callbacks",void 0),B(this,"_destroyed",void 0),B(this,"_listeners",void 0),B(this,"_methods",void 0),B(this,"_port",void 0),B(this,"_sequence",void 0),B(this,"_pendingCalls",void 0),B(this,"_receivedCloseEvent",void 0),this._port=null,this._methods=new Map,this._sequence=1,this._callbacks=new Map,this._listeners=new Wa,this._listeners.add(t,"unload",(()=>{this._port&&(Lb(this._port,"close"),t!==t.parent&&function(e){const t=e.match(/\bAppleWebKit\/([0-9]+)\b/);return!!t&&!(parseInt(t[1])<=537)}(e)&&t.parent.postMessage({type:"hypothesisPortClosed"},"*",[this._port]))})),this._pendingCalls=[],this._destroyed=!1,this._receivedCloseEvent=!1}on(e,t){if(this._port)throw new Error("Cannot add a method handler after a port is connected");this._methods.set(e,t)}connect(e){this._port=e,
661
- this._listeners.add(e,"message",(e=>this._handle(e))),e.start(),Lb(e,"connect");for(const[e,t]of this._pendingCalls)this.call(e,...t);this._pendingCalls=[]}destroy(){this._port&&(Lb(this._port,"close"),this._port.close()),this._destroyed=!0,this._listeners.removeAll()}call(e,...t){if(this._port||this._pendingCalls.push([e,t]),!this._port||this._destroyed)return;const n=this._sequence++,r=t[t.length-1];"function"==typeof r&&(this._callbacks.set(n,r),t=t.slice(0,-1)),Lb(this._port,e,t,n)}_parseMessage({data:e}){return e&&"object"==typeof e?e.protocol!==zb||e.version!==Ib?null:Array.isArray(e.arguments)?e:null:null}_handle(e){const t=this._parseMessage(e),n=this._port;if(t&&n)if("method"in t){if("close"===t.method){if(this._receivedCloseEvent)return;this._receivedCloseEvent=!0}const e=this._methods.get(t.method);if(!e)return;const r=(...e)=>{const r={arguments:e,protocol:zb,response:t.sequence,version:Ib};n.postMessage(r)};e(...t.arguments,r)}else if("response"in t){const e=this._callbacks.get(t.response)
662
- ;this._callbacks.delete(t.response),e&&e(...t.arguments)}}}function Rb(e,t){var n;const r=null===(n=e.target[0].selector)||void 0===n?void 0:n.find((e=>"EPUBContentSelector"===e.type));return!r||Boolean(t.url&&r.url===t.url||t.cfi&&r.cfi&&Jp(r.cfi)===Jp(t.cfi))}function Pb(e,t,n,r){let o=t();return e((()=>{const e=t();if(r?r(e,o):e===o)return;const i=o;o=e,n(e,i)}))}function Db({$cluster:e,$tag:t,target:n,uri:r}){return{$cluster:e,$tag:t,target:n,uri:r}}function Fb(e,t){var n;const r=e.find((e=>e.uri===t.uri));if(r)return r;const o=e.find((e=>null===e.id));return o||(null!==(n=e[0])&&void 0!==n?n:null)}class Bb{constructor(e,t,n,r){B(this,"_annotationsService",void 0),B(this,"_guestRPC",void 0),B(this,"_highlightsVisible",void 0),B(this,"_hostRPC",void 0),B(this,"_inFrame",void 0),B(this,"_listeners",void 0),B(this,"_portFinder",void 0),B(this,"_store",void 0),B(this,"_toastMessenger",void 0),B(this,"_pendingScrollToTag",void 0),B(this,"_pendingHoverTag",void 0),B(this,"_pendingAnchorStatusUpdates",void 0),
663
- B(this,"_scheduleAnchorStatusUpdate",void 0),B(this,"_sidebarIsOpen",void 0),B(this,"_window",void 0),this._window=e,this._annotationsService=t,this._store=n,this._toastMessenger=r,this._portFinder=new Cb({hostFrame:this._window.parent,source:"sidebar"}),this._listeners=new Wa,this._hostRPC=new Ob,this._guestRPC=new Map,this._inFrame=new Set,this._highlightsVisible=!1,this._pendingScrollToTag=null,this._pendingHoverTag=null,this._pendingAnchorStatusUpdates=new Map,this._scheduleAnchorStatusUpdate=Va((()=>{const e=Object.fromEntries(this._pendingAnchorStatusUpdates.entries());this._store.updateAnchorStatus(e),this._pendingAnchorStatusUpdates.clear()}),10),this._sidebarIsOpen=!1,this._setupSyncToGuests(),this._setupHostEvents(),this._setupFeatureFlagSync(),this._setupToastMessengerEvents()}_setupSyncToGuests(){let e=0;const t=(t,n,r)=>{let o=0;const i=new Set,a=[];t.forEach((e=>{zo(e)||(Ro(e)&&++o,i.add(e.$tag),this._inFrame.has(e.$tag)||a.push(e))}));const s=r.filter((e=>!i.has(e.$tag)));if(a.length>0){
664
- const e=new Map,t=[];for(const r of a){var l;const o=Fb(n,r);if(!o||o.segment&&!Rb(r,o.segment)){t.push(r.$tag);continue}const i=null!==(l=e.get(o.id))&&void 0!==l?l:[];i.push(r),e.set(o.id,i)}t.length>0&&this._updateAnchorStatus(t,"anchored");for(const[t,n]of e){const e=this._guestRPC.get(t);e&&e.call("loadAnnotations",n.map(Db))}a.forEach((e=>{this._inFrame.add(e.$tag)}))}s.forEach((e=>{this._guestRPC.forEach((t=>t.call("deleteAnnotation",e.$tag))),this._inFrame.delete(e.$tag)})),n.length>0&&n.every((e=>e.isAnnotationFetchComplete))&&(0!==o&&o===e||(this._hostRPC.call("publicAnnotationCountChanged",o),e=o))};Pb(this._store.subscribe,(()=>[this._store.allAnnotations(),this._store.frames()]),(([e,n],[r])=>t(e,n,r)),Di),Pb(this._store.subscribe,(()=>this._store.getContentInfo()),(e=>{this._guestRPC.forEach((t=>{t.call("showContentInfo",e)}))}))}_updateAnchorStatus(e,t){const n=Array.isArray(e)?e:[e];for(const e of n)this._pendingAnchorStatusUpdates.set(e,t);this._scheduleAnchorStatusUpdate()}
665
- _connectGuest(e,t){const n=new Ob;this._guestRPC.set(t,n),n.on("documentInfoChanged",(e=>{this._store.connectFrame({id:t,metadata:e.metadata,uri:e.uri,segment:e.segmentInfo,persistent:e.persistent})})),n.on("close",(()=>{const e=this._store.frames().find((e=>e.id===t));e&&!e.persistent&&this._store.destroyFrame(e),this._inFrame.clear(),n.destroy(),this._guestRPC.delete(t)})),n.on("createAnnotation",(e=>{const t=this._store.isLoggedIn(),n=null!==this._store.focusedGroup();if(!t||!n)return this._hostRPC.call("openSidebar"),t||this._store.openSidebarPanel("loginPrompt"),void this._guestRPC.forEach((t=>t.call("deleteAnnotation",e.$tag)));this._inFrame.add(e.$tag),e.$highlight||this._hostRPC.call("openSidebar"),this._hostRPC.call("showHighlights"),this._annotationsService.create(e)})),n.on("syncAnchoringStatus",(({$tag:e,$orphan:t})=>{this._inFrame.add(e),this._updateAnchorStatus(e,t?"orphan":"anchored"),e===this._pendingHoverTag&&(this._pendingHoverTag=null,n.call("hoverAnnotations",[e])),
666
- this._pendingScrollToTag&&e===this._pendingScrollToTag&&(this._pendingScrollToTag=null,n.call("scrollToAnnotation",e))})),n.on("showAnnotations",((e,t=!1)=>{const n=this._store.findIDsForTags(e);this._store.selectAnnotations(n),this._store.selectTab("annotation"),n.length>0&&t&&(this._store.setAnnotationFocusRequest(n[0]),window.focus())})),n.on("hoverAnnotations",(e=>{this._store.hoverAnnotations(e||[])})),n.on("toggleAnnotationSelection",(e=>{this._store.toggleSelectedAnnotations(this._store.findIDsForTags(e))})),n.on("openSidebar",(()=>{this._hostRPC.call("openSidebar")})),n.on("closeSidebar",(()=>{this._hostRPC.call("closeSidebar")})),n.connect(e),n.call("setHighlightsVisible",this._highlightsVisible),n.call("featureFlagsUpdated",this._store.features());const r=this._store.getContentInfo();r&&n.call("showContentInfo",r)}_setupHostEvents(){this._hostRPC.on("sidebarOpened",(()=>{this._sidebarIsOpen=!0,this._store.setSidebarOpened(!0)})),this._hostRPC.on("sidebarClosed",(()=>{this._sidebarIsOpen=!1})),
667
- this._hostRPC.on("setHighlightsVisible",(e=>{this._highlightsVisible=e,this._guestRPC.forEach((t=>t.call("setHighlightsVisible",e)))}))}_setupFeatureFlagSync(){const e=()=>this._store.features(),t=e=>{this._hostRPC.call("featureFlagsUpdated",e);for(const t of this._guestRPC.values())t.call("featureFlagsUpdated",e)};t(e()),Pb(this._store.subscribe,e,t)}_setupToastMessengerEvents(){this._toastMessenger.on("toastMessageAdded",(e=>{e.visuallyHidden&&!this._sidebarIsOpen&&this.notifyHost("toastMessageAdded",e)})),this._toastMessenger.on("toastMessageDismissed",(e=>{this.notifyHost("toastMessageDismissed",e)}))}async connect(){const e=await this._portFinder.discover("host");this._hostRPC.connect(e),this._listeners.add(e,"message",(e=>{const{data:t,ports:n}=e,r=t;var o;Eb(r)&&(function(e,t){return!!Eb(e)&&JSON.stringify(e,Object.keys(t).sort())===JSON.stringify(t,Object.keys(t).sort())}(r,{frame1:"guest",frame2:"sidebar",type:"offer"})&&this._connectGuest(n[0],null!==(o=r.sourceId)&&void 0!==o?o:null))}))}
668
- notifyHost(e,...t){this._hostRPC.call(e,...t)}hoverAnnotation(e){this._pendingHoverTag=null;const t=e?[e.$tag]:[];if(this._store.hoverAnnotations(t),!e)return void this._guestRPC.forEach((e=>e.call("hoverAnnotations",[])));const n=Fb(this._store.frames(),e);!n||n.segment&&!Rb(e,n.segment)?this._pendingHoverTag=e.$tag:this._guestRPC.forEach((e=>e.call("hoverAnnotations",t)))}scrollToAnnotation(e){const t=Fb(this._store.frames(),e);if(!t)return;const n=this._guestRPC.get(null==t?void 0:t.id);return n?t.segment&&!Rb(e,t.segment)?(this._pendingScrollToTag=e.$tag,void n.call("navigateToSegment",Db(e))):void n.call("scrollToAnnotation",e.$tag):void 0}destroy(){this._portFinder.destroy(),this._listeners.removeAll()}}Bb.$inject=["$window","annotationsService","store","toastMessenger"];const Hb={id:"__default__",name:"__DEFAULT__",
644
+ }(Oe("html",{lang:"en",children:[Oe("head",{children:[Oe("title",{children:`Annotations on "${a}"`}),Oe("meta",{charSet:"UTF-8"})]}),Oe("body",{children:[Oe("section",{children:[Oe("h1",{children:"Summary"}),Oe("p",{children:Oe("time",{dateTime:o.toISOString(),children:xp(o)})}),Oe("p",{children:Oe("strong",{children:a})}),Oe("p",{children:Oe("a",{href:i,target:"_blank",rel:"noopener noreferrer",children:i})}),Oe("table",{children:Oe("tbody",{style:{verticalAlign:"top"},children:[Oe("tr",{children:[Oe("td",{children:"Group:"}),Oe("td",{children:t})]}),Oe("tr",{children:[Oe("td",{children:"Total users:"}),Oe("td",{children:s.length})]}),Oe("tr",{children:[Oe("td",{children:"Users:"}),Oe("td",{children:s.join(", ")})]}),Oe("tr",{children:[Oe("td",{children:"Total annotations:"}),Oe("td",{children:e.length})]}),Oe("tr",{children:[Oe("td",{children:"Total replies:"}),Oe("td",{children:l.length})]})]})})]}),Oe("hr",{}),Oe("section",{children:[Oe("h1",{children:"Annotations"}),e.map(((e,t)=>{
645
+ const n=Wo(e),r=Go(e),o=Tm(e.text),i=o===`<p>${e.text}</p>`?e.text:o;return Oe("article",{children:[Oe("h2",{children:["Annotation ",t+1,":"]}),Oe("table",{children:Oe("tbody",{style:{verticalAlign:"top"},children:[Oe("tr",{children:[Oe("td",{children:"Created at:"}),Oe("td",{children:Oe("time",{dateTime:e.created,children:xp(new Date(e.created))})})]}),Oe("tr",{children:[Oe("td",{children:"Author:"}),Oe("td",{children:c(e)})]}),n&&Oe("tr",{children:[Oe("td",{children:"Page:"}),Oe("td",{children:n})]}),Oe("tr",{children:[Oe("td",{children:"Type:"}),Oe("td",{children:Uo(e)})]}),r&&Oe("tr",{children:[Oe("td",{children:"Quote:"}),Oe("td",{children:Oe("blockquote",{style:{margin:0},children:r})})]}),Oe("tr",{children:[Oe("td",{children:"Comment:"}),Oe("td",{dangerouslySetInnerHTML:{__html:i}})]}),e.tags.length>0&&Oe("tr",{children:[Oe("td",{children:"Tags:"}),Oe("td",{children:e.tags.join(", ")})]})]})})]},e.id)}))]})]})]}),{},{pretty:!0}).replace(/\t/g," ")}
646
+ _exportCommon(e,{displayNamesEnabled:t,defaultAuthority:n}){const[r]=e;if(!r)throw new Error("No annotations to export");const o=e=>rs(e,n,t),{uri:i,title:a}=To(r);return{uri:i,title:a,uniqueUsers:[...new Set(e.map((e=>o(e))).filter(Boolean))],replies:e.filter((e=>zo(e))),extractUsername:o}}}hb.$inject=[];class mb extends Error{constructor(e,t,n=""){let r="Network request failed";t&&(r+=` (${t.status})`),n&&(r+=`: ${n}`),super(r),B(this,"url",void 0),B(this,"response",void 0),B(this,"reason",void 0),this.url=e,this.response=t,this.reason=n}}async function pb(e,t){let n,r;try{n=await fetch(e,t)}catch(t){throw new mb(e,null,t.message)}if(204===n.status)return null;try{r=await n.json()}catch(t){throw new mb(e,n,"Failed to parse response")}var o;if(!n.ok)throw new mb(e,n,null===(o=r)||void 0===o?void 0:o.reason);return r}class fb{constructor(e,t,n){B(this,"_clientId",void 0),B(this,"search",void 0),B(this,"annotation",void 0),B(this,"group",void 0),B(this,"groups",void 0),B(this,"profile",void 0),
647
+ this._clientId=null;const r=e.routes(),o=()=>this._clientId,i=e=>function(e,t,{getAccessToken:n,getClientId:r,onRequestStarted:o,onRequestFinished:i}){return async(a,s)=>{o();try{const[o,i]=await Promise.all([e,n()]),l=function(e,t){let n=e;const r=t.split(".");for(const[e,t]of r.entries()){const o=n[t];if(!o||"url"in o){if(o&&e===r.length-1)return o;break}n=o}return null}(o,t);if(!l)throw new Error(`Missing API route: ${t}`);const c={"Content-Type":"application/json","Hypothesis-Client-Version":"1.1434.0"};i&&(c.Authorization="Bearer "+i);const u=r();u&&(c["X-Client-Id"]=u);const{url:d,unusedParams:h}=Qi(l.url,a),m=new URL(d);for(const[e,t]of Object.entries(h)){const n=Array.isArray(t)?t:[t];for(const t of n)null!=t&&m.searchParams.append(e,t.toString())}return await pb(m.toString(),{body:s?JSON.stringify(lb(s)):null,headers:c,method:l.method})}finally{i()}}}(r,e,{getAccessToken:()=>t.getAccessToken(),getClientId:o,onRequestStarted:n.apiRequestStarted,onRequestFinished:n.apiRequestFinished})
648
+ ;this.search=i("search"),this.annotation={create:i("annotation.create"),delete:i("annotation.delete"),get:i("annotation.read"),update:i("annotation.update"),flag:i("annotation.flag"),hide:i("annotation.hide"),unhide:i("annotation.unhide")},this.group={member:{delete:i("group.member.delete")},read:i("group.read")},this.groups={list:i("groups.read")},this.profile={groups:{read:i("profile.groups.read")},read:i("profile.read"),update:i("profile.update")}}setClientId(e){this._clientId=e}}fb.$inject=["apiRoutes","auth","store"];var gb={};function vb(e,t){"boolean"==typeof t&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}var bb=vb;vb.prototype.reset=function(){this._attempts=1,
649
+ this._timeouts=this._originalTimeouts.slice(0)},vb.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null},vb.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=(new Date).getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.push(e),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var n=this._timeouts.shift();if(void 0===n){if(!this._cachedTimeouts)return!1;this._errors.splice(0,this._errors.length-1),n=this._cachedTimeouts.slice(-1)}var r=this;return this._timer=setTimeout((function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout((function(){r._operationTimeoutCb(r._attempts)}),r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)}),n),this._options.unref&&this._timer.unref(),!0},vb.prototype.attempt=function(e,t){this._fn=e,
650
+ t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout((function(){n._operationTimeoutCb()}),n._operationTimeout)),this._operationStart=(new Date).getTime(),this._fn(this._attempts)},vb.prototype.try=function(e){console.log("Using RetryOperation.try() is deprecated"),this.attempt(e)},vb.prototype.start=function(e){console.log("Using RetryOperation.start() is deprecated"),this.attempt(e)},vb.prototype.start=vb.prototype.try,vb.prototype.errors=function(){return this._errors},vb.prototype.attempts=function(){return this._attempts},vb.prototype.mainError=function(){if(0===this._errors.length)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var o=this._errors[r],i=o.message,a=(e[i]||0)+1;e[i]=a,a>=n&&(t=o,n=a)}return t},function(e){var t=bb;e.operation=function(n){var r=e.timeouts(n);return new t(r,{forever:n&&(n.forever||n.retries===1/0),unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},
651
+ e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var r=[],o=0;o<t.retries;o++)r.push(this.createTimeout(o,t));return e&&e.forever&&!r.length&&r.push(this.createTimeout(o,t)),r.sort((function(e,t){return e-t})),r},e.createTimeout=function(e,t){var n=t.randomize?Math.random()+1:1,r=Math.round(n*Math.max(t.minTimeout,1)*Math.pow(t.factor,e));return r=Math.min(r,t.maxTimeout)},e.wrap=function(t,n,r){if(n instanceof Array&&(r=n,n=null),!r)for(var o in r=[],t)"function"==typeof t[o]&&r.push(o);for(var i=0;i<r.length;i++){var a=r[i],s=t[a];t[a]=function(r){var o=e.operation(n),i=Array.prototype.slice.call(arguments,1),a=i.pop();i.push((function(e){o.retry(e)||(e&&(arguments[0]=o.mainError()),a.apply(this,arguments))})),o.attempt((function(){r.apply(t,i)}))}.bind(t,s),t[a].options=n}}}(gb);var yb=t(gb);function _b(e,t){
652
+ return new Promise(((n,r)=>{const o=yb.operation(t);o.attempt((async()=>{try{const t=await e();o.retry(),n(t)}catch(e){o.retry(e)||r(e)}}))}))}function wb(e){return _b((()=>pb(e)))}class xb{constructor(e){B(this,"_apiURL",void 0),B(this,"_routeCache",void 0),B(this,"_linkCache",void 0),this._apiURL=e.apiUrl,this._routeCache=null,this._linkCache=null}routes(){return this._routeCache||(this._routeCache=wb(this._apiURL).then((e=>e.links))),this._routeCache}links(){return this._linkCache||(this._linkCache=this.routes().then((async e=>wb(e.links.url)))),this._linkCache}}xb.$inject=["settings"];class kb extends Error{constructor(e,t){super(e),B(this,"cause",void 0),this.cause=t}}class Nb{constructor(e){B(this,"clientId",void 0),B(this,"tokenEndpoint",void 0),B(this,"authorizationEndpoint",void 0),B(this,"revokeEndpoint",void 0),this.clientId=e.clientId,this.tokenEndpoint=e.tokenEndpoint,this.authorizationEndpoint=e.authorizationEndpoint,this.revokeEndpoint=e.revokeEndpoint}exchangeAuthCode(e){
653
+ return this._getAccessToken({client_id:this.clientId,grant_type:"authorization_code",code:e})}exchangeGrantToken(e){return this._getAccessToken({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:e})}refreshToken(e){return this._getAccessToken({grant_type:"refresh_token",refresh_token:e})}async revokeToken(e){try{await this._formPost(this.revokeEndpoint,{token:e})}catch(e){throw new kb("Failed to revoke access token",e)}}authorize(e){const t=Xg(16),n=new Promise(((n,r)=>{e.addEventListener("message",(function o(i){if("object"!=typeof i.data)return;const a=i.data;a.state===t&&("authorization_response"===a.type&&n(i.data),"authorization_canceled"===a.type&&r(new Error("Authorization window was closed")),e.removeEventListener("message",o))}))})),r=new URL(this.authorizationEndpoint);r.searchParams.set("client_id",this.clientId),r.searchParams.set("origin",e.location.origin),r.searchParams.set("response_mode","web_message"),r.searchParams.set("response_type","code"),r.searchParams.set("state",t)
654
+ ;const o=`left=${e.screen.width/2-237.5},top=${e.screen.height/2-215},width=475,height=430`;if(!e.open(r.toString(),"Log in to Hypothesis",o))throw new Error("Failed to open login window");return n.then((e=>e.code))}async _formPost(e,t){const n=new URLSearchParams;for(const[e,r]of Object.entries(t))n.set(e,r);n.sort();return pb(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()})}async _getAccessToken(e){let t;try{t=await this._formPost(this.tokenEndpoint,e)}catch(e){throw new kb("Failed to fetch access token",e)}return{accessToken:t.access_token,expiresAt:Date.now()+1e3*(t.expires_in-10),refreshToken:t.refresh_token}}}class Sb extends jf{constructor(e,t,n,r,o){super(),B(this,"_authCode",void 0),B(this,"_client",void 0),B(this,"_tokenInfoPromise",void 0),B(this,"_apiRoutes",void 0),B(this,"_localStorage",void 0),B(this,"_settings",void 0),B(this,"_toastMessenger",void 0),B(this,"_window",void 0),this._authCode=null,this._client=null,this._tokenInfoPromise=null,
655
+ this._apiRoutes=t,this._localStorage=n,this._settings=r,this._toastMessenger=o,this._window=e,this._listenForTokenStorageEvents()}_listenForTokenStorageEvents(){this._window.addEventListener("storage",(({key:e})=>{e===this._storageKey()&&(this._tokenInfoPromise=null,this.emit("oauthTokensChanged"))}))}_loadToken(){const e=this._localStorage.getObject(this._storageKey());return(e=>!!e&&"object"==typeof e&&"accessToken"in e&&"string"==typeof e.accessToken&&"refreshToken"in e&&"string"==typeof e.refreshToken&&"expiresAt"in e&&"number"==typeof e.expiresAt)(e)?{accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.expiresAt}:null}async _oauthClient(){if(this._client)return this._client;const e=await this._apiRoutes.links();var t,n;return this._client=new Nb({clientId:this._settings.oauthClientId,authorizationEndpoint:e["oauth.authorize"],revokeEndpoint:e["oauth.revoke"],tokenEndpoint:(t="token",n=this._settings.apiUrl,new URL(t,n).href)}),this._client}async _exchangeAuthCodeForToken(e){
656
+ const t=await this._oauthClient(),n=await t.exchangeAuthCode(e);return this._saveToken(n),n}async _exchangeGrantToken(e){const t=await this._oauthClient();try{return await t.exchangeGrantToken(e)}catch(e){throw this._toastMessenger.error("Hypothesis login lost: You must reload the page to annotate.",{autoDismiss:!1}),e}}_getGrantToken(){var e;return null===(e=qr(this._settings))||void 0===e?void 0:e.grantToken}_storageKey(){let e=new URL(this._settings.apiUrl).hostname;return e=e.replace(/\./g,"%2E"),`hypothesis.oauth.${e}.token`}_saveToken(e){this._localStorage.setObject(this._storageKey(),e)}async _refreshAccessToken(e,t){const n=await this._oauthClient();let r;try{if(r=await n.refreshToken(e),Date.now()>r.expiresAt)throw new Error("Refreshed token expired in the past")}catch{return null}return t.persist&&this._saveToken(r),r}async getAccessToken(){if(!this._tokenInfoPromise){const e=this._getGrantToken()
657
+ ;void 0!==e?this._tokenInfoPromise=e?this._exchangeGrantToken(e):Promise.resolve(null):this._authCode?(this._tokenInfoPromise=this._exchangeAuthCodeForToken(this._authCode),this._authCode=null):this._tokenInfoPromise=Promise.resolve(this._loadToken())}const e=this._tokenInfoPromise,t=await this._tokenInfoPromise;if(!t)return null;if(e!==this._tokenInfoPromise)return this.getAccessToken();if(Date.now()>t.expiresAt){const e=this._getGrantToken();return this._tokenInfoPromise=this._refreshAccessToken(t.refreshToken,{persist:void 0===e}),this.getAccessToken()}return t.accessToken}async login(){const e=await this._oauthClient(),t=await e.authorize(this._window);this._authCode=t,this._tokenInfoPromise=null}async logout(){const[e,t]=await Promise.all([this._tokenInfoPromise,this._oauthClient()]);e&&await t.revokeToken(e.accessToken),this._tokenInfoPromise=null,this._localStorage.removeItem(this._storageKey())}}Sb.$inject=["$window","apiRoutes","localStorage","settings","toastMessenger"];class Ab{constructor(e,t,n){
658
+ B(this,"_annotationsService",void 0),B(this,"_toastMessenger",void 0),B(this,"_store",void 0),B(this,"_saving",void 0),B(this,"_failed",void 0),this._annotationsService=e,this._toastMessenger=t,this._store=n,this._saving=new Set,this._failed=new Set}init(){const e=e=>!this._saving.has(e)&&!this._failed.has(e);this._store.subscribe((()=>{this._store.newHighlights().forEach((t=>{const n=t.$tag;e(n)&&(this._saving.add(n),_b((()=>this._annotationsService.save(t))).then((()=>{this._toastMessenger.success("Highlight saved",{visuallyHidden:!0})})).catch((()=>{this._failed.add(n)})).finally((()=>{this._saving.delete(n)})))}))}))}isSaving(){return this._saving.size>0}}function Eb(e){if(null===e||"object"!=typeof e)return!1;for(const t of["frame1","frame2","type","requestId"])if("string"!=typeof e[t])return!1;return!0}Ab.$inject=["annotationsService","toastMessenger","store"];class Tb extends Error{constructor(e){super(e)}}class Cb{constructor({hostFrame:e,source:t,sourceId:n}){B(this,"_hostFrame",void 0),
659
+ B(this,"_listeners",void 0),B(this,"_source",void 0),B(this,"_sourceId",void 0),this._hostFrame=e,this._source=t,this._sourceId=n,this._listeners=new Wa}destroy(){this._listeners.removeAll()}async discover(e){const t=Xg(6);return new Promise(((n,r)=>{const o=()=>{this._hostFrame.postMessage({frame1:this._source,frame2:e,type:"request",requestId:t,sourceId:this._sourceId},"*")},i=setInterval(o,250),a=setTimeout((()=>{clearInterval(i),r(new Tb(`Unable to establish ${this._source}-${e} communication channel`))}),2e4),s=this._listeners.add(window,"message",(o=>{const{data:l,ports:c}=o;Eb(l)&&l.requestId===t&&"request"!==l.type&&(clearInterval(i),clearTimeout(a),this._listeners.remove(s),"string"==typeof l.error?r(new Tb(l.error)):c.length>0?n(c[0]):r(new Tb(`${this._source}-${e} port request failed`)))}));o()}))}}function Mb(e){const t=t=>{const{data:n}=t;if(n&&"hypothesis-error"===(null==n?void 0:n.type)){const{context:t,error:r}=n;e(r instanceof Error?r:function(e){const t=new Error(e.message)
660
+ ;return t.stack=e.stack,t}(r),t)}};return window.addEventListener("message",t),()=>window.removeEventListener("message",t)}const Ib="1.0.0",zb="frame-rpc";function Lb(e,t,n=[],r=-1){e.postMessage({protocol:zb,version:Ib,arguments:n,method:t,sequence:r})}class Ob{constructor({userAgent:e=navigator.userAgent,currentWindow:t=window}={}){B(this,"_callbacks",void 0),B(this,"_destroyed",void 0),B(this,"_listeners",void 0),B(this,"_methods",void 0),B(this,"_port",void 0),B(this,"_sequence",void 0),B(this,"_pendingCalls",void 0),B(this,"_receivedCloseEvent",void 0),this._port=null,this._methods=new Map,this._sequence=1,this._callbacks=new Map,this._listeners=new Wa,this._listeners.add(t,"unload",(()=>{this._port&&(Lb(this._port,"close"),t!==t.parent&&function(e){const t=e.match(/\bAppleWebKit\/([0-9]+)\b/);return!!t&&!(parseInt(t[1])<=537)}(e)&&t.parent.postMessage({type:"hypothesisPortClosed"},"*",[this._port]))})),this._pendingCalls=[],this._destroyed=!1,this._receivedCloseEvent=!1}on(e,t){
661
+ if(this._port)throw new Error("Cannot add a method handler after a port is connected");this._methods.set(e,t)}connect(e){this._port=e,this._listeners.add(e,"message",(e=>this._handle(e))),e.start(),Lb(e,"connect");for(const[e,t]of this._pendingCalls)this.call(e,...t);this._pendingCalls=[]}destroy(){this._port&&(Lb(this._port,"close"),this._port.close()),this._destroyed=!0,this._listeners.removeAll()}call(e,...t){if(this._port||this._pendingCalls.push([e,t]),!this._port||this._destroyed)return;const n=this._sequence++,r=t[t.length-1];"function"==typeof r&&(this._callbacks.set(n,r),t=t.slice(0,-1)),Lb(this._port,e,t,n)}_parseMessage({data:e}){return e&&"object"==typeof e?e.protocol!==zb||e.version!==Ib?null:Array.isArray(e.arguments)?e:null:null}_handle(e){const t=this._parseMessage(e),n=this._port;if(t&&n)if("method"in t){if("close"===t.method){if(this._receivedCloseEvent)return;this._receivedCloseEvent=!0}const e=this._methods.get(t.method);if(!e)return;const r=(...e)=>{const r={arguments:e,protocol:zb,
662
+ response:t.sequence,version:Ib};n.postMessage(r)};e(...t.arguments,r)}else if("response"in t){const e=this._callbacks.get(t.response);this._callbacks.delete(t.response),e&&e(...t.arguments)}}}function Rb(e,t){var n;const r=null===(n=e.target[0].selector)||void 0===n?void 0:n.find((e=>"EPUBContentSelector"===e.type));return!r||Boolean(t.url&&r.url===t.url||t.cfi&&r.cfi&&Jp(r.cfi)===Jp(t.cfi))}function Pb(e,t,n,r){let o=t();return e((()=>{const e=t();if(r?r(e,o):e===o)return;const i=o;o=e,n(e,i)}))}function Db({$cluster:e,$tag:t,target:n,uri:r}){return{$cluster:e,$tag:t,target:n,uri:r}}function Fb(e,t){var n;const r=e.find((e=>e.uri===t.uri));if(r)return r;const o=e.find((e=>null===e.id));return o||(null!==(n=e[0])&&void 0!==n?n:null)}class Bb{constructor(e,t,n,r){B(this,"_annotationsService",void 0),B(this,"_guestRPC",void 0),B(this,"_highlightsVisible",void 0),B(this,"_hostRPC",void 0),B(this,"_inFrame",void 0),B(this,"_listeners",void 0),B(this,"_portFinder",void 0),B(this,"_store",void 0),
663
+ B(this,"_toastMessenger",void 0),B(this,"_pendingScrollToTag",void 0),B(this,"_pendingHoverTag",void 0),B(this,"_pendingAnchorStatusUpdates",void 0),B(this,"_scheduleAnchorStatusUpdate",void 0),B(this,"_sidebarIsOpen",void 0),B(this,"_window",void 0),this._window=e,this._annotationsService=t,this._store=n,this._toastMessenger=r,this._portFinder=new Cb({hostFrame:this._window.parent,source:"sidebar"}),this._listeners=new Wa,this._hostRPC=new Ob,this._guestRPC=new Map,this._inFrame=new Set,this._highlightsVisible=!1,this._pendingScrollToTag=null,this._pendingHoverTag=null,this._pendingAnchorStatusUpdates=new Map,this._scheduleAnchorStatusUpdate=Va((()=>{const e=Object.fromEntries(this._pendingAnchorStatusUpdates.entries());this._store.updateAnchorStatus(e),this._pendingAnchorStatusUpdates.clear()}),10),this._sidebarIsOpen=!1,this._setupSyncToGuests(),this._setupHostEvents(),this._setupFeatureFlagSync(),this._setupToastMessengerEvents()}_setupSyncToGuests(){let e=0;const t=(t,n,r)=>{let o=0;const i=new Set,a=[]
664
+ ;t.forEach((e=>{zo(e)||(Ro(e)&&++o,i.add(e.$tag),this._inFrame.has(e.$tag)||a.push(e))}));const s=r.filter((e=>!i.has(e.$tag)));if(a.length>0){const e=new Map,t=[];for(const r of a){var l;const o=Fb(n,r);if(!o||o.segment&&!Rb(r,o.segment)){t.push(r.$tag);continue}const i=null!==(l=e.get(o.id))&&void 0!==l?l:[];i.push(r),e.set(o.id,i)}t.length>0&&this._updateAnchorStatus(t,"anchored");for(const[t,n]of e){const e=this._guestRPC.get(t);e&&e.call("loadAnnotations",n.map(Db))}a.forEach((e=>{this._inFrame.add(e.$tag)}))}s.forEach((e=>{this._guestRPC.forEach((t=>t.call("deleteAnnotation",e.$tag))),this._inFrame.delete(e.$tag)})),n.length>0&&n.every((e=>e.isAnnotationFetchComplete))&&(0!==o&&o===e||(this._hostRPC.call("publicAnnotationCountChanged",o),e=o))};Pb(this._store.subscribe,(()=>[this._store.allAnnotations(),this._store.frames()]),(([e,n],[r])=>t(e,n,r)),Di),Pb(this._store.subscribe,(()=>this._store.getContentInfo()),(e=>{this._guestRPC.forEach((t=>{t.call("showContentInfo",e)}))}))}_updateAnchorStatus(e,t){
665
+ const n=Array.isArray(e)?e:[e];for(const e of n)this._pendingAnchorStatusUpdates.set(e,t);this._scheduleAnchorStatusUpdate()}_connectGuest(e,t){const n=new Ob;this._guestRPC.set(t,n),n.on("documentInfoChanged",(e=>{this._store.connectFrame({id:t,metadata:e.metadata,uri:e.uri,segment:e.segmentInfo,persistent:e.persistent})})),n.on("close",(()=>{const e=this._store.frames().find((e=>e.id===t));e&&!e.persistent&&this._store.destroyFrame(e),this._inFrame.clear(),n.destroy(),this._guestRPC.delete(t)})),n.on("createAnnotation",(e=>{const t=this._store.isLoggedIn(),n=null!==this._store.focusedGroup();if(!t||!n)return this._hostRPC.call("openSidebar"),t||this._store.openSidebarPanel("loginPrompt"),void this._guestRPC.forEach((t=>t.call("deleteAnnotation",e.$tag)));this._inFrame.add(e.$tag),e.$highlight||this._hostRPC.call("openSidebar"),this._hostRPC.call("showHighlights"),this._annotationsService.create(e)})),n.on("syncAnchoringStatus",(({$tag:e,$orphan:t})=>{this._inFrame.add(e),
666
+ this._updateAnchorStatus(e,t?"orphan":"anchored"),e===this._pendingHoverTag&&(this._pendingHoverTag=null,n.call("hoverAnnotations",[e])),this._pendingScrollToTag&&e===this._pendingScrollToTag&&(this._pendingScrollToTag=null,n.call("scrollToAnnotation",e))})),n.on("showAnnotations",((e,t=!1)=>{const n=this._store.findIDsForTags(e);this._store.selectAnnotations(n),this._store.selectTab("annotation"),n.length>0&&t&&(this._store.setAnnotationFocusRequest(n[0]),window.focus())})),n.on("hoverAnnotations",(e=>{this._store.hoverAnnotations(e||[])})),n.on("toggleAnnotationSelection",(e=>{this._store.toggleSelectedAnnotations(this._store.findIDsForTags(e))})),n.on("openSidebar",(()=>{this._hostRPC.call("openSidebar")})),n.on("closeSidebar",(()=>{this._hostRPC.call("closeSidebar")})),n.connect(e),n.call("setHighlightsVisible",this._highlightsVisible),n.call("featureFlagsUpdated",this._store.features());const r=this._store.getContentInfo();r&&n.call("showContentInfo",r)}_setupHostEvents(){
667
+ this._hostRPC.on("sidebarOpened",(()=>{this._sidebarIsOpen=!0,this._store.setSidebarOpened(!0)})),this._hostRPC.on("sidebarClosed",(()=>{this._sidebarIsOpen=!1})),this._hostRPC.on("setHighlightsVisible",(e=>{this._highlightsVisible=e,this._guestRPC.forEach((t=>t.call("setHighlightsVisible",e)))}))}_setupFeatureFlagSync(){const e=()=>this._store.features(),t=e=>{this._hostRPC.call("featureFlagsUpdated",e);for(const t of this._guestRPC.values())t.call("featureFlagsUpdated",e)};t(e()),Pb(this._store.subscribe,e,t)}_setupToastMessengerEvents(){this._toastMessenger.on("toastMessageAdded",(e=>{e.visuallyHidden&&!this._sidebarIsOpen&&this.notifyHost("toastMessageAdded",e)})),this._toastMessenger.on("toastMessageDismissed",(e=>{this.notifyHost("toastMessageDismissed",e)}))}async connect(){const e=await this._portFinder.discover("host");this._hostRPC.connect(e),this._listeners.add(e,"message",(e=>{const{data:t,ports:n}=e,r=t;var o;Eb(r)&&(function(e,t){
668
+ return!!Eb(e)&&JSON.stringify(e,Object.keys(t).sort())===JSON.stringify(t,Object.keys(t).sort())}(r,{frame1:"guest",frame2:"sidebar",type:"offer"})&&this._connectGuest(n[0],null!==(o=r.sourceId)&&void 0!==o?o:null))}))}notifyHost(e,...t){this._hostRPC.call(e,...t)}hoverAnnotation(e){this._pendingHoverTag=null;const t=e?[e.$tag]:[];if(this._store.hoverAnnotations(t),!e)return void this._guestRPC.forEach((e=>e.call("hoverAnnotations",[])));const n=Fb(this._store.frames(),e);!n||n.segment&&!Rb(e,n.segment)?this._pendingHoverTag=e.$tag:this._guestRPC.forEach((e=>e.call("hoverAnnotations",t)))}scrollToAnnotation(e){const t=Fb(this._store.frames(),e);if(!t)return;const n=this._guestRPC.get(null==t?void 0:t.id);return n?t.segment&&!Rb(e,t.segment)?(this._pendingScrollToTag=e.$tag,void n.call("navigateToSegment",Db(e))):void n.call("scrollToAnnotation",e.$tag):void 0}destroy(){this._portFinder.destroy(),this._listeners.removeAll()}}Bb.$inject=["$window","annotationsService","store","toastMessenger"];const Hb={
669
+ id:"__default__",name:"__DEFAULT__",
669
670
  logo:"data:image/svg+xml;utf8,"+encodeURIComponent('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg width="24px" height="28px" viewBox="0 0 24 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">\n <rect fill="#ffffff" stroke="none" width="17.14407" height="16.046612" x="3.8855932" y="3.9449153" />\n <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">\n <path d="M0,2.00494659 C0,0.897645164 0.897026226,0 2.00494659,0 L21.9950534,0 C23.1023548,0 24,0.897026226 24,2.00494659 L24,21.9950534 C24,23.1023548 23.1029738,24 21.9950534,24 L2.00494659,24 C0.897645164,24 0,23.1029738 0,21.9950534 L0,2.00494659 Z M9,24 L12,28 L15,24 L9,24 Z M7.00811294,4 L4,4 L4,20 L7.00811294,20 L7.00811294,15.0028975 C7.00811294,12.004636 8.16824717,12.0097227 9,12 C10,12.0072451 11.0189302,12.0606714 11.0189302,14.003477 L11.0189302,20 L14.0270431,20 L14.0270431,13.1087862 C14.0270433,10 12,9.00309038 10,9.00309064 C8.01081726,9.00309091 8,9.00309086 7.00811294,11.0019317 L7.00811294,4 Z M19,19.9869002 C20.1045695,19.9869002 21,19.0944022 21,17.9934501 C21,16.892498 20.1045695,16 19,16 C17.8954305,16 17,16.892498 17,17.9934501 C17,19.0944022 17.8954305,19.9869002 19,19.9869002 Z" fill="currentColor"></path>\n </g>\n</svg>')
670
671
  };const jb=["organization","scopes"];class $b{constructor(e,t,n,r,o){B(this,"_store",void 0),B(this,"_api",void 0),B(this,"_auth",void 0),B(this,"_settings",void 0),B(this,"_toastMessenger",void 0),B(this,"_serviceConfig",void 0),B(this,"_reloadSetUp",void 0),this._store=e,this._api=t,this._auth=n,this._settings=r,this._toastMessenger=o,this._serviceConfig=qr(r),this._reloadSetUp=!1}_mainURI(){var e,t;return null!==(e=null===(t=this._store.mainFrame())||void 0===t?void 0:t.uri)&&void 0!==e?e:null}async _filterGroups(e,t,n,r){if(r){const t=e.find((e=>e.id===r));t&&!t.isScopedToUri&&t.scopes&&t.scopes.enforced&&(e=e.filter((e=>e.id!==r)),this._store.setDirectLinkedGroupFetchFailed(),r=null)}if(t)return e;const o=e.some((e=>"__world__"!==e.id&&e.isScopedToUri));return o?"__world__"===r||"__world__"===n?e:e.filter((e=>"__world__"!==e.id)):e}_setupAutoReload(){this._reloadSetUp||(this._reloadSetUp=!0,Pb(this._store.subscribe,(()=>this._mainURI()),(()=>this.load())),
671
672
  Pb(this._store.subscribe,(()=>[this._store.hasFetchedProfile(),this._store.profile().userid]),((e,[t])=>{t&&this.load()}),Di))}_addGroupsToStore(e,t){!function(e){e.forEach((e=>{e.organization&&"object"==typeof e.organization||(e.organization=Hb)}))}(e);const n=0===this._store.allGroups().length,r=this._store.getDefault("focusedGroup");this._store.loadGroups(e),n&&(t&&e.some((e=>e.id===t))?this.focus(t):r&&e.some((e=>e.id===r))&&this.focus(r))}_fetchGroup(e){return this._api.group.read({id:e,expand:jb})}async _loadGroupsForUserAndDocument(){var e;const t=()=>function(e,t){const n=t(e);return null!==n?Promise.resolve(n):new Promise((n=>{const r=e.subscribe((()=>{const o=t(e);null!==o&&(r(),n(o))}))}))}(this._store,(()=>this._mainURI()));let n=null;"sidebar"===this._store.route()&&(n=await t()),this._setupAutoReload();const r=this._store.directLinkedAnnotationId();let o=null;r&&(o=this._api.annotation.get({id:r}).catch((()=>null)));const i=this._store.directLinkedGroupId();let a=null
@@ -758,7 +759,7 @@ this._updateImmediately=!0,this._configMessages={},this._reconnectionAttempts=0,
758
759
  if(++this._reconnectionAttempts,this._reconnectionAttempts<10){const e=1e3*2**this._reconnectionAttempts;setTimeout((()=>this._reconnect()),e)}else console.error("Gave up trying to reconnect to Hypothesis real time update service")})),o.on("error",(e=>this._handleSocketError(t,e))),o.on("message",(e=>this._handleSocketMessage(e))),this._socket=o,this.setConfig("client-id",{messageType:"client_id",value:this.clientId}),this.setConfig("auth-check",{type:"whoami",id:1})}async connect(e={}){var t;this._updateImmediately=null===(t=e.applyUpdatesImmediately)||void 0===t||t,this._reconnectSetUp||(this._reconnectSetUp=!0,Pb(this._store.subscribe,(()=>this._store.profile().userid),(()=>this._reconnect()))),this._socket||await this._reconnect()}}Tk.$inject=["store","apiRoutes","auth","groups","session"];const Ck="hypothesis.user.tags.list",Mk="hypothesis.user.tags.map";class Ik{constructor(e){B(this,"_storage",void 0),this._storage=e}filter(e,t=null){const n=this._storage.getObject(Ck)||[];let r=0;return n.filter((n=>{
759
760
  if(null!==t&&r>=t)return!1;const o=n.split(/\W+/),i=new RegExp(`^${iv(e)}`,"i");return!(!o.some((e=>e.match(i)))&&!n.match(i))&&(++r,!0)}))}store(e){const t=this._storage.getObject(Mk)||{};e.forEach((e=>{t[e]?(t[e].count+=1,t[e].updated=Date.now()):t[e]={text:e,count:1,updated:Date.now()}})),this._storage.setObject(Mk,t);const n=Object.keys(t).sort(((e,n)=>t[e].count!==t[n].count?t[n].count-t[e].count:e.localeCompare(n)));this._storage.setObject(Ck,n)}}Ik.$inject=["localStorage"];class zk{constructor(e){B(this,"_store",void 0),this._store=e}forceVisible(e){e.children.forEach((e=>{this.forceVisible(e)})),e.visible||this._store.setForcedVisible(e.id,!0)}}zk.$inject=["store"];class Lk extends jf{constructor(e,t){super(),B(this,"_store",void 0),B(this,"_window",void 0),B(this,"_delayedMessageQueue",void 0),this._store=e,this._window=t,this._delayedMessageQueue=[],this._window.addEventListener("focus",(()=>{this._delayedMessageQueue.forEach((({type:e,messageText:t,options:n})=>this._addMessage(e,t,n))),
760
761
  this._delayedMessageQueue=[]}))}dismiss(e){this._store.getToastMessage(e)&&(this._store.removeToastMessage(e),this.emit("toastMessageDismissed",e))}_addMessage(e,t,{autoDismiss:n=!0,visuallyHidden:r=!1,delayed:o=!1}={}){if(this._store.hasToastMessage(e,t))return;if(o&&!this._window.document.hasFocus()){const o={autoDismiss:n,visuallyHidden:r};return void this._delayedMessageQueue.push({type:e,messageText:t,options:o})}const i={type:e,id:Xg(10),message:t,visuallyHidden:r,autoDismiss:n};this._store.addToastMessage(i),this.emit("toastMessageAdded",i)}error(e,t){this._addMessage("error",e,t)}success(e,t){this._addMessage("success",e,t)}notice(e,t){this._addMessage("notice",e,t)}}Lk.$inject=["store","$window"];const Ok=function(e){for(var t={},n=e.querySelectorAll("script.js-hypothesis-config"),r=0;r<n.length;r++){var o=void 0;try{o=JSON.parse(n[r].textContent||"")}catch(e){console.warn("Could not parse settings from js-hypothesis-config tags",e),o={}}Object.assign(t,o)}return t}(document),Rk=function(e){
761
- const{version:t,origin:n}=Zg(e.location.href);return"1.1433.0"!==t?(console.warn(`The Hypothesis sidebar is using a different version (1.1433.0) than the host page (${t}). It may not work.`),!1):"null"===e.origin?(console.warn("Hypothesis has been loaded in a sandboxed frame. This is not supported."),!1):e.origin===n||(console.warn(`The Hypothesis sidebar is running in a different origin (${e.origin}) than expected (${n}). It may not work.`),!1)}(window);function Pk(e,t){e.setClientId(t.clientId)}function Dk(e,t,n){e.load(),t.load(),n.sync()}function Fk(e,t,n){e.init(),t.init(),n.init()}function Bk(e,t,n){"sidebar"===t.route()&&e.connect().catch((()=>{n.error("Hypothesis failed to connect to the web page. Try reloading the page.",{autoDismiss:!1})}))}Ok.sentry&&Rk&&function(e){const t=function(){const e=import.meta.url;return e?new URL(e).origin:null}(),n=t?[t]:void 0;mk({dsn:e.dsn,environment:e.environment,allowUrls:n,ignoreErrors:["Network request failed","Object Not Found Matching Id"],release:"1.1433.0",
762
+ const{version:t,origin:n}=Zg(e.location.href);return"1.1434.0"!==t?(console.warn(`The Hypothesis sidebar is using a different version (1.1434.0) than the host page (${t}). It may not work.`),!1):"null"===e.origin?(console.warn("Hypothesis has been loaded in a sandboxed frame. This is not supported."),!1):e.origin===n||(console.warn(`The Hypothesis sidebar is running in a different origin (${e.origin}) than expected (${n}). It may not work.`),!1)}(window);function Pk(e,t){e.setClientId(t.clientId)}function Dk(e,t,n){e.load(),t.load(),n.sync()}function Fk(e,t,n){e.init(),t.init(),n.init()}function Bk(e,t,n){"sidebar"===t.route()&&e.connect().catch((()=>{n.error("Hypothesis failed to connect to the web page. Try reloading the page.",{autoDismiss:!1})}))}Ok.sentry&&Rk&&function(e){const t=function(){const e=import.meta.url;return e?new URL(e).origin:null}(),n=t?[t]:void 0;mk({dsn:e.dsn,environment:e.environment,allowUrls:n,ignoreErrors:["Network request failed","Object Not Found Matching Id"],release:"1.1434.0",
762
763
  beforeSend:(e,t)=>{if(pk>=5)return ov("Client-side Sentry quota reached. No further Sentry events will be sent"),null;++pk;try{const n=t&&t.originalException;n instanceof Event&&(e.extra||(e.extra={}),Object.assign(e.extra,{type:n.type,detail:n.detail,isTrusted:n.isTrusted}))}catch(e){}return e}});try{gw("host_config",Zg(window.location.href))}catch(e){}gw("loaded_scripts",Array.from(document.querySelectorAll("script")).filter((e=>!e.type||e.type.match(/javascript|module/))).map((e=>e.src||"<inline>"))),Mb(((e,t)=>{fk(e,t)}))}(Ok.sentry),function(e){e.addEventListener("click",(e=>{const t=e.target;"A"===t.tagName&&"_blank"===t.target&&(t.rel="noopener")}))}(document.body),Pk.$inject=["api","streamer"],Dk.$inject=["groups","session","router"],Fk.$inject=["autosaveService","persistedDefaults","serviceURL"],Bk.$inject=["frameSync","store","toastMessenger"];const Hk=document.querySelector("hypothesis-app");!function(e=window){e.addEventListener("message",uv)}(),async function(e,t=window){const n=function(e){
763
764
  const t=Zg(e.location.href),n=["annotations","group","query","appType","openSidebar","showHighlights","services","branding","enableExperimentalNewNoteButton","focus","requestConfigFromFrame","theme","usernameUrl"],r={openSidebar:Qg,requestConfigFromFrame:e=>{if("string"==typeof e)return e;const t=function(e){return"object"==typeof e&&null!==e?e:{}}(e);return{origin:tv(t.origin),ancestorLevel:ev(t.ancestorLevel)}}},o={};for(const[e,i]of Object.entries(t))n.includes(e)&&null!==i&&(r[e]?o[e]=r[e](i):o[e]=i);return o}(window),r=function(e,t){const n=e.requestConfigFromFrame;if(!n)return null;if("number"!=typeof n.ancestorLevel||"string"!=typeof n.origin)throw new Error("Improper `requestConfigFromFrame` object. Both `ancestorLevel` and `origin` need to be specified");return{targetFrame:nv(n.ancestorLevel,t),origin:n.origin}}(n,t);let o;if(r){const e=await async function(e,t){return{...await Jg(t.targetFrame,t.origin,"requestConfig",[],3e3),...e.group?{group:e.group}:{}}}(n,r);o=function(e,t){const n=e.services
764
765
  ;return Array.isArray(n)?(n.forEach(((e,n)=>{"$rpc:requestGroups"===e.groups&&(e.groups=Jg(t.targetFrame,t.origin,"requestGroups",[n],0).catch((()=>{throw new Error("Unable to fetch groups")})))})),e):e}(e,r)}else o=n;const i={...e,...o};return r&&(i.rpc=r),i.apiUrl=function(e){const t=qr(e);if(!t)return e.apiUrl;if(t.apiUrl)return t.apiUrl;throw new Error("Service should contain an apiUrl value.")}(i),i}(Ok).then((e=>{!function(e,t){const n=new U