@fluid-topics/ft-reader-content 1.2.4 → 1.2.6

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.
@@ -52,13 +52,13 @@ class FtReaderContent extends FtReaderComponent {
52
52
  `;
53
53
  }
54
54
  getScrollTarget() {
55
- var _a, _b, _c, _d, _e;
55
+ var _a, _b, _c;
56
56
  if (this.disableContextInteractions) {
57
57
  return null;
58
58
  }
59
59
  // If there's a section specified and the target topic is visible, the topic itself will handle the scroll
60
- const isVisible = (_d = (_a = this.visibleTopics) === null || _a === void 0 ? void 0 : _a.includes((_c = (_b = this.scrollTarget) === null || _b === void 0 ? void 0 : _b.tocId) !== null && _c !== void 0 ? _c : "")) !== null && _d !== void 0 ? _d : false;
61
- if (((_e = this.scrollTarget) === null || _e === void 0 ? void 0 : _e.tocId) && (!isVisible || this.scrollTarget.section == null)) {
60
+ const isRendered = (_a = this.container) === null || _a === void 0 ? void 0 : _a.isRendered((_b = this.scrollTarget) === null || _b === void 0 ? void 0 : _b.tocId);
61
+ if (((_c = this.scrollTarget) === null || _c === void 0 ? void 0 : _c.tocId) && (!isRendered || this.scrollTarget.section == null)) {
62
62
  return this.scrollTarget.tocId;
63
63
  }
64
64
  return null;
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var pe=Object.create;var j=Object.defineProperty;var fe=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var ue=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var w=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports);var be=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of me(e))!ve.call(o,s)&&s!==t&&j(o,s,{get:()=>e[s],enumerable:!(r=fe(e,s))||r.enumerable});return o};var n=(o,e,t)=>(t=o!=null?pe(ue(o)):{},be(e||!o||!o.__esModule?j(t,"default",{value:o,enumerable:!0}):t,o));var m=w((ye,P)=>{P.exports=ftGlobals.wcUtils});var u=w((_e,k)=>{k.exports=ftGlobals.lit});var x=w((we,H)=>{H.exports=ftGlobals.litDecorators});var V=w((Re,U)=>{U.exports=ftGlobals.litRepeat});var Z=w((Ae,W)=>{W.exports=ftGlobals.litUnsafeHTML});var de=n(m());var E=n(u()),S=n(x()),g=n(m());var q=n(m()),G=n(x());var K;(function(o){o.FEEDBACK="FEEDBACK",o.RATING="RATING",o.PRINT="PRINT",o.BOOKMARK="BOOKMARK",o.COLLECTIONS="COLLECTIONS",o.PERSONAL_BOOKS="PERSONAL_BOOKS"})(K||(K={}));var ge=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},D=class extends Event{constructor(){super("register-ft-reader-component",{bubbles:!0,composed:!0})}},$=Symbol("registerInterval");function Ie(o){var e;class t extends o{constructor(){super(...arguments),this[e]=0}setReaderStateManager(s){this.clearStateManager(),this.stateManager=s,this.addStore(s.store,"reader")}clearStateManager(){this.stateManager&&(this.removeStore("reader"),this.stateManager=void 0)}get service(){var s;return(s=this.stateManager)===null||s===void 0?void 0:s.service}connectedCallback(){super.connectedCallback(),this[$]=window.setInterval(()=>this.tryToRegisterToContext(),50)}tryToRegisterToContext(){this.stateManager!=null?window.clearInterval(this[$]):this.dispatchEvent(new D)}disconnectedCallback(){super.disconnectedCallback(),this.clearStateManager()}}return e=$,ge([(0,G.state)()],t.prototype,"stateManager",void 0),t}var I=class extends Ie(q.FtLitElementRedux){};var Y=n(m());var y=n(u()),d=n(x()),Q=n(V()),c=n(m()),X=n(Z());var z=n(u()),C=n(m()),M={padding:C.FtCssVariableFactory.create("--ft-infinite-scroll-padding","","SIZE","0"),itemsGap:C.FtCssVariableFactory.create("--ft-infinite-scroll-items-gap","","SIZE","4px"),itemContainerMinHeight:C.FtCssVariableFactory.create("--ft-infinite-scroll-item-container-min-height","","SIZE",".1px")},J=z.css`
1
+ "use strict";(()=>{var pe=Object.create;var P=Object.defineProperty;var fe=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var ue=Object.getPrototypeOf,ve=Object.prototype.hasOwnProperty;var w=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports);var be=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of me(e))!ve.call(o,s)&&s!==t&&P(o,s,{get:()=>e[s],enumerable:!(r=fe(e,s))||r.enumerable});return o};var n=(o,e,t)=>(t=o!=null?pe(ue(o)):{},be(e||!o||!o.__esModule?P(t,"default",{value:o,enumerable:!0}):t,o));var m=w((ye,j)=>{j.exports=ftGlobals.wcUtils});var u=w((Oe,k)=>{k.exports=ftGlobals.lit});var T=w((we,H)=>{H.exports=ftGlobals.litDecorators});var V=w((Ce,U)=>{U.exports=ftGlobals.litRepeat});var Z=w((Ae,W)=>{W.exports=ftGlobals.litUnsafeHTML});var de=n(m());var E=n(u()),S=n(T()),g=n(m());var q=n(m()),G=n(T());var K;(function(o){o.FEEDBACK="FEEDBACK",o.RATING="RATING",o.PRINT="PRINT",o.BOOKMARK="BOOKMARK",o.COLLECTIONS="COLLECTIONS",o.PERSONAL_BOOKS="PERSONAL_BOOKS"})(K||(K={}));var ge=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},N=class extends Event{constructor(){super("register-ft-reader-component",{bubbles:!0,composed:!0})}},D=Symbol("registerInterval");function Ie(o){var e;class t extends o{constructor(){super(...arguments),this[e]=0}setReaderStateManager(s){this.clearStateManager(),this.stateManager=s,this.addStore(s.store,"reader")}clearStateManager(){this.stateManager&&(this.removeStore("reader"),this.stateManager=void 0)}get service(){var s;return(s=this.stateManager)===null||s===void 0?void 0:s.service}connectedCallback(){super.connectedCallback(),this[D]=window.setInterval(()=>this.tryToRegisterToContext(),50)}tryToRegisterToContext(){this.stateManager!=null?window.clearInterval(this[D]):this.dispatchEvent(new N)}disconnectedCallback(){super.disconnectedCallback(),this.clearStateManager()}}return e=D,ge([(0,G.state)()],t.prototype,"stateManager",void 0),t}var I=class extends Ie(q.FtLitElementRedux){};var Y=n(m());var y=n(u()),d=n(T()),Q=n(V()),c=n(m()),X=n(Z());var z=n(u()),_=n(m()),M={padding:_.FtCssVariableFactory.create("--ft-infinite-scroll-padding","","SIZE","0"),itemsGap:_.FtCssVariableFactory.create("--ft-infinite-scroll-items-gap","","SIZE","4px"),itemContainerMinHeight:_.FtCssVariableFactory.create("--ft-infinite-scroll-item-container-min-height","","SIZE",".1px")},J=z.css`
2
2
  .items-container {
3
3
  padding: ${M.padding};
4
4
  outline: none;
@@ -28,8 +28,8 @@
28
28
  display: flow-root;
29
29
  min-height: ${M.itemContainerMinHeight};
30
30
  }
31
- `;var p=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},L=class extends CustomEvent{constructor(e,t){super("visible-items-change",{detail:{visibleIndexes:e,visibleItems:t}})}},B=class extends Event{constructor(){super("scrolled-to-target")}},Te=o=>(o??[])[(o??[]).length-1],h=class extends c.FtLitElement{constructor(){super(...arguments),this.items=[],this.renderItem=()=>y.html``,this.getItemKey=(e,t)=>`${t} - ${JSON.stringify(e)}`,this.internalScroll=!1,this.renderBeforeFirst=1,this.renderAfterLast=1,this.ensureScrollToTarget=!1,this.visibleItems=[],this.scrolledToTarget=!1,this.scrolling=!1,this.renderApprovalTimeouts=[],this.renderedIndexes=new Set,this.scrollDebouncer=new c.Debouncer(5),this.scrollDoneDebouncer=new c.Debouncer(10),this.onVisibilityChange=e=>{let t=new Set(this.visibleItems),r=new Set;for(let s of e){let i=+s.target.getAttribute("data-item-index");s.intersectionRect.height>0?(t.add(i),r.add(i)):r.has(i)||t.delete(i)}this.visibleItems=[...t].sort((s,i)=>s-i)},this.intersectionObserver=new IntersectionObserver(this.onVisibilityChange),this.scrollingDebouncer=new c.Debouncer(50),this.ignoreNextScrollEvent=!1,this.scrollListener=()=>{var e;let t=this.ignoreNextScrollEvent;this.ignoreNextScrollEvent=!1,t||(this.scrolling=!0,this.scrollingDebouncer.run(()=>this.scrolling=!1));let r=this.scrollable.scrollTop,s=r-((e=this.lastScrollTop)!==null&&e!==void 0?e:0);if(this.lastScrollTop=r,this.scrolledToTarget&&(this.restoreScrollIfNeeded(t?0:s),!t||this.scrollRestorationItem==null)){let i=this.searchFirstVisibleItem(r,this.itemsContainer.children);this.scrollRestorationItem=i?+i.getAttribute("data-item-index"):void 0,this.scrollRestorationOffset=r-this.getOffset(i)}},this.restoreScrollIfNeeded=(e=0)=>{var t;let r=this.scrollable.scrollHeight,s=r-((t=this.lastScrollHeight)!==null&&t!==void 0?t:r);if(this.lastScrollHeight=r,s!==0&&this.scrolledToTarget&&this.scrollRestorationItem!=null&&this.scrollRestorationOffset!=null&&!(this.scrollRestorationItem===0&&this.scrollRestorationOffset<0)){let i=this.getItem(this.scrollRestorationItem),l=this.getOffset(i),a=(0,c.minmax)(this.scrollRestorationItem===0?-l:1,this.scrollRestorationOffset,i.clientHeight-1),N=l+a+e-this.scrollable.scrollTop;(Math.abs(s-N)<4||Math.abs(N)>5)&&(this.ignoreNextScrollEvent=!0,this.scrollable.scrollTop+=N)}},this._shouldRestoreScroll=!1,this.scrollAdjustment=()=>{this.restoreScrollIfNeeded(),this.shouldRestoreScroll&&requestAnimationFrame(this.scrollAdjustment)},this.onMutation=()=>{for(let e of this.itemsContainer.children)this.intersectionObserver.observe(e)},this.mutationObserver=new MutationObserver(this.onMutation),this.resetVisibleItemsDebouncer=new c.Debouncer(10)}get scrollable(){var e;return(e=this._scrollable)!==null&&e!==void 0?e:document.body}set scrollable(e){var t,r,s;this._scrollable!==e&&(this._scrollable&&(this._scrollable.removeEventListener("scroll",this.scrollListener),this.initialOverflowAnchorValue&&(this._scrollable.style.overflowAnchor=this.initialOverflowAnchorValue),c.scrollHelper.release(this,this._scrollable)),this._scrollable=c.scrollHelper.lock(this,e),e&&!this._scrollable&&console.error("Scrollable parent is already locked",this,e),(t=this._scrollable)===null||t===void 0||t.addEventListener("scroll",this.scrollListener),this.lastScrollTop=(r=this._scrollable)===null||r===void 0?void 0:r.scrollTop,this.lastScrollHeight=(s=this._scrollable)===null||s===void 0?void 0:s.scrollHeight,this._scrollable&&(this.initialOverflowAnchorValue=getComputedStyle(this._scrollable).overflowAnchor,this._scrollable.style.overflowAnchor="none"))}render(){return y.html`
32
- <div class="items-container ${this.internalScroll?"scrollable":""}" tabindex="-1">
31
+ `;var p=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},L=class extends CustomEvent{constructor(e,t){super("visible-items-change",{detail:{visibleIndexes:e,visibleItems:t}})}},B=class extends Event{constructor(){super("scrolled-to-target")}},xe=o=>(o??[])[(o??[]).length-1],h=class extends c.FtLitElement{constructor(){super(...arguments),this.items=[],this.renderItem=()=>y.html``,this.getItemKey=(e,t)=>`${t} - ${JSON.stringify(e)}`,this.internalScroll=!1,this.renderBeforeFirst=1,this.renderAfterLast=1,this.ensureScrollToTarget=!1,this.visibleItems=[],this.scrolledToTarget=!1,this.scrolling=!1,this.renderApprovalTimeouts=[],this.renderedIndexes=new Set,this.scrollDebouncer=new c.Debouncer(5),this.scrollDoneDebouncer=new c.Debouncer(10),this.onVisibilityChange=e=>{let t=new Set(this.visibleItems),r=new Set;for(let s of e){let i=+s.target.getAttribute("data-item-index");s.intersectionRect.height>0?(t.add(i),r.add(i)):r.has(i)||t.delete(i)}this.visibleItems=[...t].sort((s,i)=>s-i)},this.intersectionObserver=new IntersectionObserver(this.onVisibilityChange),this.scrollingDebouncer=new c.Debouncer(50),this.ignoreNextScrollEvent=!1,this.scrollListener=()=>{var e;let t=this.ignoreNextScrollEvent;this.ignoreNextScrollEvent=!1,t||(this.scrolling=!0,this.scrollingDebouncer.run(()=>this.scrolling=!1));let r=this.scrollable.scrollTop,s=r-((e=this.lastScrollTop)!==null&&e!==void 0?e:0);if(this.lastScrollTop=r,this.scrolledToTarget&&(this.restoreScrollIfNeeded(t?0:s),!t||this.scrollRestorationItem==null)){let i=this.searchFirstVisibleItem(r,this.itemsContainer.children);this.scrollRestorationItem=i?+i.getAttribute("data-item-index"):void 0,this.scrollRestorationOffset=r-this.getOffset(i)}},this.restoreScrollIfNeeded=(e=0)=>{var t;let r=this.scrollable.scrollHeight,s=r-((t=this.lastScrollHeight)!==null&&t!==void 0?t:r);if(this.lastScrollHeight=r,s!==0&&this.scrolledToTarget&&this.scrollRestorationItem!=null&&this.scrollRestorationOffset!=null&&!(this.scrollRestorationItem===0&&this.scrollRestorationOffset<0)){let i=this.getItem(this.scrollRestorationItem),l=this.getOffset(i),a=(0,c.minmax)(this.scrollRestorationItem===0?-l:1,this.scrollRestorationOffset,i.clientHeight-1),$=l+a+e-this.scrollable.scrollTop;(Math.abs(s-$)<4||Math.abs($)>5)&&(this.ignoreNextScrollEvent=!0,this.scrollable.scrollTop+=$)}},this._shouldRestoreScroll=!1,this.scrollAdjustment=()=>{this.restoreScrollIfNeeded(),this.shouldRestoreScroll&&requestAnimationFrame(this.scrollAdjustment)},this.onMutation=()=>{for(let e of this.itemsContainer.children)this.intersectionObserver.observe(e)},this.mutationObserver=new MutationObserver(this.onMutation),this.resetVisibleItemsDebouncer=new c.Debouncer(10)}get scrollable(){var e;return(e=this._scrollable)!==null&&e!==void 0?e:document.body}set scrollable(e){var t,r,s;this._scrollable!==e&&(this._scrollable&&(this._scrollable.removeEventListener("scroll",this.scrollListener),this.initialOverflowAnchorValue&&(this._scrollable.style.overflowAnchor=this.initialOverflowAnchorValue),c.scrollHelper.release(this,this._scrollable)),this._scrollable=c.scrollHelper.lock(this,e),e&&!this._scrollable&&console.error("Scrollable parent is already locked",this,e),(t=this._scrollable)===null||t===void 0||t.addEventListener("scroll",this.scrollListener),this.lastScrollTop=(r=this._scrollable)===null||r===void 0?void 0:r.scrollTop,this.lastScrollHeight=(s=this._scrollable)===null||s===void 0?void 0:s.scrollHeight,this._scrollable&&(this.initialOverflowAnchorValue=getComputedStyle(this._scrollable).overflowAnchor,this._scrollable.style.overflowAnchor="none"))}render(){return y.html`
32
+ <div @scroll-into-view="${this.onScrollIntoView}" class="items-container ${this.internalScroll?"scrollable":""}" tabindex="-1">
33
33
  ${(0,Q.repeat)(this.items,(e,t)=>this.getItemKey(e,t),(e,t)=>this.renderItemContainer(e,t))}
34
34
  </div>
35
35
  `}renderItemContainer(e,t){this.prepareRenderIfNeeded(t);let r=this.scrolledToTarget&&this.visibleItems.includes(t),s=this.renderedIndexes.has(t);return y.html`
@@ -38,13 +38,13 @@
38
38
  data-item-index="${t}">
39
39
  ${s?(()=>{let l=this.renderItem(e,t);return typeof l=="string"?(0,X.unsafeHTML)(l):l})():y.nothing}
40
40
  </div>
41
- `}prepareRenderIfNeeded(e){let t=this.renderApprovalTimeouts[e]!=null;this.inRenderRange(e)&&!t&&(this.renderApprovalTimeouts[e]=setTimeout(()=>{this.inRenderRange(e)?this.renderedIndexes.add(e):this.renderApprovalTimeouts[e]=void 0,this.requestUpdate()},300))}inRenderRange(e){return e>=this.visibleItems[0]-this.renderBeforeFirst&&e<=Te(this.visibleItems)+this.renderAfterLast}resetScroll(e=!0){this.shouldRestoreScroll=!1,this.intersectionObserver.disconnect(),this.visibleItems=[],this.scrolledToTarget=!1,this.internalScroll&&this.scrollable!==this.internalScrollable?this.scrollable=this.internalScrollable:!this.internalScroll&&e&&(this.scrollable=c.scrollHelper.findFirstScrollableParent(this.itemsContainer));let t=this.resolveScrollToIndex();this.renderedIndexes.add(t),this.scrollToTarget(t),this.scrollDoneDebouncer.run(()=>{this.ensureScrollToTarget&&t>=0&&this.scrollDebouncer.run(()=>{Math.abs(this.scrollable.scrollTop-this.getOffset(t))>5&&this.scrollToTarget(t)},500),this.scrollToTarget(t),this.scrolledToTarget=!0,this.shouldRestoreScroll=!0,this.resetIntersectionObserver()})}resolveScrollToIndex(){var e;let t=(e=this.scrollToIndex)!==null&&e!==void 0?e:this.scrollToItem?this.items.indexOf(this.scrollToItem):-1;return t>=this.items.length?-1:t}getItem(e){var t,r,s;return(r=(t=this.shadowRoot)===null||t===void 0?void 0:t.querySelector(`#item-${e}`))!==null&&r!==void 0?r:(s=this.shadowRoot)===null||s===void 0?void 0:s.querySelector("#item-0")}scrollToTarget(e){e<=0?(this.scrollable.scrollTop=0,this.scrollRestorationOffset=-this.getOffset(e)):(this.scrollable.scrollTop=this.getOffset(e),this.scrollRestorationOffset=0),this.scrollRestorationItem=e>=0?e:void 0}getOffset(e){let t=typeof e=="number"?this.getItem(e):e;return t?c.scrollHelper.getAbsoluteScrollOffset(this.scrollable,t):0}appendItems(...e){this.items=[...this.items,...e]}prependItems(...e){this.items=[...e,...this.items]}connectedCallback(){super.connectedCallback(),setTimeout(()=>{this.mutationObserver.disconnect(),this.mutationObserver.observe(this.itemsContainer,{childList:!0}),this.resetScroll()},0)}disconnectedCallback(){super.disconnectedCallback(),this.scrollable=void 0,this.intersectionObserver.disconnect(),this.mutationObserver.disconnect(),this.shouldRestoreScroll=!1}resetIntersectionObserver(){this.intersectionObserver.disconnect(),this.intersectionObserver=new IntersectionObserver(this.onVisibilityChange,{root:this.scrollable,rootMargin:"-8px",threshold:[0,.01,.1,1]}),this.onMutation()}searchFirstVisibleItem(e,t,r,s){if(r=r??0,s=s??t.length-1,s<=r)return t[r];let i=Math.floor((s-r)/2)+r,l=t[i],a=this.getOffset(l);return a>e?this.searchFirstVisibleItem(e,t,r,i-1):a+l.clientHeight<e?this.searchFirstVisibleItem(e,t,i+1,s):l}get shouldRestoreScroll(){return this._shouldRestoreScroll}set shouldRestoreScroll(e){let t=e&&!this._shouldRestoreScroll;this._shouldRestoreScroll=e,t&&requestAnimationFrame(this.scrollAdjustment)}update(e){super.update(e),e.has("items")&&(this.renderedIndexes=new Set,this.renderApprovalTimeouts=[]),((e.has("scrollToItem")||e.has("scrollToIndex"))&&(this.scrollToItem!=null||this.scrollToIndex!=null)||e.has("internalScroll"))&&this.resetScroll()}updated(e){super.updated(e),(e.has("visibleItems")||e.has("items"))&&this.onVisibleItemsChange(),e.has("scrolledToTarget")&&this.scrolledToTarget&&(this.scrollToItem!=null||this.scrollToIndex!=null)&&this.dispatchEvent(new B)}onVisibleItemsChange(){this.visibleItems.every((t,r)=>this.visibleItems[r+1]==null||t+1===this.visibleItems[r+1])||(0,c.deepEqual)(this.visibleItems,this.lastNotOkVisibleItems)?(this.resetVisibleItemsDebouncer.cancel(),this.dispatchVisibleItemsEvent()):this.resetVisibleItemsDebouncer.run(()=>{this.lastNotOkVisibleItems=[...this.visibleItems],this.visibleItems=[],this.resetIntersectionObserver()})}dispatchVisibleItemsEvent(){var e;(e=this.cancelableDispatchEvent)===null||e===void 0||e.cancel(),this.cancelableDispatchEvent=(0,c.cancelable)((0,c.waitUntil)(()=>!this.scrolling)),this.cancelableDispatchEvent.then(()=>this.dispatchEvent(new L(this.visibleItems,this.visibleItems.map(t=>this.items[t])))).catch(()=>null)}};h.styles=J;p([(0,d.property)({type:Array})],h.prototype,"items",void 0);p([(0,d.property)({attribute:!1})],h.prototype,"renderItem",void 0);p([(0,d.property)({attribute:!1})],h.prototype,"getItemKey",void 0);p([(0,d.property)({type:Object})],h.prototype,"scrollToItem",void 0);p([(0,d.property)({type:Number})],h.prototype,"scrollToIndex",void 0);p([(0,d.property)({type:Boolean})],h.prototype,"internalScroll",void 0);p([(0,d.property)({type:Number})],h.prototype,"renderBeforeFirst",void 0);p([(0,d.property)({type:Number})],h.prototype,"renderAfterLast",void 0);p([(0,d.property)({type:Boolean})],h.prototype,"ensureScrollToTarget",void 0);p([(0,d.state)({hasChanged(o,e){return o!=null&&e==null||o.length!==e.length||o[0]!==e[0]}})],h.prototype,"visibleItems",void 0);p([(0,d.query)(".scrollable")],h.prototype,"internalScrollable",void 0);p([(0,d.query)(".items-container")],h.prototype,"itemsContainer",void 0);p([(0,d.state)()],h.prototype,"scrolledToTarget",void 0);p([(0,d.state)()],h.prototype,"scrolling",void 0);p([(0,d.state)({hasChanged:c.hasChanged})],h.prototype,"renderedIndexes",void 0);(0,Y.customElement)("ft-infinite-scroll")(h);var ee=n(u()),Fe={},te=ee.css`
42
- `;var le=n(m());var ie=n(u()),O=n(x());var re=n(u());var se=re.css`
43
- `;var oe=n(m()),R=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},v=class extends I{constructor(){super(...arguments),this.disableContextInteractions=!1,this.registeredComponents=[]}render(){return ie.html`
41
+ `}prepareRenderIfNeeded(e){let t=this.renderApprovalTimeouts[e]!=null;this.inRenderRange(e)&&!t&&(this.renderApprovalTimeouts[e]=setTimeout(()=>{this.inRenderRange(e)?this.renderedIndexes.add(e):this.renderApprovalTimeouts[e]=void 0,this.requestUpdate()},300))}inRenderRange(e){return e>=this.visibleItems[0]-this.renderBeforeFirst&&e<=xe(this.visibleItems)+this.renderAfterLast}isRendered(e){return this.renderedIndexes.has(this.items.indexOf(e))}resetScroll(e=!0){this.shouldRestoreScroll=!1,this.intersectionObserver.disconnect(),this.visibleItems=[],this.scrolledToTarget=!1,this.internalScroll&&this.scrollable!==this.internalScrollable?this.scrollable=this.internalScrollable:!this.internalScroll&&e&&(this.scrollable=c.scrollHelper.findFirstScrollableParent(this.itemsContainer));let t=this.resolveScrollToIndex();this.renderedIndexes.add(t),this.scrollToTarget(t),this.scrollDoneDebouncer.run(()=>{this.ensureScrollToTarget&&t>=0&&this.scrollDebouncer.run(()=>{Math.abs(this.scrollable.scrollTop-this.getOffset(t))>5&&this.scrollToTarget(t)},500),this.scrollToTarget(t),this.scrolledToTarget=!0,this.shouldRestoreScroll=!0,this.resetIntersectionObserver()})}resolveScrollToIndex(){var e;let t=(e=this.scrollToIndex)!==null&&e!==void 0?e:this.scrollToItem?this.items.indexOf(this.scrollToItem):-1;return t>=this.items.length?-1:t}getItem(e){var t,r,s;return(r=(t=this.shadowRoot)===null||t===void 0?void 0:t.querySelector(`#item-${e}`))!==null&&r!==void 0?r:(s=this.shadowRoot)===null||s===void 0?void 0:s.querySelector("#item-0")}scrollToTarget(e){e<=0?(this.scrollable.scrollTop=0,this.scrollRestorationOffset=-this.getOffset(e)):(this.scrollable.scrollTop=this.getOffset(e),this.scrollRestorationOffset=0),this.scrollRestorationItem=e>=0?e:void 0}onScrollIntoView(e){var t;this.scrollDebouncer.cancel();let r=this.getOffset(e.target),s=(t=e.composedPath().find(i=>typeof i.matches=="function"&&i.matches(".item-container")))===null||t===void 0?void 0:t.getAttribute("data-item-index");this.scrollRestorationItem=s==null?this.scrollRestorationItem:+s,this.scrollRestorationOffset=r-this.getOffset(this.scrollRestorationItem),this.scrollable.scrollTop=r}getOffset(e){let t=typeof e=="number"?this.getItem(e):e;return t?c.scrollHelper.getAbsoluteScrollOffset(this.scrollable,t):0}appendItems(...e){this.items=[...this.items,...e]}prependItems(...e){this.items=[...e,...this.items]}connectedCallback(){super.connectedCallback(),setTimeout(()=>{this.mutationObserver.disconnect(),this.mutationObserver.observe(this.itemsContainer,{childList:!0}),this.resetScroll()},0)}disconnectedCallback(){super.disconnectedCallback(),this.scrollable=void 0,this.intersectionObserver.disconnect(),this.mutationObserver.disconnect(),this.shouldRestoreScroll=!1}resetIntersectionObserver(){this.intersectionObserver.disconnect(),this.intersectionObserver=new IntersectionObserver(this.onVisibilityChange,{root:this.scrollable,rootMargin:"-8px",threshold:[0,.01,.1,1]}),this.onMutation()}searchFirstVisibleItem(e,t,r,s){if(r=r??0,s=s??t.length-1,s<=r)return t[r];let i=Math.floor((s-r)/2)+r,l=t[i],a=this.getOffset(l);return a>e?this.searchFirstVisibleItem(e,t,r,i-1):a+l.clientHeight<e?this.searchFirstVisibleItem(e,t,i+1,s):l}get shouldRestoreScroll(){return this._shouldRestoreScroll}set shouldRestoreScroll(e){let t=e&&!this._shouldRestoreScroll;this._shouldRestoreScroll=e,t&&requestAnimationFrame(this.scrollAdjustment)}update(e){super.update(e),e.has("items")&&(this.renderedIndexes=new Set,this.renderApprovalTimeouts=[]),((e.has("scrollToItem")||e.has("scrollToIndex"))&&(this.scrollToItem!=null||this.scrollToIndex!=null)||e.has("internalScroll"))&&this.resetScroll()}updated(e){super.updated(e),(e.has("visibleItems")||e.has("items"))&&this.onVisibleItemsChange(),e.has("scrolledToTarget")&&this.scrolledToTarget&&(this.scrollToItem!=null||this.scrollToIndex!=null)&&this.dispatchEvent(new B)}onVisibleItemsChange(){this.visibleItems.every((t,r)=>this.visibleItems[r+1]==null||t+1===this.visibleItems[r+1])||(0,c.deepEqual)(this.visibleItems,this.lastNotOkVisibleItems)?(this.resetVisibleItemsDebouncer.cancel(),this.dispatchVisibleItemsEvent()):this.resetVisibleItemsDebouncer.run(()=>{this.lastNotOkVisibleItems=[...this.visibleItems],this.visibleItems=[],this.resetIntersectionObserver()})}dispatchVisibleItemsEvent(){var e;(e=this.cancelableDispatchEvent)===null||e===void 0||e.cancel(),this.cancelableDispatchEvent=(0,c.cancelable)((0,c.waitUntil)(()=>!this.scrolling)),this.cancelableDispatchEvent.then(()=>this.dispatchEvent(new L(this.visibleItems,this.visibleItems.map(t=>this.items[t])))).catch(()=>null)}};h.styles=J;p([(0,d.property)({type:Array})],h.prototype,"items",void 0);p([(0,d.property)({attribute:!1})],h.prototype,"renderItem",void 0);p([(0,d.property)({attribute:!1})],h.prototype,"getItemKey",void 0);p([(0,d.property)({type:Object})],h.prototype,"scrollToItem",void 0);p([(0,d.property)({type:Number})],h.prototype,"scrollToIndex",void 0);p([(0,d.property)({type:Boolean})],h.prototype,"internalScroll",void 0);p([(0,d.property)({type:Number})],h.prototype,"renderBeforeFirst",void 0);p([(0,d.property)({type:Number})],h.prototype,"renderAfterLast",void 0);p([(0,d.property)({type:Boolean})],h.prototype,"ensureScrollToTarget",void 0);p([(0,d.state)({hasChanged(o,e){return o!=null&&e==null||o.length!==e.length||o[0]!==e[0]}})],h.prototype,"visibleItems",void 0);p([(0,d.query)(".scrollable")],h.prototype,"internalScrollable",void 0);p([(0,d.query)(".items-container")],h.prototype,"itemsContainer",void 0);p([(0,d.state)()],h.prototype,"scrolledToTarget",void 0);p([(0,d.state)()],h.prototype,"scrolling",void 0);p([(0,d.state)({hasChanged:c.hasChanged})],h.prototype,"renderedIndexes",void 0);(0,Y.customElement)("ft-infinite-scroll")(h);var ee=n(u()),Fe={},te=ee.css`
42
+ `;var le=n(m());var ie=n(u()),R=n(T());var re=n(u());var se=re.css`
43
+ `;var oe=n(m()),C=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},v=class extends I{constructor(){super(...arguments),this.disableContextInteractions=!1,this.registeredComponents=[]}render(){return ie.html`
44
44
  <article id=${this.tocId}>
45
45
  <slot @register-ft-reader-topic-component=${this.registerComponent}></slot>
46
46
  </article>
47
- `}registerComponent(e){e.stopPropagation();let t=e.composedPath()[0];this.register(t)}register(e){this.registeredComponents.push(e),e.tocNode=this.tocNode,e.disableContextInteractions=this.disableContextInteractions}update(e){super.update(e),["mapId","tocId","stateManager"].some(t=>e.has(t))&&this.setTocNode(),e.has("tocNode")&&this.registeredComponents.forEach(t=>t.tocNode=this.tocNode)}async setTocNode(){var e;this.tocNode=void 0,this.tocNode=this.mapId&&this.tocId?await((e=this.service)===null||e===void 0?void 0:e.getTocNode(this.tocId)):void 0}disconnectedCallback(){super.disconnectedCallback(),this.registeredComponents=[]}};v.styles=se;R([(0,oe.redux)({selector:o=>{var e;return(e=o.map)===null||e===void 0?void 0:e.id}})],v.prototype,"mapId",void 0);R([(0,O.property)()],v.prototype,"tocId",void 0);R([(0,O.property)({type:Boolean})],v.prototype,"disableContextInteractions",void 0);R([(0,O.state)()],v.prototype,"tocNode",void 0);(0,le.customElement)("ft-reader-topic-context")(v);var ce=n(m()),_=n(u()),A=n(x());var ne=n(u());var ae=ne.css`
47
+ `}registerComponent(e){e.stopPropagation();let t=e.composedPath()[0];this.register(t)}register(e){this.registeredComponents.push(e),e.tocNode=this.tocNode,e.disableContextInteractions=this.disableContextInteractions}update(e){super.update(e),["mapId","tocId","stateManager"].some(t=>e.has(t))&&this.setTocNode(),e.has("tocNode")&&this.registeredComponents.forEach(t=>t.tocNode=this.tocNode)}async setTocNode(){var e;this.tocNode=void 0,this.tocNode=this.mapId&&this.tocId?await((e=this.service)===null||e===void 0?void 0:e.getTocNode(this.tocId)):void 0}disconnectedCallback(){super.disconnectedCallback(),this.registeredComponents=[]}};v.styles=se;C([(0,oe.redux)({selector:o=>{var e;return(e=o.map)===null||e===void 0?void 0:e.id}})],v.prototype,"mapId",void 0);C([(0,R.property)()],v.prototype,"tocId",void 0);C([(0,R.property)({type:Boolean})],v.prototype,"disableContextInteractions",void 0);C([(0,R.state)()],v.prototype,"tocNode",void 0);(0,le.customElement)("ft-reader-topic-context")(v);var ce=n(m()),O=n(u()),A=n(T());var ne=n(u());var ae=ne.css`
48
48
  :host {
49
49
  position: absolute;
50
50
  top: 0;
@@ -63,7 +63,7 @@
63
63
  .ft-watermark {
64
64
  z-index: 79;
65
65
  }
66
- `;var he=n(V()),F=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},T=class extends I{constructor(){super(...arguments),this.height="0"}render(){var e,t,r;return this.watermark?_.html`
66
+ `;var he=n(V()),F=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},x=class extends I{constructor(){super(...arguments),this.height="0"}render(){var e,t,r;return this.watermark?O.html`
67
67
  <style>
68
68
  .ft-watermark {
69
69
  height: ${this.height};
@@ -73,11 +73,11 @@
73
73
  <svg xmlns="http://www.w3.org/2000/svg" class="ft-watermark" part="svg">
74
74
  <text x="0" y="0" text-anchor="middle" transform="rotate(-45)" fill="${(e=this.watermark)===null||e===void 0?void 0:e.color}"
75
75
  fill-opacity="${(t=this.watermark)===null||t===void 0?void 0:t.opacity}%">
76
- ${(0,he.repeat)(((r=this.watermark)===null||r===void 0?void 0:r.text)||[],s=>_.svg`<tspan x="0" dy="1.2em">${s}</tspan>`)}
76
+ ${(0,he.repeat)(((r=this.watermark)===null||r===void 0?void 0:r.text)||[],s=>O.svg`<tspan x="0" dy="1.2em">${s}</tspan>`)}
77
77
  </text>
78
78
  </svg>
79
79
  </div>
80
- `:_.nothing}updated(e){if(super.updated(e),e.has("watermark")&&this.watermark){let t=this.svg.getBBox();this.svg.setAttribute("viewBox",t.x+" "+t.y+" "+t.width+" "+t.height)}}};T.styles=ae;F([(0,ce.redux)({selector:o=>{var e;return(e=o.map)===null||e===void 0?void 0:e.watermark}})],T.prototype,"watermark",void 0);F([(0,A.query)(".ft-watermark")],T.prototype,"svg",void 0);F([(0,A.property)()],T.prototype,"height",void 0);var b=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},f=class extends I{constructor(){super(...arguments),this.renderTopic=()=>E.html`
80
+ `:O.nothing}updated(e){if(super.updated(e),e.has("watermark")&&this.watermark){let t=this.svg.getBBox();this.svg.setAttribute("viewBox",t.x+" "+t.y+" "+t.width+" "+t.height)}}};x.styles=ae;F([(0,ce.redux)({selector:o=>{var e;return(e=o.map)===null||e===void 0?void 0:e.watermark}})],x.prototype,"watermark",void 0);F([(0,A.query)(".ft-watermark")],x.prototype,"svg",void 0);F([(0,A.property)()],x.prototype,"height",void 0);var b=function(o,e,t,r){var s=arguments.length,i=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,r);else for(var a=o.length-1;a>=0;a--)(l=o[a])&&(i=(s<3?l(i):s>3?l(e,t,i):l(e,t))||i);return s>3&&i&&Object.defineProperty(e,t,i),i},f=class extends I{constructor(){super(...arguments),this.renderTopic=()=>E.html`
81
81
  <ft-reader-topic-title></ft-reader-topic-title>
82
82
  <ft-reader-topic-content></ft-reader-topic-content>
83
83
  `,this.disableContextInteractions=!1,this.renderBeforeFirst=5,this.renderAfterLast=10,this.visibleTopicsDebouncer=new g.Debouncer(50)}render(){var e,t,r;let s=((e=this.currentPage)===null||e===void 0?void 0:e.topics)||[];return E.html`
@@ -99,4 +99,4 @@
99
99
  <ft-reader-topic-context tocId="${e}" ?disableContextInteractions=${this.disableContextInteractions}>
100
100
  ${this.renderTopic(e,t)}
101
101
  </ft-reader-topic-context>
102
- `}getScrollTarget(){var e,t,r,s,i;if(this.disableContextInteractions)return null;let l=(s=(e=this.visibleTopics)===null||e===void 0?void 0:e.includes((r=(t=this.scrollTarget)===null||t===void 0?void 0:t.tocId)!==null&&r!==void 0?r:""))!==null&&s!==void 0?s:!1;return!((i=this.scrollTarget)===null||i===void 0)&&i.tocId&&(!l||this.scrollTarget.section==null)?this.scrollTarget.tocId:null}visibleTopicChange(e){this.disableContextInteractions||this.visibleTopicsDebouncer.run(()=>{var t;return(t=this.stateManager)===null||t===void 0?void 0:t.setVisibleTopics(e.detail.visibleItems)})}onScrollDone(){var e,t;!this.disableContextInteractions&&!(!((e=this.scrollTarget)===null||e===void 0)&&e.section)&&((t=this.stateManager)===null||t===void 0||t.scrollDone())}};f.elementDefinitions={"ft-infinite-scroll":h,"ft-reader-watermark":T};f.styles=te;b([(0,S.property)()],f.prototype,"renderTopic",void 0);b([(0,S.property)({type:Boolean})],f.prototype,"disableContextInteractions",void 0);b([(0,g.redux)()],f.prototype,"currentPage",void 0);b([(0,g.redux)()],f.prototype,"scrollTarget",void 0);b([(0,g.redux)()],f.prototype,"visibleTopics",void 0);b([(0,g.redux)({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadBeforeFirstVisibleTopic)!==null&&t!==void 0?t:5}})],f.prototype,"renderBeforeFirst",void 0);b([(0,g.redux)({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadAfterLastVisibleTopic)!==null&&t!==void 0?t:5}})],f.prototype,"renderAfterLast",void 0);b([(0,g.redux)()],f.prototype,"mapId",void 0);b([(0,S.query)(".ft-reader-content")],f.prototype,"container",void 0);(0,de.customElement)("ft-reader-content")(f);})();
102
+ `}getScrollTarget(){var e,t,r;if(this.disableContextInteractions)return null;let s=(e=this.container)===null||e===void 0?void 0:e.isRendered((t=this.scrollTarget)===null||t===void 0?void 0:t.tocId);return!((r=this.scrollTarget)===null||r===void 0)&&r.tocId&&(!s||this.scrollTarget.section==null)?this.scrollTarget.tocId:null}visibleTopicChange(e){this.disableContextInteractions||this.visibleTopicsDebouncer.run(()=>{var t;return(t=this.stateManager)===null||t===void 0?void 0:t.setVisibleTopics(e.detail.visibleItems)})}onScrollDone(){var e,t;!this.disableContextInteractions&&!(!((e=this.scrollTarget)===null||e===void 0)&&e.section)&&((t=this.stateManager)===null||t===void 0||t.scrollDone())}};f.elementDefinitions={"ft-infinite-scroll":h,"ft-reader-watermark":x};f.styles=te;b([(0,S.property)()],f.prototype,"renderTopic",void 0);b([(0,S.property)({type:Boolean})],f.prototype,"disableContextInteractions",void 0);b([(0,g.redux)()],f.prototype,"currentPage",void 0);b([(0,g.redux)()],f.prototype,"scrollTarget",void 0);b([(0,g.redux)()],f.prototype,"visibleTopics",void 0);b([(0,g.redux)({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadBeforeFirstVisibleTopic)!==null&&t!==void 0?t:5}})],f.prototype,"renderBeforeFirst",void 0);b([(0,g.redux)({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadAfterLastVisibleTopic)!==null&&t!==void 0?t:5}})],f.prototype,"renderAfterLast",void 0);b([(0,g.redux)()],f.prototype,"mapId",void 0);b([(0,S.query)(".ft-reader-content")],f.prototype,"container",void 0);(0,de.customElement)("ft-reader-content")(f);})();
@@ -78,7 +78,7 @@ Also for action icons.`,c.colorGray200),contentGlobalSubtle:r.extend("--ft-conte
78
78
  min-height: ${qn.itemContainerMinHeight};
79
79
  }
