ixbrl-viewer 1.4.21__py3-none-any.whl → 1.4.49__py3-none-any.whl

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.

Potentially problematic release.


This version of ixbrl-viewer might be problematic. Click here for more details.

Files changed (114) hide show
  1. iXBRLViewerPlugin/__init__.py +77 -49
  2. iXBRLViewerPlugin/_version.py +2 -2
  3. iXBRLViewerPlugin/constants.py +86 -1
  4. iXBRLViewerPlugin/featureConfig.py +4 -1
  5. iXBRLViewerPlugin/iXBRLViewer.py +202 -131
  6. iXBRLViewerPlugin/plugin.py +7 -0
  7. iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +1 -1
  8. iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt +9 -2
  9. iXBRLViewerPlugin/viewer/i18next-parser.config.js +1 -1
  10. iXBRLViewerPlugin/viewer/src/data/utr.json +1 -0
  11. iXBRLViewerPlugin/viewer/src/html/fact-details.html +69 -38
  12. iXBRLViewerPlugin/viewer/src/html/footer-logo.html +4 -0
  13. iXBRLViewerPlugin/viewer/src/html/footnote-details.html +1 -1
  14. iXBRLViewerPlugin/viewer/src/html/inspector.html +324 -211
  15. iXBRLViewerPlugin/viewer/src/i18n/cy/balancetypes.json +1 -0
  16. iXBRLViewerPlugin/viewer/src/i18n/cy/currencies.json +13 -0
  17. iXBRLViewerPlugin/viewer/src/i18n/cy/datatypes.json +9 -0
  18. iXBRLViewerPlugin/viewer/src/i18n/cy/labelroles.json +24 -0
  19. iXBRLViewerPlugin/viewer/src/i18n/cy/referenceparts.json +10 -0
  20. iXBRLViewerPlugin/viewer/src/i18n/cy/scale.json +16 -0
  21. iXBRLViewerPlugin/viewer/src/i18n/cy/tooltips.json +17 -0
  22. iXBRLViewerPlugin/viewer/src/i18n/cy/translation.json +179 -0
  23. iXBRLViewerPlugin/viewer/src/i18n/en/balancetypes.json +4 -0
  24. iXBRLViewerPlugin/viewer/src/i18n/en/datatypes.json +10 -0
  25. iXBRLViewerPlugin/viewer/src/i18n/en/labelroles.json +4 -0
  26. iXBRLViewerPlugin/viewer/src/i18n/en/scale.json +16 -0
  27. iXBRLViewerPlugin/viewer/src/i18n/en/tooltips.json +17 -0
  28. iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +56 -24
  29. iXBRLViewerPlugin/viewer/src/i18n/es/balancetypes.json +4 -0
  30. iXBRLViewerPlugin/viewer/src/i18n/es/datatypes.json +10 -0
  31. iXBRLViewerPlugin/viewer/src/i18n/es/labelroles.json +24 -0
  32. iXBRLViewerPlugin/viewer/src/i18n/es/scale.json +16 -0
  33. iXBRLViewerPlugin/viewer/src/i18n/es/tooltips.json +17 -0
  34. iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +70 -37
  35. iXBRLViewerPlugin/viewer/src/icons/dark-mode.svg +4 -0
  36. iXBRLViewerPlugin/viewer/src/img/arelle-dark.svg +179 -0
  37. iXBRLViewerPlugin/viewer/src/img/inline-viewer-dark.svg +59 -0
  38. iXBRLViewerPlugin/viewer/src/js/accordian.js +3 -2
  39. iXBRLViewerPlugin/viewer/src/js/aspect.js +18 -10
  40. iXBRLViewerPlugin/viewer/src/js/aspect.test.js +2 -2
  41. iXBRLViewerPlugin/viewer/src/js/balance.js +14 -0
  42. iXBRLViewerPlugin/viewer/src/js/calculation.js +45 -34
  43. iXBRLViewerPlugin/viewer/src/js/calculationInspector.js +4 -7
  44. iXBRLViewerPlugin/viewer/src/js/chart.js +23 -21
  45. iXBRLViewerPlugin/viewer/src/js/concept.js +27 -2
  46. iXBRLViewerPlugin/viewer/src/js/concept.test.js +23 -2
  47. iXBRLViewerPlugin/viewer/src/js/datatype.js +20 -0
  48. iXBRLViewerPlugin/viewer/src/js/datatype.test.js +62 -0
  49. iXBRLViewerPlugin/viewer/src/js/dialog.js +6 -4
  50. iXBRLViewerPlugin/viewer/src/js/fact.js +40 -7
  51. iXBRLViewerPlugin/viewer/src/js/fact.test.js +3 -0
  52. iXBRLViewerPlugin/viewer/src/js/index.js +11 -3
  53. iXBRLViewerPlugin/viewer/src/js/inspector.js +560 -160
  54. iXBRLViewerPlugin/viewer/src/js/inspector.test.js +1 -2
  55. iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js +129 -31
  56. iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js +133 -20
  57. iXBRLViewerPlugin/viewer/src/js/ixnode.js +1 -1
  58. iXBRLViewerPlugin/viewer/src/js/menu.js +25 -7
  59. iXBRLViewerPlugin/viewer/src/js/number-matcher.js +2 -2
  60. iXBRLViewerPlugin/viewer/src/js/outline.js +2 -4
  61. iXBRLViewerPlugin/viewer/src/js/period.js +0 -1
  62. iXBRLViewerPlugin/viewer/src/js/report.js +68 -13
  63. iXBRLViewerPlugin/viewer/src/js/report.test.js +77 -6
  64. iXBRLViewerPlugin/viewer/src/js/reportset.js +33 -3
  65. iXBRLViewerPlugin/viewer/src/js/reportset.test.js +32 -6
  66. iXBRLViewerPlugin/viewer/src/js/search.js +61 -35
  67. iXBRLViewerPlugin/viewer/src/js/search.test.js +8 -5
  68. iXBRLViewerPlugin/viewer/src/js/summary.js +22 -0
  69. iXBRLViewerPlugin/viewer/src/js/summary.test.js +50 -13
  70. iXBRLViewerPlugin/viewer/src/js/tableExport.js +3 -3
  71. iXBRLViewerPlugin/viewer/src/js/taxonomynamer.js +34 -0
  72. iXBRLViewerPlugin/viewer/src/js/taxonomynamer.test.js +32 -0
  73. iXBRLViewerPlugin/viewer/src/js/theme.js +49 -0
  74. iXBRLViewerPlugin/viewer/src/js/unit.js +73 -2
  75. iXBRLViewerPlugin/viewer/src/js/unit.test.js +14 -3
  76. iXBRLViewerPlugin/viewer/src/js/util.js +21 -18
  77. iXBRLViewerPlugin/viewer/src/js/util.test.js +1 -0
  78. iXBRLViewerPlugin/viewer/src/js/utr.js +27 -0
  79. iXBRLViewerPlugin/viewer/src/js/viewer.js +40 -29
  80. iXBRLViewerPlugin/viewer/src/js/viewerOptions.js +0 -2
  81. iXBRLViewerPlugin/viewer/src/less/accordian.less +8 -4
  82. iXBRLViewerPlugin/viewer/src/less/block-list.less +12 -6
  83. iXBRLViewerPlugin/viewer/src/less/calculation-inspector.less +2 -2
  84. iXBRLViewerPlugin/viewer/src/less/chart.less +8 -5
  85. iXBRLViewerPlugin/viewer/src/less/colours-dark-mode.less +40 -0
  86. iXBRLViewerPlugin/viewer/src/less/colours.less +28 -21
  87. iXBRLViewerPlugin/viewer/src/less/common.less +1 -1
  88. iXBRLViewerPlugin/viewer/src/less/components.less +3 -3
  89. iXBRLViewerPlugin/viewer/src/less/core.less +2 -0
  90. iXBRLViewerPlugin/viewer/src/less/dialog.less +13 -10
  91. iXBRLViewerPlugin/viewer/src/less/form-controls.less +33 -11
  92. iXBRLViewerPlugin/viewer/src/less/inspector.less +556 -300
  93. iXBRLViewerPlugin/viewer/src/less/loader.less +2 -2
  94. iXBRLViewerPlugin/viewer/src/less/menu.less +33 -15
  95. iXBRLViewerPlugin/viewer/src/less/summary.less +16 -6
  96. iXBRLViewerPlugin/viewer/src/less/tabs.less +5 -5
  97. iXBRLViewerPlugin/viewer/src/less/text-mixins.less +2 -1
  98. iXBRLViewerPlugin/viewer/src/less/validation-report.less +1 -1
  99. iXBRLViewerPlugin/viewer/src/less/viewer.less +30 -18
  100. iXBRLViewerPlugin/viewer/webpack.common.js +19 -9
  101. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/METADATA +41 -14
  102. ixbrl_viewer-1.4.49.dist-info/RECORD +197 -0
  103. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/WHEEL +1 -1
  104. tests/puppeteer/framework/page_objects/doc_frame.js +3 -3
  105. tests/puppeteer/framework/page_objects/fact_details_panel.js +28 -0
  106. tests/puppeteer/puppeteer_test_run_via_intellij.jpg +0 -0
  107. tests/puppeteer/tests/fact_properties.test.js +10 -4
  108. tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +117 -51
  109. iXBRLViewerPlugin/viewer/src/js/interact.min.js +0 -6
  110. ixbrl_viewer-1.4.21.dist-info/RECORD +0 -166
  111. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/LICENSE +0 -0
  112. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/NOTICE +0 -0
  113. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/entry_points.txt +0 -0
  114. {ixbrl_viewer-1.4.21.dist-info → ixbrl_viewer-1.4.49.dist-info}/top_level.txt +0 -0
