Index

JHSCompiler

MMO\client · 1 symbol · generated 5 Oct 2026

class

JHSCompiler

JHSCompiler.php:21
Specific attribute - jhs-compile: (html): will render the node without using open(). Usefull for really large html without binding values - bind-xxx: bind attribute `xxx` (when the attribute xxx, change, it update the view's model) - value: by default this attribute is always bind both ways - view-basepath: set the path to the view basepath (usefull for mmo custom elements)class MMO\client\JHSCompiler extends MMO\core\classes\aModule
Namespace
MMO\client
Extends
aModule

Index

customElementClass
errorTemplatetemplate to include when the compiler fails to compile
HTMLElements
sassElementSass code to include at the beginning of each styles in jhs custom elements.
sassViewSass code to include at the beginning of each styles in jhs view.
scsElementSimple CSS code to include at the beginning of each <style> of a jhs custom element.
scsOptions
scsViewSimple CSS code to include at the beginning of each <style> of a jhs view.
styleLanguage
viewClass
compile($filename, $files, $sassOpts, $debug, $scsOpts)
compileSass($source, $isView, $filename, $options, $debug)Compile the sass of one <style>, prefixed by the theme @use its context needs.
compileSCS($source, $isView, $filename, $options)Compile the Simple CSS of one <style>, prefixed by the prelude its context needs.
compileText($jhs, $sassOpts, $debug, $filename, $scsOpts)Compile JHS file A jhs file must at least have one root node with a custom tagname (with one hyphen) that defines a custom element: <xxx-xxx> To extend another element: <xxx-xxx is="div"> Styles an…
DefaultConfig() static
extractJSDoc($doc, $script)
__wakeup()

Properties10

customElementClass

string $customElementClass = 'MMO.elements.CustomShadowElement'
Type
string

errorTemplate

template to include when the compiler fails to compile

string $errorTemplate
Type
string

HTMLElements

array $HTMLElements = […108 items]
Type
array

sassElement

Sass code to include at the beginning of each styles in jhs custom elements.

string $sassElement
Type
string

sassView

Sass code to include at the beginning of each styles in jhs view.

string $sassView
Type
string

scsElement

Simple CSS code to include at the beginning of each <style> of a jhs custom element.

string $scsElement
Type
string

scsOptions

array $scsOptions
Type
array

scsView

Simple CSS code to include at the beginning of each <style> of a jhs view. It must not emit a rule: a view has no shadow root of its own, so its <style> lands wherever the view renders, and a rule that lands in the document applies to the whole page.

string $scsView
Type
string

styleLanguage

string $styleLanguage
Type
string
See
SCSCompiler) or sass (compiled by DartSass). It is scs, and no element of this package writes a lang any more -- a block that is still sass is the one that has to declare itself.

viewClass

string $viewClass = 'MMO.elements.View'
Type
string

Methods7

compile($filename, $files, $sassOpts, $debug, $scsOpts)

JHSCompiler.php:348
function compile( string $filename, array $files, array $sassOpts = [], bool $debug = true, array $scsOpts = [] ): void
$filenamestring
$filesarray
$sassOpts = []array
$debug = truebool
$scsOpts = []array
returnsvoid

compileSass($source, $isView, $filename, $options, $debug)

JHSCompiler.php:375

Compile the sass of one <style>, prefixed by the theme @use its context needs.

protected function compileSass( string $source, bool $isView, ?string $filename, array $options, bool $debug ): stringA sass error never fails the whole compilation: it is rendered as visible css, so the element still defines itself and the page shows what broke.
$sourcestring
$isViewbooltrue for a <view> (light dom), false for a custom element (shadow dom)
$filenamenull | string
$optionsarray
$debugbool
returnsstringthe generated css

compileSCS($source, $isView, $filename, $options)

JHSCompiler.php:397

Compile the Simple CSS of one <style>, prefixed by the prelude its context needs.

