diff --git a/packages/css-blocks/src/Block/Block.ts b/packages/css-blocks/src/Block/Block.ts index cedd83c52..28ddbc2a9 100644 --- a/packages/css-blocks/src/Block/Block.ts +++ b/packages/css-blocks/src/Block/Block.ts @@ -1,261 +1,49 @@ +import * as postcss from 'postcss'; +import { ObjectDictionary, MultiMap, assertNever } from "@opticss/util"; +import selectorParser = require('postcss-selector-parser'); + +import { FileIdentifier } from "../importing"; +import { LocalScopedContext } from "../util/LocalScope"; +import { CssBlockError } from "../errors"; +import { OptionsReader } from "../OptionsReader"; +import { CLASS_NAME_IDENT, ROOT_CLASS } from "../BlockSyntax"; + +import { Source } from "./BlockTree"; +import { BlockClass } from "./BlockClass"; +import { State } from "./State"; +import { BlockPath } from "../BlockSyntax"; + import { - Attr, - Attribute, - AttributeNS, - AttributeValueChoice, - ValueAbsent, - ValueConstant, -} from "@opticss/element-analysis"; -import { assertNever, MultiMap, ObjectDictionary, objectValues, whatever } from "@opticss/util"; -import { - CompoundSelector, - ParsedSelector, - parseSelector, SelectorFactory, + parseSelector, + ParsedSelector, + CompoundSelector } from "opticss"; -import * as postcss from "postcss"; -import selectorParser = require("postcss-selector-parser"); - import { - BlockType, + stateParser, isClassNode, isStateNode, NodeAndType, - stateParser, + BlockType } from "../BlockParser"; -import { StateInfo } from "../BlockParser/block-intermediates"; -import { CLASS_NAME_IDENT } from "../BlockSyntax"; -import { OptionsReader } from "../OptionsReader"; -import { OutputMode } from "../OutputMode"; -import { CssBlockError } from "../errors"; -import { FileIdentifier } from "../importing"; -import { HasLocalScope, HasScopeLookup, LocalScopedContext } from "../util/LocalScope"; -import { unionInto } from "../util/unionInto"; -import { RulesetContainer } from "./RulesetContainer"; +export type Style = BlockClass | State; export const OBJ_REF_SPLITTER = (s: string): [string, string] | undefined => { - let index = s.indexOf("."); - if (index < 0) index = s.indexOf("["); + let index = s.indexOf('.'); + if (index < 0) index = s.indexOf('['); if (index >= 0) { return [s.substr(0, index), s.substring(index)]; } return; }; -export type Style = BlockClass | State | SubState; -export type StyleContainer = Block | BlockClass | State; - -/** - * Abstract class that serves as the base for all Styles. Contains basic - * properties and abstract methods that extenders must implement. - */ -export abstract class BlockObject { - public readonly rulesets: RulesetContainer; - - protected _name: string; - protected _container: ContainerType; - - /** cache of resolveStyles() */ - private _resolvedStyles: Set