@supersoniks/concorde 4.9.2 → 4.9.3

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.
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import Icons from "@supersoniks/concorde/core/components/ui/icon/icons";
8
+ import { ancestorAttribute } from "@supersoniks/concorde/core/decorators/Subscriber";
8
9
  import { css, LitElement, nothing, } from "lit";
9
10
  import { customElement, property as propertyDecorator, state, } from "lit/decorators.js";
10
11
  const property = (options) => {
@@ -32,12 +33,16 @@ let Icon = class Icon extends LitElement {
32
33
  * library de l'icone url vers un dossier en lign conenant des icônes
33
34
  */
34
35
  this.library = "";
36
+ this.customIconLibraryPath = null;
37
+ this.customIconDefaultPrefix = null;
35
38
  }
36
39
  async updateIcon() {
37
40
  this.iconText = await Icons.default.get({
38
41
  name: this.name,
39
42
  prefix: this.prefix,
40
43
  library: this.library,
44
+ customLibraryPath: this.customIconLibraryPath,
45
+ customLibraryDefaultPrefix: this.customIconDefaultPrefix,
41
46
  });
42
47
  }
43
48
  connectedCallback() {
@@ -47,7 +52,10 @@ let Icon = class Icon extends LitElement {
47
52
  willUpdate(changedProperties) {
48
53
  if (changedProperties.has("name") ||
49
54
  changedProperties.has("prefix") ||
50
- changedProperties.has("library")) {
55
+ changedProperties.has("library") ||
56
+ (this.library === "custom" &&
57
+ (changedProperties.has("customIconLibraryPath") ||
58
+ changedProperties.has("customIconDefaultPrefix")))) {
51
59
  this.updateIcon();
52
60
  }
53
61
  super.willUpdate(changedProperties);
@@ -122,6 +130,14 @@ __decorate([
122
130
  __decorate([
123
131
  property({ type: String })
124
132
  ], Icon.prototype, "library", void 0);
133
+ __decorate([
134
+ ancestorAttribute("customIconLibraryPath", { dynamic: true }),
135
+ state()
136
+ ], Icon.prototype, "customIconLibraryPath", void 0);
137
+ __decorate([
138
+ ancestorAttribute("customIconDefaultPrefix", { dynamic: true }),
139
+ state()
140
+ ], Icon.prototype, "customIconDefaultPrefix", void 0);
125
141
  Icon = __decorate([
126
142
  customElement(tagName)
127
143
  ], Icon);
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icon.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,KAAK,MAAM,qDAAqD,CAAC;AACxE,OAAO,EACL,GAAG,EACH,UAAU,EACV,OAAO,GAGR,MAAM,KAAK,CAAC;AACb,OAAO,EACL,aAAa,EACb,QAAQ,IAAI,iBAAiB,EAC7B,KAAK,GACN,MAAM,mBAAmB,CAAC;AAI3B,MAAM,QAAQ,GAAG,CAAC,OAA6B,EAAqB,EAAE;IACpE,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,YAAY,CAAC;AAC7B;;;GAGG;AAEI,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,UAAU;IAA7B;;QA4DI,aAAQ,GAAyD,EAAE,CAAC;QAE7E;;WAEG;QACyB,SAAI,GAAG,EAAE,CAAC;QAEtC;;WAEG;QACyB,WAAM,GAAG,EAAE,CAAC;QAExC;;WAEG;QACyB,YAAO,GAAG,EAAE,CAAC;IAuB3C,CAAC;IA9CC,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAmBD,iBAAiB;QACf,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACzC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IACD,UAAU,CAAC,iBAAiC;QAC1C,IACE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/B,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAChC,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;;AAhGM,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDlB,AAlDY,CAkDX;AASO;IAAR,KAAK,EAAE;sCAAqE;AAKjD;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kCAAW;AAKV;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oCAAa;AAKZ;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qCAAc;AA3E9B,IAAI;IADhB,aAAa,CAAC,OAAO,CAAC;GACV,IAAI,CAkGhB"}
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icon.ts"],"names":[],"mappings":"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"}
@@ -38,21 +38,35 @@ const libraries = {
38
38
  },
39
39
  custom: { url: "", defaultPrefix: "" },
40
40
  };
41
- let hasEnabledCustomLibrary = false;
42
- function enableCustomLibrary() {
43
- if (hasEnabledCustomLibrary)
44
- return;
45
- libraries.custom.url =
46
- document
47
- .querySelector("[customIconLibraryPath]")
48
- ?.getAttribute("customIconLibraryPath") || "";
49
- libraries.custom.defaultPrefix =
50
- document
51
- .querySelector("[customIconDefaultPrefix]")
52
- ?.getAttribute("customIconDefaultPrefix") || "";
53
- if (libraries.custom.url) {
54
- hasEnabledCustomLibrary = true;
41
+ function resolveCustomLibraryConfig(params) {
42
+ let url = params.customLibraryPath;
43
+ let defaultPrefix = params.customLibraryDefaultPrefix;
44
+ // Attribut optionnel : peut être défini sur un ancêtre (scope / theme) ou,
45
+ // en secours, n'importe où dans le document (ex. config globale au boot).
46
+ if (url == null) {
47
+ const globalEl = document.querySelector("[customIconLibraryPath]");
48
+ url = globalEl?.getAttribute("customIconLibraryPath") ?? "";
49
+ if (defaultPrefix == null) {
50
+ defaultPrefix =
51
+ globalEl?.getAttribute("customIconDefaultPrefix") ??
52
+ document
53
+ .querySelector("[customIconDefaultPrefix]")
54
+ ?.getAttribute("customIconDefaultPrefix") ??
55
+ "";
56
+ }
57
+ }
58
+ return {
59
+ url: url || "",
60
+ defaultPrefix: defaultPrefix || "",
61
+ };
62
+ }
63
+ function resolveLibraryItem(library, params) {
64
+ if (!(library in libraries))
65
+ return null;
66
+ if (library !== "custom") {
67
+ return libraries[library];
55
68
  }
69
+ return resolveCustomLibraryConfig(params);
56
70
  }
57
71
  const iconCachStr = sessionStorage.getItem("sonicIconsCache");
58
72
  const iconCache = iconCachStr
@@ -72,15 +86,22 @@ Icons.default = {
72
86
  /**
73
87
  * SVGS en ligne
74
88
  */
75
- if (library == "custom") {
76
- enableCustomLibrary();
89
+ if (!library) {
90
+ return unsafeHTML(iconsAsRecord["core"][params.name] || "");
77
91
  }
78
- if (library && library in libraries) {
79
- const libraryItem = libraries[library];
92
+ const libraryItem = resolveLibraryItem(library, params);
93
+ if (libraryItem) {
94
+ // Pas d'URL encore (ancêtre ou config globale pas prête) : on attend
95
+ // sans fetch ni cache ; @ancestorAttribute relancera le chargement.
96
+ if (library === "custom" && !libraryItem.url) {
97
+ return "";
98
+ }
80
99
  const prefix = params.prefix || libraryItem.defaultPrefix || "";
81
100
  const libIcons = iconsAsRecord[library] || {};
82
101
  iconsAsRecord[library] = libIcons;
83
- const libIconsKey = prefix + "-" + name;
102
+ const libIconsKey = library === "custom"
103
+ ? `${libraryItem.url}|${prefix}-${name}`
104
+ : `${prefix}-${name}`;
84
105
  /**
85
106
  * Si l'icone a déjà été chargée on ne la recharge pas
86
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icons.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icons.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ export declare class Icon extends LitElement {
21
21
  * library de l'icone url vers un dossier en lign conenant des icônes
22
22
  */
23
23
  library: string;
24
+ customIconLibraryPath: string | null;
25
+ customIconDefaultPrefix: string | null;
24
26
  connectedCallback(): void;
25
27
  willUpdate(changedProperties: PropertyValues): void;
26
28
  render(): DirectiveResult<typeof UnsafeHTMLDirective>;
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icon.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EAGV,cAAc,EACf,MAAM,KAAK,CAAC;AAMb,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAQpE;;;GAGG;AACH,qBACa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,MAAM,0BAkDX;IACI,UAAU;IAQP,QAAQ,EAAE,eAAe,CAAC,OAAO,mBAAmB,CAAC,GAAG,MAAM,CAAM;IAE7E;;OAEG;IACyB,IAAI,SAAM;IAEtC;;OAEG;IACyB,MAAM,SAAM;IAExC;;OAEG;IACyB,OAAO,SAAM;IAEzC,iBAAiB;IAIjB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAWnD,MAAM;CAMP"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icon.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EAGV,cAAc,EACf,MAAM,KAAK,CAAC;AAMb,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAQpE;;;GAGG;AACH,qBACa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,MAAM,0BAkDX;IACI,UAAU;IAUP,QAAQ,EAAE,eAAe,CAAC,OAAO,mBAAmB,CAAC,GAAG,MAAM,CAAM;IAE7E;;OAEG;IACyB,IAAI,SAAM;IAEtC;;OAEG;IACyB,MAAM,SAAM;IAExC;;OAEG;IACyB,OAAO,SAAM;IAIzC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAI5C,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9C,iBAAiB;IAIjB,UAAU,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAcnD,MAAM;CAMP"}
@@ -2,6 +2,8 @@ export declare type IconConf = {
2
2
  name: string;
3
3
  prefix?: string;
4
4
  library?: string;
5
+ customLibraryPath?: string | null;
6
+ customLibraryDefaultPrefix?: string | null;
5
7
  };
6
8
  export default class Icons {
7
9
  static default: {
@@ -1 +1 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icons.ts"],"names":[],"mappings":"AAoEA,MAAM,CAAC,OAAO,MAAM,QAAQ,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,OAAO;sBACQ,QAAQ;MAiG5B;CACH"}
1
+ {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/ui/icon/icons.ts"],"names":[],"mappings":"AAoFA,MAAM,CAAC,OAAO,MAAM,QAAQ,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C,CAAC;AACF,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,MAAM,CAAC,OAAO;sBACQ,QAAQ;MAyG5B;CACH"}
package/package.json CHANGED
@@ -1,24 +1,14 @@
1
1
  {
2
2
  "name": "@supersoniks/concorde",
3
- "version": "4.9.2",
3
+ "version": "4.9.3",
4
4
  "license": "MIT",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/supersoniks/concorde.git"
8
- },
9
- "homepage": "https://concorde.supersoniks.org/",
10
- "bugs": {
11
- "url": "https://github.com/supersoniks/concorde/issues"
12
- },
13
5
  "type": "module",
14
6
  "main": "",
15
7
  "scripts": {
16
8
  "dev": "node scripts/create-search.js && LIB_NAME=docs vite --host 0.0.0.0 --port 3000",
17
9
  "prebuild": "node scripts/pre-build.mjs",
18
- "build:types": "tsc -p src/tsconfig.declarations.json",
19
- "build:js": "tsc -p src/tsconfig.emit.json",
20
10
  "postbuild": "node scripts/post-build.mjs",
21
- "build": "tsc --build src/tsconfig.json && vite build",
11
+ "build": "tsc --build src/tsconfig.json && vite build",
22
12
  "build-docs": "LIB_NAME=docs vite build",
23
13
  "postbuild-docs": "node scripts/post-build-docs.js",
24
14
  "prepublishOnly": "node scripts/pre-publish.mjs",
@@ -27,6 +17,7 @@
27
17
  "ai-init": "node scripts/ai-init.mjs"
28
18
  },
29
19
  "exports": {
20
+ "./bundle": "./concorde-core.bundle.js",
30
21
  "./core/components/ui/icon/icons.json": "./src/core/components/ui/icon/icons.json",
31
22
  "./core/components/functional/sdui/default-library.json": "./src/core/components/functional/sdui/default-library.json",
32
23
  "./dataProviderKey": {
@@ -137,6 +137,7 @@ const packageJsonPath = path.resolve(__dirname, "../package.json");
137
137
  let packageJson = JSON.parse(fs.readFileSync(packageJsonPath));
138
138
 
139
139
  const pExports = {
140
+ "./bundle": "./concorde-core.bundle.js",
140
141
  "./core/components/ui/icon/icons.json":
141
142
  "./src/core/components/ui/icon/icons.json",
142
143
  "./core/components/functional/sdui/default-library.json":
@@ -1,4 +1,5 @@
1
1
  import Icons from "@supersoniks/concorde/core/components/ui/icon/icons";
2
+ import { ancestorAttribute } from "@supersoniks/concorde/core/decorators/Subscriber";
2
3
  import {
3
4
  css,
4
5
  LitElement,
@@ -82,6 +83,8 @@ export class Icon extends LitElement {
82
83
  name: this.name,
83
84
  prefix: this.prefix,
84
85
  library: this.library,
86
+ customLibraryPath: this.customIconLibraryPath,
87
+ customLibraryDefaultPrefix: this.customIconDefaultPrefix,
85
88
  });
86
89
  }
87
90
 
@@ -102,6 +105,14 @@ export class Icon extends LitElement {
102
105
  */
103
106
  @property({ type: String }) library = "";
104
107
 
108
+ @ancestorAttribute("customIconLibraryPath", { dynamic: true })
109
+ @state()
110
+ customIconLibraryPath: string | null = null;
111
+
112
+ @ancestorAttribute("customIconDefaultPrefix", { dynamic: true })
113
+ @state()
114
+ customIconDefaultPrefix: string | null = null;
115
+
105
116
  connectedCallback() {
106
117
  this.setAttribute("aria-hidden", "true");
107
118
  super.connectedCallback();
@@ -110,7 +121,10 @@ export class Icon extends LitElement {
110
121
  if (
111
122
  changedProperties.has("name") ||
112
123
  changedProperties.has("prefix") ||
113
- changedProperties.has("library")
124
+ changedProperties.has("library") ||
125
+ (this.library === "custom" &&
126
+ (changedProperties.has("customIconLibraryPath") ||
127
+ changedProperties.has("customIconDefaultPrefix")))
114
128
  ) {
115
129
  this.updateIcon();
116
130
  }
@@ -43,22 +43,38 @@ const libraries = {
43
43
  type Libraries = typeof libraries;
44
44
  type LibraryKey = keyof Libraries;
45
45
  type Library = Partial<{ url: string; defaultPrefix: string }>;
46
- let hasEnabledCustomLibrary = false;
47
- function enableCustomLibrary() {
48
- if (hasEnabledCustomLibrary) return;
49
46
 
50
- libraries.custom.url =
51
- document
52
- .querySelector("[customIconLibraryPath]")
53
- ?.getAttribute("customIconLibraryPath") || "";
54
- libraries.custom.defaultPrefix =
55
- document
56
- .querySelector("[customIconDefaultPrefix]")
57
- ?.getAttribute("customIconDefaultPrefix") || "";
47
+ function resolveCustomLibraryConfig(params: IconConf): Library {
48
+ let url = params.customLibraryPath;
49
+ let defaultPrefix = params.customLibraryDefaultPrefix;
58
50
 
59
- if (libraries.custom.url) {
60
- hasEnabledCustomLibrary = true;
51
+ // Attribut optionnel : peut être défini sur un ancêtre (scope / theme) ou,
52
+ // en secours, n'importe où dans le document (ex. config globale au boot).
53
+ if (url == null) {
54
+ const globalEl = document.querySelector("[customIconLibraryPath]");
55
+ url = globalEl?.getAttribute("customIconLibraryPath") ?? "";
56
+ if (defaultPrefix == null) {
57
+ defaultPrefix =
58
+ globalEl?.getAttribute("customIconDefaultPrefix") ??
59
+ document
60
+ .querySelector("[customIconDefaultPrefix]")
61
+ ?.getAttribute("customIconDefaultPrefix") ??
62
+ "";
63
+ }
61
64
  }
65
+
66
+ return {
67
+ url: url || "",
68
+ defaultPrefix: defaultPrefix || "",
69
+ };
70
+ }
71
+
72
+ function resolveLibraryItem(library: string, params: IconConf): Library | null {
73
+ if (!(library in libraries)) return null;
74
+ if (library !== "custom") {
75
+ return libraries[library as LibraryKey] as Library;
76
+ }
77
+ return resolveCustomLibraryConfig(params);
62
78
  }
63
79
  const iconCachStr = sessionStorage.getItem("sonicIconsCache");
64
80
  const iconCache = iconCachStr
@@ -70,6 +86,8 @@ export declare type IconConf = {
70
86
  name: string;
71
87
  prefix?: string;
72
88
  library?: string;
89
+ customLibraryPath?: string | null;
90
+ customLibraryDefaultPrefix?: string | null;
73
91
  };
74
92
  export default class Icons {
75
93
  static default = {
@@ -81,15 +99,23 @@ export default class Icons {
81
99
  /**
82
100
  * SVGS en ligne
83
101
  */
84
- if (library == "custom") {
85
- enableCustomLibrary();
102
+ if (!library) {
103
+ return unsafeHTML(iconsAsRecord["core"][params.name] || "");
86
104
  }
87
- if (library && library in libraries) {
88
- const libraryItem = libraries[library as LibraryKey] as Library;
105
+ const libraryItem = resolveLibraryItem(library, params);
106
+ if (libraryItem) {
107
+ // Pas d'URL encore (ancêtre ou config globale pas prête) : on attend
108
+ // sans fetch ni cache ; @ancestorAttribute relancera le chargement.
109
+ if (library === "custom" && !libraryItem.url) {
110
+ return "";
111
+ }
89
112
  const prefix: string = params.prefix || libraryItem.defaultPrefix || "";
90
113
  const libIcons = iconsAsRecord[library] || ({} as Library);
91
114
  iconsAsRecord[library] = libIcons;
92
- const libIconsKey = prefix + "-" + name;
115
+ const libIconsKey =
116
+ library === "custom"
117
+ ? `${libraryItem.url}|${prefix}-${name}`
118
+ : `${prefix}-${name}`;
93
119
 
94
120
  /**
95
121
  * Si l'icone a déjà été chargée on ne la recharge pas