@quartz-community/bases-page 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/{chunk-OBABVQK6.js → chunk-4XYVHAYQ.js} +128 -56
- package/dist/chunk-4XYVHAYQ.js.map +1 -0
- package/dist/{chunk-EL2TIBZL.js → chunk-KR6MPURB.js} +16 -6
- package/dist/chunk-KR6MPURB.js.map +1 -0
- package/dist/compiler/index.d.ts +1 -1
- package/dist/compiler/index.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/index.js +10 -18
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
- package/dist/chunk-EL2TIBZL.js.map +0 -1
- package/dist/chunk-OBABVQK6.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/compiler/errors.ts","../src/compiler/compiler.ts","../src/compiler/lexer.ts","../src/compiler/parser.ts","../node_modules/preact/src/constants.js","../node_modules/preact/src/util.js","../node_modules/preact/src/options.js","../node_modules/preact/src/create-element.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/src/component.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/create-context.js","../node_modules/preact/jsx-runtime/src/index.js","../node_modules/@quartz-community/utils/node_modules/github-slugger/regex.js","../node_modules/@quartz-community/utils/node_modules/github-slugger/index.js","../node_modules/@quartz-community/utils/src/path.ts","../src/compiler/functions.ts","../src/compiler/interpreter.ts","../src/compiler/index.ts"],"names":["jumpEnd","endIndex","slice","options","vnodeId","EMPTY_ARR","createElement","type","props","children","key","ref","i","normalizedProps","arguments","length","call","defaultProps","createVNode","original","vnode","__k","__","__b","__e","__c","constructor","__v","__i","__u","Fragment","error","oldVNode","errorInfo","component","ctor","handled","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","isStaticChildren","__source","__self","slug","s","x","_","isAlpha","isDigit","t","n","y","d","H","h","m","A","a","b","isRecord","toNumber","toStringValue","isDateValue"],"mappings":"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","file":"chunk-4XYVHAYQ.js","sourcesContent":["import type { Span } from \"./tokens\";\n\nexport enum DiagnosticSeverity {\n Error = \"error\",\n Warning = \"warning\",\n Info = \"info\",\n}\n\nexport class CompilerError extends Error {\n public readonly span: Span;\n public readonly severity: DiagnosticSeverity;\n\n constructor(\n message: string,\n span: Span,\n severity: DiagnosticSeverity = DiagnosticSeverity.Error,\n ) {\n super(message);\n this.name = \"CompilerError\";\n this.span = span;\n this.severity = severity;\n }\n}\n","import type {\n BinaryExpression,\n CallExpression,\n Expression,\n IdentifierExpression,\n IndexExpression,\n ListExpression,\n LiteralExpression,\n MemberExpression,\n UnaryExpression,\n} from \"./ast\";\nimport { CompilerError } from \"./errors\";\nimport type { Instruction } from \"./ir\";\n\nconst LAZY_METHODS = new Set([\"filter\", \"map\", \"find\", \"some\", \"every\", \"flatMap\"]);\n\nexport type CompiledExpression = {\n ast: Expression;\n instructions: Instruction[];\n};\n\nclass Compiler {\n private readonly instructions: Instruction[] = [];\n\n public compile(expression: Expression): Instruction[] {\n this.compileExpression(expression);\n return this.instructions;\n }\n\n private compileExpression(expression: Expression): void {\n switch (expression.type) {\n case \"Literal\":\n this.compileLiteral(expression);\n return;\n case \"Identifier\":\n this.compileIdentifier(expression);\n return;\n case \"List\":\n this.compileList(expression);\n return;\n case \"Unary\":\n this.compileUnary(expression);\n return;\n case \"Binary\":\n this.compileBinary(expression);\n return;\n case \"Member\":\n this.compileMember(expression);\n return;\n case \"Index\":\n this.compileIndex(expression);\n return;\n case \"Call\":\n this.compileCall(expression);\n return;\n }\n }\n\n private compileLiteral(expression: LiteralExpression): void {\n this.emit({ type: \"Const\", value: expression.value });\n }\n\n private compileIdentifier(expression: IdentifierExpression): void {\n this.emit({ type: \"Ident\", name: expression.name });\n }\n\n private compileList(expression: ListExpression): void {\n for (const element of expression.elements) {\n this.compileExpression(element);\n }\n this.emit({ type: \"List\", count: expression.elements.length });\n }\n\n private compileUnary(expression: UnaryExpression): void {\n this.compileExpression(expression.argument);\n this.emit({ type: \"Unary\", operator: expression.operator });\n }\n\n private compileBinary(expression: BinaryExpression): void {\n if (expression.operator === \"&&\" || expression.operator === \"||\") {\n this.compileLogical(expression);\n return;\n }\n\n this.compileExpression(expression.left);\n this.compileExpression(expression.right);\n this.emit({ type: \"Binary\", operator: expression.operator });\n }\n\n private compileLogical(expression: BinaryExpression): void {\n const operator = expression.operator;\n this.compileExpression(expression.left);\n this.emit({ type: \"ToBool\" });\n\n if (operator === \"&&\") {\n const jumpFalse = this.emit({ type: \"JumpIfFalse\", offset: 0 });\n this.compileExpression(expression.right);\n this.emit({ type: \"ToBool\" });\n const jumpEnd = this.emit({ type: \"Jump\", offset: 0 });\n const falseIndex = this.instructions.length;\n this.emit({ type: \"Const\", value: false });\n const endIndex = this.instructions.length;\n this.patchJump(jumpFalse, falseIndex);\n this.patchJump(jumpEnd, endIndex);\n return;\n }\n\n const jumpTrue = this.emit({ type: \"JumpIfTrue\", offset: 0 });\n this.compileExpression(expression.right);\n this.emit({ type: \"ToBool\" });\n const jumpEnd = this.emit({ type: \"Jump\", offset: 0 });\n const trueIndex = this.instructions.length;\n this.emit({ type: \"Const\", value: true });\n const endIndex = this.instructions.length;\n this.patchJump(jumpTrue, trueIndex);\n this.patchJump(jumpEnd, endIndex);\n }\n\n private compileMember(expression: MemberExpression): void {\n if (\n expression.object.type === \"Identifier\" &&\n expression.object.name === \"formula\" &&\n expression.property\n ) {\n this.emit({ type: \"LoadFormula\", name: expression.property });\n return;\n }\n\n this.compileExpression(expression.object);\n this.emit({ type: \"Member\", name: expression.property });\n }\n\n private compileIndex(expression: IndexExpression): void {\n this.compileExpression(expression.object);\n this.compileExpression(expression.index);\n this.emit({ type: \"Index\" });\n }\n\n private compileCall(expression: CallExpression): void {\n if (expression.callee.type === \"Identifier\" && expression.callee.name === \"if\") {\n this.compileIfExpression(expression.args);\n return;\n }\n\n if (expression.callee.type === \"Identifier\") {\n for (const arg of expression.args) {\n this.compileExpression(arg);\n }\n this.emit({\n type: \"CallGlobal\",\n name: expression.callee.name,\n argc: expression.args.length,\n });\n return;\n }\n\n if (expression.callee.type === \"Member\") {\n if (LAZY_METHODS.has(expression.callee.property)) {\n this.compileExpression(expression.callee.object);\n const argPrograms: Instruction[][] = [];\n for (const arg of expression.args) {\n const subCompiler = new Compiler();\n argPrograms.push(subCompiler.compile(arg));\n }\n this.emit({\n type: \"CallMethodLazy\",\n name: expression.callee.property,\n argPrograms,\n });\n return;\n }\n\n this.compileExpression(expression.callee.object);\n for (const arg of expression.args) {\n this.compileExpression(arg);\n }\n this.emit({\n type: \"CallMethod\",\n name: expression.callee.property,\n argc: expression.args.length,\n });\n return;\n }\n\n throw new CompilerError(\"Unsupported call target\", expression.span);\n }\n\n private compileIfExpression(args: Expression[]): void {\n const condition = args[0];\n const whenTrue = args[1];\n const whenFalse = args[2];\n\n if (!condition) {\n this.emit({ type: \"Const\", value: undefined });\n return;\n }\n\n this.compileExpression(condition);\n this.emit({ type: \"ToBool\" });\n const jumpFalse = this.emit({ type: \"JumpIfFalse\", offset: 0 });\n\n if (whenTrue) {\n this.compileExpression(whenTrue);\n } else {\n this.emit({ type: \"Const\", value: undefined });\n }\n\n const jumpEnd = this.emit({ type: \"Jump\", offset: 0 });\n const falseIndex = this.instructions.length;\n\n if (whenFalse) {\n this.compileExpression(whenFalse);\n } else {\n this.emit({ type: \"Const\", value: undefined });\n }\n\n const endIndex = this.instructions.length;\n this.patchJump(jumpFalse, falseIndex);\n this.patchJump(jumpEnd, endIndex);\n }\n\n private emit(instruction: Instruction): number {\n this.instructions.push(instruction);\n return this.instructions.length - 1;\n }\n\n private patchJump(index: number, target: number): void {\n const instruction = this.instructions[index];\n if (!instruction) {\n throw new CompilerError(\"Invalid jump patch\", { start: 0, end: 0 });\n }\n\n if (instruction.type === \"Jump\") {\n this.instructions[index] = { ...instruction, offset: target - index };\n return;\n }\n\n if (instruction.type === \"JumpIfFalse\") {\n this.instructions[index] = { ...instruction, offset: target - index };\n return;\n }\n\n if (instruction.type === \"JumpIfTrue\") {\n this.instructions[index] = { ...instruction, offset: target - index };\n return;\n }\n\n throw new CompilerError(\"Cannot patch non-jump instruction\", { start: 0, end: 0 });\n }\n}\n\nexport function compileAst(expression: Expression): CompiledExpression {\n const compiler = new Compiler();\n const instructions = compiler.compile(expression);\n return { ast: expression, instructions };\n}\n","import { CompilerError } from \"./errors\";\nimport { TokenType } from \"./tokens\";\nimport type { Span, Token } from \"./tokens\";\n\nconst KEYWORDS = new Map<string, TokenType>([\n [\"true\", TokenType.True],\n [\"false\", TokenType.False],\n [\"null\", TokenType.Null],\n [\"and\", TokenType.And],\n [\"or\", TokenType.Or],\n [\"not\", TokenType.Not],\n]);\n\nfunction isWhitespace(ch: string): boolean {\n return ch === \" \" || ch === \"\\t\" || ch === \"\\n\" || ch === \"\\r\";\n}\n\nfunction isDigit(ch: string): boolean {\n if (!ch) return false;\n const code = ch.charCodeAt(0);\n return code >= 48 && code <= 57;\n}\n\nfunction isAlpha(ch: string): boolean {\n if (!ch) return false;\n const code = ch.charCodeAt(0);\n return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);\n}\n\nfunction isIdentifierStart(ch: string): boolean {\n return isAlpha(ch) || ch === \"_\" || ch === \"$\";\n}\n\nfunction isIdentifierPart(ch: string): boolean {\n return isIdentifierStart(ch) || isDigit(ch);\n}\n\nclass Lexer {\n private readonly input: string;\n private index = 0;\n\n constructor(input: string) {\n this.input = input;\n }\n\n public tokenize(): Token[] {\n const tokens: Token[] = [];\n\n while (!this.isAtEnd()) {\n const ch = this.peek();\n if (isWhitespace(ch)) {\n this.advance();\n continue;\n }\n\n if (isDigit(ch)) {\n tokens.push(this.readNumber());\n continue;\n }\n\n if (isIdentifierStart(ch)) {\n tokens.push(this.readIdentifier());\n continue;\n }\n\n if (ch === '\"' || ch === \"'\") {\n tokens.push(this.readString());\n continue;\n }\n\n tokens.push(this.readSymbol());\n }\n\n tokens.push({\n type: TokenType.EOF,\n value: \"\",\n span: { start: this.index, end: this.index },\n });\n\n return tokens;\n }\n\n private readNumber(): Token {\n const start = this.index;\n\n while (isDigit(this.peek())) {\n this.advance();\n }\n\n if (this.peek() === \".\" && isDigit(this.peekNext())) {\n this.advance();\n while (isDigit(this.peek())) {\n this.advance();\n }\n }\n\n const value = this.input.slice(start, this.index);\n return this.makeToken(TokenType.Number, value, start, this.index);\n }\n\n private readIdentifier(): Token {\n const start = this.index;\n while (isIdentifierPart(this.peek())) {\n this.advance();\n }\n\n const value = this.input.slice(start, this.index);\n const keyword = KEYWORDS.get(value);\n if (keyword) {\n return this.makeToken(keyword, value, start, this.index);\n }\n\n return this.makeToken(TokenType.Identifier, value, start, this.index);\n }\n\n private readString(): Token {\n const start = this.index;\n const quote = this.advance();\n let value = \"\";\n\n while (!this.isAtEnd()) {\n const ch = this.advance();\n if (ch === quote) {\n return this.makeToken(TokenType.String, value, start, this.index);\n }\n\n if (ch === \"\\\\\") {\n if (this.isAtEnd()) break;\n const escaped = this.advance();\n value += this.decodeEscape(escaped);\n continue;\n }\n\n value += ch;\n }\n\n throw new CompilerError(\"Unterminated string literal\", { start, end: this.index });\n }\n\n private readSymbol(): Token {\n const start = this.index;\n const ch = this.advance();\n\n if (ch === \"+\") return this.makeToken(TokenType.Plus, ch, start, this.index);\n if (ch === \"-\") return this.makeToken(TokenType.Minus, ch, start, this.index);\n if (ch === \"*\") return this.makeToken(TokenType.Star, ch, start, this.index);\n if (ch === \"/\") return this.makeToken(TokenType.Slash, ch, start, this.index);\n if (ch === \"%\") return this.makeToken(TokenType.Percent, ch, start, this.index);\n if (ch === \"(\") return this.makeToken(TokenType.LeftParen, ch, start, this.index);\n if (ch === \")\") return this.makeToken(TokenType.RightParen, ch, start, this.index);\n if (ch === \"[\") return this.makeToken(TokenType.LeftBracket, ch, start, this.index);\n if (ch === \"]\") return this.makeToken(TokenType.RightBracket, ch, start, this.index);\n if (ch === \",\") return this.makeToken(TokenType.Comma, ch, start, this.index);\n if (ch === \".\") return this.makeToken(TokenType.Dot, ch, start, this.index);\n\n if (ch === \"!\") {\n if (this.match(\"=\")) {\n return this.makeToken(TokenType.BangEquals, \"!=\", start, this.index);\n }\n return this.makeToken(TokenType.Bang, ch, start, this.index);\n }\n\n if (ch === \"=\") {\n if (this.match(\"=\")) {\n return this.makeToken(TokenType.EqualsEquals, \"==\", start, this.index);\n }\n throw new CompilerError(\"Unexpected '='\", { start, end: this.index });\n }\n\n if (ch === \">\") {\n if (this.match(\"=\")) {\n return this.makeToken(TokenType.GreaterEqual, \">=\", start, this.index);\n }\n return this.makeToken(TokenType.Greater, ch, start, this.index);\n }\n\n if (ch === \"<\") {\n if (this.match(\"=\")) {\n return this.makeToken(TokenType.LessEqual, \"<=\", start, this.index);\n }\n return this.makeToken(TokenType.Less, ch, start, this.index);\n }\n\n if (ch === \"&\") {\n if (this.match(\"&\")) {\n return this.makeToken(TokenType.AndAnd, \"&&\", start, this.index);\n }\n throw new CompilerError(\"Unexpected '&'\", { start, end: this.index });\n }\n\n if (ch === \"|\") {\n if (this.match(\"|\")) {\n return this.makeToken(TokenType.OrOr, \"||\", start, this.index);\n }\n throw new CompilerError(\"Unexpected '|'\", { start, end: this.index });\n }\n\n throw new CompilerError(`Unexpected character '${ch}'`, { start, end: this.index });\n }\n\n private decodeEscape(ch: string): string {\n if (ch === \"n\") return \"\\n\";\n if (ch === \"r\") return \"\\r\";\n if (ch === \"t\") return \"\\t\";\n if (ch === \"\\\\\") return \"\\\\\";\n if (ch === '\"') return '\"';\n if (ch === \"'\") return \"'\";\n return ch;\n }\n\n private makeToken(type: TokenType, value: string, start: number, end: number): Token {\n const span: Span = { start, end };\n return { type, value, span };\n }\n\n private match(expected: string): boolean {\n if (this.peek() !== expected) return false;\n this.advance();\n return true;\n }\n\n private peek(): string {\n return this.input[this.index] ?? \"\";\n }\n\n private peekNext(): string {\n return this.input[this.index + 1] ?? \"\";\n }\n\n private advance(): string {\n const ch = this.input[this.index] ?? \"\";\n this.index += 1;\n return ch;\n }\n\n private isAtEnd(): boolean {\n return this.index >= this.input.length;\n }\n}\n\nexport function lex(input: string): Token[] {\n const lexer = new Lexer(input);\n return lexer.tokenize();\n}\n","import type { Expression } from \"./ast\";\nimport { CompilerError } from \"./errors\";\nimport { TokenType } from \"./tokens\";\nimport type { Span, Token } from \"./tokens\";\nimport type { BinaryOperator, UnaryOperator } from \"./ast\";\n\nenum Precedence {\n Lowest = 0,\n Or = 1,\n And = 2,\n Equality = 3,\n Comparison = 4,\n Term = 5,\n Factor = 6,\n Unary = 7,\n Call = 8,\n}\n\nclass Parser {\n private readonly tokens: Token[];\n private index = 0;\n\n constructor(tokens: Token[]) {\n this.tokens = tokens;\n }\n\n public parseExpression(precedence: Precedence = Precedence.Lowest): Expression {\n let left = this.parsePrefix();\n\n while (!this.isAtEnd() && precedence < this.getPrecedence(this.peek())) {\n left = this.parseInfix(left);\n }\n\n return left;\n }\n\n private parsePrefix(): Expression {\n const token = this.advance();\n\n switch (token.type) {\n case TokenType.Number: {\n const value = Number(token.value);\n if (Number.isNaN(value)) {\n throw new CompilerError(\"Invalid number literal\", token.span);\n }\n return { type: \"Literal\", value, span: token.span };\n }\n case TokenType.String:\n return { type: \"Literal\", value: token.value, span: token.span };\n case TokenType.True:\n return { type: \"Literal\", value: true, span: token.span };\n case TokenType.False:\n return { type: \"Literal\", value: false, span: token.span };\n case TokenType.Null:\n return { type: \"Literal\", value: null, span: token.span };\n case TokenType.Identifier:\n return { type: \"Identifier\", name: token.value, span: token.span };\n case TokenType.Bang:\n case TokenType.Not:\n case TokenType.Minus: {\n const operator = this.toUnaryOperator(token);\n const argument = this.parseExpression(Precedence.Unary);\n const span = this.mergeSpan(token.span, argument.span);\n return { type: \"Unary\", operator, argument, span };\n }\n case TokenType.LeftParen: {\n const expression = this.parseExpression();\n this.expect(TokenType.RightParen, \"Expected ')' after expression\");\n return expression;\n }\n case TokenType.LeftBracket:\n return this.parseList(token.span);\n default:\n throw new CompilerError(\"Unexpected token\", token.span);\n }\n }\n\n private parseInfix(left: Expression): Expression {\n const token = this.peek();\n\n if (token.type === TokenType.LeftParen) {\n this.advance();\n return this.parseCall(left);\n }\n\n if (token.type === TokenType.Dot) {\n this.advance();\n return this.parseMember(left);\n }\n\n if (token.type === TokenType.LeftBracket) {\n this.advance();\n return this.parseIndex(left);\n }\n\n const operator = this.toBinaryOperator(token);\n const precedence = this.getPrecedence(token);\n this.advance();\n const right = this.parseExpression(precedence);\n const span = this.mergeSpan(left.span, right.span);\n return { type: \"Binary\", operator, left, right, span };\n }\n\n private parseCall(callee: Expression): Expression {\n const args: Expression[] = [];\n\n if (!this.check(TokenType.RightParen)) {\n do {\n args.push(this.parseExpression());\n } while (this.match(TokenType.Comma));\n }\n\n const endToken = this.expect(TokenType.RightParen, \"Expected ')' after arguments\");\n const span = this.mergeSpan(callee.span, endToken.span);\n return { type: \"Call\", callee, args, span };\n }\n\n private parseMember(object: Expression): Expression {\n const propertyToken = this.expect(TokenType.Identifier, \"Expected property name after '.'\");\n const span = this.mergeSpan(object.span, propertyToken.span);\n return { type: \"Member\", object, property: propertyToken.value, span };\n }\n\n private parseIndex(object: Expression): Expression {\n const index = this.parseExpression();\n const endToken = this.expect(TokenType.RightBracket, \"Expected ']' after index\");\n const span = this.mergeSpan(object.span, endToken.span);\n return { type: \"Index\", object, index, span };\n }\n\n private parseList(startSpan: Span): Expression {\n const elements: Expression[] = [];\n\n if (!this.check(TokenType.RightBracket)) {\n do {\n elements.push(this.parseExpression());\n } while (this.match(TokenType.Comma));\n }\n\n const endToken = this.expect(TokenType.RightBracket, \"Expected ']' after list\");\n const span = this.mergeSpan(startSpan, endToken.span);\n return { type: \"List\", elements, span };\n }\n\n private toUnaryOperator(token: Token): UnaryOperator {\n if (token.type === TokenType.Bang || token.type === TokenType.Not) return \"!\";\n if (token.type === TokenType.Minus) return \"-\";\n throw new CompilerError(\"Unsupported unary operator\", token.span);\n }\n\n private toBinaryOperator(token: Token): BinaryOperator {\n switch (token.type) {\n case TokenType.Plus:\n return \"+\";\n case TokenType.Minus:\n return \"-\";\n case TokenType.Star:\n return \"*\";\n case TokenType.Slash:\n return \"/\";\n case TokenType.Percent:\n return \"%\";\n case TokenType.EqualsEquals:\n return \"==\";\n case TokenType.BangEquals:\n return \"!=\";\n case TokenType.Greater:\n return \">\";\n case TokenType.GreaterEqual:\n return \">=\";\n case TokenType.Less:\n return \"<\";\n case TokenType.LessEqual:\n return \"<=\";\n case TokenType.AndAnd:\n case TokenType.And:\n return \"&&\";\n case TokenType.OrOr:\n case TokenType.Or:\n return \"||\";\n default:\n throw new CompilerError(\"Unsupported binary operator\", token.span);\n }\n }\n\n private getPrecedence(token: Token): Precedence {\n switch (token.type) {\n case TokenType.OrOr:\n case TokenType.Or:\n return Precedence.Or;\n case TokenType.AndAnd:\n case TokenType.And:\n return Precedence.And;\n case TokenType.EqualsEquals:\n case TokenType.BangEquals:\n return Precedence.Equality;\n case TokenType.Greater:\n case TokenType.GreaterEqual:\n case TokenType.Less:\n case TokenType.LessEqual:\n return Precedence.Comparison;\n case TokenType.Plus:\n case TokenType.Minus:\n return Precedence.Term;\n case TokenType.Star:\n case TokenType.Slash:\n case TokenType.Percent:\n return Precedence.Factor;\n case TokenType.LeftParen:\n case TokenType.LeftBracket:\n case TokenType.Dot:\n return Precedence.Call;\n default:\n return Precedence.Lowest;\n }\n }\n\n private mergeSpan(start: Span, end: Span): Span {\n return { start: start.start, end: end.end };\n }\n\n private check(type: TokenType): boolean {\n return this.peek().type === type;\n }\n\n private match(type: TokenType): boolean {\n if (!this.check(type)) return false;\n this.advance();\n return true;\n }\n\n private expect(type: TokenType, message: string): Token {\n const token = this.peek();\n if (token.type === type) {\n return this.advance();\n }\n throw new CompilerError(message, token.span);\n }\n\n private advance(): Token {\n const token = this.peek();\n this.index += 1;\n return token;\n }\n\n private peek(): Token {\n return (\n this.tokens[this.index] ??\n this.tokens[this.tokens.length - 1] ?? {\n type: TokenType.EOF,\n value: \"\",\n span: { start: 0, end: 0 },\n }\n );\n }\n\n private isAtEnd(): boolean {\n return this.peek().type === TokenType.EOF;\n }\n\n public finish(): void {\n this.expect(TokenType.EOF, \"Unexpected token after expression\");\n }\n}\n\nexport function parse(tokens: Token[]): Expression {\n const parser = new Parser(tokens);\n const expression = parser.parseExpression();\n parser.finish();\n return expression;\n}\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\nimport { NULL, UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != NULL) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, NULL);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: NULL,\n\t\t_parent: NULL,\n\t\t_depth: 0,\n\t\t_dom: NULL,\n\t\t_component: NULL,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == NULL ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == NULL && options.vnode != NULL) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: NULL };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != NULL && vnode.constructor === UNDEFINED;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nexport const regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n","import { regex } from './regex.js'\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nexport default class BananaSlug {\n /**\n * Create a new slug class.\n */\n constructor () {\n /** @type {Record<string, number>} */\n // eslint-disable-next-line no-unused-expressions\n this.occurrences\n\n this.reset()\n }\n\n /**\n * Generate a unique slug.\n *\n * Tracks previously generated slugs: repeated calls with the same value\n * will result in different slugs.\n * Use the `slug` function to get same slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\n slug (value, maintainCase) {\n const self = this\n let result = slug(value, maintainCase === true)\n const originalSlug = result\n\n while (own.call(self.occurrences, result)) {\n self.occurrences[originalSlug]++\n result = originalSlug + '-' + self.occurrences[originalSlug]\n }\n\n self.occurrences[result] = 0\n\n return result\n }\n\n /**\n * Reset - Forget all previous slugs\n *\n * @return void\n */\n reset () {\n this.occurrences = Object.create(null)\n }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\nexport function slug (value, maintainCase) {\n if (typeof value !== 'string') return ''\n if (!maintainCase) value = value.toLowerCase()\n return value.replace(regex, '').replace(/ /g, '-')\n}\n","import GithubSlugger, { slug as githubSlug } from \"github-slugger\";\nimport type { Element as HastElement } from \"hast\";\nimport type { FilePath, FullSlug } from \"@quartz-community/types\";\n\nexport type { FilePath, FullSlug };\n\n/** No '/index' ending, no file extension, can have trailing slash for folders. */\nexport type SimpleSlug = string & { _brand: \"SimpleSlug\" };\n\n/** Starts with './' or '../', used for navigation. */\nexport type RelativeURL = string & { _brand: \"RelativeURL\" };\n\nexport interface TransformOptions {\n strategy: \"absolute\" | \"relative\" | \"shortest\";\n allSlugs: FullSlug[];\n}\n\nexport function isFilePath(s: string): s is FilePath {\n const validStart = !s.startsWith(\".\");\n return validStart && _hasFileExtension(s);\n}\n\nexport function isFullSlug(s: string): s is FullSlug {\n const validStart = !(s.startsWith(\".\") || s.startsWith(\"/\"));\n const validEnding = !s.endsWith(\"/\");\n return validStart && validEnding && !_containsForbiddenCharacters(s);\n}\n\nexport function isSimpleSlug(s: string): s is SimpleSlug {\n const validStart = !(s.startsWith(\".\") || (s.length > 1 && s.startsWith(\"/\")));\n const validEnding = !endsWith(s, \"index\");\n return validStart && !_containsForbiddenCharacters(s) && validEnding && !_hasFileExtension(s);\n}\n\nexport function isRelativeURL(s: string): s is RelativeURL {\n const validStart = /^\\.{1,2}/.test(s);\n const validEnding = !endsWith(s, \"index\");\n return validStart && validEnding && ![\".md\", \".html\"].includes(getFileExtension(s) ?? \"\");\n}\n\nexport function isAbsoluteURL(s: string): boolean {\n try {\n new URL(s);\n } catch {\n return false;\n }\n return true;\n}\n\nexport function simplifySlug(fp: FullSlug | string): SimpleSlug {\n const res = stripSlashes(trimSuffix(fp, \"index\"), true);\n return (res.length === 0 ? \"/\" : res) as SimpleSlug;\n}\n\nexport function getFullSlug(window: Window): FullSlug {\n const res = window.document.body.dataset.slug! as FullSlug;\n return res;\n}\n\nexport function getFullSlugFromUrl(): FullSlug {\n let rawSlug = decodeURI(window.location.pathname);\n if (rawSlug.endsWith(\"/\")) rawSlug = rawSlug.slice(0, -1);\n if (rawSlug.startsWith(\"/\")) rawSlug = rawSlug.slice(1);\n return rawSlug as FullSlug;\n}\n\nexport function slugifyFilePath(fp: FilePath, excludeExt?: boolean): FullSlug {\n fp = stripSlashes(fp) as FilePath;\n const ext = getFileExtension(fp);\n const withoutFileExt = fp.replace(new RegExp(ext + \"$\"), \"\");\n const finalExt = excludeExt || [\".md\", \".html\", undefined].includes(ext) ? \"\" : ext;\n\n let slug = _sluggify(withoutFileExt);\n\n if (endsWith(slug, \"_index\")) {\n slug = slug.replace(/_index$/, \"index\");\n }\n\n // Obsidian \"Folder Notes\" convention (insideFolder storage): a file named the\n // same as its parent folder is treated as the folder's landing page. Rewrite\n // `folder/folder` → `folder/index` so every downstream consumer (trie, link\n // resolver, simplifySlug, isFolderPath) sees the canonical Quartz slug shape\n // and Just Works. A top-level single-segment slug is NOT rewritten — that\n // represents Obsidian's `parentFolder` storage mode, which Quartz already\n // routes as a regular top-level page.\n const segments = slug.split(\"/\");\n if (segments.length >= 2 && segments[segments.length - 1] === segments[segments.length - 2]) {\n segments[segments.length - 1] = \"index\";\n slug = segments.join(\"/\");\n }\n\n return (slug + (finalExt ?? \"\")) as FullSlug;\n}\n\nexport function joinSegments(...args: string[]): string {\n if (args.length === 0) {\n return \"\";\n }\n\n let joined = args\n .filter((segment) => segment !== \"\" && segment !== \"/\")\n .map((segment) => stripSlashes(segment))\n .join(\"/\");\n\n const first = args[0];\n const last = args[args.length - 1];\n\n if (first?.startsWith(\"/\")) {\n joined = \"/\" + joined;\n }\n\n if (last?.endsWith(\"/\")) {\n joined = joined + \"/\";\n }\n\n return joined;\n}\n\nexport function resolvePath(to: string): string {\n if (to.startsWith(\"/\")) return to;\n return \"/\" + to;\n}\n\n/** Read the base path injected at build time via `data-basepath` on `<body>`.\n * Returns `\"\"` for root deployments, e.g. `\"/repository\"` for subdirectory. */\nexport function getBasePath(): string {\n if (typeof document === \"undefined\") return \"\";\n return document.body?.dataset?.basepath ?? \"\";\n}\n\n/** Resolve a slug to an absolute URL path, prepending the site's base path.\n * e.g. `resolveBasePath(\"features/Callouts\")` → `\"/repository/features/Callouts\"` */\nexport function resolveBasePath(to: string, basePath?: string): string {\n const base = basePath ?? getBasePath();\n const slug = to.startsWith(\"/\") ? to : \"/\" + to;\n return base + slug;\n}\n\nexport function endsWith(s: string, suffix: string): boolean {\n return s === suffix || s.endsWith(\"/\" + suffix);\n}\n\nexport function trimSuffix(s: string, suffix: string): string {\n if (endsWith(s, suffix)) {\n s = s.slice(0, -suffix.length);\n }\n return s;\n}\n\nexport function stripSlashes(s: string, onlyStripPrefix?: boolean): string {\n if (s.startsWith(\"/\")) {\n s = s.substring(1);\n }\n\n if (!onlyStripPrefix && s.endsWith(\"/\")) {\n s = s.slice(0, -1);\n }\n\n return s;\n}\n\nexport function getFileExtension(s: string): string | undefined {\n return s.match(/\\.[A-Za-z0-9]+$/)?.[0];\n}\n\nexport function isFolderPath(fplike: string): boolean {\n return (\n fplike.endsWith(\"/\") ||\n endsWith(fplike, \"index\") ||\n endsWith(fplike, \"index.md\") ||\n endsWith(fplike, \"index.html\")\n );\n}\n\nexport function getAllSegmentPrefixes(path: string): string[] {\n const segments = path.split(\"/\");\n const results: string[] = [];\n for (let i = 0; i < segments.length; i++) {\n results.push(segments.slice(0, i + 1).join(\"/\"));\n }\n return results;\n}\n\nexport function pathToRoot(slug: FullSlug): RelativeURL {\n let rootPath = slug\n .split(\"/\")\n .filter((x) => x !== \"\")\n .slice(0, -1)\n .map((_) => \"..\")\n .join(\"/\");\n\n if (rootPath.length === 0) {\n rootPath = \".\";\n }\n\n return rootPath as RelativeURL;\n}\n\nexport function resolveRelative(current: FullSlug, target: FullSlug | SimpleSlug): RelativeURL {\n const res = joinSegments(pathToRoot(current), simplifySlug(target as FullSlug)) as RelativeURL;\n return res;\n}\n\n/**\n * The slug of a heading's text: the `id` Quartz gives a heading, and the\n * anchor every link or table-of-contents entry to that heading must use.\n *\n * Same rule as GitHub and `rehype-slug` (`github-slugger`): lowercase,\n * punctuation removed, each space replaced by `-`. Non-Latin letters and\n * digits are kept, e.g. `\"监听 127.0.0.1(推荐)\"` → `\"监听-127001推荐\"`.\n *\n * Use {@link HeadingSlugger} when slugging every heading on a page, so that\n * repeated headings get unique ids (`foo`, `foo-1`, …).\n */\nexport function slugHeading(text: string): string {\n return githubSlug(text);\n}\n\n/**\n * Slugs the headings of one page in document order with {@link slugHeading},\n * numbering repeats the way GitHub and `rehype-slug` do (`foo`, `foo-1`,\n * `foo-2`). Create one per page, or call `reset()` between pages.\n */\nexport class HeadingSlugger {\n private readonly slugger = new GithubSlugger();\n\n /** Slug `text`, unique among the slugs this instance has returned. */\n slug(text: string): string {\n return this.slugger.slug(text);\n }\n\n reset(): void {\n this.slugger.reset();\n }\n}\n\n/**\n * The anchor Obsidian writes when it links to a heading with this text.\n *\n * Obsidian anchors cannot hold `:`, `|`, `^`, `#` or `\\`, so Obsidian replaces\n * each with a space and collapses the spaces: `\"Colon:unspaced\"` →\n * `\"Colon unspaced\"`. Slugging this with {@link slugHeading} gives the anchor\n * a link written in Obsidian resolves to; when it differs from the heading's\n * `id`, heading producers can add it as an alias id.\n */\nexport function obsidianHeadingAnchor(text: string): string {\n return text\n .replace(/[:|^#\\\\]/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\n/**\n * Point a same-page anchor link (`href` starting with `#`, as written) at an\n * `id` on the page. `ids` holds every `id` on the page.\n *\n * - An anchor that already names an id (as written or percent-decoded) is\n * returned unchanged.\n * - `#^name` (an Obsidian block reference) points at the id `name`.\n * - Otherwise, when the anchor is a heading's text, it points at the\n * heading's id: the anchor slugged with {@link slugHeading}, e.g.\n * `#监听 127.0.0.1(推荐)` → `#监听-127001推荐`.\n * - An anchor that names no id either way is returned unchanged, so a link to\n * an id added later (raw HTML, another plugin) keeps working.\n */\nexport function resolveAnchorHref(href: string, ids: ReadonlySet<string>): string {\n if (!href.startsWith(\"#\") || href.length === 1) return href;\n const raw = href.slice(1);\n let decoded = raw;\n try {\n decoded = decodeURIComponent(raw);\n } catch {\n // keep the anchor as written\n }\n if (ids.has(raw) || ids.has(decoded)) return href;\n const bare = decoded.startsWith(\"^\") ? decoded.slice(1) : decoded;\n if (ids.has(bare)) return \"#\" + bare;\n const slugged = slugHeading(bare);\n return ids.has(slugged) ? \"#\" + slugged : href;\n}\n\nexport function splitAnchor(link: string): [string, string] {\n const [fp, anchor] = link.split(\"#\", 2);\n if (fp!.endsWith(\".pdf\")) {\n return [fp!, anchor === undefined ? \"\" : `#${anchor}`];\n }\n if (anchor === undefined) {\n return [fp!, \"\"];\n }\n const bare = anchor.startsWith(\"^\") ? anchor.slice(1) : anchor;\n const slugged = \"#\" + slugHeading(bare);\n return [fp!, slugged];\n}\n\nexport function slugTag(tag: string): string {\n return tag\n .split(\"/\")\n .map((tagSegment) => _sluggify(tagSegment))\n .join(\"/\");\n}\n\nexport function transformInternalLink(link: string): RelativeURL {\n const [fplike, anchor] = splitAnchor(decodeURI(link));\n\n const segments = fplike.split(\"/\").filter((x) => x.length > 0);\n const prefix = segments.filter(_isRelativeSegment).join(\"/\");\n const fp = segments.filter((seg) => !_isRelativeSegment(seg) && seg !== \"\").join(\"/\");\n\n const slugged = slugifyFilePath(fp as FilePath);\n const simpleSlug = simplifySlug(slugged);\n const folderPath = isFolderPath(fplike) || isFolderPath(slugged);\n const joined = joinSegments(stripSlashes(prefix), stripSlashes(simpleSlug));\n const trail = folderPath ? \"/\" : \"\";\n const res = (_addRelativeToStart(joined) + trail + anchor) as RelativeURL;\n return res;\n}\n\nexport function transformLink(src: FullSlug, target: string, opts: TransformOptions): RelativeURL {\n const targetSlug = transformInternalLink(target);\n\n if (opts.strategy === \"relative\") {\n return _resolveRelativeFolderNote(src, target) ?? (targetSlug as RelativeURL);\n } else {\n // When src is a folder page (e.g. \"Compendium/Spells\" backed by index.md),\n // the browser serves it at \"/Compendium/Spells/\" with a trailing slash.\n // pathToRoot needs the \"/index\" suffix to compute the correct depth.\n const effectiveSrc =\n !endsWith(src, \"index\") && opts.allSlugs.includes(`${src}/index` as FullSlug)\n ? (`${src}/index` as FullSlug)\n : src;\n\n const folderTail = isFolderPath(targetSlug) ? \"/\" : \"\";\n const canonicalSlug = stripSlashes(targetSlug.slice(\".\".length));\n const [targetCanonical, targetAnchor] = splitAnchor(canonicalSlug);\n\n if (opts.strategy === \"shortest\") {\n const isMultiSegment = targetCanonical.includes(\"/\");\n const isFolderTarget = isFolderPath(targetSlug);\n let matchingFileNames = opts.allSlugs.filter((slug) => {\n if (isMultiSegment) {\n // Multi-segment partial path: match by suffix\n if (slug === targetCanonical || slug.endsWith(\"/\" + targetCanonical)) {\n return true;\n }\n // Folder targets have \"/index\" stripped — also match the \"/index\" variant\n if (isFolderTarget) {\n const withIndex = targetCanonical + \"/index\";\n return slug === withIndex || slug.endsWith(\"/\" + withIndex);\n }\n return false;\n }\n const parts = slug.split(\"/\");\n const fileName = parts.at(-1);\n return targetCanonical === fileName;\n });\n\n // Folder note Foo/Foo.md slugs to Foo/index, so its last segment never matches [[Foo]]\n // Retry by folder name, only when no real file claims it\n if (matchingFileNames.length === 0 && !isMultiSegment) {\n matchingFileNames = opts.allSlugs.filter((slug) => {\n const parts = slug.split(\"/\");\n return parts.at(-1) === \"index\" && parts.at(-2) === targetCanonical;\n });\n }\n\n if (matchingFileNames.length === 1) {\n const matchedSlug = matchingFileNames[0]!;\n return (resolveRelative(effectiveSrc, matchedSlug) + targetAnchor) as RelativeURL;\n }\n }\n\n return (joinSegments(pathToRoot(effectiveSrc), canonicalSlug) + folderTail) as RelativeURL;\n }\n}\n\n/**\n * A relative link can name a folder note (`topic/Topic.md`, slugged\n * `topic/index`) without spelling out its folder, e.g. `./Topic.md` written\n * inside `topic/`. `slugifyFilePath` only sees the segments the link spells\n * out, so apply the folder-note rule to the target as resolved against the\n * source's folder, and return the link with its file name replaced by\n * `index`. Returns `undefined` when the target is not such a folder note.\n * @internal\n */\nfunction _resolveRelativeFolderNote(src: FullSlug, target: string): RelativeURL | undefined {\n let decoded: string;\n try {\n decoded = decodeURI(target);\n } catch {\n return undefined;\n }\n const hashIdx = decoded.indexOf(\"#\");\n const fplike = hashIdx === -1 ? decoded : decoded.slice(0, hashIdx);\n const rest = hashIdx === -1 ? \"\" : decoded.slice(hashIdx);\n if (fplike === \"\" || fplike.endsWith(\"/\") || fplike.startsWith(\"/\")) return undefined;\n\n const ext = getFileExtension(fplike);\n if (![\".md\", \".html\", undefined].includes(ext)) return undefined;\n\n const segments = fplike.split(\"/\");\n const fileName = segments[segments.length - 1]!;\n const fileSlug = slugifyPath(ext ? fileName.slice(0, -ext.length) : fileName);\n if (fileSlug === \"index\") return undefined;\n\n // Resolve the link's folder against the source's folder (both as slugs)\n const resolved = src.split(\"/\").slice(0, -1);\n for (const seg of segments.slice(0, -1)) {\n if (seg === \"\" || seg === \".\") continue;\n if (seg === \"..\") {\n if (resolved.length === 0) return undefined;\n resolved.pop();\n } else {\n resolved.push(slugifyPath(seg));\n }\n }\n\n if (resolved.length === 0 || resolved[resolved.length - 1] !== fileSlug) return undefined;\n\n segments[segments.length - 1] = \"index\" + (ext ?? \"\");\n return transformInternalLink(encodeURI(segments.join(\"/\") + rest));\n}\n\n/**\n * Slugify a file path for use as an href.\n * Replaces whitespace→hyphens, &→-and-, %→-percent, removes ? and #, and\n * lowercases the result so that link matching is case-insensitive (matching\n * Obsidian's link-resolution semantics). Operates per segment so directory\n * separators are preserved.\n */\nexport function slugifyPath(s: string): string {\n return s\n .split(\"/\")\n .map((segment) =>\n segment\n .replace(/\\s/g, \"-\")\n .replace(/&/g, \"-and-\")\n .replace(/%/g, \"-percent\")\n .replace(/\\?/g, \"\")\n .replace(/#/g, \"\")\n .replace(/[<>:\"|*]/g, \"\")\n .toLowerCase(),\n )\n .join(\"/\")\n .replace(/\\/$/, \"\");\n}\n\n/**\n * Re-base the relative `href` and `src` attributes of a HAST element so that\n * links inside content originally resolved relative to `newBase` remain valid\n * when the element is embedded at a page with slug `curBase`.\n *\n * Used for transclusions and cross-slug HAST embedding (Quartz core's\n * `renderPage` transclude expansion, canvas-page's embedded file-nodes, and\n * any plugin that takes `vfile.data.htmlAst` from one page and renders it\n * inside another). Absolute URLs pass through unchanged.\n *\n * The element (and its children) are deep-cloned via `structuredClone`, so\n * the original HAST tree is never mutated.\n */\nexport function normalizeHastElement<T extends HastElement>(\n rawEl: T,\n curBase: FullSlug,\n newBase: FullSlug,\n): T {\n const el = structuredClone(rawEl);\n _rebaseHastElement(el, \"src\", curBase, newBase);\n _rebaseHastElement(el, \"href\", curBase, newBase);\n if (el.children) {\n el.children = el.children.map((child) =>\n child.type === \"element\"\n ? (normalizeHastElement(child as HastElement, curBase, newBase) as typeof child)\n : child,\n );\n }\n return el;\n}\n\n/** @internal */\nfunction _rebaseHastElement(\n el: HastElement,\n attr: \"href\" | \"src\",\n curBase: FullSlug,\n newBase: FullSlug,\n): void {\n const value = el.properties?.[attr];\n if (value === undefined || value === null) return;\n const href = String(value);\n if (!isRelativeURL(href)) return;\n el.properties![attr] = joinSegments(resolveRelative(curBase, newBase), \"..\", href);\n}\n\n/** @internal */\nfunction _sluggify(s: string): string {\n return slugifyPath(s);\n}\n\nfunction _containsForbiddenCharacters(s: string): boolean {\n return s.includes(\" \") || s.includes(\"#\") || s.includes(\"?\") || s.includes(\"&\");\n}\n\nfunction _hasFileExtension(s: string): boolean {\n return getFileExtension(s) !== undefined;\n}\n\nfunction _isRelativeSegment(s: string): boolean {\n return /^\\.{0,2}$/.test(s);\n}\n\nfunction _addRelativeToStart(s: string): string {\n if (s === \"\") {\n s = \".\";\n }\n\n if (!s.startsWith(\".\")) {\n s = joinSegments(\".\", s);\n }\n\n return s;\n}\n","import type { EvalContext } from \"./interpreter\";\nimport { slugifyFilePath, slugifyPath } from \"@quartz-community/utils\";\nimport type { FilePath } from \"@quartz-community/utils\";\n\nexport type GlobalFunction = (args: unknown[], context: EvalContext) => unknown;\nexport type MethodFunction = (target: unknown, args: unknown[], context: EvalContext) => unknown;\nexport type MethodTarget = \"string\" | \"number\" | \"date\" | \"list\" | \"file\" | \"object\";\n\nexport const globalFunctions = new Map<string, GlobalFunction>();\nexport const methodFunctions = new Map<MethodTarget, Map<string, MethodFunction>>();\n\nexport function getGlobalFunction(name: string): GlobalFunction | undefined {\n return globalFunctions.get(name);\n}\n\nexport function getMethodFunction(name: string, target: unknown): MethodFunction | undefined {\n const category = getMethodTarget(target);\n if (!category) return undefined;\n return methodFunctions.get(category)?.get(name);\n}\n\nfunction registerGlobalFunction(name: string, fn: GlobalFunction): void {\n globalFunctions.set(name, fn);\n}\n\nfunction registerMethodFunction(target: MethodTarget, name: string, fn: MethodFunction): void {\n const group = methodFunctions.get(target) ?? new Map<string, MethodFunction>();\n group.set(name, fn);\n methodFunctions.set(target, group);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction toStringValue(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n return String(value);\n}\n\nfunction toNumber(value: unknown): number | null {\n if (typeof value === \"number\" && !Number.isNaN(value)) return value;\n if (typeof value === \"string\") {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? null : parsed;\n }\n if (typeof value === \"boolean\") return value ? 1 : 0;\n return null;\n}\n\nfunction toInteger(value: unknown, fallback: number): number {\n const numberValue = toNumber(value);\n if (numberValue === null) return fallback;\n return Math.trunc(numberValue);\n}\n\nfunction roundTo(value: number, decimals: number): number {\n const factor = 10 ** decimals;\n return Math.round(value * factor) / factor;\n}\n\nfunction flattenArgs(args: unknown[]): unknown[] {\n if (args.length === 1 && Array.isArray(args[0])) return args[0];\n return args;\n}\n\nfunction collectNumericArgs(args: unknown[]): number[] {\n const values = flattenArgs(args);\n const numbers: number[] = [];\n for (const value of values) {\n const numberValue = toNumber(value);\n if (numberValue !== null) numbers.push(numberValue);\n }\n return numbers;\n}\n\nfunction isFileValue(value: unknown): value is EvalContext[\"file\"] {\n if (!isRecord(value)) return false;\n return (\n typeof value.name === \"string\" &&\n typeof value.path === \"string\" &&\n typeof value.folder === \"string\" &&\n typeof value.ext === \"string\" &&\n Array.isArray(value.tags) &&\n Array.isArray(value.links) &&\n typeof value.basename === \"string\"\n );\n}\n\nfunction resolveSelfName(value: unknown): string | null {\n if (!isRecord(value)) return null;\n if (isRecord(value.file) && typeof (value.file as Record<string, unknown>).name === \"string\") {\n return (value.file as Record<string, unknown>).name as string;\n }\n if (typeof value.name === \"string\" && typeof value.path === \"string\") {\n return (value.basename as string) || value.name;\n }\n return null;\n}\n\nfunction resolveSelfPath(value: unknown): string | null {\n if (!isRecord(value)) return null;\n if (isRecord(value.file) && typeof (value.file as Record<string, unknown>).path === \"string\") {\n return (value.file as Record<string, unknown>).path as string;\n }\n if (typeof value.path === \"string\") {\n return value.path as string;\n }\n return null;\n}\n\nfunction listContainsName(list: unknown[], name: string, selfPath?: string | null): boolean {\n const slugName = slugifyPath(name);\n const selfSlug = selfPath ? slugifyFilePath(selfPath as FilePath) : null;\n return list.some((value) => {\n if (typeof value !== \"string\") return false;\n // A wikilink's target is matched like a bare name, so case and slug differences resolve too.\n const item = parseWikilink(value)?.target.replace(/\\.md$/, \"\") ?? value;\n if (item === name) return true;\n const slugItem = slugifyPath(item);\n if (slugItem === slugName || slugItem.endsWith(`/${slugName}`)) return true;\n if (item === slugName || item.endsWith(`/${slugName}`)) return true;\n if (\n selfSlug &&\n (item === selfSlug || selfSlug.endsWith(`/${item}`) || item.endsWith(`/${selfSlug}`))\n )\n return true;\n return false;\n });\n}\n\nfunction isDateValue(value: unknown): value is Date {\n return value instanceof Date;\n}\n\nfunction isAlpha(ch: string): boolean {\n if (!ch) return false;\n const code = ch.charCodeAt(0);\n return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);\n}\n\nfunction isDigit(ch: string): boolean {\n if (!ch) return false;\n const code = ch.charCodeAt(0);\n return code >= 48 && code <= 57;\n}\n\nfunction parseDuration(value: string): number | undefined {\n const trimmed = value.trim();\n if (!trimmed) return undefined;\n\n const multipliers: Record<string, number> = {\n ms: 1,\n millisecond: 1,\n milliseconds: 1,\n s: 1000,\n sec: 1000,\n second: 1000,\n seconds: 1000,\n m: 60_000,\n min: 60_000,\n minute: 60_000,\n minutes: 60_000,\n h: 3_600_000,\n hr: 3_600_000,\n hour: 3_600_000,\n hours: 3_600_000,\n d: 86_400_000,\n day: 86_400_000,\n days: 86_400_000,\n w: 604_800_000,\n week: 604_800_000,\n weeks: 604_800_000,\n mo: 2_592_000_000,\n month: 2_592_000_000,\n months: 2_592_000_000,\n y: 31_536_000_000,\n year: 31_536_000_000,\n years: 31_536_000_000,\n };\n\n let index = 0;\n let total = 0;\n\n while (index < trimmed.length) {\n while (trimmed[index] === \" \" || trimmed[index] === \"\\t\") {\n index += 1;\n }\n if (index >= trimmed.length) break;\n\n const start = index;\n let hasDot = false;\n while (index < trimmed.length) {\n const ch = trimmed[index] ?? \"\";\n if (isDigit(ch)) {\n index += 1;\n continue;\n }\n if (ch === \".\" && !hasDot) {\n hasDot = true;\n index += 1;\n continue;\n }\n break;\n }\n\n if (start === index) return undefined;\n const amount = Number(trimmed.slice(start, index));\n if (Number.isNaN(amount)) return undefined;\n\n while (index < trimmed.length && (trimmed[index] === \" \" || trimmed[index] === \"\\t\")) {\n index += 1;\n }\n\n const unitStart = index;\n while (index < trimmed.length && isAlpha(trimmed[index] ?? \"\")) {\n index += 1;\n }\n const unit = trimmed.slice(unitStart, index).toLowerCase();\n const multiplier = unit ? multipliers[unit] : 1;\n if (unit && multiplier === undefined) return undefined;\n\n total += amount * (multiplier ?? 1);\n }\n\n return total;\n}\n\nfunction parseDate(value: unknown): Date | undefined {\n if (value instanceof Date) return value;\n if (typeof value === \"number\") {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? undefined : date;\n }\n if (typeof value === \"string\") {\n const parsed = Date.parse(value);\n if (Number.isNaN(parsed)) return undefined;\n return new Date(parsed);\n }\n return undefined;\n}\n\n// Obsidian keeps wikilink syntax in link-valued frontmatter (\"[[Apple]]\", \"[[Apple|alias]]\",\n// \"[[Apple#heading]]\"). Splits a value that is exactly one wikilink into target and #heading.\nfunction parseWikilink(value: string): { target: string; subpath: string } | null {\n const match = /^\\[\\[([^|#\\]]+)(#[^|\\]]*)?(?:\\|[^\\]]*)?\\]\\]$/.exec(value.trim());\n const target = match?.[1]?.trim();\n if (!match || !target) return null;\n return { target, subpath: match[2] ?? \"\" };\n}\n\n// The link target for a file value, a path, or an existing wikilink (keeping its #heading;\n// like Obsidian, a wikilink's alias is dropped).\nfunction linkTarget(value: unknown): string {\n if (isFileValue(value)) return value.path.replace(/\\.md$/, \"\");\n const raw = toStringValue(value);\n const wikilink = parseWikilink(raw);\n return wikilink ? `${wikilink.target}${wikilink.subpath}` : raw;\n}\n\nfunction buildFileValue(path: string): EvalContext[\"file\"] {\n const normalized = path.trim();\n const lastSlash = normalized.lastIndexOf(\"/\");\n const fileName = lastSlash >= 0 ? normalized.slice(lastSlash + 1) : normalized;\n const lastDot = fileName.lastIndexOf(\".\");\n const basename = lastDot > 0 ? fileName.slice(0, lastDot) : fileName;\n const ext = lastDot > 0 ? fileName.slice(lastDot + 1) : \"\";\n const folder = lastSlash >= 0 ? normalized.slice(0, lastSlash) : \"\";\n\n return {\n name: fileName || normalized,\n basename: basename || fileName || normalized,\n path: normalized,\n folder,\n ext,\n tags: [],\n links: [],\n };\n}\n\n// Looks a path, slug or bare name up in the file index (as asFile() does).\nfunction lookupFile(path: string, context: EvalContext): EvalContext[\"file\"] | undefined {\n const lookup = context._fileLookup;\n if (!lookup) return undefined;\n const normalized = path.trim();\n if (!normalized) return undefined;\n const found =\n lookup.get(normalized) ??\n lookup.get(normalized.replace(/\\.md$/, \"\")) ??\n (!normalized.endsWith(\".md\") ? lookup.get(`${normalized}.md`) : undefined);\n if (found) return found;\n\n // Fallback: match by path suffix (e.g. \"Apple\" matches \"Compendium/Species/Dryad/Apple\")\n const suffix = `/${normalized}`;\n const suffixMd = `/${normalized}.md`;\n for (const [key, value] of lookup) {\n if (key.endsWith(suffix) || key.endsWith(suffixMd)) return value;\n }\n return undefined;\n}\n\n// A wikilink string such as this.file.asLink() returns (\"[[people/Alice]]\"), resolved to the\n// file it points at, so it can be compared like a link rather than as text.\nfunction resolveLink(value: unknown, context: EvalContext): { name: string; path: string } | null {\n if (typeof value !== \"string\") return null;\n const wikilink = parseWikilink(value);\n if (!wikilink) return null;\n const path = lookupFile(wikilink.target, context)?.path ?? wikilink.target;\n const fileName = path.slice(path.lastIndexOf(\"/\") + 1);\n return { name: fileName.replace(/\\.md$/, \"\"), path };\n}\n\nfunction sameLinkTarget(left: { path: string }, right: { path: string }): boolean {\n return (\n slugifyFilePath(left.path.trim() as FilePath) === slugifyFilePath(right.path.trim() as FilePath)\n );\n}\n\n// list.contains(needle) / contains(list, needle): matches values, `this` / file values, and\n// wikilinks (e.g. this.file.asLink()) against list items that are links, slugs or names.\nfunction listContains(list: unknown[], needle: unknown, context: EvalContext): boolean {\n if (list.includes(needle)) return true;\n if (needle === undefined || needle === null) return false;\n const link = resolveLink(needle, context);\n if (link) return listContainsName(list, link.name, link.path);\n if (typeof needle === \"string\") {\n const slugNeedle = slugifyPath(needle);\n if (list.some((item) => typeof item === \"string\" && slugifyPath(item) === slugNeedle))\n return true;\n }\n const name = resolveSelfName(needle);\n return name ? listContainsName(list, name, resolveSelfPath(needle)) : false;\n}\n\nfunction getMethodTarget(value: unknown): MethodTarget | undefined {\n if (typeof value === \"string\") return \"string\";\n if (typeof value === \"number\" && !Number.isNaN(value)) return \"number\";\n if (isDateValue(value)) return \"date\";\n if (Array.isArray(value)) return \"list\";\n if (isFileValue(value)) return \"file\";\n if (isRecord(value)) return \"object\";\n return undefined;\n}\n\nregisterGlobalFunction(\"if\", ([cond, whenTrue, whenFalse]) => {\n return cond ? whenTrue : whenFalse;\n});\n\nregisterGlobalFunction(\"contains\", ([haystack, needle], context) => {\n if (Array.isArray(haystack)) return listContains(haystack, needle, context);\n if (typeof haystack === \"string\") return stringContains(haystack, needle, context);\n return false;\n});\n\nregisterGlobalFunction(\"date\", ([value]) => parseDate(value));\n\nregisterGlobalFunction(\"duration\", ([value]) => {\n if (typeof value === \"number\") return value;\n if (typeof value === \"string\") return parseDuration(value);\n return undefined;\n});\n\nregisterGlobalFunction(\"now\", () => new Date());\n\nregisterGlobalFunction(\"today\", () => {\n const now = new Date();\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\n});\n\nregisterGlobalFunction(\"number\", ([value]) => {\n const numberValue = toNumber(value);\n return numberValue === null ? undefined : numberValue;\n});\n\nregisterGlobalFunction(\"min\", (args) => {\n const numbers = collectNumericArgs(args);\n if (numbers.length === 0) return undefined;\n return Math.min(...numbers);\n});\n\nregisterGlobalFunction(\"max\", (args) => {\n const numbers = collectNumericArgs(args);\n if (numbers.length === 0) return undefined;\n return Math.max(...numbers);\n});\n\nregisterGlobalFunction(\"list\", ([value]) => {\n if (value === undefined || value === null) return [];\n if (Array.isArray(value)) return value;\n return [value];\n});\n\nregisterGlobalFunction(\"link\", ([path, display]) => {\n const target = linkTarget(path);\n if (!target) return \"\";\n const label = isFileValue(display) ? display.basename : toStringValue(display);\n return label ? `[[${target}|${label}]]` : `[[${target}]]`;\n});\n\nregisterGlobalFunction(\"image\", ([path]) => {\n const target = isFileValue(path) ? path.path.replace(/\\.md$/, \"\") : toStringValue(path);\n if (!target) return \"\";\n return `![[${target}]]`;\n});\n\nregisterGlobalFunction(\"icon\", ([name]) => {\n const value = toStringValue(name);\n if (!value) return \"\";\n return `:${value}:`;\n});\n\nregisterGlobalFunction(\"html\", ([value]) => toStringValue(value));\n\nregisterGlobalFunction(\"escapeHTML\", ([value]) => {\n const text = toStringValue(value);\n return text\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n});\n\nregisterGlobalFunction(\"file\", ([path]) => {\n if (typeof path !== \"string\") return undefined;\n if (!path.trim()) return undefined;\n return buildFileValue(path);\n});\n\nregisterMethodFunction(\"file\", \"hasTag\", (target, args) => {\n if (!isFileValue(target)) return false;\n if (args.length === 0) return false;\n return args.every((tag) => {\n const value = toStringValue(tag)?.toLowerCase();\n if (!value) return false;\n const prefix = value.endsWith(\"/\") ? value : `${value}/`;\n return target.tags.some((t) => {\n const lower = t.toLowerCase();\n return lower === value || lower.startsWith(prefix);\n });\n });\n});\n\nregisterMethodFunction(\"file\", \"hasLink\", (target, [link]) => {\n if (!isFileValue(target)) return false;\n const value = toStringValue(link);\n if (!value) return false;\n return target.links.includes(value);\n});\n\nregisterMethodFunction(\"file\", \"inFolder\", (target, [folder]) => {\n if (!isFileValue(target)) return false;\n if (typeof folder !== \"string\") return false;\n const normalized = folder.trim().replace(/^\\/+|\\/+$/g, \"\");\n // The content root (\"\" here, \"/\" in Obsidian) contains every file.\n if (normalized === \"\") return true;\n return target.folder === normalized || target.folder.startsWith(`${normalized}/`);\n});\n\nregisterMethodFunction(\"file\", \"hasProperty\", (_target, [prop], context) => {\n const value = toStringValue(prop);\n if (!value) return false;\n // Obsidian treats hasProperty as \"does the key exist in frontmatter?\" regardless\n // of whether the value is null/undefined/falsy.\n const parts = value.split(\".\");\n let target: unknown = context.note;\n for (const part of parts) {\n if (!isRecord(target)) return false;\n if (!Object.hasOwn(target, part)) return false;\n target = target[part];\n }\n return true;\n});\n\n// A missing needle (e.g. an unresolved property) matches nothing rather than \"\" matching all.\n// A link-valued string (\"[[Alice]]\") contains a link to the same file (\"[[people/Alice]]\").\nfunction stringContains(target: unknown, needle: unknown, context: EvalContext): boolean {\n if (needle === undefined || needle === null) return false;\n const value = toStringValue(target);\n const needleLink = resolveLink(needle, context);\n const valueLink = needleLink ? resolveLink(value, context) : null;\n if (needleLink && valueLink && sameLinkTarget(valueLink, needleLink)) return true;\n return value.includes(toStringValue(needle));\n}\n\nregisterMethodFunction(\"string\", \"contains\", (target, [needle], context) =>\n stringContains(target, needle, context),\n);\n\nregisterMethodFunction(\"string\", \"startsWith\", (target, [prefix]) => {\n const value = toStringValue(target);\n return value.startsWith(toStringValue(prefix));\n});\n\nregisterMethodFunction(\"string\", \"endsWith\", (target, [suffix]) => {\n const value = toStringValue(target);\n return value.endsWith(toStringValue(suffix));\n});\n\nregisterMethodFunction(\"string\", \"lower\", (target) => toStringValue(target).toLowerCase());\n\nregisterMethodFunction(\"string\", \"upper\", (target) => toStringValue(target).toUpperCase());\n\nregisterMethodFunction(\"string\", \"trim\", (target) => toStringValue(target).trim());\n\nregisterMethodFunction(\"string\", \"replace\", (target, [search, replacement]) => {\n const source = toStringValue(target);\n const needle = toStringValue(search);\n if (!needle) return source;\n const replacementText = toStringValue(replacement);\n return source.split(needle).join(replacementText);\n});\n\nregisterMethodFunction(\"string\", \"slice\", (target, [start, end]) => {\n const source = toStringValue(target);\n const startIndex = toInteger(start, 0);\n if (end === undefined) return source.slice(startIndex);\n const endIndex = toInteger(end, source.length);\n return source.slice(startIndex, endIndex);\n});\n\nregisterMethodFunction(\"string\", \"isEmpty\", (target) => toStringValue(target).length === 0);\n\nregisterMethodFunction(\"string\", \"repeat\", (target, [count]) => {\n const source = toStringValue(target);\n const times = toInteger(count, 0);\n if (times <= 0) return \"\";\n return source.repeat(times);\n});\n\nregisterMethodFunction(\"string\", \"reverse\", (target) =>\n toStringValue(target).split(\"\").reverse().join(\"\"),\n);\n\nregisterMethodFunction(\"number\", \"toFixed\", (target, [digits]) => {\n const value = toNumber(target);\n if (value === null) return undefined;\n const decimals = toInteger(digits, 0);\n return value.toFixed(decimals);\n});\n\nregisterMethodFunction(\"number\", \"round\", (target, [digits]) => {\n const value = toNumber(target);\n if (value === null) return undefined;\n const decimals = toInteger(digits, 0);\n return roundTo(value, decimals);\n});\n\nregisterMethodFunction(\"number\", \"floor\", (target) => {\n const value = toNumber(target);\n if (value === null) return undefined;\n return Math.floor(value);\n});\n\nregisterMethodFunction(\"number\", \"ceil\", (target) => {\n const value = toNumber(target);\n if (value === null) return undefined;\n return Math.ceil(value);\n});\n\nregisterMethodFunction(\"number\", \"abs\", (target) => {\n const value = toNumber(target);\n if (value === null) return undefined;\n return Math.abs(value);\n});\n\nconst MONTH_NAMES_SHORT = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\nconst MONTH_NAMES_FULL = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nfunction formatDateToken(date: Date, token: string): string {\n const pad = (n: number, len = 2) => String(n).padStart(len, \"0\");\n const y = date.getFullYear();\n const M = date.getMonth() + 1;\n const d = date.getDate();\n const H = date.getHours();\n const h = H % 12 || 12;\n const m = date.getMinutes();\n const s = date.getSeconds();\n const A = H < 12 ? \"AM\" : \"PM\";\n\n switch (token) {\n case \"YYYY\":\n return String(y);\n case \"YY\":\n return String(y).slice(-2);\n case \"MMMM\":\n return MONTH_NAMES_FULL[date.getMonth()]!;\n case \"MMM\":\n return MONTH_NAMES_SHORT[date.getMonth()]!;\n case \"MM\":\n return pad(M);\n case \"M\":\n return String(M);\n case \"DD\":\n return pad(d);\n case \"D\":\n return String(d);\n case \"HH\":\n return pad(H);\n case \"H\":\n return String(H);\n case \"hh\":\n return pad(h);\n case \"h\":\n return String(h);\n case \"mm\":\n return pad(m);\n case \"m\":\n return String(m);\n case \"ss\":\n return pad(s);\n case \"s\":\n return String(s);\n case \"A\":\n return A;\n case \"a\":\n return A.toLowerCase();\n default:\n return token;\n }\n}\n\nfunction formatDate(date: Date, format: string): string {\n const tokenPattern = /YYYY|YY|MMMM|MMM|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|A|a/g;\n let result = \"\";\n let lastIndex = 0;\n let match = tokenPattern.exec(format);\n\n while (match !== null) {\n result += format.slice(lastIndex, match.index);\n result += formatDateToken(date, match[0]);\n lastIndex = tokenPattern.lastIndex;\n match = tokenPattern.exec(format);\n }\n result += format.slice(lastIndex);\n return result;\n}\n\nregisterMethodFunction(\"date\", \"format\", (target, [format]) => {\n if (!isDateValue(target)) return undefined;\n const timestamp = target.getTime();\n if (Number.isNaN(timestamp)) return \"\";\n if (typeof format === \"string\" && format) {\n return formatDate(target, format);\n }\n return target.toISOString();\n});\n\nregisterMethodFunction(\"date\", \"year\", (target) =>\n isDateValue(target) ? target.getFullYear() : undefined,\n);\n\nregisterMethodFunction(\"date\", \"month\", (target) =>\n isDateValue(target) ? target.getMonth() + 1 : undefined,\n);\n\nregisterMethodFunction(\"date\", \"day\", (target) =>\n isDateValue(target) ? target.getDate() : undefined,\n);\n\nregisterMethodFunction(\"date\", \"date\", (target) => {\n if (!isDateValue(target)) return undefined;\n const pad = (n: number, len = 2) => String(n).padStart(len, \"0\");\n return `${target.getFullYear()}-${pad(target.getMonth() + 1)}-${pad(target.getDate())}`;\n});\n\nregisterMethodFunction(\"date\", \"time\", (target) => {\n if (!isDateValue(target)) return undefined;\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return `${pad(target.getHours())}:${pad(target.getMinutes())}:${pad(target.getSeconds())}`;\n});\n\nregisterMethodFunction(\"date\", \"relative\", (target) => {\n if (!isDateValue(target)) return undefined;\n const time = target.getTime();\n if (Number.isNaN(time)) return \"\";\n const diff = time - Date.now();\n const abs = Math.abs(diff);\n const minutes = Math.round(abs / 60_000);\n const hours = Math.round(abs / 3_600_000);\n const days = Math.round(abs / 86_400_000);\n\n if (days >= 1) return diff < 0 ? `${days}d ago` : `in ${days}d`;\n if (hours >= 1) return diff < 0 ? `${hours}h ago` : `in ${hours}h`;\n if (minutes >= 1) return diff < 0 ? `${minutes}m ago` : `in ${minutes}m`;\n return diff < 0 ? \"just now\" : \"soon\";\n});\n\nregisterMethodFunction(\"date\", \"isEmpty\", (target) => {\n if (!isDateValue(target)) return true;\n return Number.isNaN(target.getTime());\n});\n\nregisterMethodFunction(\"list\", \"sum\", (target) => {\n if (!Array.isArray(target)) return undefined;\n return target.reduce((total, item) => {\n const value = toNumber(item);\n return value === null ? total : total + value;\n }, 0);\n});\n\nregisterMethodFunction(\"list\", \"mean\", (target) => {\n if (!Array.isArray(target)) return undefined;\n const numbers = collectNumericArgs(target);\n if (numbers.length === 0) return undefined;\n const sum = numbers.reduce((total, value) => total + value, 0);\n return sum / numbers.length;\n});\n\nregisterMethodFunction(\"list\", \"count\", (target) => (Array.isArray(target) ? target.length : 0));\n\nregisterMethodFunction(\"list\", \"min\", (target) => {\n if (!Array.isArray(target)) return undefined;\n const numbers = collectNumericArgs(target);\n if (numbers.length === 0) return undefined;\n return Math.min(...numbers);\n});\n\nregisterMethodFunction(\"list\", \"max\", (target) => {\n if (!Array.isArray(target)) return undefined;\n const numbers = collectNumericArgs(target);\n if (numbers.length === 0) return undefined;\n return Math.max(...numbers);\n});\n\nregisterMethodFunction(\"list\", \"round\", (target, [digits]) => {\n if (!Array.isArray(target)) return undefined;\n const decimals = toInteger(digits, 0);\n return target.map((item) => {\n const numberValue = toNumber(item);\n if (numberValue === null) return item;\n return roundTo(numberValue, decimals);\n });\n});\n\nregisterMethodFunction(\"file\", \"asLink\", (target, args) => {\n if (!isFileValue(target)) return \"\";\n const path = target.path.replace(/\\.md$/, \"\");\n const display = args.length > 0 ? toStringValue(args[0]) : \"\";\n return display ? `[[${path}|${display}]]` : `[[${path}]]`;\n});\n\nregisterMethodFunction(\"string\", \"containsAll\", (target, args) => {\n const value = toStringValue(target);\n return args.every((needle) => value.includes(toStringValue(needle)));\n});\n\nregisterMethodFunction(\"string\", \"containsAny\", (target, args) => {\n const value = toStringValue(target);\n return args.some((needle) => value.includes(toStringValue(needle)));\n});\n\nregisterMethodFunction(\"string\", \"split\", (target, [separator]) => {\n const value = toStringValue(target);\n const sep = toStringValue(separator);\n return value.split(sep);\n});\n\nregisterMethodFunction(\"string\", \"title\", (target) => {\n const value = toStringValue(target);\n return value.replace(/\\b\\w/g, (ch) => ch.toUpperCase());\n});\n\nregisterMethodFunction(\"string\", \"asFile\", (target, _args, context) => {\n const raw = toStringValue(target);\n const path = parseWikilink(raw)?.target ?? raw;\n if (!path) return undefined;\n const found = lookupFile(path, context);\n return found ? { ...found } : buildFileValue(path);\n});\n\nregisterMethodFunction(\"list\", \"contains\", (target, [needle], context) => {\n if (!Array.isArray(target)) return false;\n return listContains(target, needle, context);\n});\n\nregisterMethodFunction(\"list\", \"containsAll\", (target, args) => {\n if (!Array.isArray(target)) return false;\n return args.every((needle) => target.includes(needle));\n});\n\nregisterMethodFunction(\"list\", \"containsAny\", (target, args) => {\n if (!Array.isArray(target)) return false;\n return args.some((needle) => target.includes(needle));\n});\n\nregisterMethodFunction(\"list\", \"flat\", (target) => {\n if (!Array.isArray(target)) return undefined;\n return target.flat();\n});\n\nregisterMethodFunction(\"list\", \"isEmpty\", (target) => {\n if (!Array.isArray(target)) return true;\n return target.length === 0;\n});\n\nregisterMethodFunction(\"list\", \"join\", (target, [separator]) => {\n if (!Array.isArray(target)) return \"\";\n const sep = separator === undefined ? \", \" : toStringValue(separator);\n return target.map((item) => toStringValue(item)).join(sep);\n});\n\nregisterMethodFunction(\"list\", \"reverse\", (target) => {\n if (!Array.isArray(target)) return undefined;\n return [...target].reverse();\n});\n\nregisterMethodFunction(\"list\", \"slice\", (target, [start, end]) => {\n if (!Array.isArray(target)) return undefined;\n const startIndex = toInteger(start, 0);\n if (end === undefined) return target.slice(startIndex);\n const endIndex = toInteger(end, target.length);\n return target.slice(startIndex, endIndex);\n});\n\nregisterMethodFunction(\"list\", \"sort\", (target) => {\n if (!Array.isArray(target)) return undefined;\n return [...target].sort((a, b) => {\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n return String(a).localeCompare(String(b));\n });\n});\n\nregisterMethodFunction(\"list\", \"unique\", (target) => {\n if (!Array.isArray(target)) return undefined;\n return [...new Set(target)];\n});\n\nregisterMethodFunction(\"number\", \"isEmpty\", (target) => {\n const value = toNumber(target);\n return value === null || Number.isNaN(value);\n});\n\nregisterMethodFunction(\"object\", \"isEmpty\", (target) => {\n if (!isRecord(target)) return true;\n return Object.keys(target).length === 0;\n});\n\nregisterMethodFunction(\"object\", \"keys\", (target) => {\n if (!isRecord(target)) return [];\n return Object.keys(target);\n});\n\nregisterMethodFunction(\"object\", \"values\", (target) => {\n if (!isRecord(target)) return [];\n return Object.values(target);\n});\n\nfunction registerAnyMethod(name: string, fn: MethodFunction): void {\n const targets: MethodTarget[] = [\"string\", \"number\", \"date\", \"list\", \"file\", \"object\"];\n for (const target of targets) {\n registerMethodFunction(target, name, fn);\n }\n}\n\nregisterAnyMethod(\"isTruthy\", (target) => Boolean(target));\n\nregisterAnyMethod(\"isType\", (target, [typeName]) => {\n const expected = toStringValue(typeName).toLowerCase();\n if (typeof target === \"string\") return expected === \"string\";\n if (typeof target === \"number\") return expected === \"number\";\n if (isDateValue(target)) return expected === \"date\";\n if (Array.isArray(target)) return expected === \"list\" || expected === \"array\";\n if (isFileValue(target)) return expected === \"file\";\n if (isRecord(target)) return expected === \"object\";\n return false;\n});\n\nregisterAnyMethod(\"toString\", (target) => {\n if (isDateValue(target)) return target.toISOString();\n if (Array.isArray(target)) return target.map((item) => toStringValue(item)).join(\", \");\n if (isRecord(target)) return JSON.stringify(target);\n return toStringValue(target);\n});\n","import { getGlobalFunction, getMethodFunction } from \"./functions\";\nimport type { Instruction } from \"./ir\";\n\nexport type EvalContext = {\n note: Record<string, unknown>;\n file: {\n name: string;\n basename: string;\n path: string;\n folder: string;\n ext: string;\n tags: string[];\n links: string[];\n embeds?: string[];\n properties?: Record<string, unknown>;\n created?: string | Date;\n modified?: string | Date;\n ctime?: Date;\n mtime?: Date;\n size?: number;\n };\n formula: Record<string, unknown>;\n self?: {\n // The note (or .base file) the base is rendered in. A full file value, so\n // this.file.asLink(), this.file.inFolder(...) etc. work like file.*.\n file: Partial<EvalContext[\"file\"]> & {\n name: string;\n path: string;\n folder: string;\n ext: string;\n };\n };\n _lambdaValue?: unknown;\n _fileLookup?: Map<string, EvalContext[\"file\"]>;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction toBoolean(value: unknown): boolean {\n return Boolean(value);\n}\n\nfunction toNumber(value: unknown): number | null {\n if (typeof value === \"number\" && !Number.isNaN(value)) return value;\n if (typeof value === \"string\") {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? null : parsed;\n }\n if (typeof value === \"boolean\") return value ? 1 : 0;\n return null;\n}\n\nfunction toStringValue(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n return String(value);\n}\n\nfunction compareValues(left: unknown, right: unknown, operator: string): boolean {\n if (operator === \"==\") {\n if (isDateValue(left) && isDateValue(right)) return left.getTime() === right.getTime();\n return left === right;\n }\n if (operator === \"!=\") {\n if (isDateValue(left) && isDateValue(right)) return left.getTime() !== right.getTime();\n return left !== right;\n }\n\n if (isDateValue(left) && isDateValue(right)) {\n const leftMs = left.getTime();\n const rightMs = right.getTime();\n if (operator === \">\") return leftMs > rightMs;\n if (operator === \"<\") return leftMs < rightMs;\n if (operator === \">=\") return leftMs >= rightMs;\n if (operator === \"<=\") return leftMs <= rightMs;\n }\n\n const leftNum = toNumber(left);\n const rightNum = toNumber(right);\n if (leftNum !== null && rightNum !== null) {\n if (operator === \">\") return leftNum > rightNum;\n if (operator === \"<\") return leftNum < rightNum;\n if (operator === \">=\") return leftNum >= rightNum;\n if (operator === \"<=\") return leftNum <= rightNum;\n }\n\n const leftStr = toStringValue(left);\n const rightStr = toStringValue(right);\n if (operator === \">\") return leftStr > rightStr;\n if (operator === \"<\") return leftStr < rightStr;\n if (operator === \">=\") return leftStr >= rightStr;\n if (operator === \"<=\") return leftStr <= rightStr;\n return false;\n}\n\nfunction isDateValue(value: unknown): value is Date {\n return value instanceof Date && !Number.isNaN(value.getTime());\n}\n\nfunction applyBinary(operator: string, left: unknown, right: unknown): unknown {\n if (operator === \"+\") {\n // Date + number (duration in ms) = new Date\n if (isDateValue(left) && typeof right === \"number\") {\n return new Date(left.getTime() + right);\n }\n if (typeof left === \"number\" && isDateValue(right)) {\n return new Date(right.getTime() + left);\n }\n if (typeof left === \"string\" || typeof right === \"string\") {\n return `${toStringValue(left)}${toStringValue(right)}`;\n }\n const leftNum = toNumber(left);\n const rightNum = toNumber(right);\n if (leftNum === null || rightNum === null) return undefined;\n return leftNum + rightNum;\n }\n\n if (operator === \"-\") {\n // Date - number (duration in ms) = new Date\n if (isDateValue(left) && typeof right === \"number\") {\n return new Date(left.getTime() - right);\n }\n // Date - Date = number (duration in ms)\n if (isDateValue(left) && isDateValue(right)) {\n return left.getTime() - right.getTime();\n }\n const leftNum = toNumber(left);\n const rightNum = toNumber(right);\n if (leftNum === null || rightNum === null) return undefined;\n return leftNum - rightNum;\n }\n\n if (operator === \"*\") {\n const leftNum = toNumber(left);\n const rightNum = toNumber(right);\n if (leftNum === null || rightNum === null) return undefined;\n return leftNum * rightNum;\n }\n\n if (operator === \"/\") {\n const leftNum = toNumber(left);\n const rightNum = toNumber(right);\n if (leftNum === null || rightNum === null) return undefined;\n return rightNum === 0 ? 0 : leftNum / rightNum;\n }\n\n if (operator === \"%\") {\n const leftNum = toNumber(left);\n const rightNum = toNumber(right);\n if (leftNum === null || rightNum === null) return undefined;\n return rightNum === 0 ? 0 : leftNum % rightNum;\n }\n\n return compareValues(left, right, operator);\n}\n\nfunction getNestedValue(target: unknown, path: string[]): unknown {\n let current: unknown = target;\n for (const part of path) {\n if (!part) continue;\n if (Array.isArray(current)) {\n const index = Number(part);\n if (Number.isNaN(index)) return undefined;\n current = current[index];\n continue;\n }\n if (!isRecord(current)) return undefined;\n current = current[part];\n }\n return current;\n}\n\nexport function resolvePropertyValue(path: string, context: EvalContext): unknown {\n if (typeof path !== \"string\") return undefined;\n const trimmed = path.trim();\n if (!trimmed) return undefined;\n if (trimmed.startsWith(\"this.\")) {\n return getNestedValue(context.self ?? {}, trimmed.slice(5).split(\".\"));\n }\n if (trimmed.startsWith(\"note.\")) {\n return getNestedValue(context.note, trimmed.slice(5).split(\".\"));\n }\n if (trimmed.startsWith(\"file.\")) {\n return getNestedValue(context.file, trimmed.slice(5).split(\".\"));\n }\n if (trimmed.startsWith(\"formula.\")) {\n return getNestedValue(context.formula, trimmed.slice(8).split(\".\"));\n }\n return getNestedValue(context.note, trimmed.split(\".\"));\n}\n\nfunction resolveIdentifier(name: string, context: EvalContext): unknown {\n if (name.includes(\".\")) return resolvePropertyValue(name, context);\n if (name === \"this\") return context.self ?? {};\n if (name === \"note\") return context.note;\n if (name === \"file\") return context.file;\n if (name === \"formula\") return context.formula;\n if (name === \"value\") return context._lambdaValue;\n return context.note[name];\n}\n\nfunction resolveMember(target: unknown, name: string): unknown {\n if (target === undefined || target === null) return undefined;\n if (isDateValue(target)) {\n switch (name) {\n case \"year\":\n return target.getFullYear();\n case \"month\":\n return target.getMonth() + 1;\n case \"day\":\n return target.getDate();\n case \"hour\":\n return target.getHours();\n case \"minute\":\n return target.getMinutes();\n case \"second\":\n return target.getSeconds();\n default:\n return undefined;\n }\n }\n if (Array.isArray(target)) {\n if (name === \"length\") return target.length;\n const index = Number(name);\n if (Number.isNaN(index)) return undefined;\n return target[index];\n }\n if (typeof target === \"string\") {\n if (name === \"length\") return target.length;\n const index = Number(name);\n if (Number.isNaN(index)) return undefined;\n return target.charAt(index);\n }\n if (isRecord(target)) return target[name];\n return undefined;\n}\n\nfunction resolveIndex(target: unknown, indexValue: unknown): unknown {\n if (target === undefined || target === null) return undefined;\n if (Array.isArray(target)) {\n const index = toNumber(indexValue);\n if (index === null) return undefined;\n return target[Math.trunc(index)];\n }\n if (typeof target === \"string\") {\n const index = toNumber(indexValue);\n if (index === null) return undefined;\n return target.charAt(Math.trunc(index));\n }\n if (isRecord(target)) {\n if (typeof indexValue === \"string\" || typeof indexValue === \"number\") {\n return target[String(indexValue)];\n }\n }\n return undefined;\n}\n\nfunction popArgs(stack: unknown[], count: number): unknown[] {\n const args = new Array<unknown>(count);\n for (let i = count - 1; i >= 0; i -= 1) {\n args[i] = stack.pop();\n }\n return args;\n}\n\nfunction evaluateLambda(\n program: Instruction[],\n elementValue: unknown,\n context: EvalContext,\n): unknown {\n const lambdaContext: EvalContext = { ...context, _lambdaValue: elementValue };\n return interpret(program, lambdaContext);\n}\n\nfunction executeLazyMethod(\n name: string,\n target: unknown,\n argPrograms: Instruction[][],\n context: EvalContext,\n): unknown {\n if (!Array.isArray(target)) return undefined;\n const body = argPrograms[0];\n if (!body) return undefined;\n\n switch (name) {\n case \"filter\":\n return target.filter((element) => {\n const result = evaluateLambda(body, element, context);\n return Boolean(result);\n });\n case \"map\":\n return target.map((element) => evaluateLambda(body, element, context));\n case \"flatMap\": {\n const mapped = target.map((element) => evaluateLambda(body, element, context));\n return mapped.flat();\n }\n case \"find\":\n return target.find((element) => {\n const result = evaluateLambda(body, element, context);\n return Boolean(result);\n });\n case \"some\":\n return target.some((element) => {\n const result = evaluateLambda(body, element, context);\n return Boolean(result);\n });\n case \"every\":\n return target.every((element) => {\n const result = evaluateLambda(body, element, context);\n return Boolean(result);\n });\n default:\n return undefined;\n }\n}\n\nexport function interpret(instructions: Instruction[], context: EvalContext): unknown {\n const stack: unknown[] = [];\n let ip = 0;\n\n while (ip < instructions.length) {\n const instruction = instructions[ip];\n if (!instruction) break;\n\n switch (instruction.type) {\n case \"Const\":\n stack.push(instruction.value);\n ip += 1;\n break;\n case \"Ident\":\n stack.push(resolveIdentifier(instruction.name, context));\n ip += 1;\n break;\n case \"LoadFormula\":\n stack.push(context.formula[instruction.name]);\n ip += 1;\n break;\n case \"Member\": {\n const target = stack.pop();\n stack.push(resolveMember(target, instruction.name));\n ip += 1;\n break;\n }\n case \"Index\": {\n const indexValue = stack.pop();\n const target = stack.pop();\n stack.push(resolveIndex(target, indexValue));\n ip += 1;\n break;\n }\n case \"List\": {\n const items = popArgs(stack, instruction.count);\n stack.push(items);\n ip += 1;\n break;\n }\n case \"Unary\": {\n const value = stack.pop();\n if (instruction.operator === \"!\") {\n stack.push(!toBoolean(value));\n } else if (instruction.operator === \"-\") {\n const numberValue = toNumber(value);\n stack.push(numberValue === null ? undefined : -numberValue);\n } else {\n stack.push(undefined);\n }\n ip += 1;\n break;\n }\n case \"Binary\": {\n const right = stack.pop();\n const left = stack.pop();\n stack.push(applyBinary(instruction.operator, left, right));\n ip += 1;\n break;\n }\n case \"ToBool\": {\n const value = stack.pop();\n stack.push(toBoolean(value));\n ip += 1;\n break;\n }\n case \"CallGlobal\": {\n const args = popArgs(stack, instruction.argc);\n const fn = getGlobalFunction(instruction.name);\n if (!fn) {\n stack.push(undefined);\n ip += 1;\n break;\n }\n try {\n stack.push(fn(args, context));\n } catch {\n stack.push(undefined);\n }\n ip += 1;\n break;\n }\n case \"CallMethod\": {\n const args = popArgs(stack, instruction.argc);\n const target = stack.pop();\n if ((target === null || target === undefined) && instruction.name === \"isEmpty\") {\n stack.push(true);\n ip += 1;\n break;\n }\n const fn = getMethodFunction(instruction.name, target);\n if (!fn) {\n stack.push(undefined);\n ip += 1;\n break;\n }\n try {\n stack.push(fn(target, args, context));\n } catch {\n stack.push(undefined);\n }\n ip += 1;\n break;\n }\n case \"CallMethodLazy\": {\n const target = stack.pop();\n const result = executeLazyMethod(\n instruction.name,\n target,\n instruction.argPrograms,\n context,\n );\n stack.push(result);\n ip += 1;\n break;\n }\n case \"Jump\":\n ip += instruction.offset;\n break;\n case \"JumpIfFalse\": {\n const value = stack.pop();\n if (!toBoolean(value)) {\n ip += instruction.offset;\n } else {\n ip += 1;\n }\n break;\n }\n case \"JumpIfTrue\": {\n const value = stack.pop();\n if (toBoolean(value)) {\n ip += instruction.offset;\n } else {\n ip += 1;\n }\n break;\n }\n default:\n ip += 1;\n break;\n }\n }\n\n return stack.pop();\n}\n","import type { FilterNode } from \"../types\";\nimport { compileAst } from \"./compiler\";\nimport { lex } from \"./lexer\";\nimport { parse } from \"./parser\";\nimport { interpret, resolvePropertyValue } from \"./interpreter\";\nimport type { CompiledExpression } from \"./compiler\";\nimport type { EvalContext } from \"./interpreter\";\n\nexport function compile(expression: string): CompiledExpression {\n const tokens = lex(expression);\n const ast = parse(tokens);\n return compileAst(ast);\n}\n\nexport function evaluate(expression: string, context: EvalContext): unknown {\n try {\n const compiled = compile(expression);\n return interpret(compiled.instructions, context);\n } catch {\n return undefined;\n }\n}\n\nexport function evaluateFilter(node: FilterNode | undefined, context: EvalContext): boolean {\n if (!node) return true;\n if (typeof node === \"string\") {\n return Boolean(evaluate(node, context));\n }\n if (\"and\" in node) {\n return node.and.every((child) => evaluateFilter(child, context));\n }\n if (\"or\" in node) {\n return node.or.some((child) => evaluateFilter(child, context));\n }\n if (\"not\" in node) {\n return !node.not.every((child) => evaluateFilter(child, context));\n }\n return true;\n}\n\nexport { resolvePropertyValue };\nexport type { EvalContext, CompiledExpression };\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire } from 'module';
|
|
2
2
|
import { viewRegistry, registerCustomViews } from './chunk-2AUMER56.js';
|
|
3
|
-
import { u, evaluate, evaluateFilter, resolvePropertyValue, S, transformLink, slugifyPath } from './chunk-
|
|
3
|
+
import { u, evaluate, evaluateFilter, resolvePropertyValue, S, transformLink, slugifyPath } from './chunk-4XYVHAYQ.js';
|
|
4
4
|
|
|
5
5
|
createRequire(import.meta.url);
|
|
6
6
|
|
|
@@ -23,6 +23,9 @@ function normalizeStringArray(values) {
|
|
|
23
23
|
if (!Array.isArray(values)) return [];
|
|
24
24
|
return values.filter((value) => typeof value === "string");
|
|
25
25
|
}
|
|
26
|
+
function isSourceFile(fileData) {
|
|
27
|
+
return typeof fileData.filePath === "string" && fileData.filePath !== "";
|
|
28
|
+
}
|
|
26
29
|
function getFilePath(fileData, slug) {
|
|
27
30
|
if (typeof fileData.relativePath === "string") return fileData.relativePath;
|
|
28
31
|
if (typeof fileData.filePath === "string") return fileData.filePath;
|
|
@@ -48,8 +51,8 @@ function toDate(value) {
|
|
|
48
51
|
function buildFileProperties(fileData, slug, frontmatter) {
|
|
49
52
|
const filePath = getFilePath(fileData, slug);
|
|
50
53
|
const baseName = filePath ? getBaseName(filePath) : getBaseName(slug);
|
|
51
|
-
const name = baseName || slug.split("/").pop() || "Untitled";
|
|
52
54
|
const basename = baseName || slug.split("/").pop() || "Untitled";
|
|
55
|
+
const name = (filePath ? getFileName(filePath) : "") || basename;
|
|
53
56
|
const lastSlash = filePath.lastIndexOf("/");
|
|
54
57
|
const folder = lastSlash >= 0 ? filePath.slice(0, lastSlash) : "";
|
|
55
58
|
const lastDot = filePath.lastIndexOf(".");
|
|
@@ -75,6 +78,11 @@ function buildFileProperties(fileData, slug, frontmatter) {
|
|
|
75
78
|
mtime
|
|
76
79
|
};
|
|
77
80
|
}
|
|
81
|
+
function buildSelfContext(fileData) {
|
|
82
|
+
const slug = typeof fileData.slug === "string" ? fileData.slug : "";
|
|
83
|
+
const frontmatter = fileData.frontmatter ?? {};
|
|
84
|
+
return { file: { ...buildFileProperties(fileData, slug, frontmatter), properties: frontmatter } };
|
|
85
|
+
}
|
|
78
86
|
function compareSort(a, b) {
|
|
79
87
|
if (a === b) return 0;
|
|
80
88
|
if (a === void 0 || a === null) return 1;
|
|
@@ -123,6 +131,7 @@ function resolveBasesEntries(basesData, allFiles, view, selfContext) {
|
|
|
123
131
|
const fileLookup = /* @__PURE__ */ new Map();
|
|
124
132
|
for (const fd of allFiles) {
|
|
125
133
|
if (fd.unlisted === true) continue;
|
|
134
|
+
if (!isSourceFile(fd)) continue;
|
|
126
135
|
const fdSlug = typeof fd.slug === "string" ? fd.slug : "";
|
|
127
136
|
if (!fdSlug) continue;
|
|
128
137
|
const fdPath = getFilePath(fd, fdSlug);
|
|
@@ -142,6 +151,7 @@ function resolveBasesEntries(basesData, allFiles, view, selfContext) {
|
|
|
142
151
|
}
|
|
143
152
|
for (const fileData of allFiles) {
|
|
144
153
|
if (fileData.unlisted === true) continue;
|
|
154
|
+
if (!isSourceFile(fileData)) continue;
|
|
145
155
|
const slug = typeof fileData.slug === "string" ? fileData.slug : "";
|
|
146
156
|
if (!slug) continue;
|
|
147
157
|
const filePath = typeof fileData.filePath === "string" ? fileData.filePath : "";
|
|
@@ -744,7 +754,7 @@ function renderRow(entry, columns, view, slug, allSlugs, linkResolution) {
|
|
|
744
754
|
const ctx = { slug, allSlugs, linkResolution };
|
|
745
755
|
return /* @__PURE__ */ u("tr", { children: columns.map((column) => {
|
|
746
756
|
const value = resolveEntryPropertyValue(column, entry);
|
|
747
|
-
const display = formatValue(value);
|
|
757
|
+
const display = column === "file.name" ? entry.fileProperties.basename : formatValue(value);
|
|
748
758
|
const isPrimary = column === "file.name" || column === "title";
|
|
749
759
|
const columnWidth = view.columnSize?.[column];
|
|
750
760
|
const style = columnWidth ? { width: `${columnWidth}px`, minWidth: `${columnWidth}px` } : void 0;
|
|
@@ -924,6 +934,6 @@ var BasesBody_default = ((opts) => {
|
|
|
924
934
|
return Component;
|
|
925
935
|
});
|
|
926
936
|
|
|
927
|
-
export { BasesBody_default, ViewSelector, i18n, registerBuiltinViews, resolveBasesEntries };
|
|
928
|
-
//# sourceMappingURL=chunk-
|
|
929
|
-
//# sourceMappingURL=chunk-
|
|
937
|
+
export { BasesBody_default, ViewSelector, buildSelfContext, i18n, registerBuiltinViews, resolveBasesEntries };
|
|
938
|
+
//# sourceMappingURL=chunk-KR6MPURB.js.map
|
|
939
|
+
//# sourceMappingURL=chunk-KR6MPURB.js.map
|