rikiki-deck 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +1 -1
  2. package/bin/lib/browser.mjs +24 -1
  3. package/bin/lib/check-api.d.ts +28 -0
  4. package/bin/lib/check-api.mjs +6 -0
  5. package/bin/lib/check-plugins.mjs +228 -0
  6. package/bin/lib/check.mjs +369 -14
  7. package/bin/lib/component-deps.mjs +69 -0
  8. package/bin/lib/export-pdf.mjs +28 -5
  9. package/bin/lib/inline.mjs +70 -35
  10. package/bin/lib/narrative.mjs +77 -0
  11. package/bin/lib/prune-icons.mjs +24 -1
  12. package/bin/rikiki.mjs +45 -7
  13. package/dist/{plugins/click-stages.d.ts → click-stages.d.ts} +1 -1
  14. package/dist/{layouts/deck-cover.d.ts → deck-cover.d.ts} +2 -0
  15. package/dist/deck-cover.js +9 -6
  16. package/dist/{atoms/deck-kicker.d.ts → deck-kicker.d.ts} +5 -0
  17. package/dist/deck-kicker.js +1 -1
  18. package/dist/deck-mermaid.js +4 -4
  19. package/dist/deck-overview.js +41 -40
  20. package/dist/deck-presenter.js +89 -46
  21. package/dist/{runtime/deck-root.d.ts → deck-root.d.ts} +14 -3
  22. package/dist/deck-root.js +5 -5
  23. package/dist/{extras/deck-timeline.d.ts → deck-timeline.d.ts} +6 -0
  24. package/dist/deck-timeline.js +4 -4
  25. package/dist/deck-versus.js +2 -2
  26. package/dist/index.d.ts +37 -37
  27. package/dist/index.js +55 -52
  28. package/dist/standalone.js +229 -182
  29. package/dist/vendor/THIRD-PARTY-NOTICES.txt +3 -3
  30. package/dist/vendor/inventory.json +7 -7
  31. package/dist/vendor/mermaid.min.js +95 -95
  32. package/docs/llms/rikiki-reference.md +31 -4
  33. package/llms.txt +1 -1
  34. package/package.json +13 -6
  35. package/dist/contrast.js +0 -1
  36. package/dist/shared/contrast.d.ts +0 -52
  37. /package/dist/{shared/annotation-marks.d.ts → annotation-marks.d.ts} +0 -0
  38. /package/dist/{shared/bar-segments.d.ts → bar-segments.d.ts} +0 -0
  39. /package/dist/{infrastructure/browser-location.d.ts → browser-location.d.ts} +0 -0
  40. /package/dist/{shared/cards-syntax.d.ts → cards-syntax.d.ts} +0 -0
  41. /package/dist/{runtime/color.d.ts → color.d.ts} +0 -0
  42. /package/dist/{extras/deck-agenda.d.ts → deck-agenda.d.ts} +0 -0
  43. /package/dist/{extras/deck-annotate.d.ts → deck-annotate.d.ts} +0 -0
  44. /package/dist/{atoms/deck-badge.d.ts → deck-badge.d.ts} +0 -0
  45. /package/dist/{extras/deck-bar.d.ts → deck-bar.d.ts} +0 -0
  46. /package/dist/{layouts/deck-bento.d.ts → deck-bento.d.ts} +0 -0
  47. /package/dist/{molecules/deck-callout.d.ts → deck-callout.d.ts} +0 -0
  48. /package/dist/{molecules/deck-card.d.ts → deck-card.d.ts} +0 -0
  49. /package/dist/{molecules/deck-cell.d.ts → deck-cell.d.ts} +0 -0
  50. /package/dist/{extras/deck-checklist.d.ts → deck-checklist.d.ts} +0 -0
  51. /package/dist/{atoms/deck-code-highlighter.d.ts → deck-code-highlighter.d.ts} +0 -0
  52. /package/dist/{atoms/deck-code.d.ts → deck-code.d.ts} +0 -0
  53. /package/dist/{molecules/deck-csv.d.ts → deck-csv.d.ts} +0 -0
  54. /package/dist/{layouts/deck-feature-cards.d.ts → deck-feature-cards.d.ts} +0 -0
  55. /package/dist/{layouts/deck-feature.d.ts → deck-feature.d.ts} +0 -0
  56. /package/dist/{extras/deck-figure.d.ts → deck-figure.d.ts} +0 -0
  57. /package/dist/{molecules/deck-fit.d.ts → deck-fit.d.ts} +0 -0
  58. /package/dist/{extras/deck-flow.d.ts → deck-flow.d.ts} +0 -0
  59. /package/dist/{extras/deck-graph.d.ts → deck-graph.d.ts} +0 -0
  60. /package/dist/{molecules/deck-grid.d.ts → deck-grid.d.ts} +0 -0
  61. /package/dist/{runtime/deck-help.d.ts → deck-help.d.ts} +0 -0
  62. /package/dist/{extras/deck-icon.d.ts → deck-icon.d.ts} +0 -0
  63. /package/dist/{extras/deck-kpi-grid.d.ts → deck-kpi-grid.d.ts} +0 -0
  64. /package/dist/{domain/deck-link.d.ts → deck-link.d.ts} +0 -0
  65. /package/dist/{molecules/deck-md.d.ts → deck-md.d.ts} +0 -0
  66. /package/dist/{molecules/deck-mermaid.d.ts → deck-mermaid.d.ts} +0 -0
  67. /package/dist/{molecules/deck-metric.d.ts → deck-metric.d.ts} +0 -0
  68. /package/dist/{runtime/deck-notes.d.ts → deck-notes.d.ts} +0 -0
  69. /package/dist/{domain/deck-outline.d.ts → deck-outline.d.ts} +0 -0
  70. /package/dist/{runtime/deck-overview.d.ts → deck-overview.d.ts} +0 -0
  71. /package/dist/{extras/deck-persona.d.ts → deck-persona.d.ts} +0 -0
  72. /package/dist/{layouts/deck-photo.d.ts → deck-photo.d.ts} +0 -0
  73. /package/dist/{molecules/deck-point.d.ts → deck-point.d.ts} +0 -0
  74. /package/dist/{runtime/deck-presenter.d.ts → deck-presenter.d.ts} +0 -0
  75. /package/dist/{extras/deck-pull.d.ts → deck-pull.d.ts} +0 -0
  76. /package/dist/{atoms/deck-punch.d.ts → deck-punch.d.ts} +0 -0
  77. /package/dist/{extras/deck-quote.d.ts → deck-quote.d.ts} +0 -0
  78. /package/dist/{layouts/deck-section.d.ts → deck-section.d.ts} +0 -0
  79. /package/dist/{molecules/deck-shortcut.d.ts → deck-shortcut.d.ts} +0 -0
  80. /package/dist/{atoms/deck-source.d.ts → deck-source.d.ts} +0 -0
  81. /package/dist/{layouts/deck-split.d.ts → deck-split.d.ts} +0 -0
  82. /package/dist/{molecules/deck-stack.d.ts → deck-stack.d.ts} +0 -0
  83. /package/dist/{molecules/deck-stat.d.ts → deck-stat.d.ts} +0 -0
  84. /package/dist/{molecules/deck-step-list.d.ts → deck-step-list.d.ts} +0 -0
  85. /package/dist/{extras/deck-table.d.ts → deck-table.d.ts} +0 -0
  86. /package/dist/{layouts/deck-takeaway.d.ts → deck-takeaway.d.ts} +0 -0
  87. /package/dist/{molecules/deck-tier-list.d.ts → deck-tier-list.d.ts} +0 -0
  88. /package/dist/{runtime/deck-transition.d.ts → deck-transition.d.ts} +0 -0
  89. /package/dist/{extras/deck-versus.d.ts → deck-versus.d.ts} +0 -0
  90. /package/dist/{application/deep-link.d.ts → deep-link.d.ts} +0 -0
  91. /package/dist/{shared/escape-html.d.ts → escape-html.d.ts} +0 -0
  92. /package/dist/{shared/fit-controller.d.ts → fit-controller.d.ts} +0 -0
  93. /package/dist/{shared/graph-layout.d.ts → graph-layout.d.ts} +0 -0
  94. /package/dist/{shared/grid-tracks.d.ts → grid-tracks.d.ts} +0 -0
  95. /package/dist/{shared/icon-set.d.ts → icon-set.d.ts} +0 -0
  96. /package/dist/{application/keymap.d.ts → keymap.d.ts} +0 -0
  97. /package/dist/{application/mouse-nav.d.ts → mouse-nav.d.ts} +0 -0
  98. /package/dist/{domain/navigation.d.ts → navigation.d.ts} +0 -0
  99. /package/dist/{shared/parse-csv.d.ts → parse-csv.d.ts} +0 -0
  100. /package/dist/{plugins/shiki.d.ts → shiki.d.ts} +0 -0
  101. /package/dist/{extras/signature.d.ts → signature.d.ts} +0 -0
  102. /package/dist/{shared/slide-fill.d.ts → slide-fill.d.ts} +0 -0
  103. /package/dist/{domain/viewport.d.ts → viewport.d.ts} +0 -0
