nuxeo-development-framework 6.1.5 → 6.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +688 -1009
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.js +7 -5
  4. package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +9 -9
  5. package/esm2015/lib/components/ndf-filters/models/base-field-config.js +1 -1
  6. package/esm2015/lib/components/ndf-filters/pipes/check-condition.pipe.js +9 -4
  7. package/esm2015/lib/components/ndf-filters/pipes/evaluate-label.pipe.js +3 -3
  8. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +2 -1
  9. package/esm2015/lib/components/pdf-tron/pdftron/silent-pdftron.service.js +2 -1
  10. package/esm2015/lib/components/reports/ndf-reports/models/details.js +1 -1
  11. package/esm2015/lib/components/reports/ndf-reports/models/graph-definition.js +1 -1
  12. package/esm2015/lib/components/reports/ndf-reports/pipes/check-condition.pipe.js +3 -3
  13. package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +28 -15
  14. package/esm2015/lib/components/reports/ndf-reports/services/reports-hooks.service.js +3 -3
  15. package/esm2015/lib/components/tables/dynamic-table/dynamic-table/dynamic-table.component.js +1 -1
  16. package/esm2015/lib/components/tables/dynamic-table/services/table-hooks.service.js +4 -4
  17. package/esm2015/lib/components/tables/ndf-table/models/table-config.js +1 -1
  18. package/esm2015/lib/shared/index.js +5 -6
  19. package/esm2015/lib/shared-services/global-pdftron.service.js +2 -1
  20. package/esm2015/public-api.js +12 -13
  21. package/fesm2015/nuxeo-development-framework.js +644 -938
  22. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  23. package/lib/components/ndf-filters/components/__parts/filter-autocomplete-input/filter-autocomplete.service.d.ts +1 -2
  24. package/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.d.ts +3 -3
  25. package/lib/components/ndf-filters/models/base-field-config.d.ts +1 -1
  26. package/lib/components/ndf-filters/pipes/check-condition.pipe.d.ts +1 -2
  27. package/lib/components/reports/ndf-reports/models/details.d.ts +1 -1
  28. package/lib/components/reports/ndf-reports/models/graph-definition.d.ts +2 -2
  29. package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts +2 -2
  30. package/lib/components/tables/ndf-table/models/table-config.d.ts +1 -1
  31. package/lib/shared/index.d.ts +7 -5
  32. package/package.json +1 -1
  33. package/public-api.d.ts +11 -12
  34. package/esm2015/lib/shared/evaluator/evaluator.js +0 -318
  35. package/esm2015/lib/shared/evaluator/index.js +0 -3
  36. package/esm2015/lib/shared/evaluator/types.js +0 -2
  37. package/lib/shared/evaluator/evaluator.d.ts +0 -79
  38. package/lib/shared/evaluator/index.d.ts +0 -2
  39. package/lib/shared/evaluator/types.d.ts +0 -18
@@ -32,7 +32,7 @@ import * as i7 from '@angular/material/tooltip';
32
32
  import { MatTooltipModule } from '@angular/material/tooltip';
33
33
  import { merge } from 'lodash-es';
34
34
  import * as _ from 'lodash';
35
- import ___default, { cloneDeep, filter, sortBy, each, unionWith, isEqual, isNil, keys, trim, get, set, values, isObject as isObject$1, isDate, isBoolean, isNumber, union, assign, keyBy, flatMap, map as map$1 } from 'lodash';
35
+ import ___default, { cloneDeep, filter, sortBy, each, unionWith, isEqual, isNil, isObject as isObject$1, isDate, isBoolean, isNumber, union, assign, keyBy, values, flatMap, map as map$1 } from 'lodash';
36
36
  import * as moment$6 from 'moment';
37
37
  import moment__default, { isMoment } from 'moment';
38
38
  import _omit from 'lodash/omit';
@@ -96,7 +96,6 @@ import * as i7$3 from '@angular/cdk/drag-drop';
96
96
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
97
97
  import * as i5$3 from '@angular/material/autocomplete';
98
98
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
99
- import stringHash from 'string-hash';
100
99
  import * as i5$4 from 'ngx-mask';
101
100
  import { NgxMaskModule } from 'ngx-mask';
102
101
  import * as moment$7 from 'moment/moment';
@@ -136,9 +135,9 @@ import { getDOMSocketPosition } from 'rete-render-utils';
136
135
  import * as i7$4 from '@angular/material/badge';
137
136
  import { MatBadgeModule } from '@angular/material/badge';
138
137
  import { MatToolbarModule } from '@angular/material/toolbar';
139
- import colorLib from '@kurkle/color';
140
138
  import * as i2$8 from 'ngx-markdown';
141
139
  import { MarkdownModule } from 'ngx-markdown';
140
+ import colorLib from '@kurkle/color';
142
141
  import * as i6$4 from '@angular/cdk/accordion';
143
142
  import { CdkAccordionModule } from '@angular/cdk/accordion';
144
143
  import _flatMap from 'lodash/flatMap';
@@ -14849,11 +14848,13 @@ class FilterAutocompleteService extends BaseService {
14849
14848
  payload: {
14850
14849
  name: query.field || fieldConfig.fieldKey,
14851
14850
  operator: (_a = query.operator) !== null && _a !== void 0 ? _a : COMPARISON_OPERATOR.like,
14852
- value: (query === null || query === void 0 ? void 0 : query.template) ? this.replacePlaceholder(query === null || query === void 0 ? void 0 : query.template, searchText) : `'%${searchText}%'`
14853
- }
14851
+ value: (query === null || query === void 0 ? void 0 : query.template)
14852
+ ? this.replacePlaceholder(query === null || query === void 0 ? void 0 : query.template, searchText)
14853
+ : `'%${searchText}%'`,
14854
+ },
14854
14855
  }).pipe(map((response) => Object.values(response)[0]), switchMap((response) => this._aggregationService.prepareAggregationFiled({
14855
14856
  fieldConfig: fieldConfig,
14856
- aggregation: response
14857
+ aggregation: response,
14857
14858
  })));
14858
14859
  }
14859
14860
  replacePlaceholder(template, searchText) {
@@ -14865,7 +14866,7 @@ FilterAutocompleteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.
14865
14866
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilterAutocompleteService, decorators: [{
14866
14867
  type: Injectable,
14867
14868
  args: [{
14868
- providedIn: 'root'
14869
+ providedIn: 'root',
14869
14870
  }]
14870
14871
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
14871
14872
 
@@ -14934,322 +14935,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
14934
14935
  }]
14935
14936
  }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
14936
14937
 
