strictdoc 0.0.49a3__tar.gz → 0.0.49a5__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.
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/PKG-INFO +1 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/__init__.py +1 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/excel/export/excel_generator.py +14 -11
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/document.py +3 -1
- strictdoc-0.0.49a5/strictdoc/backend/sdoc/models/document_view.py +79 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/processor.py +0 -23
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/validations/sdoc_validator.py +29 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/writer.py +3 -2
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/cli/cli_arg_parser.py +3 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/cli/command_parser_builder.py +5 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/project_config.py +2 -0
- strictdoc-0.0.49a5/strictdoc/export/html/_static/html2pdf/bundle.js +1 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document.py +6 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document_deep_trace.py +6 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document_pdf.py +6 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document_trace.py +6 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/comments/index.jinja +1 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/meta/index.jinja +1 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/multiline/index.jinja +1 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/rationale/index.jinja +1 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/statement/index.jinja +1 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/pdf/index.jinja +2 -2
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html2pdf/html2pdf.py +63 -4
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/routers/main_router.py +31 -12
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/tasks.py +5 -1
- strictdoc-0.0.49a3/strictdoc/backend/sdoc/models/document_view.py +0 -30
- strictdoc-0.0.49a3/strictdoc/export/html/_static/html2pdf/bundle.js +0 -1
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/.gitignore +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/CHANGELOG.md +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/CONTRIBUTING.md +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/Dockerfile +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/LICENSE +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/NOTICE +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/README.md +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/docs_extra/DO178_requirements.sdoc +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/docs_extra/Zephyr_requirements.sdoc +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/drafts/requirements/strictdoc.toml +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/drafts/strictdoc_low_level_requirements.sdoc_.sdoc +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/mypy.ini +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/pyproject.toml +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/requirements.bootstrap.txt +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/requirements.check.txt +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/ruff.toml +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/excel/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/excel/excel_import.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/excel/export/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/excel/import_/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/excel/import_/excel_to_sdoc_converter.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/p01_sdoc/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/p01_sdoc/reqif_to_sdoc_converter.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/p01_sdoc/sdoc_to_reqif_converter.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/p11_polarion/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/p11_polarion/reqif_to_sdoc_converter.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/reqif_export.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/reqif_import.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/reqif/sdoc_reqif_fields.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/document_reference.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/error_handling.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/errors/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/errors/document_tree_error.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/free_text_reader.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/grammar/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/grammar/grammar.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/grammar/grammar_builder.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/grammar/type_system.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/include_reader.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/anchor.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/constants.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/document_bibliography.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/document_config.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/document_grammar.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/fragment.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/fragment_from_file.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/free_text.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/inline_link.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/node.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/object_factory.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/reference.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/requirement.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/section.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/models/type_system.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/reader.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/validations/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/validations/requirement.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc_source_code/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc_source_code/grammar.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc_source_code/models/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc_source_code/models/range_marker.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc_source_code/models/requirement_marker.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc_source_code/models/source_file_info.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc_source_code/reader.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/cli/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/cli/argument_int_range.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/cli/main.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/commands/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/commands/about_command.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/commands/diff_command.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/commands/dump_grammar_command.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/commands/manage_autouid_command.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/commands/version_command.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/actions/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/actions/export_action.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/actions/import_action.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/actions/passthrough_action.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/analyzers/document_stats.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/analyzers/document_uid_analyzer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/document_finder.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/document_iterator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/document_meta.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/document_tree.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/document_tree_iterator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/environment.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/file_traceability_index.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/file_tree.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/finders/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/finders/source_files_finder.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/graph/abstract_bucket.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/graph/many_to_many_set.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/graph/one_to_one_dictionary.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/graph/validations.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/graph_database.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/level_counter.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/query_engine/grammar.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/query_engine/query_object.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/query_engine/query_reader.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/source_tree.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/traceability_index.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/traceability_index_builder.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/constants.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/create_requirement.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/delete_section.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/section.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/update_document_config.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/update_free_text.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/update_grammar.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/update_requirement.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/transforms/validation_error.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/core/tree_cycle_detector.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/document_dot_generator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/dot_templates.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile1/document.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile1/folder.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile1/legend.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile1/requirement.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile1/section.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile1/top_level.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile2/document.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile2/folder.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile2/requirement.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile2/section.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/dot/templates/profile2/top_level.dot +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/autogen.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/base.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/content.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/anchor_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/collapsible_list_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/copy_to_clipboard_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/deletable_field_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/draggable_list_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/dropdown_menu_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/editable_field_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/modal_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/movable_field_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/scroll_into_view_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/controllers/tabs_controller.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/diff.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/diff.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/element.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/favicon.ico +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/form.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/layout.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/node.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/pan_with_space.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/requirement-tree.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/requirement.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/requirement__temporary.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/requirements-coverage.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/resizable_bar.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/source-code-coverage.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/source.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/stimulus.min.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/table_vew.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/toc_highlighting.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/traceability_matrix.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/tree.css +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/turbo.min.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static/viewtype_menu.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/LICENSE-MATHJAX +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/tex.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mathjax/tex-mml-chtml.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/mermaid/mermaid.min.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/_static_extra/rapidoc/rapidoc-min.js +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/document_type.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/form_objects/document_config_form_object.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/form_objects/document_grammar_form_object.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/form_objects/requirement_form_object.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/form_objects/section_form_object.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document_table.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document_tree.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/project_statistics.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/source_file_coverage.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/source_file_view_generator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/traceability_matrix.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/html_generator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/html_templates.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/renderers/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/renderers/html_fragment_writer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/renderers/link_renderer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/renderers/markup_renderer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/renderers/text_to_html_writer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg__separator.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_add.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_anchor.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_back.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_book.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_close.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_code.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_copy.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_delete.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_diff.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_document.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_done.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_expand.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_folder.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_folder_sm.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_go_to_doc.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_index.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_list.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_maximize.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_minimize.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_minusminus.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_move_down.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_move_up.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_plusplus.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_project.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_reset.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_search.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_source.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_stat.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_sync.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_toc.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_res/svg_ico16_tree.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_shared/nav.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_shared/requirement_block/files_tree.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_shared/requirement_tree_left.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_shared/requirement_tree_right.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/_shared/tags.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/_shared/stream_refresh_document.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/_shared/stream_updated_toc.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/add_requirement_comment/stream_add_requirement_comment.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/add_requirement_relation/stream_add_requirement_relation.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/create_requirement/stream_cancel_new_requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/create_requirement/stream_created_requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/create_requirement/stream_new_requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/create_section/stream_cancel_new_section.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/create_section/stream_created_section.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/create_section/stream_new_section.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_confirm_delete_requirement.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/delete_requirement/stream_delete_requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/delete_section/stream_confirm_delete_section.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/delete_section/stream_delete_section.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_cancel_edit_document_config.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_edit_document_config.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_document_config/stream_save_document_config.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_add_grammar_field.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_add_grammar_relation.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_edit_document_grammar.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_document_grammar/stream_save_document_grammar.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_edit_requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_requirement/stream_update_requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_section/stream_edit_section.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/edit_section/stream_updated_section.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/document/move_node/stream_update_document_content.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/node/show_full_node/stream_show_full_requirement.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/node/show_full_node/stream_show_full_section.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_form_import_reqif_document.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/project_index/import_reqif_document/stream_refresh_with_imported_reqif_document.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/project_index/stream_create_document.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/actions/project_index/stream_new_document.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/base.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/abstract/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/abstract/pdf.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/anchor/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/badge/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/button/cancel.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/button/confirm.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/button/delete.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/button/diff.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/button/search.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/button/submit.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/confirm/_usage_example.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/confirm/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/document_title/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/field/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/field/contenteditable/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/field/file/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/field/text/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/field_action_button/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/row/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/example.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/frame.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/row/row_uid_with_reset/stream.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/row/row_with_comment.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/row/row_with_relation.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/row/row_with_text_field.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/form/search.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/grammar_form/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/grammar_form/row_with_custom_field.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/grammar_form/row_with_relation.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/grammar_form/row_with_reserved_field.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/header/_usage_example.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/header/header_pagetype.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/header/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/meta/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/modal/_usage_example.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/modal/form.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/modal/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/node/card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/node/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/node/node_controls/card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/node/node_controls/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/node/root.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/card_extends_card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/files/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/index_extends_node.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/links/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/pdf.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/tiny.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/tiny_extends_card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/title/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/title/pdf.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/requirement/uid/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/resizable_bar/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/card_extends_card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/h/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/h/pdf.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/index_extends_node.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/pdf.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/text/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/tiny.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/tiny_extends_card.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/title/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/section/uid/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/components/table_key_value/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/rst/anchor.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/frame_header_document_title.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/frame_show_full_requirement.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/frame_show_full_section.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/frame_toc.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/project_tree.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_project_tree.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/resizable_bar_with_toc.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/toc.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/_shared/viewtype_menu.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/actions.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/frame_document_config.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/frame_document_config_edit.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/frame_document_content.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/frame_requirement_form.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/frame_section_form.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/document/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/pdf/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/pdf/template/footer.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/pdf/template/frontpage.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/pdf/template/header.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/pdf/toc.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/table/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/table/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/traceability/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/traceability/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/traceability_deep/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/document/traceability_deep/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/changelog_content.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/diff_content.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/diff_controls.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/fields/document_fields.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/fields/requirement_fields.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/fields/section_fields.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/form.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/frame_changelog_result.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/frame_diff_result.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/legend.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/nav_tabs.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/node/requirement.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/node/section.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/skeleton.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/git/sync/button.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_index/actions.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_index/frame_form_import_reqif.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_index/frame_form_new_document.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_index/frame_project_tree.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_index/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_index/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_statistics/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/project_statistics/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/search/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/search/legend.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/search/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/source_file_coverage/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/source_file_coverage/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/source_file_view/aside.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/source_file_view/header__source_file_name.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/source_file_view/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/source_file_view/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/source_file_view/requirement.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/traceability_matrix/file.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/traceability_matrix/index.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/traceability_matrix/main.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/traceability_matrix/project_tree_flat_anchor_list.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/traceability_matrix/requirement.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/screens/traceability_matrix/resizable_bar_with_project_tree.jinja +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/templates/websocket.jinja.html +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/tools/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/tools/html_embedded.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html2pdf/html2pdf_generator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html2pdf/pdf_print_driver.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/directives/raw_html_role.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/directives/wildcard_enhanced_image.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/document_rst_generator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/rst_templates.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/rst_to_html_fragment_writer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/templates/requirement.jinja.rst +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/rst/writer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/spdx/spdx_generator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/spdx/spdx_sdoc_container.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/spdx/spdx_to_sdoc_converter.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/git/change.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/git/change_generator.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/git/git_client.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/git/project_diff_analyzer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/auto_described.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/cast.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/diff.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/exception.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/file_modification_time.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/file_system.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/form_data.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/git_client.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/math.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/md5.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/mid.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/ordered_set.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/parallelizer.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/path_filter.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/pickle.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/rst.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/sha256.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/shard.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/sorting.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/string.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/textx.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/helpers/timing.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/__init__.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/app.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/config.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/error_object.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/main.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/routers/other_router.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/server/server.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc.toml +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/tasks_wine.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/tools/confluence_html_table_import.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/tools/link_health.py +0 -0
- {strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: strictdoc
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.49a5
|
4
4
|
Summary: StrictDoc is open-source software for technical documentation and requirements management.
|
5
5
|
Project-URL: Changelog, https://github.com/strictdoc-project/strictdoc/blob/main/CHANGELOG.md
|
6
6
|
Project-URL: Homepage, https://strictdoc.readthedocs.io/en/stable/
|
@@ -69,7 +69,7 @@ class ExcelGenerator:
|
|
69
69
|
workbook.set_properties(
|
70
70
|
{
|
71
71
|
"title": project_config.project_title,
|
72
|
-
"comments": "Created with StrictDoc",
|
72
|
+
"comments": "Created with StrictDoc.",
|
73
73
|
}
|
74
74
|
)
|
75
75
|
|
@@ -108,16 +108,19 @@ class ExcelGenerator:
|
|
108
108
|
columns[field][MAX_WIDTH_KEY] = len(
|
109
109
|
ref.ref_uid
|
110
110
|
)
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
111
|
+
if ref.ref_uid in req_uid_rows:
|
112
|
+
worksheet.write_url(
|
113
|
+
row,
|
114
|
+
idx,
|
115
|
+
(
|
116
|
+
"internal:"
|
117
|
+
f"'{EXCEL_SHEET_NAME}'"
|
118
|
+
f"!A{req_uid_rows[ref.ref_uid]}"
|
119
|
+
),
|
120
|
+
string=ref.ref_uid,
|
121
|
+
)
|
122
|
+
else:
|
123
|
+
worksheet.write(row, idx, ref.ref_uid)
|
121
124
|
elif field_uc in ("COMMENT", "COMMENTS"):
|
122
125
|
# Using a transition marker to separate multiple
|
123
126
|
# comments
|
@@ -34,7 +34,9 @@ class Document: # pylint: disable=too-many-instance-attributes
|
|
34
34
|
if config is not None
|
35
35
|
else DocumentConfig.default_config(self)
|
36
36
|
)
|
37
|
-
self.view:
|
37
|
+
self.view: DocumentView = (
|
38
|
+
view if view is not None else DocumentView.create_default(self)
|
39
|
+
)
|
38
40
|
self.grammar: Optional[DocumentGrammar] = grammar
|
39
41
|
self.bibliography: Optional[DocumentBibliography] = bibliography
|
40
42
|
self.free_texts: List[FreeText] = free_texts
|
@@ -0,0 +1,79 @@
|
|
1
|
+
from typing import List, Optional
|
2
|
+
|
3
|
+
from strictdoc.backend.sdoc.models.type_system import (
|
4
|
+
ViewElementField,
|
5
|
+
ViewElementHiddenTag,
|
6
|
+
ViewElementTags,
|
7
|
+
)
|
8
|
+
from strictdoc.helpers.auto_described import auto_described
|
9
|
+
|
10
|
+
|
11
|
+
@auto_described()
|
12
|
+
class ViewElement:
|
13
|
+
def __init__(
|
14
|
+
self,
|
15
|
+
parent,
|
16
|
+
view_id: str,
|
17
|
+
tags: List[ViewElementTags],
|
18
|
+
hidden_tags: Optional[List[ViewElementHiddenTag]],
|
19
|
+
name: Optional[str],
|
20
|
+
):
|
21
|
+
self.parent = parent
|
22
|
+
self.view_id: str = view_id
|
23
|
+
self.tags: List[ViewElementTags] = tags
|
24
|
+
self.hidden_tags: Optional[List[ViewElementHiddenTag]] = hidden_tags
|
25
|
+
self.name: Optional[str] = name
|
26
|
+
|
27
|
+
def includes_field(self, requirement_type: str, field_name: str) -> bool:
|
28
|
+
for tag_ in self.tags:
|
29
|
+
if tag_.object_type == requirement_type:
|
30
|
+
field_: ViewElementField
|
31
|
+
for field_ in tag_.visible_fields:
|
32
|
+
if field_.name == field_name:
|
33
|
+
return True
|
34
|
+
break
|
35
|
+
return False
|
36
|
+
|
37
|
+
|
38
|
+
@auto_described()
|
39
|
+
class DefaultViewElement(ViewElement):
|
40
|
+
"""
|
41
|
+
FIXME: It is not great to provide a default implementation this way but it
|
42
|
+
works fine for now.
|
43
|
+
"""
|
44
|
+
|
45
|
+
def includes_field(self, requirement_type: str, field_name: str) -> bool: # noqa: ARG002
|
46
|
+
return True
|
47
|
+
|
48
|
+
|
49
|
+
@auto_described()
|
50
|
+
class DocumentView:
|
51
|
+
def __init__(self, parent, views: List[ViewElement]):
|
52
|
+
self.parent = parent
|
53
|
+
self.views: List[ViewElement] = views
|
54
|
+
|
55
|
+
@staticmethod
|
56
|
+
def create_default(parent) -> "DocumentView":
|
57
|
+
return DocumentView(
|
58
|
+
parent,
|
59
|
+
[
|
60
|
+
DefaultViewElement(
|
61
|
+
parent=parent,
|
62
|
+
view_id="NOT_RELEVANT",
|
63
|
+
tags=[],
|
64
|
+
hidden_tags=[],
|
65
|
+
name=None,
|
66
|
+
)
|
67
|
+
],
|
68
|
+
)
|
69
|
+
|
70
|
+
def get_default_view(self) -> ViewElement:
|
71
|
+
return self.views[0]
|
72
|
+
|
73
|
+
def get_current_view(self, view_id: Optional[str]) -> ViewElement:
|
74
|
+
if view_id is None:
|
75
|
+
return self.get_default_view()
|
76
|
+
for view_element_ in self.views:
|
77
|
+
if view_element_.view_id == view_id:
|
78
|
+
return view_element_
|
79
|
+
raise NotImplementedError
|
@@ -67,29 +67,6 @@ class SDocParsingProcessor:
|
|
67
67
|
self.parse_context.document_grammar = document_grammar
|
68
68
|
|
69
69
|
def process_document_view(self, document_view: DocumentView):
|
70
|
-
for view in document_view.views:
|
71
|
-
for tag in view.tags:
|
72
|
-
if (
|
73
|
-
tag.object_type
|
74
|
-
not in self.parse_context.document_grammar.registered_elements
|
75
|
-
):
|
76
|
-
raise StrictDocSemanticError.view_references_nonexisting_grammar_element(
|
77
|
-
view,
|
78
|
-
tag.object_type,
|
79
|
-
**get_location(document_view),
|
80
|
-
)
|
81
|
-
for field in tag.visible_fields:
|
82
|
-
for (
|
83
|
-
grammar_element
|
84
|
-
) in self.parse_context.document_grammar.elements:
|
85
|
-
if field.name not in grammar_element.fields_map:
|
86
|
-
raise StrictDocSemanticError.view_references_nonexisting_field(
|
87
|
-
view,
|
88
|
-
tag.object_type,
|
89
|
-
field.name,
|
90
|
-
**get_location(document_view),
|
91
|
-
)
|
92
|
-
|
93
70
|
self.parse_context.document_view = document_view
|
94
71
|
|
95
72
|
def process_section(self, section: Section):
|
{strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/backend/sdoc/validations/sdoc_validator.py
RENAMED
@@ -1,8 +1,11 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
|
1
3
|
from textx import get_location
|
2
4
|
|
3
5
|
from strictdoc.backend.sdoc.error_handling import StrictDocSemanticError
|
4
6
|
from strictdoc.backend.sdoc.models.document import Document
|
5
7
|
from strictdoc.backend.sdoc.models.document_config import DocumentConfig
|
8
|
+
from strictdoc.backend.sdoc.models.document_view import DocumentView
|
6
9
|
|
7
10
|
|
8
11
|
class SDocValidator:
|
@@ -17,6 +20,7 @@ class SDocValidator:
|
|
17
20
|
@staticmethod
|
18
21
|
def validate_document(document: Document):
|
19
22
|
SDocValidator._validate_document_config(document)
|
23
|
+
SDocValidator._validate_document_view(document)
|
20
24
|
|
21
25
|
@staticmethod
|
22
26
|
def _validate_document_config(document: Document):
|
@@ -36,3 +40,28 @@ class SDocValidator:
|
|
36
40
|
document_config.default_view,
|
37
41
|
**get_location(document_config),
|
38
42
|
)
|
43
|
+
|
44
|
+
@staticmethod
|
45
|
+
def _validate_document_view(document: Document):
|
46
|
+
document_view: Optional[DocumentView] = document.view
|
47
|
+
if document_view is not None:
|
48
|
+
for view in document_view.views:
|
49
|
+
for tag in view.tags:
|
50
|
+
if (
|
51
|
+
tag.object_type
|
52
|
+
not in document.grammar.registered_elements
|
53
|
+
):
|
54
|
+
raise StrictDocSemanticError.view_references_nonexisting_grammar_element(
|
55
|
+
view,
|
56
|
+
tag.object_type,
|
57
|
+
**get_location(document_view),
|
58
|
+
)
|
59
|
+
for field in tag.visible_fields:
|
60
|
+
for grammar_element in document.grammar.elements:
|
61
|
+
if field.name not in grammar_element.fields_map:
|
62
|
+
raise StrictDocSemanticError.view_references_nonexisting_field(
|
63
|
+
view,
|
64
|
+
tag.object_type,
|
65
|
+
field.name,
|
66
|
+
**get_location(document_view),
|
67
|
+
)
|
@@ -8,6 +8,7 @@ from strictdoc.backend.sdoc.models.document_bibliography import (
|
|
8
8
|
)
|
9
9
|
from strictdoc.backend.sdoc.models.document_config import DocumentConfig
|
10
10
|
from strictdoc.backend.sdoc.models.document_grammar import DocumentGrammar
|
11
|
+
from strictdoc.backend.sdoc.models.document_view import DefaultViewElement
|
11
12
|
from strictdoc.backend.sdoc.models.inline_link import InlineLink
|
12
13
|
from strictdoc.backend.sdoc.models.reference import (
|
13
14
|
BibReference,
|
@@ -138,9 +139,9 @@ class SDWriter:
|
|
138
139
|
output += "\n"
|
139
140
|
|
140
141
|
document_view = document.view
|
141
|
-
|
142
|
+
assert len(document_view.views) > 0
|
143
|
+
if not isinstance(document_view.views[0], DefaultViewElement):
|
142
144
|
views = document_view.views
|
143
|
-
assert len(views) > 0
|
144
145
|
output += "VIEWS:"
|
145
146
|
output += "\n"
|
146
147
|
for view in views:
|
@@ -128,6 +128,7 @@ class ExportCommandConfig: # pylint: disable=too-many-instance-attributes
|
|
128
128
|
filter_sections: Optional[str],
|
129
129
|
reqif_profile: Optional[str],
|
130
130
|
experimental_enable_file_traceability,
|
131
|
+
view: Optional[str],
|
131
132
|
):
|
132
133
|
assert isinstance(input_paths, list), f"{input_paths}"
|
133
134
|
self.input_paths: List[str] = input_paths
|
@@ -144,6 +145,7 @@ class ExportCommandConfig: # pylint: disable=too-many-instance-attributes
|
|
144
145
|
self.experimental_enable_file_traceability = (
|
145
146
|
experimental_enable_file_traceability
|
146
147
|
)
|
148
|
+
self.view: Optional[str] = view
|
147
149
|
self.output_html_root: str = os.path.join(output_dir, "html")
|
148
150
|
|
149
151
|
def get_path_to_config(self) -> Optional[str]:
|
@@ -267,6 +269,7 @@ class SDocArgsParser:
|
|
267
269
|
self.args.filter_sections,
|
268
270
|
self.args.reqif_profile,
|
269
271
|
self.args.experimental_enable_file_traceability,
|
272
|
+
self.args.view,
|
270
273
|
)
|
271
274
|
|
272
275
|
def get_import_config_reqif(self, _) -> ImportReqIFCommandConfig:
|
@@ -195,6 +195,11 @@ class CommandParserBuilder:
|
|
195
195
|
type=str,
|
196
196
|
help="Filter which sections will be exported.",
|
197
197
|
)
|
198
|
+
command_parser_export.add_argument(
|
199
|
+
"--view",
|
200
|
+
type=str,
|
201
|
+
help="Choose which view will be exported.",
|
202
|
+
)
|
198
203
|
add_config_argument(command_parser_export)
|
199
204
|
|
200
205
|
@staticmethod
|
@@ -136,6 +136,7 @@ class ProjectConfig: # pylint: disable=too-many-instance-attributes
|
|
136
136
|
datetime.datetime
|
137
137
|
] = config_last_update
|
138
138
|
self.is_running_on_server: bool = False
|
139
|
+
self.view: Optional[str] = None
|
139
140
|
|
140
141
|
@staticmethod
|
141
142
|
def default_config(environment: SDocRuntimeEnvironment):
|
@@ -175,6 +176,7 @@ class ProjectConfig: # pylint: disable=too-many-instance-attributes
|
|
175
176
|
self.filter_requirements = export_config.filter_requirements
|
176
177
|
self.filter_sections = export_config.filter_sections
|
177
178
|
self.excel_export_fields = export_config.fields
|
179
|
+
self.view = export_config.view
|
178
180
|
|
179
181
|
if (
|
180
182
|
export_config.enable_mathjax
|
@@ -0,0 +1 @@
|
|
1
|
+
(()=>{"use strict";const e={init:"[html2pdf]",pageDivider:"html2pdf-page",pageStartMarker:"[html2pdf-page-start]",contentFlowStart:"html2pdf-content-flow-start",contentFlowEnd:"html2pdf-content-flow-end",style:"[html2pdf-style]",footerTemplate:"[html2pdf-footer]",headerTemplate:"[html2pdf-header]",frontpageTemplate:"[html2pdf-frontpage]",frontpageContent:"html2pdf-frontpage",headerContent:"html2pdf-header",footerContent:"html2pdf-footer",pageNumberRoot:"[html2pdf-page-number]",pageNumberCurrent:"[html2pdf-page-number-current]",pageNumberTotal:"[html2pdf-page-number-total]",root:"html2pdf-root",paperFlow:"html2pdf-paper-flow",contentFlow:"html2pdf-content-flow",virtualPaper:"html2pdf-virtual-paper",virtualPaperTopMargin:"html2pdf-virtual-paper-margin-top",virtualPaperBottomMargin:"html2pdf-virtual-paper-margin-bottom",virtualPaperGap:"html2pdf-virtual-paper-gap",paperBody:"html2pdf-paper-body",paperHeader:"html2pdf-paper-header",paperFooter:"html2pdf-paper-footer",runningSafety:"html2pdf-print-running",printPageBreak:"html2pdf-print-page-break",printIgnore:"[html2pdf-print-ignore]",printHide:"[html2pdf-print-hide]",splitted:"[html2pdf-splitted]",neutral:"html2pdf-neutral",textNode:"html2pdf-text-node",textLine:"html2pdf-text-line",textGroup:"html2pdf-text-group",complexTextBlock:"html2pdf-complex-text-block",printForcedPageBreak:"html2pdf-print-forced-page-break",flagNoBreak:"[html2pdf-flag-no-break]",flagNoHanging:"[html2pdf-flag-no-hanging]",topCutPart:".html2pdf-top-cut",bottomCutPart:".html2pdf-bottom-cut",tocPageNumber:"html2pdf-toc-page-number"};class t{constructor({DOM:e,debugMode:t}){this.document=e,this.body=e.body,this._debugMode=t,this._debugToggler={_DOM:!1}}createElement(e){return this.document.createElement(e)}createDocumentFragment(){return this.document.createDocumentFragment()}cloneNode(e){return e?.cloneNode(!0)}cloneNodeWrapper(e){return e?.cloneNode(!1)}insertBefore(e,...t){e.before(...t)}insertAfter(e,...t){e.after(...t)}insertAtEnd(e,...t){e.append(...t)}insertAtStart(e,...t){e.prepend(...t)}insertInsteadOf(e,...t){e.before(...t),e.remove()}removeNode(e){e.remove()}getElement(e,t=this.document){return t.querySelector(e)}getAllElements(e,t=this.document){return t.querySelectorAll(e)}getElementById(e,t=this.document){return t.getElementById(e)}getRightNeighbor(e){return e.nextElementSibling}getLeftNeighbor(e){return e.previousElementSibling}getParentNode(e){return e.parentElement}getNodeValue(e){return e.nodeValue}getLastElementChild(e){return e.lastElementChild}getFirstElementChild(e){return e.firstElementChild}getChildNodes(e){return e.childNodes}getChildren(e){return e.children}getElementOffsetParent(e){return e.offsetParent}getComputedStyle(e){return window.getComputedStyle(e)}getElementBCR(e){return e.getBoundingClientRect()}getElementOffsetLeft(e){return e?.offsetLeft}getElementOffsetHeight(e){return e?.offsetHeight}getElementOffsetWidth(e){return e?.offsetWidth}getElementOffsetTop(e){return e?.offsetTop}getElementOffsetBottom(e){return e.offsetTop+e.offsetHeight||void 0}getElementTagName(e){return e.tagName}getDataId(e){return e.dataset.id}getAttribute(e,t){if(!e||!t)return void(this._debugMode&&this._debugToggler._DOM&&console.warn("getAttribute() must have 2 params"));const o=t.charAt(0);if("."!==o&&"#"!==o||this._debugMode&&this._debugToggler._DOM&&console.log(`you're really sure ${t} is attribute selector?`),"["===o){this._debugMode&&this._debugToggler._DOM&&console.assert("]"===t.at(-1),`the ${t} selector is not OK.`);const o=t.substring(1,t.length-1);return e.getAttribute(o)}e.getAttribute(t)}setAttribute(e,t,o){if(!e||!t)return void(this._debugMode&&this._debugToggler._DOM&&console.warn("setAttribute() must have 2 params"));const s=t.charAt(0);if("."!==s)if("#"!==s)if("["!==s)this._debugMode&&this._debugToggler._DOM&&console.log(`you're really sure ${t} is a selector?`);else{this._debugMode&&this._debugToggler._DOM&&console.assert("]"===t.at(-1),`the ${t} selector is not OK.`);const s=t.substring(1,t.length-1);e.setAttribute(s,o||"")}else{const o=t.substring(1);e.id=o}else{const o=t.substring(1);e.classList.add(o)}}setStyles(e,t){Object.entries(t).forEach((([t,o])=>e.style[t]=o))}addClasses(e,...t){e.classList.add(...t)}removeAttribute(e,t){if(!e||!t)return void(this._debugMode&&this._debugToggler._DOM&&console.warn("removeAttribute() must have 2 params"));const o=t.charAt(0);if(console.assert(o.match(/[a-zA-Z#\[\.]/),`removeAttribute() expects a valid selector, but received ${t}`),"."!==o)if("#"!==o)if("["!==o)e.removeAttribute(attr);else{this._debugMode&&this._debugToggler._DOM&&console.assert("]"===t.at(-1),`the ${t} selector is not OK.`);const o=t.substring(1,t.length-1);e.removeAttribute(o)}else{const o=t.substring(1);e.removeAttribute(o)}else{const o=t.substring(1);e.classList.remove(o)}}removeAllAttributes(e){for(;e.attributes.length>0;)e.removeAttribute(e.attributes[0].name)}removeClasses(e,...t){e.classList.remove(...t)}removeAllClasses(e){e.classList=""}removeAllStyles(e){e.style=""}getInnerHTML(e){if("string"==typeof e){const t=this.document.querySelector(e);return t?t.innerHTML:void 0}return e.innerHTML}setInnerHTML(e,t){if("string"==typeof e){const o=this.document.querySelector(e);o&&(o.innerHTML=t)}e.innerHTML=t}isDocumentBody(e){return"BODY"===e.tagName}isTextNode(e){return e.nodeType===Node.TEXT_NODE}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}hasClass(e,t){return e.classList.contains(t)}hasID(e,t){return e.id===t}hasAttribute(e,t){return e.hasAttribute(t)}}class o{constructor(e){this.config=e,this.charWidth="10px"}create(){return this._baseStyle()+this._testStyle()}_baseStyle(){return`\n\n@page {\n size: A4;\n /* 2 values: width then height */\n size: ${this.config.printWidth} ${this.config.printHeight};\n\n margin-left: ${this.config.printLeftMargin};\n margin-right: ${this.config.printRightMargin};\n margin-top: ${this.config.printTopMargin};\n margin-bottom: 0; /* hack */\n}\n\n${e.root} {\n /* reset user styles */\n display: block;\n\n /* for proper printable flow positioning */\n position: relative;\n\n /* to compensate for possible BG in the parent node */\n z-index: 1;\n\n /* set print styles: affects previews */\n margin: 0 auto;\n width: calc(${this.config.printWidth} - ${this.config.printLeftMargin} - ${this.config.printRightMargin});\n font-size: ${this.config.printFontSize};\n\n /* protection against unpredictability of margins */\n padding-top: .1px;\n padding-bottom: calc(2 * ${this.config.virtualPagesGap});\n}\n\n${e.contentFlowStart},\n${e.contentFlowEnd},\n${e.pageDivider} {\n display: block;\n}\n\n${e.virtualPaper} {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: minmax(min-content, max-content) minmax(min-content, max-content) 1fr minmax(min-content, max-content) minmax(min-content, max-content);\n place-items: stretch stretch;\n place-content: stretch stretch;\n width: calc(${this.config.printWidth} - ${this.config.printLeftMargin} - ${this.config.printRightMargin});\n height: ${this.config.printHeight};\n font-size: ${this.config.printFontSize};\n}\n\n${e.virtualPaper}::before {\n position: absolute;\n content: '';\n width: ${this.config.printWidth};\n height: ${this.config.printHeight};\n left: -${this.config.printLeftMargin};\n background-color: #fff;\n box-shadow: rgba(0, 0, 0, 0.1) 2px 2px 12px 0px;\n z-index: -1;\n}\n\n${e.paperFooter},\n${e.paperHeader} {\n display: block;\n position: relative;\n}\n\n${e.headerContent},\n${e.footerContent} {\n display: block;\n font-size: small;\n}\n\n${e.headerContent} p,\n${e.footerContent} p {\n margin: 0;\n}\n\n${e.headerContent} {\n padding-bottom: ${this.config.headerMargin};\n /* padding-top: 1px; */\n /* Page numbers: */\n padding-top: 10px;\n}\n\n${e.footerContent} {\n padding-top: ${this.config.footerMargin};\n /* padding-bottom: 1px; */\n /* Page numbers: */\n min-height: 32px;\n}\n\n${e.tocPageNumber} {\n min-width: 3ch;\n display: flex;\n justify-content: flex-end;\n align-items: baseline;\n}\n\n${e.pageNumberRoot} {\n display: flex;\n column-gap: 2px;\n position: absolute;\n /* left: 100%; */\n right: 0;\n text-align: right;\n line-height: 1;\n}\n\n${e.headerContent} ${e.pageNumberRoot} {\n top: 0;\n}\n\n${e.footerContent} ${e.pageNumberRoot} {\n bottom: 0;\n}\n\n${e.paperFlow} {\n display: block;\n position: absolute;\n width: 100%;\n z-index: -1;\n /* affect only screen */\n padding-bottom: 100px;\n}\n\n${e.contentFlow} {\n display: block;\n}\n\n${e.runningSafety} {\n display: block;\n /* ? should be checked and updated,\n but in the meantime, bring back the common solution:\n firefox ignores 0.1px size, so it's necessary to make a full-size pixel\n and take it into account in the calculations:\n padding-top: 1px;\n */\n padding-top: .1px;\n}\n\n${e.virtualPaperTopMargin} {\n display: block;\n height: ${this.config.printTopMargin};\n}\n\n${e.virtualPaperBottomMargin} {\n display: block;\n height: ${this.config.printBottomMargin};\n}\n\n${e.virtualPaperGap} {\n display: block;\n padding-top: ${this.config.virtualPagesGap};\n}\n\n${e.paperBody} {\n display: block;\n}\n\n${e.frontpageContent} {\n display: block;\n transform-origin: top center;\n padding: .1px;\n height: 100%;\n}\n\n.null {\n display: inline;\n padding: 0;\n margin: 0;\n font: 0;\n color: transparent;\n line-height: 0;\n border: none;\n outline: none;\n background: none;\n background-color: transparent;\n}\n\n${e.textNode},\n${e.textLine},\n${e.textGroup},\n${e.neutral},\n${e.neutral} span {\n display: inline;\n padding: 0;\n margin: 0;\n font: inherit;\n color: inherit;\n line-height: inherit;\n background: none;\n background-color: transparent;\n}\n\n${e.textGroup} {\n display: block;\n}\n\n${e.textLine} {\n /* Firefox and inconsistent values of offset top for inline element */\n display: inline-block;\n}\n\n${e.textGroup} ${e.textLine} {\n display: inline;\n}\n\n${e.complexTextBlock} {\n display: block;\n}\n\n${e.printPageBreak} {\n display: block;\n}\n\n${e.printForcedPageBreak} {\n display: block;\n visibility: hidden;\n height: 0;\n overflow: hidden;\n}\n\n@media print {\n ${e.root} {\n /* to prevent a blank last page */\n padding: 0;\n }\n\n ${e.paperFlow} {\n padding-bottom: 0;\n }\n\n ${e.contentFlow} {\n -webkit-mask-image: none !important;\n mask-image: none !important;\n }\n\n ${e.printIgnore} {\n display: contents;\n }\n\n ${e.printHide},\n ${e.virtualPaper}::before,\n ${e.virtualPaperTopMargin},\n ${e.virtualPaperBottomMargin},\n ${e.virtualPaperGap} {\n display: none;\n }\n\n ${e.virtualPaper} {\n break-inside: avoid;\n height: auto;\n }\n\n ${e.paperBody} {\n break-inside: avoid;\n }\n\n ${e.printPageBreak} {\n break-after: page;\n padding: .1px;\n }\n\n ${e.printForcedPageBreak} {\n /* JUST MANUAL! */\n /* break-after: page; */\n }\n\n ${e.flagNoBreak} {\n /*\n TODO: temporary commented!\n When splitting blocks, printPageBreak falls INTO this element,\n and in Firefox it causes a blank page.\n FIX the split of complex blocks and check in Firefox.\n */\n /* break-inside: avoid-page; */\n }\n}\n\n/* arrangement */\n${e.topCutPart} {\n margin-top: 0 !important;\n border-top: none !important;\n}\n${e.bottomCutPart} {\n margin-bottom: 0 !important;\n border-bottom: none !important;\n}\n `}_testStyle(){return this.config.debugMode?`\n/* FOR TEST */\n${e.virtualPaperGap} {\n background: #ff000020;\n}\n\n${e.paperFooter},\n${e.paperHeader} {\n background: #fa96ff20;\n}\n${e.paperBody} {\n background: #ffee0020;\n}\n${e.runningSafety} {\n background: #f200ff;\n}\n${e.frontpageContent} {\n background: #00fcff20;\n}\n\n${e.neutral} {\n background: #00ffee10;\n}\n\n${e.textNode} {\n background: #00ff0010;\n}\n\n${e.textGroup},\n${e.textLine} {\n background: #0000ff08;\n}\n\n[filler] {\n background:repeating-linear-gradient(\n -45deg,\n rgba(0, 175, 255, .1),\n rgba(0, 175, 255, .1) 10px,\n rgba(0, 175, 255, .15) 10px,\n rgba(0, 175, 255, .15) 20px\n );\n}\n `:""}}class s{constructor({config:e,DOM:t,node:o,selector:s}){this.success=!1,this.root,this.paperFlow,this.contentFlow,this.frontpageTemplate,this.headerTemplate,this.footerTemplate,this._initialRoot,this._config=e,this._debugMode=e.debugMode,this._DOM=t,this._selector=s,this._node=o,this._customInitialRootSelector=e.initialRoot,this._defaultInitialRootSelector=s.init}create(){if(this._getTemplates(),this._insertStyle(),this._DOM.getElement(`style${this._selector.style}`)){if(this._createLayout(),this._DOM.getParentNode(this.root)!==this._initialRoot||this._DOM.getElementOffsetParent(this.paperFlow)!==this.root||this._DOM.getElementOffsetParent(this.contentFlow)!==this.root)return console.assert(this._DOM.getParentNode(this.root)===this._initialRoot,"Failed to insert the layout root into the DOM."),console.assert(this._DOM.getElementOffsetParent(this.paperFlow)===this.root,"Failed to insert the paperFlow element into the DOM."),void console.assert(this._DOM.getElementOffsetParent(this.contentFlow)===this.root,"Failed to insert the contentFlow element into the DOM.");this.success=!0}else console.error("Failed to add print styles into the DOM.")}_getTemplates(){console.assert(this._selector.frontpageTemplate,"frontpageTemplate selector is missing"),console.assert(this._selector.headerTemplate,"headerTemplate selector is missing"),console.assert(this._selector.footerTemplate,"footerTemplate selector is missing"),this.frontpageTemplate=this._DOM.getInnerHTML(this._selector.frontpageTemplate),this.headerTemplate=this._DOM.getInnerHTML(this._selector.headerTemplate),this.footerTemplate=this._DOM.getInnerHTML(this._selector.footerTemplate)}_insertStyle(){const e=this._DOM.getElement("head"),t=this._DOM.body;if(!e&&!t)return void console.error("Check the structure of your document. We didn`t find HEAD and BODY tags. HTML2PDF4DOC expects valid HTML.");const s=this._node.create("style",new o(this._config).create());s?(this._DOM.setAttribute(s,this._selector.style,""),e?this._DOM.insertAtEnd(e,s):t?this._DOM.insertBefore(t,s):console.assert(!1,"We expected to find the HEAD and BODY tags.")):console.error("Failed to create print styles")}_createLayout(){const e=this._getInitialRoot();if(!this._initialRoot)return void console.error("Failed to initialize the root element.");this._debugMode&&console.log("initial root:",this._initialRoot);const t=this._createRoot(),o=this._createPaperFlow(),s=this._createContentFlow(),i=this._DOM.getInnerHTML(e);i.trim().length>0?this._DOM.setInnerHTML(s,i):console.warn("It looks like you don't have any printable content."),this._DOM.setInnerHTML(e,""),this._DOM.insertAtEnd(e,t),this._DOM.insertAtEnd(t,o,s),this._insertContentFlowStartAndEnd(s),this._ignoreUnprintableEnvironment(t)}_insertContentFlowStartAndEnd(e){const t=this._node.create(this._selector.contentFlowStart),o=this._node.create(this._selector.contentFlowEnd);return this._DOM.insertAtStart(e,t),this._DOM.insertAtEnd(e,o),{contentFlowStart:t,contentFlowEnd:o}}_getInitialRoot(){let e=this._customInitialRootSelector?this._DOM.getElement(this._customInitialRootSelector):this._DOM.getElement(this._defaultInitialRootSelector);if(!e){if(!this._DOM.body)return void console.error("We expected to find the BODY tag.");e=this._DOM.body,console.warn(`The printable area is currently unspecified and encompasses the entire contents of the BODY tag. To restrict the printed content to a specific area, include ${this._defaultInitialRootSelector} in the root element of the desired printing area.`)}return this._initialRoot=e,e}_createRoot(){const e=this._node.create(this._selector.root);return this.root=e,e}_createPaperFlow(){const e=this._node.create(this._selector.paperFlow);return this.paperFlow=e,e}_createContentFlow(){const e=this._node.create(this._selector.contentFlow);return this.contentFlow=e,e}_ignoreUnprintableEnvironment(e){if(e===this._DOM.body)return void console.assert(!1,"misshapen root");let t=this._DOM.getParentNode(e);this._DOM.setAttribute(t,this._selector.printIgnore),this._DOM.getChildNodes(t).forEach((t=>{if(t!==e&&this._DOM.isElementNode(t))this._DOM.setAttribute(t,this._selector.printHide);else{if(!this._node.isSignificantTextNode(t))return;this._DOM.setAttribute(this._node.wrapTextNode(t),this._selector.printHide)}})),this._DOM.isDocumentBody(t)||this._ignoreUnprintableEnvironment(t)}}class i{constructor({config:e,DOM:t,selector:o}){this._config=e,this._DOM=t,this._selector=o}init(){this._config.debugMode&&console.log("🍄 i am Node!")}get(e,t=this._DOM){return console.assert(e),this._DOM.getElement(e,t)}getAll(e,t=this._DOM){return console.assert(e),"string"==typeof e&&(e=e.split(",").filter(Boolean)),console.assert(Array.isArray(e),"Selectors must be provided as an array or string (one selector or multiple selectors, separated by commas). Now the selectors are:",e),console.assert(e.length>0,"getAll(selectors), selectors:",e),1===e.length?[...this._DOM.getAllElements(e[0],t)]:[...e].flatMap((e=>[...this._DOM.getAllElements(e,t)]))}getTableEntries(e){const t=[...e.children].reduce(((e,t)=>{const o=t.tagName;return"TBODY"===o?{...e,rows:[...e.rows,...t.children]}:"CAPTION"===o?(this.setFlagNoBreak(t),{...e,caption:t}):"COLGROUP"===o?(this.setFlagNoBreak(t),{...e,colgroup:t}):"THEAD"===o?(this.setFlagNoBreak(t),{...e,thead:t}):"TFOOT"===o?(this.setFlagNoBreak(t),{...e,tfoot:t}):"TR"===o?{...e,rows:[...e.rows,...t]}:{...e,unexpected:[...e.unexpected,...t]}}),{caption:null,thead:null,tfoot:null,rows:[],unexpected:[]});return t.unexpected.length>0&&this._debugMode&&this._debugToggler._DOM&&console.warn(`something unexpected is found in the table ${e}`),t}clearTemplates(e){this.getAll("template",e).forEach((e=>this._DOM.removeNode(e)))}isSelectorMatching(e,t){if(!e||!t)return void(this._debugMode&&this._debugToggler._DOM&&console.warn("isSelectorMatching() must have 2 params","\n element: ",e,"\n selector: ",t));const o=t.charAt(0);if("."===o){const o=t.substring(1);return this._DOM.hasClass(e,o)}if("#"===o){const o=t.substring(1);return this._DOM.hasID(e,o)}if("["===o){this._debugMode&&this._debugToggler._DOM&&console.assert("]"===t.at(-1),`the ${t} selector is not OK.`);const o=t.substring(1,t.length-1);return this._DOM.hasAttribute(e,o)}return this._DOM.getElementTagName(e)===t.toUpperCase()}isSignificantTextNode(e){return!!this._DOM.isTextNode(e)&&this._DOM.getNodeValue(e).trim().length>0}isSTYLE(e){return"STYLE"===this._DOM.getElementTagName(e)}isIMG(e){return"IMG"===this._DOM.getElementTagName(e)}isSVG(e){return"svg"===this._DOM.getElementTagName(e)}isLiNode(e){return"LI"===this._DOM.getElementTagName(e)}isNeutral(e){return this.isSelectorMatching(e,this._selector.neutral)}isWrappedTextNode(e){return this.isSelectorMatching(e,this._selector.textNode)}isWrappedTextLine(e){return this.isSelectorMatching(e,this._selector.textLine)}isWrappedTextGroup(e){return this.isSelectorMatching(e,this._selector.textGroup)}isPageStartElement(e){return this.isSelectorMatching(e,this._selector.pageStartMarker)}isContentFlowEnd(e){return this.isSelectorMatching(e,this._selector.contentFlowEnd)}isComplexTextBlock(e){return this.isSelectorMatching(e,this._selector.complexTextBlock)}isNoBreak(e,t=this._DOM.getComputedStyle(e)){return this.isSelectorMatching(e,this._selector.flagNoBreak)||this.isWrappedTextLine(e)||this.isWrappedTextGroup(e)||this.isInlineBlock(t)||this.notSolved(e)}isNoHanging(e){return this.isSelectorMatching(e,this._selector.flagNoHanging)}isForcedPageBreak(e){return this.isSelectorMatching(e,this._selector.printForcedPageBreak)}isInline(e){const t=e.display;return"inline"===t||"inline-block"===t||"inline-table"===t||"inline-flex"===t||"inline-grid"===t}isInlineBlock(e){const t=e.display;return"inline-block"===t||"inline-table"===t||"inline-flex"===t||"inline-grid"===t}isGrid(e){return"grid"===e.display}isTableLikeNode(e,t=this._DOM.getComputedStyle(e)){return"TABLE"!==this._DOM.getElementTagName(e)&&["table"].includes(t.display)}isTableNode(e,t=this._DOM.getComputedStyle(e)){return"TABLE"===this._DOM.getElementTagName(e)||["table"].includes(t.display)}isPRE(e,t=this._DOM.getComputedStyle(e)){return["block"].includes(t.display)&&["pre","pre-wrap","pre-line","break-spaces","nowrap"].includes(t.whiteSpace)}isGridAutoFlowRow(e){const t=e.display,o=e.gridAutoFlow;return("grid"===t||"inline-grid"===t)&&"row"===o}isFullySPlitted(e){const t=this._DOM.getComputedStyle(e);return this.isPRE(e,t)||this.isTableNode(e,t)||this.isTableLikeNode(e,t)||this.isGridAutoFlowRow(t)}isFirstChildOfFirstChild(e,t){if(!e||!this._DOM.getParentNode(e))return!1;let o=e;for(;this._DOM.getParentNode(o)&&o!==t;){if(this._DOM.getFirstElementChild(this._DOM.getParentNode(o))!==o)return!1;o=this._DOM.getParentNode(o)}return o===t}isLastChildOfLastChild(e,t){if(!e||!this._DOM.getParentNode(e))return!1;let o=e;for(;this._DOM.getParentNode(o)&&o!==t;){if(this._DOM.getParentNode(o)===t){let e=this._DOM.getRightNeighbor(o);for(;!this._DOM.getElementOffsetHeight(e)&&!this._DOM.getElementOffsetWidth(e);)if(e=this._DOM.getRightNeighbor(e),this.isContentFlowEnd(e))return!0;return this.isContentFlowEnd(e)}if(this._DOM.getLastElementChild(this._DOM.getParentNode(o))!==o)return!1;o=this._DOM.getParentNode(o)}return o===t}isLineChanged(e,t){return this._DOM.getElementOffsetTop(t)-this._DOM.getElementOffsetBottom(e)>-2}isLineKept(e,t,o){const s=this._DOM.getElementOffsetBottom(e),i=this._DOM.getElementOffsetTop(t),n=s-i,r=n>=2;return o&&console.group("isLineKept?"),o&&console.log("\n",r,"\n","\n currentBottom",s,[e],"\n nextTop",i,[t],"\n delta",n),o&&console.groupEnd("isLineKept?"),r}findFirstChildParent(e,t){let o=this._DOM.getParentNode(e),s=null;for(;o&&o!==t;){if(e!==this._DOM.getFirstElementChild(o))return s;s=o,e=o,o=this._DOM.getParentNode(e)}return s}findLastChildParent(e,t){let o=this._DOM.getParentNode(e),s=null;for(;o&&o!==t;){if(e!==this._DOM.getLastElementChild(o))return s;s=o,e=o,o=this._DOM.getParentNode(e)}return s}isVerticalFlowDisrupted(e){return e.some(((e,t,o)=>{const s=e,i=o[t+1];if(!i)return!1;return this._DOM.getElementOffsetBottom(s)>this._DOM.getElementOffsetTop(i)}))}findAllForcedPageBreakInside(e){return this.getAll(this._selector.printForcedPageBreak,e)}findPreviousNoHangingsFromPage(e,t,o){let s=null,i=this._DOM.getLeftNeighbor(e);for(;this.getTop(i,o)>t;){if(!this.isNoHanging(i))return s;if(this.isPageStartElement(i))return e;s=i,e=i,i=this._DOM.getLeftNeighbor(e)}return s}insertForcedPageBreakBefore(e){const t=this.create(this._selector.printForcedPageBreak);return this._DOM.insertBefore(e,t),t}insertForcedPageBreakAfter(e){const t=this.create(this._selector.printForcedPageBreak);return this._DOM.insertAfter(e,t),t}replaceNodeContentsWith(e,...t){this._DOM.setInnerHTML(e,""),this._DOM.insertAtEnd(e,...t)}fitElementWithinBoundaries({element:e,height:t,width:o,vspace:s,hspace:i}){const n=s/t,r=i/o,l=n<r?n:r,g=Math.trunc(t*l),a=Math.trunc(o*l);this._DOM.setStyles(e,{height:g+"px",width:a+"px"}),this._DOM.setAttribute(e,"height",`${g}px`),this._DOM.setAttribute(e,"width",`${a}px`)}create(e,t){let o;if(e){const t=e.charAt(0);if(t.match(/[#\[\.]/))o=this._DOM.createElement("div"),this._DOM.setAttribute(o,e);else{if(!t.match(/[a-zA-Z]/))return void console.assert(!1,"Expected valid html selector ot tag name, but received:",e);o=this._DOM.createElement(e)}}else o=this._DOM.createElement("div");return t&&this._DOM.setInnerHTML(o,t),o}createNeutral(){return this.create(this._selector.neutral)}createTextLine(){return this.create(this._selector.textLine)}createTextGroup(){return this.create(this._selector.textGroup)}createWithFlagNoBreak(e){const t=this.create(this._selector.flagNoBreak);return e&&this._DOM.setStyles(t,e),t}createPrintPageBreak(){return this.create(this._selector.printPageBreak)}createComplexTextBlock(){return this.create(this._selector.complexTextBlock)}createTestNodeFrom(e){const t=this._DOM.cloneNodeWrapper(e);return this._DOM.setAttribute(t,".test-node"),this._DOM.setStyles(t,{position:"absolute",background:"rgb(255 239 177)",width:this.getMaxWidth(e)+"px"}),t}createSignpost(e,t=24){const o=this.create();return this._DOM.setStyles(o,{display:"flex",flexWrap:"nowrap",alignItems:"center",justifyContent:"center",textAlign:"center",fontSize:"8px",fontFamily:"sans-serif",letterSpacing:"1px",textTransform:"uppercase",height:t+"px"}),e&&this._DOM.setInnerHTML(o,e),o}createTable({wrapper:e,caption:t,colgroup:o,thead:s,tfoot:i,tbody:n}){const r=e||this.create("table"),l=this.create("TBODY");return t&&this._DOM.insertAtEnd(r,t),o&&this._DOM.insertAtEnd(r,o),s&&this._DOM.insertAtEnd(r,s),n&&this._DOM.insertAtEnd(l,...n),this._DOM.insertAtEnd(r,l),i&&this._DOM.insertAtEnd(r,i),r}setFlagNoBreak(e){this._DOM.setAttribute(e,this._selector.flagNoBreak)}setFlagNoHanging(e){this._DOM.setAttribute(e,this._selector.flagNoHanging)}markPageStartElement(e,t){this._DOM.setAttribute(e,this._selector.pageStartMarker,t)}unmarkPageStartElement(e){this._DOM.removeAttribute(e,this._selector.pageStartMarker)}markPartNodesWithClass(e){e.forEach((e=>{this._DOM.setAttribute(e,this._selector.topCutPart),this._DOM.setAttribute(e,this._selector.bottomCutPart)})),this._DOM.removeAttribute(e.at(0),this._selector.topCutPart),this._DOM.removeAttribute(e.at(-1),this._selector.bottomCutPart)}wrapNode(e,t){this._DOM.insertBefore(e,t),this._DOM.insertAtEnd(t,e)}wrapTextNode(e){if(!this.isSignificantTextNode(e))return;const t=this.create(this._selector.textNode);return this._DOM.insertBefore(e,t),this._DOM.insertAtEnd(t,e),t}getTop(e,t=null,o=0){if(!e)return void(this._debugMode&&console.warn("element must be provided, but was received:",e,"\nThe function returned:",void 0));if(null===t)return this._DOM.getElementOffsetTop(e);if(!t)return void(this._debugMode&&console.warn("root must be provided, but was received:",t,"\nThe function returned:",void 0));const s=this._DOM.getElementOffsetParent(e);if(!s)return void(this._debugMode&&this._debugToggler._DOM&&console.warn("Element has no offset parent.","\n element:",[e],"\n offsetParent:",s,"\n The function returned:",void 0));const i=this._DOM.getElementOffsetTop(e);return s===t?i+o:this.getTop(s,t,o+i)}getBottom(e,t=null){if(e){if(null===t)return this._DOM.getElementOffsetBottom(e);if(t)return this.getTop(e,t)+this._DOM.getElementOffsetHeight(e);this._debugMode&&console.warn("root must be provided, but was received:",t,"\nThe function returned:",void 0)}else this._debugMode&&console.warn("element must be provided, but was received:",e,"\nThe function returned:",void 0)}getBottomWithMargin(e,t){const o=this.create();e&&this._DOM.insertAfter(e,o);const s=e?this.getTop(o,t):void 0;return this._DOM.removeNode(o),s}getTopWithMargin(e,t){const o=parseInt(this._DOM.getComputedStyle(e).marginTop);return this.getTop(e,t)-o}getMaxWidth(e){const t=this.create();this._DOM.insertAtEnd(e,t);const o=this._DOM.getElementOffsetWidth(t);return this._DOM.removeNode(t),o}getEmptyNodeHeight(e,t=!0){const o=this.create();t&&this._DOM.setStyles(o,{padding:"0.1px"});const s=this._DOM.cloneNodeWrapper(e);"TABLE"===this._DOM.getElementTagName(e)&&this._DOM.setInnerHTML(s,"<tr><td></td></tr>"),this._DOM.insertAtEnd(o,s),this._DOM.insertBefore(e,o);const i=this._DOM.getElementOffsetHeight(o);return this._DOM.removeNode(o),i}getLineHeight(e){const t=this.createNeutral();this._DOM.setInnerHTML(t,"!"),this._DOM.setStyles(t,{display:"block"}),this._DOM.insertAtEnd(e,t);const o=this._DOM.getElementOffsetHeight(t);return this._DOM.removeNode(t),o}getTableRowHeight(e,t=0){const o=this._DOM.getElementOffsetTop(e),s=this._DOM.cloneNode(e),i="!<br />".repeat(t);[...s.children].forEach((e=>this._DOM.setInnerHTML(e,i))),this._DOM.insertBefore(e,s);const n=this._DOM.getElementOffsetTop(e);return this._DOM.removeNode(s),n-o}copyNodeWidth(e,t){this._DOM.setStyles(e,{width:`${this._DOM.getElementOffsetWidth(t)}px`,"min-width":`${this._DOM.getElementOffsetWidth(t)}px`})}lockTableWidths(e){this.copyNodeWidth(e,e),this.getAll("td",e).forEach((e=>this.copyNodeWidth(e,e)))}prepareSplittedNode(e){const t=e,o=this.splitByWordsGreedy(e),s=o.map((e=>{const t=this._DOM.createElement("span");return this._DOM.setInnerHTML(t,e+" "),t})),i=this.createTestNodeFrom(e);return this._DOM.insertAtEnd(i,...s),this._DOM.insertAtEnd(e,i),{splittedNode:t,nodeWords:o,nodeWordItems:s}}splitByLinesGreedy(e){return e.split(/(?<=\n)/)}splitByWordsGreedy(e){return this._DOM.getInnerHTML(e).split(/(?<=\s|-)/)}splitByWordsGreedyWithSpacesFilter(e){return this._DOM.getInnerHTML(e).trim().split(/(?<=\s|-)/).filter((e=>" "!=e))}notSolved(e){return"OBJECT"===this._DOM.getElementTagName(e)}}function n(e){return e?.length?e?.split(/\s+/).filter(Boolean):[]}const r="#66CC00",l=`color: ${r};font-weight:bold`,g=`border:1px solid ${r};background:#EEEEEE;color:${r};`,a="background:#999;color:#FFF;padding: 0 4px;";class h{constructor({config:e,DOM:t,node:o,selector:s,layout:i,referenceWidth:r,referenceHeight:l}){this._debugMode=e.debugMode,this._debugToggler={_parseNodes:!0,_parseNode:!0,_registerPageStart:!0,_getProcessedChildren:!1,_splitPreNode:!1,_splitTableNode:!1,_splitTableRow:!1,_splitGridNode:!0,_createSlicesBySplitFlag:!1,_getInternalSplitters:!1,_splitComplexTextBlockIntoLines:!1},this._selector=s,this._node=o,this._noHangingSelectors=n(e.noHangingSelectors),this._pageBreakBeforeSelectors=n(e.pageBreakBeforeSelectors),this._pageBreakAfterSelectors=n(e.pageBreakAfterSelectors),this._forcedPageBreakSelectors=n(e.forcedPageBreakSelectors),this._noBreakSelectors=n(e.noBreakSelectors),this._garbageSelectors=n(e.garbageSelectors),this._DOM=t,this._root=i.root,this._contentFlow=i.contentFlow,this._referenceWidth=r,this._referenceHeight=l,this._minLeftLines=2,this._minDanglingLines=2,this._minBreakableLines=this._minLeftLines+this._minDanglingLines,this._minLeftRows=1,this._minDanglingRows=1,this._minBreakableRows=this._minLeftRows+this._minDanglingRows,this._minPreFirstBlockLines=3,this._minPreLastBlockLines=3,this._minPreBreakableLines=this._minPreFirstBlockLines+this._minPreLastBlockLines,this._minBreakableGridRows=4,this._imageReductionRatio=.8,this._signpostHeight=24,this._commonLineHeight=this._node.getLineHeight(this._root),this._minimumBreakableHeight=this._commonLineHeight*this._minBreakableLines,this._isFirefox="undefined"!=typeof InstallTrigger,this.pages=[]}calculate(){return this._node.init(),this._removeGarbageElements(),this._prepareForcedPageBreakElements(),this._prepareNoBreakElements(),this._prepareNoHangingElements(),this._calculate(),this._debugMode&&console.log("%c ✔ Pages.calculate()",g,this.pages),this.pages}_removeGarbageElements(){if(this._garbageSelectors.length){this._node.getAll(this._garbageSelectors,this._contentFlow).forEach((e=>{this._DOM.removeNode(e)}))}}_prepareNoHangingElements(){if(this._noHangingSelectors.length){this._node.getAll(this._noHangingSelectors,this._contentFlow).forEach((e=>{this._node.setFlagNoHanging(e);const t=this._node.findLastChildParent(e,this._contentFlow);t&&this._node.setFlagNoHanging(t)}))}}_prepareNoBreakElements(){if(this._noBreakSelectors.length){this._node.getAll(this._noBreakSelectors,this._contentFlow).forEach((e=>this._node.setFlagNoBreak(e)))}}_prepareForcedPageBreakElements(){const e=this._pageBreakBeforeSelectors.length?this._node.getAll(this._pageBreakBeforeSelectors,this._contentFlow):[],t=this._pageBreakAfterSelectors.length?this._node.getAll(this._pageBreakAfterSelectors,this._contentFlow):[],o=this._node.getAll(this._forcedPageBreakSelectors,this._contentFlow);this._node.isFirstChildOfFirstChild(e[0],this._contentFlow)&&e.shift(),this._node.isLastChildOfLastChild(t.at(-1),this._contentFlow)&&t.pop(),e.length&&e.forEach((e=>{const t=this._node.findFirstChildParent(e,this._contentFlow);t&&(e=t),this._node.insertForcedPageBreakBefore(e)})),o&&o.forEach((e=>{if(!this._node.isForcedPageBreak(e)){const t=this._node.findFirstChildParent(e,this._contentFlow);t&&(e=t),this._node.insertForcedPageBreakBefore(e)}})),t.length&&t.forEach((e=>{const t=this._node.findLastChildParent(e,this._contentFlow);t&&(e=t),this._node.isForcedPageBreak(e.nextElementSibling)||this._node.insertForcedPageBreakAfter(e)}))}_calculate(){if(this._debugMode&&console.groupCollapsed("•• init data ••"),this._debugMode&&console.log("this._referenceHeight",this._referenceHeight,"\n","this._noHangingSelectors",this._noHangingSelectors,"\n","this._pageBreakBeforeSelectors",this._pageBreakBeforeSelectors,"\n","this._pageBreakAfterSelectors",this._pageBreakAfterSelectors,"\n","this._forcedPageBreakSelectors",this._forcedPageBreakSelectors,"\n","this._noBreakSelectors",this._noBreakSelectors,"\n","isFirefox",this._isFirefox),this._debugMode&&console.groupEnd("•• init data ••"),this._registerPageStart(this._node.get(this._selector.contentFlowStart,this._contentFlow)),this._node.getBottomWithMargin(this._contentFlow,this._root)<this._referenceHeight)return void this._node.findAllForcedPageBreakInside(this._contentFlow).forEach((e=>this._registerPageStart(e)));const e=this._getChildren(this._contentFlow);this._debugMode&&console.groupCollapsed("%c🚸 children(contentFlow)",g),this._debugMode&&console.log(e),this._debugMode&&console.groupEnd("%c🚸 children(contentFlow)",g),this._parseNodes({array:e})}_registerPageStart(e,t=!1){if(t){e=this._node.findFirstChildParent(e,this._contentFlow)||e;e=this._node.findPreviousNoHangingsFromPage(e,this._node.getTop(this.pages.at(-1)?.pageStart,this._root),this._root)||e}const o=this._node.getTopWithMargin(e,this._root)+this._referenceHeight;this.pages.push({pageStart:e,pageBottom:o}),this._node.markPageStartElement(e,this.pages.length),this._debugMode&&this._debugToggler._registerPageStart&&console.log(`📍 %c register page ${this.pages.length} \n`,"background:yellow; color:red",o,e)}_parseNodes({array:e,previous:t,next:o,parent:s,parentBottom:i}){this._debugMode&&this._debugToggler._parseNodes&&console.log("🔵 _parseNodes","\narray:",[...e],"\ntracedParent:",s);for(let n=0;n<e.length;n++)this._parseNode({previousElement:e[n-1]||t,currentElement:e[n],nextElement:e[n+1]||o,isCurrentFirst:0==n&&!e[n-1],parent:s,parentBottom:n===e.length-1?i:void 0})}_parseNode({isCurrentFirst:e,previousElement:t,currentElement:o,nextElement:s,parent:i,parentBottom:n}){const r=["%c_parseNode\n","color:white"];if(this._debugMode&&this._debugToggler._parseNode&&console.group("%c_parseNode",l,""+(n?"★last★":"regular")),this._debugMode&&this._debugToggler._parseNode&&console.log(...r,"3 nodes: ",{previousElement:t,currentElement:o,nextElement:s},"\n","\ncurrent: ",o,"\nparent: ",i,"\nisCurrentFirst: ",e),this._debugMode&&this._debugToggler._parseNode&&console.log(...r,"parent:",i,"\n","parentBottom:",n,"\n","isCurrentFirst:",e,"\n","parent:",i,"\n"),!s)return this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode (!nextElement)",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd());const g=n||this._node.getBottomWithMargin(o,this._root),h=this.pages.at(-1).pageBottom;if(this.pages.at(-1).pageStart===o&&(this._node.isNoBreak(o)||g<=h))return this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode (node is already registered and fits in the next page)",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd());if(this._node.isForcedPageBreak(o))return this._registerPageStart(o),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode (isForcedPageBreak)",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd());this._debugMode&&console.assert(this._DOM.getElementOffsetParent(o),"it is expected that the element has an offset parent",o);const d=this._node.getTop(s,this._root);if(this._debugMode&&this._debugToggler._parseNode&&console.log(...r,"• newPageBottom",h,"\n","• nextElementTop",d),d<=h)this._debugMode&&this._debugToggler._parseNode&&console.log("nextElementTop <= newPageBottom",d,"<=",h),this._node.findAllForcedPageBreakInside(o).forEach((e=>this._registerPageStart(e)));else{if(this._debugMode&&this._debugToggler._parseNode&&console.log("nextElementTop > newPageBottom",d,">",h),this._node.isNoHanging(o))return this._debugMode&&this._debugToggler._parseNode&&console.log("currentElement _isNoHanging => move it to the next page"),this._registerPageStart(o,!0),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode (isNoHanging)",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd());if(this._node.isSVG(o)||this._node.isIMG(o)){const e=this._node.isSVG(o)?this._node.createSignpost(o):o,t=h-this._node.getTop(e,this._root),i=this._DOM.getElementOffsetHeight(e),n=this._DOM.getElementOffsetWidth(e);if(i<this._referenceWidth&&this._debugMode&&this._debugToggler._parseNode&&console.warn("%c IMAGE is too wide","color: red"),i<t)return this._registerPageStart(s),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode IMG fits",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd());return t/i>this._imageReductionRatio?(this._registerPageStart(s),this._node.fitElementWithinBoundaries({element:o,height:i,width:n,vspace:t,hspace:this._referenceWidth}),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode IMG scaled",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd())):(this._registerPageStart(e,!0),i>this._referenceHeight&&this._node.fitElementWithinBoundaries({element:o,height:i,width:n,vspace:this._referenceHeight,hspace:this._referenceWidth}),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd()))}if(o.style.height){this._debugMode&&this._debugToggler._parseNode&&console.log("🥁 currentElement has HEIGHT",o.style.height);const e=this._node.getTop(o,this._root),t=h-e,i=d-e,n=t/i,r=this._referenceHeight/i;return this._debugMode&&this._debugToggler._parseNode&&console.log("\n🥁 currentElementTop",e,"\n🥁 newPageBottom",h,"\n🥁 availableSpace",t,"\n🥁 currentElementContextualHeight",i,"\n🥁 availableSpaceFactor",n,"\n🥁 fullPageFactor",r),console.assert(n<1),n>.8?(this._debugMode&&this._debugToggler._parseNode&&console.log("🥁 availableSpaceFactor > 0.8: ",n),this._DOM.setStyles(o,{transform:`scale(${n})`}),this._registerPageStart(s),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode (has height & scale)",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd())):(r<1&&(this._debugMode&&this._debugToggler._parseNode&&console.log("🥁 fullPageFactor < 1: ",r),this._DOM.setStyles(o,{transform:`scale(${r})`})),this._debugMode&&this._debugToggler._parseNode&&console.log("🥁 _registerPageStart",o),this._registerPageStart(o),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode (has height & put on next page)",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd()))}if(this._debugMode&&this._debugToggler._parseNode&&console.log("split or not? \n","currentElementBottom",g),g<=h)return this._debugMode&&this._debugToggler._parseNode&&console.log("currentElementBottom <= newPageBottom",g,"<=",h,"\n register nextElement as pageStart"),this._registerPageStart(s),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode (currentElement fits, register the next element)",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd());if(this._debugMode&&this._debugToggler._parseNode&&console.log("currentElementBottom > newPageBottom",g,">",h),this._DOM.getElementOffsetHeight(o)+2<this._minimumBreakableHeight)return this._debugMode&&this._debugToggler._parseNode&&console.log("this._DOM.getElementOffsetHeight(currentElement) + 2 < this._minimumBreakableHeight",this._DOM.getElementOffsetHeight(o)),this._registerPageStart(o,!0),this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode #fewLines",a),void(this._debugMode&&this._debugToggler._parseNode&&console.groupEnd());const n=this._getProcessedChildren(o,h,this._referenceHeight);this._debugMode&&this._debugToggler._parseNode&&console.log("try to break it and loop the children:",n);const l=n.length;this._debugMode&&this._debugToggler._parseNode&&console.log(...r,"childrenNumber ",l),this._debugMode&&this._debugToggler._parseNode&&console.log(...r,"currentElement ",o);const c=e&&i||o;if(l){const e=this._node.isFullySPlitted(o);this._parseNodes({array:n,previous:t,next:s,parent:e?void 0:c,parentBottom:e?void 0:g})}else this._node.isNoHanging(t)?this._registerPageStart(t,!0):(this._debugMode&&this._debugToggler._parseNode&&console.log(...r,"_registerPageStart (from _parseNode): \n",o),this._registerPageStart(o,!0))}this._debugMode&&this._debugToggler._parseNode&&console.log("%c END _parseNode",a),this._debugMode&&this._debugToggler._parseNode&&console.groupEnd()}_getChildren(e){if(this._node.isComplexTextBlock(e))return[...this._DOM.getChildren(e)];{let t=[...this._DOM.getChildNodes(e)].reduce(((e,t)=>{if(this._node.isSTYLE(t))return e;if(this._node.isSignificantTextNode(t))return e.push(this._node.wrapTextNode(t)),e;if(!this._DOM.getElementOffsetParent(t)){const o=this._getChildren(t);return o.length>0&&e.push(...o),e}return this._DOM.isElementNode(t)?(e.push(t),e):void 0}),[]);return this._node.isVerticalFlowDisrupted(t)&&(t=this._processInlineChildren(t)),t}}_getProcessedChildren(e,t,o){const s=["%c_getProcessedChildren\n","color:white"];let i=[];if(this._node.isNoBreak(e))return this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"🧡 isNoBreak",e),[];if(this._node.isComplexTextBlock(e))return this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"💚 ComplexTextBlock",e),this._splitComplexTextBlockIntoLines(e)||[];if(this._node.isWrappedTextNode(e))return this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"💚 TextNode",e),this._splitComplexTextBlockIntoLines(e)||[];const n=this._DOM.getComputedStyle(e);return this._node.isTableLikeNode(e,n)?(this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"💚 TABLE like",e),i=this._splitTableLikeNode(e,t,o,n)||[]):this._node.isTableNode(e,n)?(this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"💚 TABLE",e),i=this._splitTableNode(e,t,o,n)||[]):this._node.isPRE(e,n)?(this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"💚 PRE",e),i=this._splitPreNode(e,t,o)||[]):this._node.isGridAutoFlowRow(this._DOM.getComputedStyle(e))?(this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"💜 GRID"),i=this._splitGridNode(e,t,o)||[]):(this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"💚 some node",e),i=this._getChildren(e),this._debugMode&&this._debugToggler._getProcessedChildren&&console.info(...s,"🚸 get element children ",i)),i}_processInlineChildren(e){let t=null;const o=[];return e.forEach((e=>{this._node.isInline(this._DOM.getComputedStyle(e))?(t||(t=this._node.createComplexTextBlock(),this._node.wrapNode(e,t),o.push(t)),this._DOM.insertAtEnd(t,e)):(t=null,o.push(e))})),o}_splitComplexTextBlockIntoLines(e){if(this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.group("_splitComplexTextBlockIntoLines"),this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("_splitComplexTextBlockIntoLines (node)",e),this._node.isSelectorMatching(e,this._selector.splitted))return this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log(`%c END ${this._selector.splitted}`,a),this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.groupEnd(),this._DOM.getChildren(e);const t=this._getChildren(e);this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("🚸 nodeChildren \n",[...t]);const o=t.map((e=>{const t=this._node.getLineHeight(e);return{element:e,lines:~~(this._DOM.getElementOffsetHeight(e)/t),left:this._DOM.getElementOffsetLeft(e),top:this._DOM.getElementOffsetTop(e),lineHeight:t,text:this._DOM.getInnerHTML(e)}}));this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("🚸 complexChildren \n",[...o]);const s=o.flatMap((e=>e.lines>1&&!this._node.isNoBreak(e.element)?(e.element.classList.add("newComplexChildren🅱️"),this._breakItIntoLines(e.element)):e.element));this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("🚸 newComplexChildren \n",[...s]);const i=s.reduce(((e,t,o,s)=>"BR"===this._DOM.getElementTagName(t)?(e.at(-1).push(t),e.push([]),this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("br; push:",t),e):!e.length||this._node.isLineChanged(e.at(-1).at(-1),t)?(e.push([t]),this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("start new line:",t),e):0===e.at(-1).length||e.length&&this._node.isLineKept(e.at(-1).at(-1),t)?(this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("⬆ add to line:",t),e.at(-1).push(t),e):void(this._debugMode&&console.assert(!0,"newComplexChildrenGroups: An unexpected case of splitting a complex paragraph into lines.","\nOn the element:",t))),[]);if(this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("🟡🟡🟡 newComplexChildrenGroups \n",i.length,[...i]),i.length<this._minBreakableLines)return this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("newComplexChildrenGroups.length < this._minBreakableLines",i.length,"<",this._minBreakableLines),this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("%c END NOT _splitComplexTextBlockIntoLines",a),this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.groupEnd(),[];const n=i.slice(0,this._minLeftLines).flat(),r=i.slice(-this._minDanglingLines).flat();this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("newComplexChildrenGroups",[...i],"\n","minLeftLines =",this._minLeftLines,"\n",n,"\n","minDanglingLines =",this._minDanglingLines,"\n",r),i.splice(0,this._minLeftLines,n),i.splice(-this._minDanglingLines,this._minDanglingLines,r);const l=i.map(((e,t)=>{let o;if(0==e.length)o=e[0],o.setAttribute("role","🚫"),console.assert(0==e.length,"The string cannot be empty (_splitComplexTextBlockIntoLines)");else if(1==e.length)o=e[0];else{o=this._node.createTextGroup(),this._DOM.insertBefore(e[0],o),this._DOM.insertAtEnd(o,...e)}return o.dataset.child=t,o}));return this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.log("%c END OK _splitComplexTextBlockIntoLines",a),this._debugMode&&this._debugToggler._splitComplexTextBlockIntoLines&&console.groupEnd(),this._DOM.setAttribute(e,this._selector.splitted),l}_breakItIntoLines(e){if(this._node.isNoBreak(e))return e;const t=this._node.splitByWordsGreedyWithSpacesFilter(e),o=t.map(((e,t)=>{const o=this._node.create("html2pdf-word");return o.dataset.index=t,this._DOM.setInnerHTML(o,e+""),o}));this._DOM.setInnerHTML(e,""),this._DOM.insertAtEnd(e,...o);const s=o.reduce(((e,t,s)=>(s>0&&o[s-1].offsetTop+o[s-1].offsetHeight<=t.offsetTop&&e.push(s),e)),[0]),i=s.reduce(((o,i,n)=>{const r=this._node.createTextLine(),l=s[n],g=s[n+1],a=" "+t.slice(l,g).join("")+" ";return this._DOM.setInnerHTML(r,a),this._DOM.insertBefore(e,r),n>0&&r.removeAttribute("id"),o.push(r),o}),[]);return e.remove(),i}_splitPreNode(e,t,o,s){const i=s||this._DOM.getComputedStyle(e),n=["%c_splitPreNode\n","color:white"];this._debugMode&&this._debugToggler._splitPreNode&&console.group("%c_splitPreNode","background:cyan"),this._debugMode&&this._debugToggler._splitPreNode&&console.log(...n,"node",e);const r=this._node.getTop(e,this._root),l=this._DOM.getElementOffsetHeight(e),g=this._node.getLineHeight(e),h=this._node.getEmptyNodeHeight(e,!1);if(l<h+g*this._minPreBreakableLines)return this._debugMode&&this._debugToggler._splitPreNode&&console.log("%c END _splitPreNode (small node)",a),[];const d=this._DOM.getChildNodes(e);if(this._debugMode&&this._debugToggler._splitPreNode&&console.log("_children:",d.length),0==d.length)return this._debugMode&&this._debugToggler._splitPreNode&&console.log("%c END _splitPreNode (not breakable)",a),[];if(d.length>1)return this._debugMode&&this._debugToggler._splitPreNode&&console.log("%c END _splitPreNode TODO!",a),[];{if(this._DOM.isElementNode(d[0])){const e=d[0];return this._debugMode&&this._debugToggler._splitPreNode&&console.warn("is Element Node",e),this._debugMode&&this._debugToggler._splitPreNode&&console.log("%c END _splitPreNode ???????",a),[]}this._node.isWrappedTextNode(d[0])&&this._debugMode&&this._debugToggler._splitPreNode&&console.warn(`is TEXT Node: ${d[0]}`);const s=d[0].wholeText,l=this._node.splitByLinesGreedy(s);if(l.length<this._minPreBreakableLines)return this._debugMode&&this._debugToggler._splitPreNode&&console.log("%c END _splitPreNode few lines",a),[];const g=l.splice(0,this._minPreFirstBlockLines).join(""),c=l.splice(-this._minPreLastBlockLines).join("");l.unshift(g),l.push(c);const _=l.map((e=>{const t=this._node.createWithFlagNoBreak();return this._DOM.setInnerHTML(t,e),t}));this._debugMode&&this._debugToggler._splitPreNode&&console.log("linesFromNode",_),this._node.replaceNodeContentsWith(e,..._);const p=o-h;let u=0,b=[],m=t-r-h;const f=i.position;"relative"!=f&&this._DOM.setStyles(e,{position:"relative"});for(let t=0;t<_.length;t++){const o=_[t];this._node.getBottom(o,e)>m&&(t&&b.push(t),t&&(u+=1),m=t?this._node.getTop(o,e)+p:p)}if(this._DOM.setStyles(e,{position:f}),!b.length)return this._debugMode&&this._debugToggler._splitPreNode&&console.log("%c END _splitPreNode NO SPLIITERS",a),[];b.push(null),this._debugMode&&this._debugToggler._splitPreNode&&console.log(...n,"splitters",b);const M=b.map(((t,o,s)=>{const i=this._DOM.cloneNodeWrapper(e);this._node.setFlagNoBreak(i);const n=s[o-1]||0,r=t||s[s.length];return this._DOM.insertAtEnd(i,..._.slice(n,r)),i}));return this._node.markPartNodesWithClass(M),this._debugMode&&this._debugToggler._splitPreNode&&console.log(...n,"newPreElementsArray",M),this._node.replaceNodeContentsWith(e,...M),this._DOM.setStyles(e,{display:"contents"}),this._DOM.setAttribute(e,"[slough-node]",""),this._DOM.removeAllClasses(e),this._debugMode&&this._debugToggler._splitPreNode&&console.log("%c END _splitPreNode",a),this._debugMode&&this._debugToggler._splitPreNode&&console.groupEnd(),M}}_insertTableSplit({startId:e,endId:t,table:o,tableEntries:s}){const i=this._DOM.cloneNodeWrapper(o),n=s.rows.slice(e,t),r=this._node.createWithFlagNoBreak();return o.before(r),e&&this._DOM.insertAtEnd(r,this._node.createSignpost("(table continued)",this._signpostHeight)),this._DOM.insertAtEnd(r,this._node.createTable({wrapper:i,colgroup:this._DOM.cloneNode(s.colgroup),caption:this._DOM.cloneNode(s.caption),thead:this._DOM.cloneNode(s.thead),tbody:n}),this._node.createSignpost("(table continues on the next page)",this._signpostHeight)),r}_splitTableLikeNode(e,t,o,s){const i=s||this._DOM.getComputedStyle(e),n=this._getChildren(e),r=this._node.getTop(e,this._root),l=this._node.getEmptyNodeHeight(e),g=o-l;let a=n,h=0,d=[],c=t-r-l;const _=i.position;"relative"!=_&&this._DOM.setStyles(e,{position:"relative"});for(let t=0;t<a.length;t++){const o=a[t];this._node.getBottom(o,e)>c&&(t&&d.push(t),t&&(h+=1),c=t?this._node.getTop(o,e)+g:g)}if(this._DOM.setStyles(e,{position:_}),!d.length)return console.log("splitters.length",d.length),[];d.push(null);const p=d.map(((t,o,s)=>{const i=this._DOM.cloneNodeWrapper(e);this._node.setFlagNoBreak(i),this._node.unmarkPageStartElement(i);const n=s[o-1]||0,r=t||s[s.length];return this._DOM.insertAtEnd(i,...a.slice(n,r)),i}));return this._node.markPartNodesWithClass(p),this._node.replaceNodeContentsWith(e,...p),this._DOM.removeAllClasses(e),this._DOM.removeAllStyles(e),this._DOM.setStyles(e,{display:"contents"}),this._DOM.setAttribute(e,"[slough-node]",""),p}_splitTableNode(e,t,o){const s=["%c_splitTableNode\n","color:white"];this._debugMode&&this._debugToggler._splitTableNode&&console.time("_splitTableNode"),this._debugMode&&this._debugToggler._splitTableNode&&console.group("%c_splitTableNode","background:cyan"),this._node.lockTableWidths(e);const i=this._node.getEmptyNodeHeight(e),n=this._node.getTableEntries(e);this._debugMode&&this._debugToggler._splitTableNode&&console.log(...s,e,"\ntableEntries",n);const r=this._node.getTopWithMargin(e,this._root),l=this._DOM.getElementOffsetHeight(n.caption)||0,g=this._DOM.getElementOffsetHeight(n.thead)||0,h=this._DOM.getElementOffsetHeight(n.tfoot)||0,d=(l??0)*(this._isFirefox??0),c=t-r-i-this._signpostHeight,_=o-l-g-h-i-2*this._signpostHeight;this._debugMode&&this._debugToggler._splitTableNode&&console.log(...s,"\n • tableFirstPartBottom",c,"\n","\n pageBottom",t,"\n - tableTop",r,"\n - tableCaptionHeight",l,"\n - tableTheadHeight",g,"\n - tableWrapperHeight",i,"\n - this._signpostHeight",this._signpostHeight,"\n","\n fullPageHeight",o,"\n - tableCaptionHeight",l,"\n - tableTheadHeight",g,"\n - tableTfootHeight",h,"\n - 2 * this._signpostHeight",2*this._signpostHeight,"\n - tableWrapperHeight",i,"\n = tableFullPartContentHeight",_);const p=e=>[...e.rows,...[e.tfoot]||0];let u=p(n),b=[],m=c;this._debugMode&&this._debugToggler._splitTableNode&&console.log(this._node.getTop(u[1],e)-this._node.getBottom(u[0],e),"(row[1].top - row[0].bottom)"),this._node.getTop(u[0],e)>m&&(m=_,this._debugMode&&this._debugToggler._splitTableNode&&console.log("The Row 0 goes to the 2nd page"));for(let o=0;o<u.length;o++){this._debugMode&&this._debugToggler._splitTableNode&&console.log(`%c 🟪 Check the Row # ${o}`,"color:blueviolet",[u[o]]);const s=u[o],i=this._node.getBottom(s,e)+d,r=this._node.getTop(s,e)+d,l=u[o+1];if((l?this._node.getTop(l,e)+d:i)>m){const i=o,l=s,g=this._DOM.getElementOffsetHeight(l),h=this._node.getTableRowHeight(l,this._minBreakableLines),c=this._node.getTableRowHeight(l),f=r,M=this._node.isNoBreak(l),T=g>=h&&!M;if(this._debugMode&&this._debugToggler._splitTableNode&&console.log(`%c • Row # ${o}: try to split`,"color:blueviolet"),T){this._debugMode&&this._debugToggler._splitTableRow&&console.groupCollapsed(`Split The ROW.${i}`);const e=m-f-c,s=_-c,r=this._DOM.getChildren(l);let g;g=[...r].map(((o,n)=>{const r=this._getChildren(o);this._debugMode&&this._debugToggler._splitTableRow&&console.groupCollapsed(`Split TD.${n} in ROW.${i}`);const l=this._getInternalSplitters({rootNode:o,children:r,pageBottom:t,firstPartHeight:e,fullPageHeight:s});return this._debugMode&&this._debugToggler._splitTableRow&&console.groupEnd(`Split TD.${n} in ROW.${i}`),l})),this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣 \ntheRowContentSlicesByTD",g);const h=g.some((e=>(this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣","\nobj.result.length",e.result.length,"\nobj.result[0]",e.result[0]),e.result.length&&null===e.result[0])));this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣","\nshouldFirstPartBeSkipped",h),h&&(g=[...r].map((e=>{const o=this._getChildren(e);return this._getInternalSplitters({rootNode:e,children:o,pageBottom:t,firstPartHeight:s,fullPageHeight:s})}))),this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣","\n theRowContentSlicesByTD",g);const d=g.some((e=>e.result.length));if(this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣 ifThereIsSplit",d),d){const e=g.map((e=>{if(e.result.length)return this._createSlicesBySplitFlag(e.trail);{const t=this._node.createWithFlagNoBreak();t.classList.add("🟣"),this._DOM.setStyles(t,{display:"contents"});const o=e.trail.map((e=>e.element));return this._DOM.insertAtEnd(t,...o),[t]}}));this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣 theTdContentElements",e);const t=Math.max(...e.map((e=>e.length)));this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣 theNewTrCount",t);const s=[];for(let o=0;o<t;o++){const t=this._DOM.cloneNodeWrapper(l);this._node.setFlagNoBreak(t),this._DOM.setAttribute(t,`.splitted_row_${i}_part_${o}`),[...r].forEach(((s,i)=>{const n=this._DOM.cloneNodeWrapper(s);e[i][o]&&this._DOM.insertAtEnd(n,e[i][o]),this._DOM.insertAtEnd(t,n)})),s.push(t)}this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣","\n theNewRows",s),this._DOM.setAttribute(l,".🚫_must_be_removed"),this._debugMode&&this._debugToggler._splitTableRow&&console.log("🟣 splittingRow",l),this._DOM.insertInsteadOf(l,...s),n.rows.splice(i,1,...s),u=p(n),o-=1}this._debugMode&&this._debugToggler._splitTableRow&&console.log(`%c END 🟪 Split The ROW.${i}`,a),this._debugMode&&this._debugToggler._splitTableRow&&console.groupEnd("END OF 'if makesSenseToSplitTheRow'")}else this._debugMode&&this._debugToggler._splitTableNode&&console.log(`%c • Row # ${o}: small or noBreak`,"color:blueviolet"),o>=this._minLeftRows&&(b.push(o),this._debugMode&&this._debugToggler._splitTableNode&&console.log(`%c • Row # ${o}: REGISTER as start, index >= ${this._minLeftRows} (_minLeftRows) `,"color:blueviolet")),m=this._node.getTop(u[o],e)+d+_}else this._debugMode&&this._debugToggler._splitTableNode&&console.log(`%c • Row # ${o}: PASS ...`,"color:blueviolet")}if(this._debugMode&&this._debugToggler._splitTableNode&&console.log(...s,"splitsIds",b),!b.length)return this._debugMode&&this._debugToggler._splitTableNode&&console.log("%c END _splitTableNode !splitsIds.length",a),this._debugMode&&this._debugToggler._splitTableNode&&console.groupEnd(),[];const f=u.length-1-this._minDanglingRows;b[b.length-1]>f&&(b[b.length-1]=f);const M=b.map(((t,o,s)=>this._insertTableSplit({startId:s[o-1]||0,endId:t,table:e,tableEntries:n})));this._debugMode&&this._debugToggler._splitTableNode&&console.log(...s,"splits",M);const T=this._node.createWithFlagNoBreak();return e.before(T),this._DOM.insertAtEnd(T,this._node.createSignpost("(table continued)",this._signpostHeight),e),this._debugMode&&this._debugToggler._splitTableNode&&console.timeEnd("_splitTableNode"),this._debugMode&&this._debugToggler._splitTableNode&&console.log("%c END _splitTableNode",a),this._debugMode&&this._debugToggler._splitTableNode&&console.groupEnd(),[...M,T]}_createSlicesBySplitFlag(e){this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.group("_createSlicesBySplitFlag");const t=this._node.createWithFlagNoBreak();this._DOM.setStyles(t,{display:"contents"}),t.classList.add("🧰");const o=[t];let s=[t],i=t;const n=e=>{if(0===e.length)return null;const t=e[0];let o=t;for(let t=1;t<e.length;t++){const s=e[t];this._DOM.insertAtEnd(o,s),o=s}return this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log(" createWrapperFromArray:",t),t},r=(e,t=null)=>{this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.group("processChildren"),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("*start* children",e);for(let t=0;t<e.length;t++)l(e[t]);this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("- wrappers BEFORE pop:",[...s]);const o=s.pop();this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("- wrappers.pop()",o),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("- parent",t),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("- wrappers AFTER pop:",[...s]),i=s.at(-1),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("🎯🎯 currentTargetInSlice",i),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("🎯 wrappers.at(-1)",s.at(-1)),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("*END* children",e),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("%c END processChildren",a),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.groupEnd()},l=e=>{const t=e.children?.length>0,l=e.split,g=e.element,h=e.id;if(this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.group(`processObj # ${h}`),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("currentElement",g),g&&this._DOM.removeNode(g),l){this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("••• hasSplitFlag"),s=s.map((e=>{const t=this._DOM.cloneNodeWrapper(e);return t.classList.add("🚩"),t})),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasSplitFlag: NEW wrappers.map:",[...s]);const e=n(s);o.push(e),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasSplitFlag: slices.push(nextWrapper):",[...o]),i=s.at(-1),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasSplitFlag: currentTargetInSlice:",i)}if(t){this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("••• hasChildren");const t=this._DOM.cloneNodeWrapper(g);s.push(t),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasChildren: wrappers.push(cloneCurrentElementWrapper)",t,[...s]),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasChildren: currentTargetInSlice (check):",i),i?(this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasChildren: currentTargetInSlice","TRUE, add to existing",t),this._DOM.insertAtEnd(i,t)):(this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasChildren: currentTargetInSlice","FALSE, init the first",t),t.classList.add("🏁first"),this._DOM.setStyles(t,{background:"yellow"}),o.push(t),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasChildren: slices.push(cloneCurrentElementWrapper)",t,[...o])),i=s.at(-1),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("• hasChildren: currentTargetInSlice (=):",i),r(e.children,g)}else i=s.at(-1),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("insert currentElement",g,"to target",i),this._DOM.insertAtEnd(i,g);this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log(`%c END processObj # ${h}`,a),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.groupEnd()};return this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("####### currentTargetInSlice (=):",i),r(e),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("slices:",o),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&o.forEach((e=>console.log("slice:",e))),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.log("%c END _createSlicesBySplitFlag",a),this._debugMode&&this._debugToggler._createSlicesBySplitFlag&&console.groupEnd(),o}_getInternalSplitters({rootNode:e,rootComputedStyle:t,children:o,pageBottom:s,firstPartHeight:i,fullPageHeight:n,result:r=[],trail:l=[],indexTracker:g=[],stack:h=[]}){const d=t||this._DOM.getComputedStyle(e),c=d.position;"relative"!=c&&this._DOM.setStyles(e,{position:"relative"}),this._debugMode&&this._debugToggler._getInternalSplitters&&console.group("💟 _getInternalSplitters");const _=e=>{e>=0?g.push(e):g.pop()},p=(e,t)=>{this._debugMode&&this._debugToggler._getInternalSplitters&&console.assert(t>=0,"registerResult: ID mast be provided",e);let o,s=l[t];if(this._debugMode&&this._debugToggler._getInternalSplitters&&console.groupCollapsed("💜💜💜 registerResult(element, id)"),this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("\n element",e,"\n id",t,"\n theElementObject (trail[id])",s,"\n theElementIndexInStack",o),0==t){const e=(e=>{let t,o=null;for(let s=e.length-1;s>=0;s--){if(0!==e[s].id)return{item:o,index:t};o=e[s],t=s}return{item:o,index:t}})(h);this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💜💜 id == 0","\n💜 [...stack]",[...h],"\n💜 topParentElementFromStack",e),e.item&&(s=e.item,o=e.index)}this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💜","\n theElementObject",s,"\n theElementIndexInStack",o,"\n [...indexTracker]",[...g]),0===o?(r.push(null),this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("result.push(null)","\n\n💜💜💜")):(r.push(s.element),s&&(s.split=!0),this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("\n theElementObject",s,"\n theElementObject.element",s.element,"\n result.push(theElementObject.element)","\n\n💜💜💜 ")),this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("%c END _getInternalSplitters registerResult",a),this._debugMode&&this._debugToggler._getInternalSplitters&&console.groupEnd()};this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💟 result 💟",r,"\n\n","\n rootNode:",e,"\n children:",o,"\n pageBottom:",s,"\n firstPartHeight:",i,"\n fullPageHeight:",n,"\n\n\n","💟 stack",[...h]);for(let t=0;t<o.length;t++){const a=o[t-1],c=o[t],u=o[t+1],b=u?this._node.getTop(u,e):void 0,m={id:t,element:o[t]},f={id:t+1,element:o[t+1]};t!==(l.length?l.at(-1).id:void 0)&&l.push(m);const M=0===r.length?i:null===r.at(-1)?n:n+this._node.getTop(r.at(-1),e);if(this._node.isForcedPageBreak(c)&&this._debugMode&&this._debugToggler._getInternalSplitters&&console.warn(c,"💟 is isForcedPageBreak"),b<=M)this._node.isNoHanging(c)&&(this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💟💟 currentElement _isNoHanging"),p(c,t));else{this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💟💟",c,`nextElementTop > floater \n ${b} > ${M} `),(this._node.isSVG(c)||this._node.isIMG(c))&&this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("%cIMAGE 💟💟","color:red;text-weight:bold");const o=this._node.getBottomWithMargin(c,e);if(this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💟💟 current ???","\n currentElement",c,"\n currentElementBottom",o,"\n floater",M),o<=M)this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💟💟💟 currentElementBottom <= floater"),u&&(this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💟💟💟💟 register nextElement"),l.push(f),p(u,t+1));else{this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("💟💟💟 currentElementBottom > floater,\ntry to split",c);const o=this._getProcessedChildren(c,s,n);if(o.length)_(t),h.push(m),this._getInternalSplitters({rootNode:e,rootComputedStyle:d,children:o,pageBottom:s,firstPartHeight:i,fullPageHeight:n,result:r,trail:l[t].children=[],indexTracker:g,stack:h}),h.pop(),this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("🟪 back from _getInternalSplitters;\n trail[i]",l[t]);else if(a&&this._node.isNoHanging(a)){console.warn("tst improveResult",a);let e=a;e=this._node.findFirstChildParent(e,this._contentFlow)||e;e=this._node.findPreviousNoHangingsFromPage(e,this.pages.at(-2)?.pageBottom,this._root)||e,this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("previousElement _isNoHanging"),p(e,t-1)}else this._debugMode&&this._debugToggler._getInternalSplitters&&console.log(c,"currentElement has no children"),p(c,t)}}}return _(),this._DOM.setStyles(e,{position:c}),this._debugMode&&this._debugToggler._getInternalSplitters&&console.log("%c END _getInternalSplitters",a),this._debugMode&&this._debugToggler._getInternalSplitters&&console.groupEnd(),{result:r,trail:l}}_splitGridNode(e,t,o){this._debugMode&&this._debugToggler._splitGridNode&&console.group("%c_splitGridNode","background:#00FFFF");const s=this._getChildren(e);this._debugMode&&this._debugToggler._splitGridNode&&console.log("💠 children",s),this._debugMode&&this._debugToggler._splitGridNode&&console.groupCollapsed("make childrenGroups");const i=s.reduce(((e,t,o,s)=>{const i=this._DOM.getComputedStyle(t),n=i.getPropertyValue("grid-column-start"),r=i.getPropertyValue("grid-column-end"),l={element:t,start:"auto"===n?"auto":parseInt(i.getPropertyValue("grid-column-start")),end:"auto"===r?"auto":parseInt(i.getPropertyValue("grid-column-end")),top:this._DOM.getElementOffsetTop(t)};return!e.length||e.at(-1).at(-1).start>=l.start||"auto"===e.at(-1).at(-1).start||"auto"===l.start?(e.at(-1)&&this._node.isNoHanging(e.at(-1).at(-1).element)?(e.at(-1).push(l),this._debugMode&&this._debugToggler._splitGridNode&&console.log("Add to group (after no-hang.)",l)):(e.push([l]),this._debugMode&&this._debugToggler._splitGridNode&&console.log("Start new group:",l)),this._debugMode&&this._debugToggler._splitGridNode&&console.log("result:",[...e]),e):e.length&&e.at(-1).at(-1).start<l.start?(e.at(-1).push(l),this._debugMode&&this._debugToggler._splitGridNode&&console.log("Add to group:",l,[...e]),e):void(this._debugMode&&console.assert(!0,"_splitGridNode: An unexpected case of splitting a grid.","\nOn the element:",t))}),[]);this._debugMode&&this._debugToggler._splitGridNode&&console.groupEnd("make childrenGroups"),this._debugMode&&this._debugToggler._splitGridNode&&console.log("%c childrenGroups","font-weight:bold",i);const n=i.length,r=this._DOM.getElementOffsetHeight(e);if(n<this._minBreakableGridRows&&r<o)return this._debugMode&&this._debugToggler._splitGridNode&&console.log("%c END DONT _splitGridNode",a),this._debugMode&&this._debugToggler._splitGridNode&&console.groupEnd(),[];const l=[...i.map((e=>e.map((e=>e.top)).sort())).map((e=>e[0])),r];this._debugMode&&this._debugToggler._splitGridNode&&console.log("gridPseudoRowsTopPoints",l);const g=this._node.getTop(e,this._root),h=this._node.getEmptyNodeHeight(e),d=t-g-h,c=o-h;this._debugMode&&this._debugToggler._splitGridNode&&console.log("\n • firstPartHeight",d,"\n • fullPagePartHeight",c);const _=l;let p=[],u=d;for(let e=0;e<_.length;e++)_[e]>u&&(e>this._minLeftRows&&p.push(e-1),u=_[e-1]+c);this._debugMode&&this._debugToggler._splitGridNode&&console.log("splitsIds",p);const b=(t,o)=>{this._debugMode&&this._debugToggler._splitGridNode&&console.log(`=> insertGridSplit(${t}, ${o})`);const s=i.slice(t,o).flat().map((e=>e.element));this._debugMode&&this._debugToggler._splitGridNode&&console.log("partEntries",s);const n=this._DOM.cloneNodeWrapper(e);return this._node.copyNodeWidth(n,e),this._node.setFlagNoBreak(n),e.before(n),this._DOM.insertAtEnd(n,...s),n},m=[...p.map(((e,t,o)=>b(o[t-1]||0,e))),e];return this._debugMode&&this._debugToggler._splitGridNode&&console.log("splits",m),m.forEach(((e,t)=>this._DOM.setAttribute(e,"[part]",`${t}`))),this._node.setFlagNoBreak(e),this._debugMode&&this._debugToggler._splitGridNode&&console.log("%c END _splitGridNode",a),this._debugMode&&this._debugToggler._splitGridNode&&console.groupEnd(),m}}class d{constructor({config:e,DOM:t,node:o,selector:s,layout:i}){this._debugMode=e.debugMode,this._DOM=t,this._selector=s,this._node=o,this._frontpageTemplate=i.frontpageTemplate,this._headerTemplate=i.headerTemplate,this._footerTemplate=i.footerTemplate,this._paperBodySelector=s?.paperBody||".paperBody",this._paperHeaderSelector=s?.paperHeader||".paperHeader",this._paperFooterSelector=s?.paperFooter||".paperFooter",this._headerContentSelector=s?.headerContent||".headerContent",this._footerContentSelector=s?.footerContent||".footerContent",this._frontpageContentSelector=s?.frontpageContent||".frontpageContent",this._virtualPaperSelector=s?.virtualPaper||".virtualPaper",this._virtualPaperTopMarginSelector=s?.virtualPaperTopMargin||".virtualPaperTopMargin",this._virtualPaperBottomMarginSelector=s?.virtualPaperBottomMargin||".virtualPaperBottomMargin",this._pageNumberRootSelector=s?.pageNumberRoot||void 0,this._pageNumberCurrentSelector=s?.pageNumberCurrent||void 0,this._pageNumberTotalSelector=s?.pageNumberTotal||void 0,this._paperHeight,this._frontpageFactor,this.headerHeight,this.footerHeight,this.bodyHeight,this.bodyWidth,this._calculatePaperParams()}create({currentPage:e,totalPages:t}){const o=this._createPaperBody(this.bodyHeight),s=this._createPaperHeader(this._headerTemplate),i=this._createPaperFooter(this._footerTemplate);return this._createPaper({header:s,body:o,footer:i,currentPage:e,totalPages:t})}createFrontpage({currentPage:e,totalPages:t}){const o=this._createFrontpageContent(this._frontpageTemplate,this._frontpageFactor),s=this._createPaperBody(this.bodyHeight,o),i=this._createPaperHeader(this._headerTemplate),n=this._createPaperFooter(this._footerTemplate);return this._createPaper({header:i,body:s,footer:n,currentPage:e,totalPages:t})}createVirtualTopMargin(){return this._node.create(this._virtualPaperTopMarginSelector)}createVirtualBottomMargin(){return this._node.create(this._virtualPaperBottomMarginSelector)}_createPaper({header:e,body:t,footer:o,currentPage:s,totalPages:i}){const n=this._node.create(this._virtualPaperSelector);return this._DOM.insertAtEnd(n,this.createVirtualTopMargin(),e,t,o,this.createVirtualBottomMargin()),s&&i&&(this._setPageNumber(e,s,i),this._setPageNumber(o,s,i)),n}_createFrontpageContent(e,t){const o=this._node.create(this._frontpageContentSelector);return e&&this._DOM.setInnerHTML(o,e),t&&this._DOM.setStyles(o,{transform:`scale(${t})`}),o}_createPaperBody(e,t){const o=this._node.create(this._paperBodySelector);return this._DOM.setStyles(o,{height:e+"px"}),t&&this._DOM.insertAtEnd(o,t),o}_createPaperHeader(e){const t=this._node.create(this._paperHeaderSelector);if(e){const o=this._node.create(this._headerContentSelector);this._DOM.setInnerHTML(o,e),this._DOM.insertAtEnd(t,o)}return t}_createPaperFooter(e){const t=this._node.create(this._paperFooterSelector);if(e){const o=this._node.create(this._footerContentSelector);this._DOM.setInnerHTML(o,e),this._DOM.insertAtEnd(t,o)}return t}_setPageNumber(e,t,o){const s=this._pageNumberRootSelector?this._DOM.getElement(this._pageNumberRootSelector,e):this._pageNumberRootSelector;if(s){const e=this._DOM.getElement(this._pageNumberCurrentSelector,s),i=this._DOM.getElement(this._pageNumberTotalSelector,s);this._DOM.setInnerHTML(e,t),this._DOM.setInnerHTML(i,o)}}_calculatePaperParams(){const e=this._createPaperBody(),t=this._createFrontpageContent(this._frontpageTemplate),o=this._createPaperHeader(this._headerTemplate),s=this._createPaperFooter(this._footerTemplate),i=this._createPaper({header:o,body:e,footer:s}),n=this._node.create("#workbench");this._DOM.setStyles(n,{position:"absolute",left:"-3000px"}),this._DOM.insertAtEnd(n,i),this._DOM.insertAtStart(this._DOM.body,n);const r=this._DOM.getElementBCR(i).height,l=this._DOM.getElementOffsetHeight(o)||0,g=this._DOM.getElementOffsetHeight(s)||0,a=this._DOM.getElementOffsetHeight(e),h=this._DOM.getElementOffsetWidth(e);this._DOM.insertAtStart(e,t);const d=this._DOM.getElementOffsetHeight(e),c=d>a?a/d:1;this._DOM.removeNode(n),l>.2*r&&console.warn("It seems that your custom header is too high"),g>.15*r&&console.warn("It seems that your custom footer is too high"),c<1&&console.warn("It seems that your frontpage content is too large. We made it smaller to fit on the page. Check out how it looks! It might make sense to fix this with styles or reduce the text amount."),this._paperHeight=r,this.headerHeight=l,this.footerHeight=g,this.bodyHeight=a,this.bodyWidth=h,this._frontpageFactor=c}}class c{constructor({config:e,DOM:t,selector:o,node:s,pages:i,layout:n,paper:r}){this._config=e,this._debugMode=e.debugMode,this._DOM=t,this._selector=o,this._node=s,this._virtualPaperGapSelector=o.virtualPaperGap,this._runningSafetySelector=o.runningSafety,this._printPageBreakSelector=o.printPageBreak,this._pageDivider=o.pageDivider,this._virtualPaper=o.virtualPaper,this._virtualPaperTopMargin=o.virtualPaperTopMargin,this._paperBody=o.paperBody,this._pages=i,this._root=n.root,this._contentFlow=n.contentFlow,this._paperFlow=n.paperFlow,this._paper=r,this._hasFrontPage=!!n.frontpageTemplate}create(){this._processFirstPage(),this._processOtherPages(),(!0===this._config.mask||"true"===this._config.mask)&&this._addMask()}_addMask(){const e=[...this._paperFlow.querySelectorAll(this._virtualPaper)],t=this._DOM.getElementOffsetTop(e.at(-1))/(e.length-1),o=this._DOM.getElementOffsetHeight(this._paperFlow.querySelector(this._virtualPaperTopMargin)),s=this._DOM.getElementOffsetHeight(this._paperFlow.querySelector(this._paperBody));!function({targetElement:e,maskHeight:t,maskWindow:o,maskTopPosition:s}){e.style=`\n -webkit-mask-image: linear-gradient(\n black 0,\n black ${o}px,\n transparent ${o}px,\n transparent ${t}px\n );\n mask-image: linear-gradient(\n black 0,\n black ${o}px,\n transparent ${o}px,\n transparent ${t}px\n );\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: 100% ${t}px;\n mask-size: 100% ${t}px;\n -webkit-mask-position: 100% ${s}px;\n mask-position: 100% ${s}px;\n -webkit-mask-repeat: repeat-y;\n mask-repeat: repeat-y;\n -webkit-mask-origin: border-box;\n mask-origin: border-box;\n `}({targetElement:this._contentFlow,maskHeight:t,maskWindow:s,maskTopPosition:o})}_processFirstPage(){let e;if(this._hasFrontPage){const t=this._insertFrontpageSpacer(this._contentFlow,this._paper.bodyHeight);this._pages.unshift({pageStart:t}),e=this._paper.createFrontpage({currentPage:1,totalPages:this._pages.length})}else e=this._paper.create({currentPage:1,totalPages:this._pages.length});this._insertIntoPaperFlow(e),this._insertIntoContentFlow(0)}_processOtherPages(){for(let e=1;e<this._pages.length;e++){const t=this._paper.create({currentPage:e+1,totalPages:this._pages.length}),o=this._createVirtualPaperGap();this._insertIntoPaperFlow(t,o),this._insertIntoContentFlow(e,o)}}_insertIntoPaperFlow(e,t){this._insertPaper(this._paperFlow,e,t)}_insertIntoContentFlow(e,t){const o=this._pages[e].pageStart,s=this._createPageBreaker(e,t);this._DOM.insertBefore(o,s),t&&this._insertFooterSpacer(s,this._paper.footerHeight,t),this._insertHeaderSpacer(s,this._paper.headerHeight),this._updatePageStartElementAttrValue(o,e)}_createPageBreaker(e,t){const o=this._node.create(this._pageDivider);return this._DOM.setAttribute(o,"[page]",`${e+1}`),t&&this._paper.footerHeight&&this._DOM.setStyles(o,{marginTop:this._paper.footerHeight-1+"px"}),this._paper.headerHeight&&this._DOM.setStyles(o,{marginBottom:this._paper.headerHeight-1+"px"}),o}_updatePageStartElementAttrValue(e,t){this._hasFrontPage&&this._node.markPageStartElement(e,`${t+1}`)}_insertPaper(e,t,o){o?this._DOM.insertAtEnd(e,o,t):this._DOM.insertAtEnd(e,t)}_createVirtualPaperGap(){return this._node.create(this._virtualPaperGapSelector)}_createVirtualPaperTopMargin(){return this._paper.createVirtualTopMargin()}_createVirtualPaperBottomMargin(){return this._paper.createVirtualBottomMargin()}_insertFrontpageSpacer(e,t){const o=this._node.create();return this._DOM.setStyles(o,{paddingBottom:t+"px"}),this._DOM.setAttribute(o,".printFrontpageSpacer"),this._DOM.insertAtStart(e,o),o}_insertHeaderSpacer(e,t){const o=this._DOM.createDocumentFragment(),s=this._node.create(this._runningSafetySelector);this._DOM.insertAtEnd(o,this._createVirtualPaperTopMargin(),s),this._DOM.insertAtEnd(e,o)}_insertFooterSpacer(e,t,o){const s=this._DOM.createDocumentFragment(),i=this._createVirtualPaperGap(),n=this._node.create(this._runningSafetySelector);this._DOM.insertAtEnd(s,n,this._createVirtualPaperBottomMargin(),this._node.create(this._printPageBreakSelector),i),this._DOM.insertAtStart(e,s),this._balanceFooter(n,i,o)}_balanceFooter(e,t,o){const s=this._node.getTop(o,this._root)-this._node.getTop(t,this._root);this._DOM.setStyles(e,{marginBottom:s+"px"}),this._debugMode&&console.assert(s>=0,`balancer is negative: ${s} < 0`,t)}}class _{constructor({config:e,DOM:t,selector:o,node:s,layout:i}){this._debugMode=e.debugMode,this._DOM=t,this._node=s,this._tocPageNumberSelector=e.tocPageNumberSelector,this._root=i.root,this._contentFlow=i.contentFlow,this._pageDividerSelector=o.pageDivider,this._debugToggler={_:!1}}render(){this._debugMode&&console.time("Processing TOC"),this._debugMode&&this._debugToggler._&&console.log(`\n📑 TOC: I am here!\n\ntocPageNumberSelector:\n • ${this._tocPageNumberSelector}\n pageDividerSelector:\n • ${this._pageDividerSelector}\n `);const e=this._node.getAll(this._tocPageNumberSelector,this._contentFlow);if(this._debugMode&&this._debugToggler._&&console.log("📑 tocPageNumberBoxes",e.length),!e.length)return void(this._debugMode&&this._debugToggler._&&console.log("📑 no valid toc"));const t=this._node.getAll(this._pageDividerSelector,this._contentFlow).reduce(((e,t,o)=>{const s=this._node.getTop(t,this._root)-1,i=this._DOM.getAttribute(t,"[page]");return e[s]=i,e}),{});this._debugMode&&this._debugToggler._&&console.log("📑 dataFromPagesMarkers",t);const o=e.reduce(((e,t)=>{const o=this._DOM.getDataId(t),s=this._DOM.getElementById(o),i=this._node.getTop(s,this._root);return e[i]={box:t,id:o,targetTop:i},e}),{});this._debugMode&&this._debugToggler._&&console.log("📑 dataFromTOC",o);const s={...t,...o};let i=0;this._debugMode&&this._debugToggler._&&console.groupCollapsed("Processing obj");for(const e in s){const t=s[e];this._debugMode&&this._debugToggler._&&console.log(`Processing ${e}: ${t}`),"string"==typeof t?i=t:(t.page=i,this._DOM.setInnerHTML(t.box,i))}this._debugMode&&this._debugToggler._&&console.groupEnd("Processing obj"),this._debugMode&&this._debugToggler._&&console.log("📑 tocObject",s),this._debugMode&&console.timeEnd("Processing TOC")}}class p{constructor({config:e,DOM:t,selector:o}){this._config=e,this._selector=o,this._DOM=t}init(){this._config.debugMode&&console.log("🐙 i am Validator!");const e=`${this._selector.paperFlow} ${this._selector.virtualPaperGap}`,t=`${this._selector.contentFlow} ${this._selector.virtualPaperGap}`,o=[...this._DOM.getAllElements(e)].map((e=>e.offsetTop)),s=[...this._DOM.getAllElements(t)].map((e=>e.offsetTop)),i=o.reduce(((e,t,o)=>(t!==s[o]&&e.push(o+1),e)),[]);console.assert(!i.length,"Problems with preview generation on the following pages: ",i)}}const u="color:Gray;border:1px solid;";const b="border:1px dashed #cccccc;background:#ffffff;color:#cccccc;";console.info("HTML2PDF4DOC v0.0.1");const m=document.currentScript.dataset,f=new class{constructor(t){this.params=t,this.selector=e,this.config}render(){console.time("HTML2PDF4DOC time"),console.groupCollapsed("%c config ",u+"color:LightGray"),this.config=function(t){let o={debugMode:!1,preloader:!1,preloaderTarget:"",preloaderBackground:"",mask:!1,noHangingSelectors:"",forcedPageBreakSelectors:"",pageBreakBeforeSelectors:"",pageBreakAfterSelectors:"",noBreakSelectors:"",tocPageNumberSelector:"html2pdf-toc-page-number",printLeftMargin:"21mm",printRightMargin:"21mm",printTopMargin:"12mm",printBottomMargin:"12mm",printFontSize:"12pt",printWidth:"210mm",printHeight:"297mm",headerMargin:"16px",footerMargin:"16px",virtualPagesGap:"16px"};const s={printWidth:"210mm",printHeight:"297mm"},i={printWidth:"148.5mm",printHeight:"210mm"};switch(t.printPaperSize){case"A5":case"a5":o={...o,...i};break;default:o={...o,...s}}o={...o,initialRoot:e.init,tocPageNumberSelector:e.tocPageNumber,...t},console.info("HTML2PDF4DOC config:",o);const n={printLeftMargin:o.printLeftMargin,printRightMargin:o.printRightMargin,printTopMargin:o.printTopMargin,printBottomMargin:o.printBottomMargin,printFontSize:o.printFontSize,printWidth:o.printWidth,printHeight:o.printHeight,headerMargin:o.headerMargin,footerMargin:o.footerMargin,virtualPagesGap:o.virtualPagesGap},r=document.createElement("div");return r.style="\n position:absolute;\n z-index:1000;\n left: 200%;\n ",document.body.append(r),Object.entries(n).forEach((([e,t])=>{r.style.width=t,n[e]=`${Math.trunc(r.getBoundingClientRect().width)}px`})),r.remove(),o={...o,...n},o.noHangingSelectors=o.noHangingSelectors+" H1 H2 H3 H4 H5 H6",o.forcedPageBreakSelectors=o.forcedPageBreakSelectors+" "+e.printForcedPageBreak,console.info("HTML2PDF4DOC config with converted units:",o),o}(this.params),console.groupEnd();const o=new t({DOM:window.document,debugMode:this.config.debugMode}),n=new i({config:this.config,DOM:o,selector:this.selector});this.config.debugMode&&console.groupCollapsed("%c Layout ",u);const r=new s({config:this.config,DOM:o,selector:this.selector,node:n});if(r.create(),this.config.debugMode&&console.groupEnd(),!r.success)return void console.error("Failed to create layout.\n\nWe have to interrupt the process of creating PDF preview. ");const l=new d({config:this.config,DOM:o,selector:this.selector,node:n,layout:r});this.config.debugMode&&console.group("%c Pages ",u);const g=new h({config:this.config,DOM:o,selector:this.selector,node:n,layout:r,referenceHeight:l.bodyHeight,referenceWidth:l.bodyWidth}).calculate();this.config.debugMode&&console.groupEnd(),this.config.debugMode&&console.groupCollapsed("%c Preview ",u),new c({config:this.config,DOM:o,selector:this.selector,node:n,layout:r,paper:l,pages:g}).create(),this.config.debugMode&&console.groupEnd(),new _({config:this.config,DOM:o,selector:this.selector,node:n,layout:r}).render(),new p({config:this.config,DOM:o,selector:this.selector,layout:r}).init(),o.setAttribute(r.root,"[success]"),console.timeEnd("HTML2PDF4DOC time")}}(m),M=new class{constructor(e){this._debugMode=e.debugMode,this._preloader,this._preloaderTarget=document.querySelector(e.preloaderTarget)||document.body,this._preloaderBackground=e.preloaderBackground||"white"}create(){this._debugMode&&console.groupCollapsed("%c Preloader ",b),this._insertStyle(),this._preloader=document.createElement("div"),this._preloader.classList.add("lds-dual-ring"),this._preloaderTarget.append(this._preloader),this._debugMode&&console.groupEnd("%c Preloader ",b)}remove(){if(!this._preloader)return;let e=1;const t=setInterval((()=>{e<=.1&&(clearInterval(t),this._preloader.remove()),this._preloader.style.opacity=e,e-=.1*e}),50);this._debugMode&&console.log("%c Preloader removed ",b)}_insertStyle(){const e=document.querySelector("head"),t=document.createElement("style");t.append(document.createTextNode(this._css())),t.setAttribute("data-preloader-style",""),e.append(t)}_css(){return`\n /* PRELOADER */\n .lds-dual-ring {\n position: absolute;\n z-index: 99999;\n top: 0; left: 0; bottom: 0; right: 0;\n background: ${this._preloaderBackground};\n display: flex;\n justify-content: center;\n align-items: center;\n }\n /*\n .lds-dual-ring:after {\n content: " ";\n display: block;\n width: 64px;\n height: 64px;\n margin: 8px;\n border-radius: 50%;\n border: 6px solid #eee;\n border-color: #eee transparent #eee transparent;\n animation: lds-dual-ring 1.2s linear infinite;\n }\n @keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n */\n `}}(m);window.addEventListener("load",(function(e){f.render()})),"true"===m.preloader&&(window.addEventListener("DOMContentLoaded",(function(e){M.create()})),window.addEventListener("load",(function(e){M.remove()})))})();
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from strictdoc import __version__
|
2
2
|
from strictdoc.backend.sdoc.models.document import Document
|
3
|
+
from strictdoc.backend.sdoc.models.document_view import ViewElement
|
3
4
|
from strictdoc.core.document_tree_iterator import DocumentTreeIterator
|
4
5
|
from strictdoc.core.project_config import ProjectConfig
|
5
6
|
from strictdoc.export.html.document_type import DocumentType
|
@@ -20,6 +21,10 @@ class DocumentHTMLGenerator:
|
|
20
21
|
):
|
21
22
|
output = ""
|
22
23
|
|
24
|
+
current_view: ViewElement = document.view.get_current_view(
|
25
|
+
project_config.view
|
26
|
+
)
|
27
|
+
|
23
28
|
document_tree_iterator = DocumentTreeIterator(
|
24
29
|
traceability_index.document_tree
|
25
30
|
)
|
@@ -42,6 +47,7 @@ class DocumentHTMLGenerator:
|
|
42
47
|
strictdoc_version=__version__,
|
43
48
|
document_tree=traceability_index.document_tree,
|
44
49
|
document_tree_iterator=document_tree_iterator,
|
50
|
+
current_view=current_view,
|
45
51
|
)
|
46
52
|
|
47
53
|
return output
|
{strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document_deep_trace.py
RENAMED
@@ -1,4 +1,5 @@
|
|
1
1
|
from strictdoc import __version__
|
2
|
+
from strictdoc.backend.sdoc.models.document_view import ViewElement
|
2
3
|
from strictdoc.core.document_tree_iterator import DocumentTreeIterator
|
3
4
|
from strictdoc.core.project_config import ProjectConfig
|
4
5
|
from strictdoc.export.html.document_type import DocumentType
|
@@ -28,6 +29,10 @@ class DocumentDeepTraceHTMLGenerator:
|
|
28
29
|
|
29
30
|
document_iterator = traceability_index.get_document_iterator(document)
|
30
31
|
|
32
|
+
current_view: ViewElement = document.view.get_current_view(
|
33
|
+
project_config.view
|
34
|
+
)
|
35
|
+
|
31
36
|
output += template.render(
|
32
37
|
project_config=project_config,
|
33
38
|
document=document,
|
@@ -41,6 +46,7 @@ class DocumentDeepTraceHTMLGenerator:
|
|
41
46
|
strictdoc_version=__version__,
|
42
47
|
document_tree=traceability_index.document_tree,
|
43
48
|
document_tree_iterator=document_tree_iterator,
|
49
|
+
current_view=current_view,
|
44
50
|
)
|
45
51
|
|
46
52
|
return output
|
@@ -5,6 +5,7 @@ from jinja2 import Template
|
|
5
5
|
|
6
6
|
from strictdoc import __version__
|
7
7
|
from strictdoc.backend.sdoc.models.document import Document
|
8
|
+
from strictdoc.backend.sdoc.models.document_view import ViewElement
|
8
9
|
from strictdoc.core.document_tree_iterator import DocumentTreeIterator
|
9
10
|
from strictdoc.core.project_config import ProjectConfig
|
10
11
|
from strictdoc.export.html.document_type import DocumentType
|
@@ -23,6 +24,10 @@ class DocumentHTML2PDFGenerator:
|
|
23
24
|
standalone: bool,
|
24
25
|
html_templates: HTMLTemplates,
|
25
26
|
):
|
27
|
+
current_view: ViewElement = document.view.get_current_view(
|
28
|
+
project_config.view
|
29
|
+
)
|
30
|
+
|
26
31
|
output = ""
|
27
32
|
|
28
33
|
date_today = datetime.today().strftime("%Y-%m-%d")
|
@@ -55,6 +60,7 @@ class DocumentHTML2PDFGenerator:
|
|
55
60
|
document_tree_iterator=document_tree_iterator,
|
56
61
|
custom_html2pdf_template=custom_html2pdf_template,
|
57
62
|
date_today=date_today,
|
63
|
+
current_view=current_view,
|
58
64
|
)
|
59
65
|
|
60
66
|
return output
|
{strictdoc-0.0.49a3 → strictdoc-0.0.49a5}/strictdoc/export/html/generators/document_trace.py
RENAMED
@@ -1,4 +1,5 @@
|
|
1
1
|
from strictdoc import __version__
|
2
|
+
from strictdoc.backend.sdoc.models.document_view import ViewElement
|
2
3
|
from strictdoc.core.document_tree_iterator import DocumentTreeIterator
|
3
4
|
from strictdoc.core.project_config import ProjectConfig
|
4
5
|
from strictdoc.export.html.document_type import DocumentType
|
@@ -16,6 +17,10 @@ class DocumentTraceHTMLGenerator:
|
|
16
17
|
link_renderer: LinkRenderer,
|
17
18
|
html_templates: HTMLTemplates,
|
18
19
|
):
|
20
|
+
current_view: ViewElement = document.view.get_current_view(
|
21
|
+
project_config.view
|
22
|
+
)
|
23
|
+
|
19
24
|
output = ""
|
20
25
|
|
21
26
|
document_tree_iterator = DocumentTreeIterator(
|
@@ -40,6 +45,7 @@ class DocumentTraceHTMLGenerator:
|
|
40
45
|
strictdoc_version=__version__,
|
41
46
|
document_tree=traceability_index.document_tree,
|
42
47
|
document_tree_iterator=document_tree_iterator,
|
48
|
+
current_view=current_view,
|
43
49
|
)
|
44
50
|
|
45
51
|
return output
|