@mrts/soltw 0.3.5 → 0.3.7

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,107 +25,47 @@ function buildIdLabel(arg) {
24
25
  }
25
26
  }
26
27
 
27
- function buildTokenizeFuncUsingSplitters(splitters) {
28
- splitters = Array.isArray(splitters) ? splitters : [splitters];
29
- const tokenize = s => {
30
- let r = s.split(splitters[0]).filter(t => t != "" && t != undefined);
31
- for (const splitter of splitters.slice(1)) {
32
- const r0 = [...r];
33
- r = [];
34
- for (const s of r0) {
35
- r.push(...tokenizeFilterString(s, {
36
- splitter,
37
- filter: t => t != "" && t != undefined
38
- }));
39
- //r.push(...s.split(splitter).filter((t) => t != "" && t != undefined));
40
- }
41
- }
42
- return r;
43
- };
44
- return tokenize;
45
- }
46
- function buildArgTokenizeFunc(tokenize) {
47
- const argTokenize = arg => {
48
- if (arg == undefined) {
49
- return [];
50
- } else if (Array.isArray(arg)) {
51
- const r = [];
52
- for (const a of arg) {
53
- r.push(...argTokenize(a));
54
- }
55
- return r;
56
- } else {
57
- return tokenize(arg);
58
- }
59
- };
60
- return argTokenize;
61
- }
62
- const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\s+/);
63
- const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);
64
- function tokenizeFilterString(s, options = {}) {
65
- const separator = options.splitter ?? /\s+/;
66
- const filter = options.filter ?? (s => s.length > 0);
67
- const r = s.split(separator).filter(filter);
68
- return r;
69
- }
70
- function deduplicate(items) {
71
- const r = [];
72
- const itemSet = new Set();
73
- for (const item of items) {
74
- if (!itemSet.has(item)) {
75
- r.push(item);
76
- itemSet.add(item);
77
- }
78
- }
79
- return r;
80
- }
81
-
82
- const LogLevels = ["ERROR", "WARNING", "INFO", "DEBUG"];
83
- const LogLevelsMap = new Map();
84
- LogLevels.forEach((level, i) => {
85
- LogLevelsMap.set(level, LogLevels.length - i);
86
- });
87
-
88
- class SVTStylerNormalizer {
89
- constructor(styler) {
90
- this.styler = styler;
91
- }
92
- classes(stags, vtags) {
93
- const r = this.styler.classes(stags, vtags);
94
- return r ?? [];
95
- }
96
- }
97
28
  function twMergeNormalize(raw) {
98
- return tokenizeFilterString(tailwindMerge.twMerge(...raw));
29
+ return common.tokenizeFilterString(tailwindMerge.twMerge(...raw));
99
30
  }
100
31
  function mainTagNormalize(rawTags, defaultTag) {
101
- const rhead = [];
102
- const rtail = [];
103
- let rtag = undefined;
104
- for (const tag of rawTags) {
105
- if (tag.length == 1 && tag.toUpperCase() == tag) {
106
- rtag = tag;
107
- rhead.push(...rtail);
108
- rtail.length = 0;
109
- } else {
110
- if (rtag == undefined) {
111
- rhead.push(tag);
112
- } else {
113
- rtail.push(tag);
114
- }
115
- }
116
- }
117
- rtag = rtag ?? defaultTag;
118
- const r = rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
119
- // console.log("MAIN TAGS NORM:", rawTags, r);
120
- return r;
32
+ return exclusiveTagsNormalize(rawTags, tag => tag.length == 1 && tag.toUpperCase() == tag, defaultTag);
121
33
  }