14937
- /**
14938
- * Creates a secure context for function evaluation that prevents access to the window object.
14939
- * @returns {Record<string, any>} A secure context object with safe properties.
14940
- */
14941
- function createSecureContext() {
14942
- // Create a secure context with only safe properties
14943
- return {
14944
- // Add any safe globals here that should be accessible
14945
- console: {
14946
- log: console.log,
14947
- warn: console.warn,
14948
- error: console.error
14949
- },
14950
- // Add other safe objects/functions as needed
14951
- Math,
14952
- Date,
14953
- Number,
14954
- String,
14955
- Boolean,
14956
- Array,
14957
- Object,
14958
- JSON,
14959
- // Prevent access to window
14960
- window: undefined,
14961
- self: undefined,
14962
- globalThis: undefined,
14963
- _: ___default // Include lodash if needed, but ensure it's used safely
14964
- };
14965
- }
14966
- /**
14967
- * A utility class for evaluating expressions, interpolating strings, and working with templates.
14968
- * This class provides static methods for dynamic evaluation of code, string interpolation,
14969
- * and template processing with caching capabilities.
14970
- */
14971
- class Evaluator {
14972
- /**
14973
- * Creates a function from a string or returns the function if already provided.
14974
- * Uses a secure context to prevent access to the window object by default.
14975
- * @param {string|Function} func - The function or string to convert to a function.
14976
- * @param {...any} params - The parameters to pass to the function.
14977
- * @param {EvaluatorOptions} [options={}] - Optional configuration for the evaluation.
14978
- * @returns {Function} - The resulting function.
14979
- */
14980
- static evaluator(func, ...params) {
14981
- // Extract options if the last parameter is an options object
14982
- let options = {};
14983
- if (params.length > 0 &&
14984
- params[params.length - 1] &&
14985
- typeof params[params.length - 1] === 'object' &&
14986
- 'securityMode' in params[params.length - 1]) {
14987
- options = params.pop();
14988
- }
14989
- if (typeof func === 'function') {
14990
- return func;
14991
- }
14992
- if (typeof params[0] === 'object') {
14993
- params = keys(params[0]);
14994
- }
14995
- // Check if we should use secure mode (default) or unsafe mode
14996
- const securityMode = options.securityMode || 'secure';
14997
- if (securityMode === 'unsafe') {
14998
- // In unsafe mode, create a function with access to all globals
14999
- return new Function(...params, func);
15000
- }
15001
- const sandbox = createSecureContext();
15002
- const sandboxKeys = Object.keys(sandbox);
15003
- const sandboxAssignments = sandboxKeys.map((key) => `const ${key} = sandbox.${key};`).join('');
15004
- const wrapper = new Function(...params, 'sandbox', `${sandboxAssignments}${func}`);
15005
- return (...args) => wrapper(...args, sandbox);
15006
- }
15007
- /**
15008
- * Replaces template expressions in a string with values from data.
15009
- * Supports function calls within templates and fallback values using || syntax.
15010
- * By default, ensures evaluation happens in a secure context to prevent access to window object.
15011
- * @param {string} rawTemplate - The template string containing expressions to interpolate.
15012
- * @param {Record<string, any>} data - The data object containing values to use for interpolation.
15013
- * @param {EvaluatorOptions} [options={}] - Optional configuration for the interpolation process.
15014
- * @returns {string} - The interpolated string with all expressions replaced with actual values.
15015
- */
15016
- static interpolateString(rawTemplate, data, options = {}) {
15017
- if (!rawTemplate) {
15018
- return '';
15019
- }
15020
- if (typeof rawTemplate !== 'string') {
15021
- return rawTemplate.toString();
15022
- }
15023
- // Check if we should use secure mode (default) or unsafe mode
15024
- const securityMode = options.securityMode || 'secure';
15025
- // Create a secure data object if needed
15026
- const secureData = securityMode === 'unsafe'
15027
- ? data
15028
- : Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), {
15029
- // Ensure these remain undefined
15030
- window: undefined, self: undefined, globalThis: undefined });
15031
- return rawTemplate.replace(/({{\s*(.*?)\s*}})/g, (match, $1, expression) => {
15032
- if (expression.indexOf('(') !== -1) {
15033
- return expression.replace(/([^(]+)\(([^)]+)\s*\);?/, (_, fnName, argsStr) => {
15034
- fnName = trim(fnName);
15035
- const func = get(secureData, fnName);
15036
- if (func) {
15037
- if (argsStr) {
15038
- const args = argsStr.split(',').map((arg) => {
15039
- const trimmed = trim(arg);
15040
- if (/^['"]/.test(trimmed))
15041
- return trimmed.slice(1, -1);
15042
- return get(secureData, trimmed);
15043
- });
15044
- return Evaluator.evaluate(func, args, '', false, secureData, options);
15045
- }
15046
- return Evaluator.evaluate(func, [], '', false, secureData, options);
15047
- }
15048
- return '';
15049
- });
15050
- }
15051
- else {
15052
- let dataPath = expression;
15053
- if (expression.indexOf('?') !== -1) {
15054
- dataPath = expression.replace(/\?\./g, '.');
15055
- }
15056
- const parts = dataPath.split('||').map((item) => item.trim());
15057
- let value = '';
15058
- let path = '';
15059
- for (let i = 0; i < parts.length; i++) {
15060
- path = parts[i];
15061
- if (___default.has(secureData, path)) {
15062
- value = ___default.get(secureData, path);
15063
- break;
15064
- }
15065
- }
15066
- if (options.data) {
15067
- set(options.data, path, value);
15068
- }
15069
- return value;
15070
- }
15071
- });
15072
- }
15073
- /**
15074
- * Performs an evaluation using the evaluation context of this component.
15075
- * By default, ensures evaluation happens in a secure context to prevent access to window object.
15076
- * @param {string|Function|object} func - The function or string to evaluate.
15077
- * @param {object} args - The arguments to pass to the evaluation.
15078
- * @param {string} ret - The name of the variable within the evaluation context to return.
15079
- * @param {boolean} interpolate - Determines if it should replace all {{ }} token references with actual data.
15080
- * @param {object} context - - The evaluation context.
15081
- * @param {EvaluatorOptions } options - The options to pass to the evaluation.
15082
- * @returns {*} - The result of the evaluation.
15083
- */
15084
- static evaluate(func, args = {}, ret = 'show', interpolate = false, context = {}, options = {}) {
15085
- let returnVal = null;
15086
- const field = args.field ? args.field : { key: 'unknown' };
15087
- const fieldKey = field.key;
15088
- if (typeof func === 'string') {
15089
- if (ret) {
15090
- func = `var ${ret};${func};return ${ret}`;
15091
- }
15092
- if (interpolate) {
15093
- func = Evaluator.interpolate(func, args, options);
15094
- }
15095
- try {
15096
- // Pass the security mode option to the evaluator
15097
- const evaluatorOptions = { securityMode: options.securityMode || 'secure' };
15098
- func = Evaluator.evaluator(func, args, context, evaluatorOptions);
15099
- args = Array.isArray(args) ? args : values(args);
15100
- }
15101
- catch (err) {
15102
- console.warn(`An error occured within the custom function for ${fieldKey}`, err);
15103
- returnVal = null;
15104
- func = false;
15105
- }
15106
- }
15107
- if (typeof func === 'function') {
15108
- try {
15109
- returnVal = Evaluator.execute(func, args, context, options);
15110
- }
15111
- catch (err) {
15112
- returnVal = null;
15113
- console.warn(`An error occured within custom function for ${fieldKey}`, err);
15114
- }
15115
- }
15116
- else if (func) {
15117
- console.warn(`Unknown function type for ${fieldKey}`);
15118
- }
15119
- return returnVal;
15120
- }
15121
- /**
15122
- * Executes a function with provided arguments and context.
15123
- * By default, ensures execution happens in a secure context to prevent access to window object.
15124
- * @param {Function} func - The function to execute.
15125
- * @param {any[]|Record<string, any>} args - The arguments to pass to the function, either as an array or object.
15126
- * @param {Record<string, any>} [context={}] - The context (this) to use when executing the function.
15127
- * @param {EvaluatorOptions} [options={}] - Optional configuration for the execution.
15128
- * @returns {any} - The result of the function execution.
15129
- */
15130
- static execute(func, args, context = {}, options = {}) {
15131
- // Check if we should use secure mode (default) or unsafe mode
15132
- const securityMode = options.securityMode || 'secure';
15133
- if (securityMode === 'unsafe') {
15134
- // In unsafe mode, execute with the original context
15135
- return Array.isArray(args) ? func.apply(context, args) : func.call(context, args);
15136
- }
15137
- else {
15138
- // In secure mode, create a secure context by merging the provided context with our secure context
15139
- const secureContext = Object.assign(Object.assign(Object.assign({}, createSecureContext()), context), {
15140
- // Ensure these remain undefined even if they were in the provided context
15141
- window: undefined, self: undefined, globalThis: undefined });
15142
- // Execute the function with the secure context
15143
- return Array.isArray(args) ? func.apply(secureContext, args) : func.call(secureContext, args);
15144
- }
15145
- }
15146
- /**
15147
- * Creates a template function from a string with caching for performance.
15148
- * By default, ensures the template function executes in a secure context.
15149
- * @param {string} template - The template string to compile into a function.
15150
- * @param {string} [hash] - Optional hash to use as cache key. If not provided, a hash will be generated from the template.
15151
- * @param {EvaluatorOptions} [options={}] - Optional configuration for the template.
15152
- * @returns {Function|undefined} - The compiled template function, or undefined if compilation fails.
15153
- */
15154
- static template(template, hash, options = {}) {
15155
- hash = hash || stringHash(template).toString();
15156
- // If hash contains options object, extract it
15157
- if (typeof hash === 'object' && 'securityMode' in hash) {
15158
- options = hash;
15159
- hash = stringHash(template).toString();
15160
- }
15161
- // Check if we have a cached version
15162
- const cacheKey = hash + (options.securityMode || 'secure');
15163
- if (Evaluator.cache[cacheKey]) {
15164
- return Evaluator.cache[cacheKey];
15165
- }
15166
- try {
15167
- template = template.replace(/ctx\./g, '');
15168
- // Create the template function using lodash
15169
- const templateFunc = ___default.template(template, Evaluator.templateSettings);
15170
- // Check if we should use secure mode (default) or unsafe mode
15171
- const securityMode = options.securityMode || 'secure';
15172
- if (securityMode === 'unsafe') {
15173
- // In unsafe mode, return the original template function
15174
- return (Evaluator.cache[cacheKey] = templateFunc);
15175
- }
15176
- else {
15177
- // In secure mode, wrap the template function to ensure it runs in a secure context
15178
- const secureTemplateFunc = (data) => {
15179
- // Create a secure context for the template
15180
- const secureData = Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), {
15181
- // Ensure these remain undefined
15182
- window: undefined, self: undefined, globalThis: undefined });
15183
- return templateFunc(secureData);
15184
- };
15185
- // Cache and return the secure template function
15186
- return (Evaluator.cache[cacheKey] = secureTemplateFunc);
15187
- }
15188
- }
15189
- catch (err) {
15190
- console.warn('Error while processing template', err, template);
15191
- return undefined;
15192
- }
15193
- }
15194
- /**
15195
- * Interpolates a template with data, handling both function templates and string templates.
15196
- * By default, ensures interpolation happens in a secure context to prevent access to window object.
15197
- * @param {string|Function} rawTemplate - The template to interpolate, either as a string or a function.
15198
- * @param {Record<string, any>} data - The data object to use for interpolation.
15199
- * @param {EvaluatorOptions} options - Options for the interpolation process.
15200
- * @returns {string|any} - The result of the interpolation, typically a string but could be any type depending on the template.
15201
- */
15202
- static interpolate(rawTemplate, data, options = {}) {
15203
- if (typeof rawTemplate === 'function') {
15204
- try {
15205
- // If the template is a function, execute it with the data
15206
- // We can't directly secure a provided function, but we can use execute
15207
- // to run it in a secure context if needed
15208
- if (options.securityMode !== 'unsafe') {
15209
- const secureData = Object.assign(Object.assign(Object.assign({}, createSecureContext()), data), { window: undefined, self: undefined, globalThis: undefined });
15210
- return rawTemplate(secureData);
15211
- }
15212
- else {
15213
- return rawTemplate(data);
15214
- }
15215
- }
15216
- catch (err) {
15217
- console.warn('Error interpolating template', err, data);
15218
- return err.message;
15219
- }
15220
- }
15221
- rawTemplate = String(rawTemplate);
15222
- // Pass the security mode option to the template method
15223
- const template = Evaluator.template(rawTemplate, undefined, options);
15224
- if (typeof template === 'function') {
15225
- try {
15226
- return template(data);
15227
- }
15228
- catch (err) {
15229
- console.warn('Error interpolating template', err, rawTemplate, data);
15230
- return err.message;
15231
- }
15232
- }
15233
- return template;
15234
- }
15235
- }
15236
- /**
15237
- * Cache for storing compiled template functions to improve performance.
15238
- * Keys are string hashes of the template, values are the compiled functions.
15239
- */
15240
- Evaluator.cache = {};
15241
- /**
15242
- * Settings for template processing, defining regex patterns for different template operations.
15243
- * - interpolate: Pattern for variable interpolation ({{ variable }})
15244
- * - evaluate: Pattern for code evaluation ({% code %})
15245
- * - escape: Pattern for HTML escaping ({{{ variable }}})
15246
- */
15247
- Evaluator.templateSettings = {
15248
- interpolate: /{{([\s\S]+?)}}/g,
15249
- evaluate: /\{%([\s\S]+?)%\}/g,
15250
- escape: /\{\{\{([\s\S]+?)\}\}\}/g
15251
- };
15252
-
15253
14938
  class EvaluatorLabelPipe {
15254
14939
  /**
15255
14940
  *
@@ -15262,7 +14947,7 @@ class EvaluatorLabelPipe {
15262
14947
  return '';
15263
14948
  }
15264
14949
  try {
15265
- const text = Evaluator.interpolate(option.labelTemplate, {
14950
+ const text = Utils.interpolate(option.labelTemplate, {
15266
14951
  language,
15267
14952
  option,
15268
14953
  moment: moment$6,
@@ -19031,11 +18716,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
19031
18716
  type: Input
19032
18717
  }] } });
19033
18718
 
19034
- const NDF_EDITOR_TYPE = {
19035
- REPORTS: 'report',
19036
- TABLES: 'table'
19037
- };
19038
-
19039
18719
  class BaseField extends BaseCustomValueAccessor {
19040
18720
  constructor() {
19041
18721
  super(...arguments);
@@ -19396,7 +19076,7 @@ class FiltersPanelComponent extends BaseFiltersPanel {
19396
19076
  var _a;
19397
19077
  this.formGroup.patchValue(obj.query, {
19398
19078
  emitEvent: (_a = obj === null || obj === void 0 ? void 0 : obj.emitEvent) !== null && _a !== void 0 ? _a : true,
19399
- onlySelf: obj === null || obj === void 0 ? void 0 : obj.onlySelf
19079
+ onlySelf: obj === null || obj === void 0 ? void 0 : obj.onlySelf,
19400
19080
  });
19401
19081
  }
19402
19082
  _prepareFiltersForm() {
@@ -19440,12 +19120,12 @@ class FiltersPanelComponent extends BaseFiltersPanel {
19440
19120
  const condition = (_a = field.config) === null || _a === void 0 ? void 0 : _a.condition;
19441
19121
  try {
19442
19122
  const isVisible = !condition ||
19443
- Evaluator.evaluate(condition, ___default.cloneDeep({
19123
+ Utils.evaluate(condition, ___default.cloneDeep({
19444
19124
  aggregations: this.aggregations,
19445
19125
  language: this.currentLang,
19446
19126
  user: this.nuxeoService.nuxeoClient.user,
19447
- values: this.formGroup.getRawValue()
19448
- }));
19127
+ values: this.formGroup.getRawValue(),
19128
+ }), 'show');
19449
19129
  this.visibleFields[fieldKey] = isVisible;
19450
19130
  if (!isVisible) {
19451
19131
  const control = this.formGroup.get(fieldKey);
@@ -19470,7 +19150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
19470
19150
  selector: 'app-filters-panel',
19471
19151
  templateUrl: './filters-panel.component.html',
19472
19152
  styleUrls: ['./filters-panel.component.scss'],
19473
- changeDetection: ChangeDetectionStrategy.OnPush
19153
+ changeDetection: ChangeDetectionStrategy.OnPush,
19474
19154
  }]
19475
19155
  }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: NuxeoService }]; }, propDecorators: { aggregations: [{
19476
19156
  type: Input
@@ -19570,7 +19250,12 @@ class CheckConditionPipe$1 {
19570
19250
  return true;
19571
19251
  }
19572
19252
  try {
19573
- return Evaluator.evaluate(condition, ___default.cloneDeep({ aggregations, language, user: this.user, values: filterValues }));
19253
+ return Utils.evaluate(condition, ___default.cloneDeep({
19254
+ aggregations,
19255
+ language,
19256
+ user: this.user,
19257
+ values: filterValues,
19258
+ }), 'show');
19574
19259
  }
19575
19260
  catch (error) {
19576
19261
  console.error({ error });
@@ -19583,7 +19268,7 @@ CheckConditionPipe$1.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", versi
19583
19268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CheckConditionPipe$1, decorators: [{
19584
19269
  type: Pipe,
19585
19270
  args: [{
19586
- name: 'checkCondition'
19271
+ name: 'checkCondition',
19587
19272
  }]
19588
19273
  }], ctorParameters: function () { return [{ type: NuxeoService }]; } });
19589
19274
 
@@ -20131,6 +19816,11 @@ const PAGE_SIZE = [
20131
19816
  }
20132
19817
  ];
20133
19818
 
19819
+ const NDF_EDITOR_TYPE = {
19820
+ REPORTS: 'report',
19821
+ TABLES: 'table'
19822
+ };
19823
+
20134
19824
  const EMPTY_TEMPLATE = new InjectionToken('EmptyTemplateDirective');
20135
19825
  class EmptyTemplateDirective {
20136
19826
  constructor(template) {
@@ -20205,7 +19895,7 @@ class TableHooksService {
20205
19895
  evaluate(expr, payload) {
20206
19896
  try {
20207
19897
  const context = { criteria: payload };
20208
- const result = Evaluator.evaluate(expr, context, 'payload');
19898
+ const result = Utils.evaluate(expr, context, 'payload');
20209
19899
  return result !== null && result !== void 0 ? result : payload;
20210
19900
  }
20211
19901
  catch (e) {
@@ -20219,7 +19909,7 @@ TableHooksService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
20219
19909
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TableHooksService, decorators: [{
20220
19910
  type: Injectable,
20221
19911
  args: [{
20222
- providedIn: 'root'
19912
+ providedIn: 'root',
20223
19913
  }]
20224
19914
  }] });
20225
19915
 
@@ -27903,6 +27593,7 @@ class GlobalPdfTron {
27903
27593
  WebViewer({
27904
27594
  path: this.baseHref + '/assets/pdftrons',
27905
27595
  }, document.getElementById('global-pdftron')).then((instance) => {
27596
+ instance.CoreControls.disableEmbeddedJavaScript();
27906
27597
  this.saveOptions = instance.CoreControls.SaveOptions;
27907
27598
  this.instance = instance;
27908
27599
  });
@@ -35682,6 +35373,202 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
35682
35373
  }]
35683
35374
  }], ctorParameters: function () { return []; } });
35684
35375
 
35376
+ class NdfTronExtractText extends BaseComponent {
35377
+ constructor(pdfTronService, renderer, injector) {
35378
+ super(injector);
35379
+ this.pdfTronService = pdfTronService;
35380
+ this.renderer = renderer;
35381
+ this.injector = injector;
35382
+ this.listnerAdded = false;
35383
+ this.detectionRectColor = {
35384
+ R: 255,
35385
+ G: 230,
35386
+ B: 162,
35387
+ A: 1
35388
+ };
35389
+ this.focusedField = '';
35390
+ this.focusedFieldPrefix = '';
35391
+ this.onExtractText = new EventEmitter();
35392
+ this.extractedText = '';
35393
+ this.savedCoordinates = [];
35394
+ this.onAnnotationsChange = (annotations, action) => {
35395
+ var _a;
35396
+ this.extractedText = '';
35397
+ const { annotManager, docViewer, Annotations } = (_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance;
35398
+ if (action === 'add') {
35399
+ annotations.forEach((annot) => {
35400
+ var _a;
35401
+ if (annot instanceof ((_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance.Annotations.RectangleAnnotation)) {
35402
+ this.rect = annot.getRect();
35403
+ if (this.currentPageNum != docViewer.getCurrentPage()) {
35404
+ this.currentPageNum = docViewer.getCurrentPage();
35405
+ this.targetPage = this.pagesZones.pages[this.currentPageNum - 1];
35406
+ this.allWords = this.getAllWordsInThePage();
35407
+ }
35408
+ const pageHeight = this.targetPage.page_height;
35409
+ const pageWidth = this.targetPage.page_width;
35410
+ const standardHeight = docViewer.getPageHeight(this.currentPageNum);
35411
+ const standardWidth = docViewer.getPageWidth(this.currentPageNum);
35412
+ const widthRatio = pageWidth / standardWidth;
35413
+ const heightRatio = pageHeight / standardHeight;
35414
+ this.allWords.forEach((word) => {
35415
+ if (word.coordinates.upper_left.x >= widthRatio * this.rect.x1 &&
35416
+ word.coordinates.upper_left.y >= heightRatio * this.rect.y1 &&
35417
+ word.coordinates.bottom_right.x <= widthRatio * this.rect.x2 &&
35418
+ word.coordinates.bottom_right.y <= heightRatio * this.rect.y2) {
35419
+ this.extractedText += word.text + ' ';
35420
+ }
35421
+ });
35422
+ if (this.extractedText) {
35423
+ this.onExtractText.emit(this.extractedText);
35424
+ this.addFieldNameToRectangle(docViewer, annotManager, Annotations);
35425
+ this.holdDrawedRectangleCoordinates({
35426
+ width: widthRatio,
35427
+ height: heightRatio
35428
+ });
35429
+ }
35430
+ }
35431
+ });
35432
+ }
35433
+ };
35434
+ this.initiateTextDimensions();
35435
+ this.routerService.events.pipe(takeUntil(this.destroy$)).subscribe((res) => {
35436
+ var _a;
35437
+ if (res instanceof NavigationStart) {
35438
+ const { annotManager, docViewer } = (_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance;
35439
+ annotManager.off('annotationChanged', this.onAnnotationsChange);
35440
+ docViewer.off('documentLoaded', this.enableAnnotationRectangle);
35441
+ }
35442
+ });
35443
+ }
35444
+ ngOnChanges(changes) {
35445
+ if (changes.focusedField || changes.pagesZones) {
35446
+ this.enableAnnotationRectangle();
35447
+ }
35448
+ }
35449
+ enableAnnotationRectangle() {
35450
+ var _a, _b, _c, _d, _e;
35451
+ if (this.focusedField && ((_a = this.pagesZones.pages) === null || _a === void 0 ? void 0 : _a.length)) {
35452
+ (_c = (_b = this.pdfTronService) === null || _b === void 0 ? void 0 : _b.instance) === null || _c === void 0 ? void 0 : _c.setToolMode('AnnotationCreateRectangle');
35453
+ this.focusedLabelDimensions = this.calculateWidthOfText();
35454
+ }
35455
+ else {
35456
+ (_e = (_d = this.pdfTronService) === null || _d === void 0 ? void 0 : _d.instance) === null || _e === void 0 ? void 0 : _e.setToolMode('TextSelect');
35457
+ this.initiateTextDimensions();
35458
+ }
35459
+ }
35460
+ ngAfterViewChecked() {
35461
+ var _a, _b;
35462
+ if (((_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance) && !this.listnerAdded && this.pagesZones) {
35463
+ this.listnerAdded = true;
35464
+ const { annotManager, docViewer } = (_b = this.pdfTronService) === null || _b === void 0 ? void 0 : _b.instance;
35465
+ docViewer.on('documentLoaded', this.enableAnnotationRectangle);
35466
+ this.setColorOfRectangle(docViewer);
35467
+ annotManager.on('annotationChanged', this.onAnnotationsChange);
35468
+ }
35469
+ }
35470
+ setColorOfRectangle(docViewer) {
35471
+ const rectangleTool = docViewer.getTool('AnnotationCreateRectangle');
35472
+ rectangleTool.defaults = {
35473
+ StrokeColor: this.detectionRectColor,
35474
+ FillColor: this.detectionRectColor,
35475
+ StrokeThickness: 2,
35476
+ Opacity: 0.4
35477
+ };
35478
+ }
35479
+ addFieldNameToRectangle(docViewer, annotManager, Annotations) {
35480
+ const { x1, x2, y1, y2 } = this.rect;
35481
+ if (this.focusedField) {
35482
+ const textAnnot = new Annotations.FreeTextAnnotation();
35483
+ textAnnot.PageNumber = docViewer.getCurrentPage();
35484
+ const rectWidth = x2 - x1;
35485
+ const rectHeight = y2 - y1;
35486
+ if (this.focusedLabelDimensions.width > rectWidth || this.focusedLabelDimensions.height > rectHeight) {
35487
+ textAnnot.X = x1;
35488
+ textAnnot.Y = y1 - 15;
35489
+ }
35490
+ else {
35491
+ textAnnot.X = x1 + rectWidth / 2 - this.focusedLabelDimensions.width / 2;
35492
+ textAnnot.Y = y1 + rectHeight / 2 - this.focusedLabelDimensions.height / 2;
35493
+ }
35494
+ textAnnot.Width = this.focusedLabelDimensions.width;
35495
+ textAnnot.Height = this.focusedLabelDimensions.height;
35496
+ textAnnot.FontSize = '24px';
35497
+ textAnnot.setPadding(new Annotations.Rect(0, 0, 0, 0));
35498
+ textAnnot.TextColor = new Annotations.Color(83, 70, 199);
35499
+ textAnnot.setContents(this.translatedLabel);
35500
+ textAnnot.StrokeThickness = 0;
35501
+ annotManager.addAnnotation(textAnnot);
35502
+ annotManager.redrawAnnotation(textAnnot);
35503
+ }
35504
+ }
35505
+ holdDrawedRectangleCoordinates(ratio) {
35506
+ const _windowCoordinates = {
35507
+ x1: ratio.width * this.rect.x1,
35508
+ x2: ratio.width * this.rect.x2,
35509
+ y1: ratio.height * this.rect.y1,
35510
+ y2: ratio.height * this.rect.y2
35511
+ };
35512
+ let index = this.savedCoordinates.findIndex((elem) => elem.fieldName === this.focusedField);
35513
+ if (index > -1) {
35514
+ this.savedCoordinates[index].coordinates.push({
35515
+ pdfTronCoordinate: this.rect,
35516
+ windowCoordinate: _windowCoordinates
35517
+ });
35518
+ }
35519
+ else {
35520
+ this.savedCoordinates.push({
35521
+ fieldName: this.focusedField,
35522
+ coordinates: [
35523
+ {
35524
+ pdfTronCoordinate: this.rect,
35525
+ windowCoordinate: _windowCoordinates
35526
+ }
35527
+ ]
35528
+ });
35529
+ }
35530
+ }
35531
+ getAllWordsInThePage() {
35532
+ return flatMap(this.targetPage.zones, (zone) => flatMap(zone.paragraphs, (paragraph) => flatMap(paragraph.lines, (line) => map$1(line.words))));
35533
+ }
35534
+ initiateTextDimensions() {
35535
+ this.focusedLabelDimensions = { width: 0, height: 0 };
35536
+ }
35537
+ calculateWidthOfText() {
35538
+ const span = this.renderer.createElement('span');
35539
+ const textNode = this.renderer.createText(this.translatedLabel);
35540
+ this.renderer.appendChild(span, textNode);
35541
+ this.renderer.setStyle(span, 'font-size', '24px');
35542
+ this.renderer.setStyle(span, 'visibility', 'hidden');
35543
+ this.renderer.setStyle(span, 'position', 'absolute');
35544
+ this.renderer.appendChild(document.body, span);
35545
+ const dimensions = { width: span.clientWidth, height: span.clientHeight };
35546
+ this.renderer.removeChild(document.body, span);
35547
+ return dimensions;
35548
+ }
35549
+ get translatedLabel() {
35550
+ return this.translateService.instant(this.focusedFieldPrefix + this.focusedField);
35551
+ }
35552
+ }
35553
+ NdfTronExtractText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTronExtractText, deps: [{ token: PdftronService }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
35554
+ NdfTronExtractText.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: NdfTronExtractText, selector: "[ndfTronExtractText]", inputs: { pagesZones: "pagesZones", detectionRectColor: "detectionRectColor", focusedField: "focusedField", focusedFieldPrefix: "focusedFieldPrefix" }, outputs: { onExtractText: "onExtractText" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
35555
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTronExtractText, decorators: [{
35556
+ type: Directive,
35557
+ args: [{
35558
+ selector: '[ndfTronExtractText]'
35559
+ }]
35560
+ }], ctorParameters: function () { return [{ type: PdftronService }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { pagesZones: [{
35561
+ type: Input
35562
+ }], detectionRectColor: [{
35563
+ type: Input
35564
+ }], focusedField: [{
35565
+ type: Input
35566
+ }], focusedFieldPrefix: [{
35567
+ type: Input
35568
+ }], onExtractText: [{
35569
+ type: Output
35570
+ }] } });
35571
+
35685
35572
  var _SilentPdfTronService_instances, _SilentPdfTronService_webViewerInstance, _SilentPdfTronService_webViewerElement, _SilentPdfTronService_isInitialized, _SilentPdfTronService_initializationPromise, _SilentPdfTronService_isArabic, _SilentPdfTronService_isEnabled, _SilentPdfTronService_initializeWebViewer;
35686
35573
  class SilentPdfTronService {
35687
35574
  constructor(baseHref, translationService, environment, nuxeo) {
@@ -35744,6 +35631,7 @@ _SilentPdfTronService_webViewerInstance = new WeakMap(), _SilentPdfTronService_w
35744
35631
  disabledElements: ['downloadButton', 'printButton']
35745
35632
  }, __classPrivateFieldGet(this, _SilentPdfTronService_webViewerElement, "f"))
35746
35633
  .then((instance) => {
35634
+ instance.CoreControls.disableEmbeddedJavaScript();
35747
35635
  __classPrivateFieldSet(this, _SilentPdfTronService_webViewerInstance, instance, "f");
35748
35636
  __classPrivateFieldSet(this, _SilentPdfTronService_isInitialized, true, "f");
35749
35637
  })
@@ -36485,6 +36373,7 @@ _PdftronComponent_docLoaded = new WeakMap(), _PdftronComponent_instances = new W
36485
36373
  });
36486
36374
  }, _PdftronComponent_afterLoadWebViewer = function _PdftronComponent_afterLoadWebViewer(instance) {
36487
36375
  var _a, _b;
36376
+ instance.CoreControls.disableEmbeddedJavaScript();
36488
36377
  this.isArabic ? instance.setLanguage('ar') : instance.setLanguage('en');
36489
36378
  this.pdftronService.instance = this.webViewerInstance = instance;
36490
36379
  if (this.correspondance.facets.indexOf('ctocr') > -1 && ((_b = (_a = this.correspondance) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b['ctocr:recognizedJson'])) {
@@ -36611,202 +36500,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
36611
36500
  type: Output
36612
36501
  }] } });
36613
36502
 
36614
- class NdfTronExtractText extends BaseComponent {
36615
- constructor(pdfTronService, renderer, injector) {
36616
- super(injector);
36617
- this.pdfTronService = pdfTronService;
36618
- this.renderer = renderer;
36619
- this.injector = injector;
36620
- this.listnerAdded = false;
36621
- this.detectionRectColor = {
36622
- R: 255,
36623
- G: 230,
36624
- B: 162,
36625
- A: 1
36626
- };
36627
- this.focusedField = '';
36628
- this.focusedFieldPrefix = '';
36629
- this.onExtractText = new EventEmitter();
36630
- this.extractedText = '';
36631
- this.savedCoordinates = [];
36632
- this.onAnnotationsChange = (annotations, action) => {
36633
- var _a;
36634
- this.extractedText = '';
36635
- const { annotManager, docViewer, Annotations } = (_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance;
36636
- if (action === 'add') {
36637
- annotations.forEach((annot) => {
36638
- var _a;
36639
- if (annot instanceof ((_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance.Annotations.RectangleAnnotation)) {
36640
- this.rect = annot.getRect();
36641
- if (this.currentPageNum != docViewer.getCurrentPage()) {
36642
- this.currentPageNum = docViewer.getCurrentPage();
36643
- this.targetPage = this.pagesZones.pages[this.currentPageNum - 1];
36644
- this.allWords = this.getAllWordsInThePage();
36645
- }
36646
- const pageHeight = this.targetPage.page_height;
36647
- const pageWidth = this.targetPage.page_width;
36648
- const standardHeight = docViewer.getPageHeight(this.currentPageNum);
36649
- const standardWidth = docViewer.getPageWidth(this.currentPageNum);
36650
- const widthRatio = pageWidth / standardWidth;
36651
- const heightRatio = pageHeight / standardHeight;
36652
- this.allWords.forEach((word) => {
36653
- if (word.coordinates.upper_left.x >= widthRatio * this.rect.x1 &&
36654
- word.coordinates.upper_left.y >= heightRatio * this.rect.y1 &&
36655
- word.coordinates.bottom_right.x <= widthRatio * this.rect.x2 &&
36656
- word.coordinates.bottom_right.y <= heightRatio * this.rect.y2) {
36657
- this.extractedText += word.text + ' ';
36658
- }
36659
- });
36660
- if (this.extractedText) {
36661
- this.onExtractText.emit(this.extractedText);
36662
- this.addFieldNameToRectangle(docViewer, annotManager, Annotations);
36663
- this.holdDrawedRectangleCoordinates({
36664
- width: widthRatio,
36665
- height: heightRatio
36666
- });
36667
- }
36668
- }
36669
- });
36670
- }
36671
- };
36672
- this.initiateTextDimensions();
36673
- this.routerService.events.pipe(takeUntil(this.destroy$)).subscribe((res) => {
36674
- var _a;
36675
- if (res instanceof NavigationStart) {
36676
- const { annotManager, docViewer } = (_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance;
36677
- annotManager.off('annotationChanged', this.onAnnotationsChange);
36678
- docViewer.off('documentLoaded', this.enableAnnotationRectangle);
36679
- }
36680
- });
36681
- }
36682
- ngOnChanges(changes) {
36683
- if (changes.focusedField || changes.pagesZones) {
36684
- this.enableAnnotationRectangle();
36685
- }
36686
- }
36687
- enableAnnotationRectangle() {
36688
- var _a, _b, _c, _d, _e;
36689
- if (this.focusedField && ((_a = this.pagesZones.pages) === null || _a === void 0 ? void 0 : _a.length)) {
36690
- (_c = (_b = this.pdfTronService) === null || _b === void 0 ? void 0 : _b.instance) === null || _c === void 0 ? void 0 : _c.setToolMode('AnnotationCreateRectangle');
36691
- this.focusedLabelDimensions = this.calculateWidthOfText();
36692
- }
36693
- else {
36694
- (_e = (_d = this.pdfTronService) === null || _d === void 0 ? void 0 : _d.instance) === null || _e === void 0 ? void 0 : _e.setToolMode('TextSelect');
36695
- this.initiateTextDimensions();
36696
- }
36697
- }
36698
- ngAfterViewChecked() {
36699
- var _a, _b;
36700
- if (((_a = this.pdfTronService) === null || _a === void 0 ? void 0 : _a.instance) && !this.listnerAdded && this.pagesZones) {
36701
- this.listnerAdded = true;
36702
- const { annotManager, docViewer } = (_b = this.pdfTronService) === null || _b === void 0 ? void 0 : _b.instance;
36703
- docViewer.on('documentLoaded', this.enableAnnotationRectangle);
36704
- this.setColorOfRectangle(docViewer);
36705
- annotManager.on('annotationChanged', this.onAnnotationsChange);
36706
- }
36707
- }
36708
- setColorOfRectangle(docViewer) {
36709
- const rectangleTool = docViewer.getTool('AnnotationCreateRectangle');
36710
- rectangleTool.defaults = {
36711
- StrokeColor: this.detectionRectColor,
36712
- FillColor: this.detectionRectColor,
36713
- StrokeThickness: 2,
36714
- Opacity: 0.4
36715
- };
36716
- }
36717
- addFieldNameToRectangle(docViewer, annotManager, Annotations) {
36718
- const { x1, x2, y1, y2 } = this.rect;
36719
- if (this.focusedField) {
36720
- const textAnnot = new Annotations.FreeTextAnnotation();
36721
- textAnnot.PageNumber = docViewer.getCurrentPage();
36722
- const rectWidth = x2 - x1;
36723
- const rectHeight = y2 - y1;
36724
- if (this.focusedLabelDimensions.width > rectWidth || this.focusedLabelDimensions.height > rectHeight) {
36725
- textAnnot.X = x1;
36726
- textAnnot.Y = y1 - 15;
36727
- }
36728
- else {
36729
- textAnnot.X = x1 + rectWidth / 2 - this.focusedLabelDimensions.width / 2;
36730
- textAnnot.Y = y1 + rectHeight / 2 - this.focusedLabelDimensions.height / 2;
36731
- }
36732
- textAnnot.Width = this.focusedLabelDimensions.width;
36733
- textAnnot.Height = this.focusedLabelDimensions.height;
36734
- textAnnot.FontSize = '24px';
36735
- textAnnot.setPadding(new Annotations.Rect(0, 0, 0, 0));
36736
- textAnnot.TextColor = new Annotations.Color(83, 70, 199);
36737
- textAnnot.setContents(this.translatedLabel);
36738
- textAnnot.StrokeThickness = 0;
36739
- annotManager.addAnnotation(textAnnot);
36740
- annotManager.redrawAnnotation(textAnnot);
36741
- }
36742
- }
36743
- holdDrawedRectangleCoordinates(ratio) {
36744
- const _windowCoordinates = {
36745
- x1: ratio.width * this.rect.x1,
36746
- x2: ratio.width * this.rect.x2,
36747
- y1: ratio.height * this.rect.y1,
36748
- y2: ratio.height * this.rect.y2
36749
- };
36750
- let index = this.savedCoordinates.findIndex((elem) => elem.fieldName === this.focusedField);
36751
- if (index > -1) {
36752
- this.savedCoordinates[index].coordinates.push({
36753
- pdfTronCoordinate: this.rect,
36754
- windowCoordinate: _windowCoordinates
36755
- });
36756
- }
36757
- else {
36758
- this.savedCoordinates.push({
36759
- fieldName: this.focusedField,
36760
- coordinates: [
36761
- {
36762
- pdfTronCoordinate: this.rect,
36763
- windowCoordinate: _windowCoordinates
36764
- }
36765
- ]
36766
- });
36767
- }
36768
- }
36769
- getAllWordsInThePage() {
36770
- return flatMap(this.targetPage.zones, (zone) => flatMap(zone.paragraphs, (paragraph) => flatMap(paragraph.lines, (line) => map$1(line.words))));
36771
- }
36772
- initiateTextDimensions() {
36773
- this.focusedLabelDimensions = { width: 0, height: 0 };
36774
- }
36775
- calculateWidthOfText() {
36776
- const span = this.renderer.createElement('span');
36777
- const textNode = this.renderer.createText(this.translatedLabel);
36778
- this.renderer.appendChild(span, textNode);
36779
- this.renderer.setStyle(span, 'font-size', '24px');
36780
- this.renderer.setStyle(span, 'visibility', 'hidden');
36781
- this.renderer.setStyle(span, 'position', 'absolute');
36782
- this.renderer.appendChild(document.body, span);
36783
- const dimensions = { width: span.clientWidth, height: span.clientHeight };
36784
- this.renderer.removeChild(document.body, span);
36785
- return dimensions;
36786
- }
36787
- get translatedLabel() {
36788
- return this.translateService.instant(this.focusedFieldPrefix + this.focusedField);
36789
- }
36790
- }
36791
- NdfTronExtractText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTronExtractText, deps: [{ token: PdftronService }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
36792
- NdfTronExtractText.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: NdfTronExtractText, selector: "[ndfTronExtractText]", inputs: { pagesZones: "pagesZones", detectionRectColor: "detectionRectColor", focusedField: "focusedField", focusedFieldPrefix: "focusedFieldPrefix" }, outputs: { onExtractText: "onExtractText" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
36793
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTronExtractText, decorators: [{
36794
- type: Directive,
36795
- args: [{
36796
- selector: '[ndfTronExtractText]'
36797
- }]
36798
- }], ctorParameters: function () { return [{ type: PdftronService }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { pagesZones: [{
36799
- type: Input
36800
- }], detectionRectColor: [{
36801
- type: Input
36802
- }], focusedField: [{
36803
- type: Input
36804
- }], focusedFieldPrefix: [{
36805
- type: Input
36806
- }], onExtractText: [{
36807
- type: Output
36808
- }] } });
36809
-
36810
36503
  class PdfTronModule {
36811
36504
  }
36812
36505
  PdfTronModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PdfTronModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -41270,192 +40963,242 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
41270
40963
  type: Injectable
41271
40964
  }] });
41272
40965
 
41273
- class NdfPanelComponent {
41274
- constructor() {
41275
- this.maxBodyHeight = 'auto';
40966
+ class DataAccessService extends BaseEditorConfigService {
40967
+ constructor(injector) {
40968
+ super(injector);
40969
+ }
40970
+ saveData(payload) {
40971
+ return this.customAutomation({
40972
+ operation: 'AC_UA_Create_UI_Configuration',
40973
+ context: payload
40974
+ });
41276
40975
  }
41277
40976
  }
41278
- NdfPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41279
- NdfPanelComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfPanelComponent, selector: "ndf-panel", inputs: { maxBodyHeight: "maxBodyHeight" }, queries: [{ propertyName: "panelHeader", first: true, predicate: ["panelHeader"], descendants: true, read: TemplateRef }, { propertyName: "panelBody", first: true, predicate: ["panelBody"], descendants: true, read: TemplateRef }, { propertyName: "panelFooter", first: true, predicate: ["panelFooter"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"scroll-panel\">\r\n\t<div class=\"header\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"panelHeader\"></ng-container>\r\n\t</div>\r\n\r\n\t<div class=\"body\" [style.maxHeight]=\"maxBodyHeight\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"panelBody\"></ng-container>\r\n\t</div>\r\n\r\n\t<div class=\"footer\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"panelFooter\"></ng-container>\r\n\t</div>\r\n</div>\r\n", styles: [".scroll-panel{display:var(--ndf-panel-display, flex);flex-direction:var(--ndf-panel-flex-direction, column);height:var(--ndf-panel-height, calc(100dvh - 65px));border:1px solid var(--ndf-panel-main-border)}.header{flex:var(--ndf-panel-header-flex, 0 0 auto);color:var(--ndf-panel-color, #3b3b3c);background-color:var(--ndf-panel-bg, #f6f9f5);border-bottom:1px solid var(--ndf-panel-border-color, #e7e7e7)}.footer{border-top:1px solid var(--ndf-panel-border-color, #e7e7e7)}.body{flex:var(--ndf-panel-body-flex, 1 1 auto);overflow-y:var(--ndf-panel-body-overflow-y, auto);min-height:var(--ndf-panel-body-min-height, 0)}\n"], directives: [{ type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelComponent, decorators: [{
41281
- type: Component,
40977
+ DataAccessService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
40978
+ DataAccessServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, providedIn: 'root' });
40979
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, decorators: [{
40980
+ type: Injectable,
41282
40981
  args: [{
41283
- selector: 'ndf-panel',
41284
- templateUrl: './ndf-panel.component.html',
41285
- styleUrls: ['./ndf-panel.component.scss'],
41286
- changeDetection: ChangeDetectionStrategy.OnPush
40982
+ providedIn: 'root'
41287
40983
  }]
41288
- }], propDecorators: { maxBodyHeight: [{
41289
- type: Input
41290
- }], panelHeader: [{
41291
- type: ContentChild,
41292
- args: ['panelHeader', { read: TemplateRef }]
41293
- }], panelBody: [{
41294
- type: ContentChild,
41295
- args: ['panelBody', { read: TemplateRef }]
41296
- }], panelFooter: [{
41297
- type: ContentChild,
41298
- args: ['panelFooter', { read: TemplateRef }]
41299
- }] } });
40984
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
41300
40985
 
41301
- class NdfPanelModule {
41302
- }
41303
- NdfPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
41304
- NdfPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, declarations: [NdfPanelComponent], imports: [CommonModule], exports: [NdfPanelComponent] });
41305
- NdfPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, imports: [[CommonModule]] });
41306
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, decorators: [{
41307
- type: NgModule,
41308
- args: [{
41309
- declarations: [NdfPanelComponent],
41310
- imports: [CommonModule],
41311
- exports: [NdfPanelComponent]
41312
- }]
41313
- }] });
40986
+ const METADATA_EDITOR_OPTIONS = new InjectionToken('METADATA_EDITOR_CONFIG');
41314
40987
 
41315
- class NdfTabsComponent extends BaseComponent {
41316
- constructor(injector, evaluatorsService) {
41317
- super(injector);
41318
- this.evaluatorsService = evaluatorsService;
41319
- this.isAllowdTabFn = (_) => true;
41320
- this._showHeader = true;
41321
- this.activeTabEmitter = new EventEmitter();
41322
- this.checkingPermission = false;
40988
+ class DataStoreService {
40989
+ constructor(dataAccessService, environment, options) {
40990
+ this.dataAccessService = dataAccessService;
40991
+ this.environment = environment;
40992
+ this.options = options;
40993
+ this._editorTypeSubject = new BehaviorSubject(NDF_EDITOR_TYPE.TABLES);
40994
+ this.editorType$ = this._editorTypeSubject.asObservable();
40995
+ this._editorModeSubject = new BehaviorSubject(CONFIG_EDITOR_MODE.EDIT);
40996
+ this.editorMode$ = this._editorModeSubject.asObservable();
40997
+ this._dataSubject = new BehaviorSubject('{\n"key": "value"\n}');
40998
+ this.editorData$ = this._dataSubject.asObservable();
40999
+ this.previewData$ = this._dataSubject.asObservable().pipe(map((result) => JSON.parse(result)));
41323
41000
  }
41324
- set showHeader(value) {
41325
- this._showHeader = value;
41001
+ get editorMode() {
41002
+ return this._editorModeSubject.getValue();
41326
41003
  }
41327
- get showHeader() {
41328
- return this._showHeader;
41004
+ get type() {
41005
+ return this._editorTypeSubject.getValue();
41329
41006
  }
41330
- ngOnInit() {
41331
- this.checkTabsPermissions();
41007
+ get editorData() {
41008
+ return this._dataSubject.getValue();
41332
41009
  }
41333
- checkTabsPermissions() {
41334
- this.checkingPermission = true;
41335
- const permissionCalls = [];
41336
- const createPermissionCall = (id, permission, secondaryTab = false) => {
41337
- if (permission) {
41338
- return from(this.evaluatorsService.evaluateRule(permission)).pipe(map((res) => ({ id, enabled: res, secondaryTab })));
41339
- }
41340
- return of({ id, enabled: true, secondaryTab });
41341
- };
41342
- this.tabs.forEach((tab) => {
41343
- var _a;
41344
- permissionCalls.push(createPermissionCall(tab.id, tab.permission));
41345
- (_a = tab.secondary_tabs) === null || _a === void 0 ? void 0 : _a.forEach((subTab) => {
41346
- permissionCalls.push(createPermissionCall(subTab.id, subTab.permission, true));
41347
- });
41348
- });
41349
- forkJoin(permissionCalls)
41350
- .pipe(takeUntil(this.destroy$), tap((results) => {
41351
- const secondaryTabsPerms = results.filter((r) => r.secondaryTab);
41352
- const primaryTabsPerms = results.filter((r) => !r.secondaryTab);
41353
- let filteredTabs = cloneDeep(this.tabs);
41354
- filteredTabs = filteredTabs
41355
- .filter((tab) => primaryTabsPerms.some((p) => p.id === tab.id && p.enabled))
41356
- .map((tab) => {
41357
- var _a;
41358
- if ((_a = tab.secondary_tabs) === null || _a === void 0 ? void 0 : _a.length) {
41359
- tab.secondary_tabs = tab.secondary_tabs.filter((sub) => secondaryTabsPerms.some((p) => p.id === sub.id && p.enabled));
41360
- }
41361
- return tab;
41362
- });
41363
- this.tabs = filteredTabs;
41364
- }))
41365
- .subscribe(() => {
41366
- if (this.tabs.length && !this.activeTab) {
41367
- this.activateTab(this.tabs[0]);
41010
+ changeMode(mode) {
41011
+ this._editorModeSubject.next(mode);
41012
+ }
41013
+ changeEditorType(type) {
41014
+ this._editorTypeSubject.next(type);
41015
+ }
41016
+ getData(key, type) {
41017
+ var _a, _b;
41018
+ const metadata = ((_a = this.options) === null || _a === void 0 ? void 0 : _a[type]) || {};
41019
+ return this.dataAccessService
41020
+ .fetchData({
41021
+ app: (_b = this.environment) === null || _b === void 0 ? void 0 : _b.appKey,
41022
+ key: key,
41023
+ type: type,
41024
+ localPath: metadata === null || metadata === void 0 ? void 0 : metadata.localPath
41025
+ })
41026
+ .pipe(switchMap((res) => {
41027
+ var _a, _b;
41028
+ if ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.config) {
41029
+ const data = JSON.stringify((_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.config, null, 2);
41030
+ this._dataSubject.next(data || '{\n"key": "value"\n}');
41368
41031
  }
41369
- this.checkingPermission = false;
41032
+ return this.editorData$;
41033
+ }));
41034
+ }
41035
+ saveData(key, type) {
41036
+ var _a;
41037
+ const data = this._dataSubject.getValue();
41038
+ return this.dataAccessService.saveData({
41039
+ app: (_a = this.environment) === null || _a === void 0 ? void 0 : _a.appKey,
41040
+ key: key,
41041
+ type: type,
41042
+ content: data
41370
41043
  });
41371
41044
  }
41372
- get activatedTabId() {
41373
- var _a, _b, _c;
41374
- return (_a = this.activeTab) !== null && _a !== void 0 ? _a : (_c = (_b = this.tabs) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.id;
41045
+ storeData(data) {
41046
+ this._dataSubject.next(data);
41375
41047
  }
41376
- get activatedTab() {
41377
- return this.tabs.find(({ id }) => id === this.activatedTabId);
41048
+ }
41049
+ DataStoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService, deps: [{ token: DataAccessService }, { token: 'environment' }, { token: METADATA_EDITOR_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });
41050
+ DataStoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService });
41051
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService, decorators: [{
41052
+ type: Injectable
41053
+ }], ctorParameters: function () { return [{ type: DataAccessService }, { type: undefined, decorators: [{
41054
+ type: Inject,
41055
+ args: ['environment']
41056
+ }] }, { type: undefined, decorators: [{
41057
+ type: Inject,
41058
+ args: [METADATA_EDITOR_OPTIONS]
41059
+ }] }]; } });
41060
+
41061
+ // monaco-loader.service.ts
41062
+ class MonacoLoaderService {
41063
+ constructor() {
41064
+ this.loaded = false;
41378
41065
  }
41379
- activateTab(tab) {
41380
- this.activeTab = tab.id;
41381
- this.activeTabEmitter.emit(tab);
41066
+ load(baseUrl = window.location.origin) {
41067
+ const _vsUrl = window.location.origin + baseUrl + '/assets/monaco-editor/min/vs';
41068
+ if (this.loaded)
41069
+ return this.loadPromise;
41070
+ this.loaded = true;
41071
+ this.loadPromise = new Promise((resolve) => {
41072
+ // If already available
41073
+ if (window.monaco) {
41074
+ resolve(window.monaco);
41075
+ return;
41076
+ }
41077
+ const onAmdLoader = () => {
41078
+ window.require.config({ paths: { vs: _vsUrl } });
41079
+ // Set the worker URL to the correct path
41080
+ /*window.monaco.editor?.setWorkerOptions({
41081
+ // Make sure the worker path points to the correct location
41082
+ baseUrl: `${baseUrl}/worker/`
41083
+ });*/
41084
+ window.require(['vs/editor/editor.main'], () => {
41085
+ resolve(window.monaco);
41086
+ });
41087
+ };
41088
+ // Load AMD loader if needed
41089
+ if (!window.require) {
41090
+ const loaderScript = document.createElement('script');
41091
+ loaderScript.type = 'text/javascript';
41092
+ loaderScript.src = `${_vsUrl}/loader.js`;
41093
+ loaderScript.onload = onAmdLoader;
41094
+ document.body.appendChild(loaderScript);
41095
+ }
41096
+ else {
41097
+ onAmdLoader();
41098
+ }
41099
+ });
41100
+ return this.loadPromise;
41382
41101
  }
