@opudoc/opicon-shared 0.1.4 → 0.1.5

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/README.md CHANGED
@@ -3,8 +3,11 @@
3
3
  <br /><br />
4
4
  <a href="https://www.npmjs.com/package/@opudoc/opicon-shared"><img src="https://img.shields.io/npm/v/%40opudoc%2Fopicon-shared?color=blue" alt="npm" /></a>
5
5
  <img src="https://img.shields.io/npm/dt/%40opudoc%2Fopicon-shared" alt="NPM Downloads" />
6
+ <a href="https://opicon.net"><img src="https://img.shields.io/badge/website-opicon.net-9E9CFC" alt="website" /></a>
6
7
  <a href="https://github.com/OpuDoc/opicon/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-ISC-green" alt="License" /></a>
7
8
  <br /><br />
9
+ <a href="https://opicon.net">Website</a>
10
+ ·
8
11
  <a href="https://github.com/OpuDoc/opicon">About</a>
9
12
  ·
10
13
  <a href="https://github.com/OpuDoc/opicon/tree/main/icons">Icons</a>
@@ -1,11 +1,27 @@
1
1
  'use strict';
2
2
 
3
+ const isBoldIconName = (iconName) => iconName.includes("-bold-");
4
+
5
+ const pathHasFill = (tag, attrs) => tag === "path" && Boolean(attrs.fill) && attrs.fill !== "none";
6
+ const nodeUsesFill = (node) => {
7
+ if (node.length === 3) {
8
+ const [tag2, attrs2, children] = node;
9
+ if (pathHasFill(tag2, attrs2)) return true;
10
+ return children.some(nodeUsesFill);
11
+ }
12
+ const [tag, attrs] = node;
13
+ return pathHasFill(tag, attrs);
14
+ };
15
+ const iconNodeUsesFill = (iconNode) => iconNode.some(nodeUsesFill);
16
+
3
17
  const toPascalCase = (str) => str.split(/[-_/]/).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
4
18
  const toKebabCase = (str) => str.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
5
19
  const mergeClasses = (...classes) => classes.filter(Boolean).join(" ");
6
20
  const hasA11yProp = (props) => "aria-label" in props || "aria-labelledby" in props || "title" in props;
7
21
 
8
22
  exports.hasA11yProp = hasA11yProp;
23
+ exports.iconNodeUsesFill = iconNodeUsesFill;
24
+ exports.isBoldIconName = isBoldIconName;
9
25
  exports.mergeClasses = mergeClasses;
10
26
  exports.toKebabCase = toKebabCase;
11
27
  exports.toPascalCase = toPascalCase;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sources":["../../src/index.ts"],"sourcesContent":["export const toPascalCase = (str: string): string =>\r\n str\r\n .split(/[-_/]/)\r\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\r\n .join('');\r\n\r\nexport const toKebabCase = (str: string): string =>\r\n str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\r\n\r\nexport const mergeClasses = (...classes: (string | undefined | false)[]): string =>\r\n classes.filter(Boolean).join(' ');\r\n\r\nexport const hasA11yProp = (props: Record<string, unknown>): boolean =>\r\n 'aria-label' in props || 'aria-labelledby' in props || 'title' in props;\r\n"],"names":[],"mappings":";;AAAO,MAAM,YAAA,GAAe,CAAC,GAAA,KAC3B,GAAA,CACG,MAAM,OAAO,CAAA,CACb,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,EAAE;AAEL,MAAM,WAAA,GAAc,CAAC,GAAA,KAC1B,GAAA,CAAI,QAAQ,oBAAA,EAAsB,OAAO,EAAE,WAAA;AAEtC,MAAM,YAAA,GAAe,IAAI,OAAA,KAC9B,OAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAE3B,MAAM,cAAc,CAAC,KAAA,KAC1B,gBAAgB,KAAA,IAAS,iBAAA,IAAqB,SAAS,OAAA,IAAW;;;;;;;"}