package/dist/deck-root.js CHANGED
@@ -1,12 +1,12 @@
1
- var K=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var p=(n,i,t,e)=>{for(var r=e>1?void 0:e?j(i,t):i,o=n.length-1,a;o>=0;o--)(a=n[o])&&(r=(e?a(i,t,r):a(r))||r);return e&&r&&K(i,t,r),r};import{LitElement as et,html as b,css as it}from"./vendor/lit.js";import{customElement as nt,property as d,state as E}from"./vendor/lit.js";function A(n){if(!n||n==="transparent")return!1;let i=n.match(/^(?:rgb|hsl)a?\(([^)]*)\)$/i);if(i){let e=i[1].split(",");return e.length<4||parseFloat(e[3])>=1}let t=n.match(/\/\s*([\d.]+%?)\s*\)$/);if(t){let e=t[1];return(e.endsWith("%")?parseFloat(e)/100:parseFloat(e))>=1}return!0}var M={slideCount:0,chapters:[]};function z(n){let i=[];return n.forEach((t,e)=>{if(t.toLowerCase()==="deck-section"||i.length===0)i.push({start:e,length:1});else{let o=i[i.length-1];i[i.length-1]={start:o.start,length:o.length+1}}}),{slideCount:n.length,chapters:i}}function O(n,i){return i&&n.chapters.length>1&&n.chapters.some(t=>t.length>1)}function v(n,i){for(let t=0;t<n.chapters.length;t++){let e=n.chapters[t],r=i-e.start;if(r>=0&&r<e.length)return{chapter:t,index:r}}return{chapter:0,index:0}}function T(n,i){if(n.chapters.length===0)return null;let t=_(i.chapter,0,n.chapters.length-1),e=n.chapters[t],r=_(i.index,0,e.length-1);return e.start+r}function _(n,i,t){return Number.isNaN(n)?i:Math.max(i,Math.min(t,n))}var G=/^#(\d+)\.(\d+)(?:s(\d+))?$/,J=/^#(\d+)(?:\.(\d+))?$/;function g(n,i){if(i){let e=G.exec(n);if(e)return{kind:"coords",coords:{chapter:Number(e[1])-1,index:Number(e[2])-1},step:e[3]?Number(e[3]):0}}let t=J.exec(n);return t?{kind:"slide",slide:Number(t[1])-1,step:t[2]?Number(t[2]):0}:null}function H(n,i){if(i.twoD&&i.coords){let{chapter:t,index:e}=i.coords,r=n.step>0?`s${n.step}`:"";return`#${t+1}.${e+1}${r}`}return`#${n.slide+1}${n.step>0?`.${n.step}`:""}`}var L=n=>n.slideCount<=0;function w(n,i,t){if(L(n))return null;let e=_(i.slide,0,n.slideCount-1),r=Math.max(0,t(e));return{slide:e,step:_(i.step,0,r)}}function k(n,i,t,e){if(L(n))return null;let r=Math.max(0,e(t.slide));return t.step<r?{slide:t.slide,step:t.step+1}:t.slide<n.slideCount-1?{slide:t.slide+1,step:0}:i.loop?{slide:0,step:0}:null}function x(n,i,t,e){if(L(n))return null;if(t.step>0)return{slide:t.slide,step:t.step-1};if(t.slide>0){let r=t.slide-1;return{slide:r,step:Math.max(0,e(r))}}if(i.loop){let r=n.slideCount-1;return{slide:r,step:Math.max(0,e(r))}}return null}function m(n,i,t){return w(n,{slide:i,step:0},t)}function u(n,i,t){let e=T(n,i);return e===null?null:w(n,{slide:e,step:0},t)}function I(n,i){return m(n,0,i)}function N(n,i){return m(n,n.slideCount-1,i)}function C(n,i){return n===null||i===null?n===i:n.slide===i.slide&&n.step===i.step}function $(n,i,t=!1){if(!i.ownsUrl)return null;let e=g(n.read(),i.twoD);if(!e)return null;let r=e.kind==="coords"?u(i.outline,e.coords,i.stepsOf):m(i.outline,e.slide,i.stepsOf);return r?i.stepsOf(r.slide)>0||!t?w(i.outline,{slide:r.slide,step:e.step},i.stepsOf):{slide:r.slide,step:Math.max(0,e.step)}:null}function Y(n,i,t){if(!t.ownsUrl)return;let e=H(i,{twoD:t.twoD,coords:t.twoD?v(t.outline,i.slide):void 0});n.read()!==e&&n.write(e)}var D={intent:"none",preventDefault:!1},h=(n,i=!0)=>({intent:n,preventDefault:i}),f=(n,...i)=>i.some(t=>t.toLowerCase()===n.toLowerCase());function U(n){let{key:i}=n;return n.overview?f(i,"Escape","o","Enter")?h("close-overview"):D:n.blanked?h("clear-blank"):f(i,".","b")?h("blank-black"):f(i,",","w")?h("blank-white"):n.zoomEnabled&&(i==="+"||i==="=")?h("zoom-in"):n.zoomEnabled&&i==="-"?h("zoom-out"):i==="0"&&n.zoomed?h("zoom-reset"):f(i,"?","h")?h("toggle-help",!1):i==="Escape"?h("close-help",!1):i==="Home"?h("first",!1):i==="End"?h("last",!1):f(i,"o")?h("open-overview"):f(i,"p")?h("toggle-presenter"):i===" "||i==="PageDown"?h("advance"):i==="PageUp"?h("back"):n.twoD?i==="ArrowRight"?h("next-chapter"):i==="ArrowLeft"?h("prev-chapter"):i==="ArrowDown"?h("next-in-chapter"):i==="ArrowUp"?h("prev-in-chapter"):D:i==="ArrowRight"||i==="ArrowDown"?h("advance"):i==="ArrowLeft"||i==="ArrowUp"?h("back"):D}var Q=new Set(["first","last","advance","back","next-chapter","prev-chapter","next-in-chapter","prev-in-chapter"]),X=n=>Q.has(n);function F(n,i,t,e,r){let o=()=>k(i,t,e,r),a=()=>x(i,t,e,r),{chapter:l,index:c}=v(i,e.slide);switch(n){case"first":return I(i,r);case"last":return N(i,r);case"advance":return o();case"back":return a();case"next-chapter":return l+1<i.chapters.length?u(i,{chapter:l+1,index:0},r):o();case"prev-chapter":return l>0?u(i,{chapter:l-1,index:0},r):a();case"next-in-chapter":{let y=i.chapters[l];return y&&c+1<y.length?u(i,{chapter:l,index:c+1},r):o()}case"prev-in-chapter":return c>0?u(i,{chapter:l,index:c-1},r):a()}}function B(n,i){let t=(n??"all").trim();return t==="none"?!1:t===""||t==="all"?!0:t.split(/\s+/).includes(i)}var Z={zoom:1,panX:0,panY:0};function R(n,i){return!i.width||!i.height||!n.width||!n.height?1:Math.min(i.width/n.width,i.height/n.height)}function tt(n,i,t){let e=R(n,i)*t;return{x:Math.max(0,(n.width*e-i.width)/2),y:Math.max(0,(n.height*e-i.height)/2)}}function P(n,i,t){let e=tt(i,t,n.zoom);return{zoom:n.zoom,panX:Math.max(-e.x,Math.min(e.x,n.panX)),panY:Math.max(-e.y,Math.min(e.y,n.panY))}}function W(n,i,t,e,r,o,a){let l=Math.max(1,Math.min(a.max,n.zoom*i));if(l===n.zoom)return n;let c=l/n.zoom;return P({zoom:l,panX:n.panX+(t-n.panX)*(1-c),panY:n.panY+(e-n.panY)*(1-c)},r,o)}function V(n,i,t,e,r){return P({zoom:n.zoom,panX:n.panX+i,panY:n.panY+t},e,r)}var q=n=>n.zoom===1&&n.panX===0&&n.panY===0;var S={read(){return typeof location>"u"?"":location.hash},write(n){if(!(typeof history>"u"))try{history.replaceState(null,"",n)}catch{}}};var s=class extends et{constructor(){super(...arguments);this.current=0;this.step=0;this.blank=null;this.presenterActive=!1;this.overview=!1;this.fluid=!1;this.width=1920;this.height=1080;this.noHint=!1;this.noArrows=!1;this.noCounter=!1;this.preview=!1;this.noZoom=!1;this.transition=null;this.autoplay=0;this.loop=!1;this.swipe=!1;this.mouseNav=null;this.nav=null;this.slides=[];this.chapters=[];this._overviewTeardown=null;this._transitionLoaded=!1;this._autoplayTimer=null;this._autoplayPaused=!1;this._swipeStartX=0;this._swipeStartY=0;this._swipePointerId=null;this._navDownX=0;this._navDownY=0;this._wheelAccum=0;this._wheelLockUntil=0;this._zoom=1;this._panX=0;this._panY=0;this._plugins=[];this._ctx=null;this._applyScale=()=>{if(this._effectiveFluid()){this.style.removeProperty("--deck-scale");return}let t=Math.min(this.clientWidth/this.width,this.clientHeight/this.height);t>0&&this.style.setProperty("--deck-scale",String(t)),this._zoom>1&&(this._clampPan(),this._applyZoom())};this._resizeObserver=null;this._pendingStep=null;this._stepWatcher=null;this._panning=!1;this._panLastX=0;this._panLastY=0;this._onPanDown=t=>{this._zoom<=1||!this._zoomEnabled()||t.pointerType==="mouse"&&t.button!==0||t.target?.closest("a, button, input, textarea, select, [contenteditable]")||(this._panning=!0,this._panLastX=t.clientX,this._panLastY=t.clientY,this.toggleAttribute("data-panning",!0),this.setPointerCapture?.(t.pointerId))};this._onPanMove=t=>{this._panning&&(this._panBy(t.clientX-this._panLastX,t.clientY-this._panLastY),this._panLastX=t.clientX,this._panLastY=t.clientY)};this._onPanUp=t=>{this._panning&&(this._panning=!1,this.toggleAttribute("data-panning",!1),this.releasePointerCapture?.(t.pointerId))};this._onHoverEnter=()=>{this._autoplayPaused=!0,this._stopAutoplay()};this._onHoverLeave=()=>{this._autoplayPaused=!1,this.autoplay>0&&this._startAutoplay()};this._onPointerDown=t=>{!this.swipe||t.pointerType==="mouse"&&t.button!==0||t.target?.closest("a, button, input, textarea, [contenteditable]")||(this._swipePointerId=t.pointerId,this._swipeStartX=t.clientX,this._swipeStartY=t.clientY)};this._onPointerUp=t=>{if(this._swipePointerId===null||t.pointerId!==this._swipePointerId)return;if(this._zoom>1){this._swipePointerId=null;return}let e=t.clientX-this._swipeStartX,r=t.clientY-this._swipeStartY;this._swipePointerId=null,!(Math.abs(e)<60||Math.abs(e)<Math.abs(r)*2)&&(this._stopAutoplay(),e<0?this._advance():this._back(),this._restartAutoplay())};this._onNavPointerDown=t=>{this._navDownX=t.clientX,this._navDownY=t.clientY};this._onClickNav=t=>{if(!this._mouseEnabled("click")||this.overview||this.blank||this._zoom>1||this.shadowRoot?.querySelector("#kb-overlay.open")||Math.hypot(t.clientX-this._navDownX,t.clientY-this._navDownY)>5)return;let e=window.getSelection();e&&!e.isCollapsed||t.composedPath().some(o=>o instanceof HTMLElement?o.matches?.("a, button, input, textarea, select, [contenteditable], [data-no-advance]")?!0:o.id==="blank"||o.id==="kb-overlay"||o.id==="overview-grid"||o.id==="nav-arrows"||o.id==="kb-hint":!1)||(this._restartAutoplay(),t.shiftKey?this._back():this._advance())};this._onWheel=t=>{if(!this._isFullPage()&&!t.ctrlKey&&!t.metaKey&&this._zoom<=1)return;if(t.ctrlKey||t.metaKey){if(!this._zoomEnabled())return;t.preventDefault(),this._zoomAt(Math.exp(-t.deltaY*s.ZOOM_WHEEL_SENSITIVITY),t.clientX,t.clientY);return}if(this._zoom>1&&this._zoomEnabled()){t.preventDefault(),this._panBy(-t.deltaX,-t.deltaY);return}if(!this._mouseEnabled("wheel")||this.overview||this.blank||this._wheelTargetScrolls(t))return;t.preventDefault();let e=performance.now();if(e<this._wheelLockUntil||(this._wheelAccum+=t.deltaY,Math.abs(this._wheelAccum)<50))return;let r=this._wheelAccum>0;this._wheelAccum=0,this._wheelLockUntil=e+400,this._restartAutoplay(),r?this._advance():this._back()};this._onAuxUp=t=>{this._mouseEnabled("aux")&&(t.button!==3&&t.button!==4||(t.preventDefault(),this._restartAutoplay(),t.button===3?this._back():this._advance()))};this._onAuxClick=t=>{this._mouseEnabled("aux")&&(t.button===3||t.button===4)&&t.preventDefault()};this._outline=M;this._onHash=()=>{this._readHash(!1)};this._onKey=t=>{if(!this._ownsKeyboard()||t.target&&t.target.matches?.("input,textarea,[contenteditable]"))return;this._restartAutoplay();let{intent:e,preventDefault:r}=U({key:t.key,overview:this.overview,blanked:this.blank!==null,zoomEnabled:this._zoomEnabled(),zoomed:this._zoom>1,twoD:this._has2DNav()});if(e!=="none"){if(r&&t.preventDefault(),X(e)){this._applyPosition(F(e,this._outline,{loop:this.loop},this._position,this._maxStepsFor));return}switch(e){case"close-overview":this.overview=!1;return;case"open-overview":this.overview=!0;return;case"clear-blank":this.blank=null;return;case"blank-black":this.blank="black";return;case"blank-white":this.blank="white";return;case"zoom-in":case"zoom-out":{let o=this.getBoundingClientRect(),a=e==="zoom-out"?1/s.ZOOM_STEP:s.ZOOM_STEP;this._zoomAt(a,o.left+o.width/2,o.top+o.height/2);return}case"zoom-reset":this._resetZoom();return;case"toggle-help":this._toggleHelp();return;case"close-help":this._closeHelp();return;case"toggle-presenter":this._togglePresenter();return}}};this._maxStepsFor=t=>{let e=this._baseMaxSteps(t),r=this.slides[t];if(r)for(let o of this._plugins)o.steps&&(e=Math.max(e,o.steps(r,this._context())));return e}}_context(){if(this._ctx)return this._ctx;let t=this;return this._ctx={host:t,get current(){return t.current},get step(){return t.step},get slides(){return t.slides},requestUpdate:()=>t.requestUpdate()},this._ctx}use(t){if(this._plugins.some(r=>r.name===t.name))return()=>{};t.navigate&&this._plugins.some(r=>r.navigate)&&console.warn(`[rikiki] plugin "${t.name}" has a navigate hook but another plugin already owns navigation \xB7 it will be ignored`),this._plugins.push(t);let e=t.setup?.(this._context());return this._applyStep(),this._updateUI(),()=>{let r=this._plugins.indexOf(t);r>=0&&this._plugins.splice(r,1),typeof e=="function"&&e()}}firstUpdated(){this._installRuntime(),this._scopeSlideStyles(),this.slides=Array.from(this.querySelectorAll(":scope > *")).filter(t=>t.tagName?.toLowerCase().startsWith("deck-")&&t.tagName?.toLowerCase()!=="deck-root"),this._buildChapters(),this._readHash(!0),this._applyActive(),this._applyStep(),this._updateUI(),this.requestUpdate()}_installRuntime(){this._applyCanvasVars(),this._applyScale(),this._resizeObserver=new ResizeObserver(this._applyScale),this._resizeObserver.observe(this),!this.preview&&(window.addEventListener("keydown",this._onKey),window.addEventListener("hashchange",this._onHash),this.addEventListener("pointerdown",this._onNavPointerDown),this.addEventListener("click",this._onClickNav),this.addEventListener("wheel",this._onWheel,{passive:!1}),this.addEventListener("pointerdown",this._onPanDown),this.addEventListener("pointermove",this._onPanMove),this.addEventListener("pointerup",this._onPanUp),this.addEventListener("pointercancel",this._onPanUp),window.addEventListener("mouseup",this._onAuxUp),window.addEventListener("auxclick",this._onAuxClick),this.autoplay>0&&this._startAutoplay(),this.swipe?(this.addEventListener("pointerdown",this._onPointerDown),this.addEventListener("pointerup",this._onPointerUp),this.addEventListener("pointercancel",this._onPointerUp),this.addEventListener("mouseenter",this._onHoverEnter),this.addEventListener("mouseleave",this._onHoverLeave)):this.autoplay>0&&(this.addEventListener("mouseenter",this._onHoverEnter),this.addEventListener("mouseleave",this._onHoverLeave)))}_scopeSlideStyles(){this.querySelectorAll("style[scoped]").forEach(t=>{t.dataset.rikScoped||(t.dataset.rikScoped="1",t.textContent=`@scope {
1
+ var K=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var p=(n,i,t,e)=>{for(var r=e>1?void 0:e?j(i,t):i,o=n.length-1,a;o>=0;o--)(a=n[o])&&(r=(e?a(i,t,r):a(r))||r);return e&&r&&K(i,t,r),r};import{LitElement as et,html as v,css as it}from"./vendor/lit.js";import{customElement as nt,property as d,state as E}from"./vendor/lit.js";function A(n){if(!n||n==="transparent")return!1;let i=n.match(/^(?:rgb|hsl)a?\(([^)]*)\)$/i);if(i){let e=i[1].split(",");return e.length<4||parseFloat(e[3])>=1}let t=n.match(/\/\s*([\d.]+%?)\s*\)$/);if(t){let e=t[1];return(e.endsWith("%")?parseFloat(e)/100:parseFloat(e))>=1}return!0}var M={slideCount:0,chapters:[]};function z(n){let i=[];return n.forEach((t,e)=>{if(t.toLowerCase()==="deck-section"||i.length===0)i.push({start:e,length:1});else{let o=i[i.length-1];i[i.length-1]={start:o.start,length:o.length+1}}}),{slideCount:n.length,chapters:i}}function O(n,i){return i&&n.chapters.length>1&&n.chapters.some(t=>t.length>1)}function f(n,i){for(let t=0;t<n.chapters.length;t++){let e=n.chapters[t],r=i-e.start;if(r>=0&&r<e.length)return{chapter:t,index:r}}return{chapter:0,index:0}}function T(n,i){if(n.chapters.length===0)return null;let t=_(i.chapter,0,n.chapters.length-1),e=n.chapters[t],r=_(i.index,0,e.length-1);return e.start+r}function _(n,i,t){return Number.isNaN(n)?i:Math.max(i,Math.min(t,n))}var G=/^#(\d+)\.(\d+)(?:s(\d+))?$/,J=/^#(\d+)(?:\.(\d+))?$/;function g(n,i){if(i){let e=G.exec(n);if(e)return{kind:"coords",coords:{chapter:Number(e[1])-1,index:Number(e[2])-1},step:e[3]?Number(e[3]):0}}let t=J.exec(n);return t?{kind:"slide",slide:Number(t[1])-1,step:t[2]?Number(t[2]):0}:null}function I(n,i){if(i.twoD&&i.coords){let{chapter:t,index:e}=i.coords,r=n.step>0?`s${n.step}`:"";return`#${t+1}.${e+1}${r}`}return`#${n.slide+1}${n.step>0?`.${n.step}`:""}`}var L=n=>n.slideCount<=0;function w(n,i,t){if(L(n))return null;let e=_(i.slide,0,n.slideCount-1),r=Math.max(0,t(e));return{slide:e,step:_(i.step,0,r)}}function k(n,i,t,e){if(L(n))return null;let r=Math.max(0,e(t.slide));return t.step<r?{slide:t.slide,step:t.step+1}:t.slide<n.slideCount-1?{slide:t.slide+1,step:0}:i.loop?{slide:0,step:0}:null}function x(n,i,t,e){if(L(n))return null;if(t.step>0)return{slide:t.slide,step:t.step-1};if(t.slide>0){let r=t.slide-1;return{slide:r,step:Math.max(0,e(r))}}if(i.loop){let r=n.slideCount-1;return{slide:r,step:Math.max(0,e(r))}}return null}function m(n,i,t){return w(n,{slide:i,step:0},t)}function u(n,i,t){let e=T(n,i);return e===null?null:w(n,{slide:e,step:0},t)}function H(n,i){return m(n,0,i)}function N(n,i){return m(n,n.slideCount-1,i)}function C(n,i){return n===null||i===null?n===i:n.slide===i.slide&&n.step===i.step}function $(n,i,t=!1){if(!i.ownsUrl)return null;let e=g(n.read(),i.twoD);if(!e)return null;let r=e.kind==="coords"?u(i.outline,e.coords,i.stepsOf):m(i.outline,e.slide,i.stepsOf);return r?i.stepsOf(r.slide)>0||!t?w(i.outline,{slide:r.slide,step:e.step},i.stepsOf):{slide:r.slide,step:Math.max(0,e.step)}:null}function Y(n,i,t){if(!t.ownsUrl)return;let e=I(i,{twoD:t.twoD,coords:t.twoD?f(t.outline,i.slide):void 0});n.read()!==e&&n.write(e)}var D={intent:"none",preventDefault:!1},h=(n,i=!0)=>({intent:n,preventDefault:i}),b=(n,...i)=>i.some(t=>t.toLowerCase()===n.toLowerCase());function U(n){let{key:i}=n;return n.overview?b(i,"Escape","o","Enter")?h("close-overview"):D:n.blanked?h("clear-blank"):b(i,".","b")?h("blank-black"):b(i,",","w")?h("blank-white"):n.zoomEnabled&&(i==="+"||i==="=")?h("zoom-in"):n.zoomEnabled&&i==="-"?h("zoom-out"):i==="0"&&n.zoomed?h("zoom-reset"):b(i,"?","h")?h("toggle-help",!1):i==="Escape"?h("close-help",!1):i==="Home"?h("first",!1):i==="End"?h("last",!1):b(i,"o")?h("open-overview"):b(i,"p")?h("toggle-presenter"):i===" "||i==="PageDown"?h("advance"):i==="PageUp"?h("back"):n.twoD?i==="ArrowRight"?h("next-chapter"):i==="ArrowLeft"?h("prev-chapter"):i==="ArrowDown"?h("next-in-chapter"):i==="ArrowUp"?h("prev-in-chapter"):D:i==="ArrowRight"||i==="ArrowDown"?h("advance"):i==="ArrowLeft"||i==="ArrowUp"?h("back"):D}var Q=new Set(["first","last","advance","back","next-chapter","prev-chapter","next-in-chapter","prev-in-chapter"]),X=n=>Q.has(n);function F(n,i,t,e,r){let o=()=>k(i,t,e,r),a=()=>x(i,t,e,r),{chapter:l,index:c}=f(i,e.slide);switch(n){case"first":return H(i,r);case"last":return N(i,r);case"advance":return o();case"back":return a();case"next-chapter":return l+1<i.chapters.length?u(i,{chapter:l+1,index:0},r):o();case"prev-chapter":return l>0?u(i,{chapter:l-1,index:0},r):a();case"next-in-chapter":{let y=i.chapters[l];return y&&c+1<y.length?u(i,{chapter:l,index:c+1},r):o()}case"prev-in-chapter":return c>0?u(i,{chapter:l,index:c-1},r):a()}}function B(n,i){let t=(n??"all").trim();return t==="none"?!1:t===""||t==="all"?!0:t.split(/\s+/).includes(i)}var W={zoom:1,panX:0,panY:0};function R(n,i){return!i.width||!i.height||!n.width||!n.height?1:Math.min(i.width/n.width,i.height/n.height)}function tt(n,i,t){let e=R(n,i)*t;return{x:Math.max(0,(n.width*e-i.width)/2),y:Math.max(0,(n.height*e-i.height)/2)}}function P(n,i,t){let e=tt(i,t,n.zoom);return{zoom:n.zoom,panX:Math.max(-e.x,Math.min(e.x,n.panX)),panY:Math.max(-e.y,Math.min(e.y,n.panY))}}function Z(n,i,t,e,r,o,a){let l=Math.max(1,Math.min(a.max,n.zoom*i));if(l===n.zoom)return n;let c=l/n.zoom;return P({zoom:l,panX:n.panX+(t-n.panX)*(1-c),panY:n.panY+(e-n.panY)*(1-c)},r,o)}function q(n,i,t,e,r){return P({zoom:n.zoom,panX:n.panX+i,panY:n.panY+t},e,r)}var V=n=>n.zoom===1&&n.panX===0&&n.panY===0;var S={read(){return typeof location>"u"?"":location.hash},write(n){if(!(typeof history>"u"))try{history.replaceState(null,"",n)}catch{}}};var s=class extends et{constructor(){super(...arguments);this.current=0;this.step=0;this.blank=null;this.presenterActive=!1;this.overview=!1;this.fluid=!1;this.width=1920;this.height=1080;this.noHint=!1;this.noArrows=!1;this.noCounter=!1;this.preview=!1;this.noZoom=!1;this.transition=null;this.autoplay=0;this.loop=!1;this.swipe=!1;this.mouseNav=null;this.nav=null;this.slides=[];this.chapters=[];this._overviewTeardown=null;this._transitionLoaded=!1;this._autoplayTimer=null;this._autoplayPaused=!1;this._swipeStartX=0;this._swipeStartY=0;this._swipePointerId=null;this._navDownX=0;this._navDownY=0;this._wheelAccum=0;this._wheelLockUntil=0;this._zoom=1;this._panX=0;this._panY=0;this._plugins=[];this._ctx=null;this._applyScale=()=>{if(this._effectiveFluid()){this.style.removeProperty("--deck-scale");return}let t=Math.min(this.clientWidth/this.width,this.clientHeight/this.height);t>0&&this.style.setProperty("--deck-scale",String(t)),this._zoom>1&&(this._clampPan(),this._applyZoom())};this._resizeObserver=null;this._pendingStep=null;this._stepWatcher=null;this._panning=!1;this._panLastX=0;this._panLastY=0;this._onPanDown=t=>{this._zoom<=1||!this._zoomEnabled()||t.pointerType==="mouse"&&t.button!==0||t.target?.closest("a, button, input, textarea, select, [contenteditable]")||(this._panning=!0,this._panLastX=t.clientX,this._panLastY=t.clientY,this.toggleAttribute("data-panning",!0),this.setPointerCapture?.(t.pointerId))};this._onPanMove=t=>{this._panning&&(this._panBy(t.clientX-this._panLastX,t.clientY-this._panLastY),this._panLastX=t.clientX,this._panLastY=t.clientY)};this._onPanUp=t=>{this._panning&&(this._panning=!1,this.toggleAttribute("data-panning",!1),this.releasePointerCapture?.(t.pointerId))};this._onHoverEnter=()=>{this._autoplayPaused=!0,this._stopAutoplay()};this._onHoverLeave=()=>{this._autoplayPaused=!1,this.autoplay>0&&this._startAutoplay()};this._onPointerDown=t=>{!this.swipe||t.pointerType==="mouse"&&t.button!==0||t.target?.closest("a, button, input, textarea, [contenteditable]")||(this._swipePointerId=t.pointerId,this._swipeStartX=t.clientX,this._swipeStartY=t.clientY)};this._onPointerUp=t=>{if(this._swipePointerId===null||t.pointerId!==this._swipePointerId)return;if(this._zoom>1){this._swipePointerId=null;return}let e=t.clientX-this._swipeStartX,r=t.clientY-this._swipeStartY;this._swipePointerId=null,!(Math.abs(e)<60||Math.abs(e)<Math.abs(r)*2)&&(this._stopAutoplay(),e<0?this._advance():this._back(),this._restartAutoplay())};this._onNavPointerDown=t=>{this._navDownX=t.clientX,this._navDownY=t.clientY};this._onClickNav=t=>{if(!this._mouseEnabled("click")||this.overview||this.blank||this._zoom>1||this.shadowRoot?.querySelector("#kb-overlay.open")||Math.hypot(t.clientX-this._navDownX,t.clientY-this._navDownY)>5)return;let e=window.getSelection();e&&!e.isCollapsed||t.composedPath().some(o=>o instanceof HTMLElement?o.matches?.("a, button, input, textarea, select, [contenteditable], [data-no-advance]")?!0:o.id==="blank"||o.id==="kb-overlay"||o.id==="overview-grid"||o.id==="nav-arrows"||o.id==="kb-hint":!1)||(this._restartAutoplay(),t.shiftKey?this._back():this._advance())};this._onWheel=t=>{if(!this._isFullPage()&&!t.ctrlKey&&!t.metaKey&&this._zoom<=1)return;if(t.ctrlKey||t.metaKey){if(!this._zoomEnabled())return;t.preventDefault(),this._zoomAt(Math.exp(-t.deltaY*s.ZOOM_WHEEL_SENSITIVITY),t.clientX,t.clientY);return}if(this._zoom>1&&this._zoomEnabled()){t.preventDefault(),this._panBy(-t.deltaX,-t.deltaY);return}if(!this._mouseEnabled("wheel")||this.overview||this.blank||this._wheelTargetScrolls(t))return;t.preventDefault();let e=performance.now();if(e<this._wheelLockUntil||(this._wheelAccum+=t.deltaY,Math.abs(this._wheelAccum)<50))return;let r=this._wheelAccum>0;this._wheelAccum=0,this._wheelLockUntil=e+400,this._restartAutoplay(),r?this._advance():this._back()};this._onAuxUp=t=>{this._mouseEnabled("aux")&&(t.button!==3&&t.button!==4||(t.preventDefault(),this._restartAutoplay(),t.button===3?this._back():this._advance()))};this._onAuxClick=t=>{this._mouseEnabled("aux")&&(t.button===3||t.button===4)&&t.preventDefault()};this._outline=M;this._onHash=()=>{this._readHash(!1)};this._onKey=t=>{if(!this._ownsKeyboard()||t.target&&t.target.matches?.("input,textarea,[contenteditable]"))return;this._restartAutoplay();let{intent:e,preventDefault:r}=U({key:t.key,overview:this.overview,blanked:this.blank!==null,zoomEnabled:this._zoomEnabled(),zoomed:this._zoom>1,twoD:this._has2DNav()});if(e!=="none"){if(r&&t.preventDefault(),X(e)){this._applyPosition(F(e,this._outline,{loop:this.loop},this._position,this._maxStepsFor));return}switch(e){case"close-overview":this.overview=!1;return;case"open-overview":this.overview=!0;return;case"clear-blank":this.blank=null;return;case"blank-black":this.blank="black";return;case"blank-white":this.blank="white";return;case"zoom-in":case"zoom-out":{let o=this.getBoundingClientRect(),a=e==="zoom-out"?1/s.ZOOM_STEP:s.ZOOM_STEP;this._zoomAt(a,o.left+o.width/2,o.top+o.height/2);return}case"zoom-reset":this._resetZoom();return;case"toggle-help":this._toggleHelp();return;case"close-help":this._closeHelp();return;case"toggle-presenter":this._togglePresenter();return}}};this._maxStepsFor=t=>{let e=this._baseMaxSteps(t),r=this.slides[t];if(r)for(let o of this._plugins)o.steps&&(e=Math.max(e,o.steps(r,this._context())));return e}}get _overviewSnapshot(){return this.hasAttribute("data-overview-snapshot")}_context(){if(this._ctx)return this._ctx;let t=this;return this._ctx={host:t,get current(){return t.current},get step(){return t.step},get slides(){return t.slides},requestUpdate:()=>t.requestUpdate()},this._ctx}use(t){if(this._plugins.some(r=>r.name===t.name))return()=>{};t.navigate&&this._plugins.some(r=>r.navigate)&&console.warn(`[rikiki] plugin "${t.name}" has a navigate hook but another plugin already owns navigation \xB7 it will be ignored`),this._plugins.push(t);let e=t.setup?.(this._context());return this._applyStep(),this._updateUI(),()=>{let r=this._plugins.indexOf(t);r>=0&&this._plugins.splice(r,1),typeof e=="function"&&e()}}firstUpdated(){if(!this._overviewSnapshot&&(this._installRuntime(),this._scopeSlideStyles(),this.slides=Array.from(this.querySelectorAll(":scope > *")).filter(t=>t.tagName?.toLowerCase().startsWith("deck-")&&t.tagName?.toLowerCase()!=="deck-root"),this._buildChapters(),this._readHash(!0),this._applyActive(),this._applyStep(),this._updateUI(),this.requestUpdate(),!this.hasAttribute("preview"))){let t=()=>{!this.isConnected||this.overview||(this.setAttribute("data-overview-warming",""),this._renderOverviewIfActive(!0))};document.fonts.ready.then(()=>{"requestIdleCallback"in window?window.requestIdleCallback(t,{timeout:1500}):setTimeout(t,300)})}}_installRuntime(){this._applyCanvasVars(),this._applyScale(),this._resizeObserver=new ResizeObserver(this._applyScale),this._resizeObserver.observe(this),!this.preview&&(window.addEventListener("keydown",this._onKey),window.addEventListener("hashchange",this._onHash),this.addEventListener("pointerdown",this._onNavPointerDown),this.addEventListener("click",this._onClickNav),this.addEventListener("wheel",this._onWheel,{passive:!1}),this.addEventListener("pointerdown",this._onPanDown),this.addEventListener("pointermove",this._onPanMove),this.addEventListener("pointerup",this._onPanUp),this.addEventListener("pointercancel",this._onPanUp),window.addEventListener("mouseup",this._onAuxUp),window.addEventListener("auxclick",this._onAuxClick),this.autoplay>0&&this._startAutoplay(),this.swipe?(this.addEventListener("pointerdown",this._onPointerDown),this.addEventListener("pointerup",this._onPointerUp),this.addEventListener("pointercancel",this._onPointerUp),this.addEventListener("mouseenter",this._onHoverEnter),this.addEventListener("mouseleave",this._onHoverLeave)):this.autoplay>0&&(this.addEventListener("mouseenter",this._onHoverEnter),this.addEventListener("mouseleave",this._onHoverLeave)))}_scopeSlideStyles(){this.querySelectorAll("style[scoped]").forEach(t=>{t.dataset.rikScoped||(t.dataset.rikScoped="1",t.textContent=`@scope {
2
2
  ${t.textContent??""}