80
80
  `;var K=function(o,e,t,n){var a=arguments.length,i=a<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(s=o[l])&&(i=(a<3?s(i):a>3?s(e,t,i):s(e,t))||i);return a>3&&i&&Object.defineProperty(e,t,i),i},Yn=class extends CustomEvent{constructor(e,t){super("visible-items-change",{detail:{visibleIndexes:e,visibleItems:t}})}},Jn=class extends Event{constructor(){super("scrolled-to-target")}},tu=o=>(o??[])[(o??[]).length-1],H=class extends Q{constructor(){super(...arguments),this.items=[],this.renderItem=()=>J``,this.getItemKey=(e,t)=>`${t} - ${JSON.stringify(e)}`,this.internalScroll=!1,this.renderBeforeFirst=1,this.renderAfterLast=1,this.ensureScrollToTarget=!1,this.visibleItems=[],this.scrolledToTarget=!1,this.scrolling=!1,this.renderApprovalTimeouts=[],this.renderedIndexes=new Set,this.scrollDebouncer=new re(5),this.scrollDoneDebouncer=new re(10),this.onVisibilityChange=e=>{let t=new Set(this.visibleItems),n=new Set;for(let a of e){let i=+a.target.getAttribute("data-item-index");a.intersectionRect.height>0?(t.add(i),n.add(i)):n.has(i)||t.delete(i)}this.visibleItems=[...t].sort((a,i)=>a-i)},this.intersectionObserver=new IntersectionObserver(this.onVisibilityChange),this.scrollingDebouncer=new re(50),this.ignoreNextScrollEvent=!1,this.scrollListener=()=>{var e;let t=this.ignoreNextScrollEvent;this.ignoreNextScrollEvent=!1,t||(this.scrolling=!0,this.scrollingDebouncer.run(()=>this.scrolling=!1));let n=this.scrollable.scrollTop,a=n-((e=this.lastScrollTop)!==null&&e!==void 0?e:0);if(this.lastScrollTop=n,this.scrolledToTarget&&(this.restoreScrollIfNeeded(t?0:a),!t||this.scrollRestorationItem==null)){let i=this.searchFirstVisibleItem(n,this.itemsContainer.children);this.scrollRestorationItem=i?+i.getAttribute("data-item-index"):void 0,this.scrollRestorationOffset=n-this.getOffset(i)}},this.restoreScrollIfNeeded=(e=0)=>{var t;let n=this.scrollable.scrollHeight,a=n-((t=this.lastScrollHeight)!==null&&t!==void 0?t:n);if(this.lastScrollHeight=n,a!==0&&this.scrolledToTarget&&this.scrollRestorationItem!=null&&this.scrollRestorationOffset!=null&&!(this.scrollRestorationItem===0&&this.scrollRestorationOffset<0)){let i=this.getItem(this.scrollRestorationItem),s=this.getOffset(i),l=rt(this.scrollRestorationItem===0?-s:1,this.scrollRestorationOffset,i.clientHeight-1),d=s+l+e-this.scrollable.scrollTop;(Math.abs(a-d)<4||Math.abs(d)>5)&&(this.ignoreNextScrollEvent=!0,this.scrollable.scrollTop+=d)}},this._shouldRestoreScroll=!1,this.scrollAdjustment=()=>{this.restoreScrollIfNeeded(),this.shouldRestoreScroll&&requestAnimationFrame(this.scrollAdjustment)},this.onMutation=()=>{for(let e of this.itemsContainer.children)this.intersectionObserver.observe(e)},this.mutationObserver=new MutationObserver(this.onMutation),this.resetVisibleItemsDebouncer=new re(10)}get scrollable(){var e;return(e=this._scrollable)!==null&&e!==void 0?e:document.body}set scrollable(e){var t,n,a;this._scrollable!==e&&(this._scrollable&&(this._scrollable.removeEventListener("scroll",this.scrollListener),this.initialOverflowAnchorValue&&(this._scrollable.style.overflowAnchor=this.initialOverflowAnchorValue),wt.release(this,this._scrollable)),this._scrollable=wt.lock(this,e),e&&!this._scrollable&&console.error("Scrollable parent is already locked",this,e),(t=this._scrollable)===null||t===void 0||t.addEventListener("scroll",this.scrollListener),this.lastScrollTop=(n=this._scrollable)===null||n===void 0?void 0:n.scrollTop,this.lastScrollHeight=(a=this._scrollable)===null||a===void 0?void 0:a.scrollHeight,this._scrollable&&(this.initialOverflowAnchorValue=getComputedStyle(this._scrollable).overflowAnchor,this._scrollable.style.overflowAnchor="none"))}render(){return J`