41383
- ngOnDestroy() {
41384
- this.destroy$.next();
41385
- this.destroy$.complete();
41102
+ }
41103
+ MonacoLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41104
+ MonacoLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoLoaderService, providedIn: 'root' });
41105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoLoaderService, decorators: [{
41106
+ type: Injectable,
41107
+ args: [{ providedIn: 'root' }]
41108
+ }] });
41109
+
41110
+ class EditorModeSwitchComponent {
41111
+ constructor() {
41112
+ this.changeMode = new EventEmitter();
41113
+ this.modes = CONFIG_EDITOR_MODE;
41386
41114
  }
41387
- isEnabledTab(tabId) {
41388
- var _a;
41389
- return (_a = tabId.isEnable) !== null && _a !== void 0 ? _a : true;
41115
+ ngOnInit() { }
41116
+ onModeChange(mode) {
41117
+ this.changeMode.emit(mode.value);
41390
41118
  }
41391
41119
  }
41392
- NdfTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsComponent, deps: [{ token: i0.Injector }, { token: EvaluatorsService }], target: i0.ɵɵFactoryTarget.Component });
41393
- NdfTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTabsComponent, selector: "ndf-tabs", inputs: { tabs: "tabs", activeTab: "activeTab", isAllowdTabFn: "isAllowdTabFn", showHeader: "showHeader" }, outputs: { activeTabEmitter: "activeTabEmitter" }, host: { classAttribute: "w-full h-full" }, queries: [{ propertyName: "tabHeader", first: true, predicate: ["tabHeader"], descendants: true, read: TemplateRef }, { propertyName: "headerOptions", first: true, predicate: ["headerOptions"], descendants: true, read: TemplateRef }, { propertyName: "tabBody", first: true, predicate: ["tabBody"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col ndf-tabs-wrapper rounded-md px-0.5\" *ngIf=\"!checkingPermission\">\r\n\t<div\r\n\t\tclass=\"tabs-header flex justify-between items-center w-full border-b print:hidden\"\r\n\t\t[@visibilitySlide]=\"showHeader\"\r\n\t\t[class.overflow-hidden]=\"!showHeader\"\r\n\t>\r\n\t\t<div class=\"tabs-wrapper flex justify-start items-center gap-2.5 self-stretch\">\r\n\t\t\t<ng-container *ngFor=\"let tab of tabs\">\r\n\t\t\t\t<ng-container *ngIf=\"isEnabledTab(tab) && isAllowdTabFn(tab)\">\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\t'selected-tab': activeTab === tab.id\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\tclass=\"tab-item flex p-4 justify-center items-center gap-2.5 rounded-t-md font-medium text-xl cursor-pointer\"\r\n\t\t\t\t\t\t(click)=\"activateTab(tab)\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"tabHeader || defaultHeader\"\r\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: tab }\"\r\n\t\t\t\t\t\t></ng-template>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-template\r\n\t\t\t[ngTemplateOutlet]=\"headerOptions\"\r\n\t\t\t[ngTemplateOutletContext]=\"{ $implicit: activatedTab }\"\r\n\t\t></ng-template>\r\n\t</div>\r\n\t<ng-template\r\n\t\t[ngTemplateOutlet]=\"tabBody || defaultBody\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: activatedTab }\"\r\n\t></ng-template>\r\n</div>\r\n\r\n<ng-template #defaultHeader let-tab>{{ tab.label | translate }}</ng-template>\r\n<ng-template #defaultBody>Default Body</ng-template>\r\n", styles: [":host{display:block}.ndf-tabs-wrapper{background-color:var(--ndf-tabs-body, #fff);border-radius:8px 8px 0 0;overflow:var(--ndf-tabs-wrapper-overflow, auto);height:var(--ndf-tabs-wrapper-height, calc(100vh - 100px))}.ndf-tabs-wrapper .tabs-header{background-color:var(--ndf-tabs-header, #fff)}@media print{.ndf-tabs-wrapper{--ndf-tabs-wrapper-overflow: visible;--ndf-tabs-wrapper-height: auto}}\n"], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i1.TranslatePipe }, animations: [
41394
- trigger('visibilitySlide', [
41395
- state('true', style({ height: '*', visibility: '*' })),
41396
- state('false', style({ height: '0', visibility: 'hidden' })),
41397
- transition('false => true', animate('150ms ease-out')),
41398
- transition('true => false', animate('150ms ease-in'))
41399
- ])
41400
- ] });
41401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsComponent, decorators: [{
41120
+ EditorModeSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorModeSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41121
+ EditorModeSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditorModeSwitchComponent, selector: "app-editor-mode-switch", inputs: { mode: "mode" }, outputs: { changeMode: "changeMode" }, ngImport: i0, template: `
41122
+ <mat-button-toggle-group [value]="mode" (change)="onModeChange($event)">
41123
+ <mat-button-toggle *ngFor="let mod of modes | keyvalue" [value]="mod.value"
41124
+ >{{ 'JSON_EDITOR.MODES.' + (mod.key | lowercase) | translate }}
41125
+ </mat-button-toggle>
41126
+ </mat-button-toggle-group>
41127
+ `, isInline: true, styles: [""], components: [{ type: i1$b.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i1$b.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "keyvalue": i4$1.KeyValuePipe, "translate": i1.TranslatePipe, "lowercase": i4$1.LowerCasePipe } });
41128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorModeSwitchComponent, decorators: [{
41402
41129
  type: Component,
41403
41130
  args: [{
41404
- selector: 'ndf-tabs',
41405
- templateUrl: './ndf-tabs.component.html',
41406
- styleUrls: ['./ndf-tabs.component.scss'],
41407
- host: { class: 'w-full h-full' },
41408
- animations: [
41409
- trigger('visibilitySlide', [
41410
- state('true', style({ height: '*', visibility: '*' })),
41411
- state('false', style({ height: '0', visibility: 'hidden' })),
41412
- transition('false => true', animate('150ms ease-out')),
41413
- transition('true => false', animate('150ms ease-in'))
41414
- ])
41415
- ]
41131
+ selector: 'app-editor-mode-switch',
41132
+ template: `
41133
+ <mat-button-toggle-group [value]="mode" (change)="onModeChange($event)">
41134
+ <mat-button-toggle *ngFor="let mod of modes | keyvalue" [value]="mod.value"
41135
+ >{{ 'JSON_EDITOR.MODES.' + (mod.key | lowercase) | translate }}
41136
+ </mat-button-toggle>
41137
+ </mat-button-toggle-group>
41138
+ `,
41139
+ styles: ['']
41416
41140
  }]
41417
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: EvaluatorsService }]; }, propDecorators: { tabHeader: [{
41418
- type: ContentChild,
41419
- args: ['tabHeader', { read: TemplateRef }]
41420
- }], headerOptions: [{
41421
- type: ContentChild,
41422
- args: ['headerOptions', { read: TemplateRef }]
41423
- }], tabBody: [{
41424
- type: ContentChild,
41425
- args: ['tabBody', { read: TemplateRef }]
41426
- }], tabs: [{
41427
- type: Input
41428
- }], activeTab: [{
41429
- type: Input
41430
- }], isAllowdTabFn: [{
41431
- type: Input
41432
- }], showHeader: [{
41141
+ }], ctorParameters: function () { return []; }, propDecorators: { mode: [{
41433
41142
  type: Input
41434
- }], activeTabEmitter: [{
41143
+ }], changeMode: [{
41435
41144
  type: Output
41436
41145
  }] } });
