ixbrl-viewer 1.4.5__py3-none-any.whl → 1.4.6__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.

@@ -11,253 +11,255 @@ import i18next from "i18next";
11
11
  // Class to represent the XBRL data from a single target document in a single
12
12
  // Inline XBRL Document or Document Set.
13
13
 
14
- export function XBRLReport(reportSet, reportData) {
15
- this.reportSet = reportSet;
16
- this._reportData = reportData;
17
- // A map of IDs to Fact and Footnote objects
18
- this._reverseRelationshipCache = {};
19
- }
14
+ export class XBRLReport {
15
+
16
+ constructor(reportSet, reportData) {
17
+ this.reportSet = reportSet;
18
+ this._reportData = reportData;
19
+ // A map of IDs to Fact and Footnote objects
20
+ this._reverseRelationshipCache = {};
21
+ }
20
22
 
21
- XBRLReport.prototype.availableLanguages = function() {
22
- if (!this._availableLanguages) {
23
- this._availableLanguages = new Set()
24
- for (const c of Object.values(this._reportData.concepts)) {
25
- for (const ll of Object.values(c.labels)) {
26
- for (const lang of Object.keys(ll)) {
27
- this._availableLanguages.add(lang);
23
+ availableLanguages() {
24
+ if (!this._availableLanguages) {
25
+ this._availableLanguages = new Set()
26
+ for (const c of Object.values(this._reportData.concepts)) {
27
+ for (const ll of Object.values(c.labels)) {
28
+ for (const lang of Object.keys(ll)) {
29
+ this._availableLanguages.add(lang);
30
+ }
28
31
  }
29
32
  }
30
33
  }
34
+ return this._availableLanguages;
31
35
  }
32
- return this._availableLanguages;
33
- }
34
36
 
35
- XBRLReport.prototype.facts = function() {
36
- return this.reportSet.factsForReport(this);
37
- }
37
+ facts() {
38
+ return this.reportSet.factsForReport(this);
39
+ }
38
40
 
39
- XBRLReport.prototype.getChildRelationships = function(conceptName, arcrole) {
40
- var rels = {}
41
- const elrs = this._reportData.rels[arcrole] || {};
42
- for (const elr in elrs) {
43
- if (conceptName in elrs[elr]) {
44
- rels[elr] = elrs[elr][conceptName];
41
+ getChildRelationships(conceptName, arcrole) {
42
+ const rels = {}
43
+ const elrs = this._reportData.rels[arcrole] || {};
44
+ for (const elr in elrs) {
45
+ if (conceptName in elrs[elr]) {
46
+ rels[elr] = elrs[elr][conceptName];
47
+ }
45
48
  }
49
+ return rels;
46
50
  }
47
- return rels;
48
- }
49
51
 
50
- /*
51
- * Build and cache an inverse map of relationships for a given arcrole for
52
- * efficient lookup of parents concept from a child.
53
- *
54
- * Map is arcrole => elr => target => [ rel, ... ]
55
- *
56
- * "rel" is modified to have a "src" property with the source concept.
57
- */
58
- XBRLReport.prototype._reverseRelationships = function(arcrole) {
59
- if (!(arcrole in this._reverseRelationshipCache)) {
60
- const rrc = {};
61
- const elrs = this._reportData.rels[arcrole] || {};
62
- for (const [elr, relSet] of Object.entries(elrs)) {
63
- for (const [src, rels] of Object.entries(relSet)) {
64
- for (const r of rels) {
65
- r.src = src;
66
- setDefault(setDefault(rrc, elr, {}), r.t, []).push(r);
52
+ /*
53
+ * Build and cache an inverse map of relationships for a given arcrole for
54
+ * efficient lookup of parents concept from a child.
55
+ *
56
+ * Map is arcrole => elr => target => [ rel, ... ]
57
+ *
58
+ * "rel" is modified to have a "src" property with the source concept.
59
+ */
60
+ _reverseRelationships(arcrole) {
61
+ if (!(arcrole in this._reverseRelationshipCache)) {
62
+ const rrc = {};
63
+ const elrs = this._reportData.rels[arcrole] || {};
64
+ for (const [elr, relSet] of Object.entries(elrs)) {
65
+ for (const [src, rels] of Object.entries(relSet)) {
66
+ for (const r of rels) {
67
+ r.src = src;
68
+ setDefault(setDefault(rrc, elr, {}), r.t, []).push(r);
69
+ }
67
70
  }
68
71
  }
72
+ this._reverseRelationshipCache[arcrole] = rrc;
69
73
  }
70
- this._reverseRelationshipCache[arcrole] = rrc;
74
+ return this._reverseRelationshipCache[arcrole];
71
75
  }
72
- return this._reverseRelationshipCache[arcrole];
73
- }
74
76
 
75
- XBRLReport.prototype.getParentRelationships = function(conceptName, arcrole) {
76
- const rels = {}
77
- for (const [elr, relSet] of Object.entries(this._reverseRelationships(arcrole))) {
78
- if (conceptName in relSet) {
79
- rels[elr] = relSet[conceptName];
77
+ getParentRelationships(conceptName, arcrole) {
78
+ const rels = {}
79
+ for (const [elr, relSet] of Object.entries(this._reverseRelationships(arcrole))) {
80
+ if (conceptName in relSet) {
81
+ rels[elr] = relSet[conceptName];
82
+ }
80
83
  }
84
+ return rels;
81
85
  }
82
- return rels;
83
- }
84
86
 
85
- XBRLReport.prototype.getParentRelationshipsInGroup = function(conceptName, arcrole, elr) {
86
- const relSet = this._reverseRelationships(arcrole)[elr] || {};
87
- return relSet[conceptName] || [];
88
- }
87
+ getParentRelationshipsInGroup(conceptName, arcrole, elr) {
88
+ const relSet = this._reverseRelationships(arcrole)[elr] || {};
89
+ return relSet[conceptName] || [];
90
+ }
89
91
 
90
- XBRLReport.prototype.dimensionDefault = function(dimensionName) {
91
- // ELR is irrelevant for dimension-default relationships, so check all of
92
- // them, and return the first (illegal for there to be more than one
93
- for (const rel of Object.values(this._reportData.rels["d-d"] || {})) {
94
- if (dimensionName in rel) {
95
- return rel[dimensionName][0].t;
92
+ dimensionDefault(dimensionName) {
93
+ // ELR is irrelevant for dimension-default relationships, so check all of
94
+ // them, and return the first (illegal for there to be more than one
95
+ for (const rel of Object.values(this._reportData.rels["d-d"] || {})) {
96
+ if (dimensionName in rel) {
97
+ return rel[dimensionName][0].t;
98
+ }
96
99
  }
100
+ return undefined;
97
101
  }
98
- return undefined;
99
- }
100
102
 
101
- XBRLReport.prototype.relationshipGroups = function(arcrole) {
102
- return Object.keys(this._reportData.rels[arcrole] || {});
103
- }
103
+ relationshipGroups(arcrole) {
104
+ return Object.keys(this._reportData.rels[arcrole] || {});
105
+ }
104
106
 
105
- XBRLReport.prototype.relationshipGroupRoots = function(arcrole, elr) {
106
- const roots = [];
107
- for (const conceptName in this._reportData.rels[arcrole][elr]) {
108
- if (!(elr in this.getParentRelationships(conceptName, arcrole))) {
109
- roots.push(conceptName);
107
+ relationshipGroupRoots(arcrole, elr) {
108
+ const roots = [];
109
+ for (const conceptName in this._reportData.rels[arcrole][elr]) {
110
+ if (!(elr in this.getParentRelationships(conceptName, arcrole))) {
111
+ roots.push(conceptName);
112
+ }
110
113
  }
114
+ return roots;
111
115
  }
112
- return roots;
113
- }
114
116
 
115
- XBRLReport.prototype.getAlignedFacts = function(f, coveredAspects) {
116
- // XXX should filter to current report facts?
117
- var all = this.reportSet.facts();
118
- var aligned = [];
119
- if (!coveredAspects) {
120
- coveredAspects = {};
121
- }
122
- $.each(all, function (i, ff) {
123
- if (ff.isAligned(f, coveredAspects)) {
124
- aligned.push(ff);
117
+ getAlignedFacts(f, coveredAspects) {
118
+ // XXX should filter to current report facts?
119
+ const all = this.reportSet.facts();
120
+ const aligned = [];
121
+ if (!coveredAspects) {
122
+ coveredAspects = {};
125
123
  }
126
- });
127
- return aligned;
128
- }
129
-
130
- XBRLReport.prototype.deduplicate = function (facts) {
131
- const ff = [];
132
- $.each(facts, function (i, f) {
133
- var dupe = false;
134
- $.each(ff, function (j, of) {
135
- if (of.isAligned(f,{})) {
136
- dupe = true;
124
+ for (const ff of all) {
125
+ if (ff.isAligned(f, coveredAspects)) {
126
+ aligned.push(ff);
137
127
  }
138
- });
139
- if (!dupe){
140
- ff.push(f);
141
128
  }
142
- });
143
- return ff;
144
- }
145
-
146
-
147
- XBRLReport.prototype.getConcept = function(name) {
148
- return new Concept(this, name);
149
- }
129
+ return aligned;
130
+ }
150
131
 
151
- XBRLReport.prototype.getRoleLabel = function(rolePrefix) {
152
- /* This is currently hard-coded to "en" as the generator does not yet
153
- * support generic labels, and instead provides the (non-localisable) role
154
- * definition as a single "en" label.
155
- *
156
- * Returns the ELR URI if there is no label
157
- */
158
- const labels = this._reportData.roleDefs[rolePrefix];
159
- if (labels !== undefined) {
160
- const label = labels["en"];
161
- // Earlier versions of the generator added a "null" label if no labels
162
- // were available.
163
- if (label !== undefined && label !== null) {
164
- return label;
132
+ deduplicate(facts) {
133
+ const ff = [];
134
+ for (const f of facts) {
135
+ let dupe = false;
136
+ for (const other of ff) {
137
+ if (other.isAligned(f,{})) {
138
+ dupe = true;
139
+ }
140
+ }
141
+ if (!dupe) {
142
+ ff.push(f);
143
+ }
165
144
  }
145
+ return ff;
166
146
  }
167
- return this.reportSet.roleMap()[rolePrefix];
168
- }
169
147
 
170
- XBRLReport.prototype.localDocuments = function() {
171
- if (this._reportData.localDocs === undefined) {
172
- return {}
148
+ getConcept(name) {
149
+ return new Concept(this, name);
173
150
  }
174
- return this._reportData.localDocs;
175
- }
176
151
 
177
- XBRLReport.prototype.qname = function(v) {
178
- return this.reportSet.qname(v);
179
- }
180
-
181
- XBRLReport.prototype.getScaleLabel = function(scale, isMonetaryValue, currency=null) {
182
- var label = i18next.t(`scale.${scale}`, {defaultValue:"noName"});
183
- if (isMonetaryValue && scale === -2) {
184
- label = i18next.t(`currencies:cents${currency}`, {defaultValue: label});
152
+ getRoleLabel(rolePrefix) {
153
+ /* This is currently hard-coded to "en" as the generator does not yet
154
+ * support generic labels, and instead provides the (non-localisable) role
155
+ * definition as a single "en" label.
156
+ *
157
+ * Returns the ELR URI if there is no label
158
+ */
159
+ const labels = this._reportData.roleDefs[rolePrefix];
160
+ if (labels !== undefined) {
161
+ const label = labels["en"];
162
+ // Earlier versions of the generator added a "null" label if no labels
163
+ // were available.
164
+ if (label !== undefined && label !== null) {
165
+ return label;
166
+ }
167
+ }
168
+ return this.reportSet.roleMap()[rolePrefix];
185
169
  }
186
- if (label === "noName") {
187
- return null;
170
+
171
+ localDocuments() {
172
+ if (this._reportData.localDocs === undefined) {
173
+ return {}
174
+ }
175
+ return this._reportData.localDocs;
188
176
  }
189
- return label;
190
- }
191
177
 
192
- XBRLReport.prototype.concepts = function() {
193
- return this._reportData.concepts;
194
- }
178
+ qname(v) {
179
+ return this.reportSet.qname(v);
180
+ }
195
181
 
196
- XBRLReport.prototype.getLabel = function(c, rolePrefix, showPrefix) {
197
- rolePrefix = rolePrefix || 'std';
198
- const lang = this.reportSet.viewerOptions.language;
199
- const concept = this._reportData.concepts[c];
200
- if (concept === undefined) {
201
- console.log("Attempt to get label for undefined concept: " + c);
202
- return "<no label>";
182
+ getScaleLabel(scale, isMonetaryValue, currency=null) {
183
+ let label = i18next.t(`scale.${scale}`, {defaultValue:"noName"});
184
+ if (isMonetaryValue && scale === -2) {
185
+ label = i18next.t(`currencies:cents${currency}`, {defaultValue: label});
186
+ }
187
+ if (label === "noName") {
188
+ return null;
189
+ }
190
+ return label;
203
191
  }
204
- const labels = concept.labels[rolePrefix]
205
- if (labels === undefined || Object.keys(labels).length == 0) {
206
- return undefined;
192
+
193
+ concepts() {
194
+ return this._reportData.concepts;
207
195
  }
208
- else {
209
- var label;
210
- if (lang && labels[lang]) {
211
- label = labels[lang];
212
- }
213
- else {
214
- // Fall back on English, then any label deterministically.
215
- label = labels["en"] || labels["en-us"] || labels[Object.keys(labels).sort()[0]];
196
+
197
+ getLabel(c, rolePrefix, showPrefix) {
198
+ rolePrefix = rolePrefix || 'std';
199
+ const lang = this.reportSet.viewerOptions.language;
200
+ const concept = this._reportData.concepts[c];
201
+ if (concept === undefined) {
202
+ console.log("Attempt to get label for undefined concept: " + c);
203
+ return "<no label>";
216
204
  }
217
- if (label === undefined) {
205
+ const labels = concept.labels[rolePrefix]
206
+ if (labels === undefined || Object.keys(labels).length == 0) {
218
207
  return undefined;
219
208
  }
220
- var s = '';
221
- if (showPrefix && this.reportSet.viewerOptions.showPrefixes) {
222
- s = "(" + this.qname(c).prefix + ") ";
209
+ else {
210
+ let label;
211
+ if (lang && labels[lang]) {
212
+ label = labels[lang];
213
+ }
214
+ else {
215
+ // Fall back on English, then any label deterministically.
216
+ label = labels["en"] || labels["en-us"] || labels[Object.keys(labels).sort()[0]];
217
+ }
218
+ if (label === undefined) {
219
+ return undefined;
220
+ }
221
+ let s = '';
222
+ if (showPrefix && this.reportSet.viewerOptions.showPrefixes) {
223
+ s = "(" + this.qname(c).prefix + ") ";
224
+ }
225
+ s += label;
226
+ return s;
223
227
  }
224
- s += label;
225
- return s;
226
228
  }
227
- }
228
229
 
229
- XBRLReport.prototype.getLabelOrName = function(c, rolePrefix, showPrefix) {
230
- const label = this.getLabel(c, rolePrefix, showPrefix);
231
- if (label === undefined) {
232
- return c;
230
+ getLabelOrName(c, rolePrefix, showPrefix) {
231
+ const label = this.getLabel(c, rolePrefix, showPrefix);
232
+ if (label === undefined) {
233
+ return c;
234
+ }
235
+ return label;
233
236
  }
234
- return label;
235
- }
236
237
 
237
- XBRLReport.prototype.isCalculationContributor = function(c) {
238
- if (this._calculationContributors === undefined) {
239
- if (this._reportData.rels?.calc) {
240
- this._calculationContributors = new Set(Object.values(this._reportData.rels.calc).flatMap(calculations => {
241
- return Object.values(calculations).flatMap(contributors => {
242
- return contributors.map(c => c.t);
243
- });
244
- }));
245
- } else {
246
- this._calculationContributors = new Set();
238
+ isCalculationContributor(c) {
239
+ if (this._calculationContributors === undefined) {
240
+ if (this._reportData.rels?.calc) {
241
+ this._calculationContributors = new Set(Object.values(this._reportData.rels.calc).flatMap(calculations => {
242
+ return Object.values(calculations).flatMap(contributors => {
243
+ return contributors.map(c => c.t);
244
+ });
245
+ }));
246
+ } else {
247
+ this._calculationContributors = new Set();
248
+ }
247
249
  }
250
+ return this._calculationContributors.has(c);
248
251
  }
249
- return this._calculationContributors.has(c);
250
- }
251
252
 
252
- XBRLReport.prototype.isCalculationSummation = function(c) {
253
- if (this._calculationSummations === undefined) {
254
- if (this._reportData.rels?.calc) {
255
- this._calculationSummations = new Set(Object.values(this._reportData.rels.calc).flatMap(calculations => {
256
- return Object.keys(calculations);
257
- }));
258
- } else {
259
- this._calculationSummations = new Set();
253
+ isCalculationSummation(c) {
254
+ if (this._calculationSummations === undefined) {
255
+ if (this._reportData.rels?.calc) {
256
+ this._calculationSummations = new Set(Object.values(this._reportData.rels.calc).flatMap(calculations => {
257
+ return Object.keys(calculations);
258
+ }));
259
+ } else {
260
+ this._calculationSummations = new Set();
261
+ }
260
262
  }
263
+ return this._calculationSummations.has(c);
261
264
  }
262
- return this._calculationSummations.has(c);
263
265
  }
@@ -101,12 +101,11 @@ export class ReportSet {
101
101
 
102
102
  namespaceGroups() {
103
103
  const counts = {};
104
- $.each(this.facts(), function (i, f) {
105
- counts[f.conceptQName().prefix] = counts[f.conceptQName().prefix] || 0;
106
- counts[f.conceptQName().prefix]++;
107
- });
104
+ for (const f of this.facts()) {
105
+ counts[f.conceptQName().prefix] = (counts[f.conceptQName().prefix] || 0) + 1;
106
+ }
108
107
  const prefixes = Object.keys(counts);
109
- prefixes.sort(function (a, b) { return counts[b] - counts[a] });
108
+ prefixes.sort((a, b) => counts[b] - counts[a]);
110
109
  return prefixes;
111
110
  }
112
111
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ixbrl-viewer
3
- Version: 1.4.5
3
+ Version: 1.4.6
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
@@ -293,6 +293,12 @@ This mode replaces the namespace-based highlighting with optional highlighting b
293
293
  |---------------------------|----------------|
294
294
  | `--viewer-feature-review` | `?review=true` |
295
295
 
296
+ # Disable viewer loading
297
+
298
+ Loading of the viewer can be disabled by specifying `?disable-viewer` as a
299
+ query parameter. This will leave the iXBRL document loaded in the browser, but
300
+ without any viewer functionality. In the case of an iXBRL document set, or
301
+ multi-document viewer, the first document will be shown.
296
302
 
297
303
  ## Running tests
298
304
 
@@ -1,5 +1,5 @@
1
1
  iXBRLViewerPlugin/__init__.py,sha256=uicpgRNpgHnYdyIVIhLpVqO3kC3pv5BHusutY5lSHKM,13921
2
- iXBRLViewerPlugin/_version.py,sha256=Q6unsBbzWHPRNufBzIDL-pvFPHC27FQ8CYCDAcnbQoY,160
2
+ iXBRLViewerPlugin/_version.py,sha256=rcHU37_iyVNYVuSTTj5Shc-mUDPpQw2cyeznRUHdnOc,160
3
3
  iXBRLViewerPlugin/constants.py,sha256=kJ-kjt6rGhwBvk8HNbIiXt31b5qe6Lb6qPOXQF6rH_8,833
4
4
  iXBRLViewerPlugin/featureConfig.py,sha256=tOViPYmN32i2uIf_T9HGgbkkv41VoTpTjqhn4w9rTgw,194
5
5
  iXBRLViewerPlugin/iXBRLViewer.py,sha256=aHcBcnGBu2X4dhdJmALBehJ9jUi29N5Ne_cuHIMmImk,28138
@@ -11,7 +11,7 @@ iXBRLViewerPlugin/viewer/version.js,sha256=7b5si8UmaS7QqALQIP-wJ0I8onKFox8VyaAiU
11
11
  iXBRLViewerPlugin/viewer/webpack.common.js,sha256=AsiOVAW2XbmSNjv6Kl6LC4VUM2rA9UyQ8vwhz_1jb1Y,1320
12
12
  iXBRLViewerPlugin/viewer/webpack.dev.js,sha256=R9AwY_TBrg9otvXpDxT1UsGg5eMqi4aXW7C7EIsHzZk,551
13
13
  iXBRLViewerPlugin/viewer/webpack.prod.js,sha256=vfLowWC1EOty0zbq9P-usGaJ3w-JoERpJrYaE9MfoSE,499
14
- iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js,sha256=Kov5vkmlCM2kRBouqb48kMCo4Ml1kQQkj2DGQ-VeoH4,861302
14
+ iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js,sha256=tbZncQHSEFAXd1nasN4f6j25eAD2rlZVMosatDMIMaY,860669
15
15
  iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt,sha256=eA5xbvB65RVR5QmweqeHe4sYtW3dzEmgLhUDFOGr9m4,1697
16
16
  iXBRLViewerPlugin/viewer/src/html/fact-details.html,sha256=P9BJw1OK4nIYfoT4KPwW1WP94ZeD7v1nisvSKMeSnU8,1495
17
17
  iXBRLViewerPlugin/viewer/src/html/footnote-details.html,sha256=9I7y0KM7xsPzbiZheuHkm1k4nHNXD8S9qxvD_Y0I1Us,278
@@ -74,7 +74,7 @@ iXBRLViewerPlugin/viewer/src/js/index.js,sha256=SdxunWx8kNw0-vwwnr58-ac1-eQIE1__
74
74
  iXBRLViewerPlugin/viewer/src/js/inspector.js,sha256=vSHr-pVjtviT72fzwAeJm7hbQw8iTQgQ1AzHje0odm8,45017
75
75
  iXBRLViewerPlugin/viewer/src/js/inspector.test.js,sha256=kKoYhBLjnFn3eJ8q1de3irK6tDgUVxcDKugIIURgp60,7814
76
76
  iXBRLViewerPlugin/viewer/src/js/interact.min.js,sha256=Yk0ZkCU3IZ0heGijAgUiNVkZ1Djq-MjvbS32DBSrdIs,85048
77
- iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js,sha256=0SUzo_y2FJDGkopm6bH2X-X0hRMmjvvoEI5hO1dX4Co,12055
77
+ iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js,sha256=3bQpJ_fUJzSQNjFizz6_7jJ5bKctwQq8Bb1sJB-HE2Y,13211
78
78
  iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js,sha256=ey61xTRZkP0Kf3W8DVQtZE-PeXwK4OOx51iLySMSBsY,2712
79
79
  iXBRLViewerPlugin/viewer/src/js/ixnode.js,sha256=C_9exfjf6BnARnHYeNY3RW0-RhxhCjsnn9woFLCjQPk,1575
80
80
  iXBRLViewerPlugin/viewer/src/js/menu.js,sha256=uUpL-zmgqGZZJPQwdFBYoPxSixyCRNFZBoAjyeMbPsA,3198
@@ -88,9 +88,9 @@ iXBRLViewerPlugin/viewer/src/js/outline.test.js,sha256=GJtAB_1Yj-sxoiNQJOZUjSuVJ
88
88
  iXBRLViewerPlugin/viewer/src/js/period.js,sha256=D9zXSOr19trWCmHizgCe5DQ612HB6IlAWmI5Rh4I8ZM,2267
89
89
  iXBRLViewerPlugin/viewer/src/js/period.test.js,sha256=nMamproI2VukUnO0wm3SKQA_rnjwNkwkzyn4uhke0kc,5417
90
90
  iXBRLViewerPlugin/viewer/src/js/qname.js,sha256=6MqMBbgziuPPNHKS3UUGyYIgHWygaAIf0mcpK95hwT8,282
91
- iXBRLViewerPlugin/viewer/src/js/report.js,sha256=zHNOvuJpHafXPQ6hPlaqpWBKOaAt89ejoaG13Ya3bIY,8329
91
+ iXBRLViewerPlugin/viewer/src/js/report.js,sha256=6A9it4-1mIIGBgwDdVLRG0BUyS8OljodHuXhBqmchF8,8567
92
92
  iXBRLViewerPlugin/viewer/src/js/report.test.js,sha256=tedkrEUoUrFv9_zfU3ekJT-HQNEOVH8PftxgJof0saQ,5041
93
- iXBRLViewerPlugin/viewer/src/js/reportset.js,sha256=uGtvRGH8FpwAt0oauxFaHiXYooUrMaAsi-OpIbnU9AE,7891
93
+ iXBRLViewerPlugin/viewer/src/js/reportset.js,sha256=CyxZvUrNxFY3lXzHCioWcIbEfUe2IxnFF-SHiM77MDM,7824
94
94
  iXBRLViewerPlugin/viewer/src/js/reportset.test.js,sha256=ZSXsojqB_aWpNq5XUoMlfKG5KsUtZTb7UtaGX1_-Hrs,12573
95
95
  iXBRLViewerPlugin/viewer/src/js/search.js,sha256=M7rZ7IVqzUbsLusgbu2ohhLnaRRigAVYJ2Bb8jmjKPQ,5490
96
96
  iXBRLViewerPlugin/viewer/src/js/search.test.js,sha256=YGUrgxKjNC0CoY9CJm5FbpBi5tepqMcGriIv7fw19aQ,20925
@@ -148,10 +148,10 @@ tests/unit_tests/iXBRLViewerPlugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
148
148
  tests/unit_tests/iXBRLViewerPlugin/mock_arelle.py,sha256=Dm11pBwEqDmcCc4mkxNciFEEM_DbgtzQ2QYNP1y_ImE,1307
149
149
  tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py,sha256=arjJXU5jWkh_JmEuZIGXVJ0Ory6_uGUvPcQLM9o6TZA,31583
150
150
  tests/unit_tests/iXBRLViewerPlugin/test_xhtmlserialize.py,sha256=BQNN1sC899sZzV1RN3wuFj9uwi8ioaRJcONxTiTdfZM,12570
151
- ixbrl_viewer-1.4.5.dist-info/LICENSE,sha256=TZJhu77S_2-WQcPAkuIAlQiuuiNqVcuHBjd7z3Y5S08,16645
152
- ixbrl_viewer-1.4.5.dist-info/METADATA,sha256=UsDgv0_hpxznSysDktB-Nb9qF2q-AQ-We3ZvGrrtm2U,14182
153
- ixbrl_viewer-1.4.5.dist-info/NOTICE,sha256=-SHDY0OY7s4gm4Rdk5AB3nbnUsrdHEHPdJuGFR_vuM4,566
154
- ixbrl_viewer-1.4.5.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
155
- ixbrl_viewer-1.4.5.dist-info/entry_points.txt,sha256=2XUzP20WGwxdvnugdBybUBwAB3xf_zvrOR5W_smFz_4,65
156
- ixbrl_viewer-1.4.5.dist-info/top_level.txt,sha256=h8MkrMhC_t2-KbfS1oxJVnFAbn5NZJH8END_BL40mv8,24
157
- ixbrl_viewer-1.4.5.dist-info/RECORD,,
151
+ ixbrl_viewer-1.4.6.dist-info/LICENSE,sha256=TZJhu77S_2-WQcPAkuIAlQiuuiNqVcuHBjd7z3Y5S08,16645
152
+ ixbrl_viewer-1.4.6.dist-info/METADATA,sha256=Fq1s4E-n7YRO497GKFztwi_V23VAJInsyRr4tzr7HAo,14496
153
+ ixbrl_viewer-1.4.6.dist-info/NOTICE,sha256=-SHDY0OY7s4gm4Rdk5AB3nbnUsrdHEHPdJuGFR_vuM4,566
154
+ ixbrl_viewer-1.4.6.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
155
+ ixbrl_viewer-1.4.6.dist-info/entry_points.txt,sha256=2XUzP20WGwxdvnugdBybUBwAB3xf_zvrOR5W_smFz_4,65
156
+ ixbrl_viewer-1.4.6.dist-info/top_level.txt,sha256=h8MkrMhC_t2-KbfS1oxJVnFAbn5NZJH8END_BL40mv8,24
157
+ ixbrl_viewer-1.4.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.2)
2
+ Generator: bdist_wheel (0.41.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5