@simple-reporting/base 1.0.13 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dev/package.json CHANGED
@@ -19,9 +19,9 @@
19
19
  "postinstall": "srl prepare"
20
20
  },
21
21
  "dependencies": {
22
- "@simple-reporting/base": "^1.0.13",
23
- "axios": "^1.9.0",
24
- "chalk": "^5.4.1",
22
+ "@simple-reporting/base": "^1.0.14",
23
+ "axios": "^1.12.2",
24
+ "chalk": "^5.6.2",
25
25
  "exceljs": "^4.4.0",
26
26
  "file-saver": "^2.0.5",
27
27
  "highcharts": "^11.4.8",
@@ -32,33 +32,33 @@
32
32
  "standard-scss": "github:mms-neidhartschoen/nsfd_standard-scss",
33
33
  "vite-plugin-pwa": "^0.21.2",
34
34
  "vue": "^3.5.13",
35
- "vue-i18n": "^11.1.5",
35
+ "vue-i18n": "^11.1.12",
36
36
  "vue-router": "^4.5.1",
37
37
  "vue3-runtime-template": "^1.0.2",
38
38
  "xlsx": "^0.18.5"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@kne/color-palette": "^0.1.0",
42
- "@rushstack/eslint-patch": "^1.11.0",
42
+ "@rushstack/eslint-patch": "^1.12.0",
43
43
  "@tsconfig/node22": "^22.0.2",
44
44
  "@types/jsdom": "^21.1.7",
45
- "@types/node": "^22.15.29",
45
+ "@types/node": "^22.18.4",
46
46
  "@vitejs/plugin-vue": "^5.2.4",
47
47
  "@vitest/eslint-plugin": "1.1.20",
48
48
  "@vue/eslint-config-prettier": "^10.2.0",
49
- "@vue/eslint-config-typescript": "^14.5.0",
49
+ "@vue/eslint-config-typescript": "^14.6.0",
50
50
  "@vue/test-utils": "^2.4.6",
51
51
  "@vue/tsconfig": "^0.7.0",
52
- "eslint": "^9.28.0",
52
+ "eslint": "^9.35.0",
53
53
  "eslint-plugin-vue": "^9.33.0",
54
54
  "jsdom": "^25.0.1",
55
55
  "npm-run-all2": "^7.0.2",
56
- "prettier": "^3.5.3",
57
- "sass": "^1.89.1",
56
+ "prettier": "^3.6.2",
57
+ "sass": "^1.92.1",
58
58
  "typescript": "~5.6.3",
59
- "vite": "^6.3.5",
60
- "vite-plugin-vue-devtools": "^7.7.6",
61
- "vitest": "^2.1.9",
62
- "vue-tsc": "^2.2.10"
59
+ "vite": "^6.3.6",
60
+ "vite-plugin-vue-devtools": "^7.7.7",
61
+ "vitest": "^3.2.4",
62
+ "vue-tsc": "^2.2.12"
63
63
  }
64
64
  }
@@ -1,5 +1,6 @@
1
1
  @use 'srl';
2
2
  @use 'web';
3
+ @use "placeholders";
3
4
 
4
5
  $editor-color-srl: srl.colors-shade-200();
5
6
  $editor-background-color-srl: srl.colors-primary-1000();
