@mrts/soltw 0.3.2 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -3,6 +3,7 @@
3
3
  var web = require('solid-js/web');
4
4
  var solidJs = require('solid-js');
5
5
  var tailwindMerge = require('tailwind-merge');
6
+ var common = require('@mrts/common');
6
7
 
7
8
  function buildIdLabel(arg) {
8
9
  if (typeof arg == "string") {
@@ -24,24 +25,6 @@ function buildIdLabel(arg) {
24
25
  }
25
26
  }
26
27
 
27
- function splitCleanString(s, options = {}) {
28
- const separator = options.separator ?? /\s+/;
29
- const filter = options.filter ?? (s => s.length > 0);
30
- const r = s.split(separator).filter(filter);
31
- return r;
32
- }
33
- function deduplicate(items) {
34
- const r = [];
35
- const itemSet = new Set();
36
- for (const item of items) {
37
- if (!itemSet.has(item)) {
38
- r.push(item);
39
- itemSet.add(item);
40
- }
41
- }
42
- return r;
43
- }
44
-
45
28
  class SVTStylerNormalizer {
46
29
  constructor(styler) {
47
30
  this.styler = styler;
@@ -52,7 +35,7 @@ class SVTStylerNormalizer {
52
35
  }
53
36
  }
54
37
  function twMergeNormalize(raw) {
55
- return splitCleanString(tailwindMerge.twMerge(...raw));
38
+ return common.tokenizeFilterString(tailwindMerge.twMerge(...raw));
56
39
  }
57
40
  function mainTagNormalize(rawTags, defaultTag) {
58
41
  const rhead = [];
@@ -99,18 +82,19 @@ function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
99
82
  return r;
100
83
  }
101
84
 
102
- function normalizeTagListArgument(arg) {
103
- if (typeof arg == "string") {
104
- return splitCleanString(arg);
105
- } else if (Array.isArray(arg)) {
106
- const r = [];
107
- for (const a of arg) {
108
- r.push(...normalizeTagListArgument(a));
109
- }
110
- return r;
111
- }
112
- return [];
113
- }
85
+ // export function normalizeTagListArgument(arg: TagListArgument): string[] {
86
+ // if (typeof arg == "string") {
87
+ // return splitCleanString(arg);
88
+ // } else if (Array.isArray(arg)) {
89
+ // const r = [];
90
+ // for (const a of arg) {
91
+ // r.push(...normalizeTagListArgument(a));
92
+ // }
93
+ // return r;
94
+ // }
95
+ // return [];
96
+ // }
97
+
114
98
  function tagRuleMatches(rule, candidateTags) {
115
99
  if (rule.mode == "any") {
116
100
  return true;
@@ -155,8 +139,8 @@ class SVTStyler {
155
139
  }
156
140
  classes(stags, vtags) {
157
141
  const r = [];
158
- let stagsNormalized = normalizeTagListArgument(stags);
159
- let vtagsNormalized = normalizeTagListArgument(vtags);
142
+ let stagsNormalized = common.argTokenizeBySpaces(stags);
143
+ let vtagsNormalized = common.argTokenizeBySpaces(vtags);
160
144
  if (this.options.stagsNormaliser) {
161
145
  stagsNormalized = this.options.stagsNormaliser(stagsNormalized);
162
146
  }
@@ -173,9 +157,9 @@ class SVTStyler {
173
157
  static normalizeRule(rule) {
174
158
  let stagMode = rule.stagMode ?? "or";
175
159
  let vtagMode = rule.vtagMode ?? "or";
176
- let stags = deduplicate(normalizeTagListArgument(rule.stags));
177
- let vtags = deduplicate(normalizeTagListArgument(rule.vtags));
178
- let classes = deduplicate(normalizeTagListArgument(rule.classes));
160
+ let stags = common.deduplicate(common.argTokenizeBySpaces(rule.stags));
161
+ let vtags = common.deduplicate(common.argTokenizeBySpaces(rule.vtags));
162
+ let classes = common.deduplicate(common.argTokenizeBySpaces(rule.classes));
179
163
  if (rule.stags == undefined && rule.stagMode == undefined) {
180
164
  stagMode = "any";
181
165
  }
@@ -390,6 +374,50 @@ const Block = props => {
390
374
  });
391
375
  };
392
376
 
377
+ function buildTokenizeFuncUsingSplitters(splitters) {
378
+ splitters = Array.isArray(splitters) ? splitters : [splitters];
379
+ const tokenize = s => {
380
+ let r = s.split(splitters[0]).filter(t => t != "" && t != undefined);
381
+ for (const splitter of splitters.slice(1)) {
382
+ const r0 = [...r];
383
+ r = [];
384
+ for (const s of r0) {
385
+ r.push(...tokenizeFilterString(s, {
386
+ splitter,
387
+ filter: t => t != "" && t != undefined
388
+ }));
389
+ //r.push(...s.split(splitter).filter((t) => t != "" && t != undefined));
390
+ }
391
+ }
392
+ return r;
393
+ };
394
+ return tokenize;
395
+ }
396
+ function buildArgTokenizeFunc(tokenize) {
397
+ const argTokenize = arg => {
398
+ if (arg == undefined) {
399
+ return [];
400
+ } else if (Array.isArray(arg)) {
401
+ const r = [];
402
+ for (const a of arg) {
403
+ r.push(...argTokenize(a));
404
+ }
405
+ return r;
406
+ } else {
407
+ return tokenize(arg);
408
+ }
409
+ };
410
+ return argTokenize;
411
+ }
412
+ const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\s+/);
413
+ const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);
414
+ function tokenizeFilterString(s, options = {}) {
415
+ const separator = options.splitter ?? /\s+/;
416
+ const filter = options.filter ?? (s => s.length > 0);
417
+ const r = s.split(separator).filter(filter);
418
+ return r;
419
+ }
420
+
393
421
  const ItemGroup = props => {
394
422
  const items = () => props.items.map(buildIdLabel);
395
423
  const currentVTags = solidJs.createMemo(() => {
@@ -397,10 +425,10 @@ const ItemGroup = props => {
397
425
  const group = [];
398
426
  const _vtags = props.vtags;
399
427
  if (Array.isArray(_vtags) || typeof _vtags == "string") {
400
- group.push(...normalizeTagListArgument(_vtags));
401
- } else if (typeof _vtags == "object") {
402
- group.push(...normalizeTagListArgument(_vtags.group));
403
- item.push(...normalizeTagListArgument(_vtags.item));
428
+ group.push(...argTokenizeBySpaces(_vtags));
429
+ } else if (typeof _vtags == "object" && _vtags != null) {
430
+ group.push(...argTokenizeBySpaces(_vtags.group));
431
+ item.push(...argTokenizeBySpaces(_vtags.item));
404
432
  }
405
433
  return {
406
434
  group,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/utils.ts","../../src/stylers/stylersUtils.ts","../../src/stylers/tagRules.ts","../../src/stylers/SVTStyler.ts","../../src/stylers/base.styler.ts","../../src/stylers/Stylers.ts","../../src/items/Item.tsx","../../src/Block.tsx","../../src/items/ItemGroup.tsx","../../src/soltw.tsx"],"sourcesContent":["export interface IdLabel {\n id: string;\n label: string;\n [x: string | symbol]: unknown;\n}\n\nexport type IdLabelDef = {\n id: string;\n label?: string;\n [x: string | symbol]: unknown;\n};\n\nexport type IdLabelArg = IdLabelDef | [string, string] | string;\n\nexport function buildIdLabel(arg: IdLabelArg): IdLabel {\n if (typeof arg == \"string\") {\n return { id: arg, label: arg };\n } else if (Array.isArray(arg)) {\n return { id: arg[0], label: arg[1] };\n } else {\n const r = Object.assign({}, arg);\n if (r.label == undefined) {\n r[\"label\"] = r.id;\n }\n return r as IdLabel;\n }\n}\n\n","export function splitCleanString(\n s: string,\n options: { separator?: string | RegExp; filter?: (s: string) => boolean } = {}\n): string[] {\n const separator = options.separator ?? /\\s+/;\n const filter = options.filter ?? ((s: string) => s.length > 0);\n const r = s.split(separator).filter(filter);\n return r;\n}\n\nexport function deduplicate<T>(items: T[]): T[] {\n const r = [] as T[];\n const itemSet = new Set<T>();\n for (const item of items) {\n if (!itemSet.has(item)) {\n r.push(item);\n itemSet.add(item);\n }\n }\n\n return r;\n}\n","import { twMerge } from \"tailwind-merge\";\nimport type { ISVTStyler, TagListArgument } from \"./types.js\";\nimport { splitCleanString } from \"./utils.js\";\n\nexport class SVTStylerNormalizer implements ISVTStyler {\n constructor(private readonly styler: ISVTStyler) {}\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = this.styler.classes(stags, vtags);\n return r ?? [];\n }\n}\n\nexport function twMergeNormalize(raw: string[]): string[] {\n return splitCleanString(twMerge(...raw));\n}\n\nexport function mainTagNormalize(\n rawTags: string[],\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tag.length == 1 && tag.toUpperCase() == tag) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n // console.log(\"MAIN TAGS NORM:\", rawTags, r);\n return r;\n}\n\nexport function exlusiveTagNormalize(\n rawTags: string[],\n tagSet: Set<String>,\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tagSet.has(tag)) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n //console.log(\"EXCLU TAGS NORM:\", rawTags, r);\n return r;\n}\n","import type { TagListArgument, TagRule } from \"./types.js\";\nimport { splitCleanString } from \"./utils.js\";\n\n\n\nexport function normalizeTagListArgument(arg: TagListArgument): string[] {\n if (typeof arg == \"string\") {\n return splitCleanString(arg);\n } else if (Array.isArray(arg)) {\n const r = [];\n for (const a of arg) {\n r.push(...normalizeTagListArgument(a));\n }\n return r;\n }\n return [];\n}\n\n\nexport function tagRuleMatches(\n rule:TagRule,\n candidateTags: string[]\n) {\n if (rule.mode == \"any\") {\n return true;\n } else if (rule.mode == \"or\") {\n for (const ctag of candidateTags) {\n if (rule.tags.indexOf(ctag) >= 0) {\n return true;\n }\n }\n return false;\n } else if (rule.mode == \"and\") {\n for (const rtag of rule.tags) {\n if (candidateTags.indexOf(rtag) < 0) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { normalizeTagListArgument, tagRuleMatches } from \"./tagRules.js\";\nimport type {\n ISVTStyler,\n TagListArgument,\n TagRule,\n TagRuleMode,\n} from \"./types.js\";\nimport { deduplicate } from \"./utils.js\";\n\nexport type SVTRule = {\n stagRule: TagRule;\n vtagRule: TagRule;\n classes: string[];\n};\n\nexport type SVTRuleDef = {\n stagMode?: TagRuleMode;\n vtagMode?: TagRuleMode;\n stags?: TagListArgument;\n vtags?: TagListArgument;\n classes?: TagListArgument;\n};\n\ntype SVTStylerOptions = {\n normalizer?: (rawClasses: string[]) => string[];\n stagsNormaliser?: (rawTags: string[]) => string[];\n vtagsNormaliser?: (rawTags: string[]) => string[];\n};\n\nexport class SVTStyler implements ISVTStyler {\n readonly _rules: SVTRule[] = [];\n readonly options: SVTStylerOptions;\n\n constructor(rules: SVTRuleDef[], options: SVTStylerOptions = {}) {\n for (const r of rules) {\n this._rules.push(SVTStyler.normalizeRule(r));\n }\n this.options = { ...options };\n }\n\n with(rules: SVTRuleDef[], options: SVTStylerOptions = {}): SVTStyler {\n const addedRules: SVTRule[] = [];\n for (const r of rules) {\n addedRules.push(SVTStyler.normalizeRule(r));\n }\n\n const styler = new SVTStyler([], { ...this.options });\n styler._rules.push(...this._rules, ...addedRules);\n return styler;\n }\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = [] as string[];\n\n let stagsNormalized = normalizeTagListArgument(stags);\n let vtagsNormalized = normalizeTagListArgument(vtags);\n\n if (this.options.stagsNormaliser) {\n stagsNormalized = this.options.stagsNormaliser(stagsNormalized);\n }\n if (this.options.vtagsNormaliser) {\n vtagsNormalized = this.options.vtagsNormaliser(vtagsNormalized);\n }\n\n for (const rule of this._rules) {\n if (this.ruleMatches(rule, stagsNormalized, vtagsNormalized)) {\n r.push(...rule.classes);\n }\n }\n\n return this.options.normalizer ? this.options.normalizer(r) : r;\n }\n\n static normalizeRule(rule: SVTRuleDef): SVTRule {\n let stagMode: TagRuleMode = rule.stagMode ?? \"or\";\n let vtagMode: TagRuleMode = rule.vtagMode ?? \"or\";\n let stags: string[] = deduplicate(normalizeTagListArgument(rule.stags));\n let vtags: string[] = deduplicate(normalizeTagListArgument(rule.vtags));\n let classes: string[] = deduplicate(normalizeTagListArgument(rule.classes));\n\n if (rule.stags == undefined && rule.stagMode == undefined) {\n stagMode = \"any\";\n }\n if (rule.vtags == undefined && rule.vtagMode == undefined) {\n vtagMode = \"any\";\n }\n\n return {\n stagRule: { mode: stagMode, tags: stags },\n vtagRule: { mode: vtagMode, tags: vtags },\n classes,\n };\n }\n\n ruleMatches(rule: SVTRule, stags: string[], vtags: string[]) {\n return (\n tagRuleMatches(rule.stagRule, stags) &&\n tagRuleMatches(rule.vtagRule, vtags)\n );\n }\n}\n","import {\n mainTagNormalize,\n twMergeNormalize,\n exlusiveTagNormalize,\n} from \"./stylersUtils.js\";\nimport { SVTStyler } from \"./SVTStyler.js\";\n\n\nexport const baseStyler = new SVTStyler(\n [\n {\n vtags: \"A\",\n classes: \"bg-slate-100 text-slate-800\",\n },\n {\n vtags: \"B\",\n classes: \"bg-slate-800 text-slate-100\",\n },\n {\n vtags: \"C\",\n classes: \"bg-stone-300 text-orange-950\",\n },\n { \n vtags: \"D\",\n classes: \"bg-orange-900 text-stone-100\",\n },\n {\n vtags: \"LG\",\n classes: \"text-xl p-2\",\n },\n {\n vtags: \"BASE\",\n classes: \"text-base p-1\",\n },\n {\n vtags: \"SM\",\n classes: \"text-sm p-0.5\",\n },\n {\n vtags: \"LG\",\n stags: \"item\",\n classes: \"text-xl px-2 py-1\",\n },\n {\n vtags: \"BASE\",\n stags: \"item\",\n classes: \"text-base px-1 py-0.5\",\n },\n {\n vtags: \"SM\",\n stags: \"item\",\n classes: \"text-sm p-0.5\",\n },\n {\n stags: \"item:selected\",\n classes: \"underline font-bold\",\n },\n {\n stags: \"item:disabled\",\n classes: \"blur-[1px]\",\n },\n {\n stags: \"item/disabler\",\n classes: \"bg-slate-300/85 cursor-not-allowed\",\n },\n ],\n {\n normalizer: twMergeNormalize,\n vtagsNormaliser: (tags) =>\n exlusiveTagNormalize(\n mainTagNormalize(tags, \"A\"),\n new Set([\"SM\", \"BASE\", \"LG\"]),\n \"BASE\"\n ),\n }\n);\n","import type { ISVTStyler } from \"./types.js\";\nimport {baseStyler} from \"./base.styler.js\";\n\nexport class Stylers {\n private static _base: ISVTStyler | undefined;\n private static _stylersMap = new Map<string, ISVTStyler>();\n\n static get base(): ISVTStyler | undefined {\n return this._base;\n }\n static setBase(base: ISVTStyler | undefined) {\n return (this._base = base);\n }\n static {\n this._stylersMap.set(\"default\", baseStyler)\n this.setBase(baseStyler);\n }\n\n static get(name: string): ISVTStyler | undefined {\n return this._stylersMap.get(name);\n }\n}\n","import { type Component, createMemo, Show } from \"solid-js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { type ISVTStyler, type TagListArgument } from \"../stylers/index.js\";\nimport { Stylers } from \"../stylers/Stylers.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\n\nexport type TItemClass = {\n item?: string;\n selected?: string;\n disabled?: string;\n disabler?: string;\n};\nexport type TItemClassArg = TItemClass|string;\n\nexport type TItemProps = {\n idLabel: IdLabelArg;\n callback?: (item: IdLabel) => void;\n selected?: boolean;\n disabled?: boolean;\n clickableWhendisabled?: boolean;\n styler?: ISVTStyler;\n vtags?: TagListArgument;\n class?: TItemClassArg;\n};\n\nexport const Item: Component<TItemProps> = (props) => {\n const itemData = () => buildIdLabel(props.idLabel);\n\n const currentSTags = () => {\n const r = [] as string[];\n r.push(\"item\");\n if (props.selected) {\n r.push(\"item:selected\");\n }\n if (props.disabled) {\n r.push(\"item:disabled\");\n }\n return r;\n };\n\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n const classProp = createMemo<TItemClass>(() => {\n if (props.class == undefined) {\n return {};\n } else if (typeof props.class == \"string\") {\n return { item: props.class };\n } else {\n return props.class;\n }\n });\n\n const itemClasses = createMemo(() => {\n const stags = currentSTags();\n\n const styler = currentStyler();\n\n const rawClasses = [] as (string | undefined)[];\n\n const stylerClasses = styler\n ? styler.classes(stags, props.vtags)\n : undefined;\n rawClasses.push(...(stylerClasses ?? []));\n\n if (props.callback) {\n rawClasses.push(\"select-none cursor-pointer\");\n }\n\n const customClasses = classProp();\n if (customClasses.item) {\n rawClasses.push(customClasses.item);\n }\n if (props.selected && customClasses.selected) {\n rawClasses.push(customClasses.selected);\n }\n if (props.disabled && customClasses.disabled) {\n rawClasses.push(customClasses.disabled);\n }\n\n rawClasses.push(\"relative\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n const disablerClasses = createMemo(() => {\n const rawClasses = [] as string[];\n if (currentStyler()) {\n rawClasses.push(\n ...currentStyler()!.classes(\"item/disabler\", props.vtags)!\n );\n }\n if (classProp().disabler) {\n rawClasses.push(classProp().disabler!);\n }\n rawClasses.push(\"absolute inset-0\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n function handleClick() {\n if (props.callback != undefined) {\n props.callback(itemData());\n }\n }\n\n return (\n <div onClick={handleClick} class={itemClasses()}>\n {itemData().label}\n <Show when={props.disabled}>\n <div\n class={disablerClasses()}\n onClick={(e) => {\n if (!props.clickableWhendisabled) {\n e.stopPropagation();\n }\n }}\n ></div>\n </Show>\n </div>\n );\n};\n","import type { Component, ParentProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { type ISVTStyler, Stylers, type TagListArgument } from \"./stylers/index.js\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype TProps = ParentProps & {\n vtags?: TagListArgument;\n styler?: ISVTStyler;\n class?: string;\n element?: string;\n};\n\n\nexport const Block: Component<TProps> = (props) => {\n const elementTag = () => props.element ?? \"div\";\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n function blockClasses() {\n const stags = \"block\";\n const classes = currentStyler()!.classes(stags, props.vtags) ?? [];\n if (props.class) {\n classes.push(props.class);\n }\n return twMerge(classes);\n }\n\n return (\n <Dynamic component={elementTag()} class={blockClasses()}>\n {props.children}\n </Dynamic>\n );\n};\n","import { twMerge } from \"tailwind-merge\";\nimport { Block } from \"../Block.jsx\";\nimport { Item, type TItemClassArg } from \"./Item.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\nimport { type Component, createMemo, For } from \"solid-js\";\nimport { type TagListArgument } from \"../stylers/types.js\";\nimport { normalizeTagListArgument } from \"../stylers/tagRules.js\";\n\ntype TProps = {\n items: IdLabelArg[];\n callback?: (item: IdLabel) => void;\n class?: string | { group?: string; item?: TItemClassArg };\n selection?: string | { [id: string]: boolean };\n vtags?: TagListArgument | { group?: TagListArgument; item?: TagListArgument };\n};\n\nexport const ItemGroup: Component<TProps> = (props) => {\n const items = () => props.items.map(buildIdLabel);\n\n const currentVTags = createMemo<{ group: string[]; item?: string[] }>(() => {\n const item = [] as string[];\n const group = [] as string[];\n const _vtags = props.vtags;\n if (Array.isArray(_vtags) || typeof _vtags == \"string\") {\n group.push(...normalizeTagListArgument(_vtags));\n } else if (typeof _vtags == \"object\") {\n group.push(...normalizeTagListArgument(_vtags.group));\n item.push(...normalizeTagListArgument(_vtags.item));\n }\n return { group, item };\n });\n\n const classes = createMemo(() => {\n let group = \"\";\n let item: TItemClassArg = \"\";\n if (typeof props.class == \"string\") {\n group = props.class;\n } else if (props.class != undefined) {\n props.class;\n group = props.class.group ?? \"\";\n item = props.class.item ?? \"\";\n }\n\n return { group, item };\n });\n\n const blockClasses = () => {\n return twMerge(\"flex flex-row gap-1\", classes().group);\n };\n\n const itemClasses = () => {\n return classes().item;\n };\n\n const callCallback = (item: IdLabel) => {\n if (props.callback) {\n props.callback( item);\n }\n };\n\n const itemSelected = (id: string) => {\n if (typeof props.selection == \"string\") {\n return id == props.selection;\n } else if (typeof props.selection == \"object\") {\n return !!props.selection[id];\n }\n return false;\n };\n\n return (\n <Block class={blockClasses()} vtags={currentVTags().group}>\n <For each={items()}>\n {(item) => {\n return (\n <Item\n idLabel={item}\n selected={itemSelected(item.id)}\n callback={() => callCallback(item)}\n class={itemClasses()}\n vtags={currentVTags().item}\n ></Item>\n );\n }}\n </For>\n </Block>\n );\n};\n","import type { Component } from \"solid-js\";\n\ntype TProps = {}\n\nexport const SolTw : Component<TProps> = (props) =>{\n return <div class=\"bg-red-600\">- - S O L T W - -</div>\n}\n\n\n"],"names":["buildIdLabel","arg","id","label","Array","isArray","r","Object","assign","undefined","splitCleanString","s","options","separator","filter","length","split","deduplicate","items","itemSet","Set","item","has","push","add","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","toUpperCase","exlusiveTagNormalize","tagSet","normalizeTagListArgument","a","tagRuleMatches","rule","candidateTags","mode","ctag","tags","indexOf","SVTStyler","_rules","rules","normalizeRule","with","addedRules","stagsNormalized","vtagsNormalized","stagsNormaliser","vtagsNormaliser","ruleMatches","normalizer","stagMode","vtagMode","stagRule","vtagRule","baseStyler","Stylers","_stylersMap","Map","base","_base","setBase","set","get","name","Item","props","itemData","idLabel","currentSTags","selected","disabled","currentStyler","classProp","createMemo","class","itemClasses","rawClasses","stylerClasses","callback","customClasses","disablerClasses","disabler","handleClick","_el$","_tmpl$","$$click","_$insert","_$createComponent","Show","when","children","_el$2","e","clickableWhendisabled","stopPropagation","_$effect","_$className","_$delegateEvents","Block","elementTag","element","blockClasses","Dynamic","component","ItemGroup","map","currentVTags","group","_vtags","callCallback","itemSelected","selection","For","each","SolTw"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/stylersUtils.ts","../../src/stylers/tagRules.ts","../../src/stylers/SVTStyler.ts","../../src/stylers/base.styler.ts","../../src/stylers/Stylers.ts","../../src/items/Item.tsx","../../src/Block.tsx","../../../common/dist/strings/tokenize.js","../../src/items/ItemGroup.tsx","../../src/soltw.tsx"],"sourcesContent":["export interface IdLabel {\n id: string;\n label: string;\n [x: string | symbol]: unknown;\n}\n\nexport type IdLabelDef = {\n id: string;\n label?: string;\n [x: string | symbol]: unknown;\n};\n\nexport type IdLabelArg = IdLabelDef | [string, string] | string;\n\nexport function buildIdLabel(arg: IdLabelArg): IdLabel {\n if (typeof arg == \"string\") {\n return { id: arg, label: arg };\n } else if (Array.isArray(arg)) {\n return { id: arg[0], label: arg[1] };\n } else {\n const r = Object.assign({}, arg);\n if (r.label == undefined) {\n r[\"label\"] = r.id;\n }\n return r as IdLabel;\n }\n}\n\n","import { twMerge } from \"tailwind-merge\";\nimport type { ISVTStyler, TagListArgument } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\nexport class SVTStylerNormalizer implements ISVTStyler {\n constructor(private readonly styler: ISVTStyler) {}\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = this.styler.classes(stags, vtags);\n return r ?? [];\n }\n}\n\nexport function twMergeNormalize(raw: string[]): string[] {\n return tokenizeFilterString(twMerge(...raw));\n}\n\nexport function mainTagNormalize(\n rawTags: string[],\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tag.length == 1 && tag.toUpperCase() == tag) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n // console.log(\"MAIN TAGS NORM:\", rawTags, r);\n return r;\n}\n\nexport function exlusiveTagNormalize(\n rawTags: string[],\n tagSet: Set<String>,\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tagSet.has(tag)) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n //console.log(\"EXCLU TAGS NORM:\", rawTags, r);\n return r;\n}\n","import type { TagListArgument, TagRule } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\n\n\n// export function normalizeTagListArgument(arg: TagListArgument): string[] {\n// if (typeof arg == \"string\") {\n// return splitCleanString(arg);\n// } else if (Array.isArray(arg)) {\n// const r = [];\n// for (const a of arg) {\n// r.push(...normalizeTagListArgument(a));\n// }\n// return r;\n// }\n// return [];\n// }\n\n\nexport function tagRuleMatches(\n rule:TagRule,\n candidateTags: string[]\n) {\n if (rule.mode == \"any\") {\n return true;\n } else if (rule.mode == \"or\") {\n for (const ctag of candidateTags) {\n if (rule.tags.indexOf(ctag) >= 0) {\n return true;\n }\n }\n return false;\n } else if (rule.mode == \"and\") {\n for (const rtag of rule.tags) {\n if (candidateTags.indexOf(rtag) < 0) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { argTokenizeBySpaces, deduplicate } from \"@mrts/common\";\nimport { tagRuleMatches } from \"./tagRules.js\";\nimport type {\n ISVTStyler,\n TagListArgument,\n TagRule,\n TagRuleMode,\n} from \"./types.js\";\n\nexport type SVTRule = {\n stagRule: TagRule;\n vtagRule: TagRule;\n classes: string[];\n};\n\nexport type SVTRuleDef = {\n stagMode?: TagRuleMode;\n vtagMode?: TagRuleMode;\n stags?: TagListArgument;\n vtags?: TagListArgument;\n classes?: TagListArgument;\n};\n\ntype SVTStylerOptions = {\n normalizer?: (rawClasses: string[]) => string[];\n stagsNormaliser?: (rawTags: string[]) => string[];\n vtagsNormaliser?: (rawTags: string[]) => string[];\n};\n\nexport class SVTStyler implements ISVTStyler {\n readonly _rules: SVTRule[] = [];\n readonly options: SVTStylerOptions;\n\n constructor(rules: SVTRuleDef[], options: SVTStylerOptions = {}) {\n for (const r of rules) {\n this._rules.push(SVTStyler.normalizeRule(r));\n }\n this.options = { ...options };\n }\n\n with(rules: SVTRuleDef[], options: SVTStylerOptions = {}): SVTStyler {\n const addedRules: SVTRule[] = [];\n for (const r of rules) {\n addedRules.push(SVTStyler.normalizeRule(r));\n }\n\n const styler = new SVTStyler([], { ...this.options });\n styler._rules.push(...this._rules, ...addedRules);\n return styler;\n }\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = [] as string[];\n\n let stagsNormalized = argTokenizeBySpaces(stags);\n let vtagsNormalized = argTokenizeBySpaces(vtags);\n\n if (this.options.stagsNormaliser) {\n stagsNormalized = this.options.stagsNormaliser(stagsNormalized);\n }\n if (this.options.vtagsNormaliser) {\n vtagsNormalized = this.options.vtagsNormaliser(vtagsNormalized);\n }\n\n for (const rule of this._rules) {\n if (this.ruleMatches(rule, stagsNormalized, vtagsNormalized)) {\n r.push(...rule.classes);\n }\n }\n\n return this.options.normalizer ? this.options.normalizer(r) : r;\n }\n\n static normalizeRule(rule: SVTRuleDef): SVTRule {\n let stagMode: TagRuleMode = rule.stagMode ?? \"or\";\n let vtagMode: TagRuleMode = rule.vtagMode ?? \"or\";\n let stags: string[] = deduplicate(argTokenizeBySpaces(rule.stags));\n let vtags: string[] = deduplicate(argTokenizeBySpaces(rule.vtags));\n let classes: string[] = deduplicate(argTokenizeBySpaces(rule.classes));\n\n if (rule.stags == undefined && rule.stagMode == undefined) {\n stagMode = \"any\";\n }\n if (rule.vtags == undefined && rule.vtagMode == undefined) {\n vtagMode = \"any\";\n }\n\n return {\n stagRule: { mode: stagMode, tags: stags },\n vtagRule: { mode: vtagMode, tags: vtags },\n classes,\n };\n }\n\n ruleMatches(rule: SVTRule, stags: string[], vtags: string[]) {\n return (\n tagRuleMatches(rule.stagRule, stags) &&\n tagRuleMatches(rule.vtagRule, vtags)\n );\n }\n}\n","import {\n mainTagNormalize,\n twMergeNormalize,\n exlusiveTagNormalize,\n} from \"./stylersUtils.js\";\nimport { SVTStyler } from \"./SVTStyler.js\";\n\n\nexport const baseStyler = new SVTStyler(\n [\n {\n vtags: \"A\",\n classes: \"bg-slate-100 text-slate-800\",\n },\n {\n vtags: \"B\",\n classes: \"bg-slate-800 text-slate-100\",\n },\n {\n vtags: \"C\",\n classes: \"bg-stone-300 text-orange-950\",\n },\n { \n vtags: \"D\",\n classes: \"bg-orange-900 text-stone-100\",\n },\n {\n vtags: \"LG\",\n classes: \"text-xl p-2\",\n },\n {\n vtags: \"BASE\",\n classes: \"text-base p-1\",\n },\n {\n vtags: \"SM\",\n classes: \"text-sm p-0.5\",\n },\n {\n vtags: \"LG\",\n stags: \"item\",\n classes: \"text-xl px-2 py-1\",\n },\n {\n vtags: \"BASE\",\n stags: \"item\",\n classes: \"text-base px-1 py-0.5\",\n },\n {\n vtags: \"SM\",\n stags: \"item\",\n classes: \"text-sm p-0.5\",\n },\n {\n stags: \"item:selected\",\n classes: \"underline font-bold\",\n },\n {\n stags: \"item:disabled\",\n classes: \"blur-[1px]\",\n },\n {\n stags: \"item/disabler\",\n classes: \"bg-slate-300/85 cursor-not-allowed\",\n },\n ],\n {\n normalizer: twMergeNormalize,\n vtagsNormaliser: (tags) =>\n exlusiveTagNormalize(\n mainTagNormalize(tags, \"A\"),\n new Set([\"SM\", \"BASE\", \"LG\"]),\n \"BASE\"\n ),\n }\n);\n","import type { ISVTStyler } from \"./types.js\";\nimport {baseStyler} from \"./base.styler.js\";\n\nexport class Stylers {\n private static _base: ISVTStyler | undefined;\n private static _stylersMap = new Map<string, ISVTStyler>();\n\n static get base(): ISVTStyler | undefined {\n return this._base;\n }\n static setBase(base: ISVTStyler | undefined) {\n return (this._base = base);\n }\n static {\n this._stylersMap.set(\"default\", baseStyler)\n this.setBase(baseStyler);\n }\n\n static get(name: string): ISVTStyler | undefined {\n return this._stylersMap.get(name);\n }\n}\n","import { type Component, createMemo, Show } from \"solid-js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { type ISVTStyler, type TagListArgument } from \"../stylers/index.js\";\nimport { Stylers } from \"../stylers/Stylers.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\n\nexport type TItemClass = {\n item?: string;\n selected?: string;\n disabled?: string;\n disabler?: string;\n};\nexport type TItemClassArg = TItemClass|string;\n\nexport type TItemProps = {\n idLabel: IdLabelArg;\n callback?: (item: IdLabel) => void;\n selected?: boolean;\n disabled?: boolean;\n clickableWhendisabled?: boolean;\n styler?: ISVTStyler;\n vtags?: TagListArgument;\n class?: TItemClassArg;\n};\n\nexport const Item: Component<TItemProps> = (props) => {\n const itemData = () => buildIdLabel(props.idLabel);\n\n const currentSTags = () => {\n const r = [] as string[];\n r.push(\"item\");\n if (props.selected) {\n r.push(\"item:selected\");\n }\n if (props.disabled) {\n r.push(\"item:disabled\");\n }\n return r;\n };\n\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n const classProp = createMemo<TItemClass>(() => {\n if (props.class == undefined) {\n return {};\n } else if (typeof props.class == \"string\") {\n return { item: props.class };\n } else {\n return props.class;\n }\n });\n\n const itemClasses = createMemo(() => {\n const stags = currentSTags();\n\n const styler = currentStyler();\n\n const rawClasses = [] as (string | undefined)[];\n\n const stylerClasses = styler\n ? styler.classes(stags, props.vtags)\n : undefined;\n rawClasses.push(...(stylerClasses ?? []));\n\n if (props.callback) {\n rawClasses.push(\"select-none cursor-pointer\");\n }\n\n const customClasses = classProp();\n if (customClasses.item) {\n rawClasses.push(customClasses.item);\n }\n if (props.selected && customClasses.selected) {\n rawClasses.push(customClasses.selected);\n }\n if (props.disabled && customClasses.disabled) {\n rawClasses.push(customClasses.disabled);\n }\n\n rawClasses.push(\"relative\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n const disablerClasses = createMemo(() => {\n const rawClasses = [] as string[];\n if (currentStyler()) {\n rawClasses.push(\n ...currentStyler()!.classes(\"item/disabler\", props.vtags)!\n );\n }\n if (classProp().disabler) {\n rawClasses.push(classProp().disabler!);\n }\n rawClasses.push(\"absolute inset-0\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n function handleClick() {\n if (props.callback != undefined) {\n props.callback(itemData());\n }\n }\n\n return (\n <div onClick={handleClick} class={itemClasses()}>\n {itemData().label}\n <Show when={props.disabled}>\n <div\n class={disablerClasses()}\n onClick={(e) => {\n if (!props.clickableWhendisabled) {\n e.stopPropagation();\n }\n }}\n ></div>\n </Show>\n </div>\n );\n};\n","import type { Component, ParentProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { type ISVTStyler, Stylers, type TagListArgument } from \"./stylers/index.js\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype TProps = ParentProps & {\n vtags?: TagListArgument;\n styler?: ISVTStyler;\n class?: string;\n element?: string;\n};\n\n\nexport const Block: Component<TProps> = (props) => {\n const elementTag = () => props.element ?? \"div\";\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n function blockClasses() {\n const stags = \"block\";\n const classes = currentStyler()!.classes(stags, props.vtags) ?? [];\n if (props.class) {\n classes.push(props.class);\n }\n return twMerge(classes);\n }\n\n return (\n <Dynamic component={elementTag()} class={blockClasses()}>\n {props.children}\n </Dynamic>\n );\n};\n","export function buildTokenizeFuncUsingSplitters(splitters) {\n splitters = Array.isArray(splitters) ? splitters : [splitters];\n const tokenize = (s) => {\n let r = s.split(splitters[0]).filter((t) => t != \"\" && t != undefined);\n for (const splitter of splitters.slice(1)) {\n const r0 = [...r];\n r = [];\n for (const s of r0) {\n r.push(...tokenizeFilterString(s, {\n splitter,\n filter: (t) => t != \"\" && t != undefined,\n }));\n //r.push(...s.split(splitter).filter((t) => t != \"\" && t != undefined));\n }\n }\n return r;\n };\n return tokenize;\n}\nexport function buildArgTokenizeFunc(tokenize) {\n const argTokenize = (arg) => {\n if (arg == undefined) {\n return [];\n }\n else if (Array.isArray(arg)) {\n const r = [];\n for (const a of arg) {\n r.push(...argTokenize(a));\n }\n return r;\n }\n else {\n return tokenize(arg);\n }\n };\n return argTokenize;\n}\nexport const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\\s+/);\nexport const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);\nexport function tokenizeFilterString(s, options = {}) {\n const separator = options.splitter ?? /\\s+/;\n const filter = options.filter ?? ((s) => s.length > 0);\n const r = s.split(separator).filter(filter);\n return r;\n}\nexport function deduplicate(items) {\n const r = [];\n const itemSet = new Set();\n for (const item of items) {\n if (!itemSet.has(item)) {\n r.push(item);\n itemSet.add(item);\n }\n }\n return r;\n}\n//# sourceMappingURL=tokenize.js.map","import { twMerge } from \"tailwind-merge\";\nimport { Block } from \"../Block.jsx\";\nimport { Item, type TItemClassArg } from \"./Item.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\nimport { type Component, createMemo, For } from \"solid-js\";\nimport { type TagListArgument } from \"../stylers/types.js\";\nimport { argTokenizeBySpaces } from \"../../../common/dist/strings/tokenize.js\";\n\ntype TProps = {\n items: IdLabelArg[];\n callback?: (item: IdLabel) => void;\n class?: string | { group?: string; item?: TItemClassArg };\n selection?: string | { [id: string]: boolean };\n vtags?: TagListArgument | { group?: TagListArgument; item?: TagListArgument };\n};\n\nexport const ItemGroup: Component<TProps> = (props) => {\n const items = () => props.items.map(buildIdLabel);\n\n const currentVTags = createMemo<{ group: string[]; item?: string[] }>(() => {\n const item = [] as string[];\n const group = [] as string[];\n const _vtags = props.vtags;\n if (Array.isArray(_vtags) || typeof _vtags == \"string\") {\n group.push(...argTokenizeBySpaces(_vtags));\n } else if (typeof _vtags == \"object\" && _vtags != null) {\n group.push(...argTokenizeBySpaces(_vtags.group));\n item.push(...argTokenizeBySpaces(_vtags.item));\n }\n return { group, item };\n });\n\n const classes = createMemo(() => {\n let group = \"\";\n let item: TItemClassArg = \"\";\n if (typeof props.class == \"string\") {\n group = props.class;\n } else if (props.class != undefined) {\n props.class;\n group = props.class.group ?? \"\";\n item = props.class.item ?? \"\";\n }\n\n return { group, item };\n });\n\n const blockClasses = () => {\n return twMerge(\"flex flex-row gap-1\", classes().group);\n };\n\n const itemClasses = () => {\n return classes().item;\n };\n\n const callCallback = (item: IdLabel) => {\n if (props.callback) {\n props.callback(item);\n }\n };\n\n const itemSelected = (id: string) => {\n if (typeof props.selection == \"string\") {\n return id == props.selection;\n } else if (typeof props.selection == \"object\") {\n return !!props.selection[id];\n }\n return false;\n };\n\n return (\n <Block class={blockClasses()} vtags={currentVTags().group}>\n <For each={items()}>\n {(item) => {\n return (\n <Item\n idLabel={item}\n selected={itemSelected(item.id)}\n callback={() => callCallback(item)}\n class={itemClasses()}\n vtags={currentVTags().item}\n ></Item>\n );\n }}\n </For>\n </Block>\n );\n};\n","import type { Component } from \"solid-js\";\n\ntype TProps = {}\n\nexport const SolTw : Component<TProps> = (props) =>{\n return <div class=\"bg-red-600\">- - S O L T W - -</div>\n}\n\n\n"],"names":["buildIdLabel","arg","id","label","Array","isArray","r","Object","assign","undefined","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","tokenizeFilterString","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","length","toUpperCase","push","exlusiveTagNormalize","tagSet","has","tagRuleMatches","rule","candidateTags","mode","ctag","tags","indexOf","SVTStyler","_rules","rules","options","normalizeRule","with","addedRules","stagsNormalized","argTokenizeBySpaces","vtagsNormalized","stagsNormaliser","vtagsNormaliser","ruleMatches","normalizer","stagMode","vtagMode","deduplicate","stagRule","vtagRule","baseStyler","Set","Stylers","_stylersMap","Map","base","_base","setBase","set","get","name","Item","props","itemData","idLabel","currentSTags","selected","disabled","currentStyler","classProp","createMemo","class","item","itemClasses","rawClasses","stylerClasses","callback","customClasses","disablerClasses","disabler","handleClick","_el$","_tmpl$","$$click","_$insert","_$createComponent","Show","when","children","_el$2","e","clickableWhendisabled","stopPropagation","_$effect","_$className","_$delegateEvents","Block","elementTag","element","blockClasses","Dynamic","component","buildTokenizeFuncUsingSplitters","splitters","tokenize","s","split","filter","t","splitter","slice","r0","buildArgTokenizeFunc","argTokenize","a","tokenizeBySpaces","separator","ItemGroup","items","map","currentVTags","group","_vtags","callCallback","itemSelected","selection","For","each","SolTw"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { delegateEvents, template, insert, createComponent, effect, className, Dynamic } from 'solid-js/web';
2
2
  import { createMemo, Show, For } from 'solid-js';
3
3
  import { twMerge } from 'tailwind-merge';
4
+ import { tokenizeFilterString as tokenizeFilterString$1, argTokenizeBySpaces as argTokenizeBySpaces$1, deduplicate } from '@mrts/common';
4
5
 
5
6
  function buildIdLabel(arg) {
6
7
  if (typeof arg == "string") {
@@ -22,24 +23,6 @@ function buildIdLabel(arg) {
22
23
  }
23
24
  }
24
25
 
25
- function splitCleanString(s, options = {}) {
26
- const separator = options.separator ?? /\s+/;
27
- const filter = options.filter ?? (s => s.length > 0);
28
- const r = s.split(separator).filter(filter);
29
- return r;
30
- }
31
- function deduplicate(items) {
32
- const r = [];
33
- const itemSet = new Set();
34
- for (const item of items) {
35
- if (!itemSet.has(item)) {
36
- r.push(item);
37
- itemSet.add(item);
38
- }
39
- }
40
- return r;
41
- }
42
-
43
26
  class SVTStylerNormalizer {
44
27
  constructor(styler) {
45
28
  this.styler = styler;
@@ -50,7 +33,7 @@ class SVTStylerNormalizer {
50
33
  }
51
34
  }
52
35
  function twMergeNormalize(raw) {
53
- return splitCleanString(twMerge(...raw));
36
+ return tokenizeFilterString$1(twMerge(...raw));
54
37
  }
55
38
  function mainTagNormalize(rawTags, defaultTag) {
56
39
  const rhead = [];
@@ -97,18 +80,19 @@ function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
97
80
  return r;
98
81
  }
99
82
 
100
- function normalizeTagListArgument(arg) {
101
- if (typeof arg == "string") {
102
- return splitCleanString(arg);
103
- } else if (Array.isArray(arg)) {
104
- const r = [];
105
- for (const a of arg) {
106
- r.push(...normalizeTagListArgument(a));
107
- }
108
- return r;
109
- }
110
- return [];
111
- }
83
+ // export function normalizeTagListArgument(arg: TagListArgument): string[] {
84
+ // if (typeof arg == "string") {
85
+ // return splitCleanString(arg);
86
+ // } else if (Array.isArray(arg)) {
87
+ // const r = [];
88
+ // for (const a of arg) {
89
+ // r.push(...normalizeTagListArgument(a));
90
+ // }
91
+ // return r;
92
+ // }
93
+ // return [];
94
+ // }
95
+
112
96
  function tagRuleMatches(rule, candidateTags) {
113
97
  if (rule.mode == "any") {
114
98
  return true;
@@ -153,8 +137,8 @@ class SVTStyler {
153
137
  }
154
138
  classes(stags, vtags) {
155
139
  const r = [];
156
- let stagsNormalized = normalizeTagListArgument(stags);
157
- let vtagsNormalized = normalizeTagListArgument(vtags);
140
+ let stagsNormalized = argTokenizeBySpaces$1(stags);
141
+ let vtagsNormalized = argTokenizeBySpaces$1(vtags);
158
142
  if (this.options.stagsNormaliser) {
159
143
  stagsNormalized = this.options.stagsNormaliser(stagsNormalized);
160
144
  }
@@ -171,9 +155,9 @@ class SVTStyler {
171
155
  static normalizeRule(rule) {
172
156
  let stagMode = rule.stagMode ?? "or";
173
157
  let vtagMode = rule.vtagMode ?? "or";
174
- let stags = deduplicate(normalizeTagListArgument(rule.stags));
175
- let vtags = deduplicate(normalizeTagListArgument(rule.vtags));
176
- let classes = deduplicate(normalizeTagListArgument(rule.classes));
158
+ let stags = deduplicate(argTokenizeBySpaces$1(rule.stags));
159
+ let vtags = deduplicate(argTokenizeBySpaces$1(rule.vtags));
160
+ let classes = deduplicate(argTokenizeBySpaces$1(rule.classes));
177
161
  if (rule.stags == undefined && rule.stagMode == undefined) {
178
162
  stagMode = "any";
179
163
  }
@@ -388,6 +372,50 @@ const Block = props => {
388
372
  });
389
373
  };
390
374
 
375
+ function buildTokenizeFuncUsingSplitters(splitters) {
376
+ splitters = Array.isArray(splitters) ? splitters : [splitters];
377
+ const tokenize = s => {
378
+ let r = s.split(splitters[0]).filter(t => t != "" && t != undefined);
379
+ for (const splitter of splitters.slice(1)) {
380
+ const r0 = [...r];
381
+ r = [];
382
+ for (const s of r0) {
383
+ r.push(...tokenizeFilterString(s, {
384
+ splitter,
385
+ filter: t => t != "" && t != undefined
386
+ }));
387
+ //r.push(...s.split(splitter).filter((t) => t != "" && t != undefined));
388
+ }
389
+ }
390
+ return r;
391
+ };
392
+ return tokenize;
393
+ }
394
+ function buildArgTokenizeFunc(tokenize) {
395
+ const argTokenize = arg => {
396
+ if (arg == undefined) {
397
+ return [];
398
+ } else if (Array.isArray(arg)) {
399
+ const r = [];
400
+ for (const a of arg) {
401
+ r.push(...argTokenize(a));
402
+ }
403
+ return r;
404
+ } else {
405
+ return tokenize(arg);
406
+ }
407
+ };
408
+ return argTokenize;
409
+ }
410
+ const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\s+/);
411
+ const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);
412
+ function tokenizeFilterString(s, options = {}) {
413
+ const separator = options.splitter ?? /\s+/;
414
+ const filter = options.filter ?? (s => s.length > 0);
415
+ const r = s.split(separator).filter(filter);
416
+ return r;
417
+ }
418
+
391
419
  const ItemGroup = props => {
392
420
  const items = () => props.items.map(buildIdLabel);
393
421
  const currentVTags = createMemo(() => {
@@ -395,10 +423,10 @@ const ItemGroup = props => {
395
423
  const group = [];
396
424
  const _vtags = props.vtags;
397
425
  if (Array.isArray(_vtags) || typeof _vtags == "string") {
398
- group.push(...normalizeTagListArgument(_vtags));
399
- } else if (typeof _vtags == "object") {
400
- group.push(...normalizeTagListArgument(_vtags.group));
401
- item.push(...normalizeTagListArgument(_vtags.item));
426
+ group.push(...argTokenizeBySpaces(_vtags));
427
+ } else if (typeof _vtags == "object" && _vtags != null) {
428
+ group.push(...argTokenizeBySpaces(_vtags.group));
429
+ item.push(...argTokenizeBySpaces(_vtags.item));
402
430
  }
403
431
  return {
404
432
  group,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/utils.ts","../../src/stylers/stylersUtils.ts","../../src/stylers/tagRules.ts","../../src/stylers/SVTStyler.ts","../../src/stylers/base.styler.ts","../../src/stylers/Stylers.ts","../../src/items/Item.tsx","../../src/Block.tsx","../../src/items/ItemGroup.tsx","../../src/soltw.tsx"],"sourcesContent":["export interface IdLabel {\n id: string;\n label: string;\n [x: string | symbol]: unknown;\n}\n\nexport type IdLabelDef = {\n id: string;\n label?: string;\n [x: string | symbol]: unknown;\n};\n\nexport type IdLabelArg = IdLabelDef | [string, string] | string;\n\nexport function buildIdLabel(arg: IdLabelArg): IdLabel {\n if (typeof arg == \"string\") {\n return { id: arg, label: arg };\n } else if (Array.isArray(arg)) {\n return { id: arg[0], label: arg[1] };\n } else {\n const r = Object.assign({}, arg);\n if (r.label == undefined) {\n r[\"label\"] = r.id;\n }\n return r as IdLabel;\n }\n}\n\n","export function splitCleanString(\n s: string,\n options: { separator?: string | RegExp; filter?: (s: string) => boolean } = {}\n): string[] {\n const separator = options.separator ?? /\\s+/;\n const filter = options.filter ?? ((s: string) => s.length > 0);\n const r = s.split(separator).filter(filter);\n return r;\n}\n\nexport function deduplicate<T>(items: T[]): T[] {\n const r = [] as T[];\n const itemSet = new Set<T>();\n for (const item of items) {\n if (!itemSet.has(item)) {\n r.push(item);\n itemSet.add(item);\n }\n }\n\n return r;\n}\n","import { twMerge } from \"tailwind-merge\";\nimport type { ISVTStyler, TagListArgument } from \"./types.js\";\nimport { splitCleanString } from \"./utils.js\";\n\nexport class SVTStylerNormalizer implements ISVTStyler {\n constructor(private readonly styler: ISVTStyler) {}\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = this.styler.classes(stags, vtags);\n return r ?? [];\n }\n}\n\nexport function twMergeNormalize(raw: string[]): string[] {\n return splitCleanString(twMerge(...raw));\n}\n\nexport function mainTagNormalize(\n rawTags: string[],\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tag.length == 1 && tag.toUpperCase() == tag) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n // console.log(\"MAIN TAGS NORM:\", rawTags, r);\n return r;\n}\n\nexport function exlusiveTagNormalize(\n rawTags: string[],\n tagSet: Set<String>,\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tagSet.has(tag)) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n //console.log(\"EXCLU TAGS NORM:\", rawTags, r);\n return r;\n}\n","import type { TagListArgument, TagRule } from \"./types.js\";\nimport { splitCleanString } from \"./utils.js\";\n\n\n\nexport function normalizeTagListArgument(arg: TagListArgument): string[] {\n if (typeof arg == \"string\") {\n return splitCleanString(arg);\n } else if (Array.isArray(arg)) {\n const r = [];\n for (const a of arg) {\n r.push(...normalizeTagListArgument(a));\n }\n return r;\n }\n return [];\n}\n\n\nexport function tagRuleMatches(\n rule:TagRule,\n candidateTags: string[]\n) {\n if (rule.mode == \"any\") {\n return true;\n } else if (rule.mode == \"or\") {\n for (const ctag of candidateTags) {\n if (rule.tags.indexOf(ctag) >= 0) {\n return true;\n }\n }\n return false;\n } else if (rule.mode == \"and\") {\n for (const rtag of rule.tags) {\n if (candidateTags.indexOf(rtag) < 0) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { normalizeTagListArgument, tagRuleMatches } from \"./tagRules.js\";\nimport type {\n ISVTStyler,\n TagListArgument,\n TagRule,\n TagRuleMode,\n} from \"./types.js\";\nimport { deduplicate } from \"./utils.js\";\n\nexport type SVTRule = {\n stagRule: TagRule;\n vtagRule: TagRule;\n classes: string[];\n};\n\nexport type SVTRuleDef = {\n stagMode?: TagRuleMode;\n vtagMode?: TagRuleMode;\n stags?: TagListArgument;\n vtags?: TagListArgument;\n classes?: TagListArgument;\n};\n\ntype SVTStylerOptions = {\n normalizer?: (rawClasses: string[]) => string[];\n stagsNormaliser?: (rawTags: string[]) => string[];\n vtagsNormaliser?: (rawTags: string[]) => string[];\n};\n\nexport class SVTStyler implements ISVTStyler {\n readonly _rules: SVTRule[] = [];\n readonly options: SVTStylerOptions;\n\n constructor(rules: SVTRuleDef[], options: SVTStylerOptions = {}) {\n for (const r of rules) {\n this._rules.push(SVTStyler.normalizeRule(r));\n }\n this.options = { ...options };\n }\n\n with(rules: SVTRuleDef[], options: SVTStylerOptions = {}): SVTStyler {\n const addedRules: SVTRule[] = [];\n for (const r of rules) {\n addedRules.push(SVTStyler.normalizeRule(r));\n }\n\n const styler = new SVTStyler([], { ...this.options });\n styler._rules.push(...this._rules, ...addedRules);\n return styler;\n }\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = [] as string[];\n\n let stagsNormalized = normalizeTagListArgument(stags);\n let vtagsNormalized = normalizeTagListArgument(vtags);\n\n if (this.options.stagsNormaliser) {\n stagsNormalized = this.options.stagsNormaliser(stagsNormalized);\n }\n if (this.options.vtagsNormaliser) {\n vtagsNormalized = this.options.vtagsNormaliser(vtagsNormalized);\n }\n\n for (const rule of this._rules) {\n if (this.ruleMatches(rule, stagsNormalized, vtagsNormalized)) {\n r.push(...rule.classes);\n }\n }\n\n return this.options.normalizer ? this.options.normalizer(r) : r;\n }\n\n static normalizeRule(rule: SVTRuleDef): SVTRule {\n let stagMode: TagRuleMode = rule.stagMode ?? \"or\";\n let vtagMode: TagRuleMode = rule.vtagMode ?? \"or\";\n let stags: string[] = deduplicate(normalizeTagListArgument(rule.stags));\n let vtags: string[] = deduplicate(normalizeTagListArgument(rule.vtags));\n let classes: string[] = deduplicate(normalizeTagListArgument(rule.classes));\n\n if (rule.stags == undefined && rule.stagMode == undefined) {\n stagMode = \"any\";\n }\n if (rule.vtags == undefined && rule.vtagMode == undefined) {\n vtagMode = \"any\";\n }\n\n return {\n stagRule: { mode: stagMode, tags: stags },\n vtagRule: { mode: vtagMode, tags: vtags },\n classes,\n };\n }\n\n ruleMatches(rule: SVTRule, stags: string[], vtags: string[]) {\n return (\n tagRuleMatches(rule.stagRule, stags) &&\n tagRuleMatches(rule.vtagRule, vtags)\n );\n }\n}\n","import {\n mainTagNormalize,\n twMergeNormalize,\n exlusiveTagNormalize,\n} from \"./stylersUtils.js\";\nimport { SVTStyler } from \"./SVTStyler.js\";\n\n\nexport const baseStyler = new SVTStyler(\n [\n {\n vtags: \"A\",\n classes: \"bg-slate-100 text-slate-800\",\n },\n {\n vtags: \"B\",\n classes: \"bg-slate-800 text-slate-100\",\n },\n {\n vtags: \"C\",\n classes: \"bg-stone-300 text-orange-950\",\n },\n { \n vtags: \"D\",\n classes: \"bg-orange-900 text-stone-100\",\n },\n {\n vtags: \"LG\",\n classes: \"text-xl p-2\",\n },\n {\n vtags: \"BASE\",\n classes: \"text-base p-1\",\n },\n {\n vtags: \"SM\",\n classes: \"text-sm p-0.5\",\n },\n {\n vtags: \"LG\",\n stags: \"item\",\n classes: \"text-xl px-2 py-1\",\n },\n {\n vtags: \"BASE\",\n stags: \"item\",\n classes: \"text-base px-1 py-0.5\",\n },\n {\n vtags: \"SM\",\n stags: \"item\",\n classes: \"text-sm p-0.5\",\n },\n {\n stags: \"item:selected\",\n classes: \"underline font-bold\",\n },\n {\n stags: \"item:disabled\",\n classes: \"blur-[1px]\",\n },\n {\n stags: \"item/disabler\",\n classes: \"bg-slate-300/85 cursor-not-allowed\",\n },\n ],\n {\n normalizer: twMergeNormalize,\n vtagsNormaliser: (tags) =>\n exlusiveTagNormalize(\n mainTagNormalize(tags, \"A\"),\n new Set([\"SM\", \"BASE\", \"LG\"]),\n \"BASE\"\n ),\n }\n);\n","import type { ISVTStyler } from \"./types.js\";\nimport {baseStyler} from \"./base.styler.js\";\n\nexport class Stylers {\n private static _base: ISVTStyler | undefined;\n private static _stylersMap = new Map<string, ISVTStyler>();\n\n static get base(): ISVTStyler | undefined {\n return this._base;\n }\n static setBase(base: ISVTStyler | undefined) {\n return (this._base = base);\n }\n static {\n this._stylersMap.set(\"default\", baseStyler)\n this.setBase(baseStyler);\n }\n\n static get(name: string): ISVTStyler | undefined {\n return this._stylersMap.get(name);\n }\n}\n","import { type Component, createMemo, Show } from \"solid-js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { type ISVTStyler, type TagListArgument } from \"../stylers/index.js\";\nimport { Stylers } from \"../stylers/Stylers.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\n\nexport type TItemClass = {\n item?: string;\n selected?: string;\n disabled?: string;\n disabler?: string;\n};\nexport type TItemClassArg = TItemClass|string;\n\nexport type TItemProps = {\n idLabel: IdLabelArg;\n callback?: (item: IdLabel) => void;\n selected?: boolean;\n disabled?: boolean;\n clickableWhendisabled?: boolean;\n styler?: ISVTStyler;\n vtags?: TagListArgument;\n class?: TItemClassArg;\n};\n\nexport const Item: Component<TItemProps> = (props) => {\n const itemData = () => buildIdLabel(props.idLabel);\n\n const currentSTags = () => {\n const r = [] as string[];\n r.push(\"item\");\n if (props.selected) {\n r.push(\"item:selected\");\n }\n if (props.disabled) {\n r.push(\"item:disabled\");\n }\n return r;\n };\n\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n const classProp = createMemo<TItemClass>(() => {\n if (props.class == undefined) {\n return {};\n } else if (typeof props.class == \"string\") {\n return { item: props.class };\n } else {\n return props.class;\n }\n });\n\n const itemClasses = createMemo(() => {\n const stags = currentSTags();\n\n const styler = currentStyler();\n\n const rawClasses = [] as (string | undefined)[];\n\n const stylerClasses = styler\n ? styler.classes(stags, props.vtags)\n : undefined;\n rawClasses.push(...(stylerClasses ?? []));\n\n if (props.callback) {\n rawClasses.push(\"select-none cursor-pointer\");\n }\n\n const customClasses = classProp();\n if (customClasses.item) {\n rawClasses.push(customClasses.item);\n }\n if (props.selected && customClasses.selected) {\n rawClasses.push(customClasses.selected);\n }\n if (props.disabled && customClasses.disabled) {\n rawClasses.push(customClasses.disabled);\n }\n\n rawClasses.push(\"relative\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n const disablerClasses = createMemo(() => {\n const rawClasses = [] as string[];\n if (currentStyler()) {\n rawClasses.push(\n ...currentStyler()!.classes(\"item/disabler\", props.vtags)!\n );\n }\n if (classProp().disabler) {\n rawClasses.push(classProp().disabler!);\n }\n rawClasses.push(\"absolute inset-0\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n function handleClick() {\n if (props.callback != undefined) {\n props.callback(itemData());\n }\n }\n\n return (\n <div onClick={handleClick} class={itemClasses()}>\n {itemData().label}\n <Show when={props.disabled}>\n <div\n class={disablerClasses()}\n onClick={(e) => {\n if (!props.clickableWhendisabled) {\n e.stopPropagation();\n }\n }}\n ></div>\n </Show>\n </div>\n );\n};\n","import type { Component, ParentProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { type ISVTStyler, Stylers, type TagListArgument } from \"./stylers/index.js\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype TProps = ParentProps & {\n vtags?: TagListArgument;\n styler?: ISVTStyler;\n class?: string;\n element?: string;\n};\n\n\nexport const Block: Component<TProps> = (props) => {\n const elementTag = () => props.element ?? \"div\";\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n function blockClasses() {\n const stags = \"block\";\n const classes = currentStyler()!.classes(stags, props.vtags) ?? [];\n if (props.class) {\n classes.push(props.class);\n }\n return twMerge(classes);\n }\n\n return (\n <Dynamic component={elementTag()} class={blockClasses()}>\n {props.children}\n </Dynamic>\n );\n};\n","import { twMerge } from \"tailwind-merge\";\nimport { Block } from \"../Block.jsx\";\nimport { Item, type TItemClassArg } from \"./Item.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\nimport { type Component, createMemo, For } from \"solid-js\";\nimport { type TagListArgument } from \"../stylers/types.js\";\nimport { normalizeTagListArgument } from \"../stylers/tagRules.js\";\n\ntype TProps = {\n items: IdLabelArg[];\n callback?: (item: IdLabel) => void;\n class?: string | { group?: string; item?: TItemClassArg };\n selection?: string | { [id: string]: boolean };\n vtags?: TagListArgument | { group?: TagListArgument; item?: TagListArgument };\n};\n\nexport const ItemGroup: Component<TProps> = (props) => {\n const items = () => props.items.map(buildIdLabel);\n\n const currentVTags = createMemo<{ group: string[]; item?: string[] }>(() => {\n const item = [] as string[];\n const group = [] as string[];\n const _vtags = props.vtags;\n if (Array.isArray(_vtags) || typeof _vtags == \"string\") {\n group.push(...normalizeTagListArgument(_vtags));\n } else if (typeof _vtags == \"object\") {\n group.push(...normalizeTagListArgument(_vtags.group));\n item.push(...normalizeTagListArgument(_vtags.item));\n }\n return { group, item };\n });\n\n const classes = createMemo(() => {\n let group = \"\";\n let item: TItemClassArg = \"\";\n if (typeof props.class == \"string\") {\n group = props.class;\n } else if (props.class != undefined) {\n props.class;\n group = props.class.group ?? \"\";\n item = props.class.item ?? \"\";\n }\n\n return { group, item };\n });\n\n const blockClasses = () => {\n return twMerge(\"flex flex-row gap-1\", classes().group);\n };\n\n const itemClasses = () => {\n return classes().item;\n };\n\n const callCallback = (item: IdLabel) => {\n if (props.callback) {\n props.callback( item);\n }\n };\n\n const itemSelected = (id: string) => {\n if (typeof props.selection == \"string\") {\n return id == props.selection;\n } else if (typeof props.selection == \"object\") {\n return !!props.selection[id];\n }\n return false;\n };\n\n return (\n <Block class={blockClasses()} vtags={currentVTags().group}>\n <For each={items()}>\n {(item) => {\n return (\n <Item\n idLabel={item}\n selected={itemSelected(item.id)}\n callback={() => callCallback(item)}\n class={itemClasses()}\n vtags={currentVTags().item}\n ></Item>\n );\n }}\n </For>\n </Block>\n );\n};\n","import type { Component } from \"solid-js\";\n\ntype TProps = {}\n\nexport const SolTw : Component<TProps> = (props) =>{\n return <div class=\"bg-red-600\">- - S O L T W - -</div>\n}\n\n\n"],"names":["buildIdLabel","arg","id","label","Array","isArray","r","Object","assign","undefined","splitCleanString","s","options","separator","filter","length","split","deduplicate","items","itemSet","Set","item","has","push","add","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","toUpperCase","exlusiveTagNormalize","tagSet","normalizeTagListArgument","a","tagRuleMatches","rule","candidateTags","mode","ctag","tags","indexOf","SVTStyler","_rules","rules","normalizeRule","with","addedRules","stagsNormalized","vtagsNormalized","stagsNormaliser","vtagsNormaliser","ruleMatches","normalizer","stagMode","vtagMode","stagRule","vtagRule","baseStyler","Stylers","_stylersMap","Map","base","_base","setBase","set","get","name","Item","props","itemData","idLabel","currentSTags","selected","disabled","currentStyler","classProp","createMemo","class","itemClasses","rawClasses","stylerClasses","callback","customClasses","disablerClasses","disabler","handleClick","_el$","_tmpl$","$$click","_$insert","_$createComponent","Show","when","children","_el$2","e","clickableWhendisabled","stopPropagation","_$effect","_$className","_$delegateEvents","Block","elementTag","element","blockClasses","Dynamic","component","ItemGroup","map","currentVTags","group","_vtags","callCallback","itemSelected","selection","For","each","SolTw"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/stylersUtils.ts","../../src/stylers/tagRules.ts","../../src/stylers/SVTStyler.ts","../../src/stylers/base.styler.ts","../../src/stylers/Stylers.ts","../../src/items/Item.tsx","../../src/Block.tsx","../../../common/dist/strings/tokenize.js","../../src/items/ItemGroup.tsx","../../src/soltw.tsx"],"sourcesContent":["export interface IdLabel {\n id: string;\n label: string;\n [x: string | symbol]: unknown;\n}\n\nexport type IdLabelDef = {\n id: string;\n label?: string;\n [x: string | symbol]: unknown;\n};\n\nexport type IdLabelArg = IdLabelDef | [string, string] | string;\n\nexport function buildIdLabel(arg: IdLabelArg): IdLabel {\n if (typeof arg == \"string\") {\n return { id: arg, label: arg };\n } else if (Array.isArray(arg)) {\n return { id: arg[0], label: arg[1] };\n } else {\n const r = Object.assign({}, arg);\n if (r.label == undefined) {\n r[\"label\"] = r.id;\n }\n return r as IdLabel;\n }\n}\n\n","import { twMerge } from \"tailwind-merge\";\nimport type { ISVTStyler, TagListArgument } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\nexport class SVTStylerNormalizer implements ISVTStyler {\n constructor(private readonly styler: ISVTStyler) {}\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = this.styler.classes(stags, vtags);\n return r ?? [];\n }\n}\n\nexport function twMergeNormalize(raw: string[]): string[] {\n return tokenizeFilterString(twMerge(...raw));\n}\n\nexport function mainTagNormalize(\n rawTags: string[],\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tag.length == 1 && tag.toUpperCase() == tag) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n // console.log(\"MAIN TAGS NORM:\", rawTags, r);\n return r;\n}\n\nexport function exlusiveTagNormalize(\n rawTags: string[],\n tagSet: Set<String>,\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tagSet.has(tag)) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n //console.log(\"EXCLU TAGS NORM:\", rawTags, r);\n return r;\n}\n","import type { TagListArgument, TagRule } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\n\n\n// export function normalizeTagListArgument(arg: TagListArgument): string[] {\n// if (typeof arg == \"string\") {\n// return splitCleanString(arg);\n// } else if (Array.isArray(arg)) {\n// const r = [];\n// for (const a of arg) {\n// r.push(...normalizeTagListArgument(a));\n// }\n// return r;\n// }\n// return [];\n// }\n\n\nexport function tagRuleMatches(\n rule:TagRule,\n candidateTags: string[]\n) {\n if (rule.mode == \"any\") {\n return true;\n } else if (rule.mode == \"or\") {\n for (const ctag of candidateTags) {\n if (rule.tags.indexOf(ctag) >= 0) {\n return true;\n }\n }\n return false;\n } else if (rule.mode == \"and\") {\n for (const rtag of rule.tags) {\n if (candidateTags.indexOf(rtag) < 0) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { argTokenizeBySpaces, deduplicate } from \"@mrts/common\";\nimport { tagRuleMatches } from \"./tagRules.js\";\nimport type {\n ISVTStyler,\n TagListArgument,\n TagRule,\n TagRuleMode,\n} from \"./types.js\";\n\nexport type SVTRule = {\n stagRule: TagRule;\n vtagRule: TagRule;\n classes: string[];\n};\n\nexport type SVTRuleDef = {\n stagMode?: TagRuleMode;\n vtagMode?: TagRuleMode;\n stags?: TagListArgument;\n vtags?: TagListArgument;\n classes?: TagListArgument;\n};\n\ntype SVTStylerOptions = {\n normalizer?: (rawClasses: string[]) => string[];\n stagsNormaliser?: (rawTags: string[]) => string[];\n vtagsNormaliser?: (rawTags: string[]) => string[];\n};\n\nexport class SVTStyler implements ISVTStyler {\n readonly _rules: SVTRule[] = [];\n readonly options: SVTStylerOptions;\n\n constructor(rules: SVTRuleDef[], options: SVTStylerOptions = {}) {\n for (const r of rules) {\n this._rules.push(SVTStyler.normalizeRule(r));\n }\n this.options = { ...options };\n }\n\n with(rules: SVTRuleDef[], options: SVTStylerOptions = {}): SVTStyler {\n const addedRules: SVTRule[] = [];\n for (const r of rules) {\n addedRules.push(SVTStyler.normalizeRule(r));\n }\n\n const styler = new SVTStyler([], { ...this.options });\n styler._rules.push(...this._rules, ...addedRules);\n return styler;\n }\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = [] as string[];\n\n let stagsNormalized = argTokenizeBySpaces(stags);\n let vtagsNormalized = argTokenizeBySpaces(vtags);\n\n if (this.options.stagsNormaliser) {\n stagsNormalized = this.options.stagsNormaliser(stagsNormalized);\n }\n if (this.options.vtagsNormaliser) {\n vtagsNormalized = this.options.vtagsNormaliser(vtagsNormalized);\n }\n\n for (const rule of this._rules) {\n if (this.ruleMatches(rule, stagsNormalized, vtagsNormalized)) {\n r.push(...rule.classes);\n }\n }\n\n return this.options.normalizer ? this.options.normalizer(r) : r;\n }\n\n static normalizeRule(rule: SVTRuleDef): SVTRule {\n let stagMode: TagRuleMode = rule.stagMode ?? \"or\";\n let vtagMode: TagRuleMode = rule.vtagMode ?? \"or\";\n let stags: string[] = deduplicate(argTokenizeBySpaces(rule.stags));\n let vtags: string[] = deduplicate(argTokenizeBySpaces(rule.vtags));\n let classes: string[] = deduplicate(argTokenizeBySpaces(rule.classes));\n\n if (rule.stags == undefined && rule.stagMode == undefined) {\n stagMode = \"any\";\n }\n if (rule.vtags == undefined && rule.vtagMode == undefined) {\n vtagMode = \"any\";\n }\n\n return {\n stagRule: { mode: stagMode, tags: stags },\n vtagRule: { mode: vtagMode, tags: vtags },\n classes,\n };\n }\n\n ruleMatches(rule: SVTRule, stags: string[], vtags: string[]) {\n return (\n tagRuleMatches(rule.stagRule, stags) &&\n tagRuleMatches(rule.vtagRule, vtags)\n );\n }\n}\n","import {\n mainTagNormalize,\n twMergeNormalize,\n exlusiveTagNormalize,\n} from \"./stylersUtils.js\";\nimport { SVTStyler } from \"./SVTStyler.js\";\n\n\nexport const baseStyler = new SVTStyler(\n [\n {\n vtags: \"A\",\n classes: \"bg-slate-100 text-slate-800\",\n },\n {\n vtags: \"B\",\n classes: \"bg-slate-800 text-slate-100\",\n },\n {\n vtags: \"C\",\n classes: \"bg-stone-300 text-orange-950\",\n },\n { \n vtags: \"D\",\n classes: \"bg-orange-900 text-stone-100\",\n },\n {\n vtags: \"LG\",\n classes: \"text-xl p-2\",\n },\n {\n vtags: \"BASE\",\n classes: \"text-base p-1\",\n },\n {\n vtags: \"SM\",\n classes: \"text-sm p-0.5\",\n },\n {\n vtags: \"LG\",\n stags: \"item\",\n classes: \"text-xl px-2 py-1\",\n },\n {\n vtags: \"BASE\",\n stags: \"item\",\n classes: \"text-base px-1 py-0.5\",\n },\n {\n vtags: \"SM\",\n stags: \"item\",\n classes: \"text-sm p-0.5\",\n },\n {\n stags: \"item:selected\",\n classes: \"underline font-bold\",\n },\n {\n stags: \"item:disabled\",\n classes: \"blur-[1px]\",\n },\n {\n stags: \"item/disabler\",\n classes: \"bg-slate-300/85 cursor-not-allowed\",\n },\n ],\n {\n normalizer: twMergeNormalize,\n vtagsNormaliser: (tags) =>\n exlusiveTagNormalize(\n mainTagNormalize(tags, \"A\"),\n new Set([\"SM\", \"BASE\", \"LG\"]),\n \"BASE\"\n ),\n }\n);\n","import type { ISVTStyler } from \"./types.js\";\nimport {baseStyler} from \"./base.styler.js\";\n\nexport class Stylers {\n private static _base: ISVTStyler | undefined;\n private static _stylersMap = new Map<string, ISVTStyler>();\n\n static get base(): ISVTStyler | undefined {\n return this._base;\n }\n static setBase(base: ISVTStyler | undefined) {\n return (this._base = base);\n }\n static {\n this._stylersMap.set(\"default\", baseStyler)\n this.setBase(baseStyler);\n }\n\n static get(name: string): ISVTStyler | undefined {\n return this._stylersMap.get(name);\n }\n}\n","import { type Component, createMemo, Show } from \"solid-js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { type ISVTStyler, type TagListArgument } from \"../stylers/index.js\";\nimport { Stylers } from \"../stylers/Stylers.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\n\nexport type TItemClass = {\n item?: string;\n selected?: string;\n disabled?: string;\n disabler?: string;\n};\nexport type TItemClassArg = TItemClass|string;\n\nexport type TItemProps = {\n idLabel: IdLabelArg;\n callback?: (item: IdLabel) => void;\n selected?: boolean;\n disabled?: boolean;\n clickableWhendisabled?: boolean;\n styler?: ISVTStyler;\n vtags?: TagListArgument;\n class?: TItemClassArg;\n};\n\nexport const Item: Component<TItemProps> = (props) => {\n const itemData = () => buildIdLabel(props.idLabel);\n\n const currentSTags = () => {\n const r = [] as string[];\n r.push(\"item\");\n if (props.selected) {\n r.push(\"item:selected\");\n }\n if (props.disabled) {\n r.push(\"item:disabled\");\n }\n return r;\n };\n\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n const classProp = createMemo<TItemClass>(() => {\n if (props.class == undefined) {\n return {};\n } else if (typeof props.class == \"string\") {\n return { item: props.class };\n } else {\n return props.class;\n }\n });\n\n const itemClasses = createMemo(() => {\n const stags = currentSTags();\n\n const styler = currentStyler();\n\n const rawClasses = [] as (string | undefined)[];\n\n const stylerClasses = styler\n ? styler.classes(stags, props.vtags)\n : undefined;\n rawClasses.push(...(stylerClasses ?? []));\n\n if (props.callback) {\n rawClasses.push(\"select-none cursor-pointer\");\n }\n\n const customClasses = classProp();\n if (customClasses.item) {\n rawClasses.push(customClasses.item);\n }\n if (props.selected && customClasses.selected) {\n rawClasses.push(customClasses.selected);\n }\n if (props.disabled && customClasses.disabled) {\n rawClasses.push(customClasses.disabled);\n }\n\n rawClasses.push(\"relative\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n const disablerClasses = createMemo(() => {\n const rawClasses = [] as string[];\n if (currentStyler()) {\n rawClasses.push(\n ...currentStyler()!.classes(\"item/disabler\", props.vtags)!\n );\n }\n if (classProp().disabler) {\n rawClasses.push(classProp().disabler!);\n }\n rawClasses.push(\"absolute inset-0\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n function handleClick() {\n if (props.callback != undefined) {\n props.callback(itemData());\n }\n }\n\n return (\n <div onClick={handleClick} class={itemClasses()}>\n {itemData().label}\n <Show when={props.disabled}>\n <div\n class={disablerClasses()}\n onClick={(e) => {\n if (!props.clickableWhendisabled) {\n e.stopPropagation();\n }\n }}\n ></div>\n </Show>\n </div>\n );\n};\n","import type { Component, ParentProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { type ISVTStyler, Stylers, type TagListArgument } from \"./stylers/index.js\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype TProps = ParentProps & {\n vtags?: TagListArgument;\n styler?: ISVTStyler;\n class?: string;\n element?: string;\n};\n\n\nexport const Block: Component<TProps> = (props) => {\n const elementTag = () => props.element ?? \"div\";\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n function blockClasses() {\n const stags = \"block\";\n const classes = currentStyler()!.classes(stags, props.vtags) ?? [];\n if (props.class) {\n classes.push(props.class);\n }\n return twMerge(classes);\n }\n\n return (\n <Dynamic component={elementTag()} class={blockClasses()}>\n {props.children}\n </Dynamic>\n );\n};\n","export function buildTokenizeFuncUsingSplitters(splitters) {\n splitters = Array.isArray(splitters) ? splitters : [splitters];\n const tokenize = (s) => {\n let r = s.split(splitters[0]).filter((t) => t != \"\" && t != undefined);\n for (const splitter of splitters.slice(1)) {\n const r0 = [...r];\n r = [];\n for (const s of r0) {\n r.push(...tokenizeFilterString(s, {\n splitter,\n filter: (t) => t != \"\" && t != undefined,\n }));\n //r.push(...s.split(splitter).filter((t) => t != \"\" && t != undefined));\n }\n }\n return r;\n };\n return tokenize;\n}\nexport function buildArgTokenizeFunc(tokenize) {\n const argTokenize = (arg) => {\n if (arg == undefined) {\n return [];\n }\n else if (Array.isArray(arg)) {\n const r = [];\n for (const a of arg) {\n r.push(...argTokenize(a));\n }\n return r;\n }\n else {\n return tokenize(arg);\n }\n };\n return argTokenize;\n}\nexport const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\\s+/);\nexport const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);\nexport function tokenizeFilterString(s, options = {}) {\n const separator = options.splitter ?? /\\s+/;\n const filter = options.filter ?? ((s) => s.length > 0);\n const r = s.split(separator).filter(filter);\n return r;\n}\nexport function deduplicate(items) {\n const r = [];\n const itemSet = new Set();\n for (const item of items) {\n if (!itemSet.has(item)) {\n r.push(item);\n itemSet.add(item);\n }\n }\n return r;\n}\n//# sourceMappingURL=tokenize.js.map","import { twMerge } from \"tailwind-merge\";\nimport { Block } from \"../Block.jsx\";\nimport { Item, type TItemClassArg } from \"./Item.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\nimport { type Component, createMemo, For } from \"solid-js\";\nimport { type TagListArgument } from \"../stylers/types.js\";\nimport { argTokenizeBySpaces } from \"../../../common/dist/strings/tokenize.js\";\n\ntype TProps = {\n items: IdLabelArg[];\n callback?: (item: IdLabel) => void;\n class?: string | { group?: string; item?: TItemClassArg };\n selection?: string | { [id: string]: boolean };\n vtags?: TagListArgument | { group?: TagListArgument; item?: TagListArgument };\n};\n\nexport const ItemGroup: Component<TProps> = (props) => {\n const items = () => props.items.map(buildIdLabel);\n\n const currentVTags = createMemo<{ group: string[]; item?: string[] }>(() => {\n const item = [] as string[];\n const group = [] as string[];\n const _vtags = props.vtags;\n if (Array.isArray(_vtags) || typeof _vtags == \"string\") {\n group.push(...argTokenizeBySpaces(_vtags));\n } else if (typeof _vtags == \"object\" && _vtags != null) {\n group.push(...argTokenizeBySpaces(_vtags.group));\n item.push(...argTokenizeBySpaces(_vtags.item));\n }\n return { group, item };\n });\n\n const classes = createMemo(() => {\n let group = \"\";\n let item: TItemClassArg = \"\";\n if (typeof props.class == \"string\") {\n group = props.class;\n } else if (props.class != undefined) {\n props.class;\n group = props.class.group ?? \"\";\n item = props.class.item ?? \"\";\n }\n\n return { group, item };\n });\n\n const blockClasses = () => {\n return twMerge(\"flex flex-row gap-1\", classes().group);\n };\n\n const itemClasses = () => {\n return classes().item;\n };\n\n const callCallback = (item: IdLabel) => {\n if (props.callback) {\n props.callback(item);\n }\n };\n\n const itemSelected = (id: string) => {\n if (typeof props.selection == \"string\") {\n return id == props.selection;\n } else if (typeof props.selection == \"object\") {\n return !!props.selection[id];\n }\n return false;\n };\n\n return (\n <Block class={blockClasses()} vtags={currentVTags().group}>\n <For each={items()}>\n {(item) => {\n return (\n <Item\n idLabel={item}\n selected={itemSelected(item.id)}\n callback={() => callCallback(item)}\n class={itemClasses()}\n vtags={currentVTags().item}\n ></Item>\n );\n }}\n </For>\n </Block>\n );\n};\n","import type { Component } from \"solid-js\";\n\ntype TProps = {}\n\nexport const SolTw : Component<TProps> = (props) =>{\n return <div class=\"bg-red-600\">- - S O L T W - -</div>\n}\n\n\n"],"names":["buildIdLabel","arg","id","label","Array","isArray","r","Object","assign","undefined","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","tokenizeFilterString","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","length","toUpperCase","push","exlusiveTagNormalize","tagSet","has","tagRuleMatches","rule","candidateTags","mode","ctag","tags","indexOf","SVTStyler","_rules","rules","options","normalizeRule","with","addedRules","stagsNormalized","argTokenizeBySpaces","vtagsNormalized","stagsNormaliser","vtagsNormaliser","ruleMatches","normalizer","stagMode","vtagMode","deduplicate","stagRule","vtagRule","baseStyler","Set","Stylers","_stylersMap","Map","base","_base","setBase","set","get","name","Item","props","itemData","idLabel","currentSTags","selected","disabled","currentStyler","classProp","createMemo","class","item","itemClasses","rawClasses","stylerClasses","callback","customClasses","disablerClasses","disabler","handleClick","_el$","_tmpl$","$$click","_$insert","_$createComponent","Show","when","children","_el$2","e","clickableWhendisabled","stopPropagation","_$effect","_$className","_$delegateEvents","Block","elementTag","element","blockClasses","Dynamic","component","buildTokenizeFuncUsingSplitters","splitters","tokenize","s","split","filter","t","splitter","slice","r0","buildArgTokenizeFunc","argTokenize","a","tokenizeBySpaces","separator","ItemGroup","items","map","currentVTags","group","_vtags","callCallback","itemSelected","selection","For","each","SolTw"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { Block } from "../Block.jsx";
3
3
  import { Item } from "./Item.js";
4
4
  import { buildIdLabel } from "./IdLabel.js";
5
5
  import { createMemo, For } from "solid-js";
6
- import { normalizeTagListArgument } from "../stylers/tagRules.js";
6
+ import { argTokenizeBySpaces } from "../../../common/dist/strings/tokenize.js";
7
7
  export const ItemGroup = (props) => {
8
8
  const items = () => props.items.map(buildIdLabel);
9
9
  const currentVTags = createMemo(() => {
@@ -11,11 +11,11 @@ export const ItemGroup = (props) => {
11
11
  const group = [];
12
12
  const _vtags = props.vtags;
13
13
  if (Array.isArray(_vtags) || typeof _vtags == "string") {
14
- group.push(...normalizeTagListArgument(_vtags));
14
+ group.push(...argTokenizeBySpaces(_vtags));
15
15
  }
16
- else if (typeof _vtags == "object") {
17
- group.push(...normalizeTagListArgument(_vtags.group));
18
- item.push(...normalizeTagListArgument(_vtags.item));
16
+ else if (typeof _vtags == "object" && _vtags != null) {
17
+ group.push(...argTokenizeBySpaces(_vtags.group));
18
+ item.push(...argTokenizeBySpaces(_vtags.item));
19
19
  }
20
20
  return { group, item };
21
21
  });
@@ -1,5 +1,5 @@
1
- import { normalizeTagListArgument, tagRuleMatches } from "./tagRules.js";
2
- import { deduplicate } from "./utils.js";
1
+ import { argTokenizeBySpaces, deduplicate } from "@mrts/common";
2
+ import { tagRuleMatches } from "./tagRules.js";
3
3
  export class SVTStyler {
4
4
  _rules = [];
5
5
  options;
@@ -20,8 +20,8 @@ export class SVTStyler {
20
20
  }
21
21
  classes(stags, vtags) {
22
22
  const r = [];
23
- let stagsNormalized = normalizeTagListArgument(stags);
24
- let vtagsNormalized = normalizeTagListArgument(vtags);
23
+ let stagsNormalized = argTokenizeBySpaces(stags);
24
+ let vtagsNormalized = argTokenizeBySpaces(vtags);
25
25
  if (this.options.stagsNormaliser) {
26
26
  stagsNormalized = this.options.stagsNormaliser(stagsNormalized);
27
27
  }
@@ -38,9 +38,9 @@ export class SVTStyler {
38
38
  static normalizeRule(rule) {
39
39
  let stagMode = rule.stagMode ?? "or";
40
40
  let vtagMode = rule.vtagMode ?? "or";
41
- let stags = deduplicate(normalizeTagListArgument(rule.stags));
42
- let vtags = deduplicate(normalizeTagListArgument(rule.vtags));
43
- let classes = deduplicate(normalizeTagListArgument(rule.classes));
41
+ let stags = deduplicate(argTokenizeBySpaces(rule.stags));
42
+ let vtags = deduplicate(argTokenizeBySpaces(rule.vtags));
43
+ let classes = deduplicate(argTokenizeBySpaces(rule.classes));
44
44
  if (rule.stags == undefined && rule.stagMode == undefined) {
45
45
  stagMode = "any";
46
46
  }
@@ -1,5 +1,5 @@
1
1
  import { twMerge } from "tailwind-merge";
2
- import { splitCleanString } from "./utils.js";
2
+ import { tokenizeFilterString } from "@mrts/common";
3
3
  export class SVTStylerNormalizer {
4
4
  styler;
5
5
  constructor(styler) {
@@ -11,7 +11,7 @@ export class SVTStylerNormalizer {
11
11
  }
12
12
  }
13
13
  export function twMergeNormalize(raw) {
14
- return splitCleanString(twMerge(...raw));
14
+ return tokenizeFilterString(twMerge(...raw));
15
15
  }
16
16
  export function mainTagNormalize(rawTags, defaultTag) {
17
17
  const rhead = [];
@@ -1,17 +1,15 @@
1
- import { splitCleanString } from "./utils.js";
2
- export function normalizeTagListArgument(arg) {
3
- if (typeof arg == "string") {
4
- return splitCleanString(arg);
5
- }
6
- else if (Array.isArray(arg)) {
7
- const r = [];
8
- for (const a of arg) {
9
- r.push(...normalizeTagListArgument(a));
10
- }
11
- return r;
12
- }
13
- return [];
14
- }
1
+ // export function normalizeTagListArgument(arg: TagListArgument): string[] {
2
+ // if (typeof arg == "string") {
3
+ // return splitCleanString(arg);
4
+ // } else if (Array.isArray(arg)) {
5
+ // const r = [];
6
+ // for (const a of arg) {
7
+ // r.push(...normalizeTagListArgument(a));
8
+ // }
9
+ // return r;
10
+ // }
11
+ // return [];
12
+ // }
15
13
  export function tagRuleMatches(rule, candidateTags) {
16
14
  if (rule.mode == "any") {
17
15
  return true;
@@ -1,3 +1,2 @@
1
- import type { TagListArgument, TagRule } from "./types.js";
2
- export declare function normalizeTagListArgument(arg: TagListArgument): string[];
1
+ import type { TagRule } from "./types.js";
3
2
  export declare function tagRuleMatches(rule: TagRule, candidateTags: string[]): boolean;
@@ -1,9 +1,10 @@
1
- export type TagListArgument = string | string[] | TagListArgument[] | undefined;
1
+ import type { TokenizeArg } from "@mrts/common";
2
+ export type TagListArgument = TokenizeArg;
3
+ export interface ISVTStyler {
4
+ classes(stags: TagListArgument, vtags: TagListArgument): string[] | undefined;
5
+ }
2
6
  export type TagRuleMode = "or" | "and" | "any";
3
7
  export type TagRule = {
4
8
  mode: TagRuleMode;
5
9
  tags: string[];
6
10
  };
7
- export interface ISVTStyler {
8
- classes(stags: TagListArgument, vtags: TagListArgument): string[] | undefined;
9
- }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mrts/soltw",
3
3
  "description": "S O L T W : SolidJS + tailwindcss ui components",
4
- "version": "0.3.2",
4
+ "version": "0.3.6",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.js",
7
7
  "module": "dist/esm/index.js",
@@ -14,6 +14,7 @@
14
14
  "author": "microu",
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
+ "@mrts/common": "^0.3.5",
17
18
  "solid-js": "^1.9.4",
18
19
  "tailwind-merge": "^3.0.1"
19
20
  },
@@ -34,5 +35,5 @@
34
35
  "publishConfig": {
35
36
  "access": "public"
36
37
  },
37
- "gitHead": "e08b5c423be3441bea8cf8f2388201a19f2c6146"
38
+ "gitHead": "c4bd1c99bbde06225bb6721c8c4204424959e6c0"
38
39
  }
@@ -1,17 +0,0 @@
1
- export function splitCleanString(s, options = {}) {
2
- const separator = options.separator ?? /\s+/;
3
- const filter = options.filter ?? ((s) => s.length > 0);
4
- const r = s.split(separator).filter(filter);
5
- return r;
6
- }
7
- export function deduplicate(items) {
8
- const r = [];
9
- const itemSet = new Set();
10
- for (const item of items) {
11
- if (!itemSet.has(item)) {
12
- r.push(item);
13
- itemSet.add(item);
14
- }
15
- }
16
- return r;
17
- }
@@ -1,5 +0,0 @@
1
- export declare function splitCleanString(s: string, options?: {
2
- separator?: string | RegExp;
3
- filter?: (s: string) => boolean;
4
- }): string[];
5
- export declare function deduplicate<T>(items: T[]): T[];