protected function compileSCS(string $source, bool $isView, ?string $filename, array $options): stringThe prelude ([`$scsElement`](https://mcp.mmoframework.fr/documentation/mmo.client/php/JHSCompiler.md#jhscompiler-scselement) / [`$scsView`](https://mcp.mmoframework.fr/documentation/mmo.client/php/JHSCompiler.md#jhscompiler-scsview)) brings in the design tokens and the `@style` library; `emitThemes` stays off ([`$scsOptions`](https://mcp.mmoframework.fr/documentation/mmo.client/php/JHSCompiler.md#jhscompiler-scsoptions)) so the element references the document's custom properties rather than redeclaring them inside its shadow root. Like sass, a compilation error becomes visible css instead of breaking the whole file.
$sourcestring
$isViewbooltrue for a <view> (light dom), false for a custom element (shadow dom)
$filenamenull | string
$optionsarraymerged over $scsOptions
returnsstringthe generated css

compileText($jhs, $sassOpts, $debug, $filename, $scsOpts)

JHSCompiler.php:229

Compile JHS file A jhs file must at least have one root node with a custom tagname (with one hyphen) that defines a custom element: <xxx-xxx> To extend another element: <xxx-xxx is="div"> Styles and script must be declared inside the custom element. A <style> is compiled with dart/sass, a Simple CSS <style> with SCSCompiler -- an element may hold both.

function compileText( MMO\client\jhs\Nodes|string $jhs, array $sassOpts = [], bool $debug = true, ?string $filename = null, array $scsOpts = [] ): string
$jhsNodes | stringthe jhs to compile
$sassOpts = []arraythe options to pass to the sass compiler
$debug = truebooltrue to get debugging information
$filename = nullnull | string[internal] current filename
$scsOpts = []arraythe options to pass to the scs compiler, merged over $scsOptions
returnsstring
Inherited members (47)
ConstantsDeclared byDescription
ALERTiLogLevelAlert: Action must be taken immediately.
ALLiLogLevelMask for all
ALL_PLUSiLogLeveldebug everything
BACKTRACEiLogLevel
CRITICALiLogLevelCritical: Critical conditions.
DEBUGiLogLevelDebug: Detailed debug information.
DEEPiLogLeveldebug everything with arguments
EMERGENCYiLogLevelEmergency: System is unusable.
ERRORiLogLevelError: Runtime errors that do not require immediate action but should typically be logged and monitored.
ERROR_PLUSiLogLevelMask for all error
FATALiLogLevelMask for all fatal error
INFOiLogLevelInfo: Interesting events.
INFO_PLUSiLogLevelMask for all errors/warning/notices/info
MEMORYiLogLevelinclude backtrace object
NOTICEiLogLevelNotice: Normal but significant events.
NOTICE_PLUSiLogLevelMask for all errors/warning/notices/info
TRACEiLogLevelinclude backtrace as origins
WARNINGiLogLevelWarning: Exceptional occurrences that are not errors.
WARNING_PLUSiLogLevelMask for all errors and warnings
PropertiesDeclared byDescription
verbosityaModule
MethodsDeclared byDescription
alert($message, $context)aModuleAction must be taken immediately.
backtraces($message, $context)aModuleForce-log a message at INFO level together with a full stack trace/memory snapshot (iLogLevel::BACKTRACE), bypassing the verbosity mask entirely (any non-zero verbosity is enough to trigger it).
Configure($config)aModuleMerge $config into this module's configuration in the shared Configuration.
critical($message, $context)aModuleCritical conditions. No-op if CRITICAL is currently filtered out by the verbosity mask.
debug($message, $context)aModuleDetailed debug information.
debugName()aModuleHuman-readable identifier used as the default {origin} in this instance's log messages.
emergency($message, $context)aModuleSystem is unusable. No-op if EMERGENCY is currently filtered out by the verbosity mask.
error($message, $context)aModuleRuntime errors that do not require immediate action but should typically be logged and monitored.
getVerbosity()aModule
info($message, $context)aModuleInteresting events. No-op if INFO is currently filtered out by the verbosity mask.
Instantiate($config)aModule(Re)create the shared instance immediately, configured with $config merged into the class's existing config.
IsShared()aModule
log($level, $message, $context)aModuleLogs with an arbitrary level.
notice($message, $context)aModuleNormal but significant events.
offsetExists($key)aModule\ArrayAccess::offsetExists -- tells whether $key is a declared property at all, regardless of whether it is currently readable/writable through array access.
offsetGet($key)aModule\ArrayAccess::offsetGet -- reads a property directly, unless it has a #[Serialize(serialize: 'methodName')] attribute, in which case that zero-argument method is called instead (e.g.
offsetSet($key, $value)aModule\ArrayAccess::offsetSet -- sets a property directly, unless it has a #[Serialize(unserialize: 'methodName')] attribute, in which case that method is called with $value instead (e.g.
offsetUnset($key)aModule\ArrayAccess::offsetUnset -- equivalent to $module[$key] = null.
serialize($path, $serializer)aModule\MMO\core\interfaces\iSerializable::serialize -- exports every property (via
setVerbosity($verb)aModuleSet the current verbosity mask, replacing whatever it was before.
Shared()aModuleGet the shared instance, creating (and configuring) it on first call.
testVerbosity($level)aModuleTest whether a given level (or set of levels) is currently enabled by this instance's verbosity mask.
traitUnshare($serialize)aModuleRemove the shared instance, so the next Shared() call creates a fresh one.
unserialize($data, $path, $instances)aModule\MMO\core\interfaces\iSerializable::unserialize -- merges $data onto DefaultConfig, runs it through the (possibly overridden) constructor, then applies each resulting value to its property (via
Unshare($serialize)aModuleLike tSingleton::Unshare, but also disconnects this module's instance from every event it was listening to (via Event::DisconnectListeners) before dropping it.
warning($message, $context)aModuleExceptional occurrences that are not errors.
__construct($config)aModuleprotected constructor, so it is not possible to do new Module(...) called by the serialization process just before being injected with data.