41437
41146
 
41438
- class NdfTabsModule {
41147
+ class InfoDialogComponent extends BaseDialogComponent {
41148
+ constructor() {
41149
+ super(...arguments);
41150
+ this.baseAppUrl = this._injector.get(APP_BASE_HREF);
41151
+ this.activeDoc = null;
41152
+ }
41153
+ ngOnInit() {
41154
+ var _a;
41155
+ this.documentations = this.dialogData.documentations;
41156
+ if ((_a = this.documentations) === null || _a === void 0 ? void 0 : _a.length) {
41157
+ this.activeDoc = this.documentations[0].name || '';
41158
+ }
41159
+ }
41439
41160
  }
41440
- NdfTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
41441
- NdfTabsModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, declarations: [NdfTabsComponent], imports: [CommonModule,
41442
- TranslateModule], exports: [NdfTabsComponent] });
41443
- NdfTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, imports: [[
41444
- CommonModule,
41445
- TranslateModule
41446
- ]] });
41447
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, decorators: [{
41448
- type: NgModule,
41161
+ InfoDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
41162
+ InfoDialogComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: InfoDialogComponent, selector: "app-info-dialog", usesInheritance: true, ngImport: i0, template: "<ndf-nuxeo-dialog [dialogTitle]=\"dialogData.title | translate\" bodyClass=\"gap-4 p-0\">\r\n\t<ng-template #contentTemplate>\r\n\t\t<div class=\"secondary-tabs flex gap-5 items-center self-stretch doc-tabs\">\r\n\t\t\t<div\r\n\t\t\t\t[class.selected-tab]=\"doc.name === activeDoc\"\r\n\t\t\t\tclass=\"tab-item relative flex py-5 px-3 justify-start items-center gap-2.5 cursor-pointer\"\r\n\t\t\t\t*ngFor=\"let doc of documentations\"\r\n\t\t\t\t(click)=\"activeDoc = doc.name\"\r\n\t\t\t>\r\n\t\t\t\t<h4>{{ doc?.name | translate }}</h4>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<ng-container *ngFor=\"let doc of documentations\">\r\n\t\t\t<markdown class=\"markdown-content\" [src]=\"baseAppUrl + doc.path\" *ngIf=\"doc.name === activeDoc\"> </markdown>\r\n\t\t</ng-container>\r\n\t</ng-template>\r\n\r\n\t<ng-template #actionsTemplate let-dialog=\"dialog\"> </ng-template>\r\n</ndf-nuxeo-dialog>\r\n", styles: ["::ng-deep .markdown-content{direction:var(--markdown-direction, ltr)!important;text-align:start;color:var(--markdonw-text-color, inherit);background:var(--markdonw-background-color, transparent);border:var(--markdonw-border, 0px solid transparent);border-radius:var(--markdonw-border-radius, 0);padding:var(--markdown-padding, 1rem)}::ng-deep .markdown-content em{background-color:transparent}::ng-deep .markdown-content code,::ng-deep .markdown-content kbd,::ng-deep .markdown-content samp,::ng-deep .markdown-content pre{font-family:ui-monospace,SFMono-Regular,Consolas,\"Liberation Mono\",Menlo,monospace;font-size:1em}::ng-deep .markdown-content hr{margin-block:1rem}::ng-deep .markdown-content table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;font-variant:tabular-nums;margin-block:.5rem}::ng-deep .markdown-content table tr{border-top:1px solid var(--markdonw-table-tr-border-color, #d1d9e0b3)}::ng-deep .markdown-content table th,::ng-deep .markdown-content table td{padding:6px 13px;border:1px solid var(--markdonw-table-border-color, #d1d9e0)}.doc-tabs{position:sticky;top:0;background:var(--markdonw-tabs-background-color, #fff)}\n"], components: [{ type: NdfNuxeoDialog, selector: "ndf-nuxeo-dialog", inputs: ["dialogTitle", "subTitle", "panelClass", "bodyClass", "loaderMode"] }, { type: i2$8.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "emoji", "katex", "katexOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start"], outputs: ["error", "load", "ready"] }], directives: [{ type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1.TranslatePipe } });
41163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoDialogComponent, decorators: [{
41164
+ type: Component,
41449
41165
  args: [{
41450
- declarations: [NdfTabsComponent],
41451
- imports: [
41452
- CommonModule,
41453
- TranslateModule
41454
- ],
41455
- exports: [NdfTabsComponent]
41166
+ selector: 'app-info-dialog',
41167
+ templateUrl: './info-dialog.component.html',
41168
+ styleUrls: ['./info-dialog.component.scss']
41456
41169
  }]
41457
41170
  }] });
41458
41171
 
41172
+ class ConfigEditorActionsComponent {
41173
+ constructor() {
41174
+ this.saveDisabled = false;
41175
+ this.onSave = new EventEmitter();
41176
+ this.onInfo = new EventEmitter();
41177
+ this.onBack = new EventEmitter();
41178
+ }
41179
+ ngOnInit() { }
41180
+ }
41181
+ ConfigEditorActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigEditorActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41182
+ ConfigEditorActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ConfigEditorActionsComponent, selector: "app-config-editor-actions", inputs: { saveDisabled: "saveDisabled", config: "config" }, outputs: { onSave: "onSave", onInfo: "onInfo", onBack: "onBack" }, ngImport: i0, template: "<button mat-stroked-button (click)=\"onSave.emit($event)\" [disabled]=\"saveDisabled\">\r\n\t{{ 'JSON_EDITOR.save' | translate }}\r\n</button>\r\n<button mat-stroked-button (click)=\"onInfo.emit(config?.documentations)\" *ngIf=\"!!config?.documentations?.length\">\r\n\t{{ 'JSON_EDITOR.info' | translate }}\r\n</button>\r\n\r\n<button mat-stroked-button (click)=\"onBack.emit($event)\">{{ 'JSON_EDITOR.back' | translate }}</button>\r\n", styles: [":host{display:var(--ndf-editor-actions-display, flex);flex-direction:var(--ndf-editor-actions-direction, column);grid-gap:var(--ndf-editor-actions-gap, .5rem);gap:var(--ndf-editor-actions-gap, .5rem)}\n"], components: [{ type: i1$c.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1.TranslatePipe } });
41183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigEditorActionsComponent, decorators: [{
41184
+ type: Component,
41185
+ args: [{
41186
+ selector: 'app-config-editor-actions',
41187
+ templateUrl: './config-editor-actions.component.html',
41188
+ styleUrls: ['./config-editor-actions.component.scss']
41189
+ }]
41190
+ }], ctorParameters: function () { return []; }, propDecorators: { saveDisabled: [{
41191
+ type: Input
41192
+ }], config: [{
41193
+ type: Input
41194
+ }], onSave: [{
41195
+ type: Output
41196
+ }], onInfo: [{
41197
+ type: Output
41198
+ }], onBack: [{
41199
+ type: Output
41200
+ }] } });
41201
+
41459
41202
  const COLORS_COUNT = 10;
41460
41203
  const CHART_MAIN_COLOR = '#184e77';
41461
41204
 
@@ -43416,7 +43159,7 @@ class ReportsHooksService {
43416
43159
  evaluate(expr, payload) {
43417
43160
  try {
43418
43161
  const context = { criteria: payload };
43419
- const result = Evaluator.evaluate(expr, context, 'payload');
43162
+ const result = Utils.evaluate(expr, context, 'payload');
43420
43163
  return result !== null && result !== void 0 ? result : payload;
43421
43164
  }
43422
43165
  catch (e) {
@@ -43925,22 +43668,35 @@ class ReportConfigMapperService {
43925
43668
  type: 'bar',
43926
43669
  options: overrides === null || overrides === void 0 ? void 0 : overrides.verticalBar,
43927
43670
  direction: 'vertical',
43928
- callbacks
43671
+ callbacks,
43929
43672
  }),
43930
43673
  horizontalBar: this._getChartOptions({
43931
43674
  type: 'bar',
43932
43675
  options: overrides === null || overrides === void 0 ? void 0 : overrides.verticalBar,
43933
43676
  direction: 'horizontal',
43934
- callbacks
43677
+ callbacks,
43935
43678
  }),
43936
43679
  doughnut: this._getChartOptions({
43937
43680
  type: 'doughnut',
43938
43681
  options: overrides === null || overrides === void 0 ? void 0 : overrides.doughnut,
43939
- callbacks
43682
+ callbacks,
43940
43683
  }),
43941
- line: this._getChartOptions({ type: 'line', options: overrides === null || overrides === void 0 ? void 0 : overrides.line, callbacks }),
43942
- pie: this._getChartOptions({ type: 'pie', options: overrides === null || overrides === void 0 ? void 0 : overrides.pie, callbacks })
43943
- }, options: this._getChartOptions({ type: config.chart.type, options, direction, callbacks }) });
43684
+ line: this._getChartOptions({
43685
+ type: 'line',
43686
+ options: overrides === null || overrides === void 0 ? void 0 : overrides.line,
43687
+ callbacks,
43688
+ }),
43689
+ pie: this._getChartOptions({
43690
+ type: 'pie',
43691
+ options: overrides === null || overrides === void 0 ? void 0 : overrides.pie,
43692
+ callbacks,
43693
+ }),
43694
+ }, options: this._getChartOptions({
43695
+ type: config.chart.type,
43696
+ options,
43697
+ direction,
43698
+ callbacks,
43699
+ }) });
43944
43700
  if (Array.isArray(plugins) && plugins.length > 0) {
43945
43701
  chart.plugins = this._preparePlugins(plugins);
43946
43702
  }
@@ -43995,14 +43751,14 @@ class ReportConfigMapperService {
43995
43751
  return acc;
43996
43752
  }, []);
43997
43753
  }
