{"version":3,"sources":["../src/process/Scope.ts"],"sourcesContent":["import { Enum } from '../types/Enum';\nimport { text } from '../types/Template';\nimport type { Text } from '../types/Text';\nimport { List, toList } from '../types/List';\nimport { IdName } from '../types/Identity';\nimport { isString } from '../types/Is';\nimport { kebab } from '../types/Text';\n\nexport class Scope extends Enum {\n  protected constructor(\n    readonly name: string,\n    id: Text = text(name).kebab,\n    readonly subs: List<Scope> = toList()\n  ) {\n    super(name, id.toString());\n  }\n\n  for(item: string | IdName): Scope {\n    return new Scope(`${this.name} ${isString(item) ? text(item).title : item.name}`, kebab(`${this.id} ${isString(item) ? item : item.id}`));\n  }\n\n  combines(...scopes: Scope[]): this {\n    this.subs.add(scopes);\n    return this;\n  }\n\n  expand(): List<Scope> {\n    return this.subs\n      .flatMap(s => s.expand())\n      .add(this)\n      .distinct();\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAQO,IAAM,QAAN,MAAM,eAAc,KAAK;AAAA,EACpB,YACC,MACT,KAAW,KAAK,IAAI,EAAE,OACb,OAAoB,OAAO,GACpC;AACA,UAAM,MAAM,GAAG,SAAS,CAAC;AAJhB;AAEA;AAAA,EAGX;AAAA,EAEA,IAAI,MAA8B;AAChC,WAAO,IAAI,OAAM,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,IAAI,MAAM,GAAG,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;AAAA,EAC1I;AAAA,EAEA,YAAY,QAAuB;AACjC,SAAK,KAAK,IAAI,MAAM;AACpB,WAAO;AAAA,EACT;AAAA,EAEA,SAAsB;AACpB,WAAO,KAAK,KACT,QAAQ,OAAK,EAAE,OAAO,CAAC,EACvB,IAAI,IAAI,EACR,SAAS;AAAA,EACd;AACF;","names":[]}