2023-03-01 09:25:02 +00:00
var _ _create = Object . create ;
var _ _defProp = Object . defineProperty ;
var _ _getOwnPropDesc = Object . getOwnPropertyDescriptor ;
var _ _getOwnPropNames = Object . getOwnPropertyNames ;
var _ _getProtoOf = Object . getPrototypeOf ;
var _ _hasOwnProp = Object . prototype . hasOwnProperty ;
var _ _markAsModule = ( target ) => _ _defProp ( target , "__esModule" , { value : true } ) ;
var _ _export = ( target , all ) => {
_ _markAsModule ( target ) ;
for ( var name in all )
_ _defProp ( target , name , { get : all [ name ] , enumerable : true } ) ;
} ;
var _ _reExport = ( target , module2 , desc ) => {
if ( module2 && typeof module2 === "object" || typeof module2 === "function" ) {
for ( let key of _ _getOwnPropNames ( module2 ) )
if ( ! _ _hasOwnProp . call ( target , key ) && key !== "default" )
_ _defProp ( target , key , { get : ( ) => module2 [ key ] , enumerable : ! ( desc = _ _getOwnPropDesc ( module2 , key ) ) || desc . enumerable } ) ;
}
return target ;
} ;
var _ _toModule = ( module2 ) => {
return _ _reExport ( _ _markAsModule ( _ _defProp ( module2 != null ? _ _create ( _ _getProtoOf ( module2 ) ) : { } , "default" , module2 && module2 . _ _esModule && "default" in module2 ? { get : ( ) => module2 . default , enumerable : true } : { value : module2 , enumerable : true } ) ) , module2 ) ;
} ;
var _ _async = ( _ _this , _ _arguments , generator ) => {
return new Promise ( ( resolve , reject ) => {
var fulfilled = ( value ) => {
try {
step ( generator . next ( value ) ) ;
} catch ( e ) {
reject ( e ) ;
}
} ;
var rejected = ( value ) => {
try {
step ( generator . throw ( value ) ) ;
} catch ( e ) {
reject ( e ) ;
}
} ;
var step = ( x ) => x . done ? resolve ( x . value ) : Promise . resolve ( x . value ) . then ( fulfilled , rejected ) ;
step ( ( generator = generator . apply ( _ _this , _ _arguments ) ) . next ( ) ) ;
} ) ;
} ;
// src/main.ts
_ _export ( exports , {
default : ( ) => Homepage
} ) ;
var import _obsidian3 = _ _toModule ( require ( "obsidian" ) ) ;
// src/settings.ts
var import _obsidian2 = _ _toModule ( require ( "obsidian" ) ) ;
// src/suggest.ts
var import _obsidian = _ _toModule ( require ( "obsidian" ) ) ;
// node_modules/@popperjs/core/lib/enums.js
var top = "top" ;
var bottom = "bottom" ;
var right = "right" ;
var left = "left" ;
var auto = "auto" ;
var basePlacements = [ top , bottom , right , left ] ;
var start = "start" ;
var end = "end" ;
var clippingParents = "clippingParents" ;
var viewport = "viewport" ;
var popper = "popper" ;
var reference = "reference" ;
var variationPlacements = /* @__PURE__ */ basePlacements . reduce ( function ( acc , placement ) {
return acc . concat ( [ placement + "-" + start , placement + "-" + end ] ) ;
} , [ ] ) ;
var placements = /* @__PURE__ */ [ ] . concat ( basePlacements , [ auto ] ) . reduce ( function ( acc , placement ) {
return acc . concat ( [ placement , placement + "-" + start , placement + "-" + end ] ) ;
} , [ ] ) ;
var beforeRead = "beforeRead" ;
var read = "read" ;
var afterRead = "afterRead" ;
var beforeMain = "beforeMain" ;
var main = "main" ;
var afterMain = "afterMain" ;
var beforeWrite = "beforeWrite" ;
var write = "write" ;
var afterWrite = "afterWrite" ;
var modifierPhases = [ beforeRead , read , afterRead , beforeMain , main , afterMain , beforeWrite , write , afterWrite ] ;
// node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
function getNodeName ( element ) {
return element ? ( element . nodeName || "" ) . toLowerCase ( ) : null ;
}
// node_modules/@popperjs/core/lib/dom-utils/getWindow.js
function getWindow ( node ) {
if ( node == null ) {
return window ;
}
if ( node . toString ( ) !== "[object Window]" ) {
var ownerDocument = node . ownerDocument ;
return ownerDocument ? ownerDocument . defaultView || window : window ;
}
return node ;
}
// node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
function isElement ( node ) {
var OwnElement = getWindow ( node ) . Element ;
return node instanceof OwnElement || node instanceof Element ;
}
function isHTMLElement ( node ) {
var OwnElement = getWindow ( node ) . HTMLElement ;
return node instanceof OwnElement || node instanceof HTMLElement ;
}
function isShadowRoot ( node ) {
if ( typeof ShadowRoot === "undefined" ) {
return false ;
}
var OwnElement = getWindow ( node ) . ShadowRoot ;
return node instanceof OwnElement || node instanceof ShadowRoot ;
}
// node_modules/@popperjs/core/lib/modifiers/applyStyles.js
function applyStyles ( _ref ) {
var state = _ref . state ;
Object . keys ( state . elements ) . forEach ( function ( name ) {
var style = state . styles [ name ] || { } ;
var attributes = state . attributes [ name ] || { } ;
var element = state . elements [ name ] ;
if ( ! isHTMLElement ( element ) || ! getNodeName ( element ) ) {
return ;
}
Object . assign ( element . style , style ) ;
Object . keys ( attributes ) . forEach ( function ( name2 ) {
var value = attributes [ name2 ] ;
if ( value === false ) {
element . removeAttribute ( name2 ) ;
} else {
element . setAttribute ( name2 , value === true ? "" : value ) ;
}
} ) ;
} ) ;
}
function effect ( _ref2 ) {
var state = _ref2 . state ;
var initialStyles = {
popper : {
position : state . options . strategy ,
left : "0" ,
top : "0" ,
margin : "0"
} ,
arrow : {
position : "absolute"
} ,
reference : { }
} ;
Object . assign ( state . elements . popper . style , initialStyles . popper ) ;
state . styles = initialStyles ;
if ( state . elements . arrow ) {
Object . assign ( state . elements . arrow . style , initialStyles . arrow ) ;
}
return function ( ) {
Object . keys ( state . elements ) . forEach ( function ( name ) {
var element = state . elements [ name ] ;
var attributes = state . attributes [ name ] || { } ;
var styleProperties = Object . keys ( state . styles . hasOwnProperty ( name ) ? state . styles [ name ] : initialStyles [ name ] ) ;
var style = styleProperties . reduce ( function ( style2 , property ) {
style2 [ property ] = "" ;
return style2 ;
} , { } ) ;
if ( ! isHTMLElement ( element ) || ! getNodeName ( element ) ) {
return ;
}
Object . assign ( element . style , style ) ;
Object . keys ( attributes ) . forEach ( function ( attribute ) {
element . removeAttribute ( attribute ) ;
} ) ;
} ) ;
} ;
}
var applyStyles _default = {
name : "applyStyles" ,
enabled : true ,
phase : "write" ,
fn : applyStyles ,
effect ,
requires : [ "computeStyles" ]
} ;
// node_modules/@popperjs/core/lib/utils/getBasePlacement.js
function getBasePlacement ( placement ) {
return placement . split ( "-" ) [ 0 ] ;
}
// node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
function getBoundingClientRect ( element ) {
var rect = element . getBoundingClientRect ( ) ;
return {
width : rect . width ,
height : rect . height ,
top : rect . top ,
right : rect . right ,
bottom : rect . bottom ,
left : rect . left ,
x : rect . left ,
y : rect . top
} ;
}
// node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
function getLayoutRect ( element ) {
var clientRect = getBoundingClientRect ( element ) ;
var width = element . offsetWidth ;
var height = element . offsetHeight ;
if ( Math . abs ( clientRect . width - width ) <= 1 ) {
width = clientRect . width ;
}
if ( Math . abs ( clientRect . height - height ) <= 1 ) {
height = clientRect . height ;
}
return {
x : element . offsetLeft ,
y : element . offsetTop ,
width ,
height
} ;
}
// node_modules/@popperjs/core/lib/dom-utils/contains.js
function contains ( parent , child ) {
var rootNode = child . getRootNode && child . getRootNode ( ) ;
if ( parent . contains ( child ) ) {
return true ;
} else if ( rootNode && isShadowRoot ( rootNode ) ) {
var next = child ;
do {
if ( next && parent . isSameNode ( next ) ) {
return true ;
}
next = next . parentNode || next . host ;
} while ( next ) ;
}
return false ;
}
// node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
function getComputedStyle ( element ) {
return getWindow ( element ) . getComputedStyle ( element ) ;
}
// node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
function isTableElement ( element ) {
return [ "table" , "td" , "th" ] . indexOf ( getNodeName ( element ) ) >= 0 ;
}
// node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
function getDocumentElement ( element ) {
return ( ( isElement ( element ) ? element . ownerDocument : element . document ) || window . document ) . documentElement ;
}
// node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
function getParentNode ( element ) {
if ( getNodeName ( element ) === "html" ) {
return element ;
}
return element . assignedSlot || element . parentNode || ( isShadowRoot ( element ) ? element . host : null ) || getDocumentElement ( element ) ;
}
// node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
function getTrueOffsetParent ( element ) {
if ( ! isHTMLElement ( element ) || getComputedStyle ( element ) . position === "fixed" ) {
return null ;
}
return element . offsetParent ;
}
function getContainingBlock ( element ) {
var isFirefox = navigator . userAgent . toLowerCase ( ) . indexOf ( "firefox" ) !== - 1 ;
var currentNode = getParentNode ( element ) ;
while ( isHTMLElement ( currentNode ) && [ "html" , "body" ] . indexOf ( getNodeName ( currentNode ) ) < 0 ) {
var css = getComputedStyle ( currentNode ) ;
if ( css . transform !== "none" || css . perspective !== "none" || css . contain === "paint" || [ "transform" , "perspective" ] . indexOf ( css . willChange ) !== - 1 || isFirefox && css . willChange === "filter" || isFirefox && css . filter && css . filter !== "none" ) {
return currentNode ;
} else {
currentNode = currentNode . parentNode ;
}
}
return null ;
}
function getOffsetParent ( element ) {
var window2 = getWindow ( element ) ;
var offsetParent = getTrueOffsetParent ( element ) ;
while ( offsetParent && isTableElement ( offsetParent ) && getComputedStyle ( offsetParent ) . position === "static" ) {
offsetParent = getTrueOffsetParent ( offsetParent ) ;
}
if ( offsetParent && ( getNodeName ( offsetParent ) === "html" || getNodeName ( offsetParent ) === "body" && getComputedStyle ( offsetParent ) . position === "static" ) ) {
return window2 ;
}
return offsetParent || getContainingBlock ( element ) || window2 ;
}
// node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
function getMainAxisFromPlacement ( placement ) {
return [ "top" , "bottom" ] . indexOf ( placement ) >= 0 ? "x" : "y" ;
}
// node_modules/@popperjs/core/lib/utils/math.js
var max = Math . max ;
var min = Math . min ;
var round = Math . round ;
// node_modules/@popperjs/core/lib/utils/within.js
function within ( min2 , value , max2 ) {
return max ( min2 , min ( value , max2 ) ) ;
}
// node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
function getFreshSideObject ( ) {
return {
top : 0 ,
right : 0 ,
bottom : 0 ,
left : 0
} ;
}
// node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
function mergePaddingObject ( paddingObject ) {
return Object . assign ( { } , getFreshSideObject ( ) , paddingObject ) ;
}
// node_modules/@popperjs/core/lib/utils/expandToHashMap.js
function expandToHashMap ( value , keys ) {
return keys . reduce ( function ( hashMap , key ) {
hashMap [ key ] = value ;
return hashMap ;
} , { } ) ;
}
// node_modules/@popperjs/core/lib/modifiers/arrow.js
var toPaddingObject = function toPaddingObject2 ( padding , state ) {
padding = typeof padding === "function" ? padding ( Object . assign ( { } , state . rects , {
placement : state . placement
} ) ) : padding ;
return mergePaddingObject ( typeof padding !== "number" ? padding : expandToHashMap ( padding , basePlacements ) ) ;
} ;
function arrow ( _ref ) {
var _state$modifiersData$ ;
var state = _ref . state , name = _ref . name , options = _ref . options ;
var arrowElement = state . elements . arrow ;
var popperOffsets2 = state . modifiersData . popperOffsets ;
var basePlacement = getBasePlacement ( state . placement ) ;
var axis = getMainAxisFromPlacement ( basePlacement ) ;
var isVertical = [ left , right ] . indexOf ( basePlacement ) >= 0 ;
var len = isVertical ? "height" : "width" ;
if ( ! arrowElement || ! popperOffsets2 ) {
return ;
}
var paddingObject = toPaddingObject ( options . padding , state ) ;
var arrowRect = getLayoutRect ( arrowElement ) ;
var minProp = axis === "y" ? top : left ;
var maxProp = axis === "y" ? bottom : right ;
var endDiff = state . rects . reference [ len ] + state . rects . reference [ axis ] - popperOffsets2 [ axis ] - state . rects . popper [ len ] ;
var startDiff = popperOffsets2 [ axis ] - state . rects . reference [ axis ] ;
var arrowOffsetParent = getOffsetParent ( arrowElement ) ;
var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent . clientHeight || 0 : arrowOffsetParent . clientWidth || 0 : 0 ;
var centerToReference = endDiff / 2 - startDiff / 2 ;
var min2 = paddingObject [ minProp ] ;
var max2 = clientSize - arrowRect [ len ] - paddingObject [ maxProp ] ;
var center = clientSize / 2 - arrowRect [ len ] / 2 + centerToReference ;
var offset2 = within ( min2 , center , max2 ) ;
var axisProp = axis ;
state . modifiersData [ name ] = ( _state$modifiersData$ = { } , _state$modifiersData$ [ axisProp ] = offset2 , _state$modifiersData$ . centerOffset = offset2 - center , _state$modifiersData$ ) ;
}
function effect2 ( _ref2 ) {
var state = _ref2 . state , options = _ref2 . options ;
var _options$element = options . element , arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element ;
if ( arrowElement == null ) {
return ;
}
if ( typeof arrowElement === "string" ) {
arrowElement = state . elements . popper . querySelector ( arrowElement ) ;
if ( ! arrowElement ) {
return ;
}
}
if ( true ) {
if ( ! isHTMLElement ( arrowElement ) ) {
console . error ( [ 'Popper: "arrow" element must be an HTMLElement (not an SVGElement).' , "To use an SVG arrow, wrap it in an HTMLElement that will be used as" , "the arrow." ] . join ( " " ) ) ;
}
}
if ( ! contains ( state . elements . popper , arrowElement ) ) {
if ( true ) {
console . error ( [ 'Popper: "arrow" modifier\'s `element` must be a child of the popper' , "element." ] . join ( " " ) ) ;
}
return ;
}
state . elements . arrow = arrowElement ;
}
var arrow _default = {
name : "arrow" ,
enabled : true ,
phase : "main" ,
fn : arrow ,
effect : effect2 ,
requires : [ "popperOffsets" ] ,
requiresIfExists : [ "preventOverflow" ]
} ;
// node_modules/@popperjs/core/lib/modifiers/computeStyles.js
var unsetSides = {
top : "auto" ,
right : "auto" ,
bottom : "auto" ,
left : "auto"
} ;
function roundOffsetsByDPR ( _ref ) {
var x = _ref . x , y = _ref . y ;
var win = window ;
var dpr = win . devicePixelRatio || 1 ;
return {
x : round ( round ( x * dpr ) / dpr ) || 0 ,
y : round ( round ( y * dpr ) / dpr ) || 0
} ;
}
function mapToStyles ( _ref2 ) {
var _Object$assign2 ;
var popper2 = _ref2 . popper , popperRect = _ref2 . popperRect , placement = _ref2 . placement , offsets = _ref2 . offsets , position = _ref2 . position , gpuAcceleration = _ref2 . gpuAcceleration , adaptive = _ref2 . adaptive , roundOffsets = _ref2 . roundOffsets ;
var _ref3 = roundOffsets === true ? roundOffsetsByDPR ( offsets ) : typeof roundOffsets === "function" ? roundOffsets ( offsets ) : offsets , _ref3$x = _ref3 . x , x = _ref3$x === void 0 ? 0 : _ref3$x , _ref3$y = _ref3 . y , y = _ref3$y === void 0 ? 0 : _ref3$y ;
var hasX = offsets . hasOwnProperty ( "x" ) ;
var hasY = offsets . hasOwnProperty ( "y" ) ;
var sideX = left ;
var sideY = top ;
var win = window ;
if ( adaptive ) {
var offsetParent = getOffsetParent ( popper2 ) ;
var heightProp = "clientHeight" ;
var widthProp = "clientWidth" ;
if ( offsetParent === getWindow ( popper2 ) ) {
offsetParent = getDocumentElement ( popper2 ) ;
if ( getComputedStyle ( offsetParent ) . position !== "static" ) {
heightProp = "scrollHeight" ;
widthProp = "scrollWidth" ;
}
}
offsetParent = offsetParent ;
if ( placement === top ) {
sideY = bottom ;
y -= offsetParent [ heightProp ] - popperRect . height ;
y *= gpuAcceleration ? 1 : - 1 ;
}
if ( placement === left ) {
sideX = right ;
x -= offsetParent [ widthProp ] - popperRect . width ;
x *= gpuAcceleration ? 1 : - 1 ;
}
}
var commonStyles = Object . assign ( {
position
} , adaptive && unsetSides ) ;
if ( gpuAcceleration ) {
var _Object$assign ;
return Object . assign ( { } , commonStyles , ( _Object$assign = { } , _Object$assign [ sideY ] = hasY ? "0" : "" , _Object$assign [ sideX ] = hasX ? "0" : "" , _Object$assign . transform = ( win . devicePixelRatio || 1 ) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)" , _Object$assign ) ) ;
}
return Object . assign ( { } , commonStyles , ( _Object$assign2 = { } , _Object$assign2 [ sideY ] = hasY ? y + "px" : "" , _Object$assign2 [ sideX ] = hasX ? x + "px" : "" , _Object$assign2 . transform = "" , _Object$assign2 ) ) ;
}
function computeStyles ( _ref4 ) {
var state = _ref4 . state , options = _ref4 . options ;
var _options$gpuAccelerat = options . gpuAcceleration , gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat , _options$adaptive = options . adaptive , adaptive = _options$adaptive === void 0 ? true : _options$adaptive , _options$roundOffsets = options . roundOffsets , roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets ;
if ( true ) {
var transitionProperty = getComputedStyle ( state . elements . popper ) . transitionProperty || "" ;
if ( adaptive && [ "transform" , "top" , "right" , "bottom" , "left" ] . some ( function ( property ) {
return transitionProperty . indexOf ( property ) >= 0 ;
} ) ) {
console . warn ( [ "Popper: Detected CSS transitions on at least one of the following" , 'CSS properties: "transform", "top", "right", "bottom", "left".' , "\n\n" , 'Disable the "computeStyles" modifier\'s `adaptive` option to allow' , "for smooth transitions, or remove these properties from the CSS" , "transition declaration on the popper element if only transitioning" , "opacity or background-color for example." , "\n\n" , "We recommend using the popper element as a wrapper around an inner" , "element that can have any CSS property transitioned for animations." ] . join ( " " ) ) ;
}
}
var commonStyles = {
placement : getBasePlacement ( state . placement ) ,
popper : state . elements . popper ,
popperRect : state . rects . popper ,
gpuAcceleration
} ;
if ( state . modifiersData . popperOffsets != null ) {
state . styles . popper = Object . assign ( { } , state . styles . popper , mapToStyles ( Object . assign ( { } , commonStyles , {
offsets : state . modifiersData . popperOffsets ,
position : state . options . strategy ,
adaptive ,
roundOffsets
} ) ) ) ;
}
if ( state . modifiersData . arrow != null ) {
state . styles . arrow = Object . assign ( { } , state . styles . arrow , mapToStyles ( Object . assign ( { } , commonStyles , {
offsets : state . modifiersData . arrow ,
position : "absolute" ,
adaptive : false ,
roundOffsets
} ) ) ) ;
}
state . attributes . popper = Object . assign ( { } , state . attributes . popper , {
"data-popper-placement" : state . placement
} ) ;
}
var computeStyles _default = {
name : "computeStyles" ,
enabled : true ,
phase : "beforeWrite" ,
fn : computeStyles ,
data : { }
} ;
// node_modules/@popperjs/core/lib/modifiers/eventListeners.js
var passive = {
passive : true
} ;
function effect3 ( _ref ) {
var state = _ref . state , instance = _ref . instance , options = _ref . options ;
var _options$scroll = options . scroll , scroll = _options$scroll === void 0 ? true : _options$scroll , _options$resize = options . resize , resize = _options$resize === void 0 ? true : _options$resize ;
var window2 = getWindow ( state . elements . popper ) ;
var scrollParents = [ ] . concat ( state . scrollParents . reference , state . scrollParents . popper ) ;
if ( scroll ) {
scrollParents . forEach ( function ( scrollParent ) {
scrollParent . addEventListener ( "scroll" , instance . update , passive ) ;
} ) ;
}
if ( resize ) {
window2 . addEventListener ( "resize" , instance . update , passive ) ;
}
return function ( ) {
if ( scroll ) {
scrollParents . forEach ( function ( scrollParent ) {
scrollParent . removeEventListener ( "scroll" , instance . update , passive ) ;
} ) ;
}
if ( resize ) {
window2 . removeEventListener ( "resize" , instance . update , passive ) ;
}
} ;
}
var eventListeners _default = {
name : "eventListeners" ,
enabled : true ,
phase : "write" ,
fn : function fn ( ) {
} ,
effect : effect3 ,
data : { }
} ;
// node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
var hash = {
left : "right" ,
right : "left" ,
bottom : "top" ,
top : "bottom"
} ;
function getOppositePlacement ( placement ) {
return placement . replace ( /left|right|bottom|top/g , function ( matched ) {
return hash [ matched ] ;
} ) ;
}
// node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
var hash2 = {
start : "end" ,
end : "start"
} ;
function getOppositeVariationPlacement ( placement ) {
return placement . replace ( /start|end/g , function ( matched ) {
return hash2 [ matched ] ;
} ) ;
}
// node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
function getWindowScroll ( node ) {
var win = getWindow ( node ) ;
var scrollLeft = win . pageXOffset ;
var scrollTop = win . pageYOffset ;
return {
scrollLeft ,
scrollTop
} ;
}
// node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
function getWindowScrollBarX ( element ) {
return getBoundingClientRect ( getDocumentElement ( element ) ) . left + getWindowScroll ( element ) . scrollLeft ;
}
// node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
function getViewportRect ( element ) {
var win = getWindow ( element ) ;
var html = getDocumentElement ( element ) ;
var visualViewport = win . visualViewport ;
var width = html . clientWidth ;
var height = html . clientHeight ;
var x = 0 ;
var y = 0 ;
if ( visualViewport ) {
width = visualViewport . width ;
height = visualViewport . height ;
if ( ! /^((?!chrome|android).)*safari/i . test ( navigator . userAgent ) ) {
x = visualViewport . offsetLeft ;
y = visualViewport . offsetTop ;
}
}
return {
width ,
height ,
x : x + getWindowScrollBarX ( element ) ,
y
} ;
}
// node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
function getDocumentRect ( element ) {
var _element$ownerDocumen ;
var html = getDocumentElement ( element ) ;
var winScroll = getWindowScroll ( element ) ;
var body = ( _element$ownerDocumen = element . ownerDocument ) == null ? void 0 : _element$ownerDocumen . body ;
var width = max ( html . scrollWidth , html . clientWidth , body ? body . scrollWidth : 0 , body ? body . clientWidth : 0 ) ;
var height = max ( html . scrollHeight , html . clientHeight , body ? body . scrollHeight : 0 , body ? body . clientHeight : 0 ) ;
var x = - winScroll . scrollLeft + getWindowScrollBarX ( element ) ;
var y = - winScroll . scrollTop ;
if ( getComputedStyle ( body || html ) . direction === "rtl" ) {
x += max ( html . clientWidth , body ? body . clientWidth : 0 ) - width ;
}
return {
width ,
height ,
x ,
y
} ;
}
// node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
function isScrollParent ( element ) {
var _getComputedStyle = getComputedStyle ( element ) , overflow = _getComputedStyle . overflow , overflowX = _getComputedStyle . overflowX , overflowY = _getComputedStyle . overflowY ;
return /auto|scroll|overlay|hidden/ . test ( overflow + overflowY + overflowX ) ;
}
// node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
function getScrollParent ( node ) {
if ( [ "html" , "body" , "#document" ] . indexOf ( getNodeName ( node ) ) >= 0 ) {
return node . ownerDocument . body ;
}
if ( isHTMLElement ( node ) && isScrollParent ( node ) ) {
return node ;
}
return getScrollParent ( getParentNode ( node ) ) ;
}
// node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
function listScrollParents ( element , list ) {
var _element$ownerDocumen ;
if ( list === void 0 ) {
list = [ ] ;
}
var scrollParent = getScrollParent ( element ) ;
var isBody = scrollParent === ( ( _element$ownerDocumen = element . ownerDocument ) == null ? void 0 : _element$ownerDocumen . body ) ;
var win = getWindow ( scrollParent ) ;
var target = isBody ? [ win ] . concat ( win . visualViewport || [ ] , isScrollParent ( scrollParent ) ? scrollParent : [ ] ) : scrollParent ;
var updatedList = list . concat ( target ) ;
return isBody ? updatedList : updatedList . concat ( listScrollParents ( getParentNode ( target ) ) ) ;
}
// node_modules/@popperjs/core/lib/utils/rectToClientRect.js
function rectToClientRect ( rect ) {
return Object . assign ( { } , rect , {
left : rect . x ,
top : rect . y ,
right : rect . x + rect . width ,
bottom : rect . y + rect . height
} ) ;
}
// node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
function getInnerBoundingClientRect ( element ) {
var rect = getBoundingClientRect ( element ) ;
rect . top = rect . top + element . clientTop ;
rect . left = rect . left + element . clientLeft ;
rect . bottom = rect . top + element . clientHeight ;
rect . right = rect . left + element . clientWidth ;
rect . width = element . clientWidth ;
rect . height = element . clientHeight ;
rect . x = rect . left ;
rect . y = rect . top ;
return rect ;
}
function getClientRectFromMixedType ( element , clippingParent ) {
return clippingParent === viewport ? rectToClientRect ( getViewportRect ( element ) ) : isHTMLElement ( clippingParent ) ? getInnerBoundingClientRect ( clippingParent ) : rectToClientRect ( getDocumentRect ( getDocumentElement ( element ) ) ) ;
}
function getClippingParents ( element ) {
var clippingParents2 = listScrollParents ( getParentNode ( element ) ) ;
var canEscapeClipping = [ "absolute" , "fixed" ] . indexOf ( getComputedStyle ( element ) . position ) >= 0 ;
var clipperElement = canEscapeClipping && isHTMLElement ( element ) ? getOffsetParent ( element ) : element ;
if ( ! isElement ( clipperElement ) ) {
return [ ] ;
}
return clippingParents2 . filter ( function ( clippingParent ) {
return isElement ( clippingParent ) && contains ( clippingParent , clipperElement ) && getNodeName ( clippingParent ) !== "body" ;
} ) ;
}
function getClippingRect ( element , boundary , rootBoundary ) {
var mainClippingParents = boundary === "clippingParents" ? getClippingParents ( element ) : [ ] . concat ( boundary ) ;
var clippingParents2 = [ ] . concat ( mainClippingParents , [ rootBoundary ] ) ;
var firstClippingParent = clippingParents2 [ 0 ] ;
var clippingRect = clippingParents2 . reduce ( function ( accRect , clippingParent ) {
var rect = getClientRectFromMixedType ( element , clippingParent ) ;
accRect . top = max ( rect . top , accRect . top ) ;
accRect . right = min ( rect . right , accRect . right ) ;
accRect . bottom = min ( rect . bottom , accRect . bottom ) ;
accRect . left = max ( rect . left , accRect . left ) ;
return accRect ;
} , getClientRectFromMixedType ( element , firstClippingParent ) ) ;
clippingRect . width = clippingRect . right - clippingRect . left ;
clippingRect . height = clippingRect . bottom - clippingRect . top ;
clippingRect . x = clippingRect . left ;
clippingRect . y = clippingRect . top ;
return clippingRect ;
}
// node_modules/@popperjs/core/lib/utils/getVariation.js
function getVariation ( placement ) {
return placement . split ( "-" ) [ 1 ] ;
}
// node_modules/@popperjs/core/lib/utils/computeOffsets.js
function computeOffsets ( _ref ) {
var reference2 = _ref . reference , element = _ref . element , placement = _ref . placement ;
var basePlacement = placement ? getBasePlacement ( placement ) : null ;
var variation = placement ? getVariation ( placement ) : null ;
var commonX = reference2 . x + reference2 . width / 2 - element . width / 2 ;
var commonY = reference2 . y + reference2 . height / 2 - element . height / 2 ;
var offsets ;
switch ( basePlacement ) {
case top :
offsets = {
x : commonX ,
y : reference2 . y - element . height
} ;
break ;
case bottom :
offsets = {
x : commonX ,
y : reference2 . y + reference2 . height
} ;
break ;
case right :
offsets = {
x : reference2 . x + reference2 . width ,
y : commonY
} ;
break ;
case left :
offsets = {
x : reference2 . x - element . width ,
y : commonY
} ;
break ;
default :
offsets = {
x : reference2 . x ,
y : reference2 . y
} ;
}
var mainAxis = basePlacement ? getMainAxisFromPlacement ( basePlacement ) : null ;
if ( mainAxis != null ) {
var len = mainAxis === "y" ? "height" : "width" ;
switch ( variation ) {
case start :
offsets [ mainAxis ] = offsets [ mainAxis ] - ( reference2 [ len ] / 2 - element [ len ] / 2 ) ;
break ;
case end :
offsets [ mainAxis ] = offsets [ mainAxis ] + ( reference2 [ len ] / 2 - element [ len ] / 2 ) ;
break ;
default :
}
}
return offsets ;
}
// node_modules/@popperjs/core/lib/utils/detectOverflow.js
function detectOverflow ( state , options ) {
if ( options === void 0 ) {
options = { } ;
}
var _options = options , _options$placement = _options . placement , placement = _options$placement === void 0 ? state . placement : _options$placement , _options$boundary = _options . boundary , boundary = _options$boundary === void 0 ? clippingParents : _options$boundary , _options$rootBoundary = _options . rootBoundary , rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary , _options$elementConte = _options . elementContext , elementContext = _options$elementConte === void 0 ? popper : _options$elementConte , _options$altBoundary = _options . altBoundary , altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary , _options$padding = _options . padding , padding = _options$padding === void 0 ? 0 : _options$padding ;
var paddingObject = mergePaddingObject ( typeof padding !== "number" ? padding : expandToHashMap ( padding , basePlacements ) ) ;
var altContext = elementContext === popper ? reference : popper ;
var referenceElement = state . elements . reference ;
var popperRect = state . rects . popper ;
var element = state . elements [ altBoundary ? altContext : elementContext ] ;
var clippingClientRect = getClippingRect ( isElement ( element ) ? element : element . contextElement || getDocumentElement ( state . elements . popper ) , boundary , rootBoundary ) ;
var referenceClientRect = getBoundingClientRect ( referenceElement ) ;
var popperOffsets2 = computeOffsets ( {
reference : referenceClientRect ,
element : popperRect ,
strategy : "absolute" ,
placement
} ) ;
var popperClientRect = rectToClientRect ( Object . assign ( { } , popperRect , popperOffsets2 ) ) ;
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect ;
var overflowOffsets = {
top : clippingClientRect . top - elementClientRect . top + paddingObject . top ,
bottom : elementClientRect . bottom - clippingClientRect . bottom + paddingObject . bottom ,
left : clippingClientRect . left - elementClientRect . left + paddingObject . left ,
right : elementClientRect . right - clippingClientRect . right + paddingObject . right
} ;
var offsetData = state . modifiersData . offset ;
if ( elementContext === popper && offsetData ) {
var offset2 = offsetData [ placement ] ;
Object . keys ( overflowOffsets ) . forEach ( function ( key ) {
var multiply = [ right , bottom ] . indexOf ( key ) >= 0 ? 1 : - 1 ;
var axis = [ top , bottom ] . indexOf ( key ) >= 0 ? "y" : "x" ;
overflowOffsets [ key ] += offset2 [ axis ] * multiply ;
} ) ;
}
return overflowOffsets ;
}
// node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
function computeAutoPlacement ( state , options ) {
if ( options === void 0 ) {
options = { } ;
}
var _options = options , placement = _options . placement , boundary = _options . boundary , rootBoundary = _options . rootBoundary , padding = _options . padding , flipVariations = _options . flipVariations , _options$allowedAutoP = _options . allowedAutoPlacements , allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP ;
var variation = getVariation ( placement ) ;
var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements . filter ( function ( placement2 ) {
return getVariation ( placement2 ) === variation ;
} ) : basePlacements ;
var allowedPlacements = placements2 . filter ( function ( placement2 ) {
return allowedAutoPlacements . indexOf ( placement2 ) >= 0 ;
} ) ;
if ( allowedPlacements . length === 0 ) {
allowedPlacements = placements2 ;
if ( true ) {
console . error ( [ "Popper: The `allowedAutoPlacements` option did not allow any" , "placements. Ensure the `placement` option matches the variation" , "of the allowed placements." , 'For example, "auto" cannot be used to allow "bottom-start".' , 'Use "auto-start" instead.' ] . join ( " " ) ) ;
}
}
var overflows = allowedPlacements . reduce ( function ( acc , placement2 ) {
acc [ placement2 ] = detectOverflow ( state , {
placement : placement2 ,
boundary ,
rootBoundary ,
padding
} ) [ getBasePlacement ( placement2 ) ] ;
return acc ;
} , { } ) ;
return Object . keys ( overflows ) . sort ( function ( a , b ) {
return overflows [ a ] - overflows [ b ] ;
} ) ;
}
// node_modules/@popperjs/core/lib/modifiers/flip.js
function getExpandedFallbackPlacements ( placement ) {
if ( getBasePlacement ( placement ) === auto ) {
return [ ] ;
}
var oppositePlacement = getOppositePlacement ( placement ) ;
return [ getOppositeVariationPlacement ( placement ) , oppositePlacement , getOppositeVariationPlacement ( oppositePlacement ) ] ;
}
function flip ( _ref ) {
var state = _ref . state , options = _ref . options , name = _ref . name ;
if ( state . modifiersData [ name ] . _skip ) {
return ;
}
var _options$mainAxis = options . mainAxis , checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis , _options$altAxis = options . altAxis , checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis , specifiedFallbackPlacements = options . fallbackPlacements , padding = options . padding , boundary = options . boundary , rootBoundary = options . rootBoundary , altBoundary = options . altBoundary , _options$flipVariatio = options . flipVariations , flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio , allowedAutoPlacements = options . allowedAutoPlacements ;
var preferredPlacement = state . options . placement ;
var basePlacement = getBasePlacement ( preferredPlacement ) ;
var isBasePlacement = basePlacement === preferredPlacement ;
var fallbackPlacements = specifiedFallbackPlacements || ( isBasePlacement || ! flipVariations ? [ getOppositePlacement ( preferredPlacement ) ] : getExpandedFallbackPlacements ( preferredPlacement ) ) ;
var placements2 = [ preferredPlacement ] . concat ( fallbackPlacements ) . reduce ( function ( acc , placement2 ) {
return acc . concat ( getBasePlacement ( placement2 ) === auto ? computeAutoPlacement ( state , {
placement : placement2 ,
boundary ,
rootBoundary ,
padding ,
flipVariations ,
allowedAutoPlacements
} ) : placement2 ) ;
} , [ ] ) ;
var referenceRect = state . rects . reference ;
var popperRect = state . rects . popper ;
var checksMap = new Map ( ) ;
var makeFallbackChecks = true ;
var firstFittingPlacement = placements2 [ 0 ] ;
for ( var i = 0 ; i < placements2 . length ; i ++ ) {
var placement = placements2 [ i ] ;
var _basePlacement = getBasePlacement ( placement ) ;
var isStartVariation = getVariation ( placement ) === start ;
var isVertical = [ top , bottom ] . indexOf ( _basePlacement ) >= 0 ;
var len = isVertical ? "width" : "height" ;
var overflow = detectOverflow ( state , {
placement ,
boundary ,
rootBoundary ,
altBoundary ,
padding
} ) ;
var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top ;
if ( referenceRect [ len ] > popperRect [ len ] ) {
mainVariationSide = getOppositePlacement ( mainVariationSide ) ;
}
var altVariationSide = getOppositePlacement ( mainVariationSide ) ;
var checks = [ ] ;
if ( checkMainAxis ) {
checks . push ( overflow [ _basePlacement ] <= 0 ) ;
}
if ( checkAltAxis ) {
checks . push ( overflow [ mainVariationSide ] <= 0 , overflow [ altVariationSide ] <= 0 ) ;
}
if ( checks . every ( function ( check ) {
return check ;
} ) ) {
firstFittingPlacement = placement ;
makeFallbackChecks = false ;
break ;
}
checksMap . set ( placement , checks ) ;
}
if ( makeFallbackChecks ) {
var numberOfChecks = flipVariations ? 3 : 1 ;
var _loop = function _loop2 ( _i2 ) {
var fittingPlacement = placements2 . find ( function ( placement2 ) {
var checks2 = checksMap . get ( placement2 ) ;
if ( checks2 ) {
return checks2 . slice ( 0 , _i2 ) . every ( function ( check ) {
return check ;
} ) ;
}
} ) ;
if ( fittingPlacement ) {
firstFittingPlacement = fittingPlacement ;
return "break" ;
}
} ;
for ( var _i = numberOfChecks ; _i > 0 ; _i -- ) {
var _ret = _loop ( _i ) ;
if ( _ret === "break" )
break ;
}
}
if ( state . placement !== firstFittingPlacement ) {
state . modifiersData [ name ] . _skip = true ;
state . placement = firstFittingPlacement ;
state . reset = true ;
}
}
var flip _default = {
name : "flip" ,
enabled : true ,
phase : "main" ,
fn : flip ,
requiresIfExists : [ "offset" ] ,
data : {
_skip : false
}
} ;
// node_modules/@popperjs/core/lib/modifiers/hide.js
function getSideOffsets ( overflow , rect , preventedOffsets ) {
if ( preventedOffsets === void 0 ) {
preventedOffsets = {
x : 0 ,
y : 0
} ;
}
return {
top : overflow . top - rect . height - preventedOffsets . y ,
right : overflow . right - rect . width + preventedOffsets . x ,
bottom : overflow . bottom - rect . height + preventedOffsets . y ,
left : overflow . left - rect . width - preventedOffsets . x
} ;
}
function isAnySideFullyClipped ( overflow ) {
return [ top , right , bottom , left ] . some ( function ( side ) {
return overflow [ side ] >= 0 ;
} ) ;
}
function hide ( _ref ) {
var state = _ref . state , name = _ref . name ;
var referenceRect = state . rects . reference ;
var popperRect = state . rects . popper ;
var preventedOffsets = state . modifiersData . preventOverflow ;
var referenceOverflow = detectOverflow ( state , {
elementContext : "reference"
} ) ;
var popperAltOverflow = detectOverflow ( state , {
altBoundary : true
} ) ;
var referenceClippingOffsets = getSideOffsets ( referenceOverflow , referenceRect ) ;
var popperEscapeOffsets = getSideOffsets ( popperAltOverflow , popperRect , preventedOffsets ) ;
var isReferenceHidden = isAnySideFullyClipped ( referenceClippingOffsets ) ;
var hasPopperEscaped = isAnySideFullyClipped ( popperEscapeOffsets ) ;
state . modifiersData [ name ] = {
referenceClippingOffsets ,
popperEscapeOffsets ,
isReferenceHidden ,
hasPopperEscaped
} ;
state . attributes . popper = Object . assign ( { } , state . attributes . popper , {
"data-popper-reference-hidden" : isReferenceHidden ,
"data-popper-escaped" : hasPopperEscaped
} ) ;
}
var hide _default = {
name : "hide" ,
enabled : true ,
phase : "main" ,
requiresIfExists : [ "preventOverflow" ] ,
fn : hide
} ;
// node_modules/@popperjs/core/lib/modifiers/offset.js
function distanceAndSkiddingToXY ( placement , rects , offset2 ) {
var basePlacement = getBasePlacement ( placement ) ;
var invertDistance = [ left , top ] . indexOf ( basePlacement ) >= 0 ? - 1 : 1 ;
var _ref = typeof offset2 === "function" ? offset2 ( Object . assign ( { } , rects , {
placement
} ) ) : offset2 , skidding = _ref [ 0 ] , distance = _ref [ 1 ] ;
skidding = skidding || 0 ;
distance = ( distance || 0 ) * invertDistance ;
return [ left , right ] . indexOf ( basePlacement ) >= 0 ? {
x : distance ,
y : skidding
} : {
x : skidding ,
y : distance
} ;
}
function offset ( _ref2 ) {
var state = _ref2 . state , options = _ref2 . options , name = _ref2 . name ;
var _options$offset = options . offset , offset2 = _options$offset === void 0 ? [ 0 , 0 ] : _options$offset ;
var data = placements . reduce ( function ( acc , placement ) {
acc [ placement ] = distanceAndSkiddingToXY ( placement , state . rects , offset2 ) ;
return acc ;
} , { } ) ;
var _data$state$placement = data [ state . placement ] , x = _data$state$placement . x , y = _data$state$placement . y ;
if ( state . modifiersData . popperOffsets != null ) {
state . modifiersData . popperOffsets . x += x ;
state . modifiersData . popperOffsets . y += y ;
}
state . modifiersData [ name ] = data ;
}
var offset _default = {
name : "offset" ,
enabled : true ,
phase : "main" ,
requires : [ "popperOffsets" ] ,
fn : offset
} ;
// node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
function popperOffsets ( _ref ) {
var state = _ref . state , name = _ref . name ;
state . modifiersData [ name ] = computeOffsets ( {
reference : state . rects . reference ,
element : state . rects . popper ,
strategy : "absolute" ,
placement : state . placement
} ) ;
}
var popperOffsets _default = {
name : "popperOffsets" ,
enabled : true ,
phase : "read" ,
fn : popperOffsets ,
data : { }
} ;
// node_modules/@popperjs/core/lib/utils/getAltAxis.js
function getAltAxis ( axis ) {
return axis === "x" ? "y" : "x" ;
}
// node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
function preventOverflow ( _ref ) {
var state = _ref . state , options = _ref . options , name = _ref . name ;
var _options$mainAxis = options . mainAxis , checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis , _options$altAxis = options . altAxis , checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis , boundary = options . boundary , rootBoundary = options . rootBoundary , altBoundary = options . altBoundary , padding = options . padding , _options$tether = options . tether , tether = _options$tether === void 0 ? true : _options$tether , _options$tetherOffset = options . tetherOffset , tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset ;
var overflow = detectOverflow ( state , {
boundary ,
rootBoundary ,
padding ,
altBoundary
} ) ;
var basePlacement = getBasePlacement ( state . placement ) ;
var variation = getVariation ( state . placement ) ;
var isBasePlacement = ! variation ;
var mainAxis = getMainAxisFromPlacement ( basePlacement ) ;
var altAxis = getAltAxis ( mainAxis ) ;
var popperOffsets2 = state . modifiersData . popperOffsets ;
var referenceRect = state . rects . reference ;
var popperRect = state . rects . popper ;
var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset ( Object . assign ( { } , state . rects , {
placement : state . placement
} ) ) : tetherOffset ;
var data = {
x : 0 ,
y : 0
} ;
if ( ! popperOffsets2 ) {
return ;
}
if ( checkMainAxis || checkAltAxis ) {
var mainSide = mainAxis === "y" ? top : left ;
var altSide = mainAxis === "y" ? bottom : right ;
var len = mainAxis === "y" ? "height" : "width" ;
var offset2 = popperOffsets2 [ mainAxis ] ;
var min2 = popperOffsets2 [ mainAxis ] + overflow [ mainSide ] ;
var max2 = popperOffsets2 [ mainAxis ] - overflow [ altSide ] ;
var additive = tether ? - popperRect [ len ] / 2 : 0 ;
var minLen = variation === start ? referenceRect [ len ] : popperRect [ len ] ;
var maxLen = variation === start ? - popperRect [ len ] : - referenceRect [ len ] ;
var arrowElement = state . elements . arrow ;
var arrowRect = tether && arrowElement ? getLayoutRect ( arrowElement ) : {
width : 0 ,
height : 0
} ;
var arrowPaddingObject = state . modifiersData [ "arrow#persistent" ] ? state . modifiersData [ "arrow#persistent" ] . padding : getFreshSideObject ( ) ;
var arrowPaddingMin = arrowPaddingObject [ mainSide ] ;
var arrowPaddingMax = arrowPaddingObject [ altSide ] ;
var arrowLen = within ( 0 , referenceRect [ len ] , arrowRect [ len ] ) ;
var minOffset = isBasePlacement ? referenceRect [ len ] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue ;
var maxOffset = isBasePlacement ? - referenceRect [ len ] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue ;
var arrowOffsetParent = state . elements . arrow && getOffsetParent ( state . elements . arrow ) ;
var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent . clientTop || 0 : arrowOffsetParent . clientLeft || 0 : 0 ;
var offsetModifierValue = state . modifiersData . offset ? state . modifiersData . offset [ state . placement ] [ mainAxis ] : 0 ;
var tetherMin = popperOffsets2 [ mainAxis ] + minOffset - offsetModifierValue - clientOffset ;
var tetherMax = popperOffsets2 [ mainAxis ] + maxOffset - offsetModifierValue ;
if ( checkMainAxis ) {
var preventedOffset = within ( tether ? min ( min2 , tetherMin ) : min2 , offset2 , tether ? max ( max2 , tetherMax ) : max2 ) ;
popperOffsets2 [ mainAxis ] = preventedOffset ;
data [ mainAxis ] = preventedOffset - offset2 ;
}
if ( checkAltAxis ) {
var _mainSide = mainAxis === "x" ? top : left ;
var _altSide = mainAxis === "x" ? bottom : right ;
var _offset = popperOffsets2 [ altAxis ] ;
var _min = _offset + overflow [ _mainSide ] ;
var _max = _offset - overflow [ _altSide ] ;
var _preventedOffset = within ( tether ? min ( _min , tetherMin ) : _min , _offset , tether ? max ( _max , tetherMax ) : _max ) ;
popperOffsets2 [ altAxis ] = _preventedOffset ;
data [ altAxis ] = _preventedOffset - _offset ;
}
}
state . modifiersData [ name ] = data ;
}
var preventOverflow _default = {
name : "preventOverflow" ,
enabled : true ,
phase : "main" ,
fn : preventOverflow ,
requiresIfExists : [ "offset" ]
} ;
// node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
function getHTMLElementScroll ( element ) {
return {
scrollLeft : element . scrollLeft ,
scrollTop : element . scrollTop
} ;
}
// node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
function getNodeScroll ( node ) {
if ( node === getWindow ( node ) || ! isHTMLElement ( node ) ) {
return getWindowScroll ( node ) ;
} else {
return getHTMLElementScroll ( node ) ;
}
}
// node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
function getCompositeRect ( elementOrVirtualElement , offsetParent , isFixed ) {
if ( isFixed === void 0 ) {
isFixed = false ;
}
var documentElement = getDocumentElement ( offsetParent ) ;
var rect = getBoundingClientRect ( elementOrVirtualElement ) ;
var isOffsetParentAnElement = isHTMLElement ( offsetParent ) ;
var scroll = {
scrollLeft : 0 ,
scrollTop : 0
} ;
var offsets = {
x : 0 ,
y : 0
} ;
if ( isOffsetParentAnElement || ! isOffsetParentAnElement && ! isFixed ) {
if ( getNodeName ( offsetParent ) !== "body" || isScrollParent ( documentElement ) ) {
scroll = getNodeScroll ( offsetParent ) ;
}
if ( isHTMLElement ( offsetParent ) ) {
offsets = getBoundingClientRect ( offsetParent ) ;
offsets . x += offsetParent . clientLeft ;
offsets . y += offsetParent . clientTop ;
} else if ( documentElement ) {
offsets . x = getWindowScrollBarX ( documentElement ) ;
}
}
return {
x : rect . left + scroll . scrollLeft - offsets . x ,
y : rect . top + scroll . scrollTop - offsets . y ,
width : rect . width ,
height : rect . height
} ;
}
// node_modules/@popperjs/core/lib/utils/orderModifiers.js
function order ( modifiers ) {
var map = new Map ( ) ;
var visited = new Set ( ) ;
var result = [ ] ;
modifiers . forEach ( function ( modifier ) {
map . set ( modifier . name , modifier ) ;
} ) ;
function sort ( modifier ) {
visited . add ( modifier . name ) ;
var requires = [ ] . concat ( modifier . requires || [ ] , modifier . requiresIfExists || [ ] ) ;
requires . forEach ( function ( dep ) {
if ( ! visited . has ( dep ) ) {
var depModifier = map . get ( dep ) ;
if ( depModifier ) {
sort ( depModifier ) ;
}
}
} ) ;
result . push ( modifier ) ;
}
modifiers . forEach ( function ( modifier ) {
if ( ! visited . has ( modifier . name ) ) {
sort ( modifier ) ;
}
} ) ;
return result ;
}
function orderModifiers ( modifiers ) {
var orderedModifiers = order ( modifiers ) ;
return modifierPhases . reduce ( function ( acc , phase ) {
return acc . concat ( orderedModifiers . filter ( function ( modifier ) {
return modifier . phase === phase ;
} ) ) ;
} , [ ] ) ;
}
// node_modules/@popperjs/core/lib/utils/debounce.js
function debounce ( fn2 ) {
var pending ;
return function ( ) {
if ( ! pending ) {
pending = new Promise ( function ( resolve ) {
Promise . resolve ( ) . then ( function ( ) {
pending = void 0 ;
resolve ( fn2 ( ) ) ;
} ) ;
} ) ;
}
return pending ;
} ;
}
// node_modules/@popperjs/core/lib/utils/format.js
function format ( str ) {
for ( var _len = arguments . length , args = new Array ( _len > 1 ? _len - 1 : 0 ) , _key = 1 ; _key < _len ; _key ++ ) {
args [ _key - 1 ] = arguments [ _key ] ;
}
return [ ] . concat ( args ) . reduce ( function ( p , c ) {
return p . replace ( /%s/ , c ) ;
} , str ) ;
}
// node_modules/@popperjs/core/lib/utils/validateModifiers.js
var INVALID _MODIFIER _ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s' ;
var MISSING _DEPENDENCY _ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available' ;
var VALID _PROPERTIES = [ "name" , "enabled" , "phase" , "fn" , "effect" , "requires" , "options" ] ;
function validateModifiers ( modifiers ) {
modifiers . forEach ( function ( modifier ) {
Object . keys ( modifier ) . forEach ( function ( key ) {
switch ( key ) {
case "name" :
if ( typeof modifier . name !== "string" ) {
console . error ( format ( INVALID _MODIFIER _ERROR , String ( modifier . name ) , '"name"' , '"string"' , '"' + String ( modifier . name ) + '"' ) ) ;
}
break ;
case "enabled" :
if ( typeof modifier . enabled !== "boolean" ) {
console . error ( format ( INVALID _MODIFIER _ERROR , modifier . name , '"enabled"' , '"boolean"' , '"' + String ( modifier . enabled ) + '"' ) ) ;
}
case "phase" :
if ( modifierPhases . indexOf ( modifier . phase ) < 0 ) {
console . error ( format ( INVALID _MODIFIER _ERROR , modifier . name , '"phase"' , "either " + modifierPhases . join ( ", " ) , '"' + String ( modifier . phase ) + '"' ) ) ;
}
break ;
case "fn" :
if ( typeof modifier . fn !== "function" ) {
console . error ( format ( INVALID _MODIFIER _ERROR , modifier . name , '"fn"' , '"function"' , '"' + String ( modifier . fn ) + '"' ) ) ;
}
break ;
case "effect" :
if ( typeof modifier . effect !== "function" ) {
console . error ( format ( INVALID _MODIFIER _ERROR , modifier . name , '"effect"' , '"function"' , '"' + String ( modifier . fn ) + '"' ) ) ;
}
break ;
case "requires" :
if ( ! Array . isArray ( modifier . requires ) ) {
console . error ( format ( INVALID _MODIFIER _ERROR , modifier . name , '"requires"' , '"array"' , '"' + String ( modifier . requires ) + '"' ) ) ;
}
break ;
case "requiresIfExists" :
if ( ! Array . isArray ( modifier . requiresIfExists ) ) {
console . error ( format ( INVALID _MODIFIER _ERROR , modifier . name , '"requiresIfExists"' , '"array"' , '"' + String ( modifier . requiresIfExists ) + '"' ) ) ;
}
break ;
case "options" :
case "data" :
break ;
default :
console . error ( 'PopperJS: an invalid property has been provided to the "' + modifier . name + '" modifier, valid properties are ' + VALID _PROPERTIES . map ( function ( s ) {
return '"' + s + '"' ;
} ) . join ( ", " ) + '; but "' + key + '" was provided.' ) ;
}
modifier . requires && modifier . requires . forEach ( function ( requirement ) {
if ( modifiers . find ( function ( mod ) {
return mod . name === requirement ;
} ) == null ) {
console . error ( format ( MISSING _DEPENDENCY _ERROR , String ( modifier . name ) , requirement , requirement ) ) ;
}
} ) ;
} ) ;
} ) ;
}
// node_modules/@popperjs/core/lib/utils/uniqueBy.js
function uniqueBy ( arr , fn2 ) {
var identifiers = new Set ( ) ;
return arr . filter ( function ( item ) {
var identifier = fn2 ( item ) ;
if ( ! identifiers . has ( identifier ) ) {
identifiers . add ( identifier ) ;
return true ;
}
} ) ;
}
// node_modules/@popperjs/core/lib/utils/mergeByName.js
function mergeByName ( modifiers ) {
var merged = modifiers . reduce ( function ( merged2 , current ) {
var existing = merged2 [ current . name ] ;
merged2 [ current . name ] = existing ? Object . assign ( { } , existing , current , {
options : Object . assign ( { } , existing . options , current . options ) ,
data : Object . assign ( { } , existing . data , current . data )
} ) : current ;
return merged2 ;
} , { } ) ;
return Object . keys ( merged ) . map ( function ( key ) {
return merged [ key ] ;
} ) ;
}
// node_modules/@popperjs/core/lib/createPopper.js
var INVALID _ELEMENT _ERROR = "Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element." ;
var INFINITE _LOOP _ERROR = "Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash." ;
var DEFAULT _OPTIONS = {
placement : "bottom" ,
modifiers : [ ] ,
strategy : "absolute"
} ;
function areValidElements ( ) {
for ( var _len = arguments . length , args = new Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) {
args [ _key ] = arguments [ _key ] ;
}
return ! args . some ( function ( element ) {
return ! ( element && typeof element . getBoundingClientRect === "function" ) ;
} ) ;
}
function popperGenerator ( generatorOptions ) {
if ( generatorOptions === void 0 ) {
generatorOptions = { } ;
}
var _generatorOptions = generatorOptions , _generatorOptions$def = _generatorOptions . defaultModifiers , defaultModifiers2 = _generatorOptions$def === void 0 ? [ ] : _generatorOptions$def , _generatorOptions$def2 = _generatorOptions . defaultOptions , defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT _OPTIONS : _generatorOptions$def2 ;
return function createPopper2 ( reference2 , popper2 , options ) {
if ( options === void 0 ) {
options = defaultOptions ;
}
var state = {
placement : "bottom" ,
orderedModifiers : [ ] ,
options : Object . assign ( { } , DEFAULT _OPTIONS , defaultOptions ) ,
modifiersData : { } ,
elements : {
reference : reference2 ,
popper : popper2
} ,
attributes : { } ,
styles : { }
} ;
var effectCleanupFns = [ ] ;
var isDestroyed = false ;
var instance = {
state ,
setOptions : function setOptions ( options2 ) {
cleanupModifierEffects ( ) ;
state . options = Object . assign ( { } , defaultOptions , state . options , options2 ) ;
state . scrollParents = {
reference : isElement ( reference2 ) ? listScrollParents ( reference2 ) : reference2 . contextElement ? listScrollParents ( reference2 . contextElement ) : [ ] ,
popper : listScrollParents ( popper2 )
} ;
var orderedModifiers = orderModifiers ( mergeByName ( [ ] . concat ( defaultModifiers2 , state . options . modifiers ) ) ) ;
state . orderedModifiers = orderedModifiers . filter ( function ( m ) {
return m . enabled ;
} ) ;
if ( true ) {
var modifiers = uniqueBy ( [ ] . concat ( orderedModifiers , state . options . modifiers ) , function ( _ref ) {
var name = _ref . name ;
return name ;
} ) ;
validateModifiers ( modifiers ) ;
if ( getBasePlacement ( state . options . placement ) === auto ) {
var flipModifier = state . orderedModifiers . find ( function ( _ref2 ) {
var name = _ref2 . name ;
return name === "flip" ;
} ) ;
if ( ! flipModifier ) {
console . error ( [ 'Popper: "auto" placements require the "flip" modifier be' , "present and enabled to work." ] . join ( " " ) ) ;
}
}
var _getComputedStyle = getComputedStyle ( popper2 ) , marginTop = _getComputedStyle . marginTop , marginRight = _getComputedStyle . marginRight , marginBottom = _getComputedStyle . marginBottom , marginLeft = _getComputedStyle . marginLeft ;
if ( [ marginTop , marginRight , marginBottom , marginLeft ] . some ( function ( margin ) {
return parseFloat ( margin ) ;
} ) ) {
console . warn ( [ 'Popper: CSS "margin" styles cannot be used to apply padding' , "between the popper and its reference element or boundary." , "To replicate margin, use the `offset` modifier, as well as" , "the `padding` option in the `preventOverflow` and `flip`" , "modifiers." ] . join ( " " ) ) ;
}
}
runModifierEffects ( ) ;
return instance . update ( ) ;
} ,
forceUpdate : function forceUpdate ( ) {
if ( isDestroyed ) {
return ;
}
var _state$elements = state . elements , reference3 = _state$elements . reference , popper3 = _state$elements . popper ;
if ( ! areValidElements ( reference3 , popper3 ) ) {
if ( true ) {
console . error ( INVALID _ELEMENT _ERROR ) ;
}
return ;
}
state . rects = {
reference : getCompositeRect ( reference3 , getOffsetParent ( popper3 ) , state . options . strategy === "fixed" ) ,
popper : getLayoutRect ( popper3 )
} ;
state . reset = false ;
state . placement = state . options . placement ;
state . orderedModifiers . forEach ( function ( modifier ) {
return state . modifiersData [ modifier . name ] = Object . assign ( { } , modifier . data ) ;
} ) ;
var _ _debug _loops _ _ = 0 ;
for ( var index = 0 ; index < state . orderedModifiers . length ; index ++ ) {
if ( true ) {
_ _debug _loops _ _ += 1 ;
if ( _ _debug _loops _ _ > 100 ) {
console . error ( INFINITE _LOOP _ERROR ) ;
break ;
}
}
if ( state . reset === true ) {
state . reset = false ;
index = - 1 ;
continue ;
}
var _state$orderedModifie = state . orderedModifiers [ index ] , fn2 = _state$orderedModifie . fn , _state$orderedModifie2 = _state$orderedModifie . options , _options = _state$orderedModifie2 === void 0 ? { } : _state$orderedModifie2 , name = _state$orderedModifie . name ;
if ( typeof fn2 === "function" ) {
state = fn2 ( {
state ,
options : _options ,
name ,
instance
} ) || state ;
}
}
} ,
update : debounce ( function ( ) {
return new Promise ( function ( resolve ) {
instance . forceUpdate ( ) ;
resolve ( state ) ;
} ) ;
} ) ,
destroy : function destroy ( ) {
cleanupModifierEffects ( ) ;
isDestroyed = true ;
}
} ;
if ( ! areValidElements ( reference2 , popper2 ) ) {
if ( true ) {
console . error ( INVALID _ELEMENT _ERROR ) ;
}
return instance ;
}
instance . setOptions ( options ) . then ( function ( state2 ) {
if ( ! isDestroyed && options . onFirstUpdate ) {
options . onFirstUpdate ( state2 ) ;
}
} ) ;
function runModifierEffects ( ) {
state . orderedModifiers . forEach ( function ( _ref3 ) {
var name = _ref3 . name , _ref3$options = _ref3 . options , options2 = _ref3$options === void 0 ? { } : _ref3$options , effect4 = _ref3 . effect ;
if ( typeof effect4 === "function" ) {
var cleanupFn = effect4 ( {
state ,
name ,
instance ,
options : options2
} ) ;
var noopFn = function noopFn2 ( ) {
} ;
effectCleanupFns . push ( cleanupFn || noopFn ) ;
}
} ) ;
}
function cleanupModifierEffects ( ) {
effectCleanupFns . forEach ( function ( fn2 ) {
return fn2 ( ) ;
} ) ;
effectCleanupFns = [ ] ;
}
return instance ;
} ;
}
// node_modules/@popperjs/core/lib/popper.js
var defaultModifiers = [ eventListeners _default , popperOffsets _default , computeStyles _default , applyStyles _default , offset _default , flip _default , preventOverflow _default , arrow _default , hide _default ] ;
var createPopper = /* @__PURE__ */ popperGenerator ( {
defaultModifiers
} ) ;
// src/utils.ts
function trimFile ( file ) {
return file . extension == "md" ? file . path . slice ( 0 , - 3 ) : file . path ;
}
function untrimName ( name ) {
return name . endsWith ( ".canvas" ) ? name : ` ${ name } .md ` ;
}
function wrapAround ( value , size ) {
return ( value % size + size ) % size ;
}
function getDailynotesAutorun ( app ) {
let dailyNotes = app . internalPlugins . getPluginById ( "daily-notes" ) ;
return ( dailyNotes == null ? void 0 : dailyNotes . enabled ) && ( dailyNotes == null ? void 0 : dailyNotes . instance . options . autorun ) ;
}
function getDataviewPlugin ( app ) {
return app . plugins . plugins . dataview ;
}
function getWorkspacePlugin ( app ) {
return app . internalPlugins . plugins . workspaces ;
}
function getNewTabPagePlugin ( app ) {
return app . plugins . plugins [ "new-tab-default-page" ] ;
}
// src/suggest.ts
var Suggest = class {
constructor ( owner , containerEl , scope ) {
this . owner = owner ;
this . containerEl = containerEl ;
containerEl . on ( "click" , ".suggestion-item" , this . onSuggestionClick . bind ( this ) ) ;
containerEl . on ( "mousemove" , ".suggestion-item" , this . onSuggestionMouseover . bind ( this ) ) ;
scope . register ( [ ] , "ArrowUp" , ( event ) => {
if ( ! event . isComposing ) {
this . setSelectedItem ( this . selectedItem - 1 , true ) ;
return false ;
}
} ) ;
scope . register ( [ ] , "ArrowDown" , ( event ) => {
if ( ! event . isComposing ) {
this . setSelectedItem ( this . selectedItem + 1 , true ) ;
return false ;
}
} ) ;
scope . register ( [ ] , "Enter" , ( event ) => {
if ( ! event . isComposing ) {
this . useSelectedItem ( event ) ;
return false ;
}
} ) ;
}
onSuggestionClick ( event , el ) {
event . preventDefault ( ) ;
const item = this . suggestions . indexOf ( el ) ;
this . setSelectedItem ( item , false ) ;
this . useSelectedItem ( event ) ;
}
onSuggestionMouseover ( _event , el ) {
const item = this . suggestions . indexOf ( el ) ;
this . setSelectedItem ( item , false ) ;
}
setSuggestions ( values ) {
this . containerEl . empty ( ) ;
const suggestionEls = [ ] ;
values . forEach ( ( value ) => {
const suggestionEl = this . containerEl . createDiv ( "suggestion-item" ) ;
this . owner . renderSuggestion ( value , suggestionEl ) ;
suggestionEls . push ( suggestionEl ) ;
} ) ;
this . values = values ;
this . suggestions = suggestionEls ;
this . setSelectedItem ( 0 , false ) ;
}
useSelectedItem ( event ) {
const currentValue = this . values [ this . selectedItem ] ;
if ( currentValue ) {
this . owner . selectSuggestion ( currentValue , event ) ;
}
}
setSelectedItem ( selectedIndex , scrollIntoView ) {
const normalizedIndex = wrapAround ( selectedIndex , this . suggestions . length ) ;
const prevSelectedSuggestion = this . suggestions [ this . selectedItem ] ;
const selectedSuggestion = this . suggestions [ normalizedIndex ] ;
prevSelectedSuggestion == null ? void 0 : prevSelectedSuggestion . removeClass ( "is-selected" ) ;
selectedSuggestion == null ? void 0 : selectedSuggestion . addClass ( "is-selected" ) ;
this . selectedItem = normalizedIndex ;
if ( scrollIntoView ) {
selectedSuggestion . scrollIntoView ( false ) ;
}
}
} ;
var TextInputSuggest = class {
constructor ( app , inputEl ) {
this . app = app ;
this . inputEl = inputEl ;
this . scope = new import _obsidian . Scope ( ) ;
this . suggestEl = createDiv ( "suggestion-container" ) ;
const suggestion = this . suggestEl . createDiv ( "suggestion" ) ;
this . suggest = new Suggest ( this , suggestion , this . scope ) ;
this . scope . register ( [ ] , "Escape" , this . close . bind ( this ) ) ;
this . inputEl . addEventListener ( "input" , this . onInputChanged . bind ( this ) ) ;
this . inputEl . addEventListener ( "focus" , this . onInputChanged . bind ( this ) ) ;
this . inputEl . addEventListener ( "blur" , this . close . bind ( this ) ) ;
this . suggestEl . on ( "mousedown" , ".suggestion-container" , ( event ) => {
event . preventDefault ( ) ;
} ) ;
}
onInputChanged ( ) {
const inputStr = this . inputEl . value ;
const suggestions = this . getSuggestions ( inputStr ) ;
if ( suggestions . length > 0 ) {
this . suggest . setSuggestions ( suggestions ) ;
this . open ( this . app . dom . appContainerEl , this . inputEl ) ;
}
}
open ( container , inputEl ) {
this . app . keymap . pushScope ( this . scope ) ;
container . appendChild ( this . suggestEl ) ;
this . popper = createPopper ( inputEl , this . suggestEl , {
placement : "bottom-start" ,
modifiers : [
{
name : "sameWidth" ,
enabled : true ,
fn : ( { state , instance } ) => {
const targetWidth = ` ${ state . rects . reference . width + 100 } px ` ;
if ( state . styles . popper . width === targetWidth ) {
return ;
}
state . styles . popper . width = targetWidth ;
instance . update ( ) ;
} ,
phase : "beforeWrite" ,
requires : [ "computeStyles" ]
}
]
} ) ;
}
close ( ) {
this . app . keymap . popScope ( this . scope ) ;
this . suggest . setSuggestions ( [ ] ) ;
if ( this . popper )
this . popper . destroy ( ) ;
this . suggestEl . detach ( ) ;
}
} ;
// src/settings.ts
var Mode ;
( function ( Mode2 ) {
Mode2 [ "ReplaceAll" ] = "Replace all open notes" ;
Mode2 [ "ReplaceLast" ] = "Replace last note" ;
Mode2 [ "Retain" ] = "Keep open notes" ;
} ) ( Mode || ( Mode = { } ) ) ;
var View ;
( function ( View2 ) {
View2 [ "Default" ] = "Default view" ;
View2 [ "Reading" ] = "Reading view" ;
View2 [ "Source" ] = "Editing view (Source)" ;
View2 [ "LivePreview" ] = "Editing view (Live Preview)" ;
} ) ( View || ( View = { } ) ) ;
var DEFAULT = {
version : 2 ,
defaultNote : "Home" ,
useMoment : false ,
momentFormat : "YYYY-MM-DD" ,
workspace : "Home" ,
workspaceEnabled : false ,
2023-03-15 21:32:56 +00:00
openOnStartup : true ,
2023-03-01 09:25:02 +00:00
hasRibbonIcon : true ,
openMode : Mode . ReplaceAll ,
manualOpenMode : Mode . Retain ,
view : View . Default ,
revertView : true ,
refreshDataview : false ,
autoCreate : true ,
autoScroll : false ,
pin : false
} ;
var HIDDEN = "nv-workspace-hidden" ;
var HomepageSettingTab = class extends import _obsidian2 . PluginSettingTab {
constructor ( app , plugin ) {
super ( app , plugin ) ;
this . plugin = plugin ;
this . settings = plugin . settings ;
}
sanitiseNote ( value ) {
if ( value === null || value . match ( /^\s*$/ ) !== null ) {
return null ;
}
return ( 0 , import _obsidian2 . normalizePath ) ( value ) ;
}
display ( ) {
var _a ;
const workspacesMode = this . plugin . workspacesMode ( ) ;
2023-03-15 21:32:56 +00:00
const dailynotesAutorun = getDailynotesAutorun ( this . app ) ;
2023-03-01 09:25:02 +00:00
this . containerEl . empty ( ) ;
const suggestor = workspacesMode ? WorkspaceSuggest : FileSuggest ;
2023-03-15 21:32:56 +00:00
const homepageDesc = ` The name of the ${ workspacesMode ? "workspace" : "note or canvas" } to open. ` ;
2023-03-01 09:25:02 +00:00
const homepage = workspacesMode ? "workspace" : "defaultNote" ;
if ( this . plugin . settings . useMoment && ! workspacesMode ) {
2023-04-03 20:35:26 +00:00
const dateSetting = new import _obsidian2 . Setting ( this . containerEl ) . setName ( "Homepage format" ) ;
dateSetting . descEl . innerHTML += ` A valid Moment format specification determining the note or canvas to open.<br>
Surround words in < code style = "padding:0" > [ brackets ] < / c o d e > t o i n c l u d e t h e m ;
see the < a href = "https://momentjs.com/docs/#/displaying/format/" target = "_blank" rel = "noopener" >
reference < / a > f o r s y n t a x d e t a i l s . < b r > C u r r e n t l y , y o u r s p e c i f i c a t i o n w i l l p r o d u c e : ` ;
const sample = dateSetting . descEl . createEl ( "b" , { attr : { class : "u-pop" } } ) ;
dateSetting . addMomentFormat ( ( text ) => text . setDefaultFormat ( "YYYY-MM-DD" ) . setValue ( this . plugin . settings . momentFormat ) . onChange ( ( value ) => _ _async ( this , null , function * ( ) {
2023-03-01 09:25:02 +00:00
this . plugin . settings . momentFormat = value ;
yield this . plugin . saveSettings ( ) ;
2023-04-03 20:35:26 +00:00
} ) ) . setSampleEl ( sample ) ) ;
2023-03-01 09:25:02 +00:00
} else {
new import _obsidian2 . Setting ( this . containerEl ) . setName ( "Homepage" ) . setDesc ( homepageDesc ) . addText ( ( text ) => {
new suggestor ( this . app , text . inputEl ) ;
text . setPlaceholder ( DEFAULT [ homepage ] ) . setValue ( DEFAULT [ homepage ] == this . settings [ homepage ] ? "" : this . settings [ homepage ] ) . onChange ( ( value ) => _ _async ( this , null , function * ( ) {
this . settings [ homepage ] = this . sanitiseNote ( value ) || DEFAULT [ homepage ] ;
yield this . plugin . saveSettings ( ) ;
} ) ) ;
} ) ;
}
this . addToggle ( "Use date formatting" , "Open the homepage using Moment date syntax. This allows opening different homepages at different times or dates." , "useMoment" , ( _ ) => this . display ( ) ) ;
if ( ( _a = this . plugin . workspacePlugin ) == null ? void 0 : _a . enabled ) {
this . addToggle ( "Use workspaces" , "Open a workspace, instead of a note or canvas, as the homepage." , "workspaceEnabled" , ( _ ) => this . display ( ) , true ) ;
}
2023-03-15 21:32:56 +00:00
let startupSetting = this . addToggle ( "Open on startup" , "When launching Obsidian, open the homepage." , "openOnStartup" , ( _ ) => this . display ( ) , true ) ;
if ( dailynotesAutorun ) {
startupSetting . descEl . createDiv ( {
text : ` This setting has been disabled, as it isn't compatible with Daily Notes' "Open daily note on startup" functionality. To use it, disable the Daily Notes setting. ` ,
attr : { class : "mod-warning" }
} ) ;
this . disableSetting ( startupSetting . settingEl ) ;
}
startupSetting . settingEl . style . cssText += "padding-top: 30px; border-top: none !important" ;
this . addToggle ( "Use ribbon icon" , "Show a little house on the ribbon, allowing you to quickly access the homepage." , "hasRibbonIcon" , ( value ) => this . plugin . setIcon ( value ) , true ) ;
2023-03-01 09:25:02 +00:00
this . addHeading ( "Vault environment" ) ;
2023-03-15 21:32:56 +00:00
let openingSetting = this . addDropdown ( "Opening method" , "Determine how extant tabs and panes are affected on startup." , "openMode" , Mode ) ;
2023-03-01 09:25:02 +00:00
this . addDropdown ( "Manual opening method" , "Determine how extant tabs and panes are affected when opening with commands or the ribbon button." , "manualOpenMode" , Mode ) ;
this . addToggle ( "Auto-create" , "If the homepage doesn't exist, create a note with the specified name." , "autoCreate" ) ;
this . addToggle ( "Pin" , "Pin the homepage when opening." , "pin" ) ;
this . addHeading ( "Pane" ) ;
this . addDropdown ( "Homepage view" , "Choose what view to open the homepage in." , "view" , View ) ;
this . addToggle ( "Revert view on close" , "When navigating away from the homepage, restore the default view." , "revertView" , ( value ) => this . plugin . setReversion ( value ) ) ;
this . addToggle ( "Auto-scroll" , "When opening the homepage, scroll to the bottom and focus on the last line." , "autoScroll" ) ;
if ( getDataviewPlugin ( this . plugin . app ) ) {
2023-03-15 21:32:56 +00:00
this . addToggle ( "Refresh Dataview" , "Always attempt to reload Dataview views when opening the homepage." , "refreshDataview" ) . descEl . createDiv ( {
2023-03-01 09:25:02 +00:00
text : "Requires Dataview auto-refresh to be enabled." ,
attr : { class : "mod-warning" }
} ) ;
}
2023-03-15 21:32:56 +00:00
if ( workspacesMode )
Array . from ( document . getElementsByClassName ( HIDDEN ) ) . forEach ( this . disableSetting ) ;
if ( ! this . settings . openOnStartup || dailynotesAutorun )
this . disableSetting ( openingSetting . settingEl ) ;
}
disableSetting ( setting ) {
setting . setAttribute ( "style" , "opacity: .5; pointer-events: none !important;" ) ;
2023-03-01 09:25:02 +00:00
}
addHeading ( name ) {
const heading = new import _obsidian2 . Setting ( this . containerEl ) . setHeading ( ) . setName ( name ) ;
heading . settingEl . addClass ( HIDDEN ) ;
return heading ;
}
addDropdown ( name , desc , setting , source ) {
const dropdown = new import _obsidian2 . Setting ( this . containerEl ) . setName ( name ) . setDesc ( desc ) . addDropdown ( ( dropdown2 ) => _ _async ( this , null , function * ( ) {
for ( let key of Object . values ( source ) ) {
dropdown2 . addOption ( key , key ) ;
}
dropdown2 . setValue ( this . settings [ setting ] ) ;
dropdown2 . onChange ( ( option ) => _ _async ( this , null , function * ( ) {
this . settings [ setting ] = option ;
yield this . plugin . saveSettings ( ) ;
} ) ) ;
} ) ) ;
dropdown . settingEl . addClass ( HIDDEN ) ;
return dropdown ;
}
addToggle ( name , desc , setting , callback , workspaces = false ) {
const toggle = new import _obsidian2 . Setting ( this . containerEl ) . setName ( name ) . setDesc ( desc ) . addToggle ( ( toggle2 ) => toggle2 . setValue ( this . settings [ setting ] ) . onChange ( ( value ) => _ _async ( this , null , function * ( ) {
this . settings [ setting ] = value ;
yield this . plugin . saveSettings ( ) ;
if ( callback )
callback ( value ) ;
} ) ) ) ;
if ( ! workspaces )
toggle . settingEl . addClass ( HIDDEN ) ;
return toggle ;
}
} ;
var FileSuggest = class extends TextInputSuggest {
getSuggestions ( inputStr ) {
const abstractFiles = this . app . vault . getAllLoadedFiles ( ) ;
const files = [ ] ;
const inputLower = inputStr . toLowerCase ( ) ;
abstractFiles . forEach ( ( file ) => {
if ( file instanceof import _obsidian2 . TFile && [ "md" , "canvas" ] . contains ( file . extension ) && file . path . toLowerCase ( ) . contains ( inputLower ) ) {
files . push ( file ) ;
}
} ) ;
return files ;
}
renderSuggestion ( file , el ) {
if ( file . extension == "md" ) {
el . setText ( trimFile ( file ) ) ;
} else {
el . setText ( file . path . slice ( 0 , - 7 ) ) ;
el . insertAdjacentHTML ( "beforeend" , ` <div class="nav-file-tag" style="display:inline-block;vertical-align:middle">canvas</div> ` ) ;
}
}
selectSuggestion ( file ) {
this . inputEl . value = trimFile ( file ) ;
this . inputEl . trigger ( "input" ) ;
this . close ( ) ;
}
} ;
var WorkspaceSuggest = class extends TextInputSuggest {
getSuggestions ( inputStr ) {
var _a ;
const workspaces = Object . keys ( ( _a = getWorkspacePlugin ( this . app ) ) == null ? void 0 : _a . instance . workspaces ) ;
const inputLower = inputStr . toLowerCase ( ) ;
return workspaces . filter ( ( workspace ) => workspace . toLowerCase ( ) . contains ( inputLower ) ) ;
}
renderSuggestion ( workspace , el ) {
el . setText ( workspace ) ;
}
selectSuggestion ( workspace ) {
this . inputEl . value = workspace ;
this . inputEl . trigger ( "input" ) ;
this . close ( ) ;
}
} ;
// src/main.ts
var ICON = ` <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5"><path d="M10.025 21H6v-7H3v-1.5L12 3l9 9.5V14h-3v7h-4v-7h-3.975v7Z" style="fill:none;stroke:currentColor;stroke-width:2px"/></svg> ` ;
var LEAF _TYPES = [ "markdown" , "canvas" , "kanban" ] ;
var Homepage = class extends import _obsidian3 . Plugin {
constructor ( ) {
super ( ... arguments ) ;
this . lastView = null ;
this . loaded = false ;
this . executing = false ;
this . homepage = "" ;
this . openHomepage = ( ) => _ _async ( this , null , function * ( ) {
this . workspacesMode ( ) ? yield this . launchWorkspace ( ) : yield this . launchPage ( ) ;
} ) ;
this . revertView = ( ) => _ _async ( this , null , function * ( ) {
if ( ! this . loaded || this . lastView == null )
return ;
const view = this . lastView . deref ( ) ;
if ( ! view || trimFile ( view . file ) == this . homepage )
return ;
const state = view . getState ( ) ;
const config = this . app . vault . config ;
2023-04-03 20:35:26 +00:00
console . log ( state . mode , state . source ) ;
2023-03-01 09:25:02 +00:00
state . mode = config . defaultViewMode ;
state . source = ! config . livePreview ;
yield view . leaf . setViewState ( { type : "markdown" , state } ) ;
this . lastView = null ;
} ) ;
}
onload ( ) {
return _ _async ( this , null , function * ( ) {
let activeInitially = document . body . querySelector ( ".progress-bar" ) !== null ;
this . settings = Object . assign ( { } , DEFAULT , yield this . loadData ( ) ) ;
this . workspacePlugin = getWorkspacePlugin ( this . app ) ;
this . app . workspace . onLayoutReady ( ( ) => _ _async ( this , null , function * ( ) {
let ntp = getNewTabPagePlugin ( this . app ) ;
if ( ntp ) {
ntp . _checkForNewTab = ntp . checkForNewTab ;
ntp . checkForNewTab = ( e ) => _ _async ( this , null , function * ( ) {
if ( this && this . executing ) {
return ;
}
return yield ntp . _checkForNewTab ( e ) ;
} ) ;
}
2023-03-15 21:32:56 +00:00
if ( activeInitially && this . settings . openOnStartup )
2023-03-01 09:25:02 +00:00
yield this . openHomepage ( ) ;
this . loaded = true ;
} ) ) ;
( 0 , import _obsidian3 . addIcon ) ( "homepage" , ICON ) ;
this . setIcon ( this . settings . hasRibbonIcon ) ;
this . setReversion ( this . settings . revertView ) ;
this . addSettingTab ( new HomepageSettingTab ( this . app , this ) ) ;
this . addCommand ( {
id : "open-homepage" ,
name : "Open homepage" ,
callback : this . openHomepage
} ) ;
console . log ( ` Homepage: ${ this . getHomepageName ( ) } (method: ${ this . settings . openMode } , view: ${ this . settings . view } , workspaces: ${ this . settings . workspaceEnabled } ) ` ) ;
} ) ;
}
onunload ( ) {
return _ _async ( this , null , function * ( ) {
let ntp = getNewTabPagePlugin ( this . app ) ;
if ( ! ntp )
return ;
ntp . checkForNewTab = ntp . _checkForNewTab ;
} ) ;
}
saveSettings ( ) {
return _ _async ( this , null , function * ( ) {
yield this . saveData ( this . settings ) ;
} ) ;
}
setIcon ( value ) {
var _a ;
if ( value ) {
this . addRibbonIcon ( "homepage" , "Open homepage" , this . openHomepage ) . setAttribute ( "id" , "nv-homepage-icon" ) ;
} else {
( _a = document . getElementById ( "nv-homepage-icon" ) ) == null ? void 0 : _a . remove ( ) ;
}
}
setReversion ( value ) {
return _ _async ( this , null , function * ( ) {
if ( value && this . settings . view !== View . Default ) {
this . registerEvent ( this . app . workspace . on ( "layout-change" , this . revertView ) ) ;
} else {
this . app . workspace . off ( "layout-change" , this . revertView ) ;
}
} ) ;
}
launchWorkspace ( ) {
return _ _async ( this , null , function * ( ) {
var _a ;
if ( ! ( this . settings . workspace in ( ( _a = this . workspacePlugin ) == null ? void 0 : _a . instance . workspaces ) ) ) {
new import _obsidian3 . Notice ( ` Cannot find the workspace " ${ this . settings . workspace } " to use as the homepage. ` ) ;
return ;
}
this . workspacePlugin . instance . loadWorkspace ( this . settings . workspace ) ;
} ) ;
}
launchPage ( ) {
return _ _async ( this , null , function * ( ) {
const mode = this . loaded ? this . settings . manualOpenMode : this . settings . openMode ;
const nonextant = ( ) => _ _async ( this , null , function * ( ) {
return ! ( yield this . app . vault . adapter . exists ( untrimName ( this . homepage ) ) ) ;
} ) ;
const openLink = ( mode2 ) => _ _async ( this , null , function * ( ) {
return yield this . app . workspace . openLinkText ( this . homepage , "" , mode2 == Mode . Retain , { active : true } ) ;
} ) ;
this . executing = true ;
this . homepage = this . getHomepageName ( ) ;
2023-03-15 21:32:56 +00:00
if ( getDailynotesAutorun ( this . app ) && ! this . loaded ) {
2023-03-01 09:25:02 +00:00
return ;
} else if ( ! this . settings . autoCreate && ( yield nonextant ( ) ) ) {
new import _obsidian3 . Notice ( ` Homepage " ${ this . homepage } " does not exist. ` ) ;
return ;
}
if ( mode != Mode . ReplaceAll ) {
const alreadyOpened = this . getOpenedHomepages ( ) ;
if ( alreadyOpened . length > 0 ) {
this . app . workspace . setActiveLeaf ( alreadyOpened [ 0 ] ) ;
yield this . configureHomepage ( ) ;
return ;
}
} else {
if ( this . settings . pin ) {
this . getOpenedHomepages ( ) . forEach ( ( h ) => h . setPinned ( false ) ) ;
}
LEAF _TYPES . forEach ( ( i ) => this . app . workspace . detachLeavesOfType ( i ) ) ;
}
yield openLink ( mode ) ;
if ( this . app . workspace . getActiveFile ( ) == null ) {
yield openLink ( mode ) ;
}
yield this . configureHomepage ( ) ;
} ) ;
}
getHomepageName ( ) {
var homepage = this . settings . defaultNote ;
if ( this . settings . useMoment ) {
homepage = ( 0 , import _obsidian3 . moment ) ( ) . format ( this . settings . momentFormat ) ;
}
return homepage ;
}
getOpenedHomepages ( ) {
let leaves = LEAF _TYPES . flatMap ( ( i ) => this . app . workspace . getLeavesOfType ( i ) ) ;
return leaves . filter ( ( leaf ) => trimFile ( leaf . view . file ) == this . homepage ) ;
}
configureHomepage ( ) {
return _ _async ( this , null , function * ( ) {
var _a ;
this . executing = false ;
const view = this . app . workspace . getActiveViewOfType ( import _obsidian3 . MarkdownView ) ;
if ( ! view ) {
if ( this . settings . pin )
this . app . workspace . activeLeaf . setPinned ( true ) ;
return ;
}
const state = view . getState ( ) ;
2023-04-03 20:35:26 +00:00
if ( this . settings . revertView && this . loaded ) {
2023-03-01 09:25:02 +00:00
this . lastView = new WeakRef ( view ) ;
}
if ( this . settings . autoScroll ) {
const count = view . editor . lineCount ( ) ;
if ( state . mode == "preview" ) {
view . previewMode . applyScroll ( count - 4 ) ;
} else {
view . editor . setCursor ( count ) ;
view . editor . focus ( ) ;
}
}
if ( this . settings . pin )
view . leaf . setPinned ( true ) ;
if ( this . settings . view == View . Default )
return ;
switch ( this . settings . view ) {
case View . LivePreview :
case View . Source :
state . mode = "source" ;
state . source = this . settings . view != View . LivePreview ;
break ;
case View . Reading :
state . mode = "preview" ;
break ;
}
yield view . leaf . setViewState ( { type : "markdown" , state } ) ;
if ( this . loaded && this . settings . refreshDataview ) {
( _a = getDataviewPlugin ( this . app ) ) == null ? void 0 : _a . index . touch ( ) ;
}
} ) ;
}
workspacesMode ( ) {
var _a ;
return ( ( _a = this . workspacePlugin ) == null ? void 0 : _a . enabled ) && this . settings . workspaceEnabled && ! import _obsidian3 . Platform . isMobile ;
}
} ;