122
- function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
34
+
35
+ // export function mainTagNormalize(
36
+ // rawTags: string[],
37
+ // defaultTag?: string
38
+ // ): string[] {
39
+ // const rhead = [] as string[];
40
+ // const rtail = [] as string[];
41
+ // let rtag: string | undefined = undefined;
42
+ // for (const tag of rawTags) {
43
+ // if (tag.length == 1 && tag.toUpperCase() == tag) {
44
+ // rtag = tag;
45
+ // rhead.push(...rtail);
46
+ // rtail.length = 0;
47
+ // } else {
48
+ // if (rtag == undefined) {
49
+ // rhead.push(tag);
50
+ // } else {
51
+ // rtail.push(tag);
52
+ // }
53
+ // }
54
+ // }
55
+ // rtag = rtag ?? defaultTag;
56
+ // const r =
57
+ // rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
58
+ // // console.log("MAIN TAGS NORM:", rawTags, r);
59
+ // return r;
60
+ // }
61
+
62
+ function exclusiveTagsNormalize(rawTags, tagSet, defaultTag) {
123
63
  const rhead = [];
124
64
  const rtail = [];
125
65
  let rtag = undefined;
66
+ const tagSetFunc = typeof tagSet == "function" ? tagSet : tag => tagSet.has(tag);
126
67
  for (const tag of rawTags) {
127
- if (tagSet.has(tag)) {
68
+ if (tagSetFunc(tag)) {
128
69
  rtag = tag;
129
70
  rhead.push(...rtail);
130
71
  rtail.length = 0;
@@ -142,40 +83,6 @@ function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
142
83
  return r;
143
84
  }
144
85
 
145
- // export function normalizeTagListArgument(arg: TagListArgument): string[] {
146
- // if (typeof arg == "string") {
147
- // return splitCleanString(arg);
148
- // } else if (Array.isArray(arg)) {
149
- // const r = [];
150
- // for (const a of arg) {
151
- // r.push(...normalizeTagListArgument(a));
152
- // }
153
- // return r;
154
- // }
155
- // return [];
156
- // }
157
-
158
- function tagRuleMatches(rule, candidateTags) {
159
- if (rule.mode == "any") {
160
- return true;
161
- } else if (rule.mode == "or") {
162
- for (const ctag of candidateTags) {
163
- if (rule.tags.indexOf(ctag) >= 0) {
164
- return true;
165
- }
166
- }
167
- return false;
168
- } else if (rule.mode == "and") {
169
- for (const rtag of rule.tags) {
170
- if (candidateTags.indexOf(rtag) < 0) {
171
- return false;
172
- }
173
- }
174
- return true;
175
- }
176
- return false;
177
- }
178
-
179
86
  class SVTStyler {
180
87
  _rules = [];
181
88
  constructor(rules, options = {}) {
@@ -199,8 +106,8 @@ class SVTStyler {
199
106
  }
200
107
  classes(stags, vtags) {
201
108
  const r = [];
202
- let stagsNormalized = argTokenizeBySpaces(stags);
203
- let vtagsNormalized = argTokenizeBySpaces(vtags);
109
+ let stagsNormalized = common.argTokenizeBySpaces(stags);
110
+ let vtagsNormalized = common.argTokenizeBySpaces(vtags);
204
111
  if (this.options.stagsNormaliser) {
205
112
  stagsNormalized = this.options.stagsNormaliser(stagsNormalized);
206
113
  }
@@ -217,9 +124,9 @@ class SVTStyler {
217
124
  static normalizeRule(rule) {
218
125
  let stagMode = rule.stagMode ?? "or";
219
126
  let vtagMode = rule.vtagMode ?? "or";
220
- let stags = deduplicate(argTokenizeBySpaces(rule.stags));
221
- let vtags = deduplicate(argTokenizeBySpaces(rule.vtags));
222
- let classes = deduplicate(argTokenizeBySpaces(rule.classes));
127
+ let stags = common.deduplicate(common.argTokenizeBySpaces(rule.stags));
128
+ let vtags = common.deduplicate(common.argTokenizeBySpaces(rule.vtags));
129
+ let classes = common.deduplicate(common.argTokenizeBySpaces(rule.classes));
223
130
  if (rule.stags == undefined && rule.stagMode == undefined) {
224
131
  stagMode = "any";
225
132
  }
@@ -242,6 +149,26 @@ class SVTStyler {
242
149
  return tagRuleMatches(rule.stagRule, stags) && tagRuleMatches(rule.vtagRule, vtags);
243
150
  }
244
151
  }
152
+ function tagRuleMatches(rule, candidateTags) {
153
+ if (rule.mode == "any") {
154
+ return true;
155
+ } else if (rule.mode == "or") {
156
+ for (const ctag of candidateTags) {
157
+ if (rule.tags.indexOf(ctag) >= 0) {
158
+ return true;
159
+ }
160
+ }
161
+ return false;
162
+ } else if (rule.mode == "and") {
163
+ for (const rtag of rule.tags) {
164
+ if (candidateTags.indexOf(rtag) < 0) {
165
+ return false;
166
+ }
167
+ }
168
+ return true;
169
+ }
170
+ return false;
171
+ }
245
172
 
246
173
  const baseStyler = new SVTStyler([{
247
174
  vtags: "A",
@@ -287,7 +214,7 @@ const baseStyler = new SVTStyler([{
287
214
  classes: "bg-slate-300/85 cursor-not-allowed"
288
215
  }], {
289
216
  normalizer: twMergeNormalize,
290
- vtagsNormaliser: tags => exlusiveTagNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE")
217
+ vtagsNormaliser: tags => exclusiveTagsNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE")
291
218
  });
292
219
 
293
220
  class Stylers {
@@ -434,6 +361,50 @@ const Block = props => {
434
361
  });
435
362
  };
436
363
 
364
+ function buildTokenizeFuncUsingSplitters(splitters) {
365
+ splitters = Array.isArray(splitters) ? splitters : [splitters];
366
+ const tokenize = s => {
367
+ let r = s.split(splitters[0]).filter(t => t != "" && t != undefined);
368
+ for (const splitter of splitters.slice(1)) {
369
+ const r0 = [...r];
370
+ r = [];
371
+ for (const s of r0) {
372
+ r.push(...tokenizeFilterString(s, {
373
+ splitter,
374
+ filter: t => t != "" && t != undefined
375
+ }));
376
+ //r.push(...s.split(splitter).filter((t) => t != "" && t != undefined));
377
+ }
378
+ }
379
+ return r;
380
+ };
381
+ return tokenize;
382
+ }
383
+ function buildArgTokenizeFunc(tokenize) {
384
+ const argTokenize = arg => {
385
+ if (arg == undefined) {
386
+ return [];
387
+ } else if (Array.isArray(arg)) {
388
+ const r = [];
389
+ for (const a of arg) {
390
+ r.push(...argTokenize(a));
391
+ }
392
+ return r;
393
+ } else {
394
+ return tokenize(arg);
395
+ }
396
+ };
397
+ return argTokenize;
398
+ }
399
+ const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\s+/);
400
+ const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);
401
+ function tokenizeFilterString(s, options = {}) {
402
+ const separator = options.splitter ?? /\s+/;
403
+ const filter = options.filter ?? (s => s.length > 0);
404
+ const r = s.split(separator).filter(filter);
405
+ return r;
406
+ }
407
+
437
408
  const ItemGroup = props => {
438
409
  const items = () => props.items.map(buildIdLabel);
439
410
  const currentVTags = solidJs.createMemo(() => {
@@ -526,12 +497,12 @@ exports.Block = Block;
526
497
  exports.Item = Item;
527
498
  exports.ItemGroup = ItemGroup;
528
499
  exports.SVTStyler = SVTStyler;
529
- exports.SVTStylerNormalizer = SVTStylerNormalizer;
530
500
  exports.SolTw = SolTw;
531
501
  exports.Stylers = Stylers;
532
502
  exports.baseStyler = baseStyler;
533
503
  exports.buildIdLabel = buildIdLabel;
534
- exports.exlusiveTagNormalize = exlusiveTagNormalize;
504
+ exports.exclusiveTagsNormalize = exclusiveTagsNormalize;
535
505
  exports.mainTagNormalize = mainTagNormalize;
506
+ exports.tagRuleMatches = tagRuleMatches;
536
507
  exports.twMergeNormalize = twMergeNormalize;
537
508
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../../common/dist/strings/tokenize.js","../../../common/dist/messages/logMessages.js","../../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 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","export const LogLevels = [\"ERROR\", \"WARNING\", \"INFO\", \"DEBUG\"];\nconst LogLevelsMap = new Map();\nLogLevels.forEach((level, i) => {\n LogLevelsMap.set(level, LogLevels.length - i);\n});\nexport function logMessage(level, message, data = {}) {\n return { type: `log.${level}`, level, message, ...data };\n}\nexport function error(message, data = {}) {\n return logMessage(\"ERROR\", message, data);\n}\nexport function warning(message, data = {}) {\n return logMessage(\"WARNING\", message, data);\n}\nexport function info(message, data = {}) {\n return logMessage(\"INFO\", message, data);\n}\nexport function debug(message, data = {}) {\n return logMessage(\"DEBUG\", message, data);\n}\nexport function compareLevel(a, b) {\n return Math.sign(LogLevelsMap.get(a) - LogLevelsMap.get(b));\n}\n//# sourceMappingURL=logMessages.js.map","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","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","buildTokenizeFuncUsingSplitters","splitters","tokenize","s","split","filter","t","splitter","slice","r0","push","tokenizeFilterString","buildArgTokenizeFunc","argTokenize","a","tokenizeBySpaces","argTokenizeBySpaces","options","separator","length","deduplicate","items","itemSet","Set","item","has","add","LogLevels","LogLevelsMap","Map","forEach","level","i","set","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","toUpperCase","exlusiveTagNormalize","tagSet","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","base","_base","setBase","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":";;;;;;AAcO,SAASA,YAAYA,CAACC,GAAe,EAAW;AACrD,EAAA,IAAI,OAAOA,GAAG,IAAI,QAAQ,EAAE;IAC1B,OAAO;AAAEC,MAAAA,EAAE,EAAED,GAAG;AAAEE,MAAAA,KAAK,EAAEF;KAAK;EAChC,CAAC,MAAM,IAAIG,KAAK,CAACC,OAAO,CAACJ,GAAG,CAAC,EAAE;IAC7B,OAAO;AAAEC,MAAAA,EAAE,EAAED,GAAG,CAAC,CAAC,CAAC;MAAEE,KAAK,EAAEF,GAAG,CAAC,CAAC;KAAG;AACtC,EAAA,CAAC,MAAM;IACL,MAAMK,CAAC,GAAGC,MAAM,CAACC,MAAM,CAAC,EAAE,EAAEP,GAAG,CAAC;AAChC,IAAA,IAAIK,CAAC,CAACH,KAAK,IAAIM,SAAS,EAAE;AACxBH,MAAAA,CAAC,CAAC,OAAO,CAAC,GAAGA,CAAC,CAACJ,EAAE;AACnB,IAAA;AACA,IAAA,OAAOI,CAAC;AACV,EAAA;AACF;;AClBM,SAAUI,+BAA+BA,CAC7CC,SAAgC,EAAA;AAEhCA,EAAAA,SAAS,GAAGP,KAAK,CAACC,OAAO,CAACM,SAAS,CAAC,GAAGA,SAAS,GAAG,CAACA,SAAS,CAAC;EAE9D,MAAMC,QAAQ,GAAkBC,CAAS,IAAI;IAC3C,IAAIP,CAAC,GAAGO,CAAC,CAACC,KAAK,CAACH,SAAS,CAAC,CAAC,CAAE,CAAC,CAACI,MAAM,CAAEC,CAAC,IAAKA,CAAC,IAAI,EAAE,IAAIA,CAAC,IAAIP,SAAS,CAAC;IAEvE,KAAK,MAAMQ,QAAQ,IAAIN,SAAS,CAACO,KAAK,CAAC,CAAC,CAAC,EAAE;AACzC,MAAA,MAAMC,EAAE,GAAG,CAAC,GAAGb,CAAC,CAAC;AAEjBA,MAAAA,CAAC,GAAG,EAAE;AAEN,MAAA,KAAK,MAAMO,CAAC,IAAIM,EAAE,EAAE;AAClBb,QAAAA,CAAC,CAACc,IAAI,CACJ,GAAGC,oBAAoB,CAACR,CAAC,EAAE;UACzBI,QAAQ;UACRF,MAAM,EAAGC,CAAC,IAAKA,CAAC,IAAI,EAAE,IAAIA,CAAC,IAAIP;AAChC,SAAA,CAAC,CACH;AACD;AACF,MAAA;AACF,IAAA;AAEA,IAAA,OAAOH,CAAC;EACV,CAAC;AAED,EAAA,OAAOM,QAAQ;AACjB;AAEM,SAAUU,oBAAoBA,CAACV,QAAsB,EAAA;EACzD,MAAMW,WAAW,GAAqBtB,GAAgB,IAAI;IACxD,IAAIA,GAAG,IAAIQ,SAAS,EAAE;AACpB,MAAA,OAAO,EAAE;IACX,CAAC,MAAM,IAAIL,KAAK,CAACC,OAAO,CAACJ,GAAG,CAAC,EAAE;MAC7B,MAAMK,CAAC,GAAG,EAAE;AAEZ,MAAA,KAAK,MAAMkB,CAAC,IAAIvB,GAAG,EAAE;QACnBK,CAAC,CAACc,IAAI,CAAC,GAAGG,WAAW,CAACC,CAAC,CAAC,CAAC;AAC3B,MAAA;AAEA,MAAA,OAAOlB,CAAC;AACV,IAAA,CAAC,MAAM;MACL,OAAOM,QAAQ,CAACX,GAAG,CAAC;AACtB,IAAA;EACF,CAAC;AAED,EAAA,OAAOsB,WAAW;AACpB;AAEO,MAAME,gBAAgB,GAAGf,+BAA+B,CAAC,KAAK,CAAC;AAE/D,MAAMgB,mBAAmB,GAAGJ,oBAAoB,CAACG,gBAAgB,CAAC;AAEnE,SAAUJ,oBAAoBA,CAClCR,CAAS,EACTc,OAAA,GAA2E,EAAE,EAAA;AAE7E,EAAA,MAAMC,SAAS,GAAGD,OAAO,CAACV,QAAQ,IAAI,KAAK;AAC3C,EAAA,MAAMF,MAAM,GAAGY,OAAO,CAACZ,MAAM,KAAMF,CAAS,IAAKA,CAAC,CAACgB,MAAM,GAAG,CAAC,CAAC;AAC9D,EAAA,MAAMvB,CAAC,GAAGO,CAAC,CAACC,KAAK,CAACc,SAAS,CAAC,CAACb,MAAM,CAACA,MAAM,CAAC;AAC3C,EAAA,OAAOT,CAAC;AACV;AAEM,SAAUwB,WAAWA,CAAIC,KAAU,EAAA;EACvC,MAAMzB,CAAC,GAAG,EAAS;AACnB,EAAA,MAAM0B,OAAO,GAAG,IAAIC,GAAG,EAAK;AAC5B,EAAA,KAAK,MAAMC,IAAI,IAAIH,KAAK,EAAE;AACxB,IAAA,IAAI,CAACC,OAAO,CAACG,GAAG,CAACD,IAAI,CAAC,EAAE;AACtB5B,MAAAA,CAAC,CAACc,IAAI,CAACc,IAAI,CAAC;AACZF,MAAAA,OAAO,CAACI,GAAG,CAACF,IAAI,CAAC;AACnB,IAAA;AACF,EAAA;AAEA,EAAA,OAAO5B,CAAC;AACV;;ACzEO,MAAM+B,SAAS,GAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAC3E,MAAMC,YAAY,GAAG,IAAIC,GAAG,EAAqB;AACjDF,SAAS,CAACG,OAAO,CAAC,CAACC,KAAK,EAAEC,CAAC,KAAI;EAC7BJ,YAAY,CAACK,GAAG,CAACF,KAAK,EAAEJ,SAAS,CAACR,MAAM,GAAGa,CAAC,CAAC;AAC/C,CAAC,CAAC;;ACVK,MAAME,mBAAmB,CAAuB;EACrDC,WAAWA,CAAkBC,MAAkB,EAAE;IAAA,IAAA,CAApBA,MAAkB,GAAlBA,MAAkB;AAAG,EAAA;AAElDC,EAAAA,OAAOA,CAACC,KAAsB,EAAEC,KAAsB,EAAY;IAChE,MAAM3C,CAAC,GAAG,IAAI,CAACwC,MAAM,CAACC,OAAO,CAACC,KAAK,EAAEC,KAAK,CAAC;IAC3C,OAAO3C,CAAC,IAAI,EAAE;AAChB,EAAA;AACF;AAEO,SAAS4C,gBAAgBA,CAACC,GAAa,EAAY;AACxD,EAAA,OAAO9B,oBAAoB,CAAC+B,qBAAO,CAAC,GAAGD,GAAG,CAAC,CAAC;AAC9C;AAEO,SAASE,gBAAgBA,CAC9BC,OAAiB,EACjBC,UAAmB,EACT;EACV,MAAMC,KAAK,GAAG,EAAc;EAC5B,MAAMC,KAAK,GAAG,EAAc;EAC5B,IAAIC,IAAwB,GAAGjD,SAAS;AACxC,EAAA,KAAK,MAAMkD,GAAG,IAAIL,OAAO,EAAE;AACzB,IAAA,IAAIK,GAAG,CAAC9B,MAAM,IAAI,CAAC,IAAI8B,GAAG,CAACC,WAAW,EAAE,IAAID,GAAG,EAAE;AAC/CD,MAAAA,IAAI,GAAGC,GAAG;AACVH,MAAAA,KAAK,CAACpC,IAAI,CAAC,GAAGqC,KAAK,CAAC;MACpBA,KAAK,CAAC5B,MAAM,GAAG,CAAC;AAClB,IAAA,CAAC,MAAM;MACL,IAAI6B,IAAI,IAAIjD,SAAS,EAAE;AACrB+C,QAAAA,KAAK,CAACpC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA,CAAC,MAAM;AACLF,QAAAA,KAAK,CAACrC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;EACAD,IAAI,GAAGA,IAAI,IAAIH,UAAU;EACzB,MAAMjD,CAAC,GACLoD,IAAI,IAAIjD,SAAS,GAAG,CAAC,GAAG+C,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,CAAC,GAAGD,KAAK,EAAEE,IAAI,EAAE,GAAGD,KAAK,CAAC;AACvE;AACA,EAAA,OAAOnD,CAAC;AACV;AAEO,SAASuD,oBAAoBA,CAClCP,OAAiB,EACjBQ,MAAmB,EACnBP,UAAmB,EACT;EACV,MAAMC,KAAK,GAAG,EAAc;EAC5B,MAAMC,KAAK,GAAG,EAAc;EAC5B,IAAIC,IAAwB,GAAGjD,SAAS;AACxC,EAAA,KAAK,MAAMkD,GAAG,IAAIL,OAAO,EAAE;AACzB,IAAA,IAAIQ,MAAM,CAAC3B,GAAG,CAACwB,GAAG,CAAC,EAAE;AACnBD,MAAAA,IAAI,GAAGC,GAAG;AACVH,MAAAA,KAAK,CAACpC,IAAI,CAAC,GAAGqC,KAAK,CAAC;MACpBA,KAAK,CAAC5B,MAAM,GAAG,CAAC;AAClB,IAAA,CAAC,MAAM;MACL,IAAI6B,IAAI,IAAIjD,SAAS,EAAE;AACrB+C,QAAAA,KAAK,CAACpC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA,CAAC,MAAM;AACLF,QAAAA,KAAK,CAACrC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;EACAD,IAAI,GAAGA,IAAI,IAAIH,UAAU;EACzB,MAAMjD,CAAC,GACLoD,IAAI,IAAIjD,SAAS,GAAG,CAAC,GAAG+C,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,CAAC,GAAGD,KAAK,EAAEE,IAAI,EAAE,GAAGD,KAAK,CAAC;AACvE;AACA,EAAA,OAAOnD,CAAC;AACV;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,SAASyD,cAAcA,CAC5BC,IAAY,EACZC,aAAuB,EACvB;AACA,EAAA,IAAID,IAAI,CAACE,IAAI,IAAI,KAAK,EAAE;AACtB,IAAA,OAAO,IAAI;AACb,EAAA,CAAC,MAAM,IAAIF,IAAI,CAACE,IAAI,IAAI,IAAI,EAAE;AAC5B,IAAA,KAAK,MAAMC,IAAI,IAAIF,aAAa,EAAE;MAChC,IAAID,IAAI,CAACI,IAAI,CAACC,OAAO,CAACF,IAAI,CAAC,IAAI,CAAC,EAAE;AAChC,QAAA,OAAO,IAAI;AACb,MAAA;AACF,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA,CAAC,MAAM,IAAIH,IAAI,CAACE,IAAI,IAAI,KAAK,EAAE;AAC7B,IAAA,KAAK,MAAMR,IAAI,IAAIM,IAAI,CAACI,IAAI,EAAE;MAC5B,IAAIH,aAAa,CAACI,OAAO,CAACX,IAAI,CAAC,GAAG,CAAC,EAAE;AACnC,QAAA,OAAO,KAAK;AACd,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AACA,EAAA,OAAO,KAAK;AACd;;ACZO,MAAMY,SAAS,CAAuB;AAClCC,EAAAA,MAAM,GAAc,EAAE;AAG/B1B,EAAAA,WAAWA,CAAC2B,KAAmB,EAAE7C,OAAyB,GAAG,EAAE,EAAE;AAC/D,IAAA,KAAK,MAAMrB,CAAC,IAAIkE,KAAK,EAAE;MACrB,IAAI,CAACD,MAAM,CAACnD,IAAI,CAACkD,SAAS,CAACG,aAAa,CAACnE,CAAC,CAAC,CAAC;AAC9C,IAAA;IACA,IAAI,CAACqB,OAAO,GAAG;MAAE,GAAGA;KAAS;AAC/B,EAAA;AAEA+C,EAAAA,IAAIA,CAACF,KAAmB,EAAE7C,OAAyB,GAAG,EAAE,EAAa;IACnE,MAAMgD,UAAqB,GAAG,EAAE;AAChC,IAAA,KAAK,MAAMrE,CAAC,IAAIkE,KAAK,EAAE;MACrBG,UAAU,CAACvD,IAAI,CAACkD,SAAS,CAACG,aAAa,CAACnE,CAAC,CAAC,CAAC;AAC7C,IAAA;AAEA,IAAA,MAAMwC,MAAM,GAAG,IAAIwB,SAAS,CAAC,EAAE,EAAE;AAAE,MAAA,GAAG,IAAI,CAAC3C;AAAQ,KAAC,CAAC;AACrDmB,IAAAA,MAAM,CAACyB,MAAM,CAACnD,IAAI,CAAC,GAAG,IAAI,CAACmD,MAAM,EAAE,GAAGI,UAAU,CAAC;AACjD,IAAA,OAAO7B,MAAM;AACf,EAAA;AAEAC,EAAAA,OAAOA,CAACC,KAAsB,EAAEC,KAAsB,EAAY;IAChE,MAAM3C,CAAC,GAAG,EAAc;AAExB,IAAA,IAAIsE,eAAe,GAAGlD,mBAAmB,CAACsB,KAAK,CAAC;AAChD,IAAA,IAAI6B,eAAe,GAAGnD,mBAAmB,CAACuB,KAAK,CAAC;AAEhD,IAAA,IAAI,IAAI,CAACtB,OAAO,CAACmD,eAAe,EAAE;MAChCF,eAAe,GAAG,IAAI,CAACjD,OAAO,CAACmD,eAAe,CAACF,eAAe,CAAC;AACjE,IAAA;AACA,IAAA,IAAI,IAAI,CAACjD,OAAO,CAACoD,eAAe,EAAE;MAChCF,eAAe,GAAG,IAAI,CAAClD,OAAO,CAACoD,eAAe,CAACF,eAAe,CAAC;AACjE,IAAA;AAEA,IAAA,KAAK,MAAMb,IAAI,IAAI,IAAI,CAACO,MAAM,EAAE;MAC9B,IAAI,IAAI,CAACS,WAAW,CAAChB,IAAI,EAAEY,eAAe,EAAEC,eAAe,CAAC,EAAE;AAC5DvE,QAAAA,CAAC,CAACc,IAAI,CAAC,GAAG4C,IAAI,CAACjB,OAAO,CAAC;AACzB,MAAA;AACF,IAAA;AAEA,IAAA,OAAO,IAAI,CAACpB,OAAO,CAACsD,UAAU,GAAG,IAAI,CAACtD,OAAO,CAACsD,UAAU,CAAC3E,CAAC,CAAC,GAAGA,CAAC;AACjE,EAAA;EAEA,OAAOmE,aAAaA,CAACT,IAAgB,EAAW;AAC9C,IAAA,IAAIkB,QAAqB,GAAGlB,IAAI,CAACkB,QAAQ,IAAI,IAAI;AACjD,IAAA,IAAIC,QAAqB,GAAGnB,IAAI,CAACmB,QAAQ,IAAI,IAAI;IACjD,IAAInC,KAAe,GAAGlB,WAAW,CAACJ,mBAAmB,CAACsC,IAAI,CAAChB,KAAK,CAAC,CAAC;IAClE,IAAIC,KAAe,GAAGnB,WAAW,CAACJ,mBAAmB,CAACsC,IAAI,CAACf,KAAK,CAAC,CAAC;IAClE,IAAIF,OAAiB,GAAGjB,WAAW,CAACJ,mBAAmB,CAACsC,IAAI,CAACjB,OAAO,CAAC,CAAC;IAEtE,IAAIiB,IAAI,CAAChB,KAAK,IAAIvC,SAAS,IAAIuD,IAAI,CAACkB,QAAQ,IAAIzE,SAAS,EAAE;AACzDyE,MAAAA,QAAQ,GAAG,KAAK;AAClB,IAAA;IACA,IAAIlB,IAAI,CAACf,KAAK,IAAIxC,SAAS,IAAIuD,IAAI,CAACmB,QAAQ,IAAI1E,SAAS,EAAE;AACzD0E,MAAAA,QAAQ,GAAG,KAAK;AAClB,IAAA;IAEA,OAAO;AACLC,MAAAA,QAAQ,EAAE;AAAElB,QAAAA,IAAI,EAAEgB,QAAQ;AAAEd,QAAAA,IAAI,EAAEpB;OAAO;AACzCqC,MAAAA,QAAQ,EAAE;AAAEnB,QAAAA,IAAI,EAAEiB,QAAQ;AAAEf,QAAAA,IAAI,EAAEnB;OAAO;AACzCF,MAAAA;KACD;AACH,EAAA;AAEAiC,EAAAA,WAAWA,CAAChB,IAAa,EAAEhB,KAAe,EAAEC,KAAe,EAAE;AAC3D,IAAA,OACEc,cAAc,CAACC,IAAI,CAACoB,QAAQ,EAAEpC,KAAK,CAAC,IACpCe,cAAc,CAACC,IAAI,CAACqB,QAAQ,EAAEpC,KAAK,CAAC;AAExC,EAAA;AACF;;MC5FaqC,UAAU,GAAG,IAAIhB,SAAS,CACrC,CACE;AACErB,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,MAAM;AACbF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXD,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXD,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEC,EAAAA,KAAK,EAAE,eAAe;AACtBD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEC,EAAAA,KAAK,EAAE,eAAe;AACtBD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEC,EAAAA,KAAK,EAAE,eAAe;AACtBD,EAAAA,OAAO,EAAE;AACX,CAAC,CACF,EACD;AACEkC,EAAAA,UAAU,EAAE/B,gBAAgB;EAC5B6B,eAAe,EAAGX,IAAI,IACpBP,oBAAoB,CAClBR,gBAAgB,CAACe,IAAI,EAAE,GAAG,CAAC,EAC3B,IAAInC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAC7B,MACF;AACJ,CACF;;ACxEO,MAAMsD,OAAO,CAAC;AAEnB,EAAA,OAAeC,WAAW,GAAG,IAAIjD,GAAG,EAAsB;EAE1D,WAAWkD,IAAIA,GAA2B;IACxC,OAAO,IAAI,CAACC,KAAK;AACnB,EAAA;EACA,OAAOC,OAAOA,CAACF,IAA4B,EAAE;AAC3C,IAAA,OAAQ,IAAI,CAACC,KAAK,GAAGD,IAAI;AAC3B,EAAA;AACA,EAAA;IACE,IAAI,CAACD,WAAW,CAAC7C,GAAG,CAAC,SAAS,EAAE2C,UAAU,CAAC;AAC3C,IAAA,IAAI,CAACK,OAAO,CAACL,UAAU,CAAC;AAC1B;EAEA,OAAOM,GAAGA,CAACC,IAAY,EAA0B;AAC/C,IAAA,OAAO,IAAI,CAACL,WAAW,CAACI,GAAG,CAACC,IAAI,CAAC;AACnC,EAAA;AACF;;;ACIO,MAAMC,IAA2B,GAAIC,KAAK,IAAK;EACpD,MAAMC,QAAQ,GAAGA,MAAMhG,YAAY,CAAC+F,KAAK,CAACE,OAAO,CAAC;EAElD,MAAMC,YAAY,GAAGA,MAAM;IACzB,MAAM5F,CAAC,GAAG,EAAc;AACxBA,IAAAA,CAAC,CAACc,IAAI,CAAC,MAAM,CAAC;IACd,IAAI2E,KAAK,CAACI,QAAQ,EAAE;AAClB7F,MAAAA,CAAC,CAACc,IAAI,CAAC,eAAe,CAAC;AACzB,IAAA;IACA,IAAI2E,KAAK,CAACK,QAAQ,EAAE;AAClB9F,MAAAA,CAAC,CAACc,IAAI,CAAC,eAAe,CAAC;AACzB,IAAA;AACA,IAAA,OAAOd,CAAC;EACV,CAAC;EAED,MAAM+F,aAAa,GAAGA,MAAM;IAC1B,IAAIN,KAAK,CAACjD,MAAM,EAAE;MAChB,OAAOiD,KAAK,CAACjD,MAAM;AACrB,IAAA,CAAC,MAAM;MACL,OAAOyC,OAAO,CAACE,IAAI;AACrB,IAAA;EACF,CAAC;AAED,EAAA,MAAMa,SAAS,GAAGC,kBAAU,CAAa,MAAM;AAC7C,IAAA,IAAIR,KAAK,CAACS,KAAK,IAAI/F,SAAS,EAAE;AAC5B,MAAA,OAAO,EAAE;IACX,CAAC,MAAM,IAAI,OAAOsF,KAAK,CAACS,KAAK,IAAI,QAAQ,EAAE;MACzC,OAAO;QAAEtE,IAAI,EAAE6D,KAAK,CAACS;OAAO;AAC9B,IAAA,CAAC,MAAM;MACL,OAAOT,KAAK,CAACS,KAAK;AACpB,IAAA;AACF,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMC,WAAW,GAAGF,kBAAU,CAAC,MAAM;AACnC,IAAA,MAAMvD,KAAK,GAAGkD,YAAY,EAAE;AAE5B,IAAA,MAAMpD,MAAM,GAAGuD,aAAa,EAAE;IAE9B,MAAMK,UAAU,GAAG,EAA4B;AAE/C,IAAA,MAAMC,aAAa,GAAG7D,MAAM,GACxBA,MAAM,CAACC,OAAO,CAACC,KAAK,EAAE+C,KAAK,CAAC9C,KAAK,CAAC,GAClCxC,SAAS;IACbiG,UAAU,CAACtF,IAAI,CAAC,IAAIuF,aAAa,IAAI,EAAE,CAAC,CAAC;IAEzC,IAAIZ,KAAK,CAACa,QAAQ,EAAE;AAClBF,MAAAA,UAAU,CAACtF,IAAI,CAAC,4BAA4B,CAAC;AAC/C,IAAA;AAEA,IAAA,MAAMyF,aAAa,GAAGP,SAAS,EAAE;IACjC,IAAIO,aAAa,CAAC3E,IAAI,EAAE;AACtBwE,MAAAA,UAAU,CAACtF,IAAI,CAACyF,aAAa,CAAC3E,IAAI,CAAC;AACrC,IAAA;AACA,IAAA,IAAI6D,KAAK,CAACI,QAAQ,IAAIU,aAAa,CAACV,QAAQ,EAAE;AAC5CO,MAAAA,UAAU,CAACtF,IAAI,CAACyF,aAAa,CAACV,QAAQ,CAAC;AACzC,IAAA;AACA,IAAA,IAAIJ,KAAK,CAACK,QAAQ,IAAIS,aAAa,CAACT,QAAQ,EAAE;AAC5CM,MAAAA,UAAU,CAACtF,IAAI,CAACyF,aAAa,CAACT,QAAQ,CAAC;AACzC,IAAA;AAEAM,IAAAA,UAAU,CAACtF,IAAI,CAAC,UAAU,CAAC;AAC3B,IAAA,MAAMd,CAAC,GAAG8C,qBAAO,CAACsD,UAAU,CAAC;AAC7B,IAAA,OAAOpG,CAAC;AACV,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMwG,eAAe,GAAGP,kBAAU,CAAC,MAAM;IACvC,MAAMG,UAAU,GAAG,EAAc;IACjC,IAAIL,aAAa,EAAE,EAAE;AACnBK,MAAAA,UAAU,CAACtF,IAAI,CACb,GAAGiF,aAAa,EAAE,CAAEtD,OAAO,CAAC,eAAe,EAAEgD,KAAK,CAAC9C,KAAK,CAC1D,CAAC;AACH,IAAA;AACA,IAAA,IAAIqD,SAAS,EAAE,CAACS,QAAQ,EAAE;MACxBL,UAAU,CAACtF,IAAI,CAACkF,SAAS,EAAE,CAACS,QAAS,CAAC;AACxC,IAAA;AACAL,IAAAA,UAAU,CAACtF,IAAI,CAAC,kBAAkB,CAAC;AACnC,IAAA,MAAMd,CAAC,GAAG8C,qBAAO,CAACsD,UAAU,CAAC;AAC7B,IAAA,OAAOpG,CAAC;AACV,EAAA,CAAC,CAAC;EAEF,SAAS0G,WAAWA,GAAG;AACrB,IAAA,IAAIjB,KAAK,CAACa,QAAQ,IAAInG,SAAS,EAAE;AAC/BsF,MAAAA,KAAK,CAACa,QAAQ,CAACZ,QAAQ,EAAE,CAAC;AAC5B,IAAA;AACF,EAAA;AAEA,EAAA,OAAA,CAAA,MAAA;IAAA,IAAAiB,IAAA,GAAAC,QAAA,EAAA;IAAAD,IAAA,CAAAE,OAAA,GACgBH,WAAW;AAAAI,IAAAA,UAAA,CAAAH,IAAA,EAAA,MACtBjB,QAAQ,EAAE,CAAC7F,KAAK,EAAA,IAAA,CAAA;AAAAiH,IAAAA,UAAA,CAAAH,IAAA,EAAAI,mBAAA,CAChBC,YAAI,EAAA;AAAA,MAAA,IAACC,IAAIA,GAAA;QAAA,OAAExB,KAAK,CAACK,QAAQ;AAAA,MAAA,CAAA;AAAA,MAAA,IAAAoB,QAAAA,GAAA;QAAA,IAAAC,KAAA,GAAAP,QAAA,EAAA;AAAAO,QAAAA,KAAA,CAAAN,OAAA,GAGZO,CAAC,IAAK;AACd,UAAA,IAAI,CAAC3B,KAAK,CAAC4B,qBAAqB,EAAE;YAChCD,CAAC,CAACE,eAAe,EAAE;AACrB,UAAA;QACF,CAAC;AAAAC,QAAAA,UAAA,OAAAC,aAAA,CAAAL,KAAA,EALMX,eAAe,EAAE,CAAA,CAAA;AAAA,QAAA,OAAAW,KAAA;AAAA,MAAA;AAAA,KAAA,CAAA,EAAA,IAAA,CAAA;AAAAI,IAAAA,UAAA,OAAAC,aAAA,CAAAb,IAAA,EAJIR,WAAW,EAAE,CAAA,CAAA;AAAA,IAAA,OAAAQ,IAAA;AAAA,EAAA,CAAA,GAAA;AAcnD;AAAEc,kBAAA,CAAA,CAAA,OAAA,CAAA,CAAA;;ACjHK,MAAMC,KAAwB,GAAIjC,KAAK,IAAK;EACjD,MAAMkC,UAAU,GAAGA,MAAMlC,KAAK,CAACmC,OAAO,IAAI,KAAK;EAC/C,MAAM7B,aAAa,GAAGA,MAAM;IAC1B,IAAIN,KAAK,CAACjD,MAAM,EAAE;MAChB,OAAOiD,KAAK,CAACjD,MAAM;AACrB,IAAA,CAAC,MAAM;MACL,OAAOyC,OAAO,CAACE,IAAI;AACrB,IAAA;EACF,CAAC;EAED,SAAS0C,YAAYA,GAAG;IACtB,MAAMnF,KAAK,GAAG,OAAO;AACrB,IAAA,MAAMD,OAAO,GAAGsD,aAAa,EAAE,CAAEtD,OAAO,CAACC,KAAK,EAAE+C,KAAK,CAAC9C,KAAK,CAAC,IAAI,EAAE;IAClE,IAAI8C,KAAK,CAACS,KAAK,EAAE;AACfzD,MAAAA,OAAO,CAAC3B,IAAI,CAAC2E,KAAK,CAACS,KAAK,CAAC;AAC3B,IAAA;IACA,OAAOpD,qBAAO,CAACL,OAAO,CAAC;AACzB,EAAA;EAEA,OAAAsE,mBAAA,CACGe,WAAO,EAAA;AAAA,IAAA,IAACC,SAASA,GAAA;MAAA,OAAEJ,UAAU,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,KAAA,OAAA,CAAAzB,GAAA;MAAA,OAAS2B,YAAY,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,IAAAX,QAAAA,GAAA;MAAA,OACpDzB,KAAK,CAACyB,QAAQ;AAAA,IAAA;AAAA,GAAA,CAAA;AAGrB;;ACrBO,MAAMc,SAA4B,GAAIvC,KAAK,IAAK;EACrD,MAAMhE,KAAK,GAAGA,MAAMgE,KAAK,CAAChE,KAAK,CAACwG,GAAG,CAACvI,YAAY,CAAC;AAEjD,EAAA,MAAMwI,YAAY,GAAGjC,kBAAU,CAAuC,MAAM;IAC1E,MAAMrE,IAAI,GAAG,EAAc;IAC3B,MAAMuG,KAAK,GAAG,EAAc;AAC5B,IAAA,MAAMC,MAAM,GAAG3C,KAAK,CAAC9C,KAAK;IAC1B,IAAI7C,KAAK,CAACC,OAAO,CAACqI,MAAM,CAAC,IAAI,OAAOA,MAAM,IAAI,QAAQ,EAAE;MACtDD,KAAK,CAACrH,IAAI,CAAC,GAAGM,mBAAmB,CAACgH,MAAM,CAAC,CAAC;IAC5C,CAAC,MAAM,IAAI,OAAOA,MAAM,IAAI,QAAQ,IAAIA,MAAM,IAAI,IAAI,EAAE;MACtDD,KAAK,CAACrH,IAAI,CAAC,GAAGM,mBAAmB,CAACgH,MAAM,CAACD,KAAK,CAAC,CAAC;MAChDvG,IAAI,CAACd,IAAI,CAAC,GAAGM,mBAAmB,CAACgH,MAAM,CAACxG,IAAI,CAAC,CAAC;AAChD,IAAA;IACA,OAAO;MAAEuG,KAAK;AAAEvG,MAAAA;KAAM;AACxB,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMa,OAAO,GAAGwD,kBAAU,CAAC,MAAM;IAC/B,IAAIkC,KAAK,GAAG,EAAE;IACd,IAAIvG,IAAmB,GAAG,EAAE;AAC5B,IAAA,IAAI,OAAO6D,KAAK,CAACS,KAAK,IAAI,QAAQ,EAAE;MAClCiC,KAAK,GAAG1C,KAAK,CAACS,KAAK;AACrB,IAAA,CAAC,MAAM,IAAIT,KAAK,CAACS,KAAK,IAAI/F,SAAS,EAAE;AACnCsF,MAAAA,KAAK,CAACS,KAAK;AACXiC,MAAAA,KAAK,GAAG1C,KAAK,CAACS,KAAK,CAACiC,KAAK,IAAI,EAAE;AAC/BvG,MAAAA,IAAI,GAAG6D,KAAK,CAACS,KAAK,CAACtE,IAAI,IAAI,EAAE;AAC/B,IAAA;IAEA,OAAO;MAAEuG,KAAK;AAAEvG,MAAAA;KAAM;AACxB,EAAA,CAAC,CAAC;EAEF,MAAMiG,YAAY,GAAGA,MAAM;IACzB,OAAO/E,qBAAO,CAAC,qBAAqB,EAAEL,OAAO,EAAE,CAAC0F,KAAK,CAAC;EACxD,CAAC;EAED,MAAMhC,WAAW,GAAGA,MAAM;AACxB,IAAA,OAAO1D,OAAO,EAAE,CAACb,IAAI;EACvB,CAAC;EAED,MAAMyG,YAAY,GAAIzG,IAAa,IAAK;IACtC,IAAI6D,KAAK,CAACa,QAAQ,EAAE;AAClBb,MAAAA,KAAK,CAACa,QAAQ,CAAC1E,IAAI,CAAC;AACtB,IAAA;EACF,CAAC;EAED,MAAM0G,YAAY,GAAI1I,EAAU,IAAK;AACnC,IAAA,IAAI,OAAO6F,KAAK,CAAC8C,SAAS,IAAI,QAAQ,EAAE;AACtC,MAAA,OAAO3I,EAAE,IAAI6F,KAAK,CAAC8C,SAAS;IAC9B,CAAC,MAAM,IAAI,OAAO9C,KAAK,CAAC8C,SAAS,IAAI,QAAQ,EAAE;AAC7C,MAAA,OAAO,CAAC,CAAC9C,KAAK,CAAC8C,SAAS,CAAC3I,EAAE,CAAC;AAC9B,IAAA;AACA,IAAA,OAAO,KAAK;EACd,CAAC;EAED,OAAAmH,mBAAA,CACGW,KAAK,EAAA;AAAA,IAAA,KAAA,OAAA,CAAAxB,GAAA;MAAA,OAAQ2B,YAAY,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,IAAElF,KAAKA,GAAA;AAAA,MAAA,OAAEuF,YAAY,EAAE,CAACC,KAAK;AAAA,IAAA,CAAA;AAAA,IAAA,IAAAjB,QAAAA,GAAA;MAAA,OAAAH,mBAAA,CACtDyB,WAAG,EAAA;AAAA,QAAA,IAACC,IAAIA,GAAA;UAAA,OAAEhH,KAAK,EAAE;AAAA,QAAA,CAAA;QAAAyF,QAAA,EACdtF,IAAI,IAAK;UACT,OAAAmF,mBAAA,CACGvB,IAAI,EAAA;AACHG,YAAAA,OAAO,EAAE/D,IAAI;AAAA,YAAA,IACbiE,QAAQA,GAAA;AAAA,cAAA,OAAEyC,YAAY,CAAC1G,IAAI,CAAChC,EAAE,CAAC;AAAA,YAAA,CAAA;AAC/B0G,YAAAA,QAAQ,EAAEA,MAAM+B,YAAY,CAACzG,IAAI,CAAC;AAAA,YAAA,KAAA,OAAA,CAAAsE,GAAA;cAAA,OAC3BC,WAAW,EAAE;AAAA,YAAA,CAAA;AAAA,YAAA,IACpBxD,KAAKA,GAAA;AAAA,cAAA,OAAEuF,YAAY,EAAE,CAACtG,IAAI;AAAA,YAAA;AAAA,WAAA,CAAA;AAGhC,QAAA;AAAC,OAAA,CAAA;AAAA,IAAA;AAAA,GAAA,CAAA;AAIT;;;AClFO,MAAM8G,KAAyB,GAAIjD,KAAK,IAAI;AACjD,EAAA,OAAAmB,MAAA,EAAA;AACF;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/normalizers.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 { tokenizeFilterString } from \"@mrts/common\";\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 return exclusiveTagsNormalize(\n rawTags,\n (tag) => tag.length == 1 && tag.toUpperCase() == tag,\n defaultTag\n );\n}\n\n// export 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 exclusiveTagsNormalize(\n rawTags: string[],\n tagSet: Set<String> | ((tag: string) => boolean),\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n\n const tagSetFunc =\n typeof tagSet == \"function\" ? tagSet : (tag: string) => tagSet.has(tag);\n\n for (const tag of rawTags) {\n if (tagSetFunc(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 { argTokenizeBySpaces, deduplicate } from \"@mrts/common\";\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\nexport function tagRuleMatches(rule: TagRule, candidateTags: string[]) {\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 {\n mainTagNormalize,\n twMergeNormalize,\n exclusiveTagsNormalize,\n} from \"./normalizers.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 exclusiveTagsNormalize(\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","twMergeNormalize","raw","tokenizeFilterString","twMerge","mainTagNormalize","rawTags","defaultTag","exclusiveTagsNormalize","tag","length","toUpperCase","tagSet","rhead","rtail","rtag","tagSetFunc","has","push","SVTStyler","_rules","constructor","rules","options","normalizeRule","with","addedRules","styler","classes","stags","vtags","stagsNormalized","argTokenizeBySpaces","vtagsNormalized","stagsNormaliser","vtagsNormaliser","rule","ruleMatches","normalizer","stagMode","vtagMode","deduplicate","stagRule","mode","tags","vtagRule","tagRuleMatches","candidateTags","ctag","indexOf","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,107 +23,47 @@ function buildIdLabel(arg) {
22
23
  }
23
24
  }
24
25
 
25
- function buildTokenizeFuncUsingSplitters(splitters) {
26
- splitters = Array.isArray(splitters) ? splitters : [splitters];
27
- const tokenize = s => {
28
- let r = s.split(splitters[0]).filter(t => t != "" && t != undefined);
29
- for (const splitter of splitters.slice(1)) {
30
- const r0 = [...r];
31
- r = [];
32
- for (const s of r0) {
33
- r.push(...tokenizeFilterString(s, {
34
- splitter,
35
- filter: t => t != "" && t != undefined
36
- }));
37
- //r.push(...s.split(splitter).filter((t) => t != "" && t != undefined));
38
- }
39
- }
40
- return r;
41
- };
42
- return tokenize;
43
- }
44
- function buildArgTokenizeFunc(tokenize) {
45
- const argTokenize = arg => {
46
- if (arg == undefined) {
47
- return [];
48
- } else if (Array.isArray(arg)) {
49
- const r = [];
50
- for (const a of arg) {
51
- r.push(...argTokenize(a));
52
- }
53
- return r;
54
- } else {
55
- return tokenize(arg);
56
- }
57
- };
58
- return argTokenize;
59
- }
60
- const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\s+/);
61
- const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);
62
- function tokenizeFilterString(s, options = {}) {
63
- const separator = options.splitter ?? /\s+/;
64
- const filter = options.filter ?? (s => s.length > 0);
65
- const r = s.split(separator).filter(filter);
66
- return r;
67
- }
68
- function deduplicate(items) {
69
- const r = [];
70
- const itemSet = new Set();
71
- for (const item of items) {
72
- if (!itemSet.has(item)) {
73
- r.push(item);
74
- itemSet.add(item);
75
- }
76
- }
77
- return r;
78
- }
79
-
80
- const LogLevels = ["ERROR", "WARNING", "INFO", "DEBUG"];
81
- const LogLevelsMap = new Map();
82
- LogLevels.forEach((level, i) => {
83
- LogLevelsMap.set(level, LogLevels.length - i);
84
- });
85
-
86
- class SVTStylerNormalizer {
87
- constructor(styler) {
88
- this.styler = styler;
89
- }
90
- classes(stags, vtags) {
91
- const r = this.styler.classes(stags, vtags);
92
- return r ?? [];
93
- }
94
- }
95
26
  function twMergeNormalize(raw) {
96
- return tokenizeFilterString(twMerge(...raw));
27
+ return tokenizeFilterString$1(twMerge(...raw));
97
28
  }
98
29
  function mainTagNormalize(rawTags, defaultTag) {
99
- const rhead = [];
100
- const rtail = [];
101
- let rtag = undefined;
102
- for (const tag of rawTags) {
103
- if (tag.length == 1 && tag.toUpperCase() == tag) {
104
- rtag = tag;
105
- rhead.push(...rtail);
106
- rtail.length = 0;
107
- } else {
108
- if (rtag == undefined) {
109
- rhead.push(tag);
110
- } else {
111
- rtail.push(tag);
112
- }
113
- }
114
- }
115
- rtag = rtag ?? defaultTag;
116
- const r = rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
117
- // console.log("MAIN TAGS NORM:", rawTags, r);
118
- return r;
30
+ return exclusiveTagsNormalize(rawTags, tag => tag.length == 1 && tag.toUpperCase() == tag, defaultTag);
119
31
  }
120
- function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
32
+
33
+ // export function mainTagNormalize(
34
+ // rawTags: string[],
35
+ // defaultTag?: string
36
+ // ): string[] {
37
+ // const rhead = [] as string[];
38
+ // const rtail = [] as string[];
39
+ // let rtag: string | undefined = undefined;
40
+ // for (const tag of rawTags) {
41
+ // if (tag.length == 1 && tag.toUpperCase() == tag) {
42
+ // rtag = tag;
43
+ // rhead.push(...rtail);
44
+ // rtail.length = 0;
45
+ // } else {
46
+ // if (rtag == undefined) {
47
+ // rhead.push(tag);
48
+ // } else {
49
+ // rtail.push(tag);
50
+ // }
51
+ // }
52
+ // }
53
+ // rtag = rtag ?? defaultTag;
54
+ // const r =
55
+ // rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
56
+ // // console.log("MAIN TAGS NORM:", rawTags, r);
57
+ // return r;
58
+ // }
59
+
60
+ function exclusiveTagsNormalize(rawTags, tagSet, defaultTag) {
121
61
  const rhead = [];
122
62
  const rtail = [];
123
63
  let rtag = undefined;
64
+ const tagSetFunc = typeof tagSet == "function" ? tagSet : tag => tagSet.has(tag);
124
65
  for (const tag of rawTags) {
125
- if (tagSet.has(tag)) {
66
+ if (tagSetFunc(tag)) {
126
67
  rtag = tag;
127
68
  rhead.push(...rtail);
128
69
  rtail.length = 0;
@@ -140,40 +81,6 @@ function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
140
81
  return r;
141
82
  }
142
83
 
143
- // export function normalizeTagListArgument(arg: TagListArgument): string[] {
144
- // if (typeof arg == "string") {
145
- // return splitCleanString(arg);
146
- // } else if (Array.isArray(arg)) {
147
- // const r = [];
148
- // for (const a of arg) {
149
- // r.push(...normalizeTagListArgument(a));
150
- // }
151
- // return r;
152
- // }
153
- // return [];
154
- // }
155
-
156
- function tagRuleMatches(rule, candidateTags) {
157
- if (rule.mode == "any") {
158
- return true;
159
- } else if (rule.mode == "or") {
160
- for (const ctag of candidateTags) {
161
- if (rule.tags.indexOf(ctag) >= 0) {
162
- return true;
163
- }
164
- }
165
- return false;
166
- } else if (rule.mode == "and") {
167
- for (const rtag of rule.tags) {
168
- if (candidateTags.indexOf(rtag) < 0) {
169
- return false;
170
- }
171
- }
172
- return true;
173
- }
174
- return false;
175
- }
176
-
177
84
  class SVTStyler {
178
85
  _rules = [];
179
86
  constructor(rules, options = {}) {
@@ -197,8 +104,8 @@ class SVTStyler {
197
104
  }
198
105
  classes(stags, vtags) {
199
106
  const r = [];
200
- let stagsNormalized = argTokenizeBySpaces(stags);
201
- let vtagsNormalized = argTokenizeBySpaces(vtags);
107
+ let stagsNormalized = argTokenizeBySpaces$1(stags);
108
+ let vtagsNormalized = argTokenizeBySpaces$1(vtags);
202
109
  if (this.options.stagsNormaliser) {
203
110
  stagsNormalized = this.options.stagsNormaliser(stagsNormalized);
204
111
  }
@@ -215,9 +122,9 @@ class SVTStyler {
215
122
  static normalizeRule(rule) {
216
123
  let stagMode = rule.stagMode ?? "or";
217
124
  let vtagMode = rule.vtagMode ?? "or";
218
- let stags = deduplicate(argTokenizeBySpaces(rule.stags));
219
- let vtags = deduplicate(argTokenizeBySpaces(rule.vtags));
220
- let classes = deduplicate(argTokenizeBySpaces(rule.classes));
125
+ let stags = deduplicate(argTokenizeBySpaces$1(rule.stags));
126
+ let vtags = deduplicate(argTokenizeBySpaces$1(rule.vtags));
127
+ let classes = deduplicate(argTokenizeBySpaces$1(rule.classes));
221
128
  if (rule.stags == undefined && rule.stagMode == undefined) {
222
129
  stagMode = "any";
223
130
  }
@@ -240,6 +147,26 @@ class SVTStyler {
240
147
  return tagRuleMatches(rule.stagRule, stags) && tagRuleMatches(rule.vtagRule, vtags);
241
148
  }
242
149
  }
150
+ function tagRuleMatches(rule, candidateTags) {
151
+ if (rule.mode == "any") {
152
+ return true;
153
+ } else if (rule.mode == "or") {
154
+ for (const ctag of candidateTags) {
155
+ if (rule.tags.indexOf(ctag) >= 0) {
156
+ return true;
157
+ }
158
+ }
159
+ return false;
160
+ } else if (rule.mode == "and") {
161
+ for (const rtag of rule.tags) {
162
+ if (candidateTags.indexOf(rtag) < 0) {
163
+ return false;
164
+ }
165
+ }
166
+ return true;
167
+ }
168
+ return false;
169
+ }
243
170
 
244
171
  const baseStyler = new SVTStyler([{
245
172
  vtags: "A",
@@ -285,7 +212,7 @@ const baseStyler = new SVTStyler([{
285
212
  classes: "bg-slate-300/85 cursor-not-allowed"
286
213
  }], {
287
214
  normalizer: twMergeNormalize,
288
- vtagsNormaliser: tags => exlusiveTagNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE")
215
+ vtagsNormaliser: tags => exclusiveTagsNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE")
289
216
  });
290
217
 
291
218
  class Stylers {
@@ -432,6 +359,50 @@ const Block = props => {
432
359
  });
433
360
  };
434
361
 
362
+ function buildTokenizeFuncUsingSplitters(splitters) {
363
+ splitters = Array.isArray(splitters) ? splitters : [splitters];
364
+ const tokenize = s => {
365
+ let r = s.split(splitters[0]).filter(t => t != "" && t != undefined);
366
+ for (const splitter of splitters.slice(1)) {
367
+ const r0 = [...r];
368
+ r = [];
369
+ for (const s of r0) {
370
+ r.push(...tokenizeFilterString(s, {
371
+ splitter,
372
+ filter: t => t != "" && t != undefined
373
+ }));
374
+ //r.push(...s.split(splitter).filter((t) => t != "" && t != undefined));
375
+ }
376
+ }
377
+ return r;
378
+ };
379
+ return tokenize;
380
+ }
381
+ function buildArgTokenizeFunc(tokenize) {
382
+ const argTokenize = arg => {
383
+ if (arg == undefined) {
384
+ return [];
385
+ } else if (Array.isArray(arg)) {
386
+ const r = [];
387
+ for (const a of arg) {
388
+ r.push(...argTokenize(a));
389
+ }
390
+ return r;
391
+ } else {
392
+ return tokenize(arg);
393
+ }
394
+ };
395
+ return argTokenize;
396
+ }
397
+ const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\s+/);
398
+ const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);
399
+ function tokenizeFilterString(s, options = {}) {
400
+ const separator = options.splitter ?? /\s+/;
401
+ const filter = options.filter ?? (s => s.length > 0);
402
+ const r = s.split(separator).filter(filter);
403
+ return r;
404
+ }
405
+
435
406
  const ItemGroup = props => {
436
407
  const items = () => props.items.map(buildIdLabel);
437
408
  const currentVTags = createMemo(() => {
@@ -520,5 +491,5 @@ const SolTw = props => {
520
491
  return _tmpl$();
521
492
  };
522
493
 
523
- export { Block, Item, ItemGroup, SVTStyler, SVTStylerNormalizer, SolTw, Stylers, baseStyler, buildIdLabel, exlusiveTagNormalize, mainTagNormalize, twMergeNormalize };
494
+ export { Block, Item, ItemGroup, SVTStyler, SolTw, Stylers, baseStyler, buildIdLabel, exclusiveTagsNormalize, mainTagNormalize, tagRuleMatches, twMergeNormalize };
524
495
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../../common/dist/strings/tokenize.js","../../../common/dist/messages/logMessages.js","../../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 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","export const LogLevels = [\"ERROR\", \"WARNING\", \"INFO\", \"DEBUG\"];\nconst LogLevelsMap = new Map();\nLogLevels.forEach((level, i) => {\n LogLevelsMap.set(level, LogLevels.length - i);\n});\nexport function logMessage(level, message, data = {}) {\n return { type: `log.${level}`, level, message, ...data };\n}\nexport function error(message, data = {}) {\n return logMessage(\"ERROR\", message, data);\n}\nexport function warning(message, data = {}) {\n return logMessage(\"WARNING\", message, data);\n}\nexport function info(message, data = {}) {\n return logMessage(\"INFO\", message, data);\n}\nexport function debug(message, data = {}) {\n return logMessage(\"DEBUG\", message, data);\n}\nexport function compareLevel(a, b) {\n return Math.sign(LogLevelsMap.get(a) - LogLevelsMap.get(b));\n}\n//# sourceMappingURL=logMessages.js.map","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","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","buildTokenizeFuncUsingSplitters","splitters","tokenize","s","split","filter","t","splitter","slice","r0","push","tokenizeFilterString","buildArgTokenizeFunc","argTokenize","a","tokenizeBySpaces","argTokenizeBySpaces","options","separator","length","deduplicate","items","itemSet","Set","item","has","add","LogLevels","LogLevelsMap","Map","forEach","level","i","set","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","toUpperCase","exlusiveTagNormalize","tagSet","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","base","_base","setBase","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":";;;;AAcO,SAASA,YAAYA,CAACC,GAAe,EAAW;AACrD,EAAA,IAAI,OAAOA,GAAG,IAAI,QAAQ,EAAE;IAC1B,OAAO;AAAEC,MAAAA,EAAE,EAAED,GAAG;AAAEE,MAAAA,KAAK,EAAEF;KAAK;EAChC,CAAC,MAAM,IAAIG,KAAK,CAACC,OAAO,CAACJ,GAAG,CAAC,EAAE;IAC7B,OAAO;AAAEC,MAAAA,EAAE,EAAED,GAAG,CAAC,CAAC,CAAC;MAAEE,KAAK,EAAEF,GAAG,CAAC,CAAC;KAAG;AACtC,EAAA,CAAC,MAAM;IACL,MAAMK,CAAC,GAAGC,MAAM,CAACC,MAAM,CAAC,EAAE,EAAEP,GAAG,CAAC;AAChC,IAAA,IAAIK,CAAC,CAACH,KAAK,IAAIM,SAAS,EAAE;AACxBH,MAAAA,CAAC,CAAC,OAAO,CAAC,GAAGA,CAAC,CAACJ,EAAE;AACnB,IAAA;AACA,IAAA,OAAOI,CAAC;AACV,EAAA;AACF;;AClBM,SAAUI,+BAA+BA,CAC7CC,SAAgC,EAAA;AAEhCA,EAAAA,SAAS,GAAGP,KAAK,CAACC,OAAO,CAACM,SAAS,CAAC,GAAGA,SAAS,GAAG,CAACA,SAAS,CAAC;EAE9D,MAAMC,QAAQ,GAAkBC,CAAS,IAAI;IAC3C,IAAIP,CAAC,GAAGO,CAAC,CAACC,KAAK,CAACH,SAAS,CAAC,CAAC,CAAE,CAAC,CAACI,MAAM,CAAEC,CAAC,IAAKA,CAAC,IAAI,EAAE,IAAIA,CAAC,IAAIP,SAAS,CAAC;IAEvE,KAAK,MAAMQ,QAAQ,IAAIN,SAAS,CAACO,KAAK,CAAC,CAAC,CAAC,EAAE;AACzC,MAAA,MAAMC,EAAE,GAAG,CAAC,GAAGb,CAAC,CAAC;AAEjBA,MAAAA,CAAC,GAAG,EAAE;AAEN,MAAA,KAAK,MAAMO,CAAC,IAAIM,EAAE,EAAE;AAClBb,QAAAA,CAAC,CAACc,IAAI,CACJ,GAAGC,oBAAoB,CAACR,CAAC,EAAE;UACzBI,QAAQ;UACRF,MAAM,EAAGC,CAAC,IAAKA,CAAC,IAAI,EAAE,IAAIA,CAAC,IAAIP;AAChC,SAAA,CAAC,CACH;AACD;AACF,MAAA;AACF,IAAA;AAEA,IAAA,OAAOH,CAAC;EACV,CAAC;AAED,EAAA,OAAOM,QAAQ;AACjB;AAEM,SAAUU,oBAAoBA,CAACV,QAAsB,EAAA;EACzD,MAAMW,WAAW,GAAqBtB,GAAgB,IAAI;IACxD,IAAIA,GAAG,IAAIQ,SAAS,EAAE;AACpB,MAAA,OAAO,EAAE;IACX,CAAC,MAAM,IAAIL,KAAK,CAACC,OAAO,CAACJ,GAAG,CAAC,EAAE;MAC7B,MAAMK,CAAC,GAAG,EAAE;AAEZ,MAAA,KAAK,MAAMkB,CAAC,IAAIvB,GAAG,EAAE;QACnBK,CAAC,CAACc,IAAI,CAAC,GAAGG,WAAW,CAACC,CAAC,CAAC,CAAC;AAC3B,MAAA;AAEA,MAAA,OAAOlB,CAAC;AACV,IAAA,CAAC,MAAM;MACL,OAAOM,QAAQ,CAACX,GAAG,CAAC;AACtB,IAAA;EACF,CAAC;AAED,EAAA,OAAOsB,WAAW;AACpB;AAEO,MAAME,gBAAgB,GAAGf,+BAA+B,CAAC,KAAK,CAAC;AAE/D,MAAMgB,mBAAmB,GAAGJ,oBAAoB,CAACG,gBAAgB,CAAC;AAEnE,SAAUJ,oBAAoBA,CAClCR,CAAS,EACTc,OAAA,GAA2E,EAAE,EAAA;AAE7E,EAAA,MAAMC,SAAS,GAAGD,OAAO,CAACV,QAAQ,IAAI,KAAK;AAC3C,EAAA,MAAMF,MAAM,GAAGY,OAAO,CAACZ,MAAM,KAAMF,CAAS,IAAKA,CAAC,CAACgB,MAAM,GAAG,CAAC,CAAC;AAC9D,EAAA,MAAMvB,CAAC,GAAGO,CAAC,CAACC,KAAK,CAACc,SAAS,CAAC,CAACb,MAAM,CAACA,MAAM,CAAC;AAC3C,EAAA,OAAOT,CAAC;AACV;AAEM,SAAUwB,WAAWA,CAAIC,KAAU,EAAA;EACvC,MAAMzB,CAAC,GAAG,EAAS;AACnB,EAAA,MAAM0B,OAAO,GAAG,IAAIC,GAAG,EAAK;AAC5B,EAAA,KAAK,MAAMC,IAAI,IAAIH,KAAK,EAAE;AACxB,IAAA,IAAI,CAACC,OAAO,CAACG,GAAG,CAACD,IAAI,CAAC,EAAE;AACtB5B,MAAAA,CAAC,CAACc,IAAI,CAACc,IAAI,CAAC;AACZF,MAAAA,OAAO,CAACI,GAAG,CAACF,IAAI,CAAC;AACnB,IAAA;AACF,EAAA;AAEA,EAAA,OAAO5B,CAAC;AACV;;ACzEO,MAAM+B,SAAS,GAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAC3E,MAAMC,YAAY,GAAG,IAAIC,GAAG,EAAqB;AACjDF,SAAS,CAACG,OAAO,CAAC,CAACC,KAAK,EAAEC,CAAC,KAAI;EAC7BJ,YAAY,CAACK,GAAG,CAACF,KAAK,EAAEJ,SAAS,CAACR,MAAM,GAAGa,CAAC,CAAC;AAC/C,CAAC,CAAC;;ACVK,MAAME,mBAAmB,CAAuB;EACrDC,WAAWA,CAAkBC,MAAkB,EAAE;IAAA,IAAA,CAApBA,MAAkB,GAAlBA,MAAkB;AAAG,EAAA;AAElDC,EAAAA,OAAOA,CAACC,KAAsB,EAAEC,KAAsB,EAAY;IAChE,MAAM3C,CAAC,GAAG,IAAI,CAACwC,MAAM,CAACC,OAAO,CAACC,KAAK,EAAEC,KAAK,CAAC;IAC3C,OAAO3C,CAAC,IAAI,EAAE;AAChB,EAAA;AACF;AAEO,SAAS4C,gBAAgBA,CAACC,GAAa,EAAY;AACxD,EAAA,OAAO9B,oBAAoB,CAAC+B,OAAO,CAAC,GAAGD,GAAG,CAAC,CAAC;AAC9C;AAEO,SAASE,gBAAgBA,CAC9BC,OAAiB,EACjBC,UAAmB,EACT;EACV,MAAMC,KAAK,GAAG,EAAc;EAC5B,MAAMC,KAAK,GAAG,EAAc;EAC5B,IAAIC,IAAwB,GAAGjD,SAAS;AACxC,EAAA,KAAK,MAAMkD,GAAG,IAAIL,OAAO,EAAE;AACzB,IAAA,IAAIK,GAAG,CAAC9B,MAAM,IAAI,CAAC,IAAI8B,GAAG,CAACC,WAAW,EAAE,IAAID,GAAG,EAAE;AAC/CD,MAAAA,IAAI,GAAGC,GAAG;AACVH,MAAAA,KAAK,CAACpC,IAAI,CAAC,GAAGqC,KAAK,CAAC;MACpBA,KAAK,CAAC5B,MAAM,GAAG,CAAC;AAClB,IAAA,CAAC,MAAM;MACL,IAAI6B,IAAI,IAAIjD,SAAS,EAAE;AACrB+C,QAAAA,KAAK,CAACpC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA,CAAC,MAAM;AACLF,QAAAA,KAAK,CAACrC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;EACAD,IAAI,GAAGA,IAAI,IAAIH,UAAU;EACzB,MAAMjD,CAAC,GACLoD,IAAI,IAAIjD,SAAS,GAAG,CAAC,GAAG+C,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,CAAC,GAAGD,KAAK,EAAEE,IAAI,EAAE,GAAGD,KAAK,CAAC;AACvE;AACA,EAAA,OAAOnD,CAAC;AACV;AAEO,SAASuD,oBAAoBA,CAClCP,OAAiB,EACjBQ,MAAmB,EACnBP,UAAmB,EACT;EACV,MAAMC,KAAK,GAAG,EAAc;EAC5B,MAAMC,KAAK,GAAG,EAAc;EAC5B,IAAIC,IAAwB,GAAGjD,SAAS;AACxC,EAAA,KAAK,MAAMkD,GAAG,IAAIL,OAAO,EAAE;AACzB,IAAA,IAAIQ,MAAM,CAAC3B,GAAG,CAACwB,GAAG,CAAC,EAAE;AACnBD,MAAAA,IAAI,GAAGC,GAAG;AACVH,MAAAA,KAAK,CAACpC,IAAI,CAAC,GAAGqC,KAAK,CAAC;MACpBA,KAAK,CAAC5B,MAAM,GAAG,CAAC;AAClB,IAAA,CAAC,MAAM;MACL,IAAI6B,IAAI,IAAIjD,SAAS,EAAE;AACrB+C,QAAAA,KAAK,CAACpC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA,CAAC,MAAM;AACLF,QAAAA,KAAK,CAACrC,IAAI,CAACuC,GAAG,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;EACAD,IAAI,GAAGA,IAAI,IAAIH,UAAU;EACzB,MAAMjD,CAAC,GACLoD,IAAI,IAAIjD,SAAS,GAAG,CAAC,GAAG+C,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,CAAC,GAAGD,KAAK,EAAEE,IAAI,EAAE,GAAGD,KAAK,CAAC;AACvE;AACA,EAAA,OAAOnD,CAAC;AACV;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,SAASyD,cAAcA,CAC5BC,IAAY,EACZC,aAAuB,EACvB;AACA,EAAA,IAAID,IAAI,CAACE,IAAI,IAAI,KAAK,EAAE;AACtB,IAAA,OAAO,IAAI;AACb,EAAA,CAAC,MAAM,IAAIF,IAAI,CAACE,IAAI,IAAI,IAAI,EAAE;AAC5B,IAAA,KAAK,MAAMC,IAAI,IAAIF,aAAa,EAAE;MAChC,IAAID,IAAI,CAACI,IAAI,CAACC,OAAO,CAACF,IAAI,CAAC,IAAI,CAAC,EAAE;AAChC,QAAA,OAAO,IAAI;AACb,MAAA;AACF,IAAA;AACA,IAAA,OAAO,KAAK;AACd,EAAA,CAAC,MAAM,IAAIH,IAAI,CAACE,IAAI,IAAI,KAAK,EAAE;AAC7B,IAAA,KAAK,MAAMR,IAAI,IAAIM,IAAI,CAACI,IAAI,EAAE;MAC5B,IAAIH,aAAa,CAACI,OAAO,CAACX,IAAI,CAAC,GAAG,CAAC,EAAE;AACnC,QAAA,OAAO,KAAK;AACd,MAAA;AACF,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AACA,EAAA,OAAO,KAAK;AACd;;ACZO,MAAMY,SAAS,CAAuB;AAClCC,EAAAA,MAAM,GAAc,EAAE;AAG/B1B,EAAAA,WAAWA,CAAC2B,KAAmB,EAAE7C,OAAyB,GAAG,EAAE,EAAE;AAC/D,IAAA,KAAK,MAAMrB,CAAC,IAAIkE,KAAK,EAAE;MACrB,IAAI,CAACD,MAAM,CAACnD,IAAI,CAACkD,SAAS,CAACG,aAAa,CAACnE,CAAC,CAAC,CAAC;AAC9C,IAAA;IACA,IAAI,CAACqB,OAAO,GAAG;MAAE,GAAGA;KAAS;AAC/B,EAAA;AAEA+C,EAAAA,IAAIA,CAACF,KAAmB,EAAE7C,OAAyB,GAAG,EAAE,EAAa;IACnE,MAAMgD,UAAqB,GAAG,EAAE;AAChC,IAAA,KAAK,MAAMrE,CAAC,IAAIkE,KAAK,EAAE;MACrBG,UAAU,CAACvD,IAAI,CAACkD,SAAS,CAACG,aAAa,CAACnE,CAAC,CAAC,CAAC;AAC7C,IAAA;AAEA,IAAA,MAAMwC,MAAM,GAAG,IAAIwB,SAAS,CAAC,EAAE,EAAE;AAAE,MAAA,GAAG,IAAI,CAAC3C;AAAQ,KAAC,CAAC;AACrDmB,IAAAA,MAAM,CAACyB,MAAM,CAACnD,IAAI,CAAC,GAAG,IAAI,CAACmD,MAAM,EAAE,GAAGI,UAAU,CAAC;AACjD,IAAA,OAAO7B,MAAM;AACf,EAAA;AAEAC,EAAAA,OAAOA,CAACC,KAAsB,EAAEC,KAAsB,EAAY;IAChE,MAAM3C,CAAC,GAAG,EAAc;AAExB,IAAA,IAAIsE,eAAe,GAAGlD,mBAAmB,CAACsB,KAAK,CAAC;AAChD,IAAA,IAAI6B,eAAe,GAAGnD,mBAAmB,CAACuB,KAAK,CAAC;AAEhD,IAAA,IAAI,IAAI,CAACtB,OAAO,CAACmD,eAAe,EAAE;MAChCF,eAAe,GAAG,IAAI,CAACjD,OAAO,CAACmD,eAAe,CAACF,eAAe,CAAC;AACjE,IAAA;AACA,IAAA,IAAI,IAAI,CAACjD,OAAO,CAACoD,eAAe,EAAE;MAChCF,eAAe,GAAG,IAAI,CAAClD,OAAO,CAACoD,eAAe,CAACF,eAAe,CAAC;AACjE,IAAA;AAEA,IAAA,KAAK,MAAMb,IAAI,IAAI,IAAI,CAACO,MAAM,EAAE;MAC9B,IAAI,IAAI,CAACS,WAAW,CAAChB,IAAI,EAAEY,eAAe,EAAEC,eAAe,CAAC,EAAE;AAC5DvE,QAAAA,CAAC,CAACc,IAAI,CAAC,GAAG4C,IAAI,CAACjB,OAAO,CAAC;AACzB,MAAA;AACF,IAAA;AAEA,IAAA,OAAO,IAAI,CAACpB,OAAO,CAACsD,UAAU,GAAG,IAAI,CAACtD,OAAO,CAACsD,UAAU,CAAC3E,CAAC,CAAC,GAAGA,CAAC;AACjE,EAAA;EAEA,OAAOmE,aAAaA,CAACT,IAAgB,EAAW;AAC9C,IAAA,IAAIkB,QAAqB,GAAGlB,IAAI,CAACkB,QAAQ,IAAI,IAAI;AACjD,IAAA,IAAIC,QAAqB,GAAGnB,IAAI,CAACmB,QAAQ,IAAI,IAAI;IACjD,IAAInC,KAAe,GAAGlB,WAAW,CAACJ,mBAAmB,CAACsC,IAAI,CAAChB,KAAK,CAAC,CAAC;IAClE,IAAIC,KAAe,GAAGnB,WAAW,CAACJ,mBAAmB,CAACsC,IAAI,CAACf,KAAK,CAAC,CAAC;IAClE,IAAIF,OAAiB,GAAGjB,WAAW,CAACJ,mBAAmB,CAACsC,IAAI,CAACjB,OAAO,CAAC,CAAC;IAEtE,IAAIiB,IAAI,CAAChB,KAAK,IAAIvC,SAAS,IAAIuD,IAAI,CAACkB,QAAQ,IAAIzE,SAAS,EAAE;AACzDyE,MAAAA,QAAQ,GAAG,KAAK;AAClB,IAAA;IACA,IAAIlB,IAAI,CAACf,KAAK,IAAIxC,SAAS,IAAIuD,IAAI,CAACmB,QAAQ,IAAI1E,SAAS,EAAE;AACzD0E,MAAAA,QAAQ,GAAG,KAAK;AAClB,IAAA;IAEA,OAAO;AACLC,MAAAA,QAAQ,EAAE;AAAElB,QAAAA,IAAI,EAAEgB,QAAQ;AAAEd,QAAAA,IAAI,EAAEpB;OAAO;AACzCqC,MAAAA,QAAQ,EAAE;AAAEnB,QAAAA,IAAI,EAAEiB,QAAQ;AAAEf,QAAAA,IAAI,EAAEnB;OAAO;AACzCF,MAAAA;KACD;AACH,EAAA;AAEAiC,EAAAA,WAAWA,CAAChB,IAAa,EAAEhB,KAAe,EAAEC,KAAe,EAAE;AAC3D,IAAA,OACEc,cAAc,CAACC,IAAI,CAACoB,QAAQ,EAAEpC,KAAK,CAAC,IACpCe,cAAc,CAACC,IAAI,CAACqB,QAAQ,EAAEpC,KAAK,CAAC;AAExC,EAAA;AACF;;MC5FaqC,UAAU,GAAG,IAAIhB,SAAS,CACrC,CACE;AACErB,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,GAAG;AACVF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,MAAM;AACbF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXF,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXD,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEE,EAAAA,KAAK,EAAE,IAAI;AACXD,EAAAA,KAAK,EAAE,MAAM;AACbD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEC,EAAAA,KAAK,EAAE,eAAe;AACtBD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEC,EAAAA,KAAK,EAAE,eAAe;AACtBD,EAAAA,OAAO,EAAE;AACX,CAAC,EACD;AACEC,EAAAA,KAAK,EAAE,eAAe;AACtBD,EAAAA,OAAO,EAAE;AACX,CAAC,CACF,EACD;AACEkC,EAAAA,UAAU,EAAE/B,gBAAgB;EAC5B6B,eAAe,EAAGX,IAAI,IACpBP,oBAAoB,CAClBR,gBAAgB,CAACe,IAAI,EAAE,GAAG,CAAC,EAC3B,IAAInC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAC7B,MACF;AACJ,CACF;;ACxEO,MAAMsD,OAAO,CAAC;AAEnB,EAAA,OAAeC,WAAW,GAAG,IAAIjD,GAAG,EAAsB;EAE1D,WAAWkD,IAAIA,GAA2B;IACxC,OAAO,IAAI,CAACC,KAAK;AACnB,EAAA;EACA,OAAOC,OAAOA,CAACF,IAA4B,EAAE;AAC3C,IAAA,OAAQ,IAAI,CAACC,KAAK,GAAGD,IAAI;AAC3B,EAAA;AACA,EAAA;IACE,IAAI,CAACD,WAAW,CAAC7C,GAAG,CAAC,SAAS,EAAE2C,UAAU,CAAC;AAC3C,IAAA,IAAI,CAACK,OAAO,CAACL,UAAU,CAAC;AAC1B;EAEA,OAAOM,GAAGA,CAACC,IAAY,EAA0B;AAC/C,IAAA,OAAO,IAAI,CAACL,WAAW,CAACI,GAAG,CAACC,IAAI,CAAC;AACnC,EAAA;AACF;;;ACIO,MAAMC,IAA2B,GAAIC,KAAK,IAAK;EACpD,MAAMC,QAAQ,GAAGA,MAAMhG,YAAY,CAAC+F,KAAK,CAACE,OAAO,CAAC;EAElD,MAAMC,YAAY,GAAGA,MAAM;IACzB,MAAM5F,CAAC,GAAG,EAAc;AACxBA,IAAAA,CAAC,CAACc,IAAI,CAAC,MAAM,CAAC;IACd,IAAI2E,KAAK,CAACI,QAAQ,EAAE;AAClB7F,MAAAA,CAAC,CAACc,IAAI,CAAC,eAAe,CAAC;AACzB,IAAA;IACA,IAAI2E,KAAK,CAACK,QAAQ,EAAE;AAClB9F,MAAAA,CAAC,CAACc,IAAI,CAAC,eAAe,CAAC;AACzB,IAAA;AACA,IAAA,OAAOd,CAAC;EACV,CAAC;EAED,MAAM+F,aAAa,GAAGA,MAAM;IAC1B,IAAIN,KAAK,CAACjD,MAAM,EAAE;MAChB,OAAOiD,KAAK,CAACjD,MAAM;AACrB,IAAA,CAAC,MAAM;MACL,OAAOyC,OAAO,CAACE,IAAI;AACrB,IAAA;EACF,CAAC;AAED,EAAA,MAAMa,SAAS,GAAGC,UAAU,CAAa,MAAM;AAC7C,IAAA,IAAIR,KAAK,CAACS,KAAK,IAAI/F,SAAS,EAAE;AAC5B,MAAA,OAAO,EAAE;IACX,CAAC,MAAM,IAAI,OAAOsF,KAAK,CAACS,KAAK,IAAI,QAAQ,EAAE;MACzC,OAAO;QAAEtE,IAAI,EAAE6D,KAAK,CAACS;OAAO;AAC9B,IAAA,CAAC,MAAM;MACL,OAAOT,KAAK,CAACS,KAAK;AACpB,IAAA;AACF,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMC,WAAW,GAAGF,UAAU,CAAC,MAAM;AACnC,IAAA,MAAMvD,KAAK,GAAGkD,YAAY,EAAE;AAE5B,IAAA,MAAMpD,MAAM,GAAGuD,aAAa,EAAE;IAE9B,MAAMK,UAAU,GAAG,EAA4B;AAE/C,IAAA,MAAMC,aAAa,GAAG7D,MAAM,GACxBA,MAAM,CAACC,OAAO,CAACC,KAAK,EAAE+C,KAAK,CAAC9C,KAAK,CAAC,GAClCxC,SAAS;IACbiG,UAAU,CAACtF,IAAI,CAAC,IAAIuF,aAAa,IAAI,EAAE,CAAC,CAAC;IAEzC,IAAIZ,KAAK,CAACa,QAAQ,EAAE;AAClBF,MAAAA,UAAU,CAACtF,IAAI,CAAC,4BAA4B,CAAC;AAC/C,IAAA;AAEA,IAAA,MAAMyF,aAAa,GAAGP,SAAS,EAAE;IACjC,IAAIO,aAAa,CAAC3E,IAAI,EAAE;AACtBwE,MAAAA,UAAU,CAACtF,IAAI,CAACyF,aAAa,CAAC3E,IAAI,CAAC;AACrC,IAAA;AACA,IAAA,IAAI6D,KAAK,CAACI,QAAQ,IAAIU,aAAa,CAACV,QAAQ,EAAE;AAC5CO,MAAAA,UAAU,CAACtF,IAAI,CAACyF,aAAa,CAACV,QAAQ,CAAC;AACzC,IAAA;AACA,IAAA,IAAIJ,KAAK,CAACK,QAAQ,IAAIS,aAAa,CAACT,QAAQ,EAAE;AAC5CM,MAAAA,UAAU,CAACtF,IAAI,CAACyF,aAAa,CAACT,QAAQ,CAAC;AACzC,IAAA;AAEAM,IAAAA,UAAU,CAACtF,IAAI,CAAC,UAAU,CAAC;AAC3B,IAAA,MAAMd,CAAC,GAAG8C,OAAO,CAACsD,UAAU,CAAC;AAC7B,IAAA,OAAOpG,CAAC;AACV,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMwG,eAAe,GAAGP,UAAU,CAAC,MAAM;IACvC,MAAMG,UAAU,GAAG,EAAc;IACjC,IAAIL,aAAa,EAAE,EAAE;AACnBK,MAAAA,UAAU,CAACtF,IAAI,CACb,GAAGiF,aAAa,EAAE,CAAEtD,OAAO,CAAC,eAAe,EAAEgD,KAAK,CAAC9C,KAAK,CAC1D,CAAC;AACH,IAAA;AACA,IAAA,IAAIqD,SAAS,EAAE,CAACS,QAAQ,EAAE;MACxBL,UAAU,CAACtF,IAAI,CAACkF,SAAS,EAAE,CAACS,QAAS,CAAC;AACxC,IAAA;AACAL,IAAAA,UAAU,CAACtF,IAAI,CAAC,kBAAkB,CAAC;AACnC,IAAA,MAAMd,CAAC,GAAG8C,OAAO,CAACsD,UAAU,CAAC;AAC7B,IAAA,OAAOpG,CAAC;AACV,EAAA,CAAC,CAAC;EAEF,SAAS0G,WAAWA,GAAG;AACrB,IAAA,IAAIjB,KAAK,CAACa,QAAQ,IAAInG,SAAS,EAAE;AAC/BsF,MAAAA,KAAK,CAACa,QAAQ,CAACZ,QAAQ,EAAE,CAAC;AAC5B,IAAA;AACF,EAAA;AAEA,EAAA,OAAA,CAAA,MAAA;IAAA,IAAAiB,IAAA,GAAAC,QAAA,EAAA;IAAAD,IAAA,CAAAE,OAAA,GACgBH,WAAW;AAAAI,IAAAA,MAAA,CAAAH,IAAA,EAAA,MACtBjB,QAAQ,EAAE,CAAC7F,KAAK,EAAA,IAAA,CAAA;AAAAiH,IAAAA,MAAA,CAAAH,IAAA,EAAAI,eAAA,CAChBC,IAAI,EAAA;AAAA,MAAA,IAACC,IAAIA,GAAA;QAAA,OAAExB,KAAK,CAACK,QAAQ;AAAA,MAAA,CAAA;AAAA,MAAA,IAAAoB,QAAAA,GAAA;QAAA,IAAAC,KAAA,GAAAP,QAAA,EAAA;AAAAO,QAAAA,KAAA,CAAAN,OAAA,GAGZO,CAAC,IAAK;AACd,UAAA,IAAI,CAAC3B,KAAK,CAAC4B,qBAAqB,EAAE;YAChCD,CAAC,CAACE,eAAe,EAAE;AACrB,UAAA;QACF,CAAC;AAAAC,QAAAA,MAAA,OAAAC,SAAA,CAAAL,KAAA,EALMX,eAAe,EAAE,CAAA,CAAA;AAAA,QAAA,OAAAW,KAAA;AAAA,MAAA;AAAA,KAAA,CAAA,EAAA,IAAA,CAAA;AAAAI,IAAAA,MAAA,OAAAC,SAAA,CAAAb,IAAA,EAJIR,WAAW,EAAE,CAAA,CAAA;AAAA,IAAA,OAAAQ,IAAA;AAAA,EAAA,CAAA,GAAA;AAcnD;AAAEc,cAAA,CAAA,CAAA,OAAA,CAAA,CAAA;;ACjHK,MAAMC,KAAwB,GAAIjC,KAAK,IAAK;EACjD,MAAMkC,UAAU,GAAGA,MAAMlC,KAAK,CAACmC,OAAO,IAAI,KAAK;EAC/C,MAAM7B,aAAa,GAAGA,MAAM;IAC1B,IAAIN,KAAK,CAACjD,MAAM,EAAE;MAChB,OAAOiD,KAAK,CAACjD,MAAM;AACrB,IAAA,CAAC,MAAM;MACL,OAAOyC,OAAO,CAACE,IAAI;AACrB,IAAA;EACF,CAAC;EAED,SAAS0C,YAAYA,GAAG;IACtB,MAAMnF,KAAK,GAAG,OAAO;AACrB,IAAA,MAAMD,OAAO,GAAGsD,aAAa,EAAE,CAAEtD,OAAO,CAACC,KAAK,EAAE+C,KAAK,CAAC9C,KAAK,CAAC,IAAI,EAAE;IAClE,IAAI8C,KAAK,CAACS,KAAK,EAAE;AACfzD,MAAAA,OAAO,CAAC3B,IAAI,CAAC2E,KAAK,CAACS,KAAK,CAAC;AAC3B,IAAA;IACA,OAAOpD,OAAO,CAACL,OAAO,CAAC;AACzB,EAAA;EAEA,OAAAsE,eAAA,CACGe,OAAO,EAAA;AAAA,IAAA,IAACC,SAASA,GAAA;MAAA,OAAEJ,UAAU,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,KAAA,OAAA,CAAAzB,GAAA;MAAA,OAAS2B,YAAY,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,IAAAX,QAAAA,GAAA;MAAA,OACpDzB,KAAK,CAACyB,QAAQ;AAAA,IAAA;AAAA,GAAA,CAAA;AAGrB;;ACrBO,MAAMc,SAA4B,GAAIvC,KAAK,IAAK;EACrD,MAAMhE,KAAK,GAAGA,MAAMgE,KAAK,CAAChE,KAAK,CAACwG,GAAG,CAACvI,YAAY,CAAC;AAEjD,EAAA,MAAMwI,YAAY,GAAGjC,UAAU,CAAuC,MAAM;IAC1E,MAAMrE,IAAI,GAAG,EAAc;IAC3B,MAAMuG,KAAK,GAAG,EAAc;AAC5B,IAAA,MAAMC,MAAM,GAAG3C,KAAK,CAAC9C,KAAK;IAC1B,IAAI7C,KAAK,CAACC,OAAO,CAACqI,MAAM,CAAC,IAAI,OAAOA,MAAM,IAAI,QAAQ,EAAE;MACtDD,KAAK,CAACrH,IAAI,CAAC,GAAGM,mBAAmB,CAACgH,MAAM,CAAC,CAAC;IAC5C,CAAC,MAAM,IAAI,OAAOA,MAAM,IAAI,QAAQ,IAAIA,MAAM,IAAI,IAAI,EAAE;MACtDD,KAAK,CAACrH,IAAI,CAAC,GAAGM,mBAAmB,CAACgH,MAAM,CAACD,KAAK,CAAC,CAAC;MAChDvG,IAAI,CAACd,IAAI,CAAC,GAAGM,mBAAmB,CAACgH,MAAM,CAACxG,IAAI,CAAC,CAAC;AAChD,IAAA;IACA,OAAO;MAAEuG,KAAK;AAAEvG,MAAAA;KAAM;AACxB,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMa,OAAO,GAAGwD,UAAU,CAAC,MAAM;IAC/B,IAAIkC,KAAK,GAAG,EAAE;IACd,IAAIvG,IAAmB,GAAG,EAAE;AAC5B,IAAA,IAAI,OAAO6D,KAAK,CAACS,KAAK,IAAI,QAAQ,EAAE;MAClCiC,KAAK,GAAG1C,KAAK,CAACS,KAAK;AACrB,IAAA,CAAC,MAAM,IAAIT,KAAK,CAACS,KAAK,IAAI/F,SAAS,EAAE;AACnCsF,MAAAA,KAAK,CAACS,KAAK;AACXiC,MAAAA,KAAK,GAAG1C,KAAK,CAACS,KAAK,CAACiC,KAAK,IAAI,EAAE;AAC/BvG,MAAAA,IAAI,GAAG6D,KAAK,CAACS,KAAK,CAACtE,IAAI,IAAI,EAAE;AAC/B,IAAA;IAEA,OAAO;MAAEuG,KAAK;AAAEvG,MAAAA;KAAM;AACxB,EAAA,CAAC,CAAC;EAEF,MAAMiG,YAAY,GAAGA,MAAM;IACzB,OAAO/E,OAAO,CAAC,qBAAqB,EAAEL,OAAO,EAAE,CAAC0F,KAAK,CAAC;EACxD,CAAC;EAED,MAAMhC,WAAW,GAAGA,MAAM;AACxB,IAAA,OAAO1D,OAAO,EAAE,CAACb,IAAI;EACvB,CAAC;EAED,MAAMyG,YAAY,GAAIzG,IAAa,IAAK;IACtC,IAAI6D,KAAK,CAACa,QAAQ,EAAE;AAClBb,MAAAA,KAAK,CAACa,QAAQ,CAAC1E,IAAI,CAAC;AACtB,IAAA;EACF,CAAC;EAED,MAAM0G,YAAY,GAAI1I,EAAU,IAAK;AACnC,IAAA,IAAI,OAAO6F,KAAK,CAAC8C,SAAS,IAAI,QAAQ,EAAE;AACtC,MAAA,OAAO3I,EAAE,IAAI6F,KAAK,CAAC8C,SAAS;IAC9B,CAAC,MAAM,IAAI,OAAO9C,KAAK,CAAC8C,SAAS,IAAI,QAAQ,EAAE;AAC7C,MAAA,OAAO,CAAC,CAAC9C,KAAK,CAAC8C,SAAS,CAAC3I,EAAE,CAAC;AAC9B,IAAA;AACA,IAAA,OAAO,KAAK;EACd,CAAC;EAED,OAAAmH,eAAA,CACGW,KAAK,EAAA;AAAA,IAAA,KAAA,OAAA,CAAAxB,GAAA;MAAA,OAAQ2B,YAAY,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,IAAElF,KAAKA,GAAA;AAAA,MAAA,OAAEuF,YAAY,EAAE,CAACC,KAAK;AAAA,IAAA,CAAA;AAAA,IAAA,IAAAjB,QAAAA,GAAA;MAAA,OAAAH,eAAA,CACtDyB,GAAG,EAAA;AAAA,QAAA,IAACC,IAAIA,GAAA;UAAA,OAAEhH,KAAK,EAAE;AAAA,QAAA,CAAA;QAAAyF,QAAA,EACdtF,IAAI,IAAK;UACT,OAAAmF,eAAA,CACGvB,IAAI,EAAA;AACHG,YAAAA,OAAO,EAAE/D,IAAI;AAAA,YAAA,IACbiE,QAAQA,GAAA;AAAA,cAAA,OAAEyC,YAAY,CAAC1G,IAAI,CAAChC,EAAE,CAAC;AAAA,YAAA,CAAA;AAC/B0G,YAAAA,QAAQ,EAAEA,MAAM+B,YAAY,CAACzG,IAAI,CAAC;AAAA,YAAA,KAAA,OAAA,CAAAsE,GAAA;cAAA,OAC3BC,WAAW,EAAE;AAAA,YAAA,CAAA;AAAA,YAAA,IACpBxD,KAAKA,GAAA;AAAA,cAAA,OAAEuF,YAAY,EAAE,CAACtG,IAAI;AAAA,YAAA;AAAA,WAAA,CAAA;AAGhC,QAAA;AAAC,OAAA,CAAA;AAAA,IAAA;AAAA,GAAA,CAAA;AAIT;;;AClFO,MAAM8G,KAAyB,GAAIjD,KAAK,IAAI;AACjD,EAAA,OAAAmB,MAAA,EAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/normalizers.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 { tokenizeFilterString } from \"@mrts/common\";\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 return exclusiveTagsNormalize(\n rawTags,\n (tag) => tag.length == 1 && tag.toUpperCase() == tag,\n defaultTag\n );\n}\n\n// export 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 exclusiveTagsNormalize(\n rawTags: string[],\n tagSet: Set<String> | ((tag: string) => boolean),\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n\n const tagSetFunc =\n typeof tagSet == \"function\" ? tagSet : (tag: string) => tagSet.has(tag);\n\n for (const tag of rawTags) {\n if (tagSetFunc(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 { argTokenizeBySpaces, deduplicate } from \"@mrts/common\";\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\nexport function tagRuleMatches(rule: TagRule, candidateTags: string[]) {\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 {\n mainTagNormalize,\n twMergeNormalize,\n exclusiveTagsNormalize,\n} from \"./normalizers.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 exclusiveTagsNormalize(\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","twMergeNormalize","raw","tokenizeFilterString","twMerge","mainTagNormalize","rawTags","defaultTag","exclusiveTagsNormalize","tag","length","toUpperCase","tagSet","rhead","rtail","rtag","tagSetFunc","has","push","SVTStyler","_rules","constructor","rules","options","normalizeRule","with","addedRules","styler","classes","stags","vtags","stagsNormalized","argTokenizeBySpaces","vtagsNormalized","stagsNormaliser","vtagsNormaliser","rule","ruleMatches","normalizer","stagMode","vtagMode","deduplicate","stagRule","mode","tags","vtagRule","tagRuleMatches","candidateTags","ctag","indexOf","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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"}
@@ -1,5 +1,4 @@
1
1
  import { argTokenizeBySpaces, deduplicate } from "@mrts/common";
2
- import { tagRuleMatches } from "./tagRules.js";
3
2
  export class SVTStyler {
4
3
  _rules = [];
5
4
  options;
@@ -58,3 +57,25 @@ export class SVTStyler {
58
57
  tagRuleMatches(rule.vtagRule, vtags));
59
58
  }
60
59
  }
60
+ export function tagRuleMatches(rule, candidateTags) {
61
+ if (rule.mode == "any") {
62
+ return true;
63
+ }
64
+ else if (rule.mode == "or") {
65
+ for (const ctag of candidateTags) {
66
+ if (rule.tags.indexOf(ctag) >= 0) {
67
+ return true;
68
+ }
69
+ }
70
+ return false;
71
+ }
72
+ else if (rule.mode == "and") {
73
+ for (const rtag of rule.tags) {
74
+ if (candidateTags.indexOf(rtag) < 0) {
75
+ return false;
76
+ }
77
+ }
78
+ return true;
79
+ }
80
+ return false;
81
+ }
@@ -1,4 +1,4 @@
1
- import { mainTagNormalize, twMergeNormalize, exlusiveTagNormalize, } from "./stylersUtils.js";
1
+ import { mainTagNormalize, twMergeNormalize, exclusiveTagsNormalize, } from "./normalizers.js";
2
2
  import { SVTStyler } from "./SVTStyler.js";
3
3
  export const baseStyler = new SVTStyler([
4
4
  {
@@ -58,5 +58,5 @@ export const baseStyler = new SVTStyler([
58
58
  },
59
59
  ], {
60
60
  normalizer: twMergeNormalize,
61
- vtagsNormaliser: (tags) => exlusiveTagNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE"),
61
+ vtagsNormaliser: (tags) => exclusiveTagsNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE"),
62
62
  });
@@ -1,5 +1,5 @@
1
1
  export * from "./types.js";
2
2
  export * from "./Stylers.js";
3
- export * from "./stylersUtils.js";
3
+ export * from "./normalizers.js";
4
4
  export * from "./SVTStyler.js";
5
5
  export * from "./base.styler.js";
@@ -0,0 +1,59 @@
1
+ import { twMerge } from "tailwind-merge";
2
+ import { tokenizeFilterString } from "@mrts/common";
3
+ export function twMergeNormalize(raw) {
4
+ return tokenizeFilterString(twMerge(...raw));
5
+ }
6
+ export function mainTagNormalize(rawTags, defaultTag) {
7
+ return exclusiveTagsNormalize(rawTags, (tag) => tag.length == 1 && tag.toUpperCase() == tag, defaultTag);
8
+ }
9
+ // export function mainTagNormalize(
10
+ // rawTags: string[],
11
+ // defaultTag?: string
12
+ // ): string[] {
13
+ // const rhead = [] as string[];
14
+ // const rtail = [] as string[];
15
+ // let rtag: string | undefined = undefined;
16
+ // for (const tag of rawTags) {
17
+ // if (tag.length == 1 && tag.toUpperCase() == tag) {
18
+ // rtag = tag;
19
+ // rhead.push(...rtail);
20
+ // rtail.length = 0;
21
+ // } else {
22
+ // if (rtag == undefined) {
23
+ // rhead.push(tag);
24
+ // } else {
25
+ // rtail.push(tag);
26
+ // }
27
+ // }
28
+ // }
29
+ // rtag = rtag ?? defaultTag;
30
+ // const r =
31
+ // rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
32
+ // // console.log("MAIN TAGS NORM:", rawTags, r);
33
+ // return r;
34
+ // }
35
+ export function exclusiveTagsNormalize(rawTags, tagSet, defaultTag) {
36
+ const rhead = [];
37
+ const rtail = [];
38
+ let rtag = undefined;
39
+ const tagSetFunc = typeof tagSet == "function" ? tagSet : (tag) => tagSet.has(tag);
40
+ for (const tag of rawTags) {
41
+ if (tagSetFunc(tag)) {
42
+ rtag = tag;
43
+ rhead.push(...rtail);
44
+ rtail.length = 0;
45
+ }
46
+ else {
47
+ if (rtag == undefined) {
48
+ rhead.push(tag);
49
+ }
50
+ else {
51
+ rtail.push(tag);
52
+ }
53
+ }
54
+ }
55
+ rtag = rtag ?? defaultTag;
56
+ const r = rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
57
+ //console.log("EXCLU TAGS NORM:", rawTags, r);
58
+ return r;
59
+ }
@@ -25,4 +25,5 @@ export declare class SVTStyler implements ISVTStyler {
25
25
  static normalizeRule(rule: SVTRuleDef): SVTRule;
26
26
  ruleMatches(rule: SVTRule, stags: string[], vtags: string[]): boolean;
27
27
  }
28
+ export declare function tagRuleMatches(rule: TagRule, candidateTags: string[]): boolean;
28
29
  export {};
@@ -1,5 +1,5 @@
1
1
  export * from "./types.js";
2
2
  export * from "./Stylers.js";
3
- export * from "./stylersUtils.js";
3
+ export * from "./normalizers.js";
4
4
  export * from "./SVTStyler.js";
5
5
  export * from "./base.styler.js";
@@ -0,0 +1,3 @@
1
+ export declare function twMergeNormalize(raw: string[]): string[];
2
+ export declare function mainTagNormalize(rawTags: string[], defaultTag?: string): string[];
3
+ export declare function exclusiveTagsNormalize(rawTags: string[], tagSet: Set<String> | ((tag: string) => boolean), defaultTag?: string): string[];
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.5",
4
+ "version": "0.3.7",
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": "8f67f1b1d96d48f83c4b4b4d2dc0e84d08c10cf8"
38
+ "gitHead": "a037f361d0a65e897820f7c111a40bf3901ee32a"
38
39
  }
@@ -1,63 +0,0 @@
1
- import { twMerge } from "tailwind-merge";
2
- import { tokenizeFilterString } from "@mrts/common";
3
- export class SVTStylerNormalizer {
4
- styler;
5
- constructor(styler) {
6
- this.styler = styler;
7
- }
8
- classes(stags, vtags) {
9
- const r = this.styler.classes(stags, vtags);
10
- return r ?? [];
11
- }
12
- }
13
- export function twMergeNormalize(raw) {
14
- return tokenizeFilterString(twMerge(...raw));
15
- }
16
- export function mainTagNormalize(rawTags, defaultTag) {
17
- const rhead = [];
18
- const rtail = [];
19
- let rtag = undefined;
20
- for (const tag of rawTags) {
21
- if (tag.length == 1 && tag.toUpperCase() == tag) {
22
- rtag = tag;
23
- rhead.push(...rtail);
24
- rtail.length = 0;
25
- }
26
- else {
27
- if (rtag == undefined) {
28
- rhead.push(tag);
29
- }
30
- else {
31
- rtail.push(tag);
32
- }
33
- }
34
- }
35
- rtag = rtag ?? defaultTag;
36
- const r = rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
37
- // console.log("MAIN TAGS NORM:", rawTags, r);
38
- return r;
39
- }
40
- export function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
41
- const rhead = [];
42
- const rtail = [];
43
- let rtag = undefined;
44
- for (const tag of rawTags) {
45
- if (tagSet.has(tag)) {
46
- rtag = tag;
47
- rhead.push(...rtail);
48
- rtail.length = 0;
49
- }
50
- else {
51
- if (rtag == undefined) {
52
- rhead.push(tag);
53
- }
54
- else {
55
- rtail.push(tag);
56
- }
57
- }
58
- }
59
- rtag = rtag ?? defaultTag;
60
- const r = rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
61
- //console.log("EXCLU TAGS NORM:", rawTags, r);
62
- return r;
63
- }
@@ -1,34 +0,0 @@
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
- // }
13
- export function tagRuleMatches(rule, candidateTags) {
14
- if (rule.mode == "any") {
15
- return true;
16
- }
17
- else if (rule.mode == "or") {
18
- for (const ctag of candidateTags) {
19
- if (rule.tags.indexOf(ctag) >= 0) {
20
- return true;
21
- }
22
- }
23
- return false;
24
- }
25
- else if (rule.mode == "and") {
26
- for (const rtag of rule.tags) {
27
- if (candidateTags.indexOf(rtag) < 0) {
28
- return false;
29
- }
30
- }
31
- return true;
32
- }
33
- return false;
34
- }
@@ -1,9 +0,0 @@
1
- import type { ISVTStyler, TagListArgument } from "./types.js";
2
- export declare class SVTStylerNormalizer implements ISVTStyler {
3
- private readonly styler;
4
- constructor(styler: ISVTStyler);
5
- classes(stags: TagListArgument, vtags: TagListArgument): string[];
6
- }
7
- export declare function twMergeNormalize(raw: string[]): string[];
8
- export declare function mainTagNormalize(rawTags: string[], defaultTag?: string): string[];
9
- export declare function exlusiveTagNormalize(rawTags: string[], tagSet: Set<String>, defaultTag?: string): string[];
@@ -1,2 +0,0 @@
1
- import type { TagRule } from "./types.js";
2
- export declare function tagRuleMatches(rule: TagRule, candidateTags: string[]): boolean;