3
- }`)})}_effectiveFluid(){return this.fluid||(this.slides[this.current]?.hasAttribute("fluid")??!1)}_applySlideFluid(){let t=!this.fluid&&(this.slides[this.current]?.hasAttribute("fluid")??!1);this.toggleAttribute("unfixed",t),this._applyCanvasVars(),this._applyScale()}_applyCanvasVars(){let t=document.documentElement;if(this._effectiveFluid()){t.style.removeProperty("--deck-canvas-w"),t.style.removeProperty("--deck-canvas-h");return}t.style.setProperty("--deck-canvas-w",String(this.width)),t.style.setProperty("--deck-canvas-h",String(this.height)),this._applyPageSize()}_zoomEnabled(){return!this.noZoom&&!this._effectiveFluid()&&!this.overview&&!this.blank}_applyZoom(){this.style.setProperty("--deck-zoom",String(this._zoom)),this.style.setProperty("--deck-pan-x",`${this._panX}px`),this.style.setProperty("--deck-pan-y",`${this._panY}px`),this.toggleAttribute("data-zoomed",this._zoom>1)}get _view(){return{zoom:this._zoom,panX:this._panX,panY:this._panY}}set _view(t){this._zoom=t.zoom,this._panX=t.panX,this._panY=t.panY}get _canvas(){return{width:this.width,height:this.height}}get _box(){return{width:this.clientWidth,height:this.clientHeight}}_clampPan(){this._view=P(this._view,this._canvas,this._box)}_zoomAt(t,e,r){if(!this._zoomEnabled())return;let o=this.getBoundingClientRect(),a=W(this._view,t,e-(o.left+o.width/2),r-(o.top+o.height/2),this._canvas,this._box,{max:s.ZOOM_MAX});a!==this._view&&(this._view=a,this._applyZoom())}_resetZoom(){q(this._view)||(this._view=Z,this._applyZoom())}_panBy(t,e){this._view=V(this._view,t,e,this._canvas,this._box),this._applyZoom()}_applyLetterbox(t){if(this._effectiveFluid()){this.style.removeProperty("--deck-letterbox-bg");return}let e=t?getComputedStyle(t).backgroundColor:"";e&&A(e)?this.style.setProperty("--deck-letterbox-bg",e):this.style.removeProperty("--deck-letterbox-bg")}_liveLabel(){let t=this.slides.length;if(!t)return"";let r=this.slides[this.current]?.querySelector('h1, [slot="title"]')?.textContent?.trim(),o=`Slide ${this.current+1} of ${t}`;return r?`${o} \xB7 ${r}`:o}_applyPageSize(){if(typeof document>"u")return;let t="rik-deck-page",e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,document.head.appendChild(e)),e.textContent=`@page { size: ${this.width}px ${this.height}px; margin: 0 }@media print{html:has(> body > deck-root),html:has(> body > deck-root) body{overflow:visible;height:auto}}`}static _injectGlobals(){if(typeof document>"u"||document.getElementById("rik-deck-globals"))return;let t=document.createElement("style");t.id="rik-deck-globals",t.textContent="html:has(> body > deck-root){overflow:hidden;height:100%}html:has(> body > deck-root) body{margin:0;overflow:hidden;height:100%}html:has(> body > deck-root:not([fluid])){font-size:calc(var(--deck-canvas-h,1080)*0.0235px)}html:has(> body > deck-root[fluid]){font-size:clamp(14px,2.35vh,42px)}html:has(> body > deck-root[unfixed]){font-size:clamp(14px,2.35vh,42px)}",document.head.appendChild(t)}connectedCallback(){super.connectedCallback(),!this.hasAttribute("tabindex")&&typeof document<"u"&&queueMicrotask(()=>{!this._isFullPage()&&!this.hasAttribute("tabindex")&&(this.tabIndex=0)}),s._injectGlobals(),this.hasUpdated&&this._installRuntime()}disconnectedCallback(){super.disconnectedCallback(),document.documentElement.style.removeProperty("--deck-canvas-w"),document.documentElement.style.removeProperty("--deck-canvas-h"),document.querySelector("deck-root")||document.getElementById("rik-deck-globals")?.remove(),this._resizeObserver?.disconnect(),this._resizeObserver=null,this._forgetPendingStep(),window.removeEventListener("keydown",this._onKey),window.removeEventListener("hashchange",this._onHash),this.removeEventListener("pointerdown",this._onNavPointerDown),this.removeEventListener("click",this._onClickNav),this.removeEventListener("wheel",this._onWheel),this.removeEventListener("pointerdown",this._onPanDown),this.removeEventListener("pointermove",this._onPanMove),this.removeEventListener("pointerup",this._onPanUp),this.removeEventListener("pointercancel",this._onPanUp),window.removeEventListener("mouseup",this._onAuxUp),window.removeEventListener("auxclick",this._onAuxClick),this._stopAutoplay(),this.removeEventListener("pointerdown",this._onPointerDown),this.removeEventListener("pointerup",this._onPointerUp),this.removeEventListener("pointercancel",this._onPointerUp),this.removeEventListener("mouseenter",this._onHoverEnter),this.removeEventListener("mouseleave",this._onHoverLeave),this._panning=!1,this.toggleAttribute("data-panning",!1)}_startAutoplay(){this._stopAutoplay(),!(this.autoplay<=0||this._autoplayPaused)&&(this._autoplayTimer=window.setInterval(()=>this._autoTick(),this.autoplay))}_stopAutoplay(){this._autoplayTimer!==null&&(window.clearInterval(this._autoplayTimer),this._autoplayTimer=null)}_autoTick(){if(this.overview)return;this.current>=this.slides.length-1&&this.step>=this._maxSteps()&&this.loop?this._goTo(0):this._advance()}_restartAutoplay(){this.autoplay>0&&!this._autoplayPaused&&this._startAutoplay()}_wheelTargetScrolls(t){let e=t.deltaY>0,r=t.deltaX>0;for(let o of t.composedPath()){if(o===this)return!1;if(!(o instanceof Element))continue;let a=o.scrollHeight>o.clientHeight,l=o.scrollWidth>o.clientWidth;if(!a&&!l)continue;let c=getComputedStyle(o);if(a&&/auto|scroll/.test(c.overflowY)&&(e?o.scrollTop+o.clientHeight<o.scrollHeight-1:o.scrollTop>0)||l&&/auto|scroll/.test(c.overflowX)&&(r?o.scrollLeft+o.clientWidth<o.scrollWidth-1:o.scrollLeft>0))return!0}return!1}_buildChapters(){this._outline=z(this.slides.map(e=>e.tagName?.toLowerCase()??"")),this.chapters=[];let t=null;this.slides.forEach((e,r)=>{e.tagName?.toLowerCase()==="deck-section"||!t?(t={startIdx:r,slides:[e]},this.chapters.push(t)):t.slides.push(e)})}_has2DNav(){return O(this._outline,this.nav==="2d")}_mouseEnabled(t){return B(this.mouseNav,t)}_coords(t){let{chapter:e,index:r}=v(this._outline,t);return{c:e,i:r}}_isFullPage(){return typeof document<"u"&&this.parentElement===document.body}_ownsKeyboard(){if(this._isFullPage())return!0;let t=document.activeElement;return t===this||t!==null&&this.contains(t)}_linkContext(){return{outline:this._outline,twoD:this._has2DNav(),stepsOf:this._maxStepsFor,ownsUrl:this._isFullPage()}}_readHash(t){let e=$(S,this._linkContext(),t);e&&(C(e,this._position)&&!t||(this.current=e.slide,this.step=e.step,t&&this._watchForLateSteps(e),t||(this._resetZoom(),this._applyActive(),this._applyStep(),this._updateUI())))}_watchForLateSteps(t){let e=g(S.read(),this._has2DNav());!e||e.step<=0||(this._pendingStep=Math.max(e.step,t.step),this._stepWatcher?.disconnect(),this._stepWatcher=new MutationObserver(()=>this._replayPendingStep()),this._stepWatcher.observe(this,{subtree:!0,attributes:!0,attributeFilter:["steps","data-steps"]}))}_replayPendingStep(){let t=this._pendingStep;t!==null&&(this._maxStepsFor(this.current)<t||(this._forgetPendingStep(),this.step=t,this._applyActive(),this._applyStep(),this._updateUI(),this._writeHash()))}_forgetPendingStep(){this._pendingStep=null,this._stepWatcher?.disconnect(),this._stepWatcher=null}_writeHash(){Y(S,this._position,this._linkContext())}async _toggleHelp(){(await import("./deck-help.js")).toggleHelp(this)}async _togglePresenter(){(await import("./deck-presenter.js")).installPresenter(this)}async _closeHelp(){(await import("./deck-help.js")).closeHelp(this)}async _renderOverviewIfActive(){if(!this.overview){this._overviewTeardown?.(),this._overviewTeardown=null;return}let{mountOverview:t}=await import("./deck-overview.js");this._overviewTeardown=t(this,{slides:this.slides,chapters:this.chapters,currentIdx:this.current,onPick:e=>{this.overview=!1,this._goTo(e)}})}_maxSteps(){return this._maxStepsFor(this.current)}_baseMaxSteps(t){let e=this.slides[t];if(!e)return 0;let r=parseInt(e.getAttribute("steps")||e.dataset?.steps||"0",10);if(r>0)return r;let o=e.querySelector("deck-code[step-groups]");if(o)try{return JSON.parse(o.getAttribute("step-groups")).length}catch{}return 0}get _position(){return{slide:this.current,step:this.step}}_applyPosition(t){if(t===null||C(t,this._position))return;if(this._forgetPendingStep(),t.slide===this.current){this.step=t.step,this._applyStep(),this._updateUI(),this._writeHash();return}let e=this._plugins.find(o=>o.navigate),r=()=>this._moveTo(t);e?.navigate?.(t.slide,this._context(),r)||r()}_moveTo(t){this._resetZoom(),this.current=t.slide,this.step=t.step,this._applyActive(),this._applyStep(),this._updateUI(),this._writeHash()}_advance(){this._applyPosition(k(this._outline,{loop:this.loop},this._position,this._maxStepsFor))}_back(){this._applyPosition(x(this._outline,{loop:this.loop},this._position,this._maxStepsFor))}_goTo(t){this._applyPosition(m(this._outline,t,this._maxStepsFor))}_goToCoords(t,e){this._applyPosition(u(this._outline,{chapter:t,index:e},this._maxStepsFor))}_applyActive(){let t=this.slides.find(r=>r.hasAttribute("active"))??null,e=this.slides[this.current]??null;this.slides.forEach((r,o)=>{let a=o===this.current;r.toggleAttribute("active",a),a&&r.querySelectorAll("deck-mermaid").forEach(l=>{l.render?.()})}),this._applySlideFluid(),this._applyLetterbox(e),this.transition&&!this._transitionLoaded&&(this._transitionLoaded=!0,import("./deck-transition.js").then(r=>r.installTransitions(this))),t!==e&&this.dispatchEvent(new CustomEvent("slide-change",{detail:{current:e,previous:t},bubbles:!1}))}_applyStep(){let t=this.slides[this.current];if(t){t.applyStep?.(this.step),t.querySelectorAll("*").forEach(e=>{e.applyStep?.(this.step)}),t.querySelectorAll("[data-step-block]").forEach(e=>{let r=parseInt(e.dataset.stepBlock,10);e.style.transition="opacity 0.25s ease",e.style.opacity=this.step===0||r<=this.step?"1":"0.15"});for(let e of this._plugins)e.applyStep?.(this.step,t,this._context())}}_counterHidden(){let t=this.slides[this.current];return this.overview||this.blank!==null||t?.tagName.toLowerCase()==="deck-cover"}_updateUI(){let t=this.slides.length,e=this.current+1,r=this.renderRoot.querySelector("#progress"),o=this.renderRoot.querySelector("#counter"),a=this.renderRoot.querySelector("#step-dots");r&&(r.style.width=`${t>0?e/t*100:0}%`),o&&(o.textContent=`${e} / ${t}`);let l=this._maxSteps();a&&(a.innerHTML=l===0?"":Array.from({length:l},(c,y)=>`<div class="dot${y<this.step?" active":""}"></div>`).join(""))}updated(t){(t.has("width")||t.has("height")||t.has("fluid"))&&(this._applyCanvasVars(),this._applyScale()),t.has("fluid")&&this._applyLetterbox(this.slides[this.current]??null),(t.has("overview")&&this.overview||t.has("blank")&&this.blank||t.has("noZoom")&&this.noZoom||t.has("fluid")&&this.fluid)&&this._resetZoom(),this._updateUI(),this._renderOverviewIfActive()}_navArrows(){if(this.noArrows||this.presenterActive||!this._mouseEnabled("arrows")||this.overview)return"";let t=this.slides.length;if(t===0)return"";let e=this.current===0&&this.step===0,r=this.current>=t-1&&this.step>=this._maxSteps();if(this._has2DNav()){let{c:o,i:a}=this._coords(this.current),l=this.chapters[o];return b`<div id="nav-arrows"> <button class="nav-btn" aria-label="Previous chapter" title="Previous chapter" ?disabled=${!this.loop&&this.current===0} @click=${()=>o>0?this._goToCoords(o-1,0):this._back()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m10 3-5 5 5 5" /></svg></button> <button class="nav-btn" aria-label="Previous slide in chapter" title="Up" ?disabled=${a===0} @click=${()=>this._goToCoords(o,a-1)}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m3 10 5-5 5 5" /></svg></button> <button class="nav-btn" aria-label="Next slide in chapter" title="Down" ?disabled=${!l||a+1>=l.slides.length} @click=${()=>this._goToCoords(o,a+1)}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m3 6 5 5 5-5" /></svg></button> <button class="nav-btn" aria-label="Next chapter" title="Next chapter" ?disabled=${!this.loop&&r} @click=${()=>o+1<this.chapters.length?this._goToCoords(o+1,0):this._advance()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m6 3 5 5-5 5" /></svg></button> </div>`}return b`<div id="nav-arrows"> <button class="nav-btn" aria-label="Previous slide" title="Previous" ?disabled=${!this.loop&&e} @click=${()=>this._back()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m10 3-5 5 5 5" /></svg></button> <button class="nav-btn" aria-label="Next slide" title="Next" ?disabled=${!this.loop&&r} @click=${()=>this._advance()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m6 3 5 5-5 5" /></svg></button> </div>`}render(){return b`<div id="progress"></div> <div id="live" aria-live="polite" aria-atomic="true">${this._liveLabel()}</div> <div id="counter" class=${this._counterHidden()?"hidden":""}></div> <div id="step-dots"></div> ${this.noHint||this.presenterActive?"":b`
3
+ }`)})}_effectiveFluid(){return this.fluid||(this.slides[this.current]?.hasAttribute("fluid")??!1)}_applySlideFluid(){let t=!this.fluid&&(this.slides[this.current]?.hasAttribute("fluid")??!1);this.toggleAttribute("unfixed",t),this._applyCanvasVars(),this._applyScale()}_applyCanvasVars(){let t=document.documentElement;if(this._effectiveFluid()){t.style.removeProperty("--deck-canvas-w"),t.style.removeProperty("--deck-canvas-h");return}t.style.setProperty("--deck-canvas-w",String(this.width)),t.style.setProperty("--deck-canvas-h",String(this.height)),this._applyPageSize()}_zoomEnabled(){return!this.noZoom&&!this._effectiveFluid()&&!this.overview&&!this.blank}_applyZoom(){this.style.setProperty("--deck-zoom",String(this._zoom)),this.style.setProperty("--deck-pan-x",`${this._panX}px`),this.style.setProperty("--deck-pan-y",`${this._panY}px`),this.toggleAttribute("data-zoomed",this._zoom>1)}get _view(){return{zoom:this._zoom,panX:this._panX,panY:this._panY}}set _view(t){this._zoom=t.zoom,this._panX=t.panX,this._panY=t.panY}get _canvas(){return{width:this.width,height:this.height}}get _box(){return{width:this.clientWidth,height:this.clientHeight}}_clampPan(){this._view=P(this._view,this._canvas,this._box)}_zoomAt(t,e,r){if(!this._zoomEnabled())return;let o=this.getBoundingClientRect(),a=Z(this._view,t,e-(o.left+o.width/2),r-(o.top+o.height/2),this._canvas,this._box,{max:s.ZOOM_MAX});a!==this._view&&(this._view=a,this._applyZoom())}_resetZoom(){V(this._view)||(this._view=W,this._applyZoom())}_panBy(t,e){this._view=q(this._view,t,e,this._canvas,this._box),this._applyZoom()}_applyLetterbox(t){if(this._effectiveFluid()){this.style.removeProperty("--deck-letterbox-bg");return}let e=t?getComputedStyle(t).backgroundColor:"";e&&A(e)?this.style.setProperty("--deck-letterbox-bg",e):this.style.removeProperty("--deck-letterbox-bg"),t&&this._repaintLetterboxWhenDefined(t)}_repaintLetterboxWhenDefined(t){let e=t.localName;!e.startsWith("deck-")||customElements.get(e)||customElements.whenDefined(e).then(async()=>{await t.updateComplete,this.slides[this.current]===t&&this._applyLetterbox(t)})}_liveLabel(){let t=this.slides.length;if(!t)return"";let r=this.slides[this.current]?.querySelector('h1, [slot="title"]')?.textContent?.trim(),o=`Slide ${this.current+1} of ${t}`;return r?`${o} \xB7 ${r}`:o}_applyPageSize(){if(typeof document>"u")return;let t="rik-deck-page",e=document.getElementById(t);e||(e=document.createElement("style"),e.id=t,document.head.appendChild(e)),e.textContent=`@page { size: ${this.width}px ${this.height}px; margin: 0 }@media print{html:has(> body > deck-root),html:has(> body > deck-root) body{overflow:visible;height:auto}}`}static _injectGlobals(){if(typeof document>"u"||document.getElementById("rik-deck-globals"))return;let t=document.createElement("style");t.id="rik-deck-globals",t.textContent="html:has(> body > deck-root){overflow:hidden;height:100%}html:has(> body > deck-root) body{margin:0;overflow:hidden;height:100%}html:has(> body > deck-root:not([fluid])){font-size:calc(var(--deck-canvas-h,1080)*0.0235px)}html:has(> body > deck-root[fluid]){font-size:clamp(14px,2.35vh,42px)}html:has(> body > deck-root[unfixed]){font-size:clamp(14px,2.35vh,42px)}",document.head.appendChild(t)}connectedCallback(){super.connectedCallback(),!this._overviewSnapshot&&(!this.hasAttribute("tabindex")&&typeof document<"u"&&queueMicrotask(()=>{!this._isFullPage()&&!this.hasAttribute("tabindex")&&(this.tabIndex=0)}),s._injectGlobals(),this.hasUpdated&&this._installRuntime())}disconnectedCallback(){super.disconnectedCallback(),!this._overviewSnapshot&&(this._overviewTeardown?.(),this._overviewTeardown=null,document.documentElement.style.removeProperty("--deck-canvas-w"),document.documentElement.style.removeProperty("--deck-canvas-h"),document.querySelector("deck-root")||document.getElementById("rik-deck-globals")?.remove(),this._resizeObserver?.disconnect(),this._resizeObserver=null,this._forgetPendingStep(),window.removeEventListener("keydown",this._onKey),window.removeEventListener("hashchange",this._onHash),this.removeEventListener("pointerdown",this._onNavPointerDown),this.removeEventListener("click",this._onClickNav),this.removeEventListener("wheel",this._onWheel),this.removeEventListener("pointerdown",this._onPanDown),this.removeEventListener("pointermove",this._onPanMove),this.removeEventListener("pointerup",this._onPanUp),this.removeEventListener("pointercancel",this._onPanUp),window.removeEventListener("mouseup",this._onAuxUp),window.removeEventListener("auxclick",this._onAuxClick),this._stopAutoplay(),this.removeEventListener("pointerdown",this._onPointerDown),this.removeEventListener("pointerup",this._onPointerUp),this.removeEventListener("pointercancel",this._onPointerUp),this.removeEventListener("mouseenter",this._onHoverEnter),this.removeEventListener("mouseleave",this._onHoverLeave),this._panning=!1,this.toggleAttribute("data-panning",!1))}_startAutoplay(){this._stopAutoplay(),!(this.autoplay<=0||this._autoplayPaused)&&(this._autoplayTimer=window.setInterval(()=>this._autoTick(),this.autoplay))}_stopAutoplay(){this._autoplayTimer!==null&&(window.clearInterval(this._autoplayTimer),this._autoplayTimer=null)}_autoTick(){if(this.overview)return;this.current>=this.slides.length-1&&this.step>=this._maxSteps()&&this.loop?this._goTo(0):this._advance()}_restartAutoplay(){this.autoplay>0&&!this._autoplayPaused&&this._startAutoplay()}_wheelTargetScrolls(t){let e=t.deltaY>0,r=t.deltaX>0;for(let o of t.composedPath()){if(o===this)return!1;if(!(o instanceof Element))continue;let a=o.scrollHeight>o.clientHeight,l=o.scrollWidth>o.clientWidth;if(!a&&!l)continue;let c=getComputedStyle(o);if(a&&/auto|scroll/.test(c.overflowY)&&(e?o.scrollTop+o.clientHeight<o.scrollHeight-1:o.scrollTop>0)||l&&/auto|scroll/.test(c.overflowX)&&(r?o.scrollLeft+o.clientWidth<o.scrollWidth-1:o.scrollLeft>0))return!0}return!1}_buildChapters(){this._outline=z(this.slides.map(e=>e.tagName?.toLowerCase()??"")),this.chapters=[];let t=null;this.slides.forEach((e,r)=>{e.tagName?.toLowerCase()==="deck-section"||!t?(t={startIdx:r,slides:[e]},this.chapters.push(t)):t.slides.push(e)})}_has2DNav(){return O(this._outline,this.nav==="2d")}_mouseEnabled(t){return B(this.mouseNav,t)}_coords(t){let{chapter:e,index:r}=f(this._outline,t);return{c:e,i:r}}_isFullPage(){return typeof document<"u"&&this.parentElement===document.body}_ownsKeyboard(){if(this._isFullPage())return!0;let t=document.activeElement;return t===this||t!==null&&this.contains(t)}_linkContext(){return{outline:this._outline,twoD:this._has2DNav(),stepsOf:this._maxStepsFor,ownsUrl:this._isFullPage()}}_readHash(t){let e=$(S,this._linkContext(),t);e&&(C(e,this._position)&&!t||(this.current=e.slide,this.step=e.step,t&&this._watchForLateSteps(e),t||(this._resetZoom(),this._applyActive(),this._applyStep(),this._updateUI())))}_watchForLateSteps(t){let e=g(S.read(),this._has2DNav());!e||e.step<=0||(this._pendingStep=Math.max(e.step,t.step),this._stepWatcher?.disconnect(),this._stepWatcher=new MutationObserver(()=>this._replayPendingStep()),this._stepWatcher.observe(this,{subtree:!0,attributes:!0,attributeFilter:["steps","data-steps"]}))}_replayPendingStep(){let t=this._pendingStep;t!==null&&(this._maxStepsFor(this.current)<t||(this._forgetPendingStep(),this.step=t,this._applyActive(),this._applyStep(),this._updateUI(),this._writeHash()))}_forgetPendingStep(){this._pendingStep=null,this._stepWatcher?.disconnect(),this._stepWatcher=null}_writeHash(){Y(S,this._position,this._linkContext())}async _toggleHelp(){(await import("./deck-help.js")).toggleHelp(this)}async _togglePresenter(){(await import("./deck-presenter.js")).installPresenter(this)}async _closeHelp(){(await import("./deck-help.js")).closeHelp(this)}async _renderOverviewIfActive(t=!1){if(!this.overview&&!t)return;let{mountOverview:e}=await import("./deck-overview.js");this.isConnected&&(this._overviewTeardown=e(this,{slides:this.slides,chapters:this.chapters,currentIdx:this.current,onPick:r=>{this.overview=!1,this._goTo(r)}}))}_maxSteps(){return this._maxStepsFor(this.current)}_baseMaxSteps(t){let e=this.slides[t];if(!e)return 0;let r=parseInt(e.getAttribute("steps")||e.dataset?.steps||"0",10);if(r>0)return r;let o=e.querySelector("deck-code[step-groups]");if(o)try{return JSON.parse(o.getAttribute("step-groups")).length}catch{}return 0}get _position(){return{slide:this.current,step:this.step}}_applyPosition(t){if(t===null||C(t,this._position))return;if(this._forgetPendingStep(),t.slide===this.current){this.step=t.step,this._applyStep(),this._updateUI(),this._writeHash();return}let e=this._plugins.find(o=>o.navigate),r=()=>this._moveTo(t);e?.navigate?.(t.slide,this._context(),r)||r()}_moveTo(t){this._resetZoom(),this.current=t.slide,this.step=t.step,this._applyActive(),this._applyStep(),this._updateUI(),this._writeHash()}_advance(){this._applyPosition(k(this._outline,{loop:this.loop},this._position,this._maxStepsFor))}_back(){this._applyPosition(x(this._outline,{loop:this.loop},this._position,this._maxStepsFor))}_goTo(t){this._applyPosition(m(this._outline,t,this._maxStepsFor))}_goToCoords(t,e){this._applyPosition(u(this._outline,{chapter:t,index:e},this._maxStepsFor))}_applyActive(){let t=this.slides.find(r=>r.hasAttribute("active"))??null,e=this.slides[this.current]??null;this.slides.forEach((r,o)=>{let a=o===this.current;r.toggleAttribute("active",a),a&&r.querySelectorAll("deck-mermaid").forEach(l=>{l.render?.()})}),this._applySlideFluid(),this._applyLetterbox(e),this.transition&&!this._transitionLoaded&&(this._transitionLoaded=!0,import("./deck-transition.js").then(r=>r.installTransitions(this))),t!==e&&this.dispatchEvent(new CustomEvent("slide-change",{detail:{current:e,previous:t},bubbles:!1}))}_applyStep(){let t=this.slides[this.current];if(t){t.applyStep?.(this.step),t.querySelectorAll("*").forEach(e=>{e.applyStep?.(this.step)}),t.querySelectorAll("[data-step-block]").forEach(e=>{let r=parseInt(e.dataset.stepBlock,10);e.style.transition="opacity 0.25s ease",e.style.opacity=this.step===0||r<=this.step?"1":"0.15"});for(let e of this._plugins)e.applyStep?.(this.step,t,this._context());this.dispatchEvent(new CustomEvent("step-change",{detail:{step:this.step,steps:this._maxSteps()}}))}}_counterHidden(){return this.overview||this.blank!==null}_updateUI(){let t=this.slides.length,e=this.current+1,r=this.renderRoot.querySelector("#progress"),o=this.renderRoot.querySelector("#counter"),a=this.renderRoot.querySelector("#step-dots");r&&(r.style.width=`${t>0?e/t*100:0}%`),o&&(o.textContent=`${e} / ${t}`);let l=this._maxSteps();a&&(a.innerHTML=l===0?"":Array.from({length:l},(c,y)=>`<div class="dot${y<this.step?" active":""}"></div>`).join(""))}updated(t){this._overviewSnapshot||((t.has("width")||t.has("height")||t.has("fluid"))&&(this._applyCanvasVars(),this._applyScale()),t.has("fluid")&&this._applyLetterbox(this.slides[this.current]??null),(t.has("overview")&&this.overview||t.has("blank")&&this.blank||t.has("noZoom")&&this.noZoom||t.has("fluid")&&this.fluid)&&this._resetZoom(),this._updateUI(),this._renderOverviewIfActive())}_navArrows(){if(this.noArrows||this.presenterActive||!this._mouseEnabled("arrows")||this.overview)return"";let t=this.slides.length;if(t===0)return"";let e=this.current===0&&this.step===0,r=this.current>=t-1&&this.step>=this._maxSteps();if(this._has2DNav()){let{c:o,i:a}=this._coords(this.current),l=this.chapters[o];return v`<div id="nav-arrows"> <button class="nav-btn" aria-label="Previous chapter" title="Previous chapter" ?disabled=${!this.loop&&this.current===0} @click=${()=>o>0?this._goToCoords(o-1,0):this._back()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m10 3-5 5 5 5" /></svg></button> <button class="nav-btn" aria-label="Previous slide in chapter" title="Up" ?disabled=${a===0} @click=${()=>this._goToCoords(o,a-1)}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m3 10 5-5 5 5" /></svg></button> <button class="nav-btn" aria-label="Next slide in chapter" title="Down" ?disabled=${!l||a+1>=l.slides.length} @click=${()=>this._goToCoords(o,a+1)}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m3 6 5 5 5-5" /></svg></button> <button class="nav-btn" aria-label="Next chapter" title="Next chapter" ?disabled=${!this.loop&&r} @click=${()=>o+1<this.chapters.length?this._goToCoords(o+1,0):this._advance()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m6 3 5 5-5 5" /></svg></button> </div>`}return v`<div id="nav-arrows"> <button class="nav-btn" aria-label="Previous slide" title="Previous" ?disabled=${!this.loop&&e} @click=${()=>this._back()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m10 3-5 5 5 5" /></svg></button> <button class="nav-btn" aria-label="Next slide" title="Next" ?disabled=${!this.loop&&r} @click=${()=>this._advance()}><svg viewBox="0 0 16 16" aria-hidden="true"><path d="m6 3 5 5-5 5" /></svg></button> </div>`}render(){return this._overviewSnapshot?v`<slot></slot>`:v`<div id="progress"></div> <div id="live" aria-live="polite" aria-atomic="true">${this._liveLabel()}</div> <div id="counter" class=${this._counterHidden()?"hidden":""}></div> <div id="step-dots"></div> ${this.noHint||this.presenterActive?"":v`
4
4
  <div id="kb-hint">
5
5
  <button type="button" aria-label="Previous slide" title="Previous"
6
6
  @click=${()=>this._back()}>←</button
7
7
  ><button type="button" aria-label="Next slide" title="Next"
8
8
  @click=${()=>this._advance()}>→</button>
9
- ${this._has2DNav()?b`<button type="button" aria-label="Previous slide" title="Previous" @click=${()=>this._back()}>↑</button ><button type="button" aria-label="Next slide" title="Next" @click=${()=>this._advance()}>↓</button>`:""}
9
+ ${this._has2DNav()?v`<button type="button" aria-label="Previous slide" title="Previous" @click=${()=>this._back()}>↑</button ><button type="button" aria-label="Next slide" title="Next" @click=${()=>this._advance()}>↓</button>`:""}
10
10
  <span aria-hidden="true">·</span>
11
11
  <button type="button" aria-label="Slide overview" title="Overview" @click=${()=>{this.overview=!this.overview}}>O</button>
12
12
  <span aria-hidden="true">·</span>
@@ -18,5 +18,5 @@ ${t.textContent??""}
18
18
  </div>`}
19
19
  ${this._navArrows()}
20
20
  <div id="stage"><slot></slot></div>
21
- ${this.blank?b`<div id="blank" data-tone="${this.blank}" @click=${()=>{this.blank=null}}></div>`:""}
22
- `}};s.styles=it`:host{display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden;background:var(--deck-letterbox-bg,var(--deck-root-bg,var(--rik-surface-page)))}#stage{flex:none;width:calc(var(--deck-canvas-w,1920) * 1px);height:calc(var(--deck-canvas-h,1080) * 1px);transform:translate(var(--deck-pan-x,0px),var(--deck-pan-y,0px)) scale(calc(var(--deck-scale,1) * var(--deck-zoom,1)));transform-origin:center center;container-type:size}:host([fluid]) #stage,:host([unfixed]) #stage{width:100%;height:100%;transform:none}:host([data-zoomed]){cursor:grab}:host([data-zoomed][data-panning]){cursor:grabbing}#live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}#progress{position:fixed;bottom:0;left:0;height:var(--deck-root-progress-height,3px);background:var(--deck-root-progress-color,linear-gradient(90deg,var(--rik-accent),var(--rik-accent--soft)));transition:width 0.25s ease;z-index:100}#counter{position:fixed;bottom:1rem;right:1.5rem;font-size:var(--rik-font-size-xs);color:var(--deck-root-counter-color,var(--rik-text-default--faint));font-family:var(--rik-font-mono);z-index:100}:host([no-counter]) #counter{display:none}#counter.hidden{display:none}#step-dots{position:fixed;bottom:1rem;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:100}.dot{width:6px;height:6px;border-radius:50%;background:var(--deck-root-dot-bg,#d4d4d0);transition:background 0.2s}.dot.active{background:var(--deck-root-dot-active-bg,var(--rik-accent))}#kb-hint{position:fixed;bottom:1rem;left:1.5rem;display:inline-flex;align-items:center;gap:6px;font:600 0.62rem/1 var(--rik-font-mono);color:var(--deck-root-kb-hint-color,var(--rik-text-default--faint));z-index:100;opacity:0.5;transition:opacity 0.2s ease;cursor:help}#kb-hint:hover{opacity:1}#kb-hint button{background:var(--rik-surface-raised);border:1px solid var(--rik-border-default);border-bottom:2px solid var(--rik-border-default);border-radius:4px;padding:2px 6px;color:var(--rik-text-default);font:inherit;min-width:16px;text-align:center;cursor:pointer}#kb-hint button:hover{border-color:var(--rik-accent)}#kb-hint button:focus-visible,.nav-btn:focus-visible{outline:var(--rik-focus-ring--width,2px) solid var(--rik-focus-ring,currentColor);outline-offset:var(--rik-focus-ring--offset,2px)}#kb-hint .sep{opacity:0.4}#nav-arrows{position:fixed;bottom:2.4rem;right:1.5rem;display:flex;gap:4px;z-index:100;opacity:var(--deck-root-nav-opacity,0.35);transition:opacity 0.2s ease}#nav-arrows:hover{opacity:1}.nav-btn{appearance:none;cursor:pointer;width:30px;height:30px;display:grid;place-items:center;font:700 1rem/1 var(--rik-font-mono);color:var(--deck-root-nav-color,var(--rik-text-default));background:var(--deck-root-nav-bg,var(--rik-surface-raised));border:1px solid var(--rik-border-default);border-radius:6px;padding:0}.nav-btn svg{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.nav-btn:hover:not(:disabled){border-color:var(--rik-accent)}.nav-btn:disabled{opacity:0.3;cursor:default}#blank{position:fixed;inset:0;z-index:9999;cursor:pointer}#blank[data-tone="black"]{background:#000}#blank[data-tone="white"]{background:#fff}@media print{:host{display:block;position:static;height:auto;overflow:visible;background:none}#stage{display:block;width:auto;height:auto;transform:none;container-type:normal}#counter,#progress,#nav-arrows,#kb-hint,#step-dots,#blank{display:none}}`,s.ZOOM_MAX=4,s.ZOOM_STEP=1.25,s.ZOOM_WHEEL_SENSITIVITY=.002,p([E()],s.prototype,"current",2),p([E()],s.prototype,"step",2),p([E()],s.prototype,"blank",2),p([E()],s.prototype,"presenterActive",2),p([d({type:Boolean,reflect:!0})],s.prototype,"overview",2),p([d({type:Boolean,reflect:!0})],s.prototype,"fluid",2),p([d({type:Number})],s.prototype,"width",2),p([d({type:Number})],s.prototype,"height",2),p([d({type:Boolean,reflect:!0,attribute:"no-hint"})],s.prototype,"noHint",2),p([d({type:Boolean,reflect:!0,attribute:"no-arrows"})],s.prototype,"noArrows",2),p([d({type:Boolean,reflect:!0,attribute:"no-counter"})],s.prototype,"noCounter",2),p([d({type:Boolean,reflect:!0})],s.prototype,"preview",2),p([d({type:Boolean,reflect:!0,attribute:"no-zoom"})],s.prototype,"noZoom",2),p([d({type:String,reflect:!0})],s.prototype,"transition",2),p([d({type:Number,reflect:!0})],s.prototype,"autoplay",2),p([d({type:Boolean,reflect:!0})],s.prototype,"loop",2),p([d({type:Boolean,reflect:!0})],s.prototype,"swipe",2),p([d({type:String,reflect:!0,attribute:"mouse-nav"})],s.prototype,"mouseNav",2),p([d({type:String,reflect:!0})],s.prototype,"nav",2),s=p([nt("deck-root")],s);export{s as DeckRoot};
21
+ ${this.blank?v`<div id="blank" data-tone="${this.blank}" @click=${()=>{this.blank=null}}></div>`:""}
22
+ `}};s.styles=it`:host{display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden;background:var(--deck-letterbox-bg,var(--deck-root-bg,var(--rik-surface-page)))}#stage{flex:none;width:calc(var(--deck-canvas-w,1920) * 1px);height:calc(var(--deck-canvas-h,1080) * 1px);transform:translate(var(--deck-pan-x,0px),var(--deck-pan-y,0px)) scale(calc(var(--deck-scale,1) * var(--deck-zoom,1)));transform-origin:center center;container-type:size}:host([fluid]) #stage,:host([unfixed]) #stage{width:100%;height:100%;transform:none}:host([data-zoomed]){cursor:grab}:host([data-zoomed][data-panning]){cursor:grabbing}#live{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}#progress{position:fixed;bottom:0;left:0;height:var(--deck-root-progress-height,3px);background:var(--deck-root-progress-color,linear-gradient(90deg,var(--rik-accent),var(--rik-accent--soft)));transition:width 0.25s ease;z-index:100}#counter{position:fixed;bottom:1rem;right:1.5rem;font-size:var(--rik-font-size-xs);color:var(--deck-root-counter-color,var(--rik-text-default--faint));font-family:var(--rik-font-mono);z-index:100}:host([no-counter]) #counter{display:none}#counter.hidden{display:none}#step-dots{position:fixed;bottom:1rem;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:100}.dot{width:6px;height:6px;border-radius:50%;background:var(--deck-root-dot-bg,var(--rik-border-default));transition:background 0.2s}.dot.active{background:var(--deck-root-dot-active-bg,var(--rik-accent))}#kb-hint{position:fixed;bottom:1rem;left:1.5rem;display:inline-flex;align-items:center;gap:6px;font:600 0.62rem/1 var(--rik-font-mono);color:var(--deck-root-kb-hint-color,var(--rik-text-default--faint));z-index:100;opacity:0.5;transition:opacity 0.2s ease;cursor:help}#kb-hint:hover{opacity:1}#kb-hint button{background:var(--rik-surface-raised);border:1px solid var(--rik-border-default);border-bottom:2px solid var(--rik-border-default);border-radius:4px;padding:2px 6px;color:var(--rik-text-default);font:inherit;min-width:16px;text-align:center;cursor:pointer}#kb-hint button:hover{border-color:var(--rik-accent)}#kb-hint button:focus-visible,.nav-btn:focus-visible{outline:var(--rik-focus-ring--width,2px) solid var(--rik-focus-ring,currentColor);outline-offset:var(--rik-focus-ring--offset,2px)}#kb-hint .sep{opacity:0.4}#nav-arrows{position:fixed;bottom:2.4rem;right:1.5rem;display:flex;gap:4px;z-index:100;opacity:var(--deck-root-nav-opacity,0.35);transition:opacity 0.2s ease}#nav-arrows:hover{opacity:1}.nav-btn{appearance:none;cursor:pointer;width:30px;height:30px;display:grid;place-items:center;font:700 1rem/1 var(--rik-font-mono);color:var(--deck-root-nav-color,var(--rik-text-default));background:var(--deck-root-nav-bg,var(--rik-surface-raised));border:1px solid var(--rik-border-default);border-radius:6px;padding:0}.nav-btn svg{display:block;width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.nav-btn:hover:not(:disabled){border-color:var(--rik-accent)}.nav-btn:disabled{opacity:0.3;cursor:default}#blank{position:fixed;inset:0;z-index:9999;cursor:pointer}#blank[data-tone="black"]{background:#000}#blank[data-tone="white"]{background:#fff}@media print{:host{display:block;position:static;height:auto;overflow:visible;background:none}#stage{display:block;width:auto;height:auto;transform:none;container-type:normal}#counter,#progress,#nav-arrows,#kb-hint,#step-dots,#blank{display:none}}`,s.ZOOM_MAX=4,s.ZOOM_STEP=1.25,s.ZOOM_WHEEL_SENSITIVITY=.002,p([E()],s.prototype,"current",2),p([E()],s.prototype,"step",2),p([E()],s.prototype,"blank",2),p([E()],s.prototype,"presenterActive",2),p([d({type:Boolean,reflect:!0})],s.prototype,"overview",2),p([d({type:Boolean,reflect:!0})],s.prototype,"fluid",2),p([d({type:Number})],s.prototype,"width",2),p([d({type:Number})],s.prototype,"height",2),p([d({type:Boolean,reflect:!0,attribute:"no-hint"})],s.prototype,"noHint",2),p([d({type:Boolean,reflect:!0,attribute:"no-arrows"})],s.prototype,"noArrows",2),p([d({type:Boolean,reflect:!0,attribute:"no-counter"})],s.prototype,"noCounter",2),p([d({type:Boolean,reflect:!0})],s.prototype,"preview",2),p([d({type:Boolean,reflect:!0,attribute:"no-zoom"})],s.prototype,"noZoom",2),p([d({type:String,reflect:!0})],s.prototype,"transition",2),p([d({type:Number,reflect:!0})],s.prototype,"autoplay",2),p([d({type:Boolean,reflect:!0})],s.prototype,"loop",2),p([d({type:Boolean,reflect:!0})],s.prototype,"swipe",2),p([d({type:String,reflect:!0,attribute:"mouse-nav"})],s.prototype,"mouseNav",2),p([d({type:String,reflect:!0})],s.prototype,"nav",2),s=p([nt("deck-root")],s);export{s as DeckRoot};
@@ -4,6 +4,8 @@ export declare class DeckTimeline extends LitElement {
4
4
  static styles: import("lit").CSSResult;
5
5
  /** `row` (default) or `column`. */
6
6
  direction: 'row' | 'column';
7
+ /** Row only · milestones alternate above and below the axis, each twice as wide. */
8
+ alternate: boolean;
7
9
  /** Walk the trajectory one milestone per step.
8
10
  *
9
11
  * Emphasis, not concealment · at step 0 the whole span is visible, because
@@ -12,6 +14,10 @@ export declare class DeckTimeline extends LitElement {
12
14
  connectedCallback(): void;
13
15
  /** Called by deck-root on every step change. */
14
16
  applyStep(step: number): void;
17
+ updated(): void;
18
+ /** Tell each milestone its side and column · a grid cannot count its items,
19
+ * so the index is written where the slotted rule can read it. */
20
+ private _arrange;
15
21
  render(): import("lit-html").TemplateResult<1>;
16
22
  }
17
23
  export declare class DeckMilestone extends LitElement {
@@ -1,5 +1,5 @@
1
- var g=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var a=(d,n,t,r)=>{for(var e=r>1?void 0:r?h(n,t):n,c=d.length-1,p;c>=0;c--)(p=d[c])&&(e=(r?p(n,t,e):p(e))||e);return r&&e&&g(n,t,e),e};import{LitElement as m,css as v,html as l}from"./vendor/lit.js";import{customElement as f,property as s}from"./vendor/lit.js";var u={default:"var(--rik-text-default--faint)",accent:"var(--rik-accent__text)",ok:"var(--rik-status-success__text)",warn:"var(--rik-status-warn__text)",danger:"var(--rik-status-danger__text)"},i=class extends m{constructor(){super(...arguments);this.direction="row";this.reveal=!1}connectedCallback(){if(super.connectedCallback(),!this.reveal)return;let t=this;for(;t?.parentElement&&t.parentElement.tagName.toLowerCase()!=="deck-root";)t=t.parentElement;if(!t?.parentElement)return;let r=this.querySelectorAll("deck-milestone").length,e=Number(t.getAttribute("steps")??t.getAttribute("data-steps")??"0");r>e&&t.setAttribute("data-steps",String(r))}applyStep(t){this.reveal&&this.querySelectorAll("deck-milestone").forEach((r,e)=>{r.toggleAttribute("pending",t>0&&e+1>t),r.toggleAttribute("active",e+1===t)})}render(){return l`<slot></slot>`}};i.styles=v`:host{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--deck-timeline-gap,var(--rik-space-3));position:relative;font-family:var(--rik-font-sans);padding-top:var(--rik-space-4)}:host::before{content:'';position:absolute;top:calc(var(--rik-space-4) + 0.5em);left:0;right:0;height:var(--deck-timeline-axis-width,2px);background:var(--deck-timeline-axis,var(--rik-text-default--faint))}:host([direction='column']){grid-auto-flow:row;grid-auto-columns:auto;padding-top:0;padding-left:var(--rik-space-4)}:host([direction='column'])::before{top:0;bottom:0;left:calc(var(--rik-space-4) - 1px);right:auto;width:var(--deck-timeline-axis-width,2px);height:auto}`,a([s({type:String,reflect:!0})],i.prototype,"direction",2),a([s({type:Boolean,reflect:!0})],i.prototype,"reveal",2),i=a([f("deck-timeline")],i);var o=class extends m{constructor(){super(...arguments);this.tone="default"}willUpdate(){this.style.setProperty("--_tone",u[this.tone]??u.default)}render(){return l`<span class="dot" part="dot" aria-hidden="true"></span> ${this.date?l`<span class="date" part="date">${this.date}</span>`:""}
2
- ${this.label?l`<span class="label" part="label">${this.label}</span>`:""}
3
- ${this.note?l`<span class="note" part="note">${this.note}</span>`:""}
1
+ var h=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var a=(c,s,e,r)=>{for(var t=r>1?void 0:r?f(s,e):s,l=c.length-1,p;l>=0;l--)(p=c[l])&&(t=(r?p(s,e,t):p(t))||t);return r&&t&&h(s,e,t),t};import{LitElement as u,css as g,html as d}from"./vendor/lit.js";import{customElement as v,property as n}from"./vendor/lit.js";var m={default:"var(--rik-text-default--faint)",accent:"var(--rik-accent__text)",ok:"var(--rik-status-success__text)",warn:"var(--rik-status-warn__text)",danger:"var(--rik-status-danger__text)"},i=class extends u{constructor(){super(...arguments);this.direction="row";this.alternate=!1;this.reveal=!1;this._arrange=()=>{let e=[...this.querySelectorAll("deck-milestone")],r=this.alternate&&this.direction!=="column";e.forEach((t,l)=>{r?(t.setAttribute("side",l%2?"down":"up"),t.style.setProperty("--_col",String(l+1))):(t.removeAttribute("side"),t.style.removeProperty("--_col"))}),this.style.setProperty("--_cols",String(e.length+1))}}connectedCallback(){if(super.connectedCallback(),!this.reveal)return;let e=this;for(;e?.parentElement&&e.parentElement.tagName.toLowerCase()!=="deck-root";)e=e.parentElement;if(!e?.parentElement)return;let r=this.querySelectorAll("deck-milestone").length,t=Number(e.getAttribute("steps")??e.getAttribute("data-steps")??"0");r>t&&e.setAttribute("data-steps",String(r))}applyStep(e){this.reveal&&this.querySelectorAll("deck-milestone").forEach((r,t)=>{r.toggleAttribute("pending",e>0&&t+1>e),r.toggleAttribute("active",t+1===e)})}updated(){this._arrange()}render(){return d`<slot @slotchange=${this._arrange}></slot>`}};i.styles=g`:host{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--deck-timeline-gap,var(--rik-space-3));position:relative;font-family:var(--rik-font-sans);padding-top:var(--rik-space-4)}:host::before{content:'';position:absolute;top:calc(var(--rik-space-4) + 0.5em);left:0;right:0;height:var(--deck-timeline-axis-width,2px);background:var(--deck-timeline-axis,var(--rik-text-default--faint))}:host([direction='column']){grid-auto-flow:row;grid-auto-columns:auto;padding-top:0;padding-left:var(--rik-space-4)}:host([direction='column'])::before{top:0;bottom:0;left:calc(var(--rik-space-4) - 1px);right:auto;width:var(--deck-timeline-axis-width,2px);height:auto}:host([alternate]:not([direction='column'])){grid-auto-flow:row;grid-template-columns:repeat(var(--_cols,2),minmax(0,1fr));grid-template-rows:1fr 1fr;row-gap:0;padding-top:0}:host([alternate]:not([direction='column']))::before{top:calc(50% - var(--deck-timeline-axis-width,2px) / 2)}::slotted(deck-milestone[side]){grid-column:var(--_col) / span 2}::slotted(deck-milestone[side='up']){grid-row:1;align-self:end}::slotted(deck-milestone[side='down']){grid-row:2;align-self:start}`,a([n({type:String,reflect:!0})],i.prototype,"direction",2),a([n({type:Boolean,reflect:!0})],i.prototype,"alternate",2),a([n({type:Boolean,reflect:!0})],i.prototype,"reveal",2),i=a([v("deck-timeline")],i);var o=class extends u{constructor(){super(...arguments);this.tone="default"}willUpdate(){this.style.setProperty("--_tone",m[this.tone]??m.default)}render(){return d`<span class="dot" part="dot" aria-hidden="true"></span> ${this.date?d`<span class="date" part="date">${this.date}</span>`:""}
2
+ ${this.label?d`<span class="label" part="label">${this.label}</span>`:""}
3
+ ${this.note?d`<span class="note" part="note">${this.note}</span>`:""}
4
4
  <slot></slot>
5
- `}};o.styles=v`:host{display:flex;flex-direction:column;gap:var(--rik-space-1);min-width:0;transition:opacity 0.2s ease}@media (prefers-reduced-motion:reduce){:host{transition:none}}:host([pending]){opacity:var(--deck-milestone-pending-opacity,0.25)}:host([active]) .dot{transform:scale(1.6)}.dot{width:var(--deck-milestone-dot-size,1em);height:var(--deck-milestone-dot-size,1em);border-radius:var(--rik-radius-pill);background:var(--deck-milestone-dot,var(--_tone));box-shadow:0 0 0 4px var(--rik-surface-page);flex:none}.date{font-size:var(--rik-font-size-body);color:var(--deck-milestone-date-color,var(--rik-text-default--muted));font-variant-numeric:tabular-nums}.label{font-size:var(--rik-font-size-lead);font-weight:700;line-height:1.25;color:var(--deck-milestone-label-color,var(--rik-text-default))}.note{font-size:var(--rik-font-size-body);color:var(--deck-milestone-note-color,var(--rik-text-default--muted));line-height:1.35}@media print{:host{opacity:1}.dot{-webkit-print-color-adjust:exact;print-color-adjust:exact}}`,a([s({type:String})],o.prototype,"date",2),a([s({type:String})],o.prototype,"label",2),a([s({type:String})],o.prototype,"note",2),a([s({type:String,reflect:!0})],o.prototype,"tone",2),o=a([f("deck-milestone")],o);export{o as DeckMilestone,i as DeckTimeline};
5
+ `}};o.styles=g`:host{display:flex;flex-direction:column;gap:var(--rik-space-1);min-width:0;transition:opacity 0.2s ease}@media (prefers-reduced-motion:reduce){:host{transition:none}}:host([pending]){opacity:var(--deck-milestone-pending-opacity,0.25)}:host([active]) .dot{transform:scale(1.6)}.dot{width:var(--deck-milestone-dot-size,1em);height:var(--deck-milestone-dot-size,1em);border-radius:var(--rik-radius-pill);background:var(--deck-milestone-dot,var(--_tone));box-shadow:0 0 0 4px var(--rik-surface-page);flex:none}.date{font-size:var(--rik-font-size-body);color:var(--deck-milestone-date-color,var(--rik-text-default--muted));font-variant-numeric:tabular-nums}.label{font-size:var(--rik-font-size-lead);font-weight:700;line-height:1.25;color:var(--deck-milestone-label-color,var(--rik-text-default))}.note{font-size:var(--rik-font-size-body);color:var(--deck-milestone-note-color,var(--rik-text-default--muted));line-height:1.35}:host([side]){padding-block:var(--rik-space-2)}:host([side='up']) .dot{order:1;margin-bottom:calc(var(--deck-milestone-dot-size,1em) / -2 - var(--rik-space-2))}:host([side='down']) .dot{margin-top:calc(var(--deck-milestone-dot-size,1em) / -2 - var(--rik-space-2))}@media print{:host{opacity:1}.dot{-webkit-print-color-adjust:exact;print-color-adjust:exact}}`,a([n({type:String})],o.prototype,"date",2),a([n({type:String})],o.prototype,"label",2),a([n({type:String})],o.prototype,"note",2),a([n({type:String,reflect:!0})],o.prototype,"tone",2),o=a([v("deck-milestone")],o);export{o as DeckMilestone,i as DeckTimeline};
@@ -1,4 +1,4 @@
1
- var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var r=(s,i,n,o)=>{for(var t=o>1?void 0:o?f(i,n):i,d=s.length-1,l;d>=0;d--)(l=s[d])&&(t=(o?l(i,n,t):l(t))||t);return o&&t&&c(i,n,t),t};import{LitElement as m,css as h,html as v}from"./vendor/lit.js";import{customElement as u,property as a}from"./vendor/lit.js";import{css as g}from"./vendor/lit.js";var p=g`.mass{background:var(--rik-extras-mass,var(--rik-surface-inverse));color:var(--rik-extras-mass-text,var(--rik-text-inverse));padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-sm)}.statement{font-family:var(--rik-font-display,var(--rik-font-sans));font-size:var(--rik-extras-statement,var(--rik-font-size-mega));font-weight:800;line-height:0.95;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.reading{font-family:var(--rik-font-sans);font-size:var(--rik-extras-reading,var(--rik-font-size-body));font-weight:400;line-height:1.35;max-width:62ch}.quiet{color:var(--rik-extras-quiet,var(--rik-text-default--muted))}.edge{border:0;border-top:1px solid var(--rik-extras-edge,var(--rik-border-default));margin:0}@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}`;var e=class extends m{constructor(){super(...arguments);this.slide=!1}render(){return v`<div class="heading"> ${this.eyebrow?v`<span class="eyebrow" part="eyebrow">${this.eyebrow}</span>`:""}
1
+ var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var r=(s,i,n,a)=>{for(var e=a>1?void 0:a?f(i,n):i,d=s.length-1,l;d>=0;d--)(l=s[d])&&(e=(a?l(i,n,e):l(e))||e);return a&&e&&c(i,n,e),e};import{LitElement as m,css as h,html as v}from"./vendor/lit.js";import{customElement as k,property as o}from"./vendor/lit.js";import{css as g}from"./vendor/lit.js";var p=g`.mass{background:var(--rik-extras-mass,var(--rik-surface-inverse));color:var(--rik-extras-mass-text,var(--rik-text-inverse));padding:var(--rik-space-3) var(--rik-space-4);border-radius:var(--rik-radius-sm)}.statement{font-family:var(--rik-font-display,var(--rik-font-sans));font-size:var(--rik-extras-statement,var(--rik-font-size-mega));font-weight:800;line-height:0.95;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.reading{font-family:var(--rik-font-sans);font-size:var(--rik-extras-reading,var(--rik-font-size-body));font-weight:400;line-height:1.35;max-width:62ch}.quiet{color:var(--rik-extras-quiet,var(--rik-text-default--muted))}.edge{border:0;border-top:1px solid var(--rik-extras-edge,var(--rik-border-default));margin:0}@media (prefers-reduced-motion:reduce){*{transition:none !important;animation:none !important}}`;var t=class extends m{constructor(){super(...arguments);this.slide=!1}render(){return v`<div class="heading"> ${this.eyebrow?v`<span class="eyebrow" part="eyebrow">${this.eyebrow}</span>`:""}
2
2
  <div class="title" part="title"><slot name="title"></slot></div>
3
3
  <div class="lead" part="lead"><slot name="lead"></slot></div>
4
4
  </div>
@@ -6,4 +6,4 @@ var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var r=(s,i,n,o
6
6
  ${this.pivot?v`<span class="pivot reading" part="pivot" aria-hidden="true">${this.pivot}</span>`:""}
7
7
  <div class="side right" part="right"><slot name="right"></slot></div>
8
8
  <div class="footer" part="footer"><slot name="footer"></slot></div>
9
- `}};e.styles=[p,h`:host{display:grid;grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);align-items:stretch;gap:var(--deck-versus-gap,var(--rik-space-3));font-family:var(--rik-font-sans)}:host([slide]){display:none;position:absolute;inset:0;box-sizing:border-box;grid-template-columns:minmax(0,1fr) 80px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;align-content:stretch;gap:var(--rik-space-3) var(--deck-versus-gap,var(--rik-space-4));padding:var(--rik-slide-padding-y) var(--rik-slide-padding-x);overflow:hidden;background:var(--deck-versus-slide-bg,var(--rik-surface-page));color:var(--rik-text-default)}:host([slide][active]){display:grid}:host([slide]:not([pivot])){grid-template-columns:1fr 1fr}.heading{display:none}:host([slide]) .heading{display:flex;grid-column:1 / -1;flex-direction:column;align-items:flex-start;gap:var(--rik-space-2);min-width:0}.eyebrow{color:var(--deck-versus-eyebrow-color,var(--rik-accent__text));font-size:var(--rik-font-size-body);font-weight:600}.title,.lead{min-width:0}.footer{display:none}:host([slide]) .footer{display:block;grid-column:1 / -1;grid-row:3;margin-top:var(--deck-versus-footer-gap,var(--rik-space-3));font-family:var(--rik-font-sans);font-size:var(--rik-font-size-body);color:var(--rik-text-default--muted);line-height:1.5}:host([slide]) .side,:host([slide]) .pivot{grid-row:2;min-height:0}:host([slide]) .side{display:flex;flex-direction:column;justify-content:var(--deck-versus-side-align,center);overflow:hidden;padding-block:var(--rik-space-4)}:host(:not([pivot])){grid-template-columns:1fr 1fr}.side{min-width:0;padding:var(--rik-space-4) 0;border-block:var(--deck-versus-rule-width,2px) solid var(--deck-versus-rule,var(--rik-text-default--faint));transition:border-color 0.2s ease,color 0.2s ease}:host([winner='left']) .side.left,:host([winner='right']) .side.right{border-top-color:var(--deck-versus-winner-rule,var(--rik-accent))}:host([winner='right']) .side.left,:host([winner='left']) .side.right{color:var(--deck-versus-loser-color,var(--rik-text-default--faint))}:host([winner='right']) .side.left ::slotted(*),:host([winner='left']) .side.right ::slotted(*){color:inherit}.pivot{position:relative;display:grid;place-items:center;align-self:stretch;color:var(--deck-versus-pivot-color,var(--rik-accent--strong));font:800 var(--deck-versus-pivot-size,var(--rik-font-size-sm))/1 var(--rik-font-display);text-align:center;isolation:isolate}.pivot::before{content:'';position:absolute;inset-block:0;left:50%;width:1px;background:var(--deck-versus-rule,var(--rik-border-default));z-index:-2}.pivot::after{content:'';position:absolute;width:52px;height:52px;border:1px solid var(--deck-versus-rule,var(--rik-border-default));border-radius:50%;background:var(--rik-surface-page);z-index:-1}::slotted(h3){margin:0 0 var(--rik-space-2);color:var(--rik-text-default);font:800 var(--rik-font-size-h3)/1.1 var(--rik-font-display)}::slotted(p){margin:0;color:var(--rik-text-default--muted);line-height:1.5}::slotted([slot='title']){display:inline-block;margin:0;padding-bottom:var(--rik-space-2);border-bottom:3px solid var(--rik-accent);color:var(--rik-text-default);font:800 var(--rik-font-size-h1)/1.1 var(--rik-font-display);letter-spacing:-0.022em}::slotted([slot='lead']){max-width:75ch;margin:0;color:var(--rik-text-default--muted);font-size:var(--rik-font-size-lead);line-height:1.5}@media (max-width:640px){:host,:host(:not([pivot])){grid-template-columns:1fr}:host([slide]),:host([slide]:not([pivot])){grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto minmax(0,1fr) auto}:host([slide]) .side.left{grid-row:2}:host([slide]) .pivot{grid-row:3}:host([slide]) .side.right{grid-row:4}:host([slide]) .footer{grid-row:5}.pivot{min-height:44px}.pivot::before{inset-block:50%;inset-inline:0;width:auto;height:1px}.pivot::after{width:44px;height:44px}}@media print{.side{-webkit-print-color-adjust:exact;print-color-adjust:exact}}`],r([a({type:String,reflect:!0})],e.prototype,"pivot",2),r([a({type:String,reflect:!0})],e.prototype,"winner",2),r([a({type:Boolean,reflect:!0})],e.prototype,"slide",2),r([a({type:String})],e.prototype,"eyebrow",2),e=r([u("deck-versus")],e);export{e as DeckVersus};
9
+ `}};t.styles=[p,h`:host{display:grid;grid-template-columns:minmax(0,1fr) 64px minmax(0,1fr);align-items:stretch;gap:var(--deck-versus-gap,var(--rik-space-3));font-family:var(--rik-font-sans)}:host([slide]){display:none;position:absolute;inset:0;box-sizing:border-box;grid-template-columns:minmax(0,1fr) 80px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;align-content:stretch;gap:var(--rik-space-3) var(--deck-versus-gap,var(--rik-space-4));padding:var(--rik-slide-padding-y) var(--rik-slide-padding-x);overflow:hidden;background:var(--deck-versus-slide-bg,var(--rik-surface-page));color:var(--rik-text-default)}:host([slide][active]){display:grid}:host([slide]:not([pivot])){grid-template-columns:1fr 1fr}.heading{display:none}:host([slide]) .heading{display:flex;grid-column:1 / -1;flex-direction:column;align-items:flex-start;gap:var(--rik-space-2);min-width:0}.eyebrow{color:var(--deck-versus-eyebrow-color,var(--rik-accent__text));font-size:var(--rik-font-size-body);font-weight:600}.title,.lead{min-width:0}.footer{display:none}:host([slide]) .footer{display:block;grid-column:1 / -1;grid-row:3;margin-top:var(--deck-versus-footer-gap,var(--rik-space-3));font-family:var(--rik-font-sans);font-size:var(--rik-font-size-body);color:var(--rik-text-default--muted);line-height:1.5}:host([slide]) .side,:host([slide]) .pivot{grid-row:2;min-height:0}:host([slide]) .side{display:flex;flex-direction:column;justify-content:var(--deck-versus-side-align,center);overflow:hidden;padding-block:var(--rik-space-4)}:host(:not([pivot])){grid-template-columns:1fr 1fr}.side{min-width:0;padding:var(--rik-space-4) 0;border-block:var(--deck-versus-rule-width,2px) solid var(--deck-versus-rule,var(--rik-text-default--faint));transition:border-color 0.2s ease,color 0.2s ease}:host([winner='left']) .side.left,:host([winner='right']) .side.right{border-top-color:var(--deck-versus-winner-rule,var(--rik-accent))}:host([winner='right']) .side.left,:host([winner='left']) .side.right{color:var(--deck-versus-loser-color,var(--rik-text-default--faint))}:host([winner='right']) .side.left ::slotted(*),:host([winner='left']) .side.right ::slotted(*){color:inherit}.pivot{position:relative;display:grid;place-items:center;align-self:stretch;color:var(--deck-versus-pivot-color,var(--rik-accent--strong));font:800 var(--deck-versus-pivot-size,var(--rik-font-size-sm))/1 var(--rik-font-display);text-align:center;isolation:isolate}.pivot::before{content:'';position:absolute;inset-block:0;left:50%;width:1px;transform:translateX(-50%);background:var(--deck-versus-rule,var(--rik-border-default));z-index:-2}.pivot::after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:52px;height:52px;border:1px solid var(--deck-versus-rule,var(--rik-border-default));border-radius:50%;background:var(--rik-surface-page);z-index:-1}::slotted(h3){margin:0 0 var(--rik-space-2);color:var(--rik-text-default);font:800 var(--rik-font-size-h3)/1.1 var(--rik-font-display)}::slotted(p){margin:0;color:var(--rik-text-default--muted);line-height:1.5}::slotted([slot='title']){display:inline-block;margin:0;padding-bottom:var(--rik-space-2);border-bottom:3px solid var(--rik-accent);color:var(--rik-text-default);font:800 var(--rik-font-size-h1)/1.1 var(--rik-font-display);letter-spacing:-0.022em}::slotted([slot='lead']){max-width:75ch;margin:0;color:var(--rik-text-default--muted);font-size:var(--rik-font-size-lead);line-height:1.5}@media (max-width:640px){:host,:host(:not([pivot])){grid-template-columns:1fr}:host([slide]),:host([slide]:not([pivot])){grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto minmax(0,1fr) auto}:host([slide]) .side.left{grid-row:2}:host([slide]) .pivot{grid-row:3}:host([slide]) .side.right{grid-row:4}:host([slide]) .footer{grid-row:5}.pivot{min-height:44px}.pivot::before{inset-block:50% auto;inset-inline:0;width:auto;height:1px;transform:translateY(-50%)}.pivot::after{width:44px;height:44px}}@media print{.side{-webkit-print-color-adjust:exact;print-color-adjust:exact}:host([slide]){display:grid;position:relative;inset:auto;width:calc(var(--deck-canvas-w,1920) * 1px);height:calc(var(--deck-canvas-h,1080) * 1px);break-inside:avoid;break-after:page;-webkit-print-color-adjust:exact;print-color-adjust:exact}:host([slide]:last-child){break-after:auto}}`],r([o({type:String,reflect:!0})],t.prototype,"pivot",2),r([o({type:String,reflect:!0})],t.prototype,"winner",2),r([o({type:Boolean,reflect:!0})],t.prototype,"slide",2),r([o({type:String})],t.prototype,"eyebrow",2),t=r([k("deck-versus")],t);export{t as DeckVersus};
package/dist/index.d.ts CHANGED
@@ -1,37 +1,37 @@
1
- import './runtime/deck-root.js';
2
- import './runtime/deck-transition.js';
3
- import './runtime/deck-help.js';
4
- import './runtime/deck-overview.js';
5
- import './runtime/deck-presenter.js';
6
- import './runtime/deck-notes.js';
7
- import './layouts/deck-cover.js';
8
- import './layouts/deck-section.js';
9
- import './layouts/deck-feature.js';
10
- import './layouts/deck-split.js';
11
- import './layouts/deck-feature-cards.js';
12
- import './layouts/deck-photo.js';
13
- import './layouts/deck-takeaway.js';
14
- import './layouts/deck-bento.js';
15
- import './molecules/deck-callout.js';
16
- import './molecules/deck-card.js';
17
- import './molecules/deck-md.js';
18
- import './molecules/deck-mermaid.js';
19
- import './molecules/deck-stat.js';
20
- import './molecules/deck-metric.js';
21
- import './molecules/deck-tier-list.js';
22
- import './molecules/deck-step-list.js';
23
- import './molecules/deck-shortcut.js';
24
- import './molecules/deck-stack.js';
25
- import './molecules/deck-grid.js';
26
- import './molecules/deck-cell.js';
27
- import './molecules/deck-point.js';
28
- import './molecules/deck-fit.js';
29
- import './molecules/deck-csv.js';
30
- import './atoms/deck-badge.js';
31
- import './atoms/deck-kicker.js';
32
- import './atoms/deck-punch.js';
33
- import './atoms/deck-code.js';
34
- import './atoms/deck-source.js';
35
- export type { DeckPlugin, DeckContext } from './runtime/deck-root.js';
36
- export type { DeckCodeHighlighter } from './atoms/deck-code.js';
37
- export { setDeckCodeHighlighter } from './atoms/deck-code-highlighter.js';
1
+ import './engine/deck-root.js';
2
+ import './engine/deck-transition.js';
3
+ import './engine/deck-help.js';
4
+ import './engine/deck-overview.js';
5
+ import './engine/deck-presenter.js';
6
+ import './engine/deck-notes.js';
7
+ import './layout/deck-cover.js';
8
+ import './layout/deck-section.js';
9
+ import './layout/deck-feature.js';
10
+ import './layout/deck-split.js';
11
+ import './layout/deck-feature-cards.js';
12
+ import './layout/deck-photo.js';
13
+ import './layout/deck-takeaway.js';
14
+ import './structure/deck-bento.js';
15
+ import './structure/deck-cell.js';
16
+ import './structure/deck-point.js';
17
+ import './structure/deck-grid.js';
18
+ import './structure/deck-stack.js';
19
+ import './structure/deck-card.js';
20
+ import './structure/deck-source.js';
21
+ import './text/deck-md.js';
22
+ import './text/deck-callout.js';
23
+ import './text/deck-fit.js';
24
+ import './text/deck-badge.js';
25
+ import './text/deck-kicker.js';
26
+ import './text/deck-punch.js';
27
+ import './data/deck-stat.js';
28
+ import './data/deck-metric.js';
29
+ import './data/deck-tier-list.js';
30
+ import './data/deck-step-list.js';
31
+ import './data/deck-shortcut.js';
32
+ import './data/deck-csv.js';
33
+ import './media/deck-code.js';
34
+ import './media/deck-mermaid.js';
35
+ export type { DeckPlugin, DeckContext } from './engine/deck-root.js';
36
+ export type { DeckCodeHighlighter } from './media/deck-code.js';
37
+ export { setDeckCodeHighlighter } from './media/deck-code-highlighter.js';