43998
- _getChartOptions({ type, options, direction = 'horizontal', callbacks }) {
43754
+ _getChartOptions({ type, options, direction = 'horizontal', callbacks, }) {
43999
43755
  var _a;
44000
43756
  const _optionsMap = {
44001
43757
  verticalBar: getVerticalBarOptions,
44002
43758
  horizontalBar: getHorizontalBarOptions,
44003
43759
  doughnut: getDoughnutOptions,
44004
43760
  line: getLineOptions,
44005
- pie: getPieOptions
43761
+ pie: getPieOptions,
44006
43762
  };
44007
43763
  const key = type === 'bar' ? `${direction}Bar` : type;
44008
43764
  const _options = ((_a = _optionsMap[key]) === null || _a === void 0 ? void 0 : _a.call(_optionsMap, options)) || {};
@@ -44024,7 +43780,7 @@ class ReportConfigMapperService {
44024
43780
  .filter((call) => !!call.path && !!call.callback)
44025
43781
  .forEach((callback) => {
44026
43782
  try {
44027
- const fn = Evaluator.evaluate(callback.callback, {
43783
+ const fn = Utils.evaluate(callback.callback, {
44028
43784
  type,
44029
43785
  translate: this._translateService,
44030
43786
  register: this._chartPluginsCallbacks,
@@ -44043,7 +43799,7 @@ ReportConfigMapperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.
44043
43799
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportConfigMapperService, decorators: [{
44044
43800
  type: Injectable,
44045
43801
  args: [{
44046
- providedIn: 'root'
43802
+ providedIn: 'root',
44047
43803
  }]
44048
43804
  }], ctorParameters: function () { return [{ type: ChartPluginsRegistry }, { type: ChartCallbacksRegisterService }, { type: i1.TranslateService }]; } });
44049
43805
 
@@ -45678,7 +45434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
45678
45434
  class CheckConditionPipe {
45679
45435
  transform(activeQuery, condition, config) {
45680
45436
  if (condition) {
45681
- return Evaluator.evaluate(condition, { activeQuery, config }, 'show');
45437
+ return Utils.evaluate(condition, { activeQuery, config }, 'show');
45682
45438
  }
45683
45439
  return true;
45684
45440
  }
@@ -45810,242 +45566,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
45810
45566
  }]
45811
45567
  }] });
45812
45568
 
45813
- class DataAccessService extends BaseEditorConfigService {
45814
- constructor(injector) {
45815
- super(injector);
45816
- }
45817
- saveData(payload) {
45818
- return this.customAutomation({
45819
- operation: 'AC_UA_Create_UI_Configuration',
45820
- context: payload
45821
- });
45822
- }
45823
- }
45824
- DataAccessService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
45825
- DataAccessService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, providedIn: 'root' });
45826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataAccessService, decorators: [{
45827
- type: Injectable,
45828
- args: [{
45829
- providedIn: 'root'
45830
- }]
45831
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
45832
-
45833
- const METADATA_EDITOR_OPTIONS = new InjectionToken('METADATA_EDITOR_CONFIG');
45834
-
45835
- class DataStoreService {
45836
- constructor(dataAccessService, environment, options) {
45837
- this.dataAccessService = dataAccessService;
45838
- this.environment = environment;
45839
- this.options = options;
45840
- this._editorTypeSubject = new BehaviorSubject(NDF_EDITOR_TYPE.TABLES);
45841
- this.editorType$ = this._editorTypeSubject.asObservable();
45842
- this._editorModeSubject = new BehaviorSubject(CONFIG_EDITOR_MODE.EDIT);
45843
- this.editorMode$ = this._editorModeSubject.asObservable();
45844
- this._dataSubject = new BehaviorSubject('{\n"key": "value"\n}');
45845
- this.editorData$ = this._dataSubject.asObservable();
45846
- this.previewData$ = this._dataSubject.asObservable().pipe(map((result) => JSON.parse(result)));
45847
- }
45848
- get editorMode() {
45849
- return this._editorModeSubject.getValue();
45850
- }
45851
- get type() {
45852
- return this._editorTypeSubject.getValue();
45853
- }
45854
- get editorData() {
45855
- return this._dataSubject.getValue();
45856
- }
45857
- changeMode(mode) {
45858
- this._editorModeSubject.next(mode);
45859
- }
45860
- changeEditorType(type) {
45861
- this._editorTypeSubject.next(type);
45862
- }
45863
- getData(key, type) {
45864
- var _a, _b;
45865
- const metadata = ((_a = this.options) === null || _a === void 0 ? void 0 : _a[type]) || {};
45866
- return this.dataAccessService
45867
- .fetchData({
45868
- app: (_b = this.environment) === null || _b === void 0 ? void 0 : _b.appKey,
45869
- key: key,
45870
- type: type,
45871
- localPath: metadata === null || metadata === void 0 ? void 0 : metadata.localPath
45872
- })
45873
- .pipe(switchMap((res) => {
45874
- var _a, _b;
45875
- if ((_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.config) {
45876
- const data = JSON.stringify((_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.config, null, 2);
45877
- this._dataSubject.next(data || '{\n"key": "value"\n}');
45878
- }
45879
- return this.editorData$;
45880
- }));
45881
- }
45882
- saveData(key, type) {
45883
- var _a;
45884
- const data = this._dataSubject.getValue();
45885
- return this.dataAccessService.saveData({
45886
- app: (_a = this.environment) === null || _a === void 0 ? void 0 : _a.appKey,
45887
- key: key,
45888
- type: type,
45889
- content: data
45890
- });
45891
- }
45892
- storeData(data) {
45893
- this._dataSubject.next(data);
45894
- }
45895
- }
45896
- DataStoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService, deps: [{ token: DataAccessService }, { token: 'environment' }, { token: METADATA_EDITOR_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });
45897
- DataStoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService });
45898
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataStoreService, decorators: [{
45899
- type: Injectable
45900
- }], ctorParameters: function () { return [{ type: DataAccessService }, { type: undefined, decorators: [{
45901
- type: Inject,
45902
- args: ['environment']
45903
- }] }, { type: undefined, decorators: [{
45904
- type: Inject,
45905
- args: [METADATA_EDITOR_OPTIONS]
45906
- }] }]; } });
45907
-
45908
- // monaco-loader.service.ts
45909
- class MonacoLoaderService {
45910
- constructor() {
45911
- this.loaded = false;
45912
- }
45913
- load(baseUrl = window.location.origin) {
45914
- const _vsUrl = window.location.origin + baseUrl + '/assets/monaco-editor/min/vs';
45915
- if (this.loaded)
45916
- return this.loadPromise;
45917
- this.loaded = true;
45918
- this.loadPromise = new Promise((resolve) => {
45919
- // If already available
45920
- if (window.monaco) {
45921
- resolve(window.monaco);
45922
- return;
45923
- }
45924
- const onAmdLoader = () => {
45925
- window.require.config({ paths: { vs: _vsUrl } });
45926
- // Set the worker URL to the correct path
45927
- /*window.monaco.editor?.setWorkerOptions({
45928
- // Make sure the worker path points to the correct location
45929
- baseUrl: `${baseUrl}/worker/`
45930
- });*/
45931
- window.require(['vs/editor/editor.main'], () => {
45932
- resolve(window.monaco);
45933
- });
45934
- };
45935
- // Load AMD loader if needed
45936
- if (!window.require) {
45937
- const loaderScript = document.createElement('script');
45938
- loaderScript.type = 'text/javascript';
45939
- loaderScript.src = `${_vsUrl}/loader.js`;
45940
- loaderScript.onload = onAmdLoader;
45941
- document.body.appendChild(loaderScript);
45942
- }
45943
- else {
45944
- onAmdLoader();
45945
- }
45946
- });
45947
- return this.loadPromise;
45948
- }
45949
- }
45950
- MonacoLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
45951
- MonacoLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoLoaderService, providedIn: 'root' });
45952
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MonacoLoaderService, decorators: [{
45953
- type: Injectable,
45954
- args: [{ providedIn: 'root' }]
45955
- }] });
45956
-
45957
- class EditorModeSwitchComponent {
45958
- constructor() {
45959
- this.changeMode = new EventEmitter();
45960
- this.modes = CONFIG_EDITOR_MODE;
45961
- }
45962
- ngOnInit() { }
45963
- onModeChange(mode) {
45964
- this.changeMode.emit(mode.value);
45965
- }
45966
- }
45967
- EditorModeSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorModeSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45968
- EditorModeSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EditorModeSwitchComponent, selector: "app-editor-mode-switch", inputs: { mode: "mode" }, outputs: { changeMode: "changeMode" }, ngImport: i0, template: `
45969
- <mat-button-toggle-group [value]="mode" (change)="onModeChange($event)">
45970
- <mat-button-toggle *ngFor="let mod of modes | keyvalue" [value]="mod.value"
45971
- >{{ 'JSON_EDITOR.MODES.' + (mod.key | lowercase) | translate }}
45972
- </mat-button-toggle>
45973
- </mat-button-toggle-group>
45974
- `, isInline: true, styles: [""], components: [{ type: i1$b.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-labelledby", "tabIndex", "appearance", "checked", "disabled", "id", "name", "aria-label", "value"], outputs: ["change"], exportAs: ["matButtonToggle"] }], directives: [{ type: i1$b.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "keyvalue": i4$1.KeyValuePipe, "translate": i1.TranslatePipe, "lowercase": i4$1.LowerCasePipe } });
45975
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EditorModeSwitchComponent, decorators: [{
45976
- type: Component,
45977
- args: [{
45978
- selector: 'app-editor-mode-switch',
45979
- template: `
45980
- <mat-button-toggle-group [value]="mode" (change)="onModeChange($event)">
45981
- <mat-button-toggle *ngFor="let mod of modes | keyvalue" [value]="mod.value"
45982
- >{{ 'JSON_EDITOR.MODES.' + (mod.key | lowercase) | translate }}
45983
- </mat-button-toggle>
45984
- </mat-button-toggle-group>
45985
- `,
45986
- styles: ['']
45987
- }]
45988
- }], ctorParameters: function () { return []; }, propDecorators: { mode: [{
45989
- type: Input
45990
- }], changeMode: [{
45991
- type: Output
45992
- }] } });
45993
-
45994
- class InfoDialogComponent extends BaseDialogComponent {
45995
- constructor() {
45996
- super(...arguments);
45997
- this.baseAppUrl = this._injector.get(APP_BASE_HREF);
45998
- this.activeDoc = null;
45999
- }
46000
- ngOnInit() {
46001
- var _a;
46002
- this.documentations = this.dialogData.documentations;
46003
- if ((_a = this.documentations) === null || _a === void 0 ? void 0 : _a.length) {
46004
- this.activeDoc = this.documentations[0].name || '';
46005
- }
46006
- }
46007
- }
46008
- InfoDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
46009
- InfoDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: InfoDialogComponent, selector: "app-info-dialog", usesInheritance: true, ngImport: i0, template: "<ndf-nuxeo-dialog [dialogTitle]=\"dialogData.title | translate\" bodyClass=\"gap-4 p-0\">\r\n\t<ng-template #contentTemplate>\r\n\t\t<div class=\"secondary-tabs flex gap-5 items-center self-stretch doc-tabs\">\r\n\t\t\t<div\r\n\t\t\t\t[class.selected-tab]=\"doc.name === activeDoc\"\r\n\t\t\t\tclass=\"tab-item relative flex py-5 px-3 justify-start items-center gap-2.5 cursor-pointer\"\r\n\t\t\t\t*ngFor=\"let doc of documentations\"\r\n\t\t\t\t(click)=\"activeDoc = doc.name\"\r\n\t\t\t>\r\n\t\t\t\t<h4>{{ doc?.name | translate }}</h4>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<ng-container *ngFor=\"let doc of documentations\">\r\n\t\t\t<markdown class=\"markdown-content\" [src]=\"baseAppUrl + doc.path\" *ngIf=\"doc.name === activeDoc\"> </markdown>\r\n\t\t</ng-container>\r\n\t</ng-template>\r\n\r\n\t<ng-template #actionsTemplate let-dialog=\"dialog\"> </ng-template>\r\n</ndf-nuxeo-dialog>\r\n", styles: ["::ng-deep .markdown-content{direction:var(--markdown-direction, ltr)!important;text-align:start;color:var(--markdonw-text-color, inherit);background:var(--markdonw-background-color, transparent);border:var(--markdonw-border, 0px solid transparent);border-radius:var(--markdonw-border-radius, 0);padding:var(--markdown-padding, 1rem)}::ng-deep .markdown-content em{background-color:transparent}::ng-deep .markdown-content code,::ng-deep .markdown-content kbd,::ng-deep .markdown-content samp,::ng-deep .markdown-content pre{font-family:ui-monospace,SFMono-Regular,Consolas,\"Liberation Mono\",Menlo,monospace;font-size:1em}::ng-deep .markdown-content hr{margin-block:1rem}::ng-deep .markdown-content table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;font-variant:tabular-nums;margin-block:.5rem}::ng-deep .markdown-content table tr{border-top:1px solid var(--markdonw-table-tr-border-color, #d1d9e0b3)}::ng-deep .markdown-content table th,::ng-deep .markdown-content table td{padding:6px 13px;border:1px solid var(--markdonw-table-border-color, #d1d9e0)}.doc-tabs{position:sticky;top:0;background:var(--markdonw-tabs-background-color, #fff)}\n"], components: [{ type: NdfNuxeoDialog, selector: "ndf-nuxeo-dialog", inputs: ["dialogTitle", "subTitle", "panelClass", "bodyClass", "loaderMode"] }, { type: i2$8.MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "emoji", "katex", "katexOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start"], outputs: ["error", "load", "ready"] }], directives: [{ type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1.TranslatePipe } });
46010
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoDialogComponent, decorators: [{
46011
- type: Component,
46012
- args: [{
46013
- selector: 'app-info-dialog',
46014
- templateUrl: './info-dialog.component.html',
46015
- styleUrls: ['./info-dialog.component.scss']
46016
- }]
46017
- }] });
46018
-
46019
- class ConfigEditorActionsComponent {
46020
- constructor() {
46021
- this.saveDisabled = false;
46022
- this.onSave = new EventEmitter();
46023
- this.onInfo = new EventEmitter();
46024
- this.onBack = new EventEmitter();
46025
- }
46026
- ngOnInit() { }
46027
- }
46028
- ConfigEditorActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigEditorActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46029
- ConfigEditorActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ConfigEditorActionsComponent, selector: "app-config-editor-actions", inputs: { saveDisabled: "saveDisabled", config: "config" }, outputs: { onSave: "onSave", onInfo: "onInfo", onBack: "onBack" }, ngImport: i0, template: "<button mat-stroked-button (click)=\"onSave.emit($event)\" [disabled]=\"saveDisabled\">\r\n\t{{ 'JSON_EDITOR.save' | translate }}\r\n</button>\r\n<button mat-stroked-button (click)=\"onInfo.emit(config?.documentations)\" *ngIf=\"!!config?.documentations?.length\">\r\n\t{{ 'JSON_EDITOR.info' | translate }}\r\n</button>\r\n\r\n<button mat-stroked-button (click)=\"onBack.emit($event)\">{{ 'JSON_EDITOR.back' | translate }}</button>\r\n", styles: [":host{display:var(--ndf-editor-actions-display, flex);flex-direction:var(--ndf-editor-actions-direction, column);grid-gap:var(--ndf-editor-actions-gap, .5rem);gap:var(--ndf-editor-actions-gap, .5rem)}\n"], components: [{ type: i1$c.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1.TranslatePipe } });
46030
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfigEditorActionsComponent, decorators: [{
46031
- type: Component,
46032
- args: [{
46033
- selector: 'app-config-editor-actions',
46034
- templateUrl: './config-editor-actions.component.html',
46035
- styleUrls: ['./config-editor-actions.component.scss']
46036
- }]
46037
- }], ctorParameters: function () { return []; }, propDecorators: { saveDisabled: [{
46038
- type: Input
46039
- }], config: [{
46040
- type: Input
46041
- }], onSave: [{
46042
- type: Output
46043
- }], onInfo: [{
46044
- type: Output
46045
- }], onBack: [{
46046
- type: Output
46047
- }] } });
46048
-
46049
45569
  class EditorSettingsComponent {
46050
45570
  constructor(_componentRegister, _evaluatorsService, _ndfTransformService, _chartDataTransformers, _chartPluginsRegistry) {
46051
45571
  this._componentRegister = _componentRegister;
@@ -46572,6 +46092,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
46572
46092
  }]
46573
46093
  }] });
46574
46094
 