81
- <div class="items-container ${this.internalScroll?"scrollable":""}" tabindex="-1">
81
+ <div @scroll-into-view="${this.onScrollIntoView}" class="items-container ${this.internalScroll?"scrollable":""}" tabindex="-1">
82
82
  ${Wt(this.items,(e,t)=>this.getItemKey(e,t),(e,t)=>this.renderItemContainer(e,t))}
83
83
  </div>
84
84
  `}renderItemContainer(e,t){this.prepareRenderIfNeeded(t);let n=this.scrolledToTarget&&this.visibleItems.includes(t),a=this.renderedIndexes.has(t);return J`
@@ -87,7 +87,7 @@ Also for action icons.`,c.colorGray200),contentGlobalSubtle:r.extend("--ft-conte
87
87
  data-item-index="${t}">
88
88
  ${a?(()=>{let s=this.renderItem(e,t);return typeof s=="string"?bo(s):s})():W}
89
89
  </div>
90
- `}prepareRenderIfNeeded(e){let t=this.renderApprovalTimeouts[e]!=null;this.inRenderRange(e)&&!t&&(this.renderApprovalTimeouts[e]=setTimeout(()=>{this.inRenderRange(e)?this.renderedIndexes.add(e):this.renderApprovalTimeouts[e]=void 0,this.requestUpdate()},300))}inRenderRange(e){return e>=this.visibleItems[0]-this.renderBeforeFirst&&e<=tu(this.visibleItems)+this.renderAfterLast}resetScroll(e=!0){this.shouldRestoreScroll=!1,this.intersectionObserver.disconnect(),this.visibleItems=[],this.scrolledToTarget=!1,this.internalScroll&&this.scrollable!==this.internalScrollable?this.scrollable=this.internalScrollable:!this.internalScroll&&e&&(this.scrollable=wt.findFirstScrollableParent(this.itemsContainer));let t=this.resolveScrollToIndex();this.renderedIndexes.add(t),this.scrollToTarget(t),this.scrollDoneDebouncer.run(()=>{this.ensureScrollToTarget&&t>=0&&this.scrollDebouncer.run(()=>{Math.abs(this.scrollable.scrollTop-this.getOffset(t))>5&&this.scrollToTarget(t)},500),this.scrollToTarget(t),this.scrolledToTarget=!0,this.shouldRestoreScroll=!0,this.resetIntersectionObserver()})}resolveScrollToIndex(){var e;let t=(e=this.scrollToIndex)!==null&&e!==void 0?e:this.scrollToItem?this.items.indexOf(this.scrollToItem):-1;return t>=this.items.length?-1:t}getItem(e){var t,n,a;return(n=(t=this.shadowRoot)===null||t===void 0?void 0:t.querySelector(`#item-${e}`))!==null&&n!==void 0?n:(a=this.shadowRoot)===null||a===void 0?void 0:a.querySelector("#item-0")}scrollToTarget(e){e<=0?(this.scrollable.scrollTop=0,this.scrollRestorationOffset=-this.getOffset(e)):(this.scrollable.scrollTop=this.getOffset(e),this.scrollRestorationOffset=0),this.scrollRestorationItem=e>=0?e:void 0}getOffset(e){let t=typeof e=="number"?this.getItem(e):e;return t?wt.getAbsoluteScrollOffset(this.scrollable,t):0}appendItems(...e){this.items=[...this.items,...e]}prependItems(...e){this.items=[...e,...this.items]}connectedCallback(){super.connectedCallback(),setTimeout(()=>{this.mutationObserver.disconnect(),this.mutationObserver.observe(this.itemsContainer,{childList:!0}),this.resetScroll()},0)}disconnectedCallback(){super.disconnectedCallback(),this.scrollable=void 0,this.intersectionObserver.disconnect(),this.mutationObserver.disconnect(),this.shouldRestoreScroll=!1}resetIntersectionObserver(){this.intersectionObserver.disconnect(),this.intersectionObserver=new IntersectionObserver(this.onVisibilityChange,{root:this.scrollable,rootMargin:"-8px",threshold:[0,.01,.1,1]}),this.onMutation()}searchFirstVisibleItem(e,t,n,a){if(n=n??0,a=a??t.length-1,a<=n)return t[n];let i=Math.floor((a-n)/2)+n,s=t[i],l=this.getOffset(s);return l>e?this.searchFirstVisibleItem(e,t,n,i-1):l+s.clientHeight<e?this.searchFirstVisibleItem(e,t,i+1,a):s}get shouldRestoreScroll(){return this._shouldRestoreScroll}set shouldRestoreScroll(e){let t=e&&!this._shouldRestoreScroll;this._shouldRestoreScroll=e,t&&requestAnimationFrame(this.scrollAdjustment)}update(e){super.update(e),e.has("items")&&(this.renderedIndexes=new Set,this.renderApprovalTimeouts=[]),((e.has("scrollToItem")||e.has("scrollToIndex"))&&(this.scrollToItem!=null||this.scrollToIndex!=null)||e.has("internalScroll"))&&this.resetScroll()}updated(e){super.updated(e),(e.has("visibleItems")||e.has("items"))&&this.onVisibleItemsChange(),e.has("scrolledToTarget")&&this.scrolledToTarget&&(this.scrollToItem!=null||this.scrollToIndex!=null)&&this.dispatchEvent(new Jn)}onVisibleItemsChange(){this.visibleItems.every((t,n)=>this.visibleItems[n+1]==null||t+1===this.visibleItems[n+1])||et(this.visibleItems,this.lastNotOkVisibleItems)?(this.resetVisibleItemsDebouncer.cancel(),this.dispatchVisibleItemsEvent()):this.resetVisibleItemsDebouncer.run(()=>{this.lastNotOkVisibleItems=[...this.visibleItems],this.visibleItems=[],this.resetIntersectionObserver()})}dispatchVisibleItemsEvent(){var e;(e=this.cancelableDispatchEvent)===null||e===void 0||e.cancel(),this.cancelableDispatchEvent=zt(_o(()=>!this.scrolling)),this.cancelableDispatchEvent.then(()=>this.dispatchEvent(new Yn(this.visibleItems,this.visibleItems.map(t=>this.items[t])))).catch(()=>null)}};H.styles=Xs;K([U({type:Array})],H.prototype,"items",void 0);K([U({attribute:!1})],H.prototype,"renderItem",void 0);K([U({attribute:!1})],H.prototype,"getItemKey",void 0);K([U({type:Object})],H.prototype,"scrollToItem",void 0);K([U({type:Number})],H.prototype,"scrollToIndex",void 0);K([U({type:Boolean})],H.prototype,"internalScroll",void 0);K([U({type:Number})],H.prototype,"renderBeforeFirst",void 0);K([U({type:Number})],H.prototype,"renderAfterLast",void 0);K([U({type:Boolean})],H.prototype,"ensureScrollToTarget",void 0);K([te({hasChanged(o,e){return o!=null&&e==null||o.length!==e.length||o[0]!==e[0]}})],H.prototype,"visibleItems",void 0);K([Ae(".scrollable")],H.prototype,"internalScrollable",void 0);K([Ae(".items-container")],H.prototype,"itemsContainer",void 0);K([te()],H.prototype,"scrolledToTarget",void 0);K([te()],H.prototype,"scrolling",void 0);K([te({hasChanged:tt})],H.prototype,"renderedIndexes",void 0);ot("ft-infinite-scroll")(H);var Ib={},Qs=M`
90
+ `}prepareRenderIfNeeded(e){let t=this.renderApprovalTimeouts[e]!=null;this.inRenderRange(e)&&!t&&(this.renderApprovalTimeouts[e]=setTimeout(()=>{this.inRenderRange(e)?this.renderedIndexes.add(e):this.renderApprovalTimeouts[e]=void 0,this.requestUpdate()},300))}inRenderRange(e){return e>=this.visibleItems[0]-this.renderBeforeFirst&&e<=tu(this.visibleItems)+this.renderAfterLast}isRendered(e){return this.renderedIndexes.has(this.items.indexOf(e))}resetScroll(e=!0){this.shouldRestoreScroll=!1,this.intersectionObserver.disconnect(),this.visibleItems=[],this.scrolledToTarget=!1,this.internalScroll&&this.scrollable!==this.internalScrollable?this.scrollable=this.internalScrollable:!this.internalScroll&&e&&(this.scrollable=wt.findFirstScrollableParent(this.itemsContainer));let t=this.resolveScrollToIndex();this.renderedIndexes.add(t),this.scrollToTarget(t),this.scrollDoneDebouncer.run(()=>{this.ensureScrollToTarget&&t>=0&&this.scrollDebouncer.run(()=>{Math.abs(this.scrollable.scrollTop-this.getOffset(t))>5&&this.scrollToTarget(t)},500),this.scrollToTarget(t),this.scrolledToTarget=!0,this.shouldRestoreScroll=!0,this.resetIntersectionObserver()})}resolveScrollToIndex(){var e;let t=(e=this.scrollToIndex)!==null&&e!==void 0?e:this.scrollToItem?this.items.indexOf(this.scrollToItem):-1;return t>=this.items.length?-1:t}getItem(e){var t,n,a;return(n=(t=this.shadowRoot)===null||t===void 0?void 0:t.querySelector(`#item-${e}`))!==null&&n!==void 0?n:(a=this.shadowRoot)===null||a===void 0?void 0:a.querySelector("#item-0")}scrollToTarget(e){e<=0?(this.scrollable.scrollTop=0,this.scrollRestorationOffset=-this.getOffset(e)):(this.scrollable.scrollTop=this.getOffset(e),this.scrollRestorationOffset=0),this.scrollRestorationItem=e>=0?e:void 0}onScrollIntoView(e){var t;this.scrollDebouncer.cancel();let n=this.getOffset(e.target),a=(t=e.composedPath().find(i=>typeof i.matches=="function"&&i.matches(".item-container")))===null||t===void 0?void 0:t.getAttribute("data-item-index");this.scrollRestorationItem=a==null?this.scrollRestorationItem:+a,this.scrollRestorationOffset=n-this.getOffset(this.scrollRestorationItem),this.scrollable.scrollTop=n}getOffset(e){let t=typeof e=="number"?this.getItem(e):e;return t?wt.getAbsoluteScrollOffset(this.scrollable,t):0}appendItems(...e){this.items=[...this.items,...e]}prependItems(...e){this.items=[...e,...this.items]}connectedCallback(){super.connectedCallback(),setTimeout(()=>{this.mutationObserver.disconnect(),this.mutationObserver.observe(this.itemsContainer,{childList:!0}),this.resetScroll()},0)}disconnectedCallback(){super.disconnectedCallback(),this.scrollable=void 0,this.intersectionObserver.disconnect(),this.mutationObserver.disconnect(),this.shouldRestoreScroll=!1}resetIntersectionObserver(){this.intersectionObserver.disconnect(),this.intersectionObserver=new IntersectionObserver(this.onVisibilityChange,{root:this.scrollable,rootMargin:"-8px",threshold:[0,.01,.1,1]}),this.onMutation()}searchFirstVisibleItem(e,t,n,a){if(n=n??0,a=a??t.length-1,a<=n)return t[n];let i=Math.floor((a-n)/2)+n,s=t[i],l=this.getOffset(s);return l>e?this.searchFirstVisibleItem(e,t,n,i-1):l+s.clientHeight<e?this.searchFirstVisibleItem(e,t,i+1,a):s}get shouldRestoreScroll(){return this._shouldRestoreScroll}set shouldRestoreScroll(e){let t=e&&!this._shouldRestoreScroll;this._shouldRestoreScroll=e,t&&requestAnimationFrame(this.scrollAdjustment)}update(e){super.update(e),e.has("items")&&(this.renderedIndexes=new Set,this.renderApprovalTimeouts=[]),((e.has("scrollToItem")||e.has("scrollToIndex"))&&(this.scrollToItem!=null||this.scrollToIndex!=null)||e.has("internalScroll"))&&this.resetScroll()}updated(e){super.updated(e),(e.has("visibleItems")||e.has("items"))&&this.onVisibleItemsChange(),e.has("scrolledToTarget")&&this.scrolledToTarget&&(this.scrollToItem!=null||this.scrollToIndex!=null)&&this.dispatchEvent(new Jn)}onVisibleItemsChange(){this.visibleItems.every((t,n)=>this.visibleItems[n+1]==null||t+1===this.visibleItems[n+1])||et(this.visibleItems,this.lastNotOkVisibleItems)?(this.resetVisibleItemsDebouncer.cancel(),this.dispatchVisibleItemsEvent()):this.resetVisibleItemsDebouncer.run(()=>{this.lastNotOkVisibleItems=[...this.visibleItems],this.visibleItems=[],this.resetIntersectionObserver()})}dispatchVisibleItemsEvent(){var e;(e=this.cancelableDispatchEvent)===null||e===void 0||e.cancel(),this.cancelableDispatchEvent=zt(_o(()=>!this.scrolling)),this.cancelableDispatchEvent.then(()=>this.dispatchEvent(new Yn(this.visibleItems,this.visibleItems.map(t=>this.items[t])))).catch(()=>null)}};H.styles=Xs;K([U({type:Array})],H.prototype,"items",void 0);K([U({attribute:!1})],H.prototype,"renderItem",void 0);K([U({attribute:!1})],H.prototype,"getItemKey",void 0);K([U({type:Object})],H.prototype,"scrollToItem",void 0);K([U({type:Number})],H.prototype,"scrollToIndex",void 0);K([U({type:Boolean})],H.prototype,"internalScroll",void 0);K([U({type:Number})],H.prototype,"renderBeforeFirst",void 0);K([U({type:Number})],H.prototype,"renderAfterLast",void 0);K([U({type:Boolean})],H.prototype,"ensureScrollToTarget",void 0);K([te({hasChanged(o,e){return o!=null&&e==null||o.length!==e.length||o[0]!==e[0]}})],H.prototype,"visibleItems",void 0);K([Ae(".scrollable")],H.prototype,"internalScrollable",void 0);K([Ae(".items-container")],H.prototype,"itemsContainer",void 0);K([te()],H.prototype,"scrolledToTarget",void 0);K([te()],H.prototype,"scrolling",void 0);K([te({hasChanged:tt})],H.prototype,"renderedIndexes",void 0);ot("ft-infinite-scroll")(H);var Ib={},Qs=M`
91
91
  `;var ec=M`
92
92
  `;var Jr=function(o,e,t,n){var a=arguments.length,i=a<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(o,e,t,n);else for(var l=o.length-1;l>=0;l--)(s=o[l])&&(i=(a<3?s(i):a>3?s(e,t,i):s(e,t))||i);return a>3&&i&&Object.defineProperty(e,t,i),i},Ee=class extends Me{constructor(){super(...arguments),this.disableContextInteractions=!1,this.registeredComponents=[]}render(){return J`
93
93
  <article id=${this.tocId}>
@@ -148,7 +148,7 @@ Also for action icons.`,c.colorGray200),contentGlobalSubtle:r.extend("--ft-conte
148
148
  <ft-reader-topic-context tocId="${e}" ?disableContextInteractions=${this.disableContextInteractions}>
149
149
  ${this.renderTopic(e,t)}
150
150
  </ft-reader-topic-context>
151
- `}getScrollTarget(){var e,t,n,a,i;if(this.disableContextInteractions)return null;let s=(a=(e=this.visibleTopics)===null||e===void 0?void 0:e.includes((n=(t=this.scrollTarget)===null||t===void 0?void 0:t.tocId)!==null&&n!==void 0?n:""))!==null&&a!==void 0?a:!1;return!((i=this.scrollTarget)===null||i===void 0)&&i.tocId&&(!s||this.scrollTarget.section==null)?this.scrollTarget.tocId:null}visibleTopicChange(e){this.disableContextInteractions||this.visibleTopicsDebouncer.run(()=>{var t;return(t=this.stateManager)===null||t===void 0?void 0:t.setVisibleTopics(e.detail.visibleItems)})}onScrollDone(){var e,t;!this.disableContextInteractions&&!(!((e=this.scrollTarget)===null||e===void 0)&&e.section)&&((t=this.stateManager)===null||t===void 0||t.scrollDone())}};Z.elementDefinitions={"ft-infinite-scroll":H,"ft-reader-watermark":Be};Z.styles=Qs;we([U()],Z.prototype,"renderTopic",void 0);we([U({type:Boolean})],Z.prototype,"disableContextInteractions",void 0);we([oe()],Z.prototype,"currentPage",void 0);we([oe()],Z.prototype,"scrollTarget",void 0);we([oe()],Z.prototype,"visibleTopics",void 0);we([oe({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadBeforeFirstVisibleTopic)!==null&&t!==void 0?t:5}})],Z.prototype,"renderBeforeFirst",void 0);we([oe({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadAfterLastVisibleTopic)!==null&&t!==void 0?t:5}})],Z.prototype,"renderAfterLast",void 0);we([oe()],Z.prototype,"mapId",void 0);we([Ae(".ft-reader-content")],Z.prototype,"container",void 0);ot("ft-reader-content")(Z);})();
151
+ `}getScrollTarget(){var e,t,n;if(this.disableContextInteractions)return null;let a=(e=this.container)===null||e===void 0?void 0:e.isRendered((t=this.scrollTarget)===null||t===void 0?void 0:t.tocId);return!((n=this.scrollTarget)===null||n===void 0)&&n.tocId&&(!a||this.scrollTarget.section==null)?this.scrollTarget.tocId:null}visibleTopicChange(e){this.disableContextInteractions||this.visibleTopicsDebouncer.run(()=>{var t;return(t=this.stateManager)===null||t===void 0?void 0:t.setVisibleTopics(e.detail.visibleItems)})}onScrollDone(){var e,t;!this.disableContextInteractions&&!(!((e=this.scrollTarget)===null||e===void 0)&&e.section)&&((t=this.stateManager)===null||t===void 0||t.scrollDone())}};Z.elementDefinitions={"ft-infinite-scroll":H,"ft-reader-watermark":Be};Z.styles=Qs;we([U()],Z.prototype,"renderTopic",void 0);we([U({type:Boolean})],Z.prototype,"disableContextInteractions",void 0);we([oe()],Z.prototype,"currentPage",void 0);we([oe()],Z.prototype,"scrollTarget",void 0);we([oe()],Z.prototype,"visibleTopics",void 0);we([oe({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadBeforeFirstVisibleTopic)!==null&&t!==void 0?t:5}})],Z.prototype,"renderBeforeFirst",void 0);we([oe({selector:o=>{var e,t;return(t=(e=o.configuration)===null||e===void 0?void 0:e.loadAfterLastVisibleTopic)!==null&&t!==void 0?t:5}})],Z.prototype,"renderAfterLast",void 0);we([oe()],Z.prototype,"mapId",void 0);we([Ae(".ft-reader-content")],Z.prototype,"container",void 0);ot("ft-reader-content")(Z);})();
152
152
  /*! Bundled license information:
153
153
 
154
154
  @webcomponents/scoped-custom-element-registry/src/scoped-custom-element-registry.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-topics/ft-reader-content",
3
- "version": "1.2.4",
3
+ "version": "1.2.6",
4
4
  "description": "Main content for integrated reader",
5
5
  "keywords": [
6
6
  "Lit"
@@ -19,12 +19,12 @@
19
19
  "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
20
  },
21
21
  "dependencies": {
22
- "@fluid-topics/ft-infinite-scroll": "1.2.4",
23
- "@fluid-topics/ft-reader-topic-content": "1.2.4",
24
- "@fluid-topics/ft-reader-topic-context": "1.2.4",
25
- "@fluid-topics/ft-reader-topic-title": "1.2.4",
26
- "@fluid-topics/ft-wc-utils": "1.2.4",
22
+ "@fluid-topics/ft-infinite-scroll": "1.2.6",
23
+ "@fluid-topics/ft-reader-topic-content": "1.2.6",
24
+ "@fluid-topics/ft-reader-topic-context": "1.2.6",
25
+ "@fluid-topics/ft-reader-topic-title": "1.2.6",
26
+ "@fluid-topics/ft-wc-utils": "1.2.6",
27
27
  "lit": "3.1.0"
28
28
  },
29
- "gitHead": "c5822c07ea0e1ee8ed9b54f8d66ded338594a42f"
29
+ "gitHead": "6e3206b79d8e76e981cb3f36a80f90a13cc09116"
30
30
  }