@@ -17,7 +17,7 @@
17
17
  top: 50%;
18
18
  left: 50%;
19
19
  transform: translateX(-50%) translateY(-50%);
20
- color: #fff;
20
+ color: var(--colour-loader);
21
21
  font-size: large;
22
22
  font-family: sans-serif;
23
23
  }
@@ -46,7 +46,7 @@
46
46
  animation: loader 4s steps(64);
47
47
  -webkit-animation-iteration-count: infinite;
48
48
  animation-iteration-count: infinite;
49
- border-color: #fff transparent transparent;
49
+ border-color: var(--colour-loader) transparent transparent;
50
50
  }
51
51
 
52
52
  @keyframes loader {
@@ -2,25 +2,28 @@
2
2
 
3
3
  @import url("form-controls.less");
4
4
 
5
- #ixv #inspector {
5
+ #ixv {
6
6
  .menu {
7
- position: absolute;
8
- right: 0;
9
- top: 0;
10
- line-height: @top-bar-height;
11
- cursor: pointer;
7
+ line-height: var(--top-bar-height);
12
8
 
13
9
  .menu-title {
14
- padding-right: 3.2rem;
10
+ line-height: var(--top-bar-height);
11
+ padding: 0 2.4rem 0 0.3rem;
15
12
  position: relative;
13
+ border: none;
16
14
  }
17
15
 
18
16
  .menu-title::after {
19
17
  .icon-chevron-down();
20
18
 
19
+ cursor: pointer;
21
20
  font-size: 1.8rem;
22
21
  position: absolute;
23
- right: 1rem;
22
+ right: 0.2rem;
23
+ }
24
+
25
+ .menu-title::before {
26
+ cursor: pointer;
24
27
  }
25
28
 
26
29
  .content-container {
@@ -28,7 +31,7 @@
28
31
  // remaining page space, but this means we need to calculate the top
29
32
  // position manually.
30
33
  position: fixed;
31
- top: (@top-bar-height + 3.2rem + 2 * 0.8rem);
34
+ top: calc(var(--top-bar-height));
32
35
  right: 0;
33
36
  bottom: 0;
34
37
  display: none;
@@ -36,14 +39,13 @@
36
39
 
37
40
  .content {
38
41
  line-height: initial;
39
- background: #fff;
40
- border: solid 1px @border-grey;
42
+ background: var(--colour-bg);
43
+ border: solid 1px var(--colour-border-grey);
41
44
  max-height: 100%;
42
45
  overflow-y: auto;
43
46
 
44
47
  .group {
45
- border-bottom: solid 1px @border-grey;
46
- border-top: solid 1px @border-grey;
48
+ margin-bottom: 1rem;
47
49
  }
48
50
 
49
51
  .item {
@@ -53,7 +55,12 @@
53
55
  text-align: left;
54
56
 
55
57
  &:hover {
56
- background: @border-grey;
58
+ background: var(--colour-row-hover);
59
+ }
60
+
61
+ &:focus-within {
62
+ outline: solid 2px var(--colour-foreground);
63
+ outline-offset: -2px;
57
64
  }
58
65
 
59
66
  &.menu-checkbox {
@@ -83,12 +90,23 @@
83
90
 
84
91
  a.item {
85
92
  display: block;
86
- color: @text;
93
+ color: var(--colour-text);
87
94
 
88
95
  &:hover {
89
96
  text-decoration: none;
90
97
  }
91
98
  }
99
+
100
+ .label {
101
+ text-transform: uppercase;
102
+ font-weight: bold;
103
+ font-size: 1.2rem;
104
+ text-align: left;
105
+ padding-top: 1rem;
106
+ color: var(--colour-border-grey);
107
+ border-bottom: solid 1px var(--colour-border-grey);
108
+ padding-left:1rem;
109
+ }
92
110
  }
93
111
  }
94
112
  }
@@ -2,9 +2,13 @@
2
2
 
3
3
  #inspector .summary {
4
4
  .body {
5
- .total-facts-title,
6
- .files-summary-title {
7
- font-weight: bold;
5
+ .total-facts-value,
6
+ .mandatory-facts-value {
7
+ .inline-button();
8
+ }
9
+
10
+ .hidden-facts-value {
11
+ .inline-button();
8
12
  }
9
13
 
10
14
  .file-summary-container {
@@ -34,7 +38,7 @@
34
38
  text-align: left;
35
39
  }
36
40
 
37
- thead {
41
+ thead tr {
38
42
  th {
39
43
  white-space: nowrap;
40
44
  position: relative;
@@ -55,11 +59,17 @@
55
59
  width: 200px;
56
60
  right: 0;
57
61
  bottom: 0;
62
+
63
+ &.has-tooltip {
64
+ bottom: -0.8rem;
65
+ }
58
66
  }
59
67
  }
68
+
60
69
  }
61
70
  }
62
71
 
72
+
63
73
  tbody th {
64
74
  font-weight: normal;
65
75
  }
@@ -70,11 +80,11 @@
70
80
  transition: background-color 0.25s ease;
71
81
 
72
82
  &:nth-child(odd) {
73
- background-color: rgb(248 248 248);
83
+ background-color: var(--colour-row-odd);
74
84
  }
75
85
 
76
86
  &:hover {
77
- background-color: rgb(230 230 230);
87
+ background-color: var(--colour-row-hover);
78
88
  }
79
89
 
80
90
  td.figure {
@@ -8,7 +8,7 @@
8
8
  background-color: #e3e3e3;
9
9
  width: 100%;
10
10
  box-sizing: border-box;
11
- border-bottom: @simple-border;
11
+ border-bottom: solid 0.1rem var(--colour-border-grey);
12
12
  display: flex;
13
13
 
14
14
  .tab {
@@ -17,19 +17,19 @@
17
17
  cursor: pointer;
18
18
  color: #444;
19
19
  border: solid 0.1rem #cbcbcb;
20
- border-top-left-radius: 0.6rem;
21
- border-top-right-radius: 0.6rem;
20
+ border-radius: 0.6rem 0.6rem 0 0;
22
21
  margin-bottom: -0.1rem;
23
22
  flex-shrink: 1;
24
23
  text-overflow: ellipsis;
25
24
  overflow: hidden;
26
25
  white-space: nowrap;
27
26
  width: 20em;
27
+ text-align: left;
28
28
 
29
29
  &.active {
30
30
  padding: 1.2rem;
31
- border-bottom-color: #fff;
32
- background-color: #fff;
31
+ border-bottom-color: var(--colour-bg);
32
+ background-color: var(--colour-bg);
33
33
  border-top: solid 0.4rem #0085e6;
34
34
  }
35
35
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  .default-font {
4
4
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5
- color: @text;
5
+ color: var(--colour-text);
6
6
  }
7
7
 
8
8
  .text-sm {
@@ -11,4 +11,5 @@
11
11
 
12
12
  .text-md {
13
13
  font-size: 1.4rem;
14
+ line-height: 1.8rem;
14
15
  }
@@ -13,7 +13,7 @@
13
13
  td,
14
14
  th {
15
15
  padding: 0.5rem;
16
- border: solid 0.1rem @border-grey;
16
+ border: solid 0.1rem var(--colour-border-grey);
17
17
  }
18
18
  }
19
19
  }
@@ -4,40 +4,52 @@
4
4
  @import url("colours.less");
5
5
  @import url("common.less");
6
6
 
7
+ :root {
8
+ --colour-bg: @colour-bg;
9
+ --colour-highlight-1: @colour-highlight-1;
10
+ --colour-highlight-2: @colour-highlight-2;
11
+ --colour-highlight-default: @colour-highlight-default;
12
+ --colour-linked-fact: @colour-linked-fact;
13
+ --colour-primary-focus: @colour-primary-focus;
14
+ --colour-primary: @colour-primary;
15
+ --colour-secondary: @colour-secondary;
16
+ --colour-related-fact: @colour-related-fact;
17
+ }
18
+
7
19
  .ixbrl-highlight:not(.ixbrl-no-highlight) {
8
20
  // To ensure highlighting takes place, !important is used to override inline styles.
9
21
  // For example: overrides highlighting applied inline to alternate table rows.
10
- background-color: @highlight-default !important; // Override inline styles
22
+ background-color: var(--colour-highlight-default) !important; // Override inline styles
11
23
 
12
24
  &.ixbrl-highlight-1 {
13
- background-color: @highlight-1 !important; // Override inline styles
25
+ background-color: var(--colour-highlight-1) !important; // Override inline styles
14
26
  }
15
27
 
16
28
  &.ixbrl-highlight-2 {
17
- background-color: @highlight-2 !important; // Override inline styles
29
+ background-color: var(--colour-highlight-2) !important; // Override inline styles
18
30
  }
19
31
  }
20
32
 
21
33
  .review.review-highlight-untagged-numbers .review-untagged-number {
22
- background-color: @highlight-1;
34
+ background-color: var(--colour-highlight-1);
23
35
  }
24
36
 
25
37
  .review.review-highlight-untagged-dates .review-untagged-date {
26
- background-color: @highlight-2;
38
+ background-color: var(--colour-highlight-2);
27
39
  }
28
40
 
29
41
  .review .ixbrl-highlight:not(.ixbrl-no-highlight) {
30
42
  // Review mode disables namespace-specific highlighting in favor of all tagged
31
43
  // elements sharing the same default highlight color, other colors are used for
32
44
  // untagged highlighting defined above.
33
- background-color: @highlight-default !important; // Override inline styles
45
+ background-color: var(--colour-highlight-default) !important; // Override inline styles
34
46
 
35
47
  &.ixbrl-highlight-1 {
36
- background-color: @highlight-default !important; // Override inline styles
48
+ background-color: var(--colour-highlight-default) !important; // Override inline styles
37
49
  }
38
50
 
39
51
  &.ixbrl-highlight-2 {
40
- background-color: @highlight-default !important; // Override inline styles
52
+ background-color: var(--colour-highlight-default) !important; // Override inline styles
41
53
  }
42
54
  }
43
55
 
@@ -45,14 +57,14 @@ div,
45
57
  span {
46
58
  &:not(.ixbrl-no-highlight) {
47
59
  &.ixbrl-selected {
48
- outline: solid 0.125em @primary-focus;
60
+ outline: solid 0.125em var(--colour-primary-focus);
49
61
  outline-offset: 0.0625em;
50
62
  }
51
63
 
52
64
  &.ixbrl-element,
53
65
  &.ixbrl-sub-element {
54
66
  &:hover:not(.ixbrl-selected) {
55
- outline: dashed 0.125em @primary-focus;
67
+ outline: dashed 0.125em var(--colour-primary-focus);
56
68
  outline-offset: 0.0625em;
57
69
  }
58
70
  }
@@ -65,7 +77,7 @@ span {
65
77
  cursor: pointer;
66
78
 
67
79
  &.ixbrl-related {
68
- outline: dashed 0.125em @related-fact;
80
+ outline: dashed 0.125em var(--colour-related-fact);
69
81
 
70
82
  &:not(td, th) {
71
83
  outline-offset: 0.0625em;
@@ -78,13 +90,13 @@ td,
78
90
  th {
79
91
  &:not(.ixbrl-no-highlight) {
80
92
  &.ixbrl-selected {
81
- outline: solid 0.125em @primary-focus !important;
93
+ outline: solid 0.125em var(--colour-primary-focus) !important;
82
94
  outline-offset: -0.0625em !important;
83
95
  }
84
96
 
85
97
  &.ixbrl-element:hover:not(.ixbrl-selected),
86
98
  &.ixbrl-sub-element:hover:not(.ixbrl-selected) {
87
- outline: dashed 0.125em @primary-focus !important;
99
+ outline: dashed 0.125em var(--colour-primary-focus) !important;
88
100
  outline-offset: -0.0625em !important;
89
101
  }
90
102
  }
@@ -115,7 +127,7 @@ div.ixbrl-table-handle {
115
127
  width: 0;
116
128
  height: 0;
117
129
  border: @export-handle-size solid transparent;
118
- border-bottom-color: @workiva-green;
130
+ border-bottom-color: var(--colour-secondary);
119
131
  top: -2 * @export-handle-size;
120
132
 
121
133
  &::after {
@@ -126,7 +138,7 @@ div.ixbrl-table-handle {
126
138
  width: 0;
127
139
  height: 0;
128
140
  border: @export-handle-size solid transparent;
129
- border-top-color: @workiva-green;
141
+ border-top-color: var(--colour-secondary);
130
142
  }
131
143
 
132
144
  & > span {
@@ -140,7 +152,7 @@ div.ixbrl-table-handle {
140
152
  }
141
153
 
142
154
  border: none;
143
- color: #fff;
155
+ color: var(--colour-bg);
144
156
  transition: width 0.3s;
145
157
  width: 9rem;
146
158
  height: initial;
@@ -157,11 +169,11 @@ div.ixbrl-table-handle {
157
169
  font-size: 1.2rem;
158
170
  }
159
171
 
160
- border: solid 0.1rem #fff;
172
+ border: solid 0.1rem var(--colour-bg);
161
173
  font-family: sans-serif;
162
174
  display: block;
163
175
  padding: 0.7rem 1.5rem 0.7rem 2.5rem;
164
- background-color: @workiva-green;
176
+ background-color: var(--colour-secondary);
165
177
  }
166
178
  }
167
179
  }
@@ -17,22 +17,32 @@ module.exports = {
17
17
  use: [ {
18
18
  loader: "html-loader",
19
19
  options: {
20
- minimize: true,
21
- removeAttributeQuotes: false,
22
- keepClosingSlash: true
20
+ esModule: false,
21
+ minimize: {
22
+ removeAttributeQuotes: false,
23
+ keepClosingSlash: true
24
+ }
23
25
  }
24
26
  }]
25
27
  },
26
28
  {
27
29
  test: /\.less$/,
28
- use: [ {
29
- loader: "less-loader",
30
- options: {
31
- lessOptions: {
32
- math: "parens-division"
30
+ use: [
31
+ {
32
+ loader: "css-loader",
33
+ options: {
34
+ esModule: false
35
+ }
36
+ },
37
+ {
38
+ loader: "less-loader",
39
+ options: {
40
+ lessOptions: {
41
+ math: "parens-division"
42
+ }
33
43
  }
34
44
  }
35
- }]
45
+ ]
36
46
  }
37
47
  ]
38
48
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: ixbrl-viewer
3
- Version: 1.4.21
3
+ Version: 1.4.49
4
4
  Summary: The Arelle iXBRL Viewer allows iXBRL reports to be viewed interactively in a web browser.
5
5
  Author-email: "arelle.org" <support@arelle.org>
6
6
  License: Apache-2.0
@@ -19,26 +19,25 @@ Classifier: Intended Audience :: Developers
19
19
  Classifier: License :: OSI Approved :: Apache Software License
20
20
  Classifier: Natural Language :: English
21
21
  Classifier: Programming Language :: Python :: 3
22
- Classifier: Programming Language :: Python :: 3.8
23
22
  Classifier: Programming Language :: Python :: 3.9
24
23
  Classifier: Programming Language :: Python :: 3.10
25
24
  Classifier: Programming Language :: Python :: 3.11
26
25
  Classifier: Programming Language :: Python :: 3.12
27
26
  Classifier: Operating System :: OS Independent
28
27
  Classifier: Topic :: Text Processing :: Markup :: XML
29
- Requires-Python: >=3.8
28
+ Requires-Python: >=3.9
30
29
  Description-Content-Type: text/markdown
31
30
  License-File: LICENSE
32
31
  License-File: NOTICE
33
- Requires-Dist: lxml <6,>=4
32
+ Requires-Dist: lxml<6,>=4
34
33
  Provides-Extra: arelle
35
- Requires-Dist: arelle-release ==2.* ; extra == 'arelle'
34
+ Requires-Dist: arelle_release==2.*; extra == "arelle"
36
35
  Provides-Extra: dev
37
- Requires-Dist: flake8 ==7.0.0 ; extra == 'dev'
38
- Requires-Dist: lxml-stubs ==0.5.1 ; extra == 'dev'
39
- Requires-Dist: mypy ==1.9.0 ; extra == 'dev'
40
- Requires-Dist: pytest ==8.1.1 ; extra == 'dev'
41
- Requires-Dist: typing-extensions ==4.10.0 ; extra == 'dev'
36
+ Requires-Dist: flake8==7.1.1; extra == "dev"
37
+ Requires-Dist: lxml-stubs==0.5.1; extra == "dev"
38
+ Requires-Dist: mypy==1.14.1; extra == "dev"
39
+ Requires-Dist: pytest==8.3.4; extra == "dev"
40
+ Requires-Dist: typing-extensions==4.12.2; extra == "dev"
42
41
 
43
42
  # Arelle iXBRL Viewer
44
43
 
@@ -297,6 +296,34 @@ This mode replaces the namespace-based highlighting with optional highlighting b
297
296
  |---------------------------|----------------|
298
297
  | `--viewer-feature-review` | `?review=true` |
299
298
 
299
+ # Runtime config
300
+
301
+ When launched, the viewer will check for the existence of
302
+ `ixbrlviewer.config.json` in the same directory as `ixbrlviewer.js`. If found,
303
+ this will be loaded and used to configure the viewer.
304
+
305
+ The file supports the following keys:
306
+
307
+ * `features` - a JSON object containing defaults for features. These will be
308
+ overridden by features defined at generation time, and then by query
309
+ parameters, as defined above.
310
+
311
+ * `skin` - a JSON object supporting the following keys:
312
+
313
+ * `stylesheetUrl` - a URL to additional CSS definitions.
314
+ * `faviconUrl` - a URL to an icon file to be used as the favicon for the viewer.
315
+ * `footerLogoHtml` - a fragment of HTML that will be included in place of the standard footer logo.
316
+
317
+ * `taxonomyNames` - a JSON object where:
318
+
319
+ * Keys are strings that will be treated as a regular expression to match
320
+ against a namespace.
321
+ * Values are an array of (prefix, name) where "prefix" is the preferred
322
+ namespace prefix for the namespace, and "name" is a short descriptive
323
+ name for the taxonomy.
324
+
325
+ Relative URLs defined in the config file are resolved relative to the config file.
326
+
300
327
  # Disable viewer loading
301
328
 
302
329
  Loading of the viewer can be disabled by specifying `?disable-viewer` as a
@@ -304,9 +331,9 @@ query parameter. This will leave the iXBRL document loaded in the browser, but
304
331
  without any viewer functionality. In the case of an iXBRL document set, or
305
332
  multi-document viewer, the first document will be shown.
306
333
 
307
- ## Running tests
334
+ # Running tests
308
335
 
309
- ### Running unit tests
336
+ ## Running unit tests
310
337
 
311
338
  In order to run the javascript unit tests make sure that you have installed all of the npm requirements.
312
339
 
@@ -316,7 +343,7 @@ In order to run the python unit tests make sure that you have pip installed requ
316
343
 
317
344
  Run the following command to run python unit tests: `pytest tests/unit_tests`
318
345
 
319
- ### Running Puppeteer tests
346
+ ## Running Puppeteer tests
320
347
 
321
348
  All commands should be run from repository root
322
349