1
+ {"version":3,"file":"shared.js","sources":["../../src/isBoldIconName.ts","../../src/iconNodeUsesFill.ts","../../src/index.ts"],"sourcesContent":["/** Icon ids use `{category}-bold-{name}` (e.g. `settings-bold-menu`). */\nexport const isBoldIconName = (iconName: string): boolean => iconName.includes('-bold-');\n","type IconNodeEntry = [string, Record<string, string | number>, ...unknown[]];\n\nconst pathHasFill = (tag: string, attrs: Record<string, string | number>): boolean =>\n tag === 'path' && Boolean(attrs.fill) && attrs.fill !== 'none';\n\nconst nodeUsesFill = (node: IconNodeEntry): boolean => {\n if (node.length === 3) {\n const [tag, attrs, children] = node;\n if (pathHasFill(tag, attrs)) return true;\n return (children as IconNodeEntry[]).some(nodeUsesFill);\n }\n const [tag, attrs] = node;\n return pathHasFill(tag, attrs);\n};\n\nexport const iconNodeUsesFill = (iconNode: IconNodeEntry[]): boolean => iconNode.some(nodeUsesFill);\n","export const toPascalCase = (str: string): string =>\n str\n .split(/[-_/]/)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('');\n\nexport const toKebabCase = (str: string): string =>\n str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\nexport const mergeClasses = (...classes: (string | undefined | false)[]): string =>\n classes.filter(Boolean).join(' ');\n\nexport const hasA11yProp = (props: Record<string, unknown>): boolean =>\n 'aria-label' in props || 'aria-labelledby' in props || 'title' in props;\n\nexport { isBoldIconName } from './isBoldIconName';\nexport { iconNodeUsesFill } from './iconNodeUsesFill';\n"],"names":["tag","attrs"],"mappings":";;AACO,MAAM,cAAA,GAAiB,CAAC,QAAA,KAA8B,QAAA,CAAS,SAAS,QAAQ;;ACCvF,MAAM,WAAA,GAAc,CAAC,GAAA,EAAa,KAAA,KAChC,GAAA,KAAQ,MAAA,IAAU,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,IAAK,KAAA,CAAM,IAAA,KAAS,MAAA;AAE1D,MAAM,YAAA,GAAe,CAAC,IAAA,KAAiC;AACrD,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,MAAM,CAACA,IAAAA,EAAKC,MAAAA,EAAO,QAAQ,CAAA,GAAI,IAAA;AAC/B,IAAA,IAAI,WAAA,CAAYD,IAAAA,EAAKC,MAAK,CAAA,EAAG,OAAO,IAAA;AACpC,IAAA,OAAQ,QAAA,CAA6B,KAAK,YAAY,CAAA;AAAA,EACxD;AACA,EAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,IAAA;AACrB,EAAA,OAAO,WAAA,CAAY,KAAK,KAAK,CAAA;AAC/B,CAAA;AAEO,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAuC,QAAA,CAAS,KAAK,YAAY;;ACf3F,MAAM,YAAA,GAAe,CAAC,GAAA,KAC3B,GAAA,CACG,MAAM,OAAO,CAAA,CACb,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,EAAE;AAEL,MAAM,WAAA,GAAc,CAAC,GAAA,KAC1B,GAAA,CAAI,QAAQ,oBAAA,EAAsB,OAAO,EAAE,WAAA;AAEtC,MAAM,YAAA,GAAe,IAAI,OAAA,KAC9B,OAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAE3B,MAAM,cAAc,CAAC,KAAA,KAC1B,gBAAgB,KAAA,IAAS,iBAAA,IAAqB,SAAS,OAAA,IAAW;;;;;;;;;"}
@@ -0,0 +1,14 @@
1
+ const pathHasFill = (tag, attrs) => tag === "path" && Boolean(attrs.fill) && attrs.fill !== "none";
2
+ const nodeUsesFill = (node) => {
3
+ if (node.length === 3) {
4
+ const [tag2, attrs2, children] = node;
5
+ if (pathHasFill(tag2, attrs2)) return true;
6
+ return children.some(nodeUsesFill);
7
+ }
8
+ const [tag, attrs] = node;
9
+ return pathHasFill(tag, attrs);
10
+ };
11
+ const iconNodeUsesFill = (iconNode) => iconNode.some(nodeUsesFill);
12
+
13
+ export { iconNodeUsesFill };
14
+ //# sourceMappingURL=iconNodeUsesFill.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iconNodeUsesFill.mjs","sources":["../../src/iconNodeUsesFill.ts"],"sourcesContent":["type IconNodeEntry = [string, Record<string, string | number>, ...unknown[]];\n\nconst pathHasFill = (tag: string, attrs: Record<string, string | number>): boolean =>\n tag === 'path' && Boolean(attrs.fill) && attrs.fill !== 'none';\n\nconst nodeUsesFill = (node: IconNodeEntry): boolean => {\n if (node.length === 3) {\n const [tag, attrs, children] = node;\n if (pathHasFill(tag, attrs)) return true;\n return (children as IconNodeEntry[]).some(nodeUsesFill);\n }\n const [tag, attrs] = node;\n return pathHasFill(tag, attrs);\n};\n\nexport const iconNodeUsesFill = (iconNode: IconNodeEntry[]): boolean => iconNode.some(nodeUsesFill);\n"],"names":["tag","attrs"],"mappings":"AAEA,MAAM,WAAA,GAAc,CAAC,GAAA,EAAa,KAAA,KAChC,GAAA,KAAQ,MAAA,IAAU,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,IAAK,KAAA,CAAM,IAAA,KAAS,MAAA;AAE1D,MAAM,YAAA,GAAe,CAAC,IAAA,KAAiC;AACrD,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,MAAM,CAACA,IAAAA,EAAKC,MAAAA,EAAO,QAAQ,CAAA,GAAI,IAAA;AAC/B,IAAA,IAAI,WAAA,CAAYD,IAAAA,EAAKC,MAAK,CAAA,EAAG,OAAO,IAAA;AACpC,IAAA,OAAQ,QAAA,CAA6B,KAAK,YAAY,CAAA;AAAA,EACxD;AACA,EAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GAAI,IAAA;AACrB,EAAA,OAAO,WAAA,CAAY,KAAK,KAAK,CAAA;AAC/B,CAAA;AAEO,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAAuC,QAAA,CAAS,KAAK,YAAY;;;;"}
@@ -1,3 +1,6 @@
1
+ export { isBoldIconName } from './isBoldIconName.mjs';
2
+ export { iconNodeUsesFill } from './iconNodeUsesFill.mjs';
3
+
1
4
  const toPascalCase = (str) => str.split(/[-_/]/).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
