// Pyscript #let state-use-pyscript = state("state-use-pyscript", false) #let state-pyscript-version = state("state-pyscript-version", none) #let state-pyscript-data-list = state("state-pyscript-data-list", (:)) #let state-pyscript-interpreters = state("state-pyscript-interpreters", (:)) #let state-pyscript-default-interpreter = state("state-pyscript-default-interpreter", none) #let state-pyscript-canvas-ids = state("state-pyscript-canvas-ids", ()) #let reset-pyscript-page-states() = { state-use-pyscript.update(x => false) state-pyscript-version.update(x => state-pyscript-version) state-pyscript-data-list.update(x => (:)) state-pyscript-interpreters.update(x => (:)) state-pyscript-default-interpreter.update(x => none) state-pyscript-canvas-ids.update(x => ()) } // CSS / JS / misc tags #let current-page-label = state("current-page-label", none) #let css-list = state("css-list", ()) #let js-list = state("js-list", ()) #let additionnal-head-tags = state("additionnal-head-tags", ()) /// Add string `css` to `css-list` if not already present #let add-css(css) = context { css-list.update(x => if css in x { x } else { x + (css,) }) } /// Add string `js` to `js-list` if not already present #let add-js(js) = context { js-list.update(x => if js in x { x } else { x + (js,) }) } /// Add additionnal html tag to insert in #let add-tag-in-head(tag) = context { additionnal-head-tags.update(x => if tag in x { x } else { x + (tag, ) }) } /// Concatenate all css found in css-list at the end of the document #let get-css(page-label) = context { let end-page-label = label(str(page-label) + "-end") if css-list.at(end-page-label) != () { html.style(css-list.at(end-page-label).join("\n\n")) } else {} } /// Concatenate all js found in js-list at the end of the document #let get-js(page-label) = context { let end-page-label = label(str(page-label) + "-end") if js-list.at(end-page-label) != () { html.script(js-list.at(end-page-label).join("\n\n")) } else {} } #let reset-page-states() = { current-page-label.update(x => none) css-list.update(x => ()) js-list.update(x => ()) additionnal-head-tags.update(x => ()) reset-pyscript-page-states() }