46095
+ class NdfPanelComponent {
46096
+ constructor() {
46097
+ this.maxBodyHeight = 'auto';
46098
+ }
46099
+ }
46100
+ NdfPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46101
+ NdfPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfPanelComponent, selector: "ndf-panel", inputs: { maxBodyHeight: "maxBodyHeight" }, queries: [{ propertyName: "panelHeader", first: true, predicate: ["panelHeader"], descendants: true, read: TemplateRef }, { propertyName: "panelBody", first: true, predicate: ["panelBody"], descendants: true, read: TemplateRef }, { propertyName: "panelFooter", first: true, predicate: ["panelFooter"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"scroll-panel\">\r\n\t<div class=\"header\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"panelHeader\"></ng-container>\r\n\t</div>\r\n\r\n\t<div class=\"body\" [style.maxHeight]=\"maxBodyHeight\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"panelBody\"></ng-container>\r\n\t</div>\r\n\r\n\t<div class=\"footer\">\r\n\t\t<ng-container [ngTemplateOutlet]=\"panelFooter\"></ng-container>\r\n\t</div>\r\n</div>\r\n", styles: [".scroll-panel{display:var(--ndf-panel-display, flex);flex-direction:var(--ndf-panel-flex-direction, column);height:var(--ndf-panel-height, calc(100dvh - 65px));border:1px solid var(--ndf-panel-main-border)}.header{flex:var(--ndf-panel-header-flex, 0 0 auto);color:var(--ndf-panel-color, #3b3b3c);background-color:var(--ndf-panel-bg, #f6f9f5);border-bottom:1px solid var(--ndf-panel-border-color, #e7e7e7)}.footer{border-top:1px solid var(--ndf-panel-border-color, #e7e7e7)}.body{flex:var(--ndf-panel-body-flex, 1 1 auto);overflow-y:var(--ndf-panel-body-overflow-y, auto);min-height:var(--ndf-panel-body-min-height, 0)}\n"], directives: [{ type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelComponent, decorators: [{
46103
+ type: Component,
46104
+ args: [{
46105
+ selector: 'ndf-panel',
46106
+ templateUrl: './ndf-panel.component.html',
46107
+ styleUrls: ['./ndf-panel.component.scss'],
46108
+ changeDetection: ChangeDetectionStrategy.OnPush
46109
+ }]
46110
+ }], propDecorators: { maxBodyHeight: [{
46111
+ type: Input
46112
+ }], panelHeader: [{
46113
+ type: ContentChild,
46114
+ args: ['panelHeader', { read: TemplateRef }]
46115
+ }], panelBody: [{
46116
+ type: ContentChild,
46117
+ args: ['panelBody', { read: TemplateRef }]
46118
+ }], panelFooter: [{
46119
+ type: ContentChild,
46120
+ args: ['panelFooter', { read: TemplateRef }]
46121
+ }] } });
46122
+
46123
+ class NdfPanelModule {
46124
+ }
46125
+ NdfPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
46126
+ NdfPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, declarations: [NdfPanelComponent], imports: [CommonModule], exports: [NdfPanelComponent] });
46127
+ NdfPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, imports: [[CommonModule]] });
46128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfPanelModule, decorators: [{
46129
+ type: NgModule,
46130
+ args: [{
46131
+ declarations: [NdfPanelComponent],
46132
+ imports: [CommonModule],
46133
+ exports: [NdfPanelComponent]
46134
+ }]
46135
+ }] });
46136
+
46575
46137
  const UPLOADER_CONFIG = {
46576
46138
  DEFAULT_PROVIDER: 'nuxeo',
46577
46139
  MAX_CONCURRENT_REQUESTS: 5,
@@ -48899,6 +48461,150 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
48899
48461
  }]
48900
48462
  }] });
48901
48463
 
48464
+ class NdfTabsComponent extends BaseComponent {
48465
+ constructor(injector, evaluatorsService) {
48466
+ super(injector);
48467
+ this.evaluatorsService = evaluatorsService;
48468
+ this.isAllowdTabFn = (_) => true;
48469
+ this._showHeader = true;
48470
+ this.activeTabEmitter = new EventEmitter();
48471
+ this.checkingPermission = false;
48472
+ }
48473
+ set showHeader(value) {
48474
+ this._showHeader = value;
48475
+ }
48476
+ get showHeader() {
48477
+ return this._showHeader;
48478
+ }
48479
+ ngOnInit() {
48480
+ this.checkTabsPermissions();
48481
+ }
48482
+ checkTabsPermissions() {
48483
+ this.checkingPermission = true;
48484
+ const permissionCalls = [];
48485
+ const createPermissionCall = (id, permission, secondaryTab = false) => {
48486
+ if (permission) {
48487
+ return from(this.evaluatorsService.evaluateRule(permission)).pipe(map((res) => ({ id, enabled: res, secondaryTab })));
48488
+ }
48489
+ return of({ id, enabled: true, secondaryTab });
48490
+ };
48491
+ this.tabs.forEach((tab) => {
48492
+ var _a;
48493
+ permissionCalls.push(createPermissionCall(tab.id, tab.permission));
48494
+ (_a = tab.secondary_tabs) === null || _a === void 0 ? void 0 : _a.forEach((subTab) => {
48495
+ permissionCalls.push(createPermissionCall(subTab.id, subTab.permission, true));
48496
+ });
48497
+ });
48498
+ forkJoin(permissionCalls)
48499
+ .pipe(takeUntil(this.destroy$), tap((results) => {
48500
+ const secondaryTabsPerms = results.filter((r) => r.secondaryTab);
48501
+ const primaryTabsPerms = results.filter((r) => !r.secondaryTab);
48502
+ let filteredTabs = cloneDeep(this.tabs);
48503
+ filteredTabs = filteredTabs
48504
+ .filter((tab) => primaryTabsPerms.some((p) => p.id === tab.id && p.enabled))
48505
+ .map((tab) => {
48506
+ var _a;
48507
+ if ((_a = tab.secondary_tabs) === null || _a === void 0 ? void 0 : _a.length) {
48508
+ tab.secondary_tabs = tab.secondary_tabs.filter((sub) => secondaryTabsPerms.some((p) => p.id === sub.id && p.enabled));
48509
+ }
48510
+ return tab;
48511
+ });
48512
+ this.tabs = filteredTabs;
48513
+ }))
48514
+ .subscribe(() => {
48515
+ if (this.tabs.length && !this.activeTab) {
48516
+ this.activateTab(this.tabs[0]);
48517
+ }
48518
+ this.checkingPermission = false;
48519
+ });
48520
+ }
48521
+ get activatedTabId() {
48522
+ var _a, _b, _c;
48523
+ return (_a = this.activeTab) !== null && _a !== void 0 ? _a : (_c = (_b = this.tabs) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.id;
48524
+ }
48525
+ get activatedTab() {
48526
+ return this.tabs.find(({ id }) => id === this.activatedTabId);
48527
+ }
48528
+ activateTab(tab) {
48529
+ this.activeTab = tab.id;
48530
+ this.activeTabEmitter.emit(tab);
48531
+ }
48532
+ ngOnDestroy() {
48533
+ this.destroy$.next();
48534
+ this.destroy$.complete();
48535
+ }
48536
+ isEnabledTab(tabId) {
48537
+ var _a;
48538
+ return (_a = tabId.isEnable) !== null && _a !== void 0 ? _a : true;
48539
+ }
48540
+ }
48541
+ NdfTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsComponent, deps: [{ token: i0.Injector }, { token: EvaluatorsService }], target: i0.ɵɵFactoryTarget.Component });
48542
+ NdfTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfTabsComponent, selector: "ndf-tabs", inputs: { tabs: "tabs", activeTab: "activeTab", isAllowdTabFn: "isAllowdTabFn", showHeader: "showHeader" }, outputs: { activeTabEmitter: "activeTabEmitter" }, host: { classAttribute: "w-full h-full" }, queries: [{ propertyName: "tabHeader", first: true, predicate: ["tabHeader"], descendants: true, read: TemplateRef }, { propertyName: "headerOptions", first: true, predicate: ["headerOptions"], descendants: true, read: TemplateRef }, { propertyName: "tabBody", first: true, predicate: ["tabBody"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col ndf-tabs-wrapper rounded-md px-0.5\" *ngIf=\"!checkingPermission\">\r\n\t<div\r\n\t\tclass=\"tabs-header flex justify-between items-center w-full border-b print:hidden\"\r\n\t\t[@visibilitySlide]=\"showHeader\"\r\n\t\t[class.overflow-hidden]=\"!showHeader\"\r\n\t>\r\n\t\t<div class=\"tabs-wrapper flex justify-start items-center gap-2.5 self-stretch\">\r\n\t\t\t<ng-container *ngFor=\"let tab of tabs\">\r\n\t\t\t\t<ng-container *ngIf=\"isEnabledTab(tab) && isAllowdTabFn(tab)\">\r\n\t\t\t\t\t<div\r\n\t\t\t\t\t\t[ngClass]=\"{\r\n\t\t\t\t\t\t\t'selected-tab': activeTab === tab.id\r\n\t\t\t\t\t\t}\"\r\n\t\t\t\t\t\tclass=\"tab-item flex p-4 justify-center items-center gap-2.5 rounded-t-md font-medium text-xl cursor-pointer\"\r\n\t\t\t\t\t\t(click)=\"activateTab(tab)\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ng-template\r\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"tabHeader || defaultHeader\"\r\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: tab }\"\r\n\t\t\t\t\t\t></ng-template>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-template\r\n\t\t\t[ngTemplateOutlet]=\"headerOptions\"\r\n\t\t\t[ngTemplateOutletContext]=\"{ $implicit: activatedTab }\"\r\n\t\t></ng-template>\r\n\t</div>\r\n\t<ng-template\r\n\t\t[ngTemplateOutlet]=\"tabBody || defaultBody\"\r\n\t\t[ngTemplateOutletContext]=\"{ $implicit: activatedTab }\"\r\n\t></ng-template>\r\n</div>\r\n\r\n<ng-template #defaultHeader let-tab>{{ tab.label | translate }}</ng-template>\r\n<ng-template #defaultBody>Default Body</ng-template>\r\n", styles: [":host{display:block}.ndf-tabs-wrapper{background-color:var(--ndf-tabs-body, #fff);border-radius:8px 8px 0 0;overflow:var(--ndf-tabs-wrapper-overflow, auto);height:var(--ndf-tabs-wrapper-height, calc(100vh - 100px))}.ndf-tabs-wrapper .tabs-header{background-color:var(--ndf-tabs-header, #fff)}@media print{.ndf-tabs-wrapper{--ndf-tabs-wrapper-overflow: visible;--ndf-tabs-wrapper-height: auto}}\n"], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i1.TranslatePipe }, animations: [
48543
+ trigger('visibilitySlide', [
48544
+ state('true', style({ height: '*', visibility: '*' })),
48545
+ state('false', style({ height: '0', visibility: 'hidden' })),
48546
+ transition('false => true', animate('150ms ease-out')),
48547
+ transition('true => false', animate('150ms ease-in'))
48548
+ ])
48549
+ ] });
48550
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsComponent, decorators: [{
48551
+ type: Component,
48552
+ args: [{
48553
+ selector: 'ndf-tabs',
48554
+ templateUrl: './ndf-tabs.component.html',
48555
+ styleUrls: ['./ndf-tabs.component.scss'],
48556
+ host: { class: 'w-full h-full' },
48557
+ animations: [
48558
+ trigger('visibilitySlide', [
48559
+ state('true', style({ height: '*', visibility: '*' })),
48560
+ state('false', style({ height: '0', visibility: 'hidden' })),
48561
+ transition('false => true', animate('150ms ease-out')),
48562
+ transition('true => false', animate('150ms ease-in'))
48563
+ ])
48564
+ ]
48565
+ }]
48566
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: EvaluatorsService }]; }, propDecorators: { tabHeader: [{
48567
+ type: ContentChild,
48568
+ args: ['tabHeader', { read: TemplateRef }]
48569
+ }], headerOptions: [{
48570
+ type: ContentChild,
48571
+ args: ['headerOptions', { read: TemplateRef }]
48572
+ }], tabBody: [{
48573
+ type: ContentChild,
48574
+ args: ['tabBody', { read: TemplateRef }]
48575
+ }], tabs: [{
48576
+ type: Input
48577
+ }], activeTab: [{
48578
+ type: Input
48579
+ }], isAllowdTabFn: [{
48580
+ type: Input
48581
+ }], showHeader: [{
48582
+ type: Input
48583
+ }], activeTabEmitter: [{
48584
+ type: Output
48585
+ }] } });
48586
+
48587
+ class NdfTabsModule {
48588
+ }
48589
+ NdfTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
48590
+ NdfTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, declarations: [NdfTabsComponent], imports: [CommonModule,
48591
+ TranslateModule], exports: [NdfTabsComponent] });
48592
+ NdfTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, imports: [[
48593
+ CommonModule,
48594
+ TranslateModule
48595
+ ]] });
48596
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfTabsModule, decorators: [{
48597
+ type: NgModule,
48598
+ args: [{
48599
+ declarations: [NdfTabsComponent],
48600
+ imports: [
48601
+ CommonModule,
48602
+ TranslateModule
48603
+ ],
48604
+ exports: [NdfTabsComponent]
48605
+ }]
48606
+ }] });
48607
+
48902
48608
  /*
48903
48609
  * Public API Surface of nuxeo-development-framework
48904
48610
  */
@@ -48907,5 +48613,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
48907
48613
  * Generated bundle index. Do not edit.
48908
48614
  */
48909
48615
 