2
5
  const toKebabCase = (str) => str.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
3
6
  const mergeClasses = (...classes) => classes.filter(Boolean).join(" ");
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["export const toPascalCase = (str: string): string =>\r\n str\r\n .split(/[-_/]/)\r\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\r\n .join('');\r\n\r\nexport const toKebabCase = (str: string): string =>\r\n str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\r\n\r\nexport const mergeClasses = (...classes: (string | undefined | false)[]): string =>\r\n classes.filter(Boolean).join(' ');\r\n\r\nexport const hasA11yProp = (props: Record<string, unknown>): boolean =>\r\n 'aria-label' in props || 'aria-labelledby' in props || 'title' in props;\r\n"],"names":[],"mappings":"AAAO,MAAM,YAAA,GAAe,CAAC,GAAA,KAC3B,GAAA,CACG,MAAM,OAAO,CAAA,CACb,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,EAAE;AAEL,MAAM,WAAA,GAAc,CAAC,GAAA,KAC1B,GAAA,CAAI,QAAQ,oBAAA,EAAsB,OAAO,EAAE,WAAA;AAEtC,MAAM,YAAA,GAAe,IAAI,OAAA,KAC9B,OAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAE3B,MAAM,cAAc,CAAC,KAAA,KAC1B,gBAAgB,KAAA,IAAS,iBAAA,IAAqB,SAAS,OAAA,IAAW;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["export const toPascalCase = (str: string): string =>\n str\n .split(/[-_/]/)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('');\n\nexport const toKebabCase = (str: string): string =>\n str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\nexport const mergeClasses = (...classes: (string | undefined | false)[]): string =>\n classes.filter(Boolean).join(' ');\n\nexport const hasA11yProp = (props: Record<string, unknown>): boolean =>\n 'aria-label' in props || 'aria-labelledby' in props || 'title' in props;\n\nexport { isBoldIconName } from './isBoldIconName';\nexport { iconNodeUsesFill } from './iconNodeUsesFill';\n"],"names":[],"mappings":";;;AAAO,MAAM,YAAA,GAAe,CAAC,GAAA,KAC3B,GAAA,CACG,MAAM,OAAO,CAAA,CACb,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,EAAE;AAEL,MAAM,WAAA,GAAc,CAAC,GAAA,KAC1B,GAAA,CAAI,QAAQ,oBAAA,EAAsB,OAAO,EAAE,WAAA;AAEtC,MAAM,YAAA,GAAe,IAAI,OAAA,KAC9B,OAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG;AAE3B,MAAM,cAAc,CAAC,KAAA,KAC1B,gBAAgB,KAAA,IAAS,iBAAA,IAAqB,SAAS,OAAA,IAAW;;;;"}
@@ -0,0 +1,4 @@
1
+ const isBoldIconName = (iconName) => iconName.includes("-bold-");
2
+
3
+ export { isBoldIconName };
4
+ //# sourceMappingURL=isBoldIconName.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isBoldIconName.mjs","sources":["../../src/isBoldIconName.ts"],"sourcesContent":["/** Icon ids use `{category}-bold-{name}` (e.g. `settings-bold-menu`). */\nexport const isBoldIconName = (iconName: string): boolean => iconName.includes('-bold-');\n"],"names":[],"mappings":"AACO,MAAM,cAAA,GAAiB,CAAC,QAAA,KAA8B,QAAA,CAAS,SAAS,QAAQ;;;;"}
package/dist/shared.d.ts CHANGED
@@ -1,6 +1,12 @@
1
+ /** Icon ids use `{category}-bold-{name}` (e.g. `settings-bold-menu`). */
2
+ declare const isBoldIconName: (iconName: string) => boolean;
3
+
4
+ type IconNodeEntry = [string, Record<string, string | number>, ...unknown[]];
5
+ declare const iconNodeUsesFill: (iconNode: IconNodeEntry[]) => boolean;
6
+
1
7
  declare const toPascalCase: (str: string) => string;
2
8
  declare const toKebabCase: (str: string) => string;
3
9
  declare const mergeClasses: (...classes: (string | undefined | false)[]) => string;
4
10
  declare const hasA11yProp: (props: Record<string, unknown>) => boolean;
5
11
 
6
- export { hasA11yProp, mergeClasses, toKebabCase, toPascalCase };
12
+ export { hasA11yProp, iconNodeUsesFill, isBoldIconName, mergeClasses, toKebabCase, toPascalCase };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opudoc/opicon-shared",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "license": "ISC",
5
5
  "description": "Shared utilities for Opicon icon packages.",
6
6
  "repository": {
@@ -8,7 +8,7 @@
8
8
  "url": "https://github.com/OpuDoc/opicon.git",
9
9
  "directory": "packages/shared"
10
10
  },
11
- "homepage": "https://github.com/OpuDoc/opicon",
11
+ "homepage": "https://opicon.net",
12
12
  "bugs": "https://github.com/OpuDoc/opicon/issues",
13
13
  "author": "OpuDoc (https://github.com/OpuDoc)",
14
14
  "contributors": [