import domReady from '@wordpress/dom-ready' import { applyFilters, doAction, } from '@wordpress/hooks' import { TailwindCompiler, TailwindFeatures, TailwindParser, groups, } from './tailwind' import { tailwind4 as tailwind4Options, } from './data' import registerSupports from './supports' import registerBlocks from './blocks' import registerPlugins from './plugins' import registerTransforms from './blocks/transforms' export * from './components' import './style.scss' export class SkaBlocks { #tailwindCompiler: TailwindCompiler | undefined #tailwindFeatures: TailwindFeatures | undefined #tailwindParser: TailwindParser | undefined init() { this.#tailwindCompiler = new TailwindCompiler() this.#tailwindCompiler.loadDesignSystem(tailwind4Options).then(() => { this.#tailwindFeatures = new TailwindFeatures(this, { groups: applyFilters('ska.blocks.tailwind.features', groups) as typeof groups, }) this.#tailwindParser = new TailwindParser(this) doAction('ska.blocks.beforeInit', this) registerPlugins() registerSupports() registerTransforms() /** Had issues with applying deprecation code when blocks weren't registered in `domReady`. */ domReady(() => { doAction('ska.blocks.beforeRegisterBlocks', this) registerBlocks(this) doAction('ska.blocks.afterRegisterBlocks', this) }) doAction('ska.blocks.afterInit', this) }) } get tailwind() { return this.#tailwindFeatures! } get compiler() { return this.#tailwindCompiler! } get parser() { return this.#tailwindParser! } } const SkaBlocksInstance = new SkaBlocks() export default SkaBlocksInstance