48910
- export { ACTIONS_TABLE_TEMPLATE, AGGREGATION_FIELD_TYPES, AUTOCOMPLETE_TEMPLATE, ActionsTableTemplateDirective, ActiveUserSwitchComponent, ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AggregationAutocompleteComponent, AggregationCheckboxComponent, AggregationCustomComponent, AggregationDateListComponent, AggregationFieldComponent, AggregationGroupComponent, AggregationRadioComponent, AggregationSelectComponent, AggregationSwitchComponent, ApisErrorsMessagesService, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AutocompleteFilterPipe, AutocompleteTemplateDirective, AvatarComponent, AvatarModule, BaseChartBuilderService, BaseChartComponent, BaseColumnComponent, BaseComponent, BaseCustomReport, BaseDatePicker, BaseDateValueAccessor, BaseDialogComponent, BaseEditorConfigService, BaseNodeClass, BaseSelector, BaseService, BooleanViewerComponent, ButtonComponent, CHART_DEFAULTS_OPTIONS, CHART_MAIN_COLOR, CHECKBOX_TEMPLATE, COLORS_COUNT, COMPARISON_OPERATOR, CONFIG_EDITOR_MODE, CUSTOM_FIELD_TYPES, CUSTOM_TEMPLATE, CachingExpiryUnit, CalendarService, CallApiService, CardComponent, CardModule, ChartCallbacksRegisterService, ChartComponent, ChartDataService, ChartDataTransformers, index$1 as ChartDefaults, ChartManagerService, ChartPanel, ChartPanelFooterComponent, ChartPanelHeaderComponent, ChartPanelModule, index as ChartPlugins, ChartPluginsRegistry, ChartThemeService, index$2 as ChartUtils, ChartsModule, CheckConditionPipe$1 as CheckConditionPipe, CheckboxTemplateDirective, CircleNode, CircleNodeComponent, ClickOutsideDirective, ClipboardComponent, ColumnRendererRegistryService, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfigEditorActionsComponent, ConfigPreviewComponent, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, Connection, ConnectionLabelComponent, ContentActionType, ContentNode, ContentNodeComponent, CopyComponent, CopyToClipboardDirective, CopyToClipboardModule, CorrespondenceRelationComponent, CorrespondenceRelationCreateFormComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomConnectionComponent, CustomDocumentViewerComponent, CustomFieldComponent, CustomMomentDateAdapter, CustomPpViewerComponent, CustomReportsRegistry, CustomSocketComponent, CustomTemplateDirective, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DATE_LIST_TEMPLATE, DATE_LIST_VIEW, DATE_LOCALE_KEYS, DATE_TYPE, DEFAULT_DEBOUNCE_TIME, DEFAULT_VIEW, DIAGRAM_DEFAULT_OPTIONS, DIAGRAM_HEIGHT, DROPDOWN_LABEL_TEMPLATE, DROPDOWN_MULTI_LABEL_TEMPLATE, DROPDOWN_TEMPLATE, DataChartComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateListTemplateDirective, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DestroySubject, DiagramDirective, DiagramPluginsService, DiagramService, DiagramUtils, DiagramsModule, DialogMangmentService, DigitChartService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownLabelTemplateDirective, DropdownMultiLabelTemplateDirective, DropdownTemplateDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicCustomComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicTimelineReportService, DynamicViewModule, EMPTY_CONTENT_TEMPLATE, EMPTY_TEMPLATE, ENTITY_TYPE, EXTENSION_JSONS, EditDeleteModalComponent, EditorModeSwitchComponent, EditorSettingsComponent, ElementHeightDirective, ElementHeightModule, EmdhaAuthDialog, EmdhaService, EmptyContentTemplateDirective, EmptyTemplateDirective, EnvManager, Evaluator, EvaluatorLabelPipe, EvaluatorsService, ExtensionLoaderService, ExtensionService, FIELD_SEND_MODE, FIELD_TYPE, FILE_CONTENT, FILTER_CUSTOM_TEMPLATE, FILTER_DATES_TYPE, FieldHeaderComponent, FieldValueObject, FileEventType, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FileStatus, FilterAutocompleteInputComponent, FilterCollapseControlComponent, FilterComponent, FilterCustomTemplateDirective, FilterDateRangeComponent, FilterEmptyMessageComponent, FilterModule, FilterOptionTextComponent, FilterOptionsSortComponent, FilterPipe, FilterQueryService, FilterSearchInputComponent, FiltersByRolesPipe, FiltersMapperService, FiltersPanelComponent, FluidHeightDirective, FluidHeightModule, FolderModalComponent, FolderishType, FormBuilderService, GREGORIAN_DATE_FORMATS, GREGORIAN_FORMAT, GatewayNodeComponent, GatewayPortsComponent, GeneralNotificationPopupComponent, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HEADER_PANEL_TEMPLATE, HIJRI_DATE_ARABIC_NAMES, HIJRI_DATE_ENGLISH_NAMES, HIJRI_DATE_FORMATS, HIJRI_FORMAT, HashTranslateAsyncPipe, HashTranslatePipe, HeaderPanelTemplateDirective, HijriAdapterService, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, HtmlDialogComponent, IN_OUT_DIRECTION, IconService, InfoDialogComponent, InitializationService, InputDateComponent, InputPort, InputRangeDateComponent, InsertSingPosition, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizeState, LocalizedDatePipe, LocalizedLabelPipe, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY, MESSAGE_TYPE, METADATA_EDITOR_OPTIONS, MIN_VISIBLE_COUNT, MONACO_EDITOR_CONFIG, MY_MOMENT_FORMATS, MainfolderService, MapToAggregationConfigPipe, MessageService, ModeTogglerComponent, MomentDateAdapter, MonacoEditorComponent, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NDF_EDITOR_TYPE, NODE_CIRCLE_SIZE, NODE_GATEWAY_SIZE, NODE_HEIGHT, NODE_MARGIN, NODE_STATUS, NODE_TYPE, NODE_WIDTH, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NOTIFY_EVENT, NdfConfigEditorComponent, NdfConfigEditorModule, NdfConfirmationDialogComponent, NdfDatepickerComponent, NdfDatepickerModule, NdfFiltersPanelModule, NdfGregorianDatepickerComponent, NdfHijriDatepickerComponent, NdfNuxeoDialog, NdfPanelComponent, NdfPanelModule, NdfReportComponent, NdfReportsComponent, NdfReportsModule, NdfReportsService, NdfScannerComponent, NdfScannerModule, NdfSignaturePanelComponent, NdfSignaturesModule, NdfTableComponent, NdfTableConfigurationService, NdfTableModule, NdfTableService, NdfTabsComponent, NdfTabsModule, NdfTransformService, NdfTronExtractText, NdfUploaderBottomSheetComponent, NdfUploaderBottomSheetService, NdfUploaderModule, NdfUploaderService, NdfUploaderSheetEventType, NgxHijriGregorianDatepickerModule, NoDataComponent, NoDataFoundComponent, NoDataModule, NodeIconComponent, NodeInputsComponent, NodeOutputsComponent, NodePortsComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoDialogModule, NuxeoDialogService, NuxeoMapper, NuxeoService, NxQL, NxQlQuery, OutputPort, OverrideTokenService, PAGINATION_MODE, PANEL_MODE, PARAMS_KEYS, PREDICATE_FIELD_TYPES, PROJECT_BASE_HREF, PageSizesListComponent, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PredicateDateInputComponent, PredicateFieldComponent, PredicateTextInputComponent, PublishDialogComponent, PublishingDocumentService, RADIO_TEMPLATE, RadioTemplateDirective, ReadMoreComponent, RecentlyViewedService, RemoveButtonComponent, RenameComponent, ReportConfigMapperService, ReportConfigurationService, ReportTransformService, ReportsDataTransformers, ReportsHooksService, ReportsStateService, RolesService, SEARCH_TABLE_TEMPLATE, SOCKET_WIDTH, SUBSCRIPTION_STATE, SWITCH_TEMPLATE, SafeHtmlPipe, SanitizerPipe, ScanComponent, ScanModalComponent, ScrollableDivDirective, SearchAutocompleteComponent, SearchTableTemplateDirective, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SignatureType, SignaturesService, SilentPdfTronService, SingleActivityComponent, SkeletonComponent, SkeletonModule, Socket, SortListPipe, SortingListComponent, SpellCheckerFieldModule, SpellCheckerTextFieldComponent, SpinnerComponent, StatisticService, StatusIconComponent, SwitchTemplateDirective, TRANSLATION_PROVIDER, TableColumnsTogglerComponent, TableComponent, TableExportComponent, TableHooksService, TableModule, TableSkeletonComponent, TagsApiService, TemplateModalComponent, TemplateNode, TemplateNodeComponent, TextSearchComponent, TimeAgoPipe, ToastsModule, TooltipPipe, TransactionStatus, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UploadProvider, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VALUE_OBJECT, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService$1 as VocabularyApiService, VocabularyComponent, VocabularyModule, WorkflowService, ZoomControlComponent, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getConnections, getDoughnutOptions, getHorizontalBarOptions, getLineOptions, getPieOptions, getRandomNumber, getValue, getVerticalBarOptions, isDateObject, isFieldValueObject, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, removeConnections, removeEmptyKeys, removeNode, removeNodeAndConnections, serializeControl, serializePort, slideAnimation, sortByOrder };
48616
+ export { ACTIONS_TABLE_TEMPLATE, AGGREGATION_FIELD_TYPES, AUTOCOMPLETE_TEMPLATE, ActionsTableTemplateDirective, ActiveUserSwitchComponent, ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AggregationAutocompleteComponent, AggregationCheckboxComponent, AggregationCustomComponent, AggregationDateListComponent, AggregationFieldComponent, AggregationGroupComponent, AggregationRadioComponent, AggregationSelectComponent, AggregationSwitchComponent, ApisErrorsMessagesService, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AutocompleteFilterPipe, AutocompleteTemplateDirective, AvatarComponent, AvatarModule, BaseChartBuilderService, BaseChartComponent, BaseColumnComponent, BaseComponent, BaseCustomReport, BaseDatePicker, BaseDateValueAccessor, BaseDialogComponent, BaseEditorConfigService, BaseNodeClass, BaseSelector, BaseService, BooleanViewerComponent, ButtonComponent, CHART_DEFAULTS_OPTIONS, CHART_MAIN_COLOR, CHECKBOX_TEMPLATE, COLORS_COUNT, COMPARISON_OPERATOR, CONFIG_EDITOR_MODE, CUSTOM_FIELD_TYPES, CUSTOM_TEMPLATE, CachingExpiryUnit, CalendarService, CallApiService, CardComponent, CardModule, ChartCallbacksRegisterService, ChartComponent, ChartDataService, ChartDataTransformers, index$1 as ChartDefaults, ChartManagerService, ChartPanel, ChartPanelFooterComponent, ChartPanelHeaderComponent, ChartPanelModule, index as ChartPlugins, ChartPluginsRegistry, ChartThemeService, index$2 as ChartUtils, ChartsModule, CheckConditionPipe$1 as CheckConditionPipe, CheckboxTemplateDirective, CircleNode, CircleNodeComponent, ClickOutsideDirective, ClipboardComponent, ColumnRendererRegistryService, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfigEditorActionsComponent, ConfigPreviewComponent, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, Connection, ConnectionLabelComponent, ContentActionType, ContentNode, ContentNodeComponent, CopyComponent, CopyToClipboardDirective, CopyToClipboardModule, CorrespondenceRelationComponent, CorrespondenceRelationCreateFormComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomConnectionComponent, CustomDocumentViewerComponent, CustomFieldComponent, CustomMomentDateAdapter, CustomPpViewerComponent, CustomReportsRegistry, CustomSocketComponent, CustomTemplateDirective, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DATE_LIST_TEMPLATE, DATE_LIST_VIEW, DATE_LOCALE_KEYS, DATE_TYPE, DEFAULT_DEBOUNCE_TIME, DEFAULT_VIEW, DIAGRAM_DEFAULT_OPTIONS, DIAGRAM_HEIGHT, DROPDOWN_LABEL_TEMPLATE, DROPDOWN_MULTI_LABEL_TEMPLATE, DROPDOWN_TEMPLATE, DataChartComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateListTemplateDirective, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DestroySubject, DiagramDirective, DiagramPluginsService, DiagramService, DiagramUtils, DiagramsModule, DialogMangmentService, DigitChartService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownLabelTemplateDirective, DropdownMultiLabelTemplateDirective, DropdownTemplateDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicCustomComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicTimelineReportService, DynamicViewModule, EMPTY_CONTENT_TEMPLATE, EMPTY_TEMPLATE, ENTITY_TYPE, EXTENSION_JSONS, EditDeleteModalComponent, EditorModeSwitchComponent, EditorSettingsComponent, ElementHeightDirective, ElementHeightModule, EmdhaAuthDialog, EmdhaService, EmptyContentTemplateDirective, EmptyTemplateDirective, EnvManager, EvaluatorLabelPipe, EvaluatorsService, ExtensionLoaderService, ExtensionService, FIELD_SEND_MODE, FIELD_TYPE, FILE_CONTENT, FILTER_CUSTOM_TEMPLATE, FILTER_DATES_TYPE, FieldHeaderComponent, FieldValueObject, FileEventType, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FileStatus, FilterAutocompleteInputComponent, FilterCollapseControlComponent, FilterComponent, FilterCustomTemplateDirective, FilterDateRangeComponent, FilterEmptyMessageComponent, FilterModule, FilterOptionTextComponent, FilterOptionsSortComponent, FilterPipe, FilterQueryService, FilterSearchInputComponent, FiltersByRolesPipe, FiltersMapperService, FiltersPanelComponent, FluidHeightDirective, FluidHeightModule, FolderModalComponent, FolderishType, FormBuilderService, GREGORIAN_DATE_FORMATS, GREGORIAN_FORMAT, GatewayNodeComponent, GatewayPortsComponent, GeneralNotificationPopupComponent, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HEADER_PANEL_TEMPLATE, HIJRI_DATE_ARABIC_NAMES, HIJRI_DATE_ENGLISH_NAMES, HIJRI_DATE_FORMATS, HIJRI_FORMAT, HashTranslateAsyncPipe, HashTranslatePipe, HeaderPanelTemplateDirective, HijriAdapterService, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, HtmlDialogComponent, IN_OUT_DIRECTION, IconService, InfoDialogComponent, InitializationService, InputDateComponent, InputPort, InputRangeDateComponent, InsertSingPosition, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizeState, LocalizedDatePipe, LocalizedLabelPipe, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY, MESSAGE_TYPE, METADATA_EDITOR_OPTIONS, MIN_VISIBLE_COUNT, MONACO_EDITOR_CONFIG, MY_MOMENT_FORMATS, MainfolderService, MapToAggregationConfigPipe, MessageService, ModeTogglerComponent, MomentDateAdapter, MonacoEditorComponent, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NDF_EDITOR_TYPE, NODE_CIRCLE_SIZE, NODE_GATEWAY_SIZE, NODE_HEIGHT, NODE_MARGIN, NODE_STATUS, NODE_TYPE, NODE_WIDTH, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NOTIFY_EVENT, NdfConfigEditorComponent, NdfConfigEditorModule, NdfConfirmationDialogComponent, NdfDatepickerComponent, NdfDatepickerModule, NdfFiltersPanelModule, NdfGregorianDatepickerComponent, NdfHijriDatepickerComponent, NdfNuxeoDialog, NdfPanelComponent, NdfPanelModule, NdfReportComponent, NdfReportsComponent, NdfReportsModule, NdfReportsService, NdfScannerComponent, NdfScannerModule, NdfSignaturePanelComponent, NdfSignaturesModule, NdfTableComponent, NdfTableConfigurationService, NdfTableModule, NdfTableService, NdfTabsComponent, NdfTabsModule, NdfTransformService, NdfTronExtractText, NdfUploaderBottomSheetComponent, NdfUploaderBottomSheetService, NdfUploaderModule, NdfUploaderService, NdfUploaderSheetEventType, NgxHijriGregorianDatepickerModule, NoDataComponent, NoDataFoundComponent, NoDataModule, NodeIconComponent, NodeInputsComponent, NodeOutputsComponent, NodePortsComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoDialogModule, NuxeoDialogService, NuxeoMapper, NuxeoService, NxQL, NxQlQuery, OutputPort, OverrideTokenService, PAGINATION_MODE, PANEL_MODE, PARAMS_KEYS, PREDICATE_FIELD_TYPES, PROJECT_BASE_HREF, PageSizesListComponent, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PredicateDateInputComponent, PredicateFieldComponent, PredicateTextInputComponent, PublishDialogComponent, PublishingDocumentService, RADIO_TEMPLATE, RadioTemplateDirective, ReadMoreComponent, RecentlyViewedService, RemoveButtonComponent, RenameComponent, ReportConfigMapperService, ReportConfigurationService, ReportTransformService, ReportsDataTransformers, ReportsHooksService, ReportsStateService, RolesService, SEARCH_TABLE_TEMPLATE, SOCKET_WIDTH, SUBSCRIPTION_STATE, SWITCH_TEMPLATE, SafeHtmlPipe, SanitizerPipe, ScanComponent, ScanModalComponent, ScrollableDivDirective, SearchAutocompleteComponent, SearchTableTemplateDirective, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SignatureType, SignaturesService, SilentPdfTronService, SingleActivityComponent, SkeletonComponent, SkeletonModule, Socket, SortListPipe, SortingListComponent, SpellCheckerFieldModule, SpellCheckerTextFieldComponent, SpinnerComponent, StatisticService, StatusIconComponent, SwitchTemplateDirective, TRANSLATION_PROVIDER, TableColumnsTogglerComponent, TableComponent, TableExportComponent, TableHooksService, TableModule, TableSkeletonComponent, TagsApiService, TemplateModalComponent, TemplateNode, TemplateNodeComponent, TextSearchComponent, TimeAgoPipe, ToastsModule, TooltipPipe, TransactionStatus, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UploadProvider, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VALUE_OBJECT, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService$1 as VocabularyApiService, VocabularyComponent, VocabularyModule, WorkflowService, ZoomControlComponent, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getConnections, getDoughnutOptions, getHorizontalBarOptions, getLineOptions, getPieOptions, getRandomNumber, getValue, getVerticalBarOptions, isDateObject, isFieldValueObject, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, removeConnections, removeEmptyKeys, removeNode, removeNodeAndConnections, serializeControl, serializePort, slideAnimation, sortByOrder };
48911
48617
  //# sourceMappingURL=nuxeo-development-framework.js.map