TitleElement.js — svelte Source File
Architecture documentation for TitleElement.js, a javascript file in the svelte codebase. 4 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR f8561a4f_8669_f7da_9b3c_fd7e65e998a5["TitleElement.js"] d04d7971_88df_542d_dd4f_26170ce6f581["utils.js"] f8561a4f_8669_f7da_9b3c_fd7e65e998a5 --> d04d7971_88df_542d_dd4f_26170ce6f581 f3280f06_553d_66c3_8ca2_c3c36dcdda64["build_template_chunk"] f8561a4f_8669_f7da_9b3c_fd7e65e998a5 --> f3280f06_553d_66c3_8ca2_c3c36dcdda64 be60a9d7_77eb_5ad3_ab7e_2f9bd93a3db1["Memoizer"] f8561a4f_8669_f7da_9b3c_fd7e65e998a5 --> be60a9d7_77eb_5ad3_ab7e_2f9bd93a3db1 95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"] f8561a4f_8669_f7da_9b3c_fd7e65e998a5 --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc 7665e008_f37d_b860_a594_f2539a66af4e["transform-client.js"] 7665e008_f37d_b860_a594_f2539a66af4e --> f8561a4f_8669_f7da_9b3c_fd7e65e998a5 style f8561a4f_8669_f7da_9b3c_fd7e65e998a5 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { AST } from '#compiler' */
/** @import { ComponentContext } from '../types' */
import * as b from '#compiler/builders';
import { build_template_chunk, Memoizer } from './shared/utils.js';
/**
* @param {AST.TitleElement} node
* @param {ComponentContext} context
*/
export function TitleElement(node, context) {
const memoizer = new Memoizer();
const { has_state, value } = build_template_chunk(
/** @type {any} */ (node.fragment.nodes),
context,
context.state,
(value, metadata) => memoizer.add(value, metadata)
);
const evaluated = context.state.scope.evaluate(value);
const statement = b.stmt(
b.assignment(
'=',
b.member(b.id('$.document'), b.id('title', node.name_loc)),
evaluated.is_known
? b.literal(evaluated.value)
: evaluated.is_defined
? value
: b.logical('??', value, b.literal(''))
)
);
// Make sure it only changes the title once async work is done
if (has_state) {
context.state.after_update.push(
b.stmt(
b.call(
'$.deferred_template_effect',
b.arrow(memoizer.apply(), b.block([statement])),
memoizer.sync_values(),
memoizer.async_values(),
memoizer.blockers()
)
)
);
} else {
context.state.after_update.push(b.stmt(b.call('$.effect', b.thunk(b.block([statement])))));
}
}
Domain
Subdomains
Functions
Dependencies
Source
Frequently Asked Questions
What does TitleElement.js do?
TitleElement.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Transformer subdomain.
What functions are defined in TitleElement.js?
TitleElement.js defines 1 function(s): TitleElement.
What does TitleElement.js depend on?
TitleElement.js imports 4 module(s): Memoizer, build_template_chunk, builders, utils.js.
What files import TitleElement.js?
TitleElement.js is imported by 1 file(s): transform-client.js.
Where is TitleElement.js in the architecture?
TitleElement.js is located at packages/svelte/src/compiler/phases/3-transform/client/visitors/TitleElement.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/client/visitors).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free