@@ -37,4 +38,48 @@ span.ns-key-figure {
37
38
  // Set width of placeholder image to 100%
38
39
  img[src^="data:image/svg+xml"] {
39
40
  width: 100%
41
+ }
42
+
43
+ .srl-editor-component {
44
+ @include srl.spacer-padding-block(200);
45
+ @extend %srl-grid-base;
46
+
47
+ &.srl-pdf-pagebreak,
48
+ &.srl-anchor {
49
+ border-top: 1px solid #{srl.colors-primary-1000()};
50
+ border-bottom: 1px solid #{srl.colors-primary-1000()};
51
+ }
52
+
53
+ &.srl-pdf-publication-title,
54
+ &.srl-pdf-chapter-title {
55
+ border-bottom: 1px solid #{srl.colors-primary-1000()};
56
+ }
57
+
58
+ .doc-editable.doc-no-placeholder:before {
59
+ display: none !important;
60
+ }
61
+ }
62
+
63
+ .srl-editor-component__text {
64
+ @extend %srl-regular-width;
65
+ display: flex;
66
+ flex-direction: column;
67
+
68
+ &:after {
69
+ order: -1;
70
+ display: block;
71
+ @include srl.typography-editor-label-text();
72
+
73
+ .srl-anchor & {
74
+ content: "Anchor:";
75
+ }
76
+
77
+ .srl-pdf-publication-title & {
78
+ content: "PDF publication title:"
79
+ }
80
+
81
+ .srl-pdf-chapter-title & {
82
+ content: "PDF chapter title:"
83
+ }
84
+ }
40
85
  }
@@ -13,6 +13,7 @@ body {
13
13
  */
14
14
  img {
15
15
  max-width: 100%;
16
+ width: 100%;
16
17
  height: auto;
17
18
  display: block;
18
19
  }
package/dev/tsconfig.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "path": "./tsconfig.node.json"
6
6
  },
7
7
  {
8
- "path": "./tsconfig.app.json"
8
+ "path": "./.srl/tsconfig.srl.json"
9
9
  },
10
10
  {
11
11
  "path": "./tsconfig.vitest.json"
@@ -1,7 +1,7 @@
1
1
  import { defineConfig } from 'vite'
2
2
  import vue from '@vitejs/plugin-vue'
3
3
  import VueDevTools from 'vite-plugin-vue-devtools'
4
- import viteSrlPlugin from './.srl/plugins/viteSrlPlugin.ts'
4
+ import viteSrlPlugin from '@simple-reporting/base/plugins/viteSrlPlugin.js'
5
5
  import { fileURLToPath, URL } from 'node:url'
6
6
 
7
7
  // https://vitejs.dev/config/
@@ -3,7 +3,7 @@
3
3
  "label": "Video",
4
4
  "properties": ["width-all", "pdf-spacer"],
5
5
  "directives": {
6
- "background": {
6
+ "video-thumbnail": {
7
7
  "imageRatios": ["16:9"],
8
8
  "allowOriginalRatio": false
9
9
  },
@@ -1,11 +1,8 @@
1
- <p class="srl-anchor" data-is-anchor="true">
2
- <span class="srl-anchor__editor-text" data-remove-from-pdf="complete">
3
- Anchor:
4
- </span>
5
- <span class="srl-anchor__text" doc-editable="anchor-text">
1
+ <p class="srl-anchor srl-editor-component" data-is-anchor="true">
2
+ <span class="srl-anchor__text srl-editor-component__text" doc-editable="anchor-text">
6
3
  Must start with a letter (A–Z or a–z); a number is not allowed. After the
7
4
  first letter, any combination of letters (a–z, A–Z), digits (0–9), hyphens
8
5
  (-), underscores (_), colons (:), and periods (.) is allowed. The ID must be
9
6
  unique and is case-sensitive.
10
7
  </span>
11
- </p>
8
+ </p>
@@ -2,18 +2,7 @@
2
2
  @use 'web';
3
3
  @use 'assets/scss/placeholders';
4
4
 
5
- .srl-anchor {
6
- border-top: 1px solid #{srl.colors-secondary-1000()};
7
- border-bottom: 1px solid #{srl.colors-secondary-1000()};
8
- @include srl.spacer-padding-block(200);
9
- @extend %srl-grid-base;
10
- }
11
-
12
- .srl-anchor__editor-text {
13
- @extend %srl-regular-width;
14
- }
15
-
16
5
  .srl-anchor__text {
17
6
  @extend %srl-regular-width;
18
7
  @include srl.typography-pdf-header()
19
- }
8
+ }
@@ -1,5 +1,5 @@
1
- <div class="srl-pdf-pagebreak" data-remove-from-web="complete">
2
- <span class="srl-pdf-pagebreak__editor-text" data-remove-from-pdf="complete">
1
+ <div class="srl-pdf-pagebreak srl-editor-component" data-remove-from-web="complete">
2
+ <span class="srl-pdf-pagebreak__editor-text srl-editor-component__text" data-remove-from-pdf="complete">
3
3
  PDF page break
4
4
  </span>
5
5
  </div>
@@ -3,18 +3,10 @@
3
3
  @use 'assets/scss/placeholders';
4
4
 
5
5
  .srl-pdf-pagebreak {
6
- border-top: 1px solid #{srl.colors-secondary-1000()};
7
- border-bottom: 1px solid #{srl.colors-secondary-1000()};
8
6
  text-align: center;
9
- @include srl.spacer-padding-block(200);
10
- @extend %srl-grid-base;
11
7
  }
12
8
 
13
9
  .srl-pdf-pagebreak__editor-text {
14
10
  @include srl.typography-editor-label-text();
15
11
  @extend %srl-regular-width;
16
- }
17
-
18
- .srl-pdf-pagebreak__text {
19
- @extend %srl-regular-width;
20
12
  }
@@ -1,11 +1,8 @@
1
1
  <p
2
- class="srl-pdf-publication-title"
2
+ class="srl-pdf-publication-title srl-editor-component"
3
3
  data-remove-from-web="complete"
4
4
  >
5
- <span class="srl-pdf-publication-title__editor-text" data-remove-from-pdf="complete">
6
- PDF publication title:
7
- </span>
8
- <span class="srl-pdf-publication-title__text" doc-editable="pdf-publication-titletext">
5
+ <span class="srl-pdf-publication-title__text srl-editor-component__text" doc-editable="pdf-publication-titletext">
9
6
  Publication title
10
7
  </span>
11
8
  </p>
@@ -2,17 +2,6 @@
2
2
  @use 'web';
3
3
  @use 'assets/scss/placeholders';
4
4
 
5
- .srl-pdf-publication-title {
6
- border-bottom: 1px solid #{srl.colors-primary-1000()};
7
- @include srl.spacer-padding-block(200);
8
- @extend %srl-grid-base;
9
- }
10
-
11
- .srl-pdf-publication-title__editor-text {
12
- @include srl.typography-editor-label-text();
13
- @extend %srl-regular-width;
14
- }
15
-
16
5
  .srl-pdf-publication-title__text {
17
6
  @extend %srl-regular-width;
18
7
  }
@@ -1,11 +1,8 @@
1
1
  <p
2
- class="srl-pdf-chapter-title"
2
+ class="srl-pdf-chapter-title srl-editor-component"
3
3
  data-remove-from-web="complete"
4
4
  >
5
- <span class="srl-pdf-chapter-title__editor-text" data-remove-from-pdf="complete">
6
- PDF chapter title:
7
- </span>
8
- <span class="srl-pdf-chapter-title__text" doc-editable="pdf-chapter-title-text">
5
+ <span class="srl-pdf-chapter-title__text srl-editor-component__text" doc-editable="pdf-chapter-title-text">
9
6
  Chapter title
10
7
  </span>
11
8
  </p>
@@ -8,11 +8,6 @@
8
8
  @extend %srl-grid-base;
9
9
  }
10
10
 
11
- .srl-pdf-chapter-title__editor-text {
12
- @include srl.typography-editor-label-text();
13
- @extend %srl-regular-width;
14
- }
15
-
16
11
  .srl-pdf-chapter-title__text {
17
12
  @extend %srl-regular-width;
18
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simple-reporting/base",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "Manage srl templates, build and publish",
5
5
  "bin": {
6
6
  "srl": "cli.js"
@@ -19,16 +19,16 @@
19
19
  "dependencies": {
20
20
  "@kne/color-palette": "^0.1.0",
21
21
  "archiver": "^7.0.1",
22
- "chalk": "^5.4.1",
22
+ "chalk": "^5.6.2",
23
23
  "colors": "^1.4.0",
24
24
  "commander": "^11.1.0",
25
25
  "enquirer": "^2.4.1",
26
26
  "fs": "^0.0.1-security",
27
- "fs-extra": "^11.2.0",
27
+ "fs-extra": "^11.3.2",
28
28
  "glob": "^10.4.5",
29
29
  "modern-css-reset": "^1.4.0",
30
30
  "node-html-parser": "^7.0.1",
31
- "vite": "^5.4.11",
31
+ "vite": "^6.3.6",
32
32
  "write-json": "^3.0.1"
33
33
  },
34
34
  "keywords": [
@@ -41,8 +41,8 @@
41
41
  "author": "Michael Dörer",
42
42
  "license": "ISC",
43
43
  "devDependencies": {
44
- "jest": "^30.0.2",
45
- "prettier": "^3.4.2",
46
- "typescript": "^5.7.2"
44
+ "jest": "^30.1.3",
45
+ "prettier": "^3.6.2",
46
+ "typescript": "^5.9.2"
47
47
  }
48
48
  }
@@ -0,0 +1,270 @@
1
+ import { fileURLToPath, URL } from 'node:url';
2
+ import { existsSync, readFileSync, writeFileSync, readdirSync, statSync } from 'node:fs';
3
+ import { join, relative } from 'node:path/posix';
4
+ import { execSync } from 'node:child_process';
5
+ import folders from '../scripts/folders.js';
6
+ import { beaver } from '../scripts/beaver.js';
7
+ import { packageName } from '../scripts/config.js';
8
+ import prepare from '../scripts/prepare.js';
9
+ import { updatePackageJson, updateLivingDocsJson, updateNsWowJson } from '../scripts/utils.js';
10
+ import {
11
+ map,
12
+ mapLdd,
13
+ mapJs,
14
+ mapScss,
15
+ } from '../scripts/build.js';
16
+ import chalk from 'chalk';
17
+
18
+
19
+ /**
20
+ * Output prompts message in a box
21
+ */
22
+ const msgBoxLength = 60;
23
+ function centerText(text) {
24
+ const padding = Math.max(0, (msgBoxLength - text.length) / 2);
25
+ return (
26
+ ' '.repeat(Math.floor(padding)) + text + ' '.repeat(Math.ceil(padding))
27
+ );
28
+ }
29
+ function printPromptsMessage(messages) {
30
+ console.log('');
31
+ console.log(chalk.bgWhiteBright(centerText('')));
32
+ messages.forEach(m => {
33
+ console.log(chalk.bgWhiteBright.black.bold(centerText(m)));
34
+ })
35
+ console.log(chalk.bgWhiteBright(centerText('')));
36
+ console.log('');
37
+ }
38
+
39
+
40
+ const data = {
41
+ version: null,
42
+ components:{}
43
+ };
44
+ const srlConfig = readConfigJson();
45
+
46
+ function readConfigJson() {
47
+ const configPath = join(folders.srlRoot, 'config.json');
48
+ if (existsSync(configPath)) {
49
+ const content = readFileSync(configPath, 'utf-8');
50
+ return JSON.parse(content);
51
+ }
52
+ return null;
53
+ }
54
+
55
+ function writeConfigJson(config) {
56
+ const configPath = join(folders.srlRoot, 'config.json');
57
+ writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
58
+ }
59
+
60
+ function isVersionGreater(v1, v2) {
61
+ const a = v1.split('.').map(Number);
62
+ const b = v2.split('.').map(Number);
63
+ if (a[0] > b[0]) return false;
64
+ if (a[1] > b[1]) return false;
65
+ return a[2] > b[2];
66
+ }
67
+
68
+ function getPackageVersion() {
69
+ try {
70
+ const pkgPath = join(folders.packagePath, 'package.json');
71
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
72
+ return pkg.version || null;
73
+ } catch (e) {
74
+ return null;
75
+ }
76
+ }
77
+
78
+ function checkForUpdates() {
79
+ try {
80
+ if (!data.version) return;
81
+
82
+ const tag = `v${data.version.split('.')[0]}-lts`;
83
+
84
+ const latest = execSync(`npm view ${packageName}@${tag} version`)
85
+ .toString()
86
+ .trim();
87
+
88
+ if (isVersionGreater(latest, data.version)) {
89
+ printPromptsMessage([
90
+ 'Attention !!!',
91
+ `New ${packageName} version available.`,
92
+ `Update: ${data.version} => ${latest}`,
93
+ `Run: npm update -S ${packageName}`,
94
+ ])
95
+ }
96
+ } catch (e) {}
97
+ }
98
+
99
+ function findVueFilesInSrl() {
100
+ const componentsPath = join(folders.srlSrc, 'components');
101
+ const baseDir = join(componentsPath, 'Srl');
102
+ const result = {};
103
+
104
+ function search(dir) {
105
+ for (const entry of readdirSync(dir)) {
106
+ const fullPath = join(dir, entry);
107
+ if (statSync(fullPath).isDirectory()) {
108
+ search(fullPath);
109
+ } else if (entry.endsWith('.vue')) {
110
+ const path = relative(componentsPath, fullPath);
111
+ const name = path.slice(0, -4)
112
+ .replaceAll('/', '')
113
+ .replaceAll('\\', '');
114
+
115
+ result[name] = `@/components/${path}`;
116
+ }
117
+ }
118
+ }
119
+
120
+ if (existsSync(baseDir) && statSync(baseDir).isDirectory()) {
121
+ search(baseDir);
122
+ }
123
+
124
+ return result;
125
+ }
126
+
127
+ async function startActions() {
128
+ data.version = getPackageVersion();
129
+ checkForUpdates();
130
+ data.components = findVueFilesInSrl();
131
+ if (!srlConfig || JSON.stringify(srlConfig) !== JSON.stringify(data)) {
132
+ writeConfigJson(data);
133
+ }
134
+ if (srlConfig && srlConfig.version !== data.version) {
135
+ await prepare();
136
+ printPromptsMessage([
137
+ 'Srl version changed',
138
+ 'Trigger srl prepare',
139
+ ]);
140
+ }
141
+
142
+ await beaver(0);
143
+ await map();
144
+ await mapJs();
145
+ }
146
+
147
+
148
+ /**
149
+ * Timer to trigger live reload actions
150
+ */
151
+ let timer = null;
152
+ function triggerAction(callback) {
153
+ !timer || clearTimeout(timer);
154
+ timer = setTimeout(async () => {
155
+ await callback();
156
+ }, 200);
157
+ }
158
+
159
+ export default function viteSrlPlugin() {
160
+ return {
161
+ name: 'vite-srl-plugin',
162
+ config(config) {
163
+
164
+ startActions();
165
+
166
+ config.base = './';
167
+
168
+ config.resolve = config.resolve || {};
169
+ config.resolve.alias = config.resolve.alias || {};
170
+ config.resolve.alias['~'] = folders.root;
171
+ config.resolve.alias['@'] = folders.srlSrc;
172
+ config.resolve.alias['#components'] = folders.srlComponents;
173
+ config.resolve.alias['#composables'] = folders.srlComposables;
174
+ config.resolve.alias['#plugins'] = folders.srlPlugins;
175
+ config.resolve.alias['#types'] = folders.srlTypes;
176
+ config.resolve.alias['#utils'] = folders.srlUtils;
177
+ config.resolve.alias['#imports'] = folders.srlImports;
178
+ config.resolve.alias['#ld'] = folders.ld;
179
+ config.resolve.alias['assets'] = folders.srlAssets;
180
+ config.resolve.alias['srl'] = folders.srlSystem;
181
+ config.resolve.alias['vue'] = 'vue/dist/vue.esm-bundler.js';
182
+ },
183
+ async configureServer(server) {
184
+ const fontPath = join(folders.srlAssets, 'fonts');
185
+
186
+ server.watcher.on('change', async (path) => {
187
+ if (path.endsWith('/package.json')) {
188
+ await updatePackageJson();
189
+ }
190
+ if (path.endsWith('/livingdocs.config.json')) {
191
+ await updateLivingDocsJson();
192
+ }
193
+ if (path.endsWith('/srl.config.json')) {
194
+ await updateNsWowJson();
195
+ triggerAction(beaver);
196
+ }
197
+ });
198
+
199
+ server.watcher.on('add', (path) => {
200
+ if (
201
+ path.endsWith('/general.scss') ||
202
+ path.endsWith('/app.scss') ||
203
+ path.endsWith('/ldd.scss') ||
204
+ path.endsWith('/editor.scss') ||
205
+ path.endsWith('/pdf.scss') ||
206
+ path.endsWith('/word.scss') ||
207
+ path.endsWith('/xbrl.scss') ||
208
+ (
209
+ path.startsWith(fontPath) &&
210
+ path.endsWith('.scss')
211
+ )
212
+ ) {
213
+ triggerAction(mapScss);
214
+ }
215
+
216
+ if (
217
+ path.includes('livingdocs') &&
218
+ (path.endsWith('/app.js') || path.endsWith('/app.ts'))
219
+ ) {
220
+ triggerAction(mapJs);
221
+ }
222
+
223
+ if (
224
+ path.includes('livingdocs') &&
225
+ (path.endsWith('/properties.json') ||
226
+ path.endsWith('/properties.ts') ||
227
+ path.endsWith('/properties.js') ||
228
+ path.endsWith('.vue'))
229
+ ) {
230
+ triggerAction(mapLdd);
231
+ }
232
+ });
233
+
234
+ server.watcher.on('unlink', (path) => {
235
+ if (
236
+ path.endsWith('/general.scss') ||
237
+ path.endsWith('/app.scss') ||
238
+ path.endsWith('/ldd.scss') ||
239
+ path.endsWith('/editor.scss') ||
240
+ path.endsWith('/pdf.scss') ||
241
+ path.endsWith('/word.scss') ||
242
+ path.endsWith('/xbrl.scss')||
243
+ (
244
+ path.startsWith(fontPath) &&
245
+ path.endsWith('.scss')
246
+ )
247
+ ) {
248
+ triggerAction(mapScss);
249
+ }
250
+
251
+ if (
252
+ path.includes('livingdocs') &&
253
+ (path.endsWith('/app.js') || path.endsWith('/app.ts'))
254
+ ) {
255
+ triggerAction(mapJs);
256
+ }
257
+
258
+ if (
259
+ path.includes('livingdocs') &&
260
+ (path.endsWith('/properties.json') ||
261
+ path.endsWith('/properties.ts') ||
262
+ path.endsWith('/properties.js') ||
263
+ path.endsWith('.vue'))
264
+ ) {
265
+ triggerAction(mapLdd);
266
+ }
267
+ });
268
+ },
269
+ };
270
+ }
@@ -1,2 +1,2 @@
1
1
  export default prepare;
2
- declare function prepare(): void;
2
+ declare function prepare(): Promise<void>;
@@ -1,66 +1,11 @@
1
1
  import folders from './folders.js';
2
2
  import fs from 'fs';
3
- import path from 'path/posix';
4
3
 
5
- const tsConfigIncludes = [
6
- '.srl/**/*',
7
- '.srl/**/*.d.ts',
8
- '.srl/**/*.vue',
9
- 'livingdocs/**/*',
10
- 'livingdocs/**/*.vue',
11
- ];
12
-
13
- const tsConfigPaths = {
14
- '@/*': ['./src/*'],
15
- '~/*': ['./*'],
16
- '#srl': ['./.srl'],
17
- '#srl/*': ['./.srl/*'],
18
- '#components': ['./.srl/components'],
19
- '#components/*': ['./.srl/components/*'],
20
- '#composables': ['./.srl/composables'],
21
- '#composables/*': ['./.srl/composables/*'],
22
- '#utils': ['./.srl/utils'],
23
- '#utils/*': ['./.srl/utils/*'],
24
- '#plugins': ['./.srl/plugins'],
25
- '#plugins/*': ['./.srl/plugins/*'],
26
- '#types': ['./.srl/types'],
27
- '#types/*': ['./.srl/types/*'],
28
- '#imports': ['./.srl/imports'],
29
- '#imports/*': ['./.srl/imports/*'],
30
- '#ld': ['./livingdocs'],
31
- '#ld/*': ['./livingdocs/*'],
32
- assets: ['./src/assets'],
33
- 'assets/*': ['./src/assets/*'],
34
- srl: ['./.srl/srl'],
35
- 'srl/*': ['./.srl/srl/*'],
36
- };
37
-
38
- function prepare() {
4
+ async function prepare() {
39
5
  if (fs.existsSync(folders.srlRoot)) {
40
- fs.rmSync(folders.srlRoot, { recursive: true, force: true });
41
- }
42
- fs.cpSync(folders.packageSrl, folders.srlRoot, { recursive: true });
43
-
44
- const tsConfigPath = path.join(folders.root, 'tsconfig.app.json');
45
- if (fs.existsSync(tsConfigPath)) {
46
- const tsConfig = JSON.parse(fs.readFileSync(tsConfigPath, 'utf-8'));
47
-
48
- const mergedIncludes = [
49
- ...(tsConfig.include || []),
50
- ...tsConfigIncludes.filter((i) => !(tsConfig.include || []).includes(i)),
51
- ];
52
- tsConfig.include = tsConfig.include || [];
53
- tsConfig.include = mergedIncludes;
54
-
55
- const mergedPaths = {
56
- ...(tsConfig.compilerOptions?.paths || {}),
57
- ...tsConfigPaths,
58
- };
59
- tsConfig.compilerOptions = tsConfig.compilerOptions || {};
60
- tsConfig.compilerOptions.paths = mergedPaths;
61
-
62
- fs.writeFileSync(tsConfigPath, JSON.stringify(tsConfig, null, 2));
6
+ await fs.rmSync(folders.srlRoot, { recursive: true, force: true });
63
7
  }
8
+ await fs.cpSync(folders.packageSrl, folders.srlRoot, { recursive: true });
64
9
  }
65
10
 
66
11
  export default prepare;
@@ -0,0 +1,89 @@
1
+ {
2
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
3
+ "include": [
4
+ "../env.d.ts",
5
+ "../src/**/*",
6
+ "../src/**/*.vue",
7
+ "./**/*",
8
+ "./**/*.vue",
9
+ "../livingdocs/**/*",
10
+ "../livingdocs/**/*.vue",
11
+ "./**/*.d.ts"
12
+ ],
13
+ "exclude": [
14
+ "../src/**/__tests__/*"
15
+ ],
16
+ "compilerOptions": {
17
+ "composite": true,
18
+ "tsBuildInfoFile": "../node_modules/.tmp/tsconfig.app.tsbuildinfo",
19
+ "baseUrl": ".",
20
+ "paths": {
21
+ "@/*": [
22
+ "../src/*"
23
+ ],
24
+ "~/*": [
25
+ "../*"
26
+ ],
27
+ "#srl": [
28
+ "./"
29
+ ],
30
+ "#srl/*": [
31
+ "./*"
32
+ ],
33
+ "#components": [
34
+ "./components"
35
+ ],
36
+ "#components/*": [
37
+ "./components/*"
38
+ ],
39
+ "#composables": [
40
+ "./composables"
41
+ ],
42
+ "#composables/*": [
43
+ "./composables/*"
44
+ ],
45
+ "#utils": [
46
+ "./utils"
47
+ ],
48
+ "#utils/*": [
49
+ "./utils/*"
50
+ ],
51
+ "#plugins": [
52
+ "./plugins"
53
+ ],
54
+ "#plugins/*": [
55
+ "./plugins/*"
56
+ ],
57
+ "#types": [
58
+ "./types"
59
+ ],
60
+ "#types/*": [
61
+ "./types/*"
62
+ ],
63
+ "#imports": [
64
+ "./imports"
65
+ ],
66
+ "#imports/*": [
67
+ "./imports/*"
68
+ ],
69
+ "#ld": [
70
+ "../livingdocs"
71
+ ],
72
+ "#ld/*": [
73
+ "../livingdocs/*"
74
+ ],
75
+ "assets": [
76
+ "../src/assets"
77
+ ],
78
+ "assets/*": [
79
+ "../src/assets/*"
80
+ ],
81
+ "srl": [
82
+ "./srl"
83
+ ],
84
+ "srl/*": [
85
+ "./srl/*"
86
+ ]
87
+ }
88
+ }
89
+ }
@@ -10,6 +10,9 @@ interface _GlobalComponents {
10
10
  SrlArticleRoot: (typeof import('../components/Srl/Article/Root.vue'))['default'];
11
11
  SrlMenu: (typeof import('../components/Srl/Menu/List.vue'))['default'];
12
12
  SrlPageDialog: (typeof import('../components/Srl/Page/Dialog.vue'))['default'];
13
+ SrlNoteAccordion: (typeof import('../components/Srl/Note/Accordion.vue'))['default'];
14
+ SrlNoteAccordionToggle: (typeof import('../components/Srl/Note/Accordion/Toggle.vue'))['default'];
15
+ SrlNoteAccordionContent: (typeof import('../components/Srl/Note/Accordion/Content.vue'))['default'];
13
16
  }
14
17
 
15
18
  declare module '@vue/runtime-core' {
@@ -1,224 +0,0 @@
1
- import { type Plugin } from 'vite';
2
- import { fileURLToPath, URL } from 'node:url';
3
- import { readFileSync } from 'node:fs';
4
- import { join } from 'node:path/posix';
5
- import { execSync } from 'node:child_process';
6
- import folders from '@simple-reporting/base/scripts/folders.js';
7
- import { beaver } from '@simple-reporting/base/scripts/beaver.js';
8
- import { packageName } from '@simple-reporting/base/scripts/config';
9
- import { updatePackageJson, updateLivingDocsJson, updateNsWowJson } from '@simple-reporting/base/scripts/utils';
10
- import {
11
- map,
12
- mapLdd,
13
- mapJs,
14
- mapScss,
15
- } from '@simple-reporting/base/scripts/build.js';
16
- import chalk from 'chalk';
17
-
18
- const msgBoxLength = 60;
19
-
20
- function centerText(text: string): string {
21
- const padding = Math.max(0, (msgBoxLength - text.length) / 2);
22
- return (
23
- ' '.repeat(Math.floor(padding)) + text + ' '.repeat(Math.ceil(padding))
24
- );
25
- }
26
-
27
- function isVersionGreater(v1, v2) {
28
- const a = v1.split('.').map(Number);
29
- const b = v2.split('.').map(Number);
30
- for (let i = 0; i < 3; i++) {
31
- if (a[i] > b[i]) return true;
32
- if (a[i] < b[i]) return false;
33
- }
34
- return false; // gleich
35
- }
36
-
37
- function checkSrlVersion() {
38
- try {
39
- const pkgPath = join(folders.packagePath, 'package.json');
40
- const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
41
- const current = pkg.version;
42
- if (!current) return;
43
-
44
- const tag = `v${current.split('.')[0]}-lts`;
45
-
46
- const latest = execSync(`npm view ${packageName}@${tag} version`)
47
- .toString()
48
- .trim();
49
-
50
- if (isVersionGreater(latest, current)) {
51
- console.log('');
52
- console.log(chalk.bgWhiteBright(centerText('')));
53
- console.log(
54
- chalk.bgWhiteBright.redBright.bold(centerText('Attention !!!')),
55
- );
56
- console.log(
57
- chalk.bgWhiteBright.black.bold(
58
- centerText(`New ${packageName} version available.`),
59
- ),
60
- );
61
- console.log(
62
- chalk.bgWhiteBright.black.bold(
63
- centerText(`Update: ${current} => ${latest}`),
64
- ),
65
- );
66
- console.log(
67
- chalk.bgWhiteBright.black.bold(
68
- centerText(`Run: npm update -S ${packageName}`),
69
- ),
70
- );
71
- console.log(chalk.bgWhiteBright(centerText('')));
72
- console.log('');
73
- }
74
- } catch (e) {}
75
- }
76
-
77
- let timer: NodeJS.Timeout | null = null;
78
-
79
- function triggerAction(callback) {
80
- !timer || clearTimeout(timer);
81
- timer = setTimeout(async () => {
82
- await callback();
83
- }, 200);
84
- }
85
-
86
- async function startActions() {
87
- checkSrlVersion();
88
- await beaver(0);
89
- await map();
90
- await mapJs();
91
- }
92
-
93
- export default function viteSrlPlugin(): Plugin {
94
- return {
95
- name: 'vite-srl-plugin',
96
- config(config) {
97
- startActions();
98
-
99
- config.base = './';
100
-
101
- config.resolve = config.resolve || {};
102
- config.resolve.alias['~'] = fileURLToPath(
103
- new URL('../..', import.meta.url),
104
- );
105
- config.resolve.alias['@'] = fileURLToPath(
106
- new URL('../../src', import.meta.url),
107
- );
108
- config.resolve.alias['#components'] = fileURLToPath(
109
- new URL('../components', import.meta.url),
110
- );
111
- config.resolve.alias['#composables'] = fileURLToPath(
112
- new URL('../composables', import.meta.url),
113
- );
114
- config.resolve.alias['#plugins'] = fileURLToPath(
115
- new URL('../plugins', import.meta.url),
116
- );
117
- config.resolve.alias['#types'] = fileURLToPath(
118
- new URL('../types', import.meta.url),
119
- );
120
- config.resolve.alias['#utils'] = fileURLToPath(
121
- new URL('../utils', import.meta.url),
122
- );
123
- config.resolve.alias['#imports'] = fileURLToPath(
124
- new URL('../imports', import.meta.url),
125
- );
126
- config.resolve.alias['#ld'] = fileURLToPath(
127
- new URL('../../livingdocs', import.meta.url),
128
- );
129
- config.resolve.alias['assets'] = fileURLToPath(
130
- new URL('../../src/assets', import.meta.url),
131
- );
132
- config.resolve.alias['srl'] = fileURLToPath(
133
- new URL('../srl', import.meta.url),
134
- );
135
- config.resolve.alias['vue'] = 'vue/dist/vue.esm-bundler.js';
136
- },
137
- configureServer(server) {
138
- const fontPath = join(folders.srlAssets, 'fonts');
139
-
140
- server.watcher.on('change', async (path) => {
141
- if (path.endsWith('/package.json')) {
142
- await updatePackageJson();
143
- }
144
- if (path.endsWith('/livingdocs.config.json')) {
145
- await updateLivingDocsJson();
146
- }
147
- if (path.endsWith('/srl.config.json')) {
148
- await updateNsWowJson();
149
- triggerAction(beaver);
150
- }
151
- });
152
-
153
- server.watcher.on('add', (path) => {
154
- if (
155
- path.endsWith('/general.scss') ||
156
- path.endsWith('/app.scss') ||
157
- path.endsWith('/ldd.scss') ||
158
- path.endsWith('/editor.scss') ||
159
- path.endsWith('/pdf.scss') ||
160
- path.endsWith('/word.scss') ||
161
- path.endsWith('/xbrl.scss') ||
162
- (
163
- path.startsWith(fontPath) &&
164
- path.endsWith('.scss')
165
- )
166
- ) {
167
- triggerAction(mapScss);
168
- }
169
-
170
- if (
171
- path.includes('livingdocs') &&
172
- (path.endsWith('/app.js') || path.endsWith('/app.ts'))
173
- ) {
174
- triggerAction(mapJs);
175
- }
176
-
177
- if (
178
- path.includes('livingdocs') &&
179
- (path.endsWith('/properties.json') ||
180
- path.endsWith('/properties.ts') ||
181
- path.endsWith('/properties.js') ||
182
- path.endsWith('.vue'))
183
- ) {
184
- triggerAction(mapLdd);
185
- }
186
- });
187
-
188
- server.watcher.on('unlink', (path) => {
189
- if (
190
- path.endsWith('/general.scss') ||
191
- path.endsWith('/app.scss') ||
192
- path.endsWith('/ldd.scss') ||
193
- path.endsWith('/editor.scss') ||
194
- path.endsWith('/pdf.scss') ||
195
- path.endsWith('/word.scss') ||
196
- path.endsWith('/xbrl.scss')||
197
- (
198
- path.startsWith(fontPath) &&
199
- path.endsWith('.scss')
200
- )
201
- ) {
202
- triggerAction(mapScss);
203
- }
204
-
205
- if (
206
- path.includes('livingdocs') &&
207
- (path.endsWith('/app.js') || path.endsWith('/app.ts'))
208
- ) {
209
- triggerAction(mapJs);
210
- }
211
-
212
- if (
213
- path.includes('livingdocs') &&
214
- (path.endsWith('/properties.json') ||
215
- path.endsWith('/properties.ts') ||
216
- path.endsWith('/properties.js') ||
217
- path.endsWith('.vue'))
218
- ) {
219
- triggerAction(mapLdd);
220
- }
221
- });
222
- },
223
- };
224
- }