@mrts/soltw 0.3.6 → 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 +55 -68
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +54 -67
- package/dist/esm/index.js.map +1 -1
- package/dist/source/stylers/SVTStyler.js +22 -1
- package/dist/source/stylers/base.styler.js +2 -2
- package/dist/source/stylers/index.js +1 -1
- package/dist/source/stylers/normalizers.js +59 -0
- package/dist/types/stylers/SVTStyler.d.ts +1 -0
- package/dist/types/stylers/index.d.ts +1 -1
- package/dist/types/stylers/normalizers.d.ts +3 -0
- package/package.json +2 -2
- package/dist/source/stylers/stylersUtils.js +0 -63
- package/dist/source/stylers/tagRules.js +0 -34
- package/dist/types/stylers/stylersUtils.d.ts +0 -9
- package/dist/types/stylers/tagRules.d.ts +0 -2
package/dist/cjs/index.js
CHANGED
|
@@ -25,46 +25,47 @@ function buildIdLabel(arg) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
class SVTStylerNormalizer {
|
|
29
|
-
constructor(styler) {
|
|
30
|
-
this.styler = styler;
|
|
31
|
-
}
|
|
32
|
-
classes(stags, vtags) {
|
|
33
|
-
const r = this.styler.classes(stags, vtags);
|
|
34
|
-
return r ?? [];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
28
|
function twMergeNormalize(raw) {
|
|
38
29
|
return common.tokenizeFilterString(tailwindMerge.twMerge(...raw));
|
|
39
30
|
}
|
|
40
31
|
function mainTagNormalize(rawTags, defaultTag) {
|
|
41
|
-
|
|
42
|
-
const rtail = [];
|
|
43
|
-
let rtag = undefined;
|
|
44
|
-
for (const tag of rawTags) {
|
|
45
|
-
if (tag.length == 1 && tag.toUpperCase() == tag) {
|
|
46
|
-
rtag = tag;
|
|
47
|
-
rhead.push(...rtail);
|
|
48
|
-
rtail.length = 0;
|
|
49
|
-
} else {
|
|
50
|
-
if (rtag == undefined) {
|
|
51
|
-
rhead.push(tag);
|
|
52
|
-
} else {
|
|
53
|
-
rtail.push(tag);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
rtag = rtag ?? defaultTag;
|
|
58
|
-
const r = rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
|
|
59
|
-
// console.log("MAIN TAGS NORM:", rawTags, r);
|
|
60
|
-
return r;
|
|
32
|
+
return exclusiveTagsNormalize(rawTags, tag => tag.length == 1 && tag.toUpperCase() == tag, defaultTag);
|
|
61
33
|
}
|
|
62
|
-
|
|
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) {
|
|
63
63
|
const rhead = [];
|
|
64
64
|
const rtail = [];
|
|
65
65
|
let rtag = undefined;
|
|
66
|
+
const tagSetFunc = typeof tagSet == "function" ? tagSet : tag => tagSet.has(tag);
|
|
66
67
|
for (const tag of rawTags) {
|
|
67
|
-
if (
|
|
68
|
+
if (tagSetFunc(tag)) {
|
|
68
69
|
rtag = tag;
|
|
69
70
|
rhead.push(...rtail);
|
|
70
71
|
rtail.length = 0;
|
|
@@ -82,40 +83,6 @@ function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
|
|
|
82
83
|
return r;
|
|
83
84
|
}
|
|
84
85
|
|
|
85
|
-
// export function normalizeTagListArgument(arg: TagListArgument): string[] {
|
|
86
|
-
// if (typeof arg == "string") {
|
|
87
|
-
// return splitCleanString(arg);
|
|
88
|
-
// } else if (Array.isArray(arg)) {
|
|
89
|
-
// const r = [];
|
|
90
|
-
// for (const a of arg) {
|
|
91
|
-
// r.push(...normalizeTagListArgument(a));
|
|
92
|
-
// }
|
|
93
|
-
// return r;
|
|
94
|
-
// }
|
|
95
|
-
// return [];
|
|
96
|
-
// }
|
|
97
|
-
|
|
98
|
-
function tagRuleMatches(rule, candidateTags) {
|
|
99
|
-
if (rule.mode == "any") {
|
|
100
|
-
return true;
|
|
101
|
-
} else if (rule.mode == "or") {
|
|
102
|
-
for (const ctag of candidateTags) {
|
|
103
|
-
if (rule.tags.indexOf(ctag) >= 0) {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return false;
|
|
108
|
-
} else if (rule.mode == "and") {
|
|
109
|
-
for (const rtag of rule.tags) {
|
|
110
|
-
if (candidateTags.indexOf(rtag) < 0) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
86
|
class SVTStyler {
|
|
120
87
|
_rules = [];
|
|
121
88
|
constructor(rules, options = {}) {
|
|
@@ -182,6 +149,26 @@ class SVTStyler {
|
|
|
182
149
|
return tagRuleMatches(rule.stagRule, stags) && tagRuleMatches(rule.vtagRule, vtags);
|
|
183
150
|
}
|
|
184
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
|
+
}
|
|
185
172
|
|
|
186
173
|
const baseStyler = new SVTStyler([{
|
|
187
174
|
vtags: "A",
|
|
@@ -227,7 +214,7 @@ const baseStyler = new SVTStyler([{
|
|
|
227
214
|
classes: "bg-slate-300/85 cursor-not-allowed"
|
|
228
215
|
}], {
|
|
229
216
|
normalizer: twMergeNormalize,
|
|
230
|
-
vtagsNormaliser: tags =>
|
|
217
|
+
vtagsNormaliser: tags => exclusiveTagsNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE")
|
|
231
218
|
});
|
|
232
219
|
|
|
233
220
|
class Stylers {
|
|
@@ -510,12 +497,12 @@ exports.Block = Block;
|
|
|
510
497
|
exports.Item = Item;
|
|
511
498
|
exports.ItemGroup = ItemGroup;
|
|
512
499
|
exports.SVTStyler = SVTStyler;
|
|
513
|
-
exports.SVTStylerNormalizer = SVTStylerNormalizer;
|
|
514
500
|
exports.SolTw = SolTw;
|
|
515
501
|
exports.Stylers = Stylers;
|
|
516
502
|
exports.baseStyler = baseStyler;
|
|
517
503
|
exports.buildIdLabel = buildIdLabel;
|
|
518
|
-
exports.
|
|
504
|
+
exports.exclusiveTagsNormalize = exclusiveTagsNormalize;
|
|
519
505
|
exports.mainTagNormalize = mainTagNormalize;
|
|
506
|
+
exports.tagRuleMatches = tagRuleMatches;
|
|
520
507
|
exports.twMergeNormalize = twMergeNormalize;
|
|
521
508
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/stylersUtils.ts","../../src/stylers/tagRules.ts","../../src/stylers/SVTStyler.ts","../../src/stylers/base.styler.ts","../../src/stylers/Stylers.ts","../../src/items/Item.tsx","../../src/Block.tsx","../../../common/dist/strings/tokenize.js","../../src/items/ItemGroup.tsx","../../src/soltw.tsx"],"sourcesContent":["export interface IdLabel {\n id: string;\n label: string;\n [x: string | symbol]: unknown;\n}\n\nexport type IdLabelDef = {\n id: string;\n label?: string;\n [x: string | symbol]: unknown;\n};\n\nexport type IdLabelArg = IdLabelDef | [string, string] | string;\n\nexport function buildIdLabel(arg: IdLabelArg): IdLabel {\n if (typeof arg == \"string\") {\n return { id: arg, label: arg };\n } else if (Array.isArray(arg)) {\n return { id: arg[0], label: arg[1] };\n } else {\n const r = Object.assign({}, arg);\n if (r.label == undefined) {\n r[\"label\"] = r.id;\n }\n return r as IdLabel;\n }\n}\n\n","import { twMerge } from \"tailwind-merge\";\nimport type { ISVTStyler, TagListArgument } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\nexport class SVTStylerNormalizer implements ISVTStyler {\n constructor(private readonly styler: ISVTStyler) {}\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = this.styler.classes(stags, vtags);\n return r ?? [];\n }\n}\n\nexport function twMergeNormalize(raw: string[]): string[] {\n return tokenizeFilterString(twMerge(...raw));\n}\n\nexport function mainTagNormalize(\n rawTags: string[],\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tag.length == 1 && tag.toUpperCase() == tag) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n // console.log(\"MAIN TAGS NORM:\", rawTags, r);\n return r;\n}\n\nexport function exlusiveTagNormalize(\n rawTags: string[],\n tagSet: Set<String>,\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tagSet.has(tag)) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n //console.log(\"EXCLU TAGS NORM:\", rawTags, r);\n return r;\n}\n","import type { TagListArgument, TagRule } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\n\n\n// export function normalizeTagListArgument(arg: TagListArgument): string[] {\n// if (typeof arg == \"string\") {\n// return splitCleanString(arg);\n// } else if (Array.isArray(arg)) {\n// const r = [];\n// for (const a of arg) {\n// r.push(...normalizeTagListArgument(a));\n// }\n// return r;\n// }\n// return [];\n// }\n\n\nexport function tagRuleMatches(\n rule:TagRule,\n candidateTags: string[]\n) {\n if (rule.mode == \"any\") {\n return true;\n } else if (rule.mode == \"or\") {\n for (const ctag of candidateTags) {\n if (rule.tags.indexOf(ctag) >= 0) {\n return true;\n }\n }\n return false;\n } else if (rule.mode == \"and\") {\n for (const rtag of rule.tags) {\n if (candidateTags.indexOf(rtag) < 0) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { argTokenizeBySpaces, deduplicate } from \"@mrts/common\";\nimport { tagRuleMatches } from \"./tagRules.js\";\nimport type {\n ISVTStyler,\n TagListArgument,\n TagRule,\n TagRuleMode,\n} from \"./types.js\";\n\nexport type SVTRule = {\n stagRule: TagRule;\n vtagRule: TagRule;\n classes: string[];\n};\n\nexport type SVTRuleDef = {\n stagMode?: TagRuleMode;\n vtagMode?: TagRuleMode;\n stags?: TagListArgument;\n vtags?: TagListArgument;\n classes?: TagListArgument;\n};\n\ntype SVTStylerOptions = {\n normalizer?: (rawClasses: string[]) => string[];\n stagsNormaliser?: (rawTags: string[]) => string[];\n vtagsNormaliser?: (rawTags: string[]) => string[];\n};\n\nexport class SVTStyler implements ISVTStyler {\n readonly _rules: SVTRule[] = [];\n readonly options: SVTStylerOptions;\n\n constructor(rules: SVTRuleDef[], options: SVTStylerOptions = {}) {\n for (const r of rules) {\n this._rules.push(SVTStyler.normalizeRule(r));\n }\n this.options = { ...options };\n }\n\n with(rules: SVTRuleDef[], options: SVTStylerOptions = {}): SVTStyler {\n const addedRules: SVTRule[] = [];\n for (const r of rules) {\n addedRules.push(SVTStyler.normalizeRule(r));\n }\n\n const styler = new SVTStyler([], { ...this.options });\n styler._rules.push(...this._rules, ...addedRules);\n return styler;\n }\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = [] as string[];\n\n let stagsNormalized = argTokenizeBySpaces(stags);\n let vtagsNormalized = argTokenizeBySpaces(vtags);\n\n if (this.options.stagsNormaliser) {\n stagsNormalized = this.options.stagsNormaliser(stagsNormalized);\n }\n if (this.options.vtagsNormaliser) {\n vtagsNormalized = this.options.vtagsNormaliser(vtagsNormalized);\n }\n\n for (const rule of this._rules) {\n if (this.ruleMatches(rule, stagsNormalized, vtagsNormalized)) {\n r.push(...rule.classes);\n }\n }\n\n return this.options.normalizer ? this.options.normalizer(r) : r;\n }\n\n static normalizeRule(rule: SVTRuleDef): SVTRule {\n let stagMode: TagRuleMode = rule.stagMode ?? \"or\";\n let vtagMode: TagRuleMode = rule.vtagMode ?? \"or\";\n let stags: string[] = deduplicate(argTokenizeBySpaces(rule.stags));\n let vtags: string[] = deduplicate(argTokenizeBySpaces(rule.vtags));\n let classes: string[] = deduplicate(argTokenizeBySpaces(rule.classes));\n\n if (rule.stags == undefined && rule.stagMode == undefined) {\n stagMode = \"any\";\n }\n if (rule.vtags == undefined && rule.vtagMode == undefined) {\n vtagMode = \"any\";\n }\n\n return {\n stagRule: { mode: stagMode, tags: stags },\n vtagRule: { mode: vtagMode, tags: vtags },\n classes,\n };\n }\n\n ruleMatches(rule: SVTRule, stags: string[], vtags: string[]) {\n return (\n tagRuleMatches(rule.stagRule, stags) &&\n tagRuleMatches(rule.vtagRule, vtags)\n );\n }\n}\n","import {\n mainTagNormalize,\n twMergeNormalize,\n exlusiveTagNormalize,\n} from \"./stylersUtils.js\";\nimport { SVTStyler } from \"./SVTStyler.js\";\n\n\nexport const baseStyler = new SVTStyler(\n [\n {\n vtags: \"A\",\n classes: \"bg-slate-100 text-slate-800\",\n },\n {\n vtags: \"B\",\n classes: \"bg-slate-800 text-slate-100\",\n },\n {\n vtags: \"C\",\n classes: \"bg-stone-300 text-orange-950\",\n },\n { \n vtags: \"D\",\n classes: \"bg-orange-900 text-stone-100\",\n },\n {\n vtags: \"LG\",\n classes: \"text-xl p-2\",\n },\n {\n vtags: \"BASE\",\n classes: \"text-base p-1\",\n },\n {\n vtags: \"SM\",\n classes: \"text-sm p-0.5\",\n },\n {\n vtags: \"LG\",\n stags: \"item\",\n classes: \"text-xl px-2 py-1\",\n },\n {\n vtags: \"BASE\",\n stags: \"item\",\n classes: \"text-base px-1 py-0.5\",\n },\n {\n vtags: \"SM\",\n stags: \"item\",\n classes: \"text-sm p-0.5\",\n },\n {\n stags: \"item:selected\",\n classes: \"underline font-bold\",\n },\n {\n stags: \"item:disabled\",\n classes: \"blur-[1px]\",\n },\n {\n stags: \"item/disabler\",\n classes: \"bg-slate-300/85 cursor-not-allowed\",\n },\n ],\n {\n normalizer: twMergeNormalize,\n vtagsNormaliser: (tags) =>\n exlusiveTagNormalize(\n mainTagNormalize(tags, \"A\"),\n new Set([\"SM\", \"BASE\", \"LG\"]),\n \"BASE\"\n ),\n }\n);\n","import type { ISVTStyler } from \"./types.js\";\nimport {baseStyler} from \"./base.styler.js\";\n\nexport class Stylers {\n private static _base: ISVTStyler | undefined;\n private static _stylersMap = new Map<string, ISVTStyler>();\n\n static get base(): ISVTStyler | undefined {\n return this._base;\n }\n static setBase(base: ISVTStyler | undefined) {\n return (this._base = base);\n }\n static {\n this._stylersMap.set(\"default\", baseStyler)\n this.setBase(baseStyler);\n }\n\n static get(name: string): ISVTStyler | undefined {\n return this._stylersMap.get(name);\n }\n}\n","import { type Component, createMemo, Show } from \"solid-js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { type ISVTStyler, type TagListArgument } from \"../stylers/index.js\";\nimport { Stylers } from \"../stylers/Stylers.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\n\nexport type TItemClass = {\n item?: string;\n selected?: string;\n disabled?: string;\n disabler?: string;\n};\nexport type TItemClassArg = TItemClass|string;\n\nexport type TItemProps = {\n idLabel: IdLabelArg;\n callback?: (item: IdLabel) => void;\n selected?: boolean;\n disabled?: boolean;\n clickableWhendisabled?: boolean;\n styler?: ISVTStyler;\n vtags?: TagListArgument;\n class?: TItemClassArg;\n};\n\nexport const Item: Component<TItemProps> = (props) => {\n const itemData = () => buildIdLabel(props.idLabel);\n\n const currentSTags = () => {\n const r = [] as string[];\n r.push(\"item\");\n if (props.selected) {\n r.push(\"item:selected\");\n }\n if (props.disabled) {\n r.push(\"item:disabled\");\n }\n return r;\n };\n\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n const classProp = createMemo<TItemClass>(() => {\n if (props.class == undefined) {\n return {};\n } else if (typeof props.class == \"string\") {\n return { item: props.class };\n } else {\n return props.class;\n }\n });\n\n const itemClasses = createMemo(() => {\n const stags = currentSTags();\n\n const styler = currentStyler();\n\n const rawClasses = [] as (string | undefined)[];\n\n const stylerClasses = styler\n ? styler.classes(stags, props.vtags)\n : undefined;\n rawClasses.push(...(stylerClasses ?? []));\n\n if (props.callback) {\n rawClasses.push(\"select-none cursor-pointer\");\n }\n\n const customClasses = classProp();\n if (customClasses.item) {\n rawClasses.push(customClasses.item);\n }\n if (props.selected && customClasses.selected) {\n rawClasses.push(customClasses.selected);\n }\n if (props.disabled && customClasses.disabled) {\n rawClasses.push(customClasses.disabled);\n }\n\n rawClasses.push(\"relative\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n const disablerClasses = createMemo(() => {\n const rawClasses = [] as string[];\n if (currentStyler()) {\n rawClasses.push(\n ...currentStyler()!.classes(\"item/disabler\", props.vtags)!\n );\n }\n if (classProp().disabler) {\n rawClasses.push(classProp().disabler!);\n }\n rawClasses.push(\"absolute inset-0\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n function handleClick() {\n if (props.callback != undefined) {\n props.callback(itemData());\n }\n }\n\n return (\n <div onClick={handleClick} class={itemClasses()}>\n {itemData().label}\n <Show when={props.disabled}>\n <div\n class={disablerClasses()}\n onClick={(e) => {\n if (!props.clickableWhendisabled) {\n e.stopPropagation();\n }\n }}\n ></div>\n </Show>\n </div>\n );\n};\n","import type { Component, ParentProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { type ISVTStyler, Stylers, type TagListArgument } from \"./stylers/index.js\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype TProps = ParentProps & {\n vtags?: TagListArgument;\n styler?: ISVTStyler;\n class?: string;\n element?: string;\n};\n\n\nexport const Block: Component<TProps> = (props) => {\n const elementTag = () => props.element ?? \"div\";\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n function blockClasses() {\n const stags = \"block\";\n const classes = currentStyler()!.classes(stags, props.vtags) ?? [];\n if (props.class) {\n classes.push(props.class);\n }\n return twMerge(classes);\n }\n\n return (\n <Dynamic component={elementTag()} class={blockClasses()}>\n {props.children}\n </Dynamic>\n );\n};\n","export function buildTokenizeFuncUsingSplitters(splitters) {\n splitters = Array.isArray(splitters) ? splitters : [splitters];\n const tokenize = (s) => {\n let r = s.split(splitters[0]).filter((t) => t != \"\" && t != undefined);\n for (const splitter of splitters.slice(1)) {\n const r0 = [...r];\n r = [];\n for (const s of r0) {\n r.push(...tokenizeFilterString(s, {\n splitter,\n filter: (t) => t != \"\" && t != undefined,\n }));\n //r.push(...s.split(splitter).filter((t) => t != \"\" && t != undefined));\n }\n }\n return r;\n };\n return tokenize;\n}\nexport function buildArgTokenizeFunc(tokenize) {\n const argTokenize = (arg) => {\n if (arg == undefined) {\n return [];\n }\n else if (Array.isArray(arg)) {\n const r = [];\n for (const a of arg) {\n r.push(...argTokenize(a));\n }\n return r;\n }\n else {\n return tokenize(arg);\n }\n };\n return argTokenize;\n}\nexport const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\\s+/);\nexport const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);\nexport function tokenizeFilterString(s, options = {}) {\n const separator = options.splitter ?? /\\s+/;\n const filter = options.filter ?? ((s) => s.length > 0);\n const r = s.split(separator).filter(filter);\n return r;\n}\nexport function deduplicate(items) {\n const r = [];\n const itemSet = new Set();\n for (const item of items) {\n if (!itemSet.has(item)) {\n r.push(item);\n itemSet.add(item);\n }\n }\n return r;\n}\n//# sourceMappingURL=tokenize.js.map","import { twMerge } from \"tailwind-merge\";\nimport { Block } from \"../Block.jsx\";\nimport { Item, type TItemClassArg } from \"./Item.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\nimport { type Component, createMemo, For } from \"solid-js\";\nimport { type TagListArgument } from \"../stylers/types.js\";\nimport { argTokenizeBySpaces } from \"../../../common/dist/strings/tokenize.js\";\n\ntype TProps = {\n items: IdLabelArg[];\n callback?: (item: IdLabel) => void;\n class?: string | { group?: string; item?: TItemClassArg };\n selection?: string | { [id: string]: boolean };\n vtags?: TagListArgument | { group?: TagListArgument; item?: TagListArgument };\n};\n\nexport const ItemGroup: Component<TProps> = (props) => {\n const items = () => props.items.map(buildIdLabel);\n\n const currentVTags = createMemo<{ group: string[]; item?: string[] }>(() => {\n const item = [] as string[];\n const group = [] as string[];\n const _vtags = props.vtags;\n if (Array.isArray(_vtags) || typeof _vtags == \"string\") {\n group.push(...argTokenizeBySpaces(_vtags));\n } else if (typeof _vtags == \"object\" && _vtags != null) {\n group.push(...argTokenizeBySpaces(_vtags.group));\n item.push(...argTokenizeBySpaces(_vtags.item));\n }\n return { group, item };\n });\n\n const classes = createMemo(() => {\n let group = \"\";\n let item: TItemClassArg = \"\";\n if (typeof props.class == \"string\") {\n group = props.class;\n } else if (props.class != undefined) {\n props.class;\n group = props.class.group ?? \"\";\n item = props.class.item ?? \"\";\n }\n\n return { group, item };\n });\n\n const blockClasses = () => {\n return twMerge(\"flex flex-row gap-1\", classes().group);\n };\n\n const itemClasses = () => {\n return classes().item;\n };\n\n const callCallback = (item: IdLabel) => {\n if (props.callback) {\n props.callback(item);\n }\n };\n\n const itemSelected = (id: string) => {\n if (typeof props.selection == \"string\") {\n return id == props.selection;\n } else if (typeof props.selection == \"object\") {\n return !!props.selection[id];\n }\n return false;\n };\n\n return (\n <Block class={blockClasses()} vtags={currentVTags().group}>\n <For each={items()}>\n {(item) => {\n return (\n <Item\n idLabel={item}\n selected={itemSelected(item.id)}\n callback={() => callCallback(item)}\n class={itemClasses()}\n vtags={currentVTags().item}\n ></Item>\n );\n }}\n </For>\n </Block>\n );\n};\n","import type { Component } from \"solid-js\";\n\ntype TProps = {}\n\nexport const SolTw : Component<TProps> = (props) =>{\n return <div class=\"bg-red-600\">- - S O L T W - -</div>\n}\n\n\n"],"names":["buildIdLabel","arg","id","label","Array","isArray","r","Object","assign","undefined","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","tokenizeFilterString","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","length","toUpperCase","push","exlusiveTagNormalize","tagSet","has","tagRuleMatches","rule","candidateTags","mode","ctag","tags","indexOf","SVTStyler","_rules","rules","options","normalizeRule","with","addedRules","stagsNormalized","argTokenizeBySpaces","vtagsNormalized","stagsNormaliser","vtagsNormaliser","ruleMatches","normalizer","stagMode","vtagMode","deduplicate","stagRule","vtagRule","baseStyler","Set","Stylers","_stylersMap","Map","base","_base","setBase","set","get","name","Item","props","itemData","idLabel","currentSTags","selected","disabled","currentStyler","classProp","createMemo","class","item","itemClasses","rawClasses","stylerClasses","callback","customClasses","disablerClasses","disabler","handleClick","_el$","_tmpl$","$$click","_$insert","_$createComponent","Show","when","children","_el$2","e","clickableWhendisabled","stopPropagation","_$effect","_$className","_$delegateEvents","Block","elementTag","element","blockClasses","Dynamic","component","buildTokenizeFuncUsingSplitters","splitters","tokenize","s","split","filter","t","splitter","slice","r0","buildArgTokenizeFunc","argTokenize","a","tokenizeBySpaces","separator","ItemGroup","items","map","currentVTags","group","_vtags","callCallback","itemSelected","selection","For","each","SolTw"],"mappings":";;;;;;;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;;ACtBO,MAAMI,mBAAmB,CAAuB;EACrDC,WAAWA,CAAkBC,MAAkB,EAAE;IAAA,IAAA,CAApBA,MAAkB,GAAlBA,MAAkB;AAAG,EAAA;AAElDC,EAAAA,OAAOA,CAACC,KAAsB,EAAEC,KAAsB,EAAY;IAChE,MAAMT,CAAC,GAAG,IAAI,CAACM,MAAM,CAACC,OAAO,CAACC,KAAK,EAAEC,KAAK,CAAC;IAC3C,OAAOT,CAAC,IAAI,EAAE;AAChB,EAAA;AACF;AAEO,SAASU,gBAAgBA,CAACC,GAAa,EAAY;AACxD,EAAA,OAAOC,2BAAoB,CAACC,qBAAO,CAAC,GAAGF,GAAG,CAAC,CAAC;AAC9C;AAEO,SAASG,gBAAgBA,CAC9BC,OAAiB,EACjBC,UAAmB,EACT;EACV,MAAMC,KAAK,GAAG,EAAc;EAC5B,MAAMC,KAAK,GAAG,EAAc;EAC5B,IAAIC,IAAwB,GAAGhB,SAAS;AACxC,EAAA,KAAK,MAAMiB,GAAG,IAAIL,OAAO,EAAE;AACzB,IAAA,IAAIK,GAAG,CAACC,MAAM,IAAI,CAAC,IAAID,GAAG,CAACE,WAAW,EAAE,IAAIF,GAAG,EAAE;AAC/CD,MAAAA,IAAI,GAAGC,GAAG;AACVH,MAAAA,KAAK,CAACM,IAAI,CAAC,GAAGL,KAAK,CAAC;MACpBA,KAAK,CAACG,MAAM,GAAG,CAAC;AAClB,IAAA,CAAC,MAAM;MACL,IAAIF,IAAI,IAAIhB,SAAS,EAAE;AACrBc,QAAAA,KAAK,CAACM,IAAI,CAACH,GAAG,CAAC;AACjB,MAAA,CAAC,MAAM;AACLF,QAAAA,KAAK,CAACK,IAAI,CAACH,GAAG,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;EACAD,IAAI,GAAGA,IAAI,IAAIH,UAAU;EACzB,MAAMhB,CAAC,GACLmB,IAAI,IAAIhB,SAAS,GAAG,CAAC,GAAGc,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,CAAC,GAAGD,KAAK,EAAEE,IAAI,EAAE,GAAGD,KAAK,CAAC;AACvE;AACA,EAAA,OAAOlB,CAAC;AACV;AAEO,SAASwB,oBAAoBA,CAClCT,OAAiB,EACjBU,MAAmB,EACnBT,UAAmB,EACT;EACV,MAAMC,KAAK,GAAG,EAAc;EAC5B,MAAMC,KAAK,GAAG,EAAc;EAC5B,IAAIC,IAAwB,GAAGhB,SAAS;AACxC,EAAA,KAAK,MAAMiB,GAAG,IAAIL,OAAO,EAAE;AACzB,IAAA,IAAIU,MAAM,CAACC,GAAG,CAACN,GAAG,CAAC,EAAE;AACnBD,MAAAA,IAAI,GAAGC,GAAG;AACVH,MAAAA,KAAK,CAACM,IAAI,CAAC,GAAGL,KAAK,CAAC;MACpBA,KAAK,CAACG,MAAM,GAAG,CAAC;AAClB,IAAA,CAAC,MAAM;MACL,IAAIF,IAAI,IAAIhB,SAAS,EAAE;AACrBc,QAAAA,KAAK,CAACM,IAAI,CAACH,GAAG,CAAC;AACjB,MAAA,CAAC,MAAM;AACLF,QAAAA,KAAK,CAACK,IAAI,CAACH,GAAG,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;EACAD,IAAI,GAAGA,IAAI,IAAIH,UAAU;EACzB,MAAMhB,CAAC,GACLmB,IAAI,IAAIhB,SAAS,GAAG,CAAC,GAAGc,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,CAAC,GAAGD,KAAK,EAAEE,IAAI,EAAE,GAAGD,KAAK,CAAC;AACvE;AACA,EAAA,OAAOlB,CAAC;AACV;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGO,SAAS2B,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,MAAMX,IAAI,IAAIS,IAAI,CAACI,IAAI,EAAE;MAC5B,IAAIH,aAAa,CAACI,OAAO,CAACd,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,MAAMe,SAAS,CAAuB;AAClCC,EAAAA,MAAM,GAAc,EAAE;AAG/B9B,EAAAA,WAAWA,CAAC+B,KAAmB,EAAEC,OAAyB,GAAG,EAAE,EAAE;AAC/D,IAAA,KAAK,MAAMrC,CAAC,IAAIoC,KAAK,EAAE;MACrB,IAAI,CAACD,MAAM,CAACZ,IAAI,CAACW,SAAS,CAACI,aAAa,CAACtC,CAAC,CAAC,CAAC;AAC9C,IAAA;IACA,IAAI,CAACqC,OAAO,GAAG;MAAE,GAAGA;KAAS;AAC/B,EAAA;AAEAE,EAAAA,IAAIA,CAACH,KAAmB,EAAEC,OAAyB,GAAG,EAAE,EAAa;IACnE,MAAMG,UAAqB,GAAG,EAAE;AAChC,IAAA,KAAK,MAAMxC,CAAC,IAAIoC,KAAK,EAAE;MACrBI,UAAU,CAACjB,IAAI,CAACW,SAAS,CAACI,aAAa,CAACtC,CAAC,CAAC,CAAC;AAC7C,IAAA;AAEA,IAAA,MAAMM,MAAM,GAAG,IAAI4B,SAAS,CAAC,EAAE,EAAE;AAAE,MAAA,GAAG,IAAI,CAACG;AAAQ,KAAC,CAAC;AACrD/B,IAAAA,MAAM,CAAC6B,MAAM,CAACZ,IAAI,CAAC,GAAG,IAAI,CAACY,MAAM,EAAE,GAAGK,UAAU,CAAC;AACjD,IAAA,OAAOlC,MAAM;AACf,EAAA;AAEAC,EAAAA,OAAOA,CAACC,KAAsB,EAAEC,KAAsB,EAAY;IAChE,MAAMT,CAAC,GAAG,EAAc;AAExB,IAAA,IAAIyC,eAAe,GAAGC,0BAAmB,CAAClC,KAAK,CAAC;AAChD,IAAA,IAAImC,eAAe,GAAGD,0BAAmB,CAACjC,KAAK,CAAC;AAEhD,IAAA,IAAI,IAAI,CAAC4B,OAAO,CAACO,eAAe,EAAE;MAChCH,eAAe,GAAG,IAAI,CAACJ,OAAO,CAACO,eAAe,CAACH,eAAe,CAAC;AACjE,IAAA;AACA,IAAA,IAAI,IAAI,CAACJ,OAAO,CAACQ,eAAe,EAAE;MAChCF,eAAe,GAAG,IAAI,CAACN,OAAO,CAACQ,eAAe,CAACF,eAAe,CAAC;AACjE,IAAA;AAEA,IAAA,KAAK,MAAMf,IAAI,IAAI,IAAI,CAACO,MAAM,EAAE;MAC9B,IAAI,IAAI,CAACW,WAAW,CAAClB,IAAI,EAAEa,eAAe,EAAEE,eAAe,CAAC,EAAE;AAC5D3C,QAAAA,CAAC,CAACuB,IAAI,CAAC,GAAGK,IAAI,CAACrB,OAAO,CAAC;AACzB,MAAA;AACF,IAAA;AAEA,IAAA,OAAO,IAAI,CAAC8B,OAAO,CAACU,UAAU,GAAG,IAAI,CAACV,OAAO,CAACU,UAAU,CAAC/C,CAAC,CAAC,GAAGA,CAAC;AACjE,EAAA;EAEA,OAAOsC,aAAaA,CAACV,IAAgB,EAAW;AAC9C,IAAA,IAAIoB,QAAqB,GAAGpB,IAAI,CAACoB,QAAQ,IAAI,IAAI;AACjD,IAAA,IAAIC,QAAqB,GAAGrB,IAAI,CAACqB,QAAQ,IAAI,IAAI;IACjD,IAAIzC,KAAe,GAAG0C,kBAAW,CAACR,0BAAmB,CAACd,IAAI,CAACpB,KAAK,CAAC,CAAC;IAClE,IAAIC,KAAe,GAAGyC,kBAAW,CAACR,0BAAmB,CAACd,IAAI,CAACnB,KAAK,CAAC,CAAC;IAClE,IAAIF,OAAiB,GAAG2C,kBAAW,CAACR,0BAAmB,CAACd,IAAI,CAACrB,OAAO,CAAC,CAAC;IAEtE,IAAIqB,IAAI,CAACpB,KAAK,IAAIL,SAAS,IAAIyB,IAAI,CAACoB,QAAQ,IAAI7C,SAAS,EAAE;AACzD6C,MAAAA,QAAQ,GAAG,KAAK;AAClB,IAAA;IACA,IAAIpB,IAAI,CAACnB,KAAK,IAAIN,SAAS,IAAIyB,IAAI,CAACqB,QAAQ,IAAI9C,SAAS,EAAE;AACzD8C,MAAAA,QAAQ,GAAG,KAAK;AAClB,IAAA;IAEA,OAAO;AACLE,MAAAA,QAAQ,EAAE;AAAErB,QAAAA,IAAI,EAAEkB,QAAQ;AAAEhB,QAAAA,IAAI,EAAExB;OAAO;AACzC4C,MAAAA,QAAQ,EAAE;AAAEtB,QAAAA,IAAI,EAAEmB,QAAQ;AAAEjB,QAAAA,IAAI,EAAEvB;OAAO;AACzCF,MAAAA;KACD;AACH,EAAA;AAEAuC,EAAAA,WAAWA,CAAClB,IAAa,EAAEpB,KAAe,EAAEC,KAAe,EAAE;AAC3D,IAAA,OACEkB,cAAc,CAACC,IAAI,CAACuB,QAAQ,EAAE3C,KAAK,CAAC,IACpCmB,cAAc,CAACC,IAAI,CAACwB,QAAQ,EAAE3C,KAAK,CAAC;AAExC,EAAA;AACF;;MC5Fa4C,UAAU,GAAG,IAAInB,SAAS,CACrC,CACE;AACEzB,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;AACEwC,EAAAA,UAAU,EAAErC,gBAAgB;EAC5BmC,eAAe,EAAGb,IAAI,IACpBR,oBAAoB,CAClBV,gBAAgB,CAACkB,IAAI,EAAE,GAAG,CAAC,EAC3B,IAAIsB,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAC7B,MACF;AACJ,CACF;;ACxEO,MAAMC,OAAO,CAAC;AAEnB,EAAA,OAAeC,WAAW,GAAG,IAAIC,GAAG,EAAsB;EAE1D,WAAWC,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,CAACF,WAAW,CAACK,GAAG,CAAC,SAAS,EAAER,UAAU,CAAC;AAC3C,IAAA,IAAI,CAACO,OAAO,CAACP,UAAU,CAAC;AAC1B;EAEA,OAAOS,GAAGA,CAACC,IAAY,EAA0B;AAC/C,IAAA,OAAO,IAAI,CAACP,WAAW,CAACM,GAAG,CAACC,IAAI,CAAC;AACnC,EAAA;AACF;;;ACIO,MAAMC,IAA2B,GAAIC,KAAK,IAAK;EACpD,MAAMC,QAAQ,GAAGA,MAAMxE,YAAY,CAACuE,KAAK,CAACE,OAAO,CAAC;EAElD,MAAMC,YAAY,GAAGA,MAAM;IACzB,MAAMpE,CAAC,GAAG,EAAc;AACxBA,IAAAA,CAAC,CAACuB,IAAI,CAAC,MAAM,CAAC;IACd,IAAI0C,KAAK,CAACI,QAAQ,EAAE;AAClBrE,MAAAA,CAAC,CAACuB,IAAI,CAAC,eAAe,CAAC;AACzB,IAAA;IACA,IAAI0C,KAAK,CAACK,QAAQ,EAAE;AAClBtE,MAAAA,CAAC,CAACuB,IAAI,CAAC,eAAe,CAAC;AACzB,IAAA;AACA,IAAA,OAAOvB,CAAC;EACV,CAAC;EAED,MAAMuE,aAAa,GAAGA,MAAM;IAC1B,IAAIN,KAAK,CAAC3D,MAAM,EAAE;MAChB,OAAO2D,KAAK,CAAC3D,MAAM;AACrB,IAAA,CAAC,MAAM;MACL,OAAOiD,OAAO,CAACG,IAAI;AACrB,IAAA;EACF,CAAC;AAED,EAAA,MAAMc,SAAS,GAAGC,kBAAU,CAAa,MAAM;AAC7C,IAAA,IAAIR,KAAK,CAACS,KAAK,IAAIvE,SAAS,EAAE;AAC5B,MAAA,OAAO,EAAE;IACX,CAAC,MAAM,IAAI,OAAO8D,KAAK,CAACS,KAAK,IAAI,QAAQ,EAAE;MACzC,OAAO;QAAEC,IAAI,EAAEV,KAAK,CAACS;OAAO;AAC9B,IAAA,CAAC,MAAM;MACL,OAAOT,KAAK,CAACS,KAAK;AACpB,IAAA;AACF,EAAA,CAAC,CAAC;AAEF,EAAA,MAAME,WAAW,GAAGH,kBAAU,CAAC,MAAM;AACnC,IAAA,MAAMjE,KAAK,GAAG4D,YAAY,EAAE;AAE5B,IAAA,MAAM9D,MAAM,GAAGiE,aAAa,EAAE;IAE9B,MAAMM,UAAU,GAAG,EAA4B;AAE/C,IAAA,MAAMC,aAAa,GAAGxE,MAAM,GACxBA,MAAM,CAACC,OAAO,CAACC,KAAK,EAAEyD,KAAK,CAACxD,KAAK,CAAC,GAClCN,SAAS;IACb0E,UAAU,CAACtD,IAAI,CAAC,IAAIuD,aAAa,IAAI,EAAE,CAAC,CAAC;IAEzC,IAAIb,KAAK,CAACc,QAAQ,EAAE;AAClBF,MAAAA,UAAU,CAACtD,IAAI,CAAC,4BAA4B,CAAC;AAC/C,IAAA;AAEA,IAAA,MAAMyD,aAAa,GAAGR,SAAS,EAAE;IACjC,IAAIQ,aAAa,CAACL,IAAI,EAAE;AACtBE,MAAAA,UAAU,CAACtD,IAAI,CAACyD,aAAa,CAACL,IAAI,CAAC;AACrC,IAAA;AACA,IAAA,IAAIV,KAAK,CAACI,QAAQ,IAAIW,aAAa,CAACX,QAAQ,EAAE;AAC5CQ,MAAAA,UAAU,CAACtD,IAAI,CAACyD,aAAa,CAACX,QAAQ,CAAC;AACzC,IAAA;AACA,IAAA,IAAIJ,KAAK,CAACK,QAAQ,IAAIU,aAAa,CAACV,QAAQ,EAAE;AAC5CO,MAAAA,UAAU,CAACtD,IAAI,CAACyD,aAAa,CAACV,QAAQ,CAAC;AACzC,IAAA;AAEAO,IAAAA,UAAU,CAACtD,IAAI,CAAC,UAAU,CAAC;AAC3B,IAAA,MAAMvB,CAAC,GAAGa,qBAAO,CAACgE,UAAU,CAAC;AAC7B,IAAA,OAAO7E,CAAC;AACV,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMiF,eAAe,GAAGR,kBAAU,CAAC,MAAM;IACvC,MAAMI,UAAU,GAAG,EAAc;IACjC,IAAIN,aAAa,EAAE,EAAE;AACnBM,MAAAA,UAAU,CAACtD,IAAI,CACb,GAAGgD,aAAa,EAAE,CAAEhE,OAAO,CAAC,eAAe,EAAE0D,KAAK,CAACxD,KAAK,CAC1D,CAAC;AACH,IAAA;AACA,IAAA,IAAI+D,SAAS,EAAE,CAACU,QAAQ,EAAE;MACxBL,UAAU,CAACtD,IAAI,CAACiD,SAAS,EAAE,CAACU,QAAS,CAAC;AACxC,IAAA;AACAL,IAAAA,UAAU,CAACtD,IAAI,CAAC,kBAAkB,CAAC;AACnC,IAAA,MAAMvB,CAAC,GAAGa,qBAAO,CAACgE,UAAU,CAAC;AAC7B,IAAA,OAAO7E,CAAC;AACV,EAAA,CAAC,CAAC;EAEF,SAASmF,WAAWA,GAAG;AACrB,IAAA,IAAIlB,KAAK,CAACc,QAAQ,IAAI5E,SAAS,EAAE;AAC/B8D,MAAAA,KAAK,CAACc,QAAQ,CAACb,QAAQ,EAAE,CAAC;AAC5B,IAAA;AACF,EAAA;AAEA,EAAA,OAAA,CAAA,MAAA;IAAA,IAAAkB,IAAA,GAAAC,QAAA,EAAA;IAAAD,IAAA,CAAAE,OAAA,GACgBH,WAAW;AAAAI,IAAAA,UAAA,CAAAH,IAAA,EAAA,MACtBlB,QAAQ,EAAE,CAACrE,KAAK,EAAA,IAAA,CAAA;AAAA0F,IAAAA,UAAA,CAAAH,IAAA,EAAAI,mBAAA,CAChBC,YAAI,EAAA;AAAA,MAAA,IAACC,IAAIA,GAAA;QAAA,OAAEzB,KAAK,CAACK,QAAQ;AAAA,MAAA,CAAA;AAAA,MAAA,IAAAqB,QAAAA,GAAA;QAAA,IAAAC,KAAA,GAAAP,QAAA,EAAA;AAAAO,QAAAA,KAAA,CAAAN,OAAA,GAGZO,CAAC,IAAK;AACd,UAAA,IAAI,CAAC5B,KAAK,CAAC6B,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,GAAIlC,KAAK,IAAK;EACjD,MAAMmC,UAAU,GAAGA,MAAMnC,KAAK,CAACoC,OAAO,IAAI,KAAK;EAC/C,MAAM9B,aAAa,GAAGA,MAAM;IAC1B,IAAIN,KAAK,CAAC3D,MAAM,EAAE;MAChB,OAAO2D,KAAK,CAAC3D,MAAM;AACrB,IAAA,CAAC,MAAM;MACL,OAAOiD,OAAO,CAACG,IAAI;AACrB,IAAA;EACF,CAAC;EAED,SAAS4C,YAAYA,GAAG;IACtB,MAAM9F,KAAK,GAAG,OAAO;AACrB,IAAA,MAAMD,OAAO,GAAGgE,aAAa,EAAE,CAAEhE,OAAO,CAACC,KAAK,EAAEyD,KAAK,CAACxD,KAAK,CAAC,IAAI,EAAE;IAClE,IAAIwD,KAAK,CAACS,KAAK,EAAE;AACfnE,MAAAA,OAAO,CAACgB,IAAI,CAAC0C,KAAK,CAACS,KAAK,CAAC;AAC3B,IAAA;IACA,OAAO7D,qBAAO,CAACN,OAAO,CAAC;AACzB,EAAA;EAEA,OAAAiF,mBAAA,CACGe,WAAO,EAAA;AAAA,IAAA,IAACC,SAASA,GAAA;MAAA,OAAEJ,UAAU,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,KAAA,OAAA,CAAA1B,GAAA;MAAA,OAAS4B,YAAY,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,IAAAX,QAAAA,GAAA;MAAA,OACpD1B,KAAK,CAAC0B,QAAQ;AAAA,IAAA;AAAA,GAAA,CAAA;AAGrB;;AC7BM,SAAUc,+BAA+BA,CAC7CC,SAAgC,EAAA;AAEhCA,EAAAA,SAAS,GAAG5G,KAAK,CAACC,OAAO,CAAC2G,SAAS,CAAC,GAAGA,SAAS,GAAG,CAACA,SAAS,CAAC;EAE9D,MAAMC,QAAQ,GAAkBC,CAAS,IAAI;IAC3C,IAAI5G,CAAC,GAAG4G,CAAC,CAACC,KAAK,CAACH,SAAS,CAAC,CAAC,CAAE,CAAC,CAACI,MAAM,CAAEC,CAAC,IAAKA,CAAC,IAAI,EAAE,IAAIA,CAAC,IAAI5G,SAAS,CAAC;IAEvE,KAAK,MAAM6G,QAAQ,IAAIN,SAAS,CAACO,KAAK,CAAC,CAAC,CAAC,EAAE;AACzC,MAAA,MAAMC,EAAE,GAAG,CAAC,GAAGlH,CAAC,CAAC;AAEjBA,MAAAA,CAAC,GAAG,EAAE;AAEN,MAAA,KAAK,MAAM4G,CAAC,IAAIM,EAAE,EAAE;AAClBlH,QAAAA,CAAC,CAACuB,IAAI,CACJ,GAAGX,oBAAoB,CAACgG,CAAC,EAAE;UACzBI,QAAQ;UACRF,MAAM,EAAGC,CAAC,IAAKA,CAAC,IAAI,EAAE,IAAIA,CAAC,IAAI5G;AAChC,SAAA,CAAC,CACH;AACD;AACF,MAAA;AACF,IAAA;AAEA,IAAA,OAAOH,CAAC;EACV,CAAC;AAED,EAAA,OAAO2G,QAAQ;AACjB;AAEM,SAAUQ,oBAAoBA,CAACR,QAAsB,EAAA;EACzD,MAAMS,WAAW,GAAqBzH,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,MAAMqH,CAAC,IAAI1H,GAAG,EAAE;QACnBK,CAAC,CAACuB,IAAI,CAAC,GAAG6F,WAAW,CAACC,CAAC,CAAC,CAAC;AAC3B,MAAA;AAEA,MAAA,OAAOrH,CAAC;AACV,IAAA,CAAC,MAAM;MACL,OAAO2G,QAAQ,CAAChH,GAAG,CAAC;AACtB,IAAA;EACF,CAAC;AAED,EAAA,OAAOyH,WAAW;AACpB;AAEO,MAAME,gBAAgB,GAAGb,+BAA+B,CAAC,KAAK,CAAC;AAE/D,MAAM/D,mBAAmB,GAAGyE,oBAAoB,CAACG,gBAAgB,CAAC;AAEnE,SAAU1G,oBAAoBA,CAClCgG,CAAS,EACTvE,OAAA,GAA2E,EAAE,EAAA;AAE7E,EAAA,MAAMkF,SAAS,GAAGlF,OAAO,CAAC2E,QAAQ,IAAI,KAAK;AAC3C,EAAA,MAAMF,MAAM,GAAGzE,OAAO,CAACyE,MAAM,KAAMF,CAAS,IAAKA,CAAC,CAACvF,MAAM,GAAG,CAAC,CAAC;AAC9D,EAAA,MAAMrB,CAAC,GAAG4G,CAAC,CAACC,KAAK,CAACU,SAAS,CAAC,CAACT,MAAM,CAACA,MAAM,CAAC;AAC3C,EAAA,OAAO9G,CAAC;AACV;;ACtDO,MAAMwH,SAA4B,GAAIvD,KAAK,IAAK;EACrD,MAAMwD,KAAK,GAAGA,MAAMxD,KAAK,CAACwD,KAAK,CAACC,GAAG,CAAChI,YAAY,CAAC;AAEjD,EAAA,MAAMiI,YAAY,GAAGlD,kBAAU,CAAuC,MAAM;IAC1E,MAAME,IAAI,GAAG,EAAc;IAC3B,MAAMiD,KAAK,GAAG,EAAc;AAC5B,IAAA,MAAMC,MAAM,GAAG5D,KAAK,CAACxD,KAAK;IAC1B,IAAIX,KAAK,CAACC,OAAO,CAAC8H,MAAM,CAAC,IAAI,OAAOA,MAAM,IAAI,QAAQ,EAAE;MACtDD,KAAK,CAACrG,IAAI,CAAC,GAAGmB,mBAAmB,CAACmF,MAAM,CAAC,CAAC;IAC5C,CAAC,MAAM,IAAI,OAAOA,MAAM,IAAI,QAAQ,IAAIA,MAAM,IAAI,IAAI,EAAE;MACtDD,KAAK,CAACrG,IAAI,CAAC,GAAGmB,mBAAmB,CAACmF,MAAM,CAACD,KAAK,CAAC,CAAC;MAChDjD,IAAI,CAACpD,IAAI,CAAC,GAAGmB,mBAAmB,CAACmF,MAAM,CAAClD,IAAI,CAAC,CAAC;AAChD,IAAA;IACA,OAAO;MAAEiD,KAAK;AAAEjD,MAAAA;KAAM;AACxB,EAAA,CAAC,CAAC;AAEF,EAAA,MAAMpE,OAAO,GAAGkE,kBAAU,CAAC,MAAM;IAC/B,IAAImD,KAAK,GAAG,EAAE;IACd,IAAIjD,IAAmB,GAAG,EAAE;AAC5B,IAAA,IAAI,OAAOV,KAAK,CAACS,KAAK,IAAI,QAAQ,EAAE;MAClCkD,KAAK,GAAG3D,KAAK,CAACS,KAAK;AACrB,IAAA,CAAC,MAAM,IAAIT,KAAK,CAACS,KAAK,IAAIvE,SAAS,EAAE;AACnC8D,MAAAA,KAAK,CAACS,KAAK;AACXkD,MAAAA,KAAK,GAAG3D,KAAK,CAACS,KAAK,CAACkD,KAAK,IAAI,EAAE;AAC/BjD,MAAAA,IAAI,GAAGV,KAAK,CAACS,KAAK,CAACC,IAAI,IAAI,EAAE;AAC/B,IAAA;IAEA,OAAO;MAAEiD,KAAK;AAAEjD,MAAAA;KAAM;AACxB,EAAA,CAAC,CAAC;EAEF,MAAM2B,YAAY,GAAGA,MAAM;IACzB,OAAOzF,qBAAO,CAAC,qBAAqB,EAAEN,OAAO,EAAE,CAACqH,KAAK,CAAC;EACxD,CAAC;EAED,MAAMhD,WAAW,GAAGA,MAAM;AACxB,IAAA,OAAOrE,OAAO,EAAE,CAACoE,IAAI;EACvB,CAAC;EAED,MAAMmD,YAAY,GAAInD,IAAa,IAAK;IACtC,IAAIV,KAAK,CAACc,QAAQ,EAAE;AAClBd,MAAAA,KAAK,CAACc,QAAQ,CAACJ,IAAI,CAAC;AACtB,IAAA;EACF,CAAC;EAED,MAAMoD,YAAY,GAAInI,EAAU,IAAK;AACnC,IAAA,IAAI,OAAOqE,KAAK,CAAC+D,SAAS,IAAI,QAAQ,EAAE;AACtC,MAAA,OAAOpI,EAAE,IAAIqE,KAAK,CAAC+D,SAAS;IAC9B,CAAC,MAAM,IAAI,OAAO/D,KAAK,CAAC+D,SAAS,IAAI,QAAQ,EAAE;AAC7C,MAAA,OAAO,CAAC,CAAC/D,KAAK,CAAC+D,SAAS,CAACpI,EAAE,CAAC;AAC9B,IAAA;AACA,IAAA,OAAO,KAAK;EACd,CAAC;EAED,OAAA4F,mBAAA,CACGW,KAAK,EAAA;AAAA,IAAA,KAAA,OAAA,CAAAzB,GAAA;MAAA,OAAQ4B,YAAY,EAAE;AAAA,IAAA,CAAA;AAAA,IAAA,IAAE7F,KAAKA,GAAA;AAAA,MAAA,OAAEkH,YAAY,EAAE,CAACC,KAAK;AAAA,IAAA,CAAA;AAAA,IAAA,IAAAjC,QAAAA,GAAA;MAAA,OAAAH,mBAAA,CACtDyC,WAAG,EAAA;AAAA,QAAA,IAACC,IAAIA,GAAA;UAAA,OAAET,KAAK,EAAE;AAAA,QAAA,CAAA;QAAA9B,QAAA,EACdhB,IAAI,IAAK;UACT,OAAAa,mBAAA,CACGxB,IAAI,EAAA;AACHG,YAAAA,OAAO,EAAEQ,IAAI;AAAA,YAAA,IACbN,QAAQA,GAAA;AAAA,cAAA,OAAE0D,YAAY,CAACpD,IAAI,CAAC/E,EAAE,CAAC;AAAA,YAAA,CAAA;AAC/BmF,YAAAA,QAAQ,EAAEA,MAAM+C,YAAY,CAACnD,IAAI,CAAC;AAAA,YAAA,KAAA,OAAA,CAAAD,GAAA;cAAA,OAC3BE,WAAW,EAAE;AAAA,YAAA,CAAA;AAAA,YAAA,IACpBnE,KAAKA,GAAA;AAAA,cAAA,OAAEkH,YAAY,EAAE,CAAChD,IAAI;AAAA,YAAA;AAAA,WAAA,CAAA;AAGhC,QAAA;AAAC,OAAA,CAAA;AAAA,IAAA;AAAA,GAAA,CAAA;AAIT;;;AClFO,MAAMwD,KAAyB,GAAIlE,KAAK,IAAI;AACjD,EAAA,OAAAoB,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
|
@@ -23,46 +23,47 @@ function buildIdLabel(arg) {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
class SVTStylerNormalizer {
|
|
27
|
-
constructor(styler) {
|
|
28
|
-
this.styler = styler;
|
|
29
|
-
}
|
|
30
|
-
classes(stags, vtags) {
|
|
31
|
-
const r = this.styler.classes(stags, vtags);
|
|
32
|
-
return r ?? [];
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
26
|
function twMergeNormalize(raw) {
|
|
36
27
|
return tokenizeFilterString$1(twMerge(...raw));
|
|
37
28
|
}
|
|
38
29
|
function mainTagNormalize(rawTags, defaultTag) {
|
|
39
|
-
|
|
40
|
-
const rtail = [];
|
|
41
|
-
let rtag = 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 = rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];
|
|
57
|
-
// console.log("MAIN TAGS NORM:", rawTags, r);
|
|
58
|
-
return r;
|
|
30
|
+
return exclusiveTagsNormalize(rawTags, tag => tag.length == 1 && tag.toUpperCase() == tag, defaultTag);
|
|
59
31
|
}
|
|
60
|
-
|
|
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) {
|
|
61
61
|
const rhead = [];
|
|
62
62
|
const rtail = [];
|
|
63
63
|
let rtag = undefined;
|
|
64
|
+
const tagSetFunc = typeof tagSet == "function" ? tagSet : tag => tagSet.has(tag);
|
|
64
65
|
for (const tag of rawTags) {
|
|
65
|
-
if (
|
|
66
|
+
if (tagSetFunc(tag)) {
|
|
66
67
|
rtag = tag;
|
|
67
68
|
rhead.push(...rtail);
|
|
68
69
|
rtail.length = 0;
|
|
@@ -80,40 +81,6 @@ function exlusiveTagNormalize(rawTags, tagSet, defaultTag) {
|
|
|
80
81
|
return r;
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
// export function normalizeTagListArgument(arg: TagListArgument): string[] {
|
|
84
|
-
// if (typeof arg == "string") {
|
|
85
|
-
// return splitCleanString(arg);
|
|
86
|
-
// } else if (Array.isArray(arg)) {
|
|
87
|
-
// const r = [];
|
|
88
|
-
// for (const a of arg) {
|
|
89
|
-
// r.push(...normalizeTagListArgument(a));
|
|
90
|
-
// }
|
|
91
|
-
// return r;
|
|
92
|
-
// }
|
|
93
|
-
// return [];
|
|
94
|
-
// }
|
|
95
|
-
|
|
96
|
-
function tagRuleMatches(rule, candidateTags) {
|
|
97
|
-
if (rule.mode == "any") {
|
|
98
|
-
return true;
|
|
99
|
-
} else if (rule.mode == "or") {
|
|
100
|
-
for (const ctag of candidateTags) {
|
|
101
|
-
if (rule.tags.indexOf(ctag) >= 0) {
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return false;
|
|
106
|
-
} else if (rule.mode == "and") {
|
|
107
|
-
for (const rtag of rule.tags) {
|
|
108
|
-
if (candidateTags.indexOf(rtag) < 0) {
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
84
|
class SVTStyler {
|
|
118
85
|
_rules = [];
|
|
119
86
|
constructor(rules, options = {}) {
|
|
@@ -180,6 +147,26 @@ class SVTStyler {
|
|
|
180
147
|
return tagRuleMatches(rule.stagRule, stags) && tagRuleMatches(rule.vtagRule, vtags);
|
|
181
148
|
}
|
|
182
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
|
+
}
|
|
183
170
|
|
|
184
171
|
const baseStyler = new SVTStyler([{
|
|
185
172
|
vtags: "A",
|
|
@@ -225,7 +212,7 @@ const baseStyler = new SVTStyler([{
|
|
|
225
212
|
classes: "bg-slate-300/85 cursor-not-allowed"
|
|
226
213
|
}], {
|
|
227
214
|
normalizer: twMergeNormalize,
|
|
228
|
-
vtagsNormaliser: tags =>
|
|
215
|
+
vtagsNormaliser: tags => exclusiveTagsNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE")
|
|
229
216
|
});
|
|
230
217
|
|
|
231
218
|
class Stylers {
|
|
@@ -504,5 +491,5 @@ const SolTw = props => {
|
|
|
504
491
|
return _tmpl$();
|
|
505
492
|
};
|
|
506
493
|
|
|
507
|
-
export { Block, Item, ItemGroup, SVTStyler,
|
|
494
|
+
export { Block, Item, ItemGroup, SVTStyler, SolTw, Stylers, baseStyler, buildIdLabel, exclusiveTagsNormalize, mainTagNormalize, tagRuleMatches, twMergeNormalize };
|
|
508
495
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/items/IdLabel.ts","../../src/stylers/stylersUtils.ts","../../src/stylers/tagRules.ts","../../src/stylers/SVTStyler.ts","../../src/stylers/base.styler.ts","../../src/stylers/Stylers.ts","../../src/items/Item.tsx","../../src/Block.tsx","../../../common/dist/strings/tokenize.js","../../src/items/ItemGroup.tsx","../../src/soltw.tsx"],"sourcesContent":["export interface IdLabel {\n id: string;\n label: string;\n [x: string | symbol]: unknown;\n}\n\nexport type IdLabelDef = {\n id: string;\n label?: string;\n [x: string | symbol]: unknown;\n};\n\nexport type IdLabelArg = IdLabelDef | [string, string] | string;\n\nexport function buildIdLabel(arg: IdLabelArg): IdLabel {\n if (typeof arg == \"string\") {\n return { id: arg, label: arg };\n } else if (Array.isArray(arg)) {\n return { id: arg[0], label: arg[1] };\n } else {\n const r = Object.assign({}, arg);\n if (r.label == undefined) {\n r[\"label\"] = r.id;\n }\n return r as IdLabel;\n }\n}\n\n","import { twMerge } from \"tailwind-merge\";\nimport type { ISVTStyler, TagListArgument } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\nexport class SVTStylerNormalizer implements ISVTStyler {\n constructor(private readonly styler: ISVTStyler) {}\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = this.styler.classes(stags, vtags);\n return r ?? [];\n }\n}\n\nexport function twMergeNormalize(raw: string[]): string[] {\n return tokenizeFilterString(twMerge(...raw));\n}\n\nexport function mainTagNormalize(\n rawTags: string[],\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tag.length == 1 && tag.toUpperCase() == tag) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n // console.log(\"MAIN TAGS NORM:\", rawTags, r);\n return r;\n}\n\nexport function exlusiveTagNormalize(\n rawTags: string[],\n tagSet: Set<String>,\n defaultTag?: string\n): string[] {\n const rhead = [] as string[];\n const rtail = [] as string[];\n let rtag: string | undefined = undefined;\n for (const tag of rawTags) {\n if (tagSet.has(tag)) {\n rtag = tag;\n rhead.push(...rtail);\n rtail.length = 0;\n } else {\n if (rtag == undefined) {\n rhead.push(tag);\n } else {\n rtail.push(tag);\n }\n }\n }\n rtag = rtag ?? defaultTag;\n const r =\n rtag == undefined ? [...rhead, ...rtail] : [...rhead, rtag, ...rtail];\n //console.log(\"EXCLU TAGS NORM:\", rawTags, r);\n return r;\n}\n","import type { TagListArgument, TagRule } from \"./types.js\";\nimport { tokenizeFilterString } from \"@mrts/common\";\n\n\n\n// export function normalizeTagListArgument(arg: TagListArgument): string[] {\n// if (typeof arg == \"string\") {\n// return splitCleanString(arg);\n// } else if (Array.isArray(arg)) {\n// const r = [];\n// for (const a of arg) {\n// r.push(...normalizeTagListArgument(a));\n// }\n// return r;\n// }\n// return [];\n// }\n\n\nexport function tagRuleMatches(\n rule:TagRule,\n candidateTags: string[]\n) {\n if (rule.mode == \"any\") {\n return true;\n } else if (rule.mode == \"or\") {\n for (const ctag of candidateTags) {\n if (rule.tags.indexOf(ctag) >= 0) {\n return true;\n }\n }\n return false;\n } else if (rule.mode == \"and\") {\n for (const rtag of rule.tags) {\n if (candidateTags.indexOf(rtag) < 0) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n","import { argTokenizeBySpaces, deduplicate } from \"@mrts/common\";\nimport { tagRuleMatches } from \"./tagRules.js\";\nimport type {\n ISVTStyler,\n TagListArgument,\n TagRule,\n TagRuleMode,\n} from \"./types.js\";\n\nexport type SVTRule = {\n stagRule: TagRule;\n vtagRule: TagRule;\n classes: string[];\n};\n\nexport type SVTRuleDef = {\n stagMode?: TagRuleMode;\n vtagMode?: TagRuleMode;\n stags?: TagListArgument;\n vtags?: TagListArgument;\n classes?: TagListArgument;\n};\n\ntype SVTStylerOptions = {\n normalizer?: (rawClasses: string[]) => string[];\n stagsNormaliser?: (rawTags: string[]) => string[];\n vtagsNormaliser?: (rawTags: string[]) => string[];\n};\n\nexport class SVTStyler implements ISVTStyler {\n readonly _rules: SVTRule[] = [];\n readonly options: SVTStylerOptions;\n\n constructor(rules: SVTRuleDef[], options: SVTStylerOptions = {}) {\n for (const r of rules) {\n this._rules.push(SVTStyler.normalizeRule(r));\n }\n this.options = { ...options };\n }\n\n with(rules: SVTRuleDef[], options: SVTStylerOptions = {}): SVTStyler {\n const addedRules: SVTRule[] = [];\n for (const r of rules) {\n addedRules.push(SVTStyler.normalizeRule(r));\n }\n\n const styler = new SVTStyler([], { ...this.options });\n styler._rules.push(...this._rules, ...addedRules);\n return styler;\n }\n\n classes(stags: TagListArgument, vtags: TagListArgument): string[] {\n const r = [] as string[];\n\n let stagsNormalized = argTokenizeBySpaces(stags);\n let vtagsNormalized = argTokenizeBySpaces(vtags);\n\n if (this.options.stagsNormaliser) {\n stagsNormalized = this.options.stagsNormaliser(stagsNormalized);\n }\n if (this.options.vtagsNormaliser) {\n vtagsNormalized = this.options.vtagsNormaliser(vtagsNormalized);\n }\n\n for (const rule of this._rules) {\n if (this.ruleMatches(rule, stagsNormalized, vtagsNormalized)) {\n r.push(...rule.classes);\n }\n }\n\n return this.options.normalizer ? this.options.normalizer(r) : r;\n }\n\n static normalizeRule(rule: SVTRuleDef): SVTRule {\n let stagMode: TagRuleMode = rule.stagMode ?? \"or\";\n let vtagMode: TagRuleMode = rule.vtagMode ?? \"or\";\n let stags: string[] = deduplicate(argTokenizeBySpaces(rule.stags));\n let vtags: string[] = deduplicate(argTokenizeBySpaces(rule.vtags));\n let classes: string[] = deduplicate(argTokenizeBySpaces(rule.classes));\n\n if (rule.stags == undefined && rule.stagMode == undefined) {\n stagMode = \"any\";\n }\n if (rule.vtags == undefined && rule.vtagMode == undefined) {\n vtagMode = \"any\";\n }\n\n return {\n stagRule: { mode: stagMode, tags: stags },\n vtagRule: { mode: vtagMode, tags: vtags },\n classes,\n };\n }\n\n ruleMatches(rule: SVTRule, stags: string[], vtags: string[]) {\n return (\n tagRuleMatches(rule.stagRule, stags) &&\n tagRuleMatches(rule.vtagRule, vtags)\n );\n }\n}\n","import {\n mainTagNormalize,\n twMergeNormalize,\n exlusiveTagNormalize,\n} from \"./stylersUtils.js\";\nimport { SVTStyler } from \"./SVTStyler.js\";\n\n\nexport const baseStyler = new SVTStyler(\n [\n {\n vtags: \"A\",\n classes: \"bg-slate-100 text-slate-800\",\n },\n {\n vtags: \"B\",\n classes: \"bg-slate-800 text-slate-100\",\n },\n {\n vtags: \"C\",\n classes: \"bg-stone-300 text-orange-950\",\n },\n { \n vtags: \"D\",\n classes: \"bg-orange-900 text-stone-100\",\n },\n {\n vtags: \"LG\",\n classes: \"text-xl p-2\",\n },\n {\n vtags: \"BASE\",\n classes: \"text-base p-1\",\n },\n {\n vtags: \"SM\",\n classes: \"text-sm p-0.5\",\n },\n {\n vtags: \"LG\",\n stags: \"item\",\n classes: \"text-xl px-2 py-1\",\n },\n {\n vtags: \"BASE\",\n stags: \"item\",\n classes: \"text-base px-1 py-0.5\",\n },\n {\n vtags: \"SM\",\n stags: \"item\",\n classes: \"text-sm p-0.5\",\n },\n {\n stags: \"item:selected\",\n classes: \"underline font-bold\",\n },\n {\n stags: \"item:disabled\",\n classes: \"blur-[1px]\",\n },\n {\n stags: \"item/disabler\",\n classes: \"bg-slate-300/85 cursor-not-allowed\",\n },\n ],\n {\n normalizer: twMergeNormalize,\n vtagsNormaliser: (tags) =>\n exlusiveTagNormalize(\n mainTagNormalize(tags, \"A\"),\n new Set([\"SM\", \"BASE\", \"LG\"]),\n \"BASE\"\n ),\n }\n);\n","import type { ISVTStyler } from \"./types.js\";\nimport {baseStyler} from \"./base.styler.js\";\n\nexport class Stylers {\n private static _base: ISVTStyler | undefined;\n private static _stylersMap = new Map<string, ISVTStyler>();\n\n static get base(): ISVTStyler | undefined {\n return this._base;\n }\n static setBase(base: ISVTStyler | undefined) {\n return (this._base = base);\n }\n static {\n this._stylersMap.set(\"default\", baseStyler)\n this.setBase(baseStyler);\n }\n\n static get(name: string): ISVTStyler | undefined {\n return this._stylersMap.get(name);\n }\n}\n","import { type Component, createMemo, Show } from \"solid-js\";\nimport { twMerge } from \"tailwind-merge\";\nimport { type ISVTStyler, type TagListArgument } from \"../stylers/index.js\";\nimport { Stylers } from \"../stylers/Stylers.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\n\nexport type TItemClass = {\n item?: string;\n selected?: string;\n disabled?: string;\n disabler?: string;\n};\nexport type TItemClassArg = TItemClass|string;\n\nexport type TItemProps = {\n idLabel: IdLabelArg;\n callback?: (item: IdLabel) => void;\n selected?: boolean;\n disabled?: boolean;\n clickableWhendisabled?: boolean;\n styler?: ISVTStyler;\n vtags?: TagListArgument;\n class?: TItemClassArg;\n};\n\nexport const Item: Component<TItemProps> = (props) => {\n const itemData = () => buildIdLabel(props.idLabel);\n\n const currentSTags = () => {\n const r = [] as string[];\n r.push(\"item\");\n if (props.selected) {\n r.push(\"item:selected\");\n }\n if (props.disabled) {\n r.push(\"item:disabled\");\n }\n return r;\n };\n\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n const classProp = createMemo<TItemClass>(() => {\n if (props.class == undefined) {\n return {};\n } else if (typeof props.class == \"string\") {\n return { item: props.class };\n } else {\n return props.class;\n }\n });\n\n const itemClasses = createMemo(() => {\n const stags = currentSTags();\n\n const styler = currentStyler();\n\n const rawClasses = [] as (string | undefined)[];\n\n const stylerClasses = styler\n ? styler.classes(stags, props.vtags)\n : undefined;\n rawClasses.push(...(stylerClasses ?? []));\n\n if (props.callback) {\n rawClasses.push(\"select-none cursor-pointer\");\n }\n\n const customClasses = classProp();\n if (customClasses.item) {\n rawClasses.push(customClasses.item);\n }\n if (props.selected && customClasses.selected) {\n rawClasses.push(customClasses.selected);\n }\n if (props.disabled && customClasses.disabled) {\n rawClasses.push(customClasses.disabled);\n }\n\n rawClasses.push(\"relative\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n const disablerClasses = createMemo(() => {\n const rawClasses = [] as string[];\n if (currentStyler()) {\n rawClasses.push(\n ...currentStyler()!.classes(\"item/disabler\", props.vtags)!\n );\n }\n if (classProp().disabler) {\n rawClasses.push(classProp().disabler!);\n }\n rawClasses.push(\"absolute inset-0\");\n const r = twMerge(rawClasses);\n return r;\n });\n\n function handleClick() {\n if (props.callback != undefined) {\n props.callback(itemData());\n }\n }\n\n return (\n <div onClick={handleClick} class={itemClasses()}>\n {itemData().label}\n <Show when={props.disabled}>\n <div\n class={disablerClasses()}\n onClick={(e) => {\n if (!props.clickableWhendisabled) {\n e.stopPropagation();\n }\n }}\n ></div>\n </Show>\n </div>\n );\n};\n","import type { Component, ParentProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport { type ISVTStyler, Stylers, type TagListArgument } from \"./stylers/index.js\";\nimport { twMerge } from \"tailwind-merge\";\n\ntype TProps = ParentProps & {\n vtags?: TagListArgument;\n styler?: ISVTStyler;\n class?: string;\n element?: string;\n};\n\n\nexport const Block: Component<TProps> = (props) => {\n const elementTag = () => props.element ?? \"div\";\n const currentStyler = () => {\n if (props.styler) {\n return props.styler;\n } else {\n return Stylers.base;\n }\n };\n\n function blockClasses() {\n const stags = \"block\";\n const classes = currentStyler()!.classes(stags, props.vtags) ?? [];\n if (props.class) {\n classes.push(props.class);\n }\n return twMerge(classes);\n }\n\n return (\n <Dynamic component={elementTag()} class={blockClasses()}>\n {props.children}\n </Dynamic>\n );\n};\n","export function buildTokenizeFuncUsingSplitters(splitters) {\n splitters = Array.isArray(splitters) ? splitters : [splitters];\n const tokenize = (s) => {\n let r = s.split(splitters[0]).filter((t) => t != \"\" && t != undefined);\n for (const splitter of splitters.slice(1)) {\n const r0 = [...r];\n r = [];\n for (const s of r0) {\n r.push(...tokenizeFilterString(s, {\n splitter,\n filter: (t) => t != \"\" && t != undefined,\n }));\n //r.push(...s.split(splitter).filter((t) => t != \"\" && t != undefined));\n }\n }\n return r;\n };\n return tokenize;\n}\nexport function buildArgTokenizeFunc(tokenize) {\n const argTokenize = (arg) => {\n if (arg == undefined) {\n return [];\n }\n else if (Array.isArray(arg)) {\n const r = [];\n for (const a of arg) {\n r.push(...argTokenize(a));\n }\n return r;\n }\n else {\n return tokenize(arg);\n }\n };\n return argTokenize;\n}\nexport const tokenizeBySpaces = buildTokenizeFuncUsingSplitters(/\\s+/);\nexport const argTokenizeBySpaces = buildArgTokenizeFunc(tokenizeBySpaces);\nexport function tokenizeFilterString(s, options = {}) {\n const separator = options.splitter ?? /\\s+/;\n const filter = options.filter ?? ((s) => s.length > 0);\n const r = s.split(separator).filter(filter);\n return r;\n}\nexport function deduplicate(items) {\n const r = [];\n const itemSet = new Set();\n for (const item of items) {\n if (!itemSet.has(item)) {\n r.push(item);\n itemSet.add(item);\n }\n }\n return r;\n}\n//# sourceMappingURL=tokenize.js.map","import { twMerge } from \"tailwind-merge\";\nimport { Block } from \"../Block.jsx\";\nimport { Item, type TItemClassArg } from \"./Item.js\";\nimport { buildIdLabel, type IdLabel, type IdLabelArg } from \"./IdLabel.js\";\nimport { type Component, createMemo, For } from \"solid-js\";\nimport { type TagListArgument } from \"../stylers/types.js\";\nimport { argTokenizeBySpaces } from \"../../../common/dist/strings/tokenize.js\";\n\ntype TProps = {\n items: IdLabelArg[];\n callback?: (item: IdLabel) => void;\n class?: string | { group?: string; item?: TItemClassArg };\n selection?: string | { [id: string]: boolean };\n vtags?: TagListArgument | { group?: TagListArgument; item?: TagListArgument };\n};\n\nexport const ItemGroup: Component<TProps> = (props) => {\n const items = () => props.items.map(buildIdLabel);\n\n const currentVTags = createMemo<{ group: string[]; item?: string[] }>(() => {\n const item = [] as string[];\n const group = [] as string[];\n const _vtags = props.vtags;\n if (Array.isArray(_vtags) || typeof _vtags == \"string\") {\n group.push(...argTokenizeBySpaces(_vtags));\n } else if (typeof _vtags == \"object\" && _vtags != null) {\n group.push(...argTokenizeBySpaces(_vtags.group));\n item.push(...argTokenizeBySpaces(_vtags.item));\n }\n return { group, item };\n });\n\n const classes = createMemo(() => {\n let group = \"\";\n let item: TItemClassArg = \"\";\n if (typeof props.class == \"string\") {\n group = props.class;\n } else if (props.class != undefined) {\n props.class;\n group = props.class.group ?? \"\";\n item = props.class.item ?? \"\";\n }\n\n return { group, item };\n });\n\n const blockClasses = () => {\n return twMerge(\"flex flex-row gap-1\", classes().group);\n };\n\n const itemClasses = () => {\n return classes().item;\n };\n\n const callCallback = (item: IdLabel) => {\n if (props.callback) {\n props.callback(item);\n }\n };\n\n const itemSelected = (id: string) => {\n if (typeof props.selection == \"string\") {\n return id == props.selection;\n } else if (typeof props.selection == \"object\") {\n return !!props.selection[id];\n }\n return false;\n };\n\n return (\n <Block class={blockClasses()} vtags={currentVTags().group}>\n <For each={items()}>\n {(item) => {\n return (\n <Item\n idLabel={item}\n selected={itemSelected(item.id)}\n callback={() => callCallback(item)}\n class={itemClasses()}\n vtags={currentVTags().item}\n ></Item>\n );\n }}\n </For>\n </Block>\n );\n};\n","import type { Component } from \"solid-js\";\n\ntype TProps = {}\n\nexport const SolTw : Component<TProps> = (props) =>{\n return <div class=\"bg-red-600\">- - S O L T W - -</div>\n}\n\n\n"],"names":["buildIdLabel","arg","id","label","Array","isArray","r","Object","assign","undefined","SVTStylerNormalizer","constructor","styler","classes","stags","vtags","twMergeNormalize","raw","tokenizeFilterString","twMerge","mainTagNormalize","rawTags","defaultTag","rhead","rtail","rtag","tag","length","toUpperCase","push","exlusiveTagNormalize","tagSet","has","tagRuleMatches","rule","candidateTags","mode","ctag","tags","indexOf","SVTStyler","_rules","rules","options","normalizeRule","with","addedRules","stagsNormalized","argTokenizeBySpaces","vtagsNormalized","stagsNormaliser","vtagsNormaliser","ruleMatches","normalizer","stagMode","vtagMode","deduplicate","stagRule","vtagRule","baseStyler","Set","Stylers","_stylersMap","Map","base","_base","setBase","set","get","name","Item","props","itemData","idLabel","currentSTags","selected","disabled","currentStyler","classProp","createMemo","class","item","itemClasses","rawClasses","stylerClasses","callback","customClasses","disablerClasses","disabler","handleClick","_el$","_tmpl$","$$click","_$insert","_$createComponent","Show","when","children","_el$2","e","clickableWhendisabled","stopPropagation","_$effect","_$className","_$delegateEvents","Block","elementTag","element","blockClasses","Dynamic","component","buildTokenizeFuncUsingSplitters","splitters","tokenize","s","split","filter","t","splitter","slice","r0","buildArgTokenizeFunc","argTokenize","a","tokenizeBySpaces","separator","ItemGroup","items","map","currentVTags","group","_vtags","callCallback","itemSelected","selection","For","each","SolTw"],"mappings":"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"}
|
|
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,
|
|
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) =>
|
|
61
|
+
vtagsNormaliser: (tags) => exclusiveTagsNormalize(mainTagNormalize(tags, "A"), new Set(["SM", "BASE", "LG"]), "BASE"),
|
|
62
62
|
});
|
|
@@ -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 {};
|
|
@@ -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.
|
|
4
|
+
"version": "0.3.7",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
7
7
|
"module": "dist/esm/index.js",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"publishConfig": {
|
|
36
36
|
"access": "public"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "a037f361d0a65e897820f7c111a40bf3901ee32a"
|
|
39
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[];
|