@odx/angular 2.14.5 → 2.15.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  ## 2.14.4
2
2
 
3
+ ## 2.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 653014a5: allow placeholder replacement for translate service
8
+
3
9
  ## 2.14.5
4
10
 
5
11
  ### Patch Changes
@@ -4,14 +4,14 @@ function isSameDomain({ href }) {
4
4
  }
5
5
  /** @internal */
6
6
  /* istanbul ignore next */
7
- export function getCSSVariables(filter, doc) {
8
- const stylesheets = Array.from((doc ?? document).styleSheets).filter(isSameDomain);
7
+ export function getCSSVariables(filter, selector = 'body') {
8
+ const stylesheets = Array.from(document.styleSheets).filter(isSameDomain);
9
9
  return stylesheets.reduce((variables, { cssRules }) => {
10
10
  const rules = Array.from(cssRules).filter(({ type }) => type === CSSRule.STYLE_RULE);
11
- for (const { style } of rules) {
11
+ for (const { style, selectorText } of rules) {
12
12
  for (const propName of Array.from(style)) {
13
13
  const name = propName.trim();
14
- if (!name.startsWith('--') || !filter.test(name))
14
+ if (!name.startsWith('--') || !filter.test(name) || (selector && selectorText !== selector))
15
15
  continue;
16
16
  variables.push({ name, value: style.getPropertyValue(propName).trim() });
17
17
  }
@@ -19,4 +19,4 @@ export function getCSSVariables(filter, doc) {
19
19
  return variables;
20
20
  }, []);
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNzcy12YXJpYWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvc3JjL2hlbHBlcnMvZ2V0LWNzcy12YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsMEJBQTBCO0FBQzFCLFNBQVMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFjO0lBQ3hDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxnQkFBZ0I7QUFDaEIsMEJBQTBCO0FBQzFCLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBYyxFQUFFLEdBQWM7SUFDNUQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFbkYsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUEwQixDQUFDLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7UUFDN0UsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBbUIsQ0FBQztRQUN2RyxLQUFLLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUU7WUFDN0IsS0FBSyxNQUFNLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQUUsU0FBUztnQkFDM0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMxRTtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBDU1NWYXJpYWJsZURlZmluaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpc1NhbWVEb21haW4oeyBocmVmIH06IFN0eWxlU2hlZXQpOiBib29sZWFuIHtcbiAgcmV0dXJuICFocmVmIHx8IGhyZWYuc3RhcnRzV2l0aCh3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDU1NWYXJpYWJsZXMoZmlsdGVyOiBSZWdFeHAsIGRvYz86IERvY3VtZW50KTogQ1NTVmFyaWFibGVEZWZpbml0aW9uW10ge1xuICBjb25zdCBzdHlsZXNoZWV0cyA9IEFycmF5LmZyb20oKGRvYyA/PyBkb2N1bWVudCkuc3R5bGVTaGVldHMpLmZpbHRlcihpc1NhbWVEb21haW4pO1xuXG4gIHJldHVybiBzdHlsZXNoZWV0cy5yZWR1Y2U8Q1NTVmFyaWFibGVEZWZpbml0aW9uW10+KCh2YXJpYWJsZXMsIHsgY3NzUnVsZXMgfSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVzID0gQXJyYXkuZnJvbShjc3NSdWxlcykuZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gQ1NTUnVsZS5TVFlMRV9SVUxFKSBhcyBDU1NTdHlsZVJ1bGVbXTtcbiAgICBmb3IgKGNvbnN0IHsgc3R5bGUgfSBvZiBydWxlcykge1xuICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBBcnJheS5mcm9tKHN0eWxlKSkge1xuICAgICAgICBjb25zdCBuYW1lID0gcHJvcE5hbWUudHJpbSgpO1xuICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnLS0nKSB8fCAhZmlsdGVyLnRlc3QobmFtZSkpIGNvbnRpbnVlO1xuICAgICAgICB2YXJpYWJsZXMucHVzaCh7IG5hbWUsIHZhbHVlOiBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHByb3BOYW1lKS50cmltKCkgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YXJpYWJsZXM7XG4gIH0sIFtdKTtcbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWNzcy12YXJpYWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvc3JjL2hlbHBlcnMvZ2V0LWNzcy12YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsMEJBQTBCO0FBQzFCLFNBQVMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFjO0lBQ3hDLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxnQkFBZ0I7QUFDaEIsMEJBQTBCO0FBQzFCLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBYyxFQUFFLFFBQVEsR0FBRyxNQUFNO0lBQy9ELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUUxRSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQTBCLENBQUMsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtRQUM3RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsVUFBVSxDQUFtQixDQUFDO1FBQ3ZHLEtBQUssTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxLQUFLLEVBQUU7WUFDM0MsS0FBSyxNQUFNLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxZQUFZLEtBQUssUUFBUSxDQUFDO29CQUFFLFNBQVM7Z0JBQ3RHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDMUU7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgQ1NTVmFyaWFibGVEZWZpbml0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gaXNTYW1lRG9tYWluKHsgaHJlZiB9OiBTdHlsZVNoZWV0KTogYm9vbGVhbiB7XG4gIHJldHVybiAhaHJlZiB8fCBocmVmLnN0YXJ0c1dpdGgod2luZG93LmxvY2F0aW9uLm9yaWdpbik7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q1NTVmFyaWFibGVzKGZpbHRlcjogUmVnRXhwLCBzZWxlY3RvciA9ICdib2R5Jyk6IENTU1ZhcmlhYmxlRGVmaW5pdGlvbltdIHtcbiAgY29uc3Qgc3R5bGVzaGVldHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnN0eWxlU2hlZXRzKS5maWx0ZXIoaXNTYW1lRG9tYWluKTtcblxuICByZXR1cm4gc3R5bGVzaGVldHMucmVkdWNlPENTU1ZhcmlhYmxlRGVmaW5pdGlvbltdPigodmFyaWFibGVzLCB7IGNzc1J1bGVzIH0pID0+IHtcbiAgICBjb25zdCBydWxlcyA9IEFycmF5LmZyb20oY3NzUnVsZXMpLmZpbHRlcigoeyB0eXBlIH0pID0+IHR5cGUgPT09IENTU1J1bGUuU1RZTEVfUlVMRSkgYXMgQ1NTU3R5bGVSdWxlW107XG4gICAgZm9yIChjb25zdCB7IHN0eWxlLCBzZWxlY3RvclRleHQgfSBvZiBydWxlcykge1xuICAgICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBBcnJheS5mcm9tKHN0eWxlKSkge1xuICAgICAgICBjb25zdCBuYW1lID0gcHJvcE5hbWUudHJpbSgpO1xuICAgICAgICBpZiAoIW5hbWUuc3RhcnRzV2l0aCgnLS0nKSB8fCAhZmlsdGVyLnRlc3QobmFtZSkgfHwgKHNlbGVjdG9yICYmIHNlbGVjdG9yVGV4dCAhPT0gc2VsZWN0b3IpKSBjb250aW51ZTtcbiAgICAgICAgdmFyaWFibGVzLnB1c2goeyBuYW1lLCB2YWx1ZTogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShwcm9wTmFtZSkudHJpbSgpIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFyaWFibGVzO1xuICB9LCBbXSk7XG59XG4iXX0=
@@ -5,8 +5,8 @@ export class TranslatePipe {
5
5
  constructor() {
6
6
  this.translateService = inject(TranslateService);
7
7
  }
8
- transform(key) {
9
- return this.translateService.translate(key);
8
+ transform(key, placeholder = {}) {
9
+ return this.translateService.translate(key, placeholder);
10
10
  }
11
11
  }
12
12
  TranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TranslatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
19
19
  pure: true,
20
20
  }]
21
21
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlL3NyYy9saWIvcGlwZXMvdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU94RCxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQU1tQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUs5RDtJQUhRLFNBQVMsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDOzsyR0FMVSxhQUFhO3lHQUFiLGFBQWE7NEZBQWIsYUFBYTtrQkFMekIsSUFBSTttQkFBQztvQkFDSixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLElBQUksRUFBRSxJQUFJO2lCQUNYIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vdHJhbnNsYXRlLnNlcnZpY2UnO1xuXG5AUGlwZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIG5hbWU6ICdvZHhUcmFuc2xhdGUnLFxuICBwdXJlOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcblxuICBwdWJsaWMgdHJhbnNmb3JtKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZShrZXkpO1xuICB9XG59XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlL3NyYy9saWIvcGlwZXMvdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQU94RCxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQU1tQixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUs5RDtJQUhRLFNBQVMsQ0FBQyxHQUFXLEVBQUUsY0FBc0MsRUFBRTtRQUNwRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7OzJHQUxVLGFBQWE7eUdBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUx6QixJQUFJO21CQUFDO29CQUNKLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi90cmFuc2xhdGUuc2VydmljZSc7XG5cbkBQaXBlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgbmFtZTogJ29keFRyYW5zbGF0ZScsXG4gIHB1cmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIHB1YmxpYyB0cmFuc2Zvcm0oa2V5OiBzdHJpbmcsIHBsYWNlaG9sZGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKGtleSwgcGxhY2Vob2xkZXIpO1xuICB9XG59XG4iXX0=
@@ -9,8 +9,12 @@ export class TranslateService {
9
9
  this.languageService = inject(LanguageService);
10
10
  this.currentTranslation$ = this.languageService.currentLanguageCode$.pipe(map((languageCode) => this.translations[languageCode] ?? this.translations[this.defaultLanguageCode]), filter(Boolean), shareReplay({ refCount: true }));
11
11
  }
12
- translate(key) {
13
- return this.currentTranslation$.pipe(map((translation) => translation[key] ?? ''));
12
+ translate(key, placeholder = {}) {
13
+ return this.currentTranslation$.pipe(map((translation) => Object.keys(placeholder)
14
+ .reduce((acc, cur) => {
15
+ const re = RegExp(`{{\\s*${cur}\\s*}}`, 'g');
16
+ return acc.replace(re, placeholder[cur]);
17
+ }, translation[key] ?? '')));
14
18
  }
15
19
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlL3NyYy9saWIvdHJhbnNsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RSxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQTZCLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBVHRDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2xFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNDLHdCQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUNsRixHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUNyRyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ2hDLENBQUM7SUFFd0QsQ0FBQztJQUVwRCxTQUFTLENBQUMsR0FBVztRQUMxQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPRFhfVFJBTlNMQVRFX0RFRkFVTFRfTEFOR1VBR0VfQ09ERSB9IGZyb20gJy4vdHJhbnNsYXRlLmNvbmZpZyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2VDb2RlID0gaW5qZWN0KE9EWF9UUkFOU0xBVEVfREVGQVVMVF9MQU5HVUFHRV9DT0RFKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsYW5ndWFnZVNlcnZpY2UgPSBpbmplY3QoTGFuZ3VhZ2VTZXJ2aWNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFRyYW5zbGF0aW9uJCA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZUNvZGUkLnBpcGUoXG4gICAgbWFwKChsYW5ndWFnZUNvZGUpID0+IHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlQ29kZV0gPz8gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5kZWZhdWx0TGFuZ3VhZ2VDb2RlXSksXG4gICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9ucykge31cblxuICBwdWJsaWMgdHJhbnNsYXRlKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VHJhbnNsYXRpb24kLnBpcGUobWFwKCh0cmFuc2xhdGlvbikgPT4gdHJhbnNsYXRpb25ba2V5XSA/PyAnJykpO1xuICB9XG59XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvaW50ZXJuYWwvdHJhbnNsYXRlL3NyYy9saWIvdHJhbnNsYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RSxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQTZCLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBVHRDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2xFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNDLHdCQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUNsRixHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUNyRyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQ2hDLENBQUM7SUFFd0QsQ0FBQztJQUVwRCxTQUFTLENBQUMsR0FBVyxFQUFFLGNBQXNDLEVBQUU7UUFDcEUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7YUFDL0UsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ25CLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQzVDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDMUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRyYW5zbGF0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHsgT0RYX1RSQU5TTEFURV9ERUZBVUxUX0xBTkdVQUdFX0NPREUgfSBmcm9tICcuL3RyYW5zbGF0ZS5jb25maWcnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlQ29kZSA9IGluamVjdChPRFhfVFJBTlNMQVRFX0RFRkFVTFRfTEFOR1VBR0VfQ09ERSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGFuZ3VhZ2VTZXJ2aWNlID0gaW5qZWN0KExhbmd1YWdlU2VydmljZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRUcmFuc2xhdGlvbiQgPSB0aGlzLmxhbmd1YWdlU2VydmljZS5jdXJyZW50TGFuZ3VhZ2VDb2RlJC5waXBlKFxuICAgIG1hcCgobGFuZ3VhZ2VDb2RlKSA9PiB0aGlzLnRyYW5zbGF0aW9uc1tsYW5ndWFnZUNvZGVdID8/IHRoaXMudHJhbnNsYXRpb25zW3RoaXMuZGVmYXVsdExhbmd1YWdlQ29kZV0pLFxuICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbnMpIHt9XG5cbiAgcHVibGljIHRyYW5zbGF0ZShrZXk6IHN0cmluZywgcGxhY2Vob2xkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRyYW5zbGF0aW9uJC5waXBlKG1hcCgodHJhbnNsYXRpb24pID0+IE9iamVjdC5rZXlzKHBsYWNlaG9sZGVyKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcbiAgICAgICAgY29uc3QgcmUgPSBSZWdFeHAoYHt7XFxcXHMqJHtjdXJ9XFxcXHMqfX1gLCAnZycpXG4gICAgICAgIHJldHVybiBhY2MucmVwbGFjZShyZSwgcGxhY2Vob2xkZXJbY3VyXSlcbiAgICAgIH0sIHRyYW5zbGF0aW9uW2tleV0gPz8gJycpKSk7XG4gIH1cbn1cbiJdfQ==
@@ -25,8 +25,15 @@ class TranslateService {
25
25
  this.languageService = inject(LanguageService);
26
26
  this.currentTranslation$ = this.languageService.currentLanguageCode$.pipe(map((languageCode) => { var _a; return (_a = this.translations[languageCode]) !== null && _a !== void 0 ? _a : this.translations[this.defaultLanguageCode]; }), filter(Boolean), shareReplay({ refCount: true }));
27
27
  }
28
- translate(key) {
29
- return this.currentTranslation$.pipe(map((translation) => { var _a; return (_a = translation[key]) !== null && _a !== void 0 ? _a : ''; }));
28
+ translate(key, placeholder = {}) {
29
+ return this.currentTranslation$.pipe(map((translation) => {
30
+ var _a;
31
+ return Object.keys(placeholder)
32
+ .reduce((acc, cur) => {
33
+ const re = RegExp(`{{\\s*${cur}\\s*}}`, 'g');
34
+ return acc.replace(re, placeholder[cur]);
35
+ }, (_a = translation[key]) !== null && _a !== void 0 ? _a : '');
36
+ }));
30
37
  }
31
38
  }
32
39
 
@@ -52,8 +59,8 @@ class TranslatePipe {
52
59
  constructor() {
53
60
  this.translateService = inject(TranslateService);
54
61
  }
55
- transform(key) {
56
- return this.translateService.translate(key);
62
+ transform(key, placeholder = {}) {
63
+ return this.translateService.translate(key, placeholder);
57
64
  }
58
65
  }
59
66
  TranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TranslatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-internal-translate.mjs","sources":["../../../../libs/angular/internal/translate/src/lib/services/language.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.config.ts","../../../../libs/angular/internal/translate/src/lib/helpers/get-language-code.ts","../../../../libs/angular/internal/translate/src/lib/pipes/translate.pipe.ts","../../../../libs/angular/internal/translate/src/odx-angular-internal-translate.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { getLanguageCode } from '../helpers';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from '../translate.config';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageService {\n private readonly currentLanguageCode$$ = new BehaviorSubject(inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE));\n\n public readonly currentLanguageCode$ = this.currentLanguageCode$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public setLanguage(language: string): void {\n this.currentLanguageCode$$.next(getLanguageCode(language));\n }\n}\n","import { inject } from '@angular/core';\nimport { filter, map, Observable, shareReplay } from 'rxjs';\nimport { Translations } from './models';\nimport { LanguageService } from './services';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from './translate.config';\n\nexport class TranslateService {\n private readonly defaultLanguageCode = inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE);\n private readonly languageService = inject(LanguageService);\n\n public readonly currentTranslation$ = this.languageService.currentLanguageCode$.pipe(\n map((languageCode) => this.translations[languageCode] ?? this.translations[this.defaultLanguageCode]),\n filter(Boolean),\n shareReplay({ refCount: true }),\n );\n\n constructor(private readonly translations: Translations) {}\n\n public translate(key: string): Observable<string> {\n return this.currentTranslation$.pipe(map((translation) => translation[key] ?? ''));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { getLanguageCode } from './helpers';\nimport { Translations } from './models';\nimport { TranslateService } from './translate.service';\n\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE = 'en';\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE = new InjectionToken<string>('@odx/angular/internal/translate::DefaultLanguageCode', {\n providedIn: 'root',\n factory: () => getLanguageCode(ODX_TRANSLATE_DEFAULT_LANGUAGE),\n});\n\nexport function provideTranslations(translations: Translations) {\n return {\n provide: TranslateService,\n useFactory: () => new TranslateService(translations),\n };\n}\n","import { ODX_TRANSLATE_DEFAULT_LANGUAGE } from '../translate.config';\n\nexport function getLanguageCode(language: string): string {\n const [languageCode] = language.split(/-|_/);\n\n return languageCode?.toLowerCase() ?? ODX_TRANSLATE_DEFAULT_LANGUAGE;\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '../translate.service';\n\n@Pipe({\n standalone: true,\n name: 'odxTranslate',\n pure: true,\n})\nexport class TranslatePipe implements PipeTransform {\n private readonly translateService = inject(TranslateService);\n\n public transform(key: string): Observable<string> {\n return this.translateService.translate(key);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-internal-translate.mjs","sources":["../../../../libs/angular/internal/translate/src/lib/services/language.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.config.ts","../../../../libs/angular/internal/translate/src/lib/helpers/get-language-code.ts","../../../../libs/angular/internal/translate/src/lib/pipes/translate.pipe.ts","../../../../libs/angular/internal/translate/src/odx-angular-internal-translate.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { getLanguageCode } from '../helpers';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from '../translate.config';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageService {\n private readonly currentLanguageCode$$ = new BehaviorSubject(inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE));\n\n public readonly currentLanguageCode$ = this.currentLanguageCode$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public setLanguage(language: string): void {\n this.currentLanguageCode$$.next(getLanguageCode(language));\n }\n}\n","import { inject } from '@angular/core';\nimport { filter, map, Observable, shareReplay } from 'rxjs';\nimport { Translations } from './models';\nimport { LanguageService } from './services';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from './translate.config';\n\nexport class TranslateService {\n private readonly defaultLanguageCode = inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE);\n private readonly languageService = inject(LanguageService);\n\n public readonly currentTranslation$ = this.languageService.currentLanguageCode$.pipe(\n map((languageCode) => this.translations[languageCode] ?? this.translations[this.defaultLanguageCode]),\n filter(Boolean),\n shareReplay({ refCount: true }),\n );\n\n constructor(private readonly translations: Translations) {}\n\n public translate(key: string, placeholder: Record<string, string> = {}): Observable<string> {\n return this.currentTranslation$.pipe(map((translation) => Object.keys(placeholder)\n .reduce((acc, cur) => {\n const re = RegExp(`{{\\\\s*${cur}\\\\s*}}`, 'g')\n return acc.replace(re, placeholder[cur])\n }, translation[key] ?? '')));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { getLanguageCode } from './helpers';\nimport { Translations } from './models';\nimport { TranslateService } from './translate.service';\n\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE = 'en';\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE = new InjectionToken<string>('@odx/angular/internal/translate::DefaultLanguageCode', {\n providedIn: 'root',\n factory: () => getLanguageCode(ODX_TRANSLATE_DEFAULT_LANGUAGE),\n});\n\nexport function provideTranslations(translations: Translations) {\n return {\n provide: TranslateService,\n useFactory: () => new TranslateService(translations),\n };\n}\n","import { ODX_TRANSLATE_DEFAULT_LANGUAGE } from '../translate.config';\n\nexport function getLanguageCode(language: string): string {\n const [languageCode] = language.split(/-|_/);\n\n return languageCode?.toLowerCase() ?? ODX_TRANSLATE_DEFAULT_LANGUAGE;\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '../translate.service';\n\n@Pipe({\n standalone: true,\n name: 'odxTranslate',\n pure: true,\n})\nexport class TranslatePipe implements PipeTransform {\n private readonly translateService = inject(TranslateService);\n\n public transform(key: string, placeholder: Record<string, string> = {}): Observable<string> {\n return this.translateService.translate(key, placeholder);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -27,14 +27,14 @@ function isSameDomain({ href }) {
27
27
  }
28
28
  /** @internal */
29
29
  /* istanbul ignore next */
30
- function getCSSVariables(filter, doc) {
31
- const stylesheets = Array.from((doc !== null && doc !== void 0 ? doc : document).styleSheets).filter(isSameDomain);
30
+ function getCSSVariables(filter, selector = 'body') {
31
+ const stylesheets = Array.from(document.styleSheets).filter(isSameDomain);
32
32
  return stylesheets.reduce((variables, { cssRules }) => {
33
33
  const rules = Array.from(cssRules).filter(({ type }) => type === CSSRule.STYLE_RULE);
34
- for (const { style } of rules) {
34
+ for (const { style, selectorText } of rules) {
35
35
  for (const propName of Array.from(style)) {
36
36
  const name = propName.trim();
37
- if (!name.startsWith('--') || !filter.test(name))
37
+ if (!name.startsWith('--') || !filter.test(name) || (selector && selectorText !== selector))
38
38
  continue;
39
39
  variables.push({ name, value: style.getPropertyValue(propName).trim() });
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-internal.mjs","sources":["../../../../libs/angular/internal/src/helpers/camel-to-kebab-case.ts","../../../../libs/angular/internal/src/helpers/decorator-property-name.ts","../../../../libs/angular/internal/src/helpers/deepmerge.ts","../../../../libs/angular/internal/src/helpers/get-css-variables.ts","../../../../libs/angular/internal/src/helpers/get-enum-values.ts","../../../../libs/angular/internal/src/helpers/with-mutiple-descriptors.ts","../../../../libs/angular/internal/src/decorators/css-component.ts","../../../../libs/angular/internal/src/decorators/css-modifier.ts","../../../../libs/angular/internal/src/odx-angular-internal.ts"],"sourcesContent":["/** @internal */\n/* istanbul ignore next */\nexport function camelToKebabCase(value: string): string {\n if (value !== value.toLowerCase()) {\n return value.replace(/[A-Z]/g, (match, index) => {\n const char = match.toLowerCase();\n\n return index === 0 ? char : `-${char}`;\n });\n }\n return value;\n}\n","export function decoratorPropertyName<D extends string, T extends string>(decoratorName: D, propertyName: T): `__ODX_${D}_${T}__` {\n return `__ODX_${decoratorName}_${propertyName}__`;\n}\n","import { deepmergeCustom, DeepMergeLeafURI } from 'deepmerge-ts';\n\nexport const deepmerge = deepmergeCustom<{ DeepMergeArraysURI: DeepMergeLeafURI }>({\n mergeArrays: false,\n mergeSets: false,\n});\n","interface CSSVariableDefinition {\n name: string;\n value: string;\n}\n\n/* istanbul ignore next */\nfunction isSameDomain({ href }: StyleSheet): boolean {\n return !href || href.startsWith(window.location.origin);\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function getCSSVariables(filter: RegExp, doc?: Document): CSSVariableDefinition[] {\n const stylesheets = Array.from((doc ?? document).styleSheets).filter(isSameDomain);\n\n return stylesheets.reduce<CSSVariableDefinition[]>((variables, { cssRules }) => {\n const rules = Array.from(cssRules).filter(({ type }) => type === CSSRule.STYLE_RULE) as CSSStyleRule[];\n for (const { style } of rules) {\n for (const propName of Array.from(style)) {\n const name = propName.trim();\n if (!name.startsWith('--') || !filter.test(name)) continue;\n variables.push({ name, value: style.getPropertyValue(propName).trim() });\n }\n }\n return variables;\n }, []);\n}\n","/** @internal */\nexport function getEnumValues<TEnum, TKeys extends string>(e: { [key in TKeys]: TEnum }): TEnum[] {\n const keys = Object.keys(e) as TKeys[];\n return keys.filter((key) => e[key] !== undefined).map((key) => e[key]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { decoratorPropertyName } from './decorator-property-name';\n\n/** @internal */\ninterface DescriptiorManager {\n addGetter: (value: any) => void;\n addSetter: (value: any) => void;\n init: () => void;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function ɵwithMultipleDescriptors(target: any, key: PropertyKey, propertySymbol: string): DescriptiorManager {\n const keyName = key.toString();\n const settersProperty = decoratorPropertyName('MultipleDescriptors', `setters_${target.constructor.name}_${keyName}`);\n const gettersProperty = decoratorPropertyName('MultipleDescriptors', `getters_${target.constructor.name}_${keyName}`);\n const valueProperty = decoratorPropertyName('MultipleDescriptors', `value_${keyName}`);\n const setters = (target[settersProperty] ??= []);\n const getters = (target[gettersProperty] ??= []);\n return {\n addSetter(fn: (this: any, value: any) => void) {\n setters.push({ fn, propertySymbol });\n },\n addGetter(fn: (this: any, value: any) => void) {\n getters.push({ fn });\n },\n init() {\n Object.defineProperty(target, key, {\n set(value) {\n let currentValue = value;\n for (const { fn, propertySymbol } of setters) {\n fn.call(this, currentValue);\n currentValue = this[propertySymbol];\n }\n this[valueProperty] = currentValue;\n },\n get() {\n if (Array.isArray(getters)) {\n let currentValue = this[valueProperty];\n for (const { fn } of getters) {\n currentValue = fn.call(this);\n }\n return currentValue;\n } else {\n return this[valueProperty];\n }\n },\n configurable: true,\n });\n },\n };\n}\n","import { ElementRef, Type } from '@angular/core';\nimport { decoratorPropertyName } from '../helpers';\n\nexport const CSS_COMPONENT_NAME = decoratorPropertyName('CSSComponent', 'name');\n\n/** @internal */\nexport interface CSSComponent {\n readonly element: ElementRef<HTMLElement>;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSComponent(name: string, prefix = 'odx') {\n return (target: Type<CSSComponent>) => {\n const cssClass = `${prefix}-${name}`;\n Object.defineProperty(target.prototype, CSS_COMPONENT_NAME, {\n value: cssClass,\n });\n\n (function (this: unknown, ngOnInit?: () => void) {\n target.prototype.ngOnInit = function (this: CSSComponent) {\n this.element.nativeElement.classList.add(cssClass);\n ngOnInit?.call(this);\n };\n })(target.prototype.ngOnInit);\n };\n}\n","import { camelToKebabCase, decoratorPropertyName, ɵwithMultipleDescriptors } from '../helpers';\nimport { CSSComponent, CSS_COMPONENT_NAME } from './css-component';\n\n/** @internal */\ninterface CSSModifierOptions {\n withComponentPrefix?: boolean;\n withPrefix?: boolean;\n}\n\ntype CSSComponentInstance = CSSComponent & Record<string, unknown>;\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSModifier(options?: CSSModifierOptions) {\n return (target: CSSComponent, propertyKey: PropertyKey) => {\n const propertyKeyName = propertyKey.toString();\n const propertyKeyKebabCase = camelToKebabCase(propertyKeyName);\n const propertySymbol = decoratorPropertyName('CSSModifier', propertyKeyName);\n const propertyDefaultValue = decoratorPropertyName('CSSModifier', `${propertyKeyName}_default`);\n const descriptors = ɵwithMultipleDescriptors(target, propertyKey, propertySymbol);\n\n function createModifierClass(this: CSSComponentInstance, value: unknown) {\n if (typeof value === 'boolean' || (typeof value === 'string' && value.length > 0)) {\n let modifier = typeof value === 'boolean' ? propertyKeyKebabCase : value;\n if (options?.withPrefix) {\n modifier = `${propertyKeyName}-${modifier}`;\n }\n if (options?.withComponentPrefix ?? true) {\n return `${this[CSS_COMPONENT_NAME]}--${modifier}`;\n }\n return modifier;\n }\n return null;\n }\n\n function getter(this: CSSComponentInstance) {\n return this[propertySymbol];\n }\n\n function setter(this: CSSComponentInstance, value: unknown) {\n this[propertyDefaultValue] ??= value;\n const currentValue = this[propertySymbol] ?? null;\n const nextValue = value ?? this[propertyDefaultValue] ?? null;\n\n if (nextValue !== currentValue) {\n const currentModifierClass = createModifierClass.call(this, currentValue);\n if (currentModifierClass !== null) {\n this.element.nativeElement.classList.remove(currentModifierClass);\n }\n const newModifierClass = createModifierClass.call(this, nextValue);\n if (newModifierClass !== null && (typeof nextValue === 'boolean' ? nextValue : true)) {\n this.element.nativeElement.classList.add(newModifierClass);\n }\n }\n this[propertySymbol] = nextValue;\n }\n\n descriptors.addSetter(setter);\n descriptors.addGetter(getter);\n descriptors.init();\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-internal.mjs","sources":["../../../../libs/angular/internal/src/helpers/camel-to-kebab-case.ts","../../../../libs/angular/internal/src/helpers/decorator-property-name.ts","../../../../libs/angular/internal/src/helpers/deepmerge.ts","../../../../libs/angular/internal/src/helpers/get-css-variables.ts","../../../../libs/angular/internal/src/helpers/get-enum-values.ts","../../../../libs/angular/internal/src/helpers/with-mutiple-descriptors.ts","../../../../libs/angular/internal/src/decorators/css-component.ts","../../../../libs/angular/internal/src/decorators/css-modifier.ts","../../../../libs/angular/internal/src/odx-angular-internal.ts"],"sourcesContent":["/** @internal */\n/* istanbul ignore next */\nexport function camelToKebabCase(value: string): string {\n if (value !== value.toLowerCase()) {\n return value.replace(/[A-Z]/g, (match, index) => {\n const char = match.toLowerCase();\n\n return index === 0 ? char : `-${char}`;\n });\n }\n return value;\n}\n","export function decoratorPropertyName<D extends string, T extends string>(decoratorName: D, propertyName: T): `__ODX_${D}_${T}__` {\n return `__ODX_${decoratorName}_${propertyName}__`;\n}\n","import { deepmergeCustom, DeepMergeLeafURI } from 'deepmerge-ts';\n\nexport const deepmerge = deepmergeCustom<{ DeepMergeArraysURI: DeepMergeLeafURI }>({\n mergeArrays: false,\n mergeSets: false,\n});\n","interface CSSVariableDefinition {\n name: string;\n value: string;\n}\n\n/* istanbul ignore next */\nfunction isSameDomain({ href }: StyleSheet): boolean {\n return !href || href.startsWith(window.location.origin);\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function getCSSVariables(filter: RegExp, selector = 'body'): CSSVariableDefinition[] {\n const stylesheets = Array.from(document.styleSheets).filter(isSameDomain);\n\n return stylesheets.reduce<CSSVariableDefinition[]>((variables, { cssRules }) => {\n const rules = Array.from(cssRules).filter(({ type }) => type === CSSRule.STYLE_RULE) as CSSStyleRule[];\n for (const { style, selectorText } of rules) {\n for (const propName of Array.from(style)) {\n const name = propName.trim();\n if (!name.startsWith('--') || !filter.test(name) || (selector && selectorText !== selector)) continue;\n variables.push({ name, value: style.getPropertyValue(propName).trim() });\n }\n }\n return variables;\n }, []);\n}\n","/** @internal */\nexport function getEnumValues<TEnum, TKeys extends string>(e: { [key in TKeys]: TEnum }): TEnum[] {\n const keys = Object.keys(e) as TKeys[];\n return keys.filter((key) => e[key] !== undefined).map((key) => e[key]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { decoratorPropertyName } from './decorator-property-name';\n\n/** @internal */\ninterface DescriptiorManager {\n addGetter: (value: any) => void;\n addSetter: (value: any) => void;\n init: () => void;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function ɵwithMultipleDescriptors(target: any, key: PropertyKey, propertySymbol: string): DescriptiorManager {\n const keyName = key.toString();\n const settersProperty = decoratorPropertyName('MultipleDescriptors', `setters_${target.constructor.name}_${keyName}`);\n const gettersProperty = decoratorPropertyName('MultipleDescriptors', `getters_${target.constructor.name}_${keyName}`);\n const valueProperty = decoratorPropertyName('MultipleDescriptors', `value_${keyName}`);\n const setters = (target[settersProperty] ??= []);\n const getters = (target[gettersProperty] ??= []);\n return {\n addSetter(fn: (this: any, value: any) => void) {\n setters.push({ fn, propertySymbol });\n },\n addGetter(fn: (this: any, value: any) => void) {\n getters.push({ fn });\n },\n init() {\n Object.defineProperty(target, key, {\n set(value) {\n let currentValue = value;\n for (const { fn, propertySymbol } of setters) {\n fn.call(this, currentValue);\n currentValue = this[propertySymbol];\n }\n this[valueProperty] = currentValue;\n },\n get() {\n if (Array.isArray(getters)) {\n let currentValue = this[valueProperty];\n for (const { fn } of getters) {\n currentValue = fn.call(this);\n }\n return currentValue;\n } else {\n return this[valueProperty];\n }\n },\n configurable: true,\n });\n },\n };\n}\n","import { ElementRef, Type } from '@angular/core';\nimport { decoratorPropertyName } from '../helpers';\n\nexport const CSS_COMPONENT_NAME = decoratorPropertyName('CSSComponent', 'name');\n\n/** @internal */\nexport interface CSSComponent {\n readonly element: ElementRef<HTMLElement>;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSComponent(name: string, prefix = 'odx') {\n return (target: Type<CSSComponent>) => {\n const cssClass = `${prefix}-${name}`;\n Object.defineProperty(target.prototype, CSS_COMPONENT_NAME, {\n value: cssClass,\n });\n\n (function (this: unknown, ngOnInit?: () => void) {\n target.prototype.ngOnInit = function (this: CSSComponent) {\n this.element.nativeElement.classList.add(cssClass);\n ngOnInit?.call(this);\n };\n })(target.prototype.ngOnInit);\n };\n}\n","import { camelToKebabCase, decoratorPropertyName, ɵwithMultipleDescriptors } from '../helpers';\nimport { CSSComponent, CSS_COMPONENT_NAME } from './css-component';\n\n/** @internal */\ninterface CSSModifierOptions {\n withComponentPrefix?: boolean;\n withPrefix?: boolean;\n}\n\ntype CSSComponentInstance = CSSComponent & Record<string, unknown>;\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSModifier(options?: CSSModifierOptions) {\n return (target: CSSComponent, propertyKey: PropertyKey) => {\n const propertyKeyName = propertyKey.toString();\n const propertyKeyKebabCase = camelToKebabCase(propertyKeyName);\n const propertySymbol = decoratorPropertyName('CSSModifier', propertyKeyName);\n const propertyDefaultValue = decoratorPropertyName('CSSModifier', `${propertyKeyName}_default`);\n const descriptors = ɵwithMultipleDescriptors(target, propertyKey, propertySymbol);\n\n function createModifierClass(this: CSSComponentInstance, value: unknown) {\n if (typeof value === 'boolean' || (typeof value === 'string' && value.length > 0)) {\n let modifier = typeof value === 'boolean' ? propertyKeyKebabCase : value;\n if (options?.withPrefix) {\n modifier = `${propertyKeyName}-${modifier}`;\n }\n if (options?.withComponentPrefix ?? true) {\n return `${this[CSS_COMPONENT_NAME]}--${modifier}`;\n }\n return modifier;\n }\n return null;\n }\n\n function getter(this: CSSComponentInstance) {\n return this[propertySymbol];\n }\n\n function setter(this: CSSComponentInstance, value: unknown) {\n this[propertyDefaultValue] ??= value;\n const currentValue = this[propertySymbol] ?? null;\n const nextValue = value ?? this[propertyDefaultValue] ?? null;\n\n if (nextValue !== currentValue) {\n const currentModifierClass = createModifierClass.call(this, currentValue);\n if (currentModifierClass !== null) {\n this.element.nativeElement.classList.remove(currentModifierClass);\n }\n const newModifierClass = createModifierClass.call(this, nextValue);\n if (newModifierClass !== null && (typeof nextValue === 'boolean' ? nextValue : true)) {\n this.element.nativeElement.classList.add(newModifierClass);\n }\n }\n this[propertySymbol] = nextValue;\n }\n\n descriptors.addSetter(setter);\n descriptors.addGetter(getter);\n descriptors.init();\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -25,8 +25,12 @@ class TranslateService {
25
25
  this.languageService = inject(LanguageService);
26
26
  this.currentTranslation$ = this.languageService.currentLanguageCode$.pipe(map((languageCode) => this.translations[languageCode] ?? this.translations[this.defaultLanguageCode]), filter(Boolean), shareReplay({ refCount: true }));
27
27
  }
28
- translate(key) {
29
- return this.currentTranslation$.pipe(map((translation) => translation[key] ?? ''));
28
+ translate(key, placeholder = {}) {
29
+ return this.currentTranslation$.pipe(map((translation) => Object.keys(placeholder)
30
+ .reduce((acc, cur) => {
31
+ const re = RegExp(`{{\\s*${cur}\\s*}}`, 'g');
32
+ return acc.replace(re, placeholder[cur]);
33
+ }, translation[key] ?? '')));
30
34
  }
31
35
  }
32
36
 
@@ -51,8 +55,8 @@ class TranslatePipe {
51
55
  constructor() {
52
56
  this.translateService = inject(TranslateService);
53
57
  }
54
- transform(key) {
55
- return this.translateService.translate(key);
58
+ transform(key, placeholder = {}) {
59
+ return this.translateService.translate(key, placeholder);
56
60
  }
57
61
  }
58
62
  TranslatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TranslatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-internal-translate.mjs","sources":["../../../../libs/angular/internal/translate/src/lib/services/language.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.config.ts","../../../../libs/angular/internal/translate/src/lib/helpers/get-language-code.ts","../../../../libs/angular/internal/translate/src/lib/pipes/translate.pipe.ts","../../../../libs/angular/internal/translate/src/odx-angular-internal-translate.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { getLanguageCode } from '../helpers';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from '../translate.config';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageService {\n private readonly currentLanguageCode$$ = new BehaviorSubject(inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE));\n\n public readonly currentLanguageCode$ = this.currentLanguageCode$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public setLanguage(language: string): void {\n this.currentLanguageCode$$.next(getLanguageCode(language));\n }\n}\n","import { inject } from '@angular/core';\nimport { filter, map, Observable, shareReplay } from 'rxjs';\nimport { Translations } from './models';\nimport { LanguageService } from './services';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from './translate.config';\n\nexport class TranslateService {\n private readonly defaultLanguageCode = inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE);\n private readonly languageService = inject(LanguageService);\n\n public readonly currentTranslation$ = this.languageService.currentLanguageCode$.pipe(\n map((languageCode) => this.translations[languageCode] ?? this.translations[this.defaultLanguageCode]),\n filter(Boolean),\n shareReplay({ refCount: true }),\n );\n\n constructor(private readonly translations: Translations) {}\n\n public translate(key: string): Observable<string> {\n return this.currentTranslation$.pipe(map((translation) => translation[key] ?? ''));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { getLanguageCode } from './helpers';\nimport { Translations } from './models';\nimport { TranslateService } from './translate.service';\n\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE = 'en';\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE = new InjectionToken<string>('@odx/angular/internal/translate::DefaultLanguageCode', {\n providedIn: 'root',\n factory: () => getLanguageCode(ODX_TRANSLATE_DEFAULT_LANGUAGE),\n});\n\nexport function provideTranslations(translations: Translations) {\n return {\n provide: TranslateService,\n useFactory: () => new TranslateService(translations),\n };\n}\n","import { ODX_TRANSLATE_DEFAULT_LANGUAGE } from '../translate.config';\n\nexport function getLanguageCode(language: string): string {\n const [languageCode] = language.split(/-|_/);\n\n return languageCode?.toLowerCase() ?? ODX_TRANSLATE_DEFAULT_LANGUAGE;\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '../translate.service';\n\n@Pipe({\n standalone: true,\n name: 'odxTranslate',\n pure: true,\n})\nexport class TranslatePipe implements PipeTransform {\n private readonly translateService = inject(TranslateService);\n\n public transform(key: string): Observable<string> {\n return this.translateService.translate(key);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAMa,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;QAEmB,IAAqB,CAAA,qBAAA,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAE1F,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAKjI,KAAA;AAHQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QACjC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC5D;;6GAPU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;4FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCCrB,gBAAgB,CAAA;AAU3B,IAAA,WAAA,CAA6B,YAA0B,EAAA;QAA1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AATtC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mCAAmC,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAE3C,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAClF,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EACrG,MAAM,CAAC,OAAO,CAAC,EACf,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAChC,CAAC;KAEyD;AAEpD,IAAA,SAAS,CAAC,GAAW,EAAA;QAC1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACpF;AACF;;AChBM,MAAM,8BAA8B,GAAG,KAAK;MACtC,mCAAmC,GAAG,IAAI,cAAc,CAAS,sDAAsD,EAAE;AACpI,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,eAAe,CAAC,8BAA8B,CAAC;AAC/D,CAAA,EAAE;AAEG,SAAU,mBAAmB,CAAC,YAA0B,EAAA;IAC5D,OAAO;AACL,QAAA,OAAO,EAAE,gBAAgB;QACzB,UAAU,EAAE,MAAM,IAAI,gBAAgB,CAAC,YAAY,CAAC;KACrD,CAAC;AACJ;;ACdM,SAAU,eAAe,CAAC,QAAgB,EAAA;IAC9C,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAE7C,IAAA,OAAO,YAAY,EAAE,WAAW,EAAE,IAAI,8BAA8B,CAAC;AACvE;;MCGa,aAAa,CAAA;AAL1B,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAK9D,KAAA;AAHQ,IAAA,SAAS,CAAC,GAAW,EAAA;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;KAC7C;;2GALU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,IAAI;AACX,iBAAA,CAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-internal-translate.mjs","sources":["../../../../libs/angular/internal/translate/src/lib/services/language.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.service.ts","../../../../libs/angular/internal/translate/src/lib/translate.config.ts","../../../../libs/angular/internal/translate/src/lib/helpers/get-language-code.ts","../../../../libs/angular/internal/translate/src/lib/pipes/translate.pipe.ts","../../../../libs/angular/internal/translate/src/odx-angular-internal-translate.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\nimport { getLanguageCode } from '../helpers';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from '../translate.config';\n\n@Injectable({ providedIn: 'root' })\nexport class LanguageService {\n private readonly currentLanguageCode$$ = new BehaviorSubject(inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE));\n\n public readonly currentLanguageCode$ = this.currentLanguageCode$$.pipe(distinctUntilChanged(), shareReplay({ refCount: true }));\n\n public setLanguage(language: string): void {\n this.currentLanguageCode$$.next(getLanguageCode(language));\n }\n}\n","import { inject } from '@angular/core';\nimport { filter, map, Observable, shareReplay } from 'rxjs';\nimport { Translations } from './models';\nimport { LanguageService } from './services';\nimport { ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE } from './translate.config';\n\nexport class TranslateService {\n private readonly defaultLanguageCode = inject(ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE);\n private readonly languageService = inject(LanguageService);\n\n public readonly currentTranslation$ = this.languageService.currentLanguageCode$.pipe(\n map((languageCode) => this.translations[languageCode] ?? this.translations[this.defaultLanguageCode]),\n filter(Boolean),\n shareReplay({ refCount: true }),\n );\n\n constructor(private readonly translations: Translations) {}\n\n public translate(key: string, placeholder: Record<string, string> = {}): Observable<string> {\n return this.currentTranslation$.pipe(map((translation) => Object.keys(placeholder)\n .reduce((acc, cur) => {\n const re = RegExp(`{{\\\\s*${cur}\\\\s*}}`, 'g')\n return acc.replace(re, placeholder[cur])\n }, translation[key] ?? '')));\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { getLanguageCode } from './helpers';\nimport { Translations } from './models';\nimport { TranslateService } from './translate.service';\n\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE = 'en';\nexport const ODX_TRANSLATE_DEFAULT_LANGUAGE_CODE = new InjectionToken<string>('@odx/angular/internal/translate::DefaultLanguageCode', {\n providedIn: 'root',\n factory: () => getLanguageCode(ODX_TRANSLATE_DEFAULT_LANGUAGE),\n});\n\nexport function provideTranslations(translations: Translations) {\n return {\n provide: TranslateService,\n useFactory: () => new TranslateService(translations),\n };\n}\n","import { ODX_TRANSLATE_DEFAULT_LANGUAGE } from '../translate.config';\n\nexport function getLanguageCode(language: string): string {\n const [languageCode] = language.split(/-|_/);\n\n return languageCode?.toLowerCase() ?? ODX_TRANSLATE_DEFAULT_LANGUAGE;\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '../translate.service';\n\n@Pipe({\n standalone: true,\n name: 'odxTranslate',\n pure: true,\n})\nexport class TranslatePipe implements PipeTransform {\n private readonly translateService = inject(TranslateService);\n\n public transform(key: string, placeholder: Record<string, string> = {}): Observable<string> {\n return this.translateService.translate(key, placeholder);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -27,14 +27,14 @@ function isSameDomain({ href }) {
27
27
  }
28
28
  /** @internal */
29
29
  /* istanbul ignore next */
30
- function getCSSVariables(filter, doc) {
31
- const stylesheets = Array.from((doc ?? document).styleSheets).filter(isSameDomain);
30
+ function getCSSVariables(filter, selector = 'body') {
31
+ const stylesheets = Array.from(document.styleSheets).filter(isSameDomain);
32
32
  return stylesheets.reduce((variables, { cssRules }) => {
33
33
  const rules = Array.from(cssRules).filter(({ type }) => type === CSSRule.STYLE_RULE);
34
- for (const { style } of rules) {
34
+ for (const { style, selectorText } of rules) {
35
35
  for (const propName of Array.from(style)) {
36
36
  const name = propName.trim();
37
- if (!name.startsWith('--') || !filter.test(name))
37
+ if (!name.startsWith('--') || !filter.test(name) || (selector && selectorText !== selector))
38
38
  continue;
39
39
  variables.push({ name, value: style.getPropertyValue(propName).trim() });
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-internal.mjs","sources":["../../../../libs/angular/internal/src/helpers/camel-to-kebab-case.ts","../../../../libs/angular/internal/src/helpers/decorator-property-name.ts","../../../../libs/angular/internal/src/helpers/deepmerge.ts","../../../../libs/angular/internal/src/helpers/get-css-variables.ts","../../../../libs/angular/internal/src/helpers/get-enum-values.ts","../../../../libs/angular/internal/src/helpers/with-mutiple-descriptors.ts","../../../../libs/angular/internal/src/decorators/css-component.ts","../../../../libs/angular/internal/src/decorators/css-modifier.ts","../../../../libs/angular/internal/src/odx-angular-internal.ts"],"sourcesContent":["/** @internal */\n/* istanbul ignore next */\nexport function camelToKebabCase(value: string): string {\n if (value !== value.toLowerCase()) {\n return value.replace(/[A-Z]/g, (match, index) => {\n const char = match.toLowerCase();\n\n return index === 0 ? char : `-${char}`;\n });\n }\n return value;\n}\n","export function decoratorPropertyName<D extends string, T extends string>(decoratorName: D, propertyName: T): `__ODX_${D}_${T}__` {\n return `__ODX_${decoratorName}_${propertyName}__`;\n}\n","import { deepmergeCustom, DeepMergeLeafURI } from 'deepmerge-ts';\n\nexport const deepmerge = deepmergeCustom<{ DeepMergeArraysURI: DeepMergeLeafURI }>({\n mergeArrays: false,\n mergeSets: false,\n});\n","interface CSSVariableDefinition {\n name: string;\n value: string;\n}\n\n/* istanbul ignore next */\nfunction isSameDomain({ href }: StyleSheet): boolean {\n return !href || href.startsWith(window.location.origin);\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function getCSSVariables(filter: RegExp, doc?: Document): CSSVariableDefinition[] {\n const stylesheets = Array.from((doc ?? document).styleSheets).filter(isSameDomain);\n\n return stylesheets.reduce<CSSVariableDefinition[]>((variables, { cssRules }) => {\n const rules = Array.from(cssRules).filter(({ type }) => type === CSSRule.STYLE_RULE) as CSSStyleRule[];\n for (const { style } of rules) {\n for (const propName of Array.from(style)) {\n const name = propName.trim();\n if (!name.startsWith('--') || !filter.test(name)) continue;\n variables.push({ name, value: style.getPropertyValue(propName).trim() });\n }\n }\n return variables;\n }, []);\n}\n","/** @internal */\nexport function getEnumValues<TEnum, TKeys extends string>(e: { [key in TKeys]: TEnum }): TEnum[] {\n const keys = Object.keys(e) as TKeys[];\n return keys.filter((key) => e[key] !== undefined).map((key) => e[key]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { decoratorPropertyName } from './decorator-property-name';\n\n/** @internal */\ninterface DescriptiorManager {\n addGetter: (value: any) => void;\n addSetter: (value: any) => void;\n init: () => void;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function ɵwithMultipleDescriptors(target: any, key: PropertyKey, propertySymbol: string): DescriptiorManager {\n const keyName = key.toString();\n const settersProperty = decoratorPropertyName('MultipleDescriptors', `setters_${target.constructor.name}_${keyName}`);\n const gettersProperty = decoratorPropertyName('MultipleDescriptors', `getters_${target.constructor.name}_${keyName}`);\n const valueProperty = decoratorPropertyName('MultipleDescriptors', `value_${keyName}`);\n const setters = (target[settersProperty] ??= []);\n const getters = (target[gettersProperty] ??= []);\n return {\n addSetter(fn: (this: any, value: any) => void) {\n setters.push({ fn, propertySymbol });\n },\n addGetter(fn: (this: any, value: any) => void) {\n getters.push({ fn });\n },\n init() {\n Object.defineProperty(target, key, {\n set(value) {\n let currentValue = value;\n for (const { fn, propertySymbol } of setters) {\n fn.call(this, currentValue);\n currentValue = this[propertySymbol];\n }\n this[valueProperty] = currentValue;\n },\n get() {\n if (Array.isArray(getters)) {\n let currentValue = this[valueProperty];\n for (const { fn } of getters) {\n currentValue = fn.call(this);\n }\n return currentValue;\n } else {\n return this[valueProperty];\n }\n },\n configurable: true,\n });\n },\n };\n}\n","import { ElementRef, Type } from '@angular/core';\nimport { decoratorPropertyName } from '../helpers';\n\nexport const CSS_COMPONENT_NAME = decoratorPropertyName('CSSComponent', 'name');\n\n/** @internal */\nexport interface CSSComponent {\n readonly element: ElementRef<HTMLElement>;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSComponent(name: string, prefix = 'odx') {\n return (target: Type<CSSComponent>) => {\n const cssClass = `${prefix}-${name}`;\n Object.defineProperty(target.prototype, CSS_COMPONENT_NAME, {\n value: cssClass,\n });\n\n (function (this: unknown, ngOnInit?: () => void) {\n target.prototype.ngOnInit = function (this: CSSComponent) {\n this.element.nativeElement.classList.add(cssClass);\n ngOnInit?.call(this);\n };\n })(target.prototype.ngOnInit);\n };\n}\n","import { camelToKebabCase, decoratorPropertyName, ɵwithMultipleDescriptors } from '../helpers';\nimport { CSSComponent, CSS_COMPONENT_NAME } from './css-component';\n\n/** @internal */\ninterface CSSModifierOptions {\n withComponentPrefix?: boolean;\n withPrefix?: boolean;\n}\n\ntype CSSComponentInstance = CSSComponent & Record<string, unknown>;\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSModifier(options?: CSSModifierOptions) {\n return (target: CSSComponent, propertyKey: PropertyKey) => {\n const propertyKeyName = propertyKey.toString();\n const propertyKeyKebabCase = camelToKebabCase(propertyKeyName);\n const propertySymbol = decoratorPropertyName('CSSModifier', propertyKeyName);\n const propertyDefaultValue = decoratorPropertyName('CSSModifier', `${propertyKeyName}_default`);\n const descriptors = ɵwithMultipleDescriptors(target, propertyKey, propertySymbol);\n\n function createModifierClass(this: CSSComponentInstance, value: unknown) {\n if (typeof value === 'boolean' || (typeof value === 'string' && value.length > 0)) {\n let modifier = typeof value === 'boolean' ? propertyKeyKebabCase : value;\n if (options?.withPrefix) {\n modifier = `${propertyKeyName}-${modifier}`;\n }\n if (options?.withComponentPrefix ?? true) {\n return `${this[CSS_COMPONENT_NAME]}--${modifier}`;\n }\n return modifier;\n }\n return null;\n }\n\n function getter(this: CSSComponentInstance) {\n return this[propertySymbol];\n }\n\n function setter(this: CSSComponentInstance, value: unknown) {\n this[propertyDefaultValue] ??= value;\n const currentValue = this[propertySymbol] ?? null;\n const nextValue = value ?? this[propertyDefaultValue] ?? null;\n\n if (nextValue !== currentValue) {\n const currentModifierClass = createModifierClass.call(this, currentValue);\n if (currentModifierClass !== null) {\n this.element.nativeElement.classList.remove(currentModifierClass);\n }\n const newModifierClass = createModifierClass.call(this, nextValue);\n if (newModifierClass !== null && (typeof nextValue === 'boolean' ? nextValue : true)) {\n this.element.nativeElement.classList.add(newModifierClass);\n }\n }\n this[propertySymbol] = nextValue;\n }\n\n descriptors.addSetter(setter);\n descriptors.addGetter(getter);\n descriptors.init();\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-internal.mjs","sources":["../../../../libs/angular/internal/src/helpers/camel-to-kebab-case.ts","../../../../libs/angular/internal/src/helpers/decorator-property-name.ts","../../../../libs/angular/internal/src/helpers/deepmerge.ts","../../../../libs/angular/internal/src/helpers/get-css-variables.ts","../../../../libs/angular/internal/src/helpers/get-enum-values.ts","../../../../libs/angular/internal/src/helpers/with-mutiple-descriptors.ts","../../../../libs/angular/internal/src/decorators/css-component.ts","../../../../libs/angular/internal/src/decorators/css-modifier.ts","../../../../libs/angular/internal/src/odx-angular-internal.ts"],"sourcesContent":["/** @internal */\n/* istanbul ignore next */\nexport function camelToKebabCase(value: string): string {\n if (value !== value.toLowerCase()) {\n return value.replace(/[A-Z]/g, (match, index) => {\n const char = match.toLowerCase();\n\n return index === 0 ? char : `-${char}`;\n });\n }\n return value;\n}\n","export function decoratorPropertyName<D extends string, T extends string>(decoratorName: D, propertyName: T): `__ODX_${D}_${T}__` {\n return `__ODX_${decoratorName}_${propertyName}__`;\n}\n","import { deepmergeCustom, DeepMergeLeafURI } from 'deepmerge-ts';\n\nexport const deepmerge = deepmergeCustom<{ DeepMergeArraysURI: DeepMergeLeafURI }>({\n mergeArrays: false,\n mergeSets: false,\n});\n","interface CSSVariableDefinition {\n name: string;\n value: string;\n}\n\n/* istanbul ignore next */\nfunction isSameDomain({ href }: StyleSheet): boolean {\n return !href || href.startsWith(window.location.origin);\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function getCSSVariables(filter: RegExp, selector = 'body'): CSSVariableDefinition[] {\n const stylesheets = Array.from(document.styleSheets).filter(isSameDomain);\n\n return stylesheets.reduce<CSSVariableDefinition[]>((variables, { cssRules }) => {\n const rules = Array.from(cssRules).filter(({ type }) => type === CSSRule.STYLE_RULE) as CSSStyleRule[];\n for (const { style, selectorText } of rules) {\n for (const propName of Array.from(style)) {\n const name = propName.trim();\n if (!name.startsWith('--') || !filter.test(name) || (selector && selectorText !== selector)) continue;\n variables.push({ name, value: style.getPropertyValue(propName).trim() });\n }\n }\n return variables;\n }, []);\n}\n","/** @internal */\nexport function getEnumValues<TEnum, TKeys extends string>(e: { [key in TKeys]: TEnum }): TEnum[] {\n const keys = Object.keys(e) as TKeys[];\n return keys.filter((key) => e[key] !== undefined).map((key) => e[key]);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { decoratorPropertyName } from './decorator-property-name';\n\n/** @internal */\ninterface DescriptiorManager {\n addGetter: (value: any) => void;\n addSetter: (value: any) => void;\n init: () => void;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function ɵwithMultipleDescriptors(target: any, key: PropertyKey, propertySymbol: string): DescriptiorManager {\n const keyName = key.toString();\n const settersProperty = decoratorPropertyName('MultipleDescriptors', `setters_${target.constructor.name}_${keyName}`);\n const gettersProperty = decoratorPropertyName('MultipleDescriptors', `getters_${target.constructor.name}_${keyName}`);\n const valueProperty = decoratorPropertyName('MultipleDescriptors', `value_${keyName}`);\n const setters = (target[settersProperty] ??= []);\n const getters = (target[gettersProperty] ??= []);\n return {\n addSetter(fn: (this: any, value: any) => void) {\n setters.push({ fn, propertySymbol });\n },\n addGetter(fn: (this: any, value: any) => void) {\n getters.push({ fn });\n },\n init() {\n Object.defineProperty(target, key, {\n set(value) {\n let currentValue = value;\n for (const { fn, propertySymbol } of setters) {\n fn.call(this, currentValue);\n currentValue = this[propertySymbol];\n }\n this[valueProperty] = currentValue;\n },\n get() {\n if (Array.isArray(getters)) {\n let currentValue = this[valueProperty];\n for (const { fn } of getters) {\n currentValue = fn.call(this);\n }\n return currentValue;\n } else {\n return this[valueProperty];\n }\n },\n configurable: true,\n });\n },\n };\n}\n","import { ElementRef, Type } from '@angular/core';\nimport { decoratorPropertyName } from '../helpers';\n\nexport const CSS_COMPONENT_NAME = decoratorPropertyName('CSSComponent', 'name');\n\n/** @internal */\nexport interface CSSComponent {\n readonly element: ElementRef<HTMLElement>;\n}\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSComponent(name: string, prefix = 'odx') {\n return (target: Type<CSSComponent>) => {\n const cssClass = `${prefix}-${name}`;\n Object.defineProperty(target.prototype, CSS_COMPONENT_NAME, {\n value: cssClass,\n });\n\n (function (this: unknown, ngOnInit?: () => void) {\n target.prototype.ngOnInit = function (this: CSSComponent) {\n this.element.nativeElement.classList.add(cssClass);\n ngOnInit?.call(this);\n };\n })(target.prototype.ngOnInit);\n };\n}\n","import { camelToKebabCase, decoratorPropertyName, ɵwithMultipleDescriptors } from '../helpers';\nimport { CSSComponent, CSS_COMPONENT_NAME } from './css-component';\n\n/** @internal */\ninterface CSSModifierOptions {\n withComponentPrefix?: boolean;\n withPrefix?: boolean;\n}\n\ntype CSSComponentInstance = CSSComponent & Record<string, unknown>;\n\n/** @internal */\n/* istanbul ignore next */\nexport function CSSModifier(options?: CSSModifierOptions) {\n return (target: CSSComponent, propertyKey: PropertyKey) => {\n const propertyKeyName = propertyKey.toString();\n const propertyKeyKebabCase = camelToKebabCase(propertyKeyName);\n const propertySymbol = decoratorPropertyName('CSSModifier', propertyKeyName);\n const propertyDefaultValue = decoratorPropertyName('CSSModifier', `${propertyKeyName}_default`);\n const descriptors = ɵwithMultipleDescriptors(target, propertyKey, propertySymbol);\n\n function createModifierClass(this: CSSComponentInstance, value: unknown) {\n if (typeof value === 'boolean' || (typeof value === 'string' && value.length > 0)) {\n let modifier = typeof value === 'boolean' ? propertyKeyKebabCase : value;\n if (options?.withPrefix) {\n modifier = `${propertyKeyName}-${modifier}`;\n }\n if (options?.withComponentPrefix ?? true) {\n return `${this[CSS_COMPONENT_NAME]}--${modifier}`;\n }\n return modifier;\n }\n return null;\n }\n\n function getter(this: CSSComponentInstance) {\n return this[propertySymbol];\n }\n\n function setter(this: CSSComponentInstance, value: unknown) {\n this[propertyDefaultValue] ??= value;\n const currentValue = this[propertySymbol] ?? null;\n const nextValue = value ?? this[propertyDefaultValue] ?? null;\n\n if (nextValue !== currentValue) {\n const currentModifierClass = createModifierClass.call(this, currentValue);\n if (currentModifierClass !== null) {\n this.element.nativeElement.classList.remove(currentModifierClass);\n }\n const newModifierClass = createModifierClass.call(this, nextValue);\n if (newModifierClass !== null && (typeof nextValue === 'boolean' ? nextValue : true)) {\n this.element.nativeElement.classList.add(newModifierClass);\n }\n }\n this[propertySymbol] = nextValue;\n }\n\n descriptors.addSetter(setter);\n descriptors.addGetter(getter);\n descriptors.init();\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ interface CSSVariableDefinition {
3
3
  value: string;
4
4
  }
5
5
  /** @internal */
6
- export declare function getCSSVariables(filter: RegExp, doc?: Document): CSSVariableDefinition[];
6
+ export declare function getCSSVariables(filter: RegExp, selector?: string): CSSVariableDefinition[];
7
7
  export {};
@@ -3,7 +3,7 @@ import { Observable } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class TranslatePipe implements PipeTransform {
5
5
  private readonly translateService;
6
- transform(key: string): Observable<string>;
6
+ transform(key: string, placeholder?: Record<string, string>): Observable<string>;
7
7
  static ɵfac: i0.ɵɵFactoryDeclaration<TranslatePipe, never>;
8
8
  static ɵpipe: i0.ɵɵPipeDeclaration<TranslatePipe, "odxTranslate", true>;
9
9
  }
@@ -6,5 +6,5 @@ export declare class TranslateService {
6
6
  private readonly languageService;
7
7
  readonly currentTranslation$: Observable<import("./models").Translation>;
8
8
  constructor(translations: Translations);
9
- translate(key: string): Observable<string>;
9
+ translate(key: string, placeholder?: Record<string, string>): Observable<string>;
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "2.14.5",
3
+ "version": "2.15.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {