ixbrl-viewer 1.4.12__tar.gz → 1.4.14__tar.gz

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 (231) hide show
  1. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/workflows/node-tests.yml +2 -1
  2. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/workflows/puppeteer.yml +3 -2
  3. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/workflows/python-package.yml +2 -2
  4. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/workflows/python-tests.yml +2 -0
  5. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/Makefile +1 -1
  6. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/PKG-INFO +6 -5
  7. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/README.md +2 -2
  8. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/__init__.py +26 -26
  9. ixbrl-viewer-1.4.14/iXBRLViewerPlugin/_version.py +16 -0
  10. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/constants.py +2 -1
  11. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/iXBRLViewer.py +8 -3
  12. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/ui.py +5 -4
  13. ixbrl-viewer-1.4.14/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +2 -0
  14. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/viewer.js +6 -8
  15. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/common.less +3 -3
  16. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/inspector.less +2 -2
  17. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/viewer.less +12 -12
  18. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/ixbrl_viewer.egg-info/PKG-INFO +6 -5
  19. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/ixbrl_viewer.egg-info/requires.txt +2 -2
  20. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/package-lock.json +257 -237
  21. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/package.json +1 -1
  22. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/pyproject.toml +5 -7
  23. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/build-viewer.py +1 -1
  24. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/unit_tests/iXBRLViewerPlugin/mock_arelle.py +2 -1
  25. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/unit_tests/iXBRLViewerPlugin/test_iXBRLViewer.py +97 -96
  26. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/unit_tests/iXBRLViewerPlugin/test_xhtmlserialize.py +11 -11
  27. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tox.ini +6 -5
  28. ixbrl-viewer-1.4.12/iXBRLViewerPlugin/_version.py +0 -4
  29. ixbrl-viewer-1.4.12/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js +0 -2
  30. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.babelrc +0 -0
  31. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  32. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  33. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/ISSUE_TEMPLATE/questions.yml +0 -0
  34. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/ISSUE_TEMPLATE/request.yml +0 -0
  35. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  36. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/dependabot.yml +0 -0
  37. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/release-drafter.yml +0 -0
  38. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/workflows/npm-package.yml +0 -0
  39. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/workflows/release-drafter.yml +0 -0
  40. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.github/workflows/release.yml +0 -0
  41. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/.gitignore +0 -0
  42. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/ARCHITECTURE.md +0 -0
  43. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/CODEOWNERS +0 -0
  44. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/COPYRIGHT.md +0 -0
  45. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/LICENSE +0 -0
  46. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/MANIFEST.in +0 -0
  47. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/NOTICE +0 -0
  48. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/PLUGINS.md +0 -0
  49. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/README.md +0 -0
  50. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630.xsd +0 -0
  51. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_cal.xml +0 -0
  52. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_d2.htm +0 -0
  53. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_def.xml +0 -0
  54. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_g1.jpg +0 -0
  55. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_lab.xml +0 -0
  56. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/clx-20220630_pre.xml +0 -0
  57. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex21subsidiaries.htm +0 -0
  58. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex23accountingfirmc.htm +0 -0
  59. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex311ceocertificati.htm +0 -0
  60. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex312cfocertificati.htm +0 -0
  61. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex32ceocfocertifica.htm +0 -0
  62. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/fy22clxex992reconofeconomi.htm +0 -0
  63. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/clorox-2022-10-K-ixbrl-viewer/ixbrl-viewer.htm +0 -0
  64. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/example_plugin/README.md +0 -0
  65. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/example_plugin/example-plugin.gif +0 -0
  66. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/example_plugin/extended-viewer.js +0 -0
  67. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/example_plugin/index.js +0 -0
  68. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/example_plugin/package-lock.json +0 -0
  69. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/example_plugin/package.json +0 -0
  70. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/example_plugin/webpack.config.js +0 -0
  71. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/ixbrl-viewer-demo.gif +0 -0
  72. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/review-mode.png +0 -0
  73. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/workiva-january-2023-8-k-ixbrl-viewer/exhibit31abylawsofworkivai.htm +0 -0
  74. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/workiva-january-2023-8-k-ixbrl-viewer/exhibit31bbylawsofworkivai.htm +0 -0
  75. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/workiva-january-2023-8-k-ixbrl-viewer/ixbrl-viewer.htm +0 -0
  76. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109.xsd +0 -0
  77. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109_lab.xml +0 -0
  78. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/examples/workiva-january-2023-8-k-ixbrl-viewer/wk-20230109_pre.xml +0 -0
  79. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/featureConfig.py +0 -0
  80. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/stubviewer.html +0 -0
  81. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/dist/ixbrlviewer.js.LICENSE.txt +0 -0
  82. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/i18next-parser.config.js +0 -0
  83. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/html/fact-details.html +0 -0
  84. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/html/footnote-details.html +0 -0
  85. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/html/inspector.html +0 -0
  86. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/i18n/en/currencies.json +0 -0
  87. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/i18n/en/referenceparts.json +0 -0
  88. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/i18n/en/translation.json +0 -0
  89. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/i18n/es/currencies.json +0 -0
  90. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/i18n/es/referenceparts.json +0 -0
  91. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/i18n/es/translation.json +0 -0
  92. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/arrow-down.svg +0 -0
  93. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/arrow-up.svg +0 -0
  94. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/chevron-down.svg +0 -0
  95. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/chevron-left.svg +0 -0
  96. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/chevron-right.svg +0 -0
  97. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/chevron-up.svg +0 -0
  98. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/clipboard.svg +0 -0
  99. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/close.svg +0 -0
  100. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/cog.svg +0 -0
  101. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/dimension-member.svg +0 -0
  102. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/dimension.svg +0 -0
  103. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/download.svg +0 -0
  104. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/filter.svg +0 -0
  105. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/graph.svg +0 -0
  106. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/member.svg +0 -0
  107. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/outline.svg +0 -0
  108. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/print.svg +0 -0
  109. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/question.svg +0 -0
  110. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/search.svg +0 -0
  111. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/select.svg +0 -0
  112. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/summary.svg +0 -0
  113. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/tag.svg +0 -0
  114. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/text-block.svg +0 -0
  115. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/tick.svg +0 -0
  116. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/icons/warning.svg +0 -0
  117. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/img/arelle.svg +0 -0
  118. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/img/favicon.ico +0 -0
  119. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/img/inline-viewer.png +0 -0
  120. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/img/inline-viewer.svg +0 -0
  121. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.png +0 -0
  122. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/img/powered-by-workiva.svg +0 -0
  123. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/accordian.js +0 -0
  124. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/aspect.js +0 -0
  125. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/aspect.test.js +0 -0
  126. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/calculations.js +0 -0
  127. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/chart.js +0 -0
  128. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/chart.test.js +0 -0
  129. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/concept.js +0 -0
  130. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/concept.test.js +0 -0
  131. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/dialog.js +0 -0
  132. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/docOrderIndex.js +0 -0
  133. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/fact.js +0 -0
  134. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/fact.test.js +0 -0
  135. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/factset.js +0 -0
  136. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/factset.test.js +0 -0
  137. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/footnote.js +0 -0
  138. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/identifiers.js +0 -0
  139. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/identifiers.test.js +0 -0
  140. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/index.js +0 -0
  141. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/inspector.js +0 -0
  142. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/inspector.test.js +0 -0
  143. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/interact.min.js +0 -0
  144. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.js +0 -0
  145. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/ixbrlviewer.test.js +0 -0
  146. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/ixnode.js +0 -0
  147. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/menu.js +0 -0
  148. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/messagebox.js +0 -0
  149. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/moment-jest.js +0 -0
  150. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/number-matcher-preprocess.test.js +0 -0
  151. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/number-matcher.js +0 -0
  152. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/number-matcher.test.js +0 -0
  153. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/outline.js +0 -0
  154. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/outline.test.js +0 -0
  155. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/period.js +0 -0
  156. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/period.test.js +0 -0
  157. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/qname.js +0 -0
  158. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/report.js +0 -0
  159. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/report.test.js +0 -0
  160. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/reportset.js +0 -0
  161. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/reportset.test.js +0 -0
  162. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/search.js +0 -0
  163. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/search.test.js +0 -0
  164. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/summary.js +0 -0
  165. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/summary.test.js +0 -0
  166. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/tableExport.js +0 -0
  167. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/test-utils.js +0 -0
  168. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/textblockviewer.js +0 -0
  169. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/unit.js +0 -0
  170. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/unit.test.js +0 -0
  171. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/util.js +0 -0
  172. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/util.test.js +0 -0
  173. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/validationreport.js +0 -0
  174. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/js/viewerOptions.js +0 -0
  175. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/accordian.less +0 -0
  176. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/block-list.less +0 -0
  177. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/chart.less +0 -0
  178. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/clearfix.less +0 -0
  179. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/colours.less +0 -0
  180. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/components.less +0 -0
  181. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/core.less +0 -0
  182. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/dialog.less +0 -0
  183. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/fonts.less +0 -0
  184. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/form-controls.less +0 -0
  185. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/icons.less.njk +0 -0
  186. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/loader.less +0 -0
  187. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/menu.less +0 -0
  188. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/summary.less +0 -0
  189. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/tabs.less +0 -0
  190. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/text-block-viewer.less +0 -0
  191. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/text-mixins.less +0 -0
  192. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/src/less/validation-report.less +0 -0
  193. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/tools/build-font.js +0 -0
  194. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/version.js +0 -0
  195. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/webpack.common.js +0 -0
  196. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/webpack.dev.js +0 -0
  197. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/viewer/webpack.prod.js +0 -0
  198. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/iXBRLViewerPlugin/xhtmlserialize.py +0 -0
  199. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/ixbrl_viewer.egg-info/SOURCES.txt +0 -0
  200. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/ixbrl_viewer.egg-info/dependency_links.txt +0 -0
  201. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/ixbrl_viewer.egg-info/entry_points.txt +0 -0
  202. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/ixbrl_viewer.egg-info/top_level.txt +0 -0
  203. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/jest.config.json +0 -0
  204. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/Makefile +0 -0
  205. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/Makefile-src +0 -0
  206. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/fetch-sample-files.py +0 -0
  207. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/sample-files.list +0 -0
  208. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/src/continuation/continuation.html +0 -0
  209. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/src/ixds-test/document1.html +0 -0
  210. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/src/ixds-test/faurecia.html +0 -0
  211. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/src/ixds-test/valeo.html +0 -0
  212. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/src/scrollable-div/scrollable-div.html +0 -0
  213. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/samples/src/xbrl-invalid-tests/xbrl-invalid-test.html +0 -0
  214. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/setup.cfg +0 -0
  215. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/__init__.py +0 -0
  216. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/framework/core_elements.js +0 -0
  217. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/framework/page_objects/doc_frame.js +0 -0
  218. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/framework/page_objects/fact_details_panel.js +0 -0
  219. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/framework/page_objects/search_panel.js +0 -0
  220. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/framework/page_objects/toolbar.js +0 -0
  221. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/framework/utils.js +0 -0
  222. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/framework/viewer_page.js +0 -0
  223. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/puppeteer_test_run_via_intellij.jpg +0 -0
  224. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/test_filings/filing_documents_smoke_test.zip +0 -0
  225. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/test_filings/highlights.zip +0 -0
  226. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/tests/fact_properties.test.js +0 -0
  227. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/tests/highlight.test.js +0 -0
  228. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/tests/search.test.js +0 -0
  229. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/puppeteer/tools/generate.sh +0 -0
  230. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/unit_tests/__init__.py +0 -0
  231. {ixbrl-viewer-1.4.12 → ixbrl-viewer-1.4.14}/tests/unit_tests/iXBRLViewerPlugin/__init__.py +0 -0
@@ -5,6 +5,7 @@ on:
5
5
  branches:
6
6
  - master
7
7
  workflow_call:
8
+ workflow_dispatch:
8
9
 
9
10
  permissions: {}
10
11
 
@@ -18,9 +19,9 @@ jobs:
18
19
  - ubuntu-22.04
19
20
  - windows-2022
20
21
  node-version:
21
- - '16'
22
22
  - '18'
23
23
  - '20'
24
+ - '21'
24
25
  runs-on: ${{ matrix.os }}
25
26
  steps:
26
27
  - uses: actions/checkout@v4.1.1
@@ -4,6 +4,7 @@ on:
4
4
  pull_request:
5
5
  branches:
6
6
  - master
7
+ workflow_dispatch:
7
8
 
8
9
  permissions: {}
9
10
 
@@ -17,11 +18,11 @@ jobs:
17
18
  - ubuntu-22.04
18
19
  - windows-2022
19
20
  node-version:
20
- - '16'
21
21
  - '18'
22
22
  - '20'
23
+ - '21'
23
24
  python-version:
24
- - '3.11'
25
+ - '3.12'
25
26
  runs-on: ${{ matrix.os }}
26
27
  steps:
27
28
  - uses: actions/checkout@v4.1.1
@@ -9,7 +9,7 @@ on:
9
9
  required: false
