legal-markdown-js 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +168 -0
- package/dist/browser.d.ts +87 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +157 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli/index.d.ts +34 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +221 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/service.d.ts +128 -0
- package/dist/cli/service.d.ts.map +1 -0
- package/dist/cli/service.js +284 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/constants/index.d.ts +229 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +232 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/exporters/metadata-exporter.d.ts +104 -0
- package/dist/core/exporters/metadata-exporter.d.ts.map +1 -0
- package/dist/core/exporters/metadata-exporter.js +201 -0
- package/dist/core/exporters/metadata-exporter.js.map +1 -0
- package/dist/core/index.d.ts +40 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +56 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/parsers/yaml-parser.d.ts +149 -0
- package/dist/core/parsers/yaml-parser.d.ts.map +1 -0
- package/dist/core/parsers/yaml-parser.js +321 -0
- package/dist/core/parsers/yaml-parser.js.map +1 -0
- package/dist/core/processors/clause-processor.d.ts +74 -0
- package/dist/core/processors/clause-processor.d.ts.map +1 -0
- package/dist/core/processors/clause-processor.js +213 -0
- package/dist/core/processors/clause-processor.js.map +1 -0
- package/dist/core/processors/date-processor.d.ts +90 -0
- package/dist/core/processors/date-processor.d.ts.map +1 -0
- package/dist/core/processors/date-processor.js +336 -0
- package/dist/core/processors/date-processor.js.map +1 -0
- package/dist/core/processors/header-processor.d.ts +104 -0
- package/dist/core/processors/header-processor.d.ts.map +1 -0
- package/dist/core/processors/header-processor.js +585 -0
- package/dist/core/processors/header-processor.js.map +1 -0
- package/dist/core/processors/import-processor.d.ts +116 -0
- package/dist/core/processors/import-processor.d.ts.map +1 -0
- package/dist/core/processors/import-processor.js +236 -0
- package/dist/core/processors/import-processor.js.map +1 -0
- package/dist/core/processors/mixin-processor.d.ts +93 -0
- package/dist/core/processors/mixin-processor.d.ts.map +1 -0
- package/dist/core/processors/mixin-processor.js +378 -0
- package/dist/core/processors/mixin-processor.js.map +1 -0
- package/dist/core/processors/reference-processor.d.ts +115 -0
- package/dist/core/processors/reference-processor.d.ts.map +1 -0
- package/dist/core/processors/reference-processor.js +273 -0
- package/dist/core/processors/reference-processor.js.map +1 -0
- package/dist/errors/index.d.ts +234 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +267 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/extensions/batch-processor.d.ts +197 -0
- package/dist/extensions/batch-processor.d.ts.map +1 -0
- package/dist/extensions/batch-processor.js +392 -0
- package/dist/extensions/batch-processor.js.map +1 -0
- package/dist/extensions/formatters/index.d.ts +99 -0
- package/dist/extensions/formatters/index.d.ts.map +1 -0
- package/dist/extensions/formatters/index.js +128 -0
- package/dist/extensions/formatters/index.js.map +1 -0
- package/dist/extensions/index.d.ts +53 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +71 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/latex-parser.d.ts +111 -0
- package/dist/extensions/latex-parser.d.ts.map +1 -0
- package/dist/extensions/latex-parser.js +563 -0
- package/dist/extensions/latex-parser.js.map +1 -0
- package/dist/extensions/rst-parser.d.ts +112 -0
- package/dist/extensions/rst-parser.d.ts.map +1 -0
- package/dist/extensions/rst-parser.js +268 -0
- package/dist/extensions/rst-parser.js.map +1 -0
- package/dist/extensions/template-loops.d.ts +61 -0
- package/dist/extensions/template-loops.d.ts.map +1 -0
- package/dist/extensions/template-loops.js +418 -0
- package/dist/extensions/template-loops.js.map +1 -0
- package/dist/extensions/utilities/index.d.ts +114 -0
- package/dist/extensions/utilities/index.d.ts.map +1 -0
- package/dist/extensions/utilities/index.js +137 -0
- package/dist/extensions/utilities/index.js.map +1 -0
- package/dist/extensions/validators/index.d.ts +65 -0
- package/dist/extensions/validators/index.d.ts.map +1 -0
- package/dist/extensions/validators/index.js +88 -0
- package/dist/extensions/validators/index.js.map +1 -0
- package/dist/generators/html-generator.d.ts +184 -0
- package/dist/generators/html-generator.d.ts.map +1 -0
- package/dist/generators/html-generator.js +361 -0
- package/dist/generators/html-generator.js.map +1 -0
- package/dist/generators/pdf-generator.d.ts +165 -0
- package/dist/generators/pdf-generator.d.ts.map +1 -0
- package/dist/generators/pdf-generator.js +275 -0
- package/dist/generators/pdf-generator.js.map +1 -0
- package/dist/helpers/date-helpers.d.ts +216 -0
- package/dist/helpers/date-helpers.d.ts.map +1 -0
- package/dist/helpers/date-helpers.js +402 -0
- package/dist/helpers/date-helpers.js.map +1 -0
- package/dist/helpers/index.d.ts +87 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +149 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/number-helpers.d.ts +269 -0
- package/dist/helpers/number-helpers.d.ts.map +1 -0
- package/dist/helpers/number-helpers.js +406 -0
- package/dist/helpers/number-helpers.js.map +1 -0
- package/dist/helpers/string-helpers.d.ts +391 -0
- package/dist/helpers/string-helpers.d.ts.map +1 -0
- package/dist/helpers/string-helpers.js +549 -0
- package/dist/helpers/string-helpers.js.map +1 -0
- package/dist/index.d.ts +229 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +384 -0
- package/dist/index.js.map +1 -0
- package/dist/legal-markdown.umd.min.js +2 -0
- package/dist/legal-markdown.umd.min.js.LICENSE.txt +14 -0
- package/dist/legal-markdown.umd.min.js.map +1 -0
- package/dist/lib/index.d.ts +150 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +265 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/parsers/content-detector.d.ts +131 -0
- package/dist/parsers/content-detector.d.ts.map +1 -0
- package/dist/parsers/content-detector.js +220 -0
- package/dist/parsers/content-detector.js.map +1 -0
- package/dist/parsers/fallback-parsers.d.ts +14 -0
- package/dist/parsers/fallback-parsers.d.ts.map +1 -0
- package/dist/parsers/fallback-parsers.js +188 -0
- package/dist/parsers/fallback-parsers.js.map +1 -0
- package/dist/parsers/implementations/pandoc-native.d.ts +13 -0
- package/dist/parsers/implementations/pandoc-native.d.ts.map +1 -0
- package/dist/parsers/implementations/pandoc-native.js +63 -0
- package/dist/parsers/implementations/pandoc-native.js.map +1 -0
- package/dist/parsers/implementations/pandoc-wasm.d.ts +14 -0
- package/dist/parsers/implementations/pandoc-wasm.d.ts.map +1 -0
- package/dist/parsers/implementations/pandoc-wasm.js +64 -0
- package/dist/parsers/implementations/pandoc-wasm.js.map +1 -0
- package/dist/parsers/pandoc-factory.d.ts +97 -0
- package/dist/parsers/pandoc-factory.d.ts.map +1 -0
- package/dist/parsers/pandoc-factory.js +146 -0
- package/dist/parsers/pandoc-factory.js.map +1 -0
- package/dist/parsers/pandoc-loader.d.ts +24 -0
- package/dist/parsers/pandoc-loader.d.ts.map +1 -0
- package/dist/parsers/pandoc-loader.js +124 -0
- package/dist/parsers/pandoc-loader.js.map +1 -0
- package/dist/parsers/pandoc-parser.d.ts +27 -0
- package/dist/parsers/pandoc-parser.d.ts.map +1 -0
- package/dist/parsers/pandoc-parser.js +3 -0
- package/dist/parsers/pandoc-parser.js.map +1 -0
- package/dist/styles/default.css +125 -0
- package/dist/styles/headers.css +146 -0
- package/dist/styles/highlight.css +171 -0
- package/dist/tracking/field-tracker.d.ts +206 -0
- package/dist/tracking/field-tracker.d.ts.map +1 -0
- package/dist/tracking/field-tracker.js +247 -0
- package/dist/tracking/field-tracker.js.map +1 -0
- package/dist/types.d.ts +186 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +33 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/logger.d.ts +107 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +122 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/web/bundle-standalone.js +28 -0
- package/dist/web/bundle.js +17 -0
- package/dist/web/index.html +1465 -0
- package/dist/web/legal-markdown.umd.min.js +2 -0
- package/dist/web/standalone.html +390 -0
- package/dist/web/styles.css +874 -0
- package/package.json +118 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/* Legal Header Styles - Header Field Tracking Support */
|
|
2
|
+
|
|
3
|
+
/* Base legal header styling */
|
|
4
|
+
.legal-header {
|
|
5
|
+
display: block;
|
|
6
|
+
margin: 1em 0 0.5em 0;
|
|
7
|
+
font-weight: 600;
|
|
8
|
+
line-height: 1.3;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* Level-specific styling */
|
|
12
|
+
.legal-header-level-1,
|
|
13
|
+
.legal-article {
|
|
14
|
+
font-size: 1.6em;
|
|
15
|
+
font-weight: bold;
|
|
16
|
+
color: #1a1a1a;
|
|
17
|
+
margin: 2em 0 1em 0;
|
|
18
|
+
border-bottom: 3px solid #333;
|
|
19
|
+
padding-bottom: 0.2em;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.legal-header-level-2,
|
|
23
|
+
.legal-section {
|
|
24
|
+
font-size: 1.3em;
|
|
25
|
+
font-weight: 600;
|
|
26
|
+
color: #333;
|
|
27
|
+
margin: 1.5em 0 0.8em 0;
|
|
28
|
+
border-bottom: 1px solid #666;
|
|
29
|
+
padding-bottom: 0.1em;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.legal-header-level-3,
|
|
33
|
+
.legal-subsection {
|
|
34
|
+
font-size: 1.1em;
|
|
35
|
+
font-weight: 500;
|
|
36
|
+
color: #444;
|
|
37
|
+
margin: 1em 0 0.5em 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.legal-header-level-4,
|
|
41
|
+
.legal-sub-subsection {
|
|
42
|
+
font-size: 1.05em;
|
|
43
|
+
font-weight: 500;
|
|
44
|
+
color: #555;
|
|
45
|
+
margin: 0.8em 0 0.4em 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.legal-header-level-5,
|
|
49
|
+
.legal-paragraph {
|
|
50
|
+
font-size: 1em;
|
|
51
|
+
font-weight: 500;
|
|
52
|
+
color: #666;
|
|
53
|
+
margin: 0.6em 0 0.3em 0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Data attribute based styling for more specificity */
|
|
57
|
+
.legal-header[data-level='1'] {
|
|
58
|
+
/* Additional Article-level styling */
|
|
59
|
+
text-transform: uppercase;
|
|
60
|
+
letter-spacing: 0.5px;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.legal-header[data-level='2'] {
|
|
64
|
+
/* Additional Section-level styling */
|
|
65
|
+
font-variant: small-caps;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.legal-header[data-level='3'] {
|
|
69
|
+
/* Additional Subsection-level styling */
|
|
70
|
+
font-style: italic;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Hover effects for interactive documents */
|
|
74
|
+
.legal-header:hover {
|
|
75
|
+
background-color: rgba(0, 120, 215, 0.1);
|
|
76
|
+
cursor: pointer;
|
|
77
|
+
border-radius: 2px;
|
|
78
|
+
padding: 2px 4px;
|
|
79
|
+
margin: -2px -4px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Print optimizations */
|
|
83
|
+
@media print {
|
|
84
|
+
.legal-header {
|
|
85
|
+
page-break-after: avoid;
|
|
86
|
+
page-break-inside: avoid;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.legal-header:hover {
|
|
90
|
+
background-color: transparent;
|
|
91
|
+
padding: 0;
|
|
92
|
+
margin: 1em 0 0.5em 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.legal-header-level-1,
|
|
96
|
+
.legal-article {
|
|
97
|
+
page-break-before: always;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.legal-header-level-1:first-child {
|
|
101
|
+
page-break-before: avoid;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Dark mode support */
|
|
106
|
+
@media (prefers-color-scheme: dark) {
|
|
107
|
+
.legal-header-level-1,
|
|
108
|
+
.legal-article {
|
|
109
|
+
color: #e6e6e6;
|
|
110
|
+
border-bottom-color: #ccc;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.legal-header-level-2,
|
|
114
|
+
.legal-section {
|
|
115
|
+
color: #ddd;
|
|
116
|
+
border-bottom-color: #999;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.legal-header-level-3,
|
|
120
|
+
.legal-subsection {
|
|
121
|
+
color: #ccc;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.legal-header-level-4,
|
|
125
|
+
.legal-sub-subsection {
|
|
126
|
+
color: #bbb;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.legal-header-level-5,
|
|
130
|
+
.legal-paragraph {
|
|
131
|
+
color: #aaa;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* Responsive adjustments */
|
|
136
|
+
@media (max-width: 768px) {
|
|
137
|
+
.legal-header-level-1,
|
|
138
|
+
.legal-article {
|
|
139
|
+
font-size: 1.4em;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.legal-header-level-2,
|
|
143
|
+
.legal-section {
|
|
144
|
+
font-size: 1.2em;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Highlight Styles for Legal Documents
|
|
3
|
+
*
|
|
4
|
+
* Provides visual indicators for:
|
|
5
|
+
* - Imported values (blue): Fields filled from data
|
|
6
|
+
* - Missing values (red): Required fields without values
|
|
7
|
+
* - Logic fields (yellow): Fields with conditional logic or mixins
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* Imported values - Successfully filled from data */
|
|
11
|
+
.imported-value {
|
|
12
|
+
border: 1px solid #0066cc;
|
|
13
|
+
border-radius: 2px;
|
|
14
|
+
padding: 1px 3px;
|
|
15
|
+
background-color: #e6f3ff;
|
|
16
|
+
color: #004085;
|
|
17
|
+
display: inline;
|
|
18
|
+
vertical-align: baseline;
|
|
19
|
+
white-space: normal;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Nested elements in imported values */
|
|
23
|
+
.imported-value a {
|
|
24
|
+
display: inline;
|
|
25
|
+
white-space: normal;
|
|
26
|
+
line-height: inherit;
|
|
27
|
+
vertical-align: baseline;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Print styles for imported values */
|
|
31
|
+
@media print {
|
|
32
|
+
.imported-value {
|
|
33
|
+
border-color: #0066cc;
|
|
34
|
+
background-color: #e6f3ff;
|
|
35
|
+
color: #004085;
|
|
36
|
+
-webkit-print-color-adjust: exact;
|
|
37
|
+
print-color-adjust: exact;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* Missing values - Required fields without data */
|
|
42
|
+
.missing-value {
|
|
43
|
+
border: 1px solid #dc3545;
|
|
44
|
+
border-radius: 2px;
|
|
45
|
+
padding: 1px 3px;
|
|
46
|
+
background-color: #fff5f5;
|
|
47
|
+
color: #dc3545;
|
|
48
|
+
display: inline;
|
|
49
|
+
vertical-align: baseline;
|
|
50
|
+
white-space: normal;
|
|
51
|
+
font-weight: 500;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Nested elements in missing values */
|
|
55
|
+
.missing-value a {
|
|
56
|
+
display: inline;
|
|
57
|
+
white-space: normal;
|
|
58
|
+
line-height: inherit;
|
|
59
|
+
vertical-align: baseline;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* Print styles for missing values */
|
|
63
|
+
@media print {
|
|
64
|
+
.missing-value {
|
|
65
|
+
border-color: #dc3545;
|
|
66
|
+
background-color: #fff5f5;
|
|
67
|
+
color: #dc3545;
|
|
68
|
+
-webkit-print-color-adjust: exact;
|
|
69
|
+
print-color-adjust: exact;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Logic fields - Fields with conditional logic or mixins */
|
|
74
|
+
.highlight {
|
|
75
|
+
border: 1px solid #ffc107;
|
|
76
|
+
border-radius: 2px;
|
|
77
|
+
padding: 3px 3px;
|
|
78
|
+
background-color: #f9f3df;
|
|
79
|
+
color: #856404;
|
|
80
|
+
display: inline;
|
|
81
|
+
vertical-align: baseline;
|
|
82
|
+
white-space: normal;
|
|
83
|
+
margin: 1px 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Nested highlighting */
|
|
87
|
+
.highlight .imported-value,
|
|
88
|
+
.highlight .missing-value {
|
|
89
|
+
margin: 0;
|
|
90
|
+
padding: 0 3px;
|
|
91
|
+
border-radius: 1px;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Print styles for logic fields */
|
|
95
|
+
@media print {
|
|
96
|
+
.highlight {
|
|
97
|
+
border-color: #ffc107;
|
|
98
|
+
background-color: #f9f3df;
|
|
99
|
+
color: #856404;
|
|
100
|
+
-webkit-print-color-adjust: exact;
|
|
101
|
+
print-color-adjust: exact;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Additional helper classes */
|
|
106
|
+
|
|
107
|
+
/* Legend for highlighting */
|
|
108
|
+
.highlight-legend {
|
|
109
|
+
margin: 20px 0;
|
|
110
|
+
padding: 15px;
|
|
111
|
+
border: 1px solid #ddd;
|
|
112
|
+
border-radius: 4px;
|
|
113
|
+
background-color: #f8f9fa;
|
|
114
|
+
page-break-inside: avoid;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.highlight-legend h3 {
|
|
118
|
+
margin-top: 0;
|
|
119
|
+
font-size: 1.1em;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.highlight-legend ul {
|
|
123
|
+
list-style: none;
|
|
124
|
+
padding-left: 0;
|
|
125
|
+
margin: 10px 0 0 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.highlight-legend li {
|
|
129
|
+
margin: 5px 0;
|
|
130
|
+
padding: 5px 10px;
|
|
131
|
+
border-radius: 3px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.highlight-legend .imported-example {
|
|
135
|
+
background-color: #e6f3ff;
|
|
136
|
+
border: 1px solid #0066cc;
|
|
137
|
+
color: #004085;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.highlight-legend .missing-example {
|
|
141
|
+
background-color: #fff5f5;
|
|
142
|
+
border: 1px solid #dc3545;
|
|
143
|
+
color: #dc3545;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.highlight-legend .logic-example {
|
|
147
|
+
background-color: #f9f3df;
|
|
148
|
+
border: 1px solid #ffc107;
|
|
149
|
+
color: #856404;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* Ensure visibility in different contexts */
|
|
153
|
+
@media screen {
|
|
154
|
+
.imported-value,
|
|
155
|
+
.missing-value,
|
|
156
|
+
.highlight {
|
|
157
|
+
transition: background-color 0.2s ease;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.imported-value:hover {
|
|
161
|
+
background-color: #cce5ff;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.missing-value:hover {
|
|
165
|
+
background-color: #ffe5e5;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.highlight:hover {
|
|
169
|
+
background-color: #fff3cd;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Field Tracking System for Legal Markdown Processing
|
|
3
|
+
*
|
|
4
|
+
* This module provides comprehensive field tracking functionality for Legal Markdown
|
|
5
|
+
* documents, including field status monitoring, highlighting support, and reporting
|
|
6
|
+
* capabilities. It tracks field processing state and applies appropriate CSS classes
|
|
7
|
+
* for visual feedback during document review.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Field status tracking (filled, empty, logic)
|
|
11
|
+
* - CSS class application for field highlighting
|
|
12
|
+
* - Field processing state management
|
|
13
|
+
* - Mixin usage tracking for complex field logic
|
|
14
|
+
* - Reporting and analytics for field usage
|
|
15
|
+
* - Singleton pattern for consistent tracking across the application
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { fieldTracker, FieldStatus } from './field-tracker';
|
|
20
|
+
*
|
|
21
|
+
* // Track a field during processing
|
|
22
|
+
* fieldTracker.trackField('client.name', {
|
|
23
|
+
* value: 'Acme Corporation',
|
|
24
|
+
* status: FieldStatus.FILLED
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Apply field tracking to content
|
|
28
|
+
* const highlightedContent = fieldTracker.applyFieldTracking(processedContent);
|
|
29
|
+
*
|
|
30
|
+
* // Generate field report
|
|
31
|
+
* const report = fieldTracker.generateReport();
|
|
32
|
+
* console.log(`${report.filled} fields filled, ${report.empty} fields empty`);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Enumeration of possible field statuses during processing
|
|
37
|
+
*
|
|
38
|
+
* @enum {string} FieldStatus
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* import { FieldStatus } from './field-tracker';
|
|
42
|
+
*
|
|
43
|
+
* // Check field status
|
|
44
|
+
* if (field.status === FieldStatus.FILLED) {
|
|
45
|
+
* console.log('Field has a value');
|
|
46
|
+
* } else if (field.status === FieldStatus.EMPTY) {
|
|
47
|
+
* console.log('Field needs a value');
|
|
48
|
+
* } else if (field.status === FieldStatus.LOGIC) {
|
|
49
|
+
* console.log('Field uses conditional logic');
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare enum FieldStatus {
|
|
54
|
+
/** Field has been filled with a value */
|
|
55
|
+
FILLED = "filled",
|
|
56
|
+
/** Field is empty or missing a value */
|
|
57
|
+
EMPTY = "empty",
|
|
58
|
+
/** Field contains logic or uses mixins */
|
|
59
|
+
LOGIC = "logic"
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Interface representing a tracked field in the Legal Markdown system
|
|
63
|
+
*
|
|
64
|
+
* @interface TrackedField
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const field: TrackedField = {
|
|
68
|
+
* name: 'client.name',
|
|
69
|
+
* status: FieldStatus.FILLED,
|
|
70
|
+
* value: 'Acme Corporation',
|
|
71
|
+
* originalValue: '{{client.name}}',
|
|
72
|
+
* hasLogic: false,
|
|
73
|
+
* mixinUsed: undefined
|
|
74
|
+
* };
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export interface TrackedField {
|
|
78
|
+
/** The name/identifier of the field */
|
|
79
|
+
name: string;
|
|
80
|
+
/** The current status of the field */
|
|
81
|
+
status: FieldStatus;
|
|
82
|
+
/** The processed value of the field */
|
|
83
|
+
value?: any;
|
|
84
|
+
/** The original unprocessed value of the field */
|
|
85
|
+
originalValue?: any;
|
|
86
|
+
/** Whether the field contains logical operations */
|
|
87
|
+
hasLogic: boolean;
|
|
88
|
+
/** Name of mixin used for processing this field */
|
|
89
|
+
mixinUsed?: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Field tracking system for Legal Markdown processing
|
|
93
|
+
*
|
|
94
|
+
* Manages field tracking throughout the document processing lifecycle,
|
|
95
|
+
* including status monitoring, highlighting, and reporting capabilities.
|
|
96
|
+
*
|
|
97
|
+
* @class FieldTracker
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* import { FieldTracker, FieldStatus } from './field-tracker';
|
|
101
|
+
*
|
|
102
|
+
* const tracker = new FieldTracker();
|
|
103
|
+
*
|
|
104
|
+
* // Track field processing
|
|
105
|
+
* tracker.trackField('client.name', {
|
|
106
|
+
* value: 'Acme Corp',
|
|
107
|
+
* originalValue: '{{client.name}}',
|
|
108
|
+
* hasLogic: false
|
|
109
|
+
* });
|
|
110
|
+
*
|
|
111
|
+
* // Apply tracking to content
|
|
112
|
+
* const highlighted = tracker.applyFieldTracking(content);
|
|
113
|
+
*
|
|
114
|
+
* // Generate report
|
|
115
|
+
* const report = tracker.generateReport();
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export declare class FieldTracker {
|
|
119
|
+
private fields;
|
|
120
|
+
private processedContent;
|
|
121
|
+
/**
|
|
122
|
+
* Creates a new FieldTracker instance
|
|
123
|
+
*
|
|
124
|
+
* @constructor
|
|
125
|
+
*/
|
|
126
|
+
constructor();
|
|
127
|
+
/**
|
|
128
|
+
* Track a field that has been processed
|
|
129
|
+
*
|
|
130
|
+
* Registers a field with the tracking system, determining its status based on
|
|
131
|
+
* the provided options and storing relevant metadata for later use.
|
|
132
|
+
*
|
|
133
|
+
* @method trackField
|
|
134
|
+
* @param {string} fieldName - The name/identifier of the field to track
|
|
135
|
+
* @param {Object} options - Options for field tracking
|
|
136
|
+
* @param {any} [options.value] - The processed value of the field
|
|
137
|
+
* @param {any} [options.originalValue] - The original unprocessed value
|
|
138
|
+
* @param {boolean} [options.hasLogic=false] - Whether the field contains logical operations
|
|
139
|
+
* @param {string} [options.mixinUsed] - Name of mixin used for processing
|
|
140
|
+
* @returns {void}
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* // Track a filled field
|
|
144
|
+
* tracker.trackField('client.name', {
|
|
145
|
+
* value: 'Acme Corporation',
|
|
146
|
+
* originalValue: '{{client.name}}'
|
|
147
|
+
* });
|
|
148
|
+
*
|
|
149
|
+
* // Track an empty field
|
|
150
|
+
* tracker.trackField('client.address', {
|
|
151
|
+
* value: '',
|
|
152
|
+
* originalValue: '{{client.address}}'
|
|
153
|
+
* });
|
|
154
|
+
*
|
|
155
|
+
* // Track a field with logic
|
|
156
|
+
* tracker.trackField('warranty.clause', {
|
|
157
|
+
* value: 'Standard warranty applies',
|
|
158
|
+
* originalValue: '{{#if warranty.enabled}}{{warranty.text}}{{/if}}',
|
|
159
|
+
* hasLogic: true,
|
|
160
|
+
* mixinUsed: 'warranty-mixin'
|
|
161
|
+
* });
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
trackField(fieldName: string, options: {
|
|
165
|
+
value?: any;
|
|
166
|
+
originalValue?: any;
|
|
167
|
+
hasLogic?: boolean;
|
|
168
|
+
mixinUsed?: string;
|
|
169
|
+
}): void;
|
|
170
|
+
/**
|
|
171
|
+
* Apply field tracking to processed content by wrapping fields with appropriate CSS classes
|
|
172
|
+
*/
|
|
173
|
+
applyFieldTracking(content: string): string;
|
|
174
|
+
/**
|
|
175
|
+
* Get CSS class for field based on its status
|
|
176
|
+
*/
|
|
177
|
+
private getFieldCssClass;
|
|
178
|
+
/**
|
|
179
|
+
* Escape special regex characters in a string
|
|
180
|
+
*/
|
|
181
|
+
private escapeRegex;
|
|
182
|
+
/**
|
|
183
|
+
* Get all tracked fields
|
|
184
|
+
*/
|
|
185
|
+
getFields(): Map<string, TrackedField>;
|
|
186
|
+
/**
|
|
187
|
+
* Get fields by status
|
|
188
|
+
*/
|
|
189
|
+
getFieldsByStatus(status: FieldStatus): TrackedField[];
|
|
190
|
+
/**
|
|
191
|
+
* Generate a summary report of tracked fields
|
|
192
|
+
*/
|
|
193
|
+
generateReport(): {
|
|
194
|
+
total: number;
|
|
195
|
+
filled: number;
|
|
196
|
+
empty: number;
|
|
197
|
+
logic: number;
|
|
198
|
+
fields: TrackedField[];
|
|
199
|
+
};
|
|
200
|
+
/**
|
|
201
|
+
* Clear all tracked fields
|
|
202
|
+
*/
|
|
203
|
+
clear(): void;
|
|
204
|
+
}
|
|
205
|
+
export declare const fieldTracker: FieldTracker;
|
|
206
|
+
//# sourceMappingURL=field-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-tracker.d.ts","sourceRoot":"","sources":["../../src/tracking/field-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH;;;;;;;;;;;;;;;;;GAiBG;AACH,oBAAY,WAAW;IACrB,yCAAyC;IACzC,MAAM,WAAW;IACjB,wCAAwC;IACxC,KAAK,UAAU;IACf,0CAA0C;IAC1C,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,MAAM,EAAE,WAAW,CAAC;IACpB,uCAAuC;IACvC,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,kDAAkD;IAClD,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,gBAAgB,CAAc;IAEtC;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,aAAa,CAAC,EAAE,GAAG,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,IAAI;IAyBP;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAgC3C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAItC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE;IAItD;;OAEG;IACH,cAAc,IAAI;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,YAAY,EAAE,CAAC;KACxB;IAYD;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|