10
10
  type: string
11
11
  python_version:
12
- default: '3.11'
12
+ default: '3.12'
13
13
  description: 'Python version to use'
14
14
  required: false
15
15
  type: string
@@ -21,7 +21,7 @@ on:
21
21
  required: true
22
22
  type: string
23
23
  python_version:
24
- default: '3.11'
24
+ default: '3.12'
25
25
  description: 'Python version to use'
26
26
  required: true
27
27
  type: string
@@ -5,6 +5,7 @@ on:
5
5
  branches:
6
6
  - master
7
7
  workflow_call:
8
+ workflow_dispatch:
8
9
 
9
10
  permissions: {}
10
11
 
@@ -22,6 +23,7 @@ jobs:
22
23
  - '3.9'
23
24
  - '3.10'
24
25
  - '3.11'
26
+ - '3.12'
25
27
  runs-on: ${{ matrix.os }}
26
28
  steps:
27
29
  - uses: actions/checkout@v4.1.1
@@ -37,7 +37,7 @@ iXBRLViewerPlugin/viewer/dist/ixbrl_viewer.js: iXBRLViewerPlugin/viewer/src/*/*
37
37
  test: testplugin testviewer
38
38
 
39
39
  testplugin:
40
- nose2
40
+ pytest tests/unit_tests
41
41
 
42
42
  Arelle:
43
43
  git clone https://github.com/Arelle/Arelle.git Arelle
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ixbrl-viewer
3
- Version: 1.4.12
3
+ Version: 1.4.14
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
@@ -23,6 +23,7 @@ Classifier: Programming Language :: Python :: 3.8
23
23
  Classifier: Programming Language :: Python :: 3.9
24
24
  Classifier: Programming Language :: Python :: 3.10
25
25
  Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
26
27
  Classifier: Operating System :: OS Independent
27
28
  Classifier: Topic :: Text Processing :: Markup :: XML
28
29
  Requires-Python: >=3.8
@@ -34,10 +35,10 @@ Requires-Dist: pycountry<24,>=22
34
35
  Provides-Extra: arelle
35
36
  Requires-Dist: arelle_release==2.*; extra == "arelle"
36
37
  Provides-Extra: dev
37
- Requires-Dist: flake8==6.1.0; extra == "dev"
38
+ Requires-Dist: flake8==7.0.0; extra == "dev"
38
39
  Requires-Dist: lxml-stubs==0.4.0; extra == "dev"
39
40
  Requires-Dist: mypy==1.8.0; extra == "dev"
40
- Requires-Dist: nose2==0.14.0; extra == "dev"
41
+ Requires-Dist: pytest==7.4.4; extra == "dev"
41
42
  Requires-Dist: typing-extensions==4.9.0; extra == "dev"
42
43
 
43
44
  # Arelle iXBRL Viewer
@@ -80,7 +81,7 @@ contains all of the JavaScript that runs the viewer functionality.
80
81
 
81
82
  ## Installation
82
83
 
83
- The Python portion of this repo is developed using Python 3.11.
84
+ The Python portion of this repo is developed using Python 3.12.
84
85
 
85
86
  1. Clone the [iXBRL Viewer git repository][ixbrlviewer-github].
86
87
  2. Download and install [Arelle][arelle-download]
@@ -314,7 +315,7 @@ Run the following command to run javascript unit tests: `npm run test`
314
315
 
315
316
  In order to run the python unit tests make sure that you have pip installed requirements-dev.txt.
316
317
 
317
- Run the following command to run python unit tests: `nose2`
318
+ Run the following command to run python unit tests: `pytest tests/unit_tests`
318
319
 
319
320
  ### Running Puppeteer tests
320
321
 
@@ -38,7 +38,7 @@ contains all of the JavaScript that runs the viewer functionality.
38
38
 
39
39
  ## Installation
40
40
 
41
- The Python portion of this repo is developed using Python 3.11.
41
+ The Python portion of this repo is developed using Python 3.12.
42
42
 
43
43
  1. Clone the [iXBRL Viewer git repository][ixbrlviewer-github].
44
44
  2. Download and install [Arelle][arelle-download]
@@ -272,7 +272,7 @@ Run the following command to run javascript unit tests: `npm run test`
272
272
 
273
273
  In order to run the python unit tests make sure that you have pip installed requirements-dev.txt.
274
274
 
275
- Run the following command to run python unit tests: `nose2`
275
+ Run the following command to run python unit tests: `pytest tests/unit_tests`
276
276
 
277
277
  ### Running Puppeteer tests
278
278
 
@@ -9,7 +9,6 @@ import sys
9
9
  import tempfile
10
10
  import traceback
11
11
  from optparse import OptionGroup, OptionParser
12
- from typing import Optional, Union
13
12
 
14
13
  from arelle import Cntlr
15
14
  from arelle.LocalViewer import LocalViewer
@@ -18,7 +17,7 @@ from arelle.webserver.bottle import static_file
18
17
 
19
18
  from .constants import CONFIG_FEATURE_PREFIX, CONFIG_LAUNCH_ON_LOAD, \
20
19
  CONFIG_SCRIPT_URL, DEFAULT_LAUNCH_ON_LOAD, DEFAULT_OUTPUT_NAME, \
21
- DEFAULT_VIEWER_PATH, FEATURE_CONFIGS
20
+ DEFAULT_JS_FILENAME, DEFAULT_VIEWER_PATH, FEATURE_CONFIGS
22
21
  from .iXBRLViewer import IXBRLViewerBuilder, IXBRLViewerBuilderError
23
22
 
24
23
 
@@ -96,13 +95,14 @@ def iXBRLViewerCommandLineOptionExtender(parser, *args, **kwargs):
96
95
 
97
96
  def generateViewer(
98
97
  cntlr: Cntlr,
99
- saveViewerDest: Union[io.BytesIO, str],
98
+ saveViewerDest: io.BytesIO | str | None,
100
99
  viewerURL: str = DEFAULT_VIEWER_PATH,
101
100
  showValidationMessages: bool = False,
102
101
  useStubViewer: bool = False,
103
102
  zipViewerOutput: bool = False,
104
- features: Optional[list[str]] = None,
105
- packageDownloadURL: str = None):
103
+ features: list[str] | None = None,
104
+ packageDownloadURL: str | None = None,
105
+ ) -> None:
106
106
  """
107
107
  Generate and save a viewer at the given destination (file, directory, or in-memory file) with the given viewer URL.
108
108
  If the viewer URL is a location on the local file system, a copy will be placed included in the output destination.
@@ -115,6 +115,8 @@ def generateViewer(
115
115
  :param features: List of feature names to enable via generated JSON data.
116
116
  """
117
117
  # extend XBRL-loaded run processing for this option
118
+ if saveViewerDest is None:
119
+ return
118
120
  if (cntlr.modelManager is None
119
121
  or len(cntlr.modelManager.loadedModelXbrls) == 0
120
122
  or any(not mx.modelDocument for mx in cntlr.modelManager.loadedModelXbrls)):
@@ -142,17 +144,15 @@ def generateViewer(
142
144
  copyScriptPath = viewerURL
143
145
  viewerURL = os.path.basename(viewerURL)
144
146
  try:
145
- out = saveViewerDest
146
- if out:
147
- viewerBuilder = IXBRLViewerBuilder(cntlr.modelManager.loadedModelXbrls)
148
- if features:
149
- for feature in features:
150
- viewerBuilder.enableFeature(feature)
151
- iv = viewerBuilder.createViewer(scriptUrl=viewerURL, showValidations=showValidationMessages, useStubViewer=useStubViewer, packageDownloadURL=packageDownloadURL)
152
- if iv is not None:
153
- iv.save(out, zipOutput=zipViewerOutput, copyScriptPath=copyScriptPath)
147
+ viewerBuilder = IXBRLViewerBuilder(cntlr.modelManager.loadedModelXbrls)
148
+ if features:
149
+ for feature in features:
150
+ viewerBuilder.enableFeature(feature)
151
+ iv = viewerBuilder.createViewer(scriptUrl=viewerURL, showValidations=showValidationMessages, useStubViewer=useStubViewer, packageDownloadURL=packageDownloadURL)
152
+ if iv is not None:
153
+ iv.save(saveViewerDest, zipOutput=zipViewerOutput, copyScriptPath=copyScriptPath)
154
154
  except IXBRLViewerBuilderError as ex:
155
- print(ex.message)
155
+ print(ex)
156
156
  except Exception as ex:
157
157
  cntlr.addToLog("Exception {} \nTraceback {}".format(ex, traceback.format_tb(sys.exc_info()[2])))
158
158
 
@@ -170,7 +170,7 @@ def getAbsoluteViewerPath(saveViewerPath: str, relativeViewerPath: str) -> str:
170
170
  return os.path.join(saveViewerDir, relativeViewerPath)
171
171
 
172
172
 
173
- def getFeaturesFromOptions(options: Union[argparse.Namespace, OptionParser]):
173
+ def getFeaturesFromOptions(options: argparse.Namespace | OptionParser):
174
174
  return [
175
175
  featureConfig.key
176
176
  for featureConfig in FEATURE_CONFIGS
@@ -206,7 +206,7 @@ def iXBRLViewerSaveCommand(cntlr):
206
206
  generateViewer(
207
207
  cntlr,
208
208
  dialog.filename(),
209
- dialog.scriptUrl(),
209
+ dialog.scriptUrl() or DEFAULT_VIEWER_PATH,
210
210
  zipViewerOutput=dialog.zipViewerOutput(),
211
211
  features=dialog.features()
212
212
  )
@@ -249,23 +249,23 @@ def commandLineRun(*args, **kwargs):
249
249
  class iXBRLViewerLocalViewer(LocalViewer):
250
250
  # plugin-specific local file handler
251
251
  def getLocalFile(self, file, relpath, request):
252
- _report, _sep, _file = file.partition("/")
253
- if file == 'ixbrlviewer.js':
254
- return static_file('ixbrlviewer.js', os.path.dirname(DEFAULT_VIEWER_PATH))
255
- elif _report.isnumeric(): # in reportsFolder folder
252
+ if file == DEFAULT_JS_FILENAME:
253
+ return static_file(DEFAULT_JS_FILENAME, os.path.dirname(DEFAULT_VIEWER_PATH))
254
+ _report, _, _file = file.partition("/")
255
+ if _report.isnumeric(): # in reportsFolder folder
256
256
  # check if file is in the current or parent directory
257
257
  _fileDir = self.reportsFolders[int(_report)]
258
258
  _fileExists = False
259
259
  if os.path.exists(os.path.join(_fileDir, _file)):
260
260
  _fileExists = True
261
- elif "/" in _file and os.path.exists(os.path.join(_fileDir, os.path.filepart(_file))):
261
+ elif "/" in _file and os.path.exists(os.path.join(_fileDir, os.path.basename(_file))):
262
262
  # xhtml in a subdirectory for output files may refer to an image file in parent directory
263
263
  _fileExists = True
264
- _file = os.path.filepart(_file)
264
+ _file = os.path.basename(_file)
265
265
  if not _fileExists:
266
266
  self.cntlr.addToLog("http://localhost:{}/{}".format(self.port, file), messageCode="localViewer:fileNotFound", level=logging.DEBUG)
267
267
  return static_file(_file, root=_fileDir, headers=self.noCacheHeaders) # extra_headers modification to py-bottle
268
- return static_file(file, root="/") # probably can't get here unless path is wrong
268
+ return static_file(file, root="/") # absolute path used for ixbrlviewer.js.
269
269
 
270
270
 
271
271
  def guiRun(cntlr, modelXbrl, attach, *args, **kwargs):
@@ -286,7 +286,7 @@ def guiRun(cntlr, modelXbrl, attach, *args, **kwargs):
286
286
  generateViewer(
287
287
  cntlr,
288
288
  saveViewerDest=tempViewer.name,
289
- viewerURL=cntlr.config.setdefault(CONFIG_SCRIPT_URL, DEFAULT_VIEWER_PATH),
289
+ viewerURL=cntlr.config.get(CONFIG_SCRIPT_URL) or DEFAULT_VIEWER_PATH,
290
290
  useStubViewer=True,
291
291
  features=features
292
292
  )
@@ -296,7 +296,7 @@ def guiRun(cntlr, modelXbrl, attach, *args, **kwargs):
296
296
  except Exception as ex:
297
297
  modelXbrl.error(
298
298
  "viewer:exception",
299
- "Exception %(exception)s \sTraceback %(traceback)s",
299
+ "Exception %(exception)s \nTraceback %(traceback)s",
300
300
  modelObject=modelXbrl, exception=ex, traceback=traceback.format_tb(sys.exc_info()[2])
301
301
  )
302
302
 
@@ -0,0 +1,16 @@
1
+ # file generated by setuptools_scm
2
+ # don't change, don't track in version control
3
+ TYPE_CHECKING = False
4
+ if TYPE_CHECKING:
5
+ from typing import Tuple, Union
6
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
7
+ else:
8
+ VERSION_TUPLE = object
9
+
10
+ version: str
11
+ __version__: str
12
+ __version_tuple__: VERSION_TUPLE
13
+ version_tuple: VERSION_TUPLE
14
+
15
+ __version__ = version = '1.4.14'
16
+ __version_tuple__ = version_tuple = (1, 4, 14)
@@ -13,7 +13,8 @@ CONFIG_ZIP_OUTPUT = 'iXBRLViewerZipOutput'
13
13
 
14
14
  DEFAULT_LAUNCH_ON_LOAD = True
15
15
  DEFAULT_OUTPUT_NAME = 'ixbrlviewer.html'
16
- DEFAULT_VIEWER_PATH = os.path.join(os.path.dirname(__file__), "viewer", "dist", "ixbrlviewer.js")
16
+ DEFAULT_JS_FILENAME = 'ixbrlviewer.js'
17
+ DEFAULT_VIEWER_PATH = os.path.join(os.path.dirname(__file__), "viewer", "dist", DEFAULT_JS_FILENAME)
17
18
 
18
19
  FEATURE_CONFIGS = [
19
20
  FeatureConfig(
@@ -12,7 +12,6 @@ import urllib.parse
12
12
  import zipfile
13
13
  from collections import defaultdict
14
14
  from copy import deepcopy
15
- from typing import Optional, Union
16
15
 
17
16
  import pycountry
18
17
  from arelle import XbrlConst
@@ -390,7 +389,13 @@ class IXBRLViewerBuilder:
390
389
  self.taxonomyData["sourceReports"].append(sourceReport)
391
390
  return sourceReport
392
391
 
393
- def createViewer(self, scriptUrl: str = DEFAULT_VIEWER_PATH, useStubViewer: bool = False, showValidations: bool = True, packageDownloadURL: str = None) -> Optional[iXBRLViewer]:
392
+ def createViewer(
393
+ self,
394
+ scriptUrl: str = DEFAULT_VIEWER_PATH,
395
+ useStubViewer: bool = False,
396
+ showValidations: bool = True,
397
+ packageDownloadURL: str | None = None,
398
+ ) -> iXBRLViewer | None:
394
399
  """
395
400
  Create an iXBRL file with XBRL data as a JSON blob, and script tags added.
396
401
  :param scriptUrl: The `src` value of the script tag that loads the viewer script.
@@ -526,7 +531,7 @@ class iXBRLViewer:
526
531
  def addFilingDoc(self, filingDocuments):
527
532
  self.filingDocuments = filingDocuments
528
533
 
529
- def save(self, destination: Union[io.BytesIO, str], zipOutput: bool = False, copyScriptPath: Optional[str] = None):
534
+ def save(self, destination: io.BytesIO | str, zipOutput: bool = False, copyScriptPath: str | None = None):
530
535
  """
531
536
  Save the iXBRL viewer.
532
537
  :param destination: The target that viewer data/files will be written to (path to file/directory, or a file object itself).
@@ -10,8 +10,9 @@ import os
10
10
 
11
11
  from .constants import CONFIG_FEATURE_PREFIX, CONFIG_FILE_DIRECTORY, CONFIG_LAUNCH_ON_LOAD, \
12
12
  CONFIG_OUTPUT_FILE, CONFIG_SCRIPT_URL, CONFIG_ZIP_OUTPUT, DEFAULT_LAUNCH_ON_LOAD, \
13
- DEFAULT_VIEWER_PATH, GUI_FEATURE_CONFIGS
13
+ GUI_FEATURE_CONFIGS
14
14
 
15
+ UNSET_SCRIPT_URL = ''
15
16
 
16
17
  class BaseViewerDialog(Toplevel):
17
18
  """
@@ -28,7 +29,7 @@ class BaseViewerDialog(Toplevel):
28
29
  featureVar.set(self.cntlr.config.setdefault(f'{CONFIG_FEATURE_PREFIX}{featureConfig.key}', featureConfig.guiDefault))
29
30
  self._features[featureConfig.key] = featureVar
30
31
  self._scriptUrl = StringVar()
31
- self._scriptUrl.set(self.cntlr.config.setdefault(CONFIG_SCRIPT_URL, DEFAULT_VIEWER_PATH))
32
+ self._scriptUrl.set(self.cntlr.config.setdefault(CONFIG_SCRIPT_URL, UNSET_SCRIPT_URL))
32
33
 
33
34
  def addButtons(self, frame: Frame, x: int, y: int) -> int:
34
35
  """
@@ -56,7 +57,7 @@ class BaseViewerDialog(Toplevel):
56
57
  :return: Row `y` that the last field was added on
57
58
  """
58
59
  y += 1
59
- scriptUrlLabel = Label(frame, text="Script URL")
60
+ scriptUrlLabel = Label(frame, text="Script URL (leave blank for default)")
60
61
  scriptUrlEntry = Entry(frame, textvariable=self._scriptUrl, width=80)
61
62
  scriptUrlLabel.grid(row=y, column=0, sticky=W, pady=3, padx=3)
62
63
  scriptUrlEntry.grid(row=y, column=1, columnspan=2, sticky=EW, pady=3, padx=3)
@@ -247,6 +248,6 @@ class SettingsDialog(BaseViewerDialog):
247
248
  Resets dialog variable values to default values
248
249
  """
249
250
  self._launchOnLoad.set(DEFAULT_LAUNCH_ON_LOAD)
250
- self._scriptUrl.set(DEFAULT_VIEWER_PATH)
251
+ self._scriptUrl.set(UNSET_SCRIPT_URL)
251
252
  for featureConfig in GUI_FEATURE_CONFIGS:
252
253
  self._features[featureConfig.key].set(featureConfig.guiDefault)