nautobot 3.0.0a2__py3-none-any.whl → 3.0.0a3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nautobot might be problematic. Click here for more details.
- nautobot/apps/choices.py +0 -2
- nautobot/apps/filters.py +7 -9
- nautobot/apps/models.py +2 -2
- nautobot/apps/ui.py +9 -1
- nautobot/circuits/filters.py +3 -2
- nautobot/circuits/navigation.py +3 -2
- nautobot/circuits/templates/circuits/circuit.html +1 -1
- nautobot/circuits/templates/circuits/circuit_create.html +3 -3
- nautobot/circuits/templates/circuits/circuittermination.html +1 -1
- nautobot/circuits/templates/circuits/circuittermination_create.html +9 -24
- nautobot/circuits/templates/circuits/circuittype.html +1 -1
- nautobot/circuits/templates/circuits/inc/circuit_termination_cable_fragment.html +6 -6
- nautobot/circuits/templates/circuits/inc/speed_widget.html +12 -12
- nautobot/circuits/templates/circuits/providernetwork.html +1 -1
- nautobot/circuits/tests/integration/test_circuit.py +10 -13
- nautobot/cloud/filters.py +1 -1
- nautobot/cloud/navigation.py +3 -2
- nautobot/core/api/schema.py +1 -1
- nautobot/core/api/serializers.py +6 -1
- nautobot/core/api/urls.py +1 -0
- nautobot/core/api/views.py +8 -0
- nautobot/core/apps/__init__.py +11 -10
- nautobot/core/celery/__init__.py +3 -5
- nautobot/core/checks.py +46 -0
- nautobot/core/cli/bootstrap_v3_to_v5.py +70 -1
- nautobot/core/cli/migrate_deprecated_templates.py +200 -0
- nautobot/core/constants.py +3 -0
- nautobot/core/context_processors.py +9 -1
- nautobot/core/forms/forms.py +1 -1
- nautobot/core/jobs/__init__.py +6 -3
- nautobot/core/jobs/groups.py +31 -1
- nautobot/core/management/commands/generate_test_data.py +28 -9
- nautobot/core/models/generics.py +9 -1
- nautobot/core/models/tree_queries.py +10 -5
- nautobot/core/settings.py +18 -12
- nautobot/core/settings.yaml +13 -7
- nautobot/core/signals.py +12 -1
- nautobot/core/tables.py +13 -6
- nautobot/core/templates/40x.html +1 -1
- nautobot/core/templates/500.html +2 -2
- nautobot/core/templates/admin/config/config.html +12 -12
- nautobot/core/templates/admin/index.html +3 -3
- nautobot/core/templates/buttons/export.html +1 -1
- nautobot/core/templates/components/button/dropdown.html +5 -3
- nautobot/core/templates/components/panel/body_wrapper_generic_table.html +1 -1
- nautobot/core/templates/components/panel/panel.html +3 -3
- nautobot/core/templates/components/tab/content_wrapper.html +2 -3
- nautobot/core/templates/components/tab/label_wrapper_distinct_view.html +1 -1
- nautobot/core/templates/echarts/echarts.html +1 -1
- nautobot/core/templates/generic/object_bulk_add_component.html +2 -1
- nautobot/core/templates/generic/object_bulk_create.html +4 -3
- nautobot/core/templates/generic/object_bulk_destroy.html +3 -3
- nautobot/core/templates/generic/object_bulk_remove.html +2 -2
- nautobot/core/templates/generic/object_bulk_update.html +5 -4
- nautobot/core/templates/generic/object_create.html +5 -4
- nautobot/core/templates/generic/object_import.html +2 -1
- nautobot/core/templates/generic/object_list.html +12 -4
- nautobot/core/templates/generic/object_notes.html +5 -3
- nautobot/core/templates/generic/object_retrieve.html +2 -3
- nautobot/core/templates/graphene/graphiql.html +7 -7
- nautobot/core/templates/home.html +1 -1
- nautobot/core/templates/import_success.html +2 -1
- nautobot/core/templates/inc/computed_fields/panel_data.html +1 -1
- nautobot/core/templates/inc/created_updated.html +7 -3
- nautobot/core/templates/inc/custom_fields/panel_data.html +1 -1
- nautobot/core/templates/inc/form_static_field.html +6 -0
- nautobot/core/templates/inc/header.html +1 -1
- nautobot/core/templates/inc/image_attachments.html +2 -1
- nautobot/core/templates/inc/nav_menu.html +2 -1
- nautobot/core/templates/inc/search_panel.html +4 -4
- nautobot/core/templates/login.html +4 -2
- nautobot/core/templates/nautobot_config.py.j2 +6 -5
- nautobot/core/templates/redoc_ui.html +7 -0
- nautobot/core/templates/search.html +1 -1
- nautobot/core/templates/swagger_ui.html +17 -3
- nautobot/core/templates/system_jobs/import_objects.html +1 -2
- nautobot/core/templates/utilities/confirmation_form.html +2 -2
- nautobot/core/templates/utilities/obj_table.html +10 -2
- nautobot/core/templates/utilities/render_field.html +7 -7
- nautobot/core/templates/utilities/render_jinja2.html +2 -2
- nautobot/core/templates/utilities/templatetags/filter_form_drawer.html +4 -4
- nautobot/core/templates/utilities/theme_preview.html +16 -3
- nautobot/core/templates/widgets/selectwithdisabled_option.html +3 -1
- nautobot/core/templatetags/helpers.py +52 -6
- nautobot/core/testing/api.py +68 -9
- nautobot/core/testing/filters.py +0 -23
- nautobot/core/testing/integration.py +23 -10
- nautobot/core/testing/mixins.py +2 -0
- nautobot/core/testing/views.py +4 -0
- nautobot/core/tests/integration/test_app_home.py +34 -30
- nautobot/core/tests/integration/test_app_navbar.py +3 -0
- nautobot/core/tests/nautobot_config_without_example_apps.py +4 -0
- nautobot/core/tests/runner.py +9 -1
- nautobot/core/tests/test_api.py +5 -3
- nautobot/core/tests/test_breadcrumbs.py +6 -7
- nautobot/core/tests/test_checks.py +28 -0
- nautobot/core/tests/test_cli.py +40 -0
- nautobot/core/tests/test_config.py +2 -1
- nautobot/core/tests/test_forms.py +55 -13
- nautobot/core/tests/test_jobs.py +75 -1
- nautobot/core/tests/test_nautobot_server.py +2 -0
- nautobot/core/tests/test_navigations.py +76 -1
- nautobot/core/tests/test_patch_social_django.py +42 -0
- nautobot/core/tests/test_tables.py +3 -1
- nautobot/core/tests/test_templatetags_helpers.py +53 -13
- nautobot/core/tests/test_templatetags_ui_framework.py +4 -4
- nautobot/core/tests/test_tree_queries.py +14 -1
- nautobot/core/tests/test_ui.py +1 -1
- nautobot/core/tests/test_utils.py +31 -4
- nautobot/core/tests/test_views.py +159 -31
- nautobot/core/ui/breadcrumbs.py +2 -12
- nautobot/core/ui/choices.py +142 -10
- nautobot/core/ui/constants.py +76 -12
- nautobot/core/ui/object_detail.py +92 -12
- nautobot/core/urls.py +12 -1
- nautobot/core/utils/cache.py +2 -1
- nautobot/core/utils/filtering.py +17 -17
- nautobot/core/utils/lookup.py +3 -8
- nautobot/core/utils/module_loading.py +21 -0
- nautobot/core/utils/patch_social_django.py +128 -0
- nautobot/core/views/__init__.py +38 -1
- nautobot/core/views/generic.py +3 -3
- nautobot/core/views/mixins.py +15 -3
- nautobot/core/views/renderers.py +2 -0
- nautobot/core/views/viewsets.py +2 -1
- nautobot/data_validation/apps.py +1 -5
- nautobot/data_validation/custom_validators.py +4 -4
- nautobot/data_validation/filters.py +1 -1
- nautobot/data_validation/forms.py +40 -0
- nautobot/data_validation/migrations/0001_initial.py +0 -7
- nautobot/data_validation/migrations/0002_data_migration_from_app.py +0 -12
- nautobot/data_validation/models.py +16 -7
- nautobot/data_validation/navigation.py +8 -1
- nautobot/data_validation/tables.py +12 -5
- nautobot/data_validation/templates/data_validation/datacompliance_tab.html +1 -0
- nautobot/data_validation/templates/data_validation/device_constraints.html +61 -0
- nautobot/data_validation/tests/__init__.py +2 -2
- nautobot/data_validation/tests/migrations/test_migrations.py +83 -3
- nautobot/data_validation/tests/test_data_compliance_rules.py +12 -7
- nautobot/data_validation/tests/test_filters.py +8 -6
- nautobot/data_validation/tests/test_models.py +15 -0
- nautobot/data_validation/tests/test_views.py +190 -32
- nautobot/data_validation/urls.py +2 -5
- nautobot/data_validation/views.py +73 -40
- nautobot/dcim/api/serializers.py +0 -13
- nautobot/dcim/apps.py +4 -0
- nautobot/dcim/choices.py +16 -0
- nautobot/dcim/custom_validators.py +84 -0
- nautobot/dcim/filter_mixins.py +353 -4
- nautobot/dcim/{filters/__init__.py → filters.py} +2 -35
- nautobot/dcim/forms.py +1 -1
- nautobot/dcim/migrations/0078_remove_device_location_tenant_name_uniqueness.py +16 -0
- nautobot/dcim/migrations/0079_device_name_data_migration.py +59 -0
- nautobot/dcim/models/device_components.py +81 -68
- nautobot/dcim/models/devices.py +13 -16
- nautobot/dcim/navigation.py +7 -6
- nautobot/dcim/tables/devices.py +3 -0
- nautobot/dcim/tables/template_code.py +14 -14
- nautobot/dcim/templates/dcim/cable.html +2 -61
- nautobot/dcim/templates/dcim/cable_connect.html +28 -112
- nautobot/dcim/templates/dcim/cable_edit.html +2 -5
- nautobot/dcim/templates/dcim/cable_retrieve.html +61 -0
- nautobot/dcim/templates/dcim/cable_trace.html +1 -3
- nautobot/dcim/templates/dcim/cable_update.html +5 -0
- nautobot/dcim/templates/dcim/consoleport.html +6 -5
- nautobot/dcim/templates/dcim/consoleserverport.html +6 -5
- nautobot/dcim/templates/dcim/device/config.html +2 -2
- nautobot/dcim/templates/dcim/device/consoleports.html +1 -1
- nautobot/dcim/templates/dcim/device/consoleserverports.html +1 -1
- nautobot/dcim/templates/dcim/device/devicebays.html +1 -1
- nautobot/dcim/templates/dcim/device/frontports.html +1 -1
- nautobot/dcim/templates/dcim/device/interfaces.html +1 -1
- nautobot/dcim/templates/dcim/device/inventory.html +1 -1
- nautobot/dcim/templates/dcim/device/lldp_neighbors.html +1 -1
- nautobot/dcim/templates/dcim/device/modulebays.html +1 -1
- nautobot/dcim/templates/dcim/device/poweroutlets.html +1 -1
- nautobot/dcim/templates/dcim/device/powerports.html +1 -1
- nautobot/dcim/templates/dcim/device/rearports.html +1 -1
- nautobot/dcim/templates/dcim/device/status.html +8 -8
- nautobot/dcim/templates/dcim/device/wireless.html +1 -1
- nautobot/dcim/templates/dcim/device.html +1 -1
- nautobot/dcim/templates/dcim/device_component_add.html +2 -2
- nautobot/dcim/templates/dcim/device_create.html +5 -3
- nautobot/dcim/templates/dcim/device_interface_delete.html +1 -1
- nautobot/dcim/templates/dcim/device_list.html +73 -10
- nautobot/dcim/templates/dcim/devicebay_populate.html +2 -2
- nautobot/dcim/templates/dcim/devicetype.html +1 -1
- nautobot/dcim/templates/dcim/devicetype_component_add.html +2 -2
- nautobot/dcim/templates/dcim/footer_convert_to_contact_or_team_record.html +14 -0
- nautobot/dcim/templates/dcim/frontport.html +9 -8
- nautobot/dcim/templates/dcim/inc/edit_form_softwareversion_js.html +2 -2
- nautobot/dcim/templates/dcim/interface.html +26 -6
- nautobot/dcim/templates/dcim/interface_bulk_delete.html +1 -1
- nautobot/dcim/templates/dcim/inventoryitem_add.html +3 -1
- nautobot/dcim/templates/dcim/inventoryitem_bulk_delete.html +1 -1
- nautobot/dcim/templates/dcim/inventoryitem_edit.html +3 -1
- nautobot/dcim/templates/dcim/location_retrieve.html +1 -242
- nautobot/dcim/templates/dcim/module/base.html +49 -9
- nautobot/dcim/templates/dcim/module_list.html +57 -8
- nautobot/dcim/templates/dcim/modulefamily_retrieve.html +1 -1
- nautobot/dcim/templates/dcim/moduletype_retrieve.html +49 -9
- nautobot/dcim/templates/dcim/platform_create.html +1 -1
- nautobot/dcim/templates/dcim/powerfeed.html +1 -1
- nautobot/dcim/templates/dcim/powerpanel.html +1 -1
- nautobot/dcim/templates/dcim/powerport.html +5 -4
- nautobot/dcim/templates/dcim/rack_elevation_list.html +16 -4
- nautobot/dcim/templates/dcim/rack_retrieve.html +33 -15
- nautobot/dcim/templates/dcim/rearport.html +7 -6
- nautobot/dcim/templates/dcim/virtualchassis.html +1 -1
- nautobot/dcim/templates/dcim/virtualchassis_add_member.html +16 -14
- nautobot/dcim/templates/dcim/virtualchassis_update.html +14 -6
- nautobot/dcim/tests/integration/test_controller.py +1 -0
- nautobot/dcim/tests/test_api.py +8 -0
- nautobot/dcim/tests/test_custom_validators.py +229 -0
- nautobot/dcim/tests/test_filters.py +12 -6
- nautobot/dcim/tests/test_models.py +63 -4
- nautobot/dcim/tests/test_views.py +63 -22
- nautobot/dcim/urls.py +64 -21
- nautobot/dcim/utils.py +3 -3
- nautobot/dcim/views.py +547 -273
- nautobot/extras/api/views.py +9 -1
- nautobot/extras/choices.py +2 -13
- nautobot/extras/{filters/mixins.py → filter_mixins.py} +1 -1
- nautobot/extras/{filters/customfields.py → filter_mixins_customfields.py} +42 -6
- nautobot/extras/{filters/__init__.py → filters.py} +14 -46
- nautobot/extras/forms/forms.py +5 -13
- nautobot/extras/forms/mixins.py +0 -41
- nautobot/extras/management/__init__.py +9 -0
- nautobot/extras/migrations/0127_approval_workflow_models.py +6 -6
- nautobot/extras/migrations/0129_jobresult_debug_log_count_jobresult_error_log_count_and_more.py +37 -0
- nautobot/extras/migrations/0130_jobresult_generate_log_entry_counts.py +42 -0
- nautobot/extras/models/__init__.py +1 -2
- nautobot/extras/models/approvals.py +22 -13
- nautobot/extras/models/contacts.py +2 -0
- nautobot/extras/models/groups.py +44 -5
- nautobot/extras/models/jobs.py +59 -1
- nautobot/extras/models/mixins.py +28 -0
- nautobot/extras/models/models.py +13 -0
- nautobot/extras/models/secrets.py +1 -0
- nautobot/extras/models/statuses.py +0 -15
- nautobot/extras/navigation.py +13 -9
- nautobot/extras/plugins/__init__.py +33 -55
- nautobot/extras/plugins/tables.py +3 -3
- nautobot/extras/plugins/urls.py +2 -21
- nautobot/extras/plugins/utils.py +1 -33
- nautobot/extras/plugins/views.py +0 -4
- nautobot/extras/signals.py +20 -19
- nautobot/extras/tables.py +52 -68
- nautobot/extras/templates/extras/approval_dashboard.html +7 -5
- nautobot/extras/templates/extras/approvalworkflowdefinition_update.html +4 -2
- nautobot/extras/templates/extras/approvalworkflowstage_retrieve.html +20 -12
- nautobot/extras/templates/extras/computedfield.html +1 -1
- nautobot/extras/templates/extras/configcontext.html +1 -1
- nautobot/extras/templates/extras/configcontextschema_validation.html +2 -2
- nautobot/extras/templates/extras/customfield.html +1 -1
- nautobot/extras/templates/extras/dynamicgroup_retrieve.html +11 -5
- nautobot/extras/templates/extras/dynamicgroup_update.html +1 -1
- nautobot/extras/templates/extras/gitrepository_result.html +0 -2
- nautobot/extras/templates/extras/graphqlquery_retrieve.html +1 -96
- nautobot/extras/templates/extras/inc/approval_buttons_column.html +20 -6
- nautobot/extras/templates/extras/inc/bulk_edit_overridable_field.html +8 -7
- nautobot/extras/templates/extras/inc/configcontext_format.html +10 -3
- nautobot/extras/templates/extras/inc/graphqlquery_execute.html +71 -0
- nautobot/extras/templates/extras/inc/job_tiles.html +15 -3
- nautobot/extras/templates/extras/inc/json_format.html +10 -3
- nautobot/extras/templates/extras/inc/overridable_field.html +13 -12
- nautobot/extras/templates/extras/job.html +29 -12
- nautobot/extras/templates/extras/job_bulk_edit.html +18 -0
- nautobot/extras/templates/extras/job_edit.html +52 -46
- nautobot/extras/templates/extras/job_list.html +29 -25
- nautobot/extras/templates/extras/marketplace.html +5 -9
- nautobot/extras/templates/extras/object_configcontext.html +1 -1
- nautobot/extras/templates/extras/object_dynamicgroups.html +2 -2
- nautobot/extras/templates/extras/objectchange_retrieve.html +19 -37
- nautobot/extras/templates/extras/plugin_detail.html +26 -21
- nautobot/extras/templates/extras/plugins_list.html +16 -26
- nautobot/extras/templates/extras/role_retrieve.html +64 -0
- nautobot/extras/templates/extras/scheduledjob.html +4 -2
- nautobot/extras/templates/extras/secretsgroup.html +1 -1
- nautobot/extras/templates/extras/tag.html +1 -1
- nautobot/extras/templatetags/custom_links.py +12 -12
- nautobot/extras/templatetags/job_buttons.py +14 -12
- nautobot/extras/test_jobs/invalid_import.py +9 -0
- nautobot/extras/test_jobs/log_counts_by_level.py +23 -0
- nautobot/extras/test_jobs/missing_import.py +11 -0
- nautobot/extras/tests/integration/test_configcontextschema.py +27 -26
- nautobot/extras/tests/integration/test_customfields.py +8 -7
- nautobot/extras/tests/integration/test_dynamicgroups.py +5 -1
- nautobot/extras/tests/integration/test_plugin_banner.py +3 -0
- nautobot/extras/tests/integration/test_plugins.py +18 -6
- nautobot/extras/tests/test_api.py +27 -18
- nautobot/extras/tests/test_approvals.py +38 -38
- nautobot/extras/tests/test_changelog.py +35 -3
- nautobot/extras/tests/test_customfields.py +22 -13
- nautobot/extras/tests/test_customfields_filters.py +479 -0
- nautobot/extras/tests/test_dynamicgroups.py +39 -1
- nautobot/extras/tests/test_filters.py +21 -19
- nautobot/extras/tests/test_forms.py +18 -21
- nautobot/extras/tests/test_jobs.py +25 -4
- nautobot/extras/tests/test_migrations.py +1 -0
- nautobot/extras/tests/test_models.py +13 -31
- nautobot/extras/tests/test_plugins.py +36 -10
- nautobot/extras/tests/test_views.py +31 -30
- nautobot/extras/views.py +81 -19
- nautobot/ipam/factory.py +7 -0
- nautobot/ipam/filter_mixins.py +38 -0
- nautobot/ipam/filters.py +27 -38
- nautobot/ipam/formfields.py +1 -1
- nautobot/ipam/forms.py +6 -3
- nautobot/ipam/migrations/0030_ipam__namespaces.py +13 -0
- nautobot/ipam/migrations/0031_ipam___data_migrations.py +4 -1
- nautobot/ipam/migrations/0054_namespace_tenant.py +25 -0
- nautobot/ipam/models.py +29 -2
- nautobot/ipam/navigation.py +3 -2
- nautobot/ipam/signals.py +71 -0
- nautobot/ipam/tables.py +13 -6
- nautobot/ipam/templates/ipam/inc/toggle_available.html +10 -10
- nautobot/ipam/templates/ipam/inc/vlangroup_header.html +1 -0
- nautobot/ipam/templates/ipam/ipaddress.html +14 -0
- nautobot/ipam/templates/ipam/ipaddress_merge.html +3 -3
- nautobot/ipam/templates/ipam/ipaddresstointerface_retrieve.html +1 -0
- nautobot/ipam/templates/ipam/namespace_update.html +15 -0
- nautobot/ipam/templates/ipam/prefix_delete.html +1 -1
- nautobot/ipam/templates/ipam/prefix_list.html +14 -13
- nautobot/ipam/templates/ipam/service.html +1 -1
- nautobot/ipam/templates/ipam/vlan.html +1 -1
- nautobot/ipam/templates/ipam/vlan_interfaces.html +1 -1
- nautobot/ipam/templates/ipam/vlan_vminterfaces.html +1 -1
- nautobot/ipam/tests/migration/test_migrations.py +89 -0
- nautobot/ipam/tests/test_api.py +13 -6
- nautobot/ipam/tests/test_filters.py +10 -0
- nautobot/ipam/tests/test_forms.py +1 -1
- nautobot/ipam/tests/test_models.py +43 -1
- nautobot/ipam/tests/test_tables.py +1 -2
- nautobot/ipam/tests/test_utils.py +1 -1
- nautobot/ipam/tests/test_views.py +13 -14
- nautobot/ipam/ui.py +0 -17
- nautobot/ipam/utils/migrations.py +16 -2
- nautobot/ipam/utils/testing.py +9 -3
- nautobot/ipam/views.py +46 -6
- nautobot/project-static/dist/css/nautobot.css +1 -1
- nautobot/project-static/dist/css/nautobot.css.map +1 -1
- nautobot/project-static/dist/js/nautobot.js +1 -1
- nautobot/project-static/dist/js/nautobot.js.map +1 -1
- nautobot/project-static/js/cabletrace.js +1 -1
- nautobot/project-static/js/interface_filtering.js +20 -16
- nautobot/project-static/nautobot-icons/battery-3.svg +3 -0
- nautobot/project-static/nautobot-icons/cloud.svg +1 -1
- nautobot/project-static/nautobot-icons/control-panel.svg +1 -1
- nautobot/project-static/nautobot-icons/device-lifecycle.svg +1 -1
- nautobot/project-static/nautobot-icons/elements.svg +1 -1
- nautobot/project-static/nautobot-icons/extensibility.svg +3 -0
- nautobot/project-static/nautobot-icons/hammer.svg +1 -1
- nautobot/project-static/nautobot-icons/organization.svg +3 -0
- nautobot/project-static/nautobot-icons/secrets.svg +1 -1
- nautobot/project-static/nautobot-icons/security.svg +3 -0
- nautobot/project-static/nautobot-icons/server.svg +1 -1
- nautobot/project-static/nautobot-icons/star-filled.svg +1 -1
- nautobot/project-static/nautobot-icons/star.svg +1 -1
- nautobot/tenancy/api/serializers.py +1 -0
- nautobot/tenancy/api/views.py +2 -1
- nautobot/tenancy/{filters/__init__.py → filters.py} +2 -10
- nautobot/tenancy/navigation.py +3 -1
- nautobot/tenancy/tests/test_filters.py +0 -2
- nautobot/tenancy/views.py +2 -1
- nautobot/ui/src/js/collapse.js +3 -3
- nautobot/ui/src/js/nautobot.js +16 -0
- nautobot/ui/src/scss/colors.scss +1 -1
- nautobot/ui/src/scss/nautobot.scss +61 -28
- nautobot/users/templates/users/profile.html +45 -12
- nautobot/users/templates/users/sessionkey_delete.html +1 -1
- nautobot/users/tests/test_api.py +4 -0
- nautobot/users/views.py +4 -2
- nautobot/virtualization/models.py +1 -68
- nautobot/virtualization/navigation.py +3 -2
- nautobot/virtualization/templates/virtualization/virtual_machine_vminterface_delete.html +1 -1
- nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -1
- nautobot/virtualization/templates/virtualization/virtualmachine_list.html +2 -2
- nautobot/virtualization/templates/virtualization/virtualmachine_update.html +3 -1
- nautobot/virtualization/tests/test_api.py +3 -0
- nautobot/virtualization/tests/test_models.py +44 -4
- nautobot/vpn/__init__.py +0 -0
- nautobot/vpn/api/serializers.py +113 -0
- nautobot/vpn/api/urls.py +19 -0
- nautobot/vpn/api/views.py +70 -0
- nautobot/vpn/apps.py +8 -0
- nautobot/vpn/choices.py +171 -0
- nautobot/vpn/factory.py +209 -0
- nautobot/vpn/filters.py +233 -0
- nautobot/vpn/forms.py +486 -0
- nautobot/vpn/homepage.py +19 -0
- nautobot/vpn/migrations/0001_initial.py +541 -0
- nautobot/vpn/migrations/0002_populate_defaults.py +199 -0
- nautobot/vpn/migrations/__init__.py +0 -0
- nautobot/vpn/models.py +527 -0
- nautobot/vpn/navigation.py +98 -0
- nautobot/vpn/tables.py +380 -0
- nautobot/vpn/templates/vpn/vpnprofile.html +2 -0
- nautobot/vpn/templates/vpn/vpnprofile_create.html +150 -0
- nautobot/vpn/tests/__init__.py +0 -0
- nautobot/vpn/tests/test_api.py +341 -0
- nautobot/vpn/tests/test_filters.py +139 -0
- nautobot/vpn/tests/test_forms.py +294 -0
- nautobot/vpn/tests/test_models.py +97 -0
- nautobot/vpn/tests/test_views.py +281 -0
- nautobot/vpn/urls.py +16 -0
- nautobot/vpn/views.py +437 -0
- nautobot/wireless/navigation.py +3 -2
- nautobot/wireless/tests/integration/test_radio_profile.py +1 -5
- nautobot/wireless/tests/test_api.py +1 -1
- {nautobot-3.0.0a2.dist-info → nautobot-3.0.0a3.dist-info}/METADATA +14 -14
- {nautobot-3.0.0a2.dist-info → nautobot-3.0.0a3.dist-info}/RECORD +417 -366
- {nautobot-3.0.0a2.dist-info → nautobot-3.0.0a3.dist-info}/entry_points.txt +1 -0
- nautobot/data_validation/template_content.py +0 -42
- nautobot/dcim/filters/mixins.py +0 -354
- nautobot/ipam/templates/ipam/inc/prefix_header_extra_content_table.html +0 -4
- /nautobot/tenancy/{filters/mixins.py → filter_mixins.py} +0 -0
- {nautobot-3.0.0a2.dist-info → nautobot-3.0.0a3.dist-info}/LICENSE.txt +0 -0
- {nautobot-3.0.0a2.dist-info → nautobot-3.0.0a3.dist-info}/NOTICE +0 -0
- {nautobot-3.0.0a2.dist-info → nautobot-3.0.0a3.dist-info}/WHEEL +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{"use strict";var e,t={226:(e,t,n)=>{var a=n(336),o=n(576),r=n(209),s=n(430),i=n(11),l=(n(283),n(75)),d=n(402),c=n(359),u=n(347),m=n(37),p=n(692);n(139),n(458);const g="nb-draggable",b="nb-draggable-container",h="nb-dragging",w="nb-drawer-open",v=(e,t)=>{if(!e)return;e.classList.toggle(w,t);const n=e.classList.contains(w);e.setAttribute("aria-hidden",n?"false":"true");const a=[...document.querySelectorAll(`[data-nb-toggle="drawer"][data-nb-target="#${e.id}"]`)];if(a.forEach((e=>e.setAttribute("aria-expanded",n?"true":"false"))),n)[...document.getElementsByClassName(w)].filter((t=>t!==e)).forEach((e=>v(e,!1))),(()=>{let t=100;window.requestAnimationFrame((function n(){"visible"===window.getComputedStyle(e).visibility?e.focus():t>0&&(t-=1,window.requestAnimationFrame(n))}))})();else if(e.contains(document.activeElement)){const e=a[0]||document.querySelector("main");e?.focus({preventScroll:!0})}const o=n?"nb-drawer:opened":"nb-drawer:closed";e.dispatchEvent(new CustomEvent(o,{bubbles:!0,cancelable:!0}))},f="historyState",y=e=>{const t=void 0===e?window.history?.state:e;void 0!==t&&window.sessionStorage?.setItem(f,JSON.stringify(t))},E=(e,t={},...n)=>{const a=document.createElement(e);return Object.entries(t).forEach((([e,t])=>a.setAttribute("className"===e?"class":e,t))),n.forEach((e=>"string"==typeof e?a.insertAdjacentText("beforeend",e):a.appendChild(e))),a},S=(e,...t)=>[...e.classList.entries()].filter((([,e])=>!t.includes(e))).forEach((([,t])=>e.classList.remove(t))),A=e=>{const t=window.getComputedStyle(document.documentElement).fontSize;return e/parseInt(t,10)},L=A(12),x=A(6),k=A(20),q=`${L+k+x}rem`;var C=n(762);const O=e=>e instanceof Document||e instanceof Element?e:e[0],j=(e,t)=>{$(e).val(null),(t??[]).forEach((t=>{if(!e.querySelector(`option[value="${t.value}"]`)){const n=document.createElement("option");n.innerText=t.text,n.setAttribute("selected","true"),n.setAttribute("value",t.value),e.appendChild(n)}}));const n=t.length>0?null!==e?.getAttribute("multiple")?t.map((e=>e.value)):t?.[0]?.value:null;$(e).val(n).trigger("change")},B=(e,t,n)=>[...O(e).querySelectorAll(t)].forEach((e=>$(e).select2({allowClear:!0,placeholder:e.getAttribute("placeholder")||"---------",selectionCssClass:"select2--small",theme:"bootstrap-5",width:"off",...n}))),I=(e,t=null)=>{const n=(e,t)=>(e.element&&O(t).setAttribute("style",e.element.getAttribute("style")),e.text);B(e,".nautobot-select2-color-picker",{dropdownParent:t,templateResult:n,templateSelection:n})},N=(e,t=null)=>{B(e,".nautobot-select2-api",{ajax:{data:function(e){const[t]=this,n=50*(e.page-1)||0,a=e.term,o=t.getAttribute("search-field")||"q",r=t.getAttribute("data-api-version"),s=parseInt(t.getAttribute("data-depth"),10)||0,i=t.getAttribute("data-contenttype"),l=Object.fromEntries([...t.attributes].filter((e=>e.name.includes("data-query-param-"))).flatMap((e=>{const[,n]=e.name.split("data-query-param-");return(()=>{try{return JSON.parse(e.value)}catch(e){return[]}})().flatMap((e=>{const a=e.startsWith("$"),o=a?(()=>{const n=e.slice(1);if(t.id.includes("id_form-")){const[e]=t.id.match(/id_form-[0-9]+-/i,"");return document.querySelector(`#${e}${n}`)}return t.closest("tr")?.classList.contains("dynamic-formset")?t.closest("tr").querySelector(`select[id*="${n}"]`):document.querySelector(`#id_${n}`)})():null,r=o?(()=>{const e=(t=o,null===t?.getAttribute("multiple")?t?.value:[...t.selectedOptions].map((e=>e.value)));var t;const n=window.getComputedStyle(o);return e&&"0"!==n.opacity&&"hidden"!==n.visibility?e:o.getAttribute("required")&&o.getAttribute("data-null-option")?"null":void 0})():null;return null!=(a?r:e)?[[n,r||e]]:[]}))}))),d={depth:String(s),limit:String(50),offset:String(n),...r?{api_version:r}:void 0,...i?{content_type:i}:void 0,...a?{[o]:a}:void 0,...l};return new URLSearchParams(d).toString()},delay:500,processResults:function(e){const[t]=this.$element;[...t.querySelectorAll("option")].forEach((e=>e.removeAttribute("disabled")));const n=[...t.getAttribute("data-null-option")&&null===e.previous?[{id:"null",text:t.getAttribute("data-null-option")}]:[],...Object.values(e.results.reduce(((e,n,a)=>{const o=Boolean(n?.[t.getAttribute("disabled-indicator")]),r=C(n,t.getAttribute("value-field"))||n.id,s=C(n,t.getAttribute("display-field"))||n.name,i={...n,disabled:o,id:r,text:s},{group:l,site:d,url:c}=i,u=Boolean(c?.includes("dynamic-groups")),m=(()=>{switch(!0){case null!=l&&null!=d:return{property:`${d.name}:${l.name}`,text:`${d.name} / ${l.name}`};case null!=l:return{property:l.name,text:l.name};case null!=d:return{property:d.name,text:d.name};case null===l&&null===d:return{property:"global",text:"Global"};default:return}})();return{...e,...m?{[m.property]:{...e[m.property],...e[m.property]?void 0:{text:m.text},children:u?void 0:[...e[m.property]?.children??[],i]}}:{[a]:i}}}),{}))];return{pagination:{more:null!==e.next},results:n}},url:function(){const[e]=this,t=(e=>{const t=/\{\{([a-z_]+)}}/g;let n,a=e;for(;n=t.exec(e);){const e=document.querySelector(`#id_${n[1]}`),t=e?.selectedOptions?.[0]?.getAttribute("api-value"),o=t||e.value||(e.getAttribute("data-null-option")?"null":void 0);a=o?a.replace(n[0],o):a}return a})(e.getAttribute("data-url"));return!t.includes("{{")&&t}},dropdownParent:t})},T=(e,t=null)=>B(e,".nautobot-select2-multi-value-char",{dropdownParent:t,language:{noResults:()=>"Type something to add it as an option"},multiple:!0,tags:!0}),_=(e,t=null)=>B(e,".nautobot-select2-static",{dropdownParent:t}),R=e=>{I(e),N(e),T(e),_(e),[...O(e).querySelectorAll(".modal")].forEach((e=>{I(e,e),N(e,e),T(e,e),_(e,e)}))},D=e=>document.cookie.split("; ").find((t=>t.startsWith(`${e}=`)))?.split("=")[1],M=(e,t,n)=>{const a={[e]:t,path:"/",...n};document.cookie=Object.entries(a).map((e=>e.join("="))).join(";")},P=e=>M(e,"",{expires:"Thu, 01 Jan 1970 00:00:00 GMT"}),z="sidenav_collapsed",F=()=>{const e=document.querySelector(".nb-sidenav-toggler"),t=e.getAttribute("aria-controls"),n="true"===e.getAttribute("aria-expanded");e.setAttribute("aria-expanded",String(!n)),document.getElementById(t).classList.toggle("nb-sidenav-collapsed",n),n?(M(z,"true"),window.localStorage?.setItem(z,"true")):(P(z),window.localStorage?.removeItem(z))},J=["invisible","position-absolute"],U="theme_modal",G="dark",Q="light",W="system",X=e=>e===G||e===Q||e===W,Y=()=>{const e=D("theme");if(X(e))return e;const t=window.localStorage?.getItem("theme");return X(t)?t:W},K=(e,t)=>{const n=Boolean(t?.manual),a=document.getElementById(U);(a?.querySelectorAll("button[data-nb-theme]")??[]).forEach((t=>["border","border-primary"].forEach((n=>t.classList.toggle(n,t.dataset.nbTheme===e)))));const o=e===W?window.matchMedia?.(`(prefers-color-scheme: ${G})`).matches?G:Q:e;document.documentElement.dataset.theme=o,document.documentElement.dataset.bsTheme=o,e===W?(P("theme"),window.localStorage?.removeItem("theme")):n&&(M("theme",e),window.localStorage?.setItem("theme",e)),(e===G||e===W&&o===G)&&[...document.getElementsByTagName("object")].forEach((e=>{e.addEventListener("load",(e=>{e.target.contentDocument&&[...e.target.contentDocument.getElementsByTagName("image"),...e.target.contentDocument.getElementsByClassName("rack-device-shortname"),...e.target.contentDocument.getElementsByClassName("rack-device-fullname")].forEach((e=>e.setAttribute("filter","url(#darkmodeinvert)")))}))})),n&&document.location.reload()};window.bootstrap=a,window.ClipboardJS=o,window.echarts=r,window.flatpickr=s.A,window.htmx=m.A,i.A.registerLanguage("graphql",l.A),i.A.registerLanguage("json",d.A),i.A.registerLanguage("xml",c.A),i.A.registerLanguage("yaml",u.A),window.hljs=i.A,window.jQuery=p,window.$=window.jQuery,document.addEventListener("DOMContentLoaded",(()=>{window.nb??={},(()=>{const e=(()=>{try{const e=window.sessionStorage?.getItem(f);return e?JSON.parse(e):void 0}catch(e){return}})();if(void 0!==e){const t=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.history?.replaceState(e,"",t),window.sessionStorage?.removeItem(f)}})(),window.nb.history={saveState:y},[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].forEach((e=>new a.Tooltip(e))),(()=>{const e=document.querySelector(".nb-sidenav-toggler");if(e){const t=D(z)??window.localStorage?.getItem(z)??"false";("true"===t&&"true"===e.getAttribute("aria-expanded")||"false"===t&&"false"===e.getAttribute("aria-expanded"))&&F(),e.addEventListener("click",F)}[...document.querySelectorAll(".nb-sidenav-list-item:not(.nb-flat)")].forEach((e=>{e.addEventListener("click",(()=>{const t=e.getAttribute("aria-controls"),n="true"===e.getAttribute("aria-expanded");e.setAttribute("aria-expanded",String(!n));const a=n=>{const{target:o}=n,r=document.getElementById(t);!e.contains(o)&&!r.contains(o)&&(e.setAttribute("aria-expanded","false"),document.removeEventListener("click",a))};n?document.removeEventListener("click",a):document.addEventListener("click",a)}))}));const t=$("#sidenav-branch-picker-select");t.on("change",(e=>e.currentTarget.form.submit())),t.on("select2:open",(()=>{document.querySelector(".select2-dropdown").setAttribute("data-bs-theme","dark"),document.querySelector(".select2-dropdown .select2-search__field").setAttribute("placeholder","Find a branch...")}))})(),(()=>{const e=(e,t)=>e.every((e=>{const n=!e.classList.contains("show");return"collapsed"===t?n:!n})),t=e=>[...document.querySelectorAll(e.dataset.nbTarget||".collapse")];document.addEventListener("click",(e=>{const n=e.target.closest('[data-nb-toggle="collapse-all"]');n&&t(n).forEach((e=>{const t=window.bootstrap.Collapse.getOrCreateInstance(e);"true"===n.getAttribute("aria-expanded")?t.hide():t.show()}))})),document.addEventListener("hidden.bs.collapse",(()=>[...document.querySelectorAll('[data-nb-toggle="collapse-all"]')].filter((n=>e(t(n),"collapsed"))).forEach((e=>{e.setAttribute("aria-expanded","false"),e.textContent="Expand All"})))),document.addEventListener("shown.bs.collapse",(()=>[...document.querySelectorAll('[data-nb-toggle="collapse-all"]')].filter((n=>e(t(n),"expanded"))).forEach((e=>{e.setAttribute("aria-expanded","true"),e.textContent="Collapse All"}))))})(),(()=>{const e=(e,t)=>e?.closest?.(`.${t}`),t=t=>n=>{const a=e(n.target,"nb-draggable-handle");a&&e(a,g).setAttribute("draggable",String(t))},n=t(!0),a=t(!1);document.addEventListener("mousedown",n),document.addEventListener("mouseup",a),document.addEventListener("dragstart",(t=>{const n=e(t.target,g);n&&(t.dataTransfer.clearData("text/plain"),t.dataTransfer.setData("text/plain",t.target.id),n.classList.add(h))})),document.addEventListener("dragend",(t=>{const n=e(t.target,g);n&&(n.classList.remove(h),n.setAttribute("draggable","false"))})),document.addEventListener("dragover",(t=>{e(t.target,b)&&t.preventDefault()})),document.addEventListener("drop",(t=>{const n=document.getElementById(t.dataTransfer.getData("text/plain"));if(n){t.preventDefault();const a=e(n,b),o=(()=>{const n=e(t.target,g);if(n){const{height:e,top:a}=n.getBoundingClientRect();return t.clientY<a+e/2?n:n.nextSibling}return[...a.children].find((e=>{const{left:n,right:a,top:o}=e.getBoundingClientRect();return n>t.clientX||a>=t.clientX&&o>=t.clientY}))})();o?a.insertBefore(n,o):a.append(n),n.classList.add(h)}}))})(),document.addEventListener("nb-drawer:close",(e=>v(e.target,!1))),document.addEventListener("nb-drawer:open",(e=>v(e.target,!0))),document.addEventListener("nb-drawer:toggle",(e=>v(e.target))),document.addEventListener("nb-drawer:opened",(e=>{if(e.target.id){const t={...window.history?.state,drawer:e.target.id},n=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.history?.replaceState(t,"",n)}})),document.addEventListener("nb-drawer:closed",(()=>{const{drawer:e,...t}="object"==typeof window.history?.state&&null!==window.history.state?window.history.state:{},n=Object.keys(t).length>0?t:null,a=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.history?.replaceState(n,"",a)})),document.addEventListener("click",(e=>{const t=e.target.closest("[data-nb-dismiss]"),n=e.target.closest("[data-nb-toggle]");if("drawer"===t?.dataset.nbDismiss){const e=t.closest(".nb-drawer");e?.dispatchEvent(new CustomEvent("nb-drawer:close",{bubbles:!0,cancelable:!0}))}else if("drawer"===n?.dataset.nbToggle){const e=document.querySelector(n.dataset.nbTarget);e?.dispatchEvent(new CustomEvent("nb-drawer:toggle",{bubbles:!0,cancelable:!0}))}})),window.history?.state?.drawer&&document.getElementById(window.history.state.drawer)?.dispatchEvent(new CustomEvent("nb-drawer:open",{bubbles:!0,cancelable:!0})),(()=>{const e=new IntersectionObserver((([e])=>e.target.classList.toggle("nb-is-pinned",e.intersectionRatio<1)),{threshold:[1]});[...document.querySelectorAll(".nb-form-sticky-footer")].forEach((t=>e.observe(t)))})(),(()=>{const e=document.getElementById("header_search");if(!e)return()=>{};const t=(()=>{try{const e=document.getElementById("nav_menu");return e?JSON.parse(e.textContent):{}}catch(e){return{}}})(),n=Object.fromEntries(Object.entries(t.tabs).flatMap((([,e])=>Object.entries(e.groups).flatMap((([,e])=>Object.entries(e.items).map((([e,t])=>[e,t]))))))),a=new RegExp(`^\\s*in\\s*:\\s*(${Object.entries(n).flatMap((([,{name:e}])=>[e,...["","_","\\-"].map((t=>e.replace(/\s+/g,t)))])).join("|")})\\s+`,"i"),o=e.querySelector("input"),r=()=>{const e=document.getElementById("search_popup");e&&(e.remove(),document.body.classList.toggle("overflow-y-hidden",!1))};document.addEventListener("keydown",(e=>{const t=e.getModifierState?.("Meta"),n=e.ctrlKey;(t||n)&&"k"===e.key?(e.preventDefault(),o.focus()):"Escape"===e.key&&r()}));o.addEventListener("focus",(()=>{const t=document.getElementById("search_popup");if(t){const e=t.querySelector("input");return e?.focus(),void e?.setSelectionRange(-1,-1)}document.body.classList.toggle("overflow-y-hidden",!0);const{left:s=0,right:i=0}=document.querySelector("main")?.getBoundingClientRect()??{},{top:l}=o.getBoundingClientRect(),d=E("span",{"aria-hidden":"true",className:"mdi mdi-magnify d-inline-flex ms-12 mt-6 pe-none position-absolute start-0 text-secondary top-0 user-select-none",style:`height: ${k}rem; width: ${k}rem;`}),c=E("span",{className:"d-inline-flex gap-6 left-0 my-6 position-absolute top-0",style:`left: ${q};`}),u=E("input",{className:"form-control w-100",name:"q",required:"true",style:`padding-inline: ${q};`,type:"search",value:o.value}),m=E("button",{className:"btn mdi mdi-close bg-transparent border-0 end-0 hstack justify-content-center me-12 mt-6 p-0 position-absolute text-secondary top-0 nb-transition-base"+(""===u.value?" invisible opacity-0":""),style:`height: ${k}rem; width: ${k}rem;`,type:"button"},E("span",{className:"visually-hidden"},"Clear"));m.addEventListener("click",(()=>{u.value="",u.dispatchEvent(new InputEvent("input")),u.focus()})),u.addEventListener("input",(()=>{const e=""===u.value;m.classList.toggle("invisible",e),m.classList.toggle("opacity-0",e)}));const p=E("input",{className:"d-none",type:"submit"}),g=E("form",{action:e.getAttribute("action"),className:"position-relative w-100",role:"search"},d,c,u,m,p);g.addEventListener("submit",(()=>{const e=g.querySelector("[data-nb-link]:last-child");e&&g.setAttribute("action",e.dataset.nbLink)}));const b=E("div"),h=E("div",{className:"mx-auto w-100",style:`max-width: ${A(720)}rem;`},g,b),w=E("div",{className:"overflow-auto pb-20 position-fixed top-0 end-0 bottom-0 start-0 nb-z-modal-backdrop",id:"search_popup",role:"dialog",style:`background-color: rgba(0, 0, 0, .5); padding-block-start: ${l}px; padding-inline-start: calc(${s}px + ${A(20)}rem); padding-inline-end: calc(100% - ${i}px + ${A(20)}rem);`},h);w.addEventListener("click",(e=>{e.target===w&&r()})),document.body.appendChild(w);const v=e=>{const t=Object.entries(n).find((([t])=>t===e))?.[1]?.name??e,a=E("button",{type:"button"},E("span",{"aria-hidden":"true",class:"mdi mdi-close"}),E("span",{class:"visually-hidden"},"Remove")),o=E("span",{className:"badge border","data-nb-link":e},`in: ${t}`,a);a.addEventListener("click",(()=>{o.remove(),u.focus()})),[...c.querySelectorAll(`[data-nb-link="${e}"]`)].forEach((e=>e.remove())),c.appendChild(o),[...c.children].slice(0,-1).forEach((e=>e.remove()))};new ResizeObserver((()=>{const{width:e}=c.getBoundingClientRect();u.style.paddingInlineStart=e?`calc(${q} + ${e}px + ${x}rem)`:q})).observe(c),u.addEventListener("input",(()=>{const e=u.value.match(a);if(e){const[t,a]=e,o=e=>e.trim().toLowerCase().replace(/\s|_|-/g,""),r=Object.entries(n).find((([,{name:e}])=>o(e)===o(a)))?.[0];r&&(u.value=u.value.replace(t,""),u.dispatchEvent(new InputEvent("input")),v(r))}})),u.addEventListener("keydown",(e=>{const t="Backspace"===e.key,n=0===u.selectionEnd&&0===u.selectionStart;t&&n&&c.querySelector(":last-child")?.remove()})),e.querySelectorAll("[data-nb-link]").forEach((e=>v(e.dataset.nbLink))),u.focus(),u.setSelectionRange(-1,-1)}))})(),window.nb.select2={initializeSelect2Fields:R,setSelect2Value:j},(()=>{const e=[...document.querySelectorAll(".nav.nav-tabs")].map((e=>{const t=new ResizeObserver((()=>(e=>{const t=e.parentNode;[...t.querySelectorAll('.nav.nav-tabs[data-clone="true"]')].forEach((e=>e.remove()));const n=e.cloneNode(!0);n.removeAttribute("id"),n.dataset.clone="true";const o=["flex-nowrap","invisible","position-absolute","z-n1"];n.classList.add(...o),e.nextSibling?t.insertBefore(n,e.nextSibling):t.appendChild(n);const r=()=>n.getBoundingClientRect().width>e.getBoundingClientRect().width;if(!r())return e.classList.remove(...J),void t.removeChild(n);const s=E("ul",{className:"dropdown-menu dropdown-menu-end"}),i=E("span",{className:"mdi mdi-menu"}),l=E("span",{className:"visually-hidden"},"Toggle Dropdown"),d=E("button",{"aria-expanded":"false",className:"btn dropdown-toggle text-secondary","data-bs-toggle":"dropdown",type:"button"},i,l),c=E("li",{className:"dropdown flex-grow-1 mb-n1 text-end"},d,s);n.appendChild(c);const u=[];for(;r();){const e=c.previousElementSibling;u.unshift(e),n.removeChild(e)}u.forEach((e=>{S(e),[...e.children].forEach((e=>{S(e,"active","disabled"),e.classList.add("dropdown-item","justify-content-between")})),s.appendChild(e)})),[...n.querySelectorAll("a")].forEach((t=>{t.addEventListener("shown.bs.tab",(()=>{const n=e.querySelector(`a[href="${t.getAttribute("href")}"]`);(a.Tab.getInstance(n)||new a.Tab(n)).show()}))})),e.classList.add(...J),n.classList.remove(...o)})(e)));return t.observe(e),t}))})(),(()=>{const e=document.getElementById(U),t=e?.querySelectorAll("button[data-nb-theme]")??[];K(Y()),window.matchMedia(`(prefers-color-scheme: ${G})`).addEventListener("change",(()=>K(Y())));const n=e=>K(e.currentTarget.dataset.nbTheme,{manual:!0});t.forEach((e=>e.addEventListener("click",n)))})(),window.toggleFavorite=(e,t)=>{t.detail.successful&&e.classList.toggle("active")},window.setRequestUrl=(e,t)=>{const n=e.classList.contains("active");t.detail.path=n?e.dataset.deleteUrl:e.dataset.addUrl}}))}},n={};function a(e){var o=n[e];if(void 0!==o)return o.exports;var r=n[e]={exports:{}};return t[e].call(r.exports,r,r.exports,a),r.exports}a.m=t,e=[],a.O=(t,n,o,r)=>{if(!n){var s=1/0;for(c=0;c<e.length;c++){for(var[n,o,r]=e[c],i=!0,l=0;l<n.length;l++)(!1&r||s>=r)&&Object.keys(a.O).every((e=>a.O[e](n[l])))?n.splice(l--,1):(i=!1,r<s&&(s=r));if(i){e.splice(c--,1);var d=o();void 0!==d&&(t=d)}}return t}r=r||0;for(var c=e.length;c>0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[n,o,r]},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={825:0};a.O.j=t=>0===e[t];var t=(t,n)=>{var o,r,[s,i,l]=n,d=0;if(s.some((t=>0!==e[t]))){for(o in i)a.o(i,o)&&(a.m[o]=i[o]);if(l)var c=l(a)}for(t&&t(n);d<s.length;d++)r=s[d],a.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return a.O(c)},n=self.webpackChunknautobot=self.webpackChunknautobot||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var o=a.O(void 0,[68],(()=>a(226)));o=a.O(o)})();
|
|
1
|
+
(()=>{"use strict";var e,t={226:(e,t,n)=>{var a=n(336),o=n(576),r=n(209),s=n(430),i=n(11),l=(n(283),n(75)),d=n(402),c=n(359),u=n(347),m=n(37),p=n(692);n(139),n(458);const g="nb-draggable",b="nb-draggable-container",h="nb-dragging",v="nb-drawer-open",w=(e,t)=>{if(!e)return;e.classList.toggle(v,t);const n=e.classList.contains(v);e.setAttribute("aria-hidden",n?"false":"true");const a=[...document.querySelectorAll(`[data-nb-toggle="drawer"][data-nb-target="#${e.id}"]`)];if(a.forEach((e=>e.setAttribute("aria-expanded",n?"true":"false"))),n)[...document.getElementsByClassName(v)].filter((t=>t!==e)).forEach((e=>w(e,!1))),(()=>{let t=100;window.requestAnimationFrame((function n(){"visible"===window.getComputedStyle(e).visibility?e.focus():t>0&&(t-=1,window.requestAnimationFrame(n))}))})();else if(e.contains(document.activeElement)){const e=a[0]||document.querySelector("main");e?.focus({preventScroll:!0})}const o=n?"nb-drawer:opened":"nb-drawer:closed";e.dispatchEvent(new CustomEvent(o,{bubbles:!0,cancelable:!0}))},f="historyState",y=e=>{const t=void 0===e?window.history?.state:e;void 0!==t&&window.sessionStorage?.setItem(f,JSON.stringify(t))},E=(e,t={},...n)=>{const a=document.createElement(e);return Object.entries(t).forEach((([e,t])=>a.setAttribute("className"===e?"class":e,t))),n.forEach((e=>"string"==typeof e?a.insertAdjacentText("beforeend",e):a.appendChild(e))),a},S=(e,...t)=>[...e.classList.entries()].filter((([,e])=>!t.includes(e))).forEach((([,t])=>e.classList.remove(t))),A=e=>{const t=window.getComputedStyle(document.documentElement).fontSize;return e/parseInt(t,10)},L=A(12),x=A(6),k=A(20),q=`${L+k+x}rem`;var C=n(762);const O=e=>e instanceof Document||e instanceof Element?e:e[0],j=(e,t)=>{$(e).val(null),(t??[]).forEach((t=>{if(!e.querySelector(`option[value="${t.value}"]`)){const n=document.createElement("option");n.innerText=t.text,n.setAttribute("selected","true"),n.setAttribute("value",t.value),e.appendChild(n)}}));const n=t.length>0?null!==e?.getAttribute("multiple")?t.map((e=>e.value)):t?.[0]?.value:null;$(e).val(n).trigger("change")},B=(e,t,n)=>[...O(e).querySelectorAll(t)].forEach((e=>$(e).select2({allowClear:!0,placeholder:e.getAttribute("placeholder")||"---------",selectionCssClass:"select2--small",theme:"bootstrap-5",width:"off",...n}))),I=(e,t=null)=>{const n=(e,t)=>(e.element&&O(t).setAttribute("style",e.element.getAttribute("style")),e.text);B(e,".nautobot-select2-color-picker",{dropdownParent:t,templateResult:n,templateSelection:n})},N=(e,t=null)=>{B(e,".nautobot-select2-api",{ajax:{data:function(e){const[t]=this,n=50*(e.page-1)||0,a=e.term,o=t.getAttribute("search-field")||"q",r=t.getAttribute("data-api-version"),s=parseInt(t.getAttribute("data-depth"),10)||0,i=t.getAttribute("data-contenttype"),l=Object.fromEntries([...t.attributes].filter((e=>e.name.includes("data-query-param-"))).flatMap((e=>{const[,n]=e.name.split("data-query-param-");return(()=>{try{return JSON.parse(e.value)}catch(e){return[]}})().flatMap((e=>{const a=e.startsWith("$"),o=a?(()=>{const n=e.slice(1);if(t.id.includes("id_form-")){const[e]=t.id.match(/id_form-[0-9]+-/i,"");return document.querySelector(`#${e}${n}`)}return t.closest("tr")?.classList.contains("dynamic-formset")?t.closest("tr").querySelector(`select[id*="${n}"]`):document.querySelector(`#id_${n}`)})():null,r=o?(()=>{const e=(t=o,null===t?.getAttribute("multiple")?t?.value:[...t.selectedOptions].map((e=>e.value)));var t;const n=window.getComputedStyle(o);return e&&"0"!==n.opacity&&"hidden"!==n.visibility?e:o.getAttribute("required")&&o.getAttribute("data-null-option")?"null":void 0})():null;return null!=(a?r:e)?[[n,r||e]]:[]}))}))),d={depth:String(s),limit:String(50),offset:String(n),...r?{api_version:r}:void 0,...i?{content_type:i}:void 0,...a?{[o]:a}:void 0,...l};return new URLSearchParams(d).toString()},delay:500,processResults:function(e){const[t]=this.$element;[...t.querySelectorAll("option")].forEach((e=>e.removeAttribute("disabled")));const n=[...t.getAttribute("data-null-option")&&null===e.previous?[{id:"null",text:t.getAttribute("data-null-option")}]:[],...Object.values(e.results.reduce(((e,n,a)=>{const o=Boolean(n?.[t.getAttribute("disabled-indicator")]),r=C(n,t.getAttribute("value-field"))||n.id,s=C(n,t.getAttribute("display-field"))||n.name,i={...n,disabled:o,id:r,text:s},{group:l,site:d,url:c}=i,u=Boolean(c?.includes("dynamic-groups")),m=(()=>{switch(!0){case null!=l&&null!=d:return{property:`${d.name}:${l.name}`,text:`${d.name} / ${l.name}`};case null!=l:return{property:l.name,text:l.name};case null!=d:return{property:d.name,text:d.name};case null===l&&null===d:return{property:"global",text:"Global"};default:return}})();return{...e,...m?{[m.property]:{...e[m.property],...e[m.property]?void 0:{text:m.text},children:u?void 0:[...e[m.property]?.children??[],i]}}:{[a]:i}}}),{}))];return{pagination:{more:null!==e.next},results:n}},url:function(){const[e]=this,t=(e=>{const t=/\{\{([a-z_]+)}}/g;let n,a=e;for(;n=t.exec(e);){const e=document.querySelector(`#id_${n[1]}`),t=e?.selectedOptions?.[0]?.getAttribute("api-value"),o=t||e.value||(e.getAttribute("data-null-option")?"null":void 0);a=o?a.replace(n[0],o):a}return a})(e.getAttribute("data-url"));return!t.includes("{{")&&t}},dropdownParent:t})},T=(e,t=null)=>B(e,".nautobot-select2-multi-value-char",{dropdownParent:t,language:{noResults:()=>"Type something to add it as an option"},multiple:!0,tags:!0}),_=(e,t=null)=>B(e,".nautobot-select2-static",{dropdownParent:t}),R=e=>{I(e),N(e),T(e),_(e),[...O(e).querySelectorAll(".modal")].forEach((e=>{I(e,e),N(e,e),T(e,e),_(e,e)}))},D=e=>document.cookie.split("; ").find((t=>t.startsWith(`${e}=`)))?.split("=")[1],M=(e,t,n)=>{const a={[e]:t,path:"/",...n};document.cookie=Object.entries(a).map((e=>e.join("="))).join(";")},P=e=>M(e,"",{expires:"Thu, 01 Jan 1970 00:00:00 GMT"}),z="sidenav_collapsed",F=()=>{const e=document.querySelector(".nb-sidenav-toggler"),t=e.getAttribute("aria-controls"),n="true"===e.getAttribute("aria-expanded");e.setAttribute("aria-expanded",String(!n)),document.getElementById(t).classList.toggle("nb-sidenav-collapsed",n),n?(M(z,"true"),window.localStorage?.setItem(z,"true")):(P(z),window.localStorage?.removeItem(z))},J=["invisible","position-absolute"],G="theme_modal",U="dark",Q="light",W="system",X=e=>e===U||e===Q||e===W,Y=()=>{const e=D("theme");if(X(e))return e;const t=window.localStorage?.getItem("theme");return X(t)?t:W},K=(e,t)=>{const n=Boolean(t?.manual),a=document.getElementById(G);(a?.querySelectorAll("button[data-nb-theme]")??[]).forEach((t=>["border","border-primary"].forEach((n=>t.classList.toggle(n,t.dataset.nbTheme===e)))));const o=e===W?window.matchMedia?.(`(prefers-color-scheme: ${U})`).matches?U:Q:e;document.documentElement.dataset.theme=o,document.documentElement.dataset.bsTheme=o,e===W?(P("theme"),window.localStorage?.removeItem("theme")):n&&(M("theme",e),window.localStorage?.setItem("theme",e)),(e===U||e===W&&o===U)&&[...document.getElementsByTagName("object")].forEach((e=>{e.addEventListener("load",(e=>{e.target.contentDocument&&[...e.target.contentDocument.getElementsByTagName("image"),...e.target.contentDocument.getElementsByClassName("rack-device-shortname"),...e.target.contentDocument.getElementsByClassName("rack-device-fullname")].forEach((e=>e.setAttribute("filter","url(#darkmodeinvert)")))}))})),n&&document.location.reload()};window.bootstrap=a,window.ClipboardJS=o,window.echarts=r,window.flatpickr=s.A,window.htmx=m.A,i.A.registerLanguage("graphql",l.A),i.A.registerLanguage("json",d.A),i.A.registerLanguage("xml",c.A),i.A.registerLanguage("yaml",u.A),window.hljs=i.A,window.jQuery=p,window.$=window.jQuery,document.addEventListener("DOMContentLoaded",(()=>{window.nb??={},(()=>{const e=(()=>{try{const e=window.sessionStorage?.getItem(f);return e?JSON.parse(e):void 0}catch(e){return}})();if(void 0!==e){const t=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.history?.replaceState(e,"",t),window.sessionStorage?.removeItem(f)}})(),window.nb.history={saveState:y},[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].forEach((e=>new a.Tooltip(e))),(()=>{const e=document.querySelector(".nb-sidenav-toggler");if(e){const t=D(z)??window.localStorage?.getItem(z)??"false";("true"===t&&"true"===e.getAttribute("aria-expanded")||"false"===t&&"false"===e.getAttribute("aria-expanded"))&&F(),e.addEventListener("click",F)}[...document.querySelectorAll(".nb-sidenav-list-item:not(.nb-flat)")].forEach((e=>{e.addEventListener("click",(()=>{const t=e.getAttribute("aria-controls"),n="true"===e.getAttribute("aria-expanded");e.setAttribute("aria-expanded",String(!n));const a=n=>{const{target:o}=n,r=document.getElementById(t);!e.contains(o)&&!r.contains(o)&&(e.setAttribute("aria-expanded","false"),document.removeEventListener("click",a))};n?document.removeEventListener("click",a):document.addEventListener("click",a)}))}));const t=$("#sidenav-branch-picker-select");t.on("change",(e=>e.currentTarget.form.submit())),t.on("select2:open",(()=>{document.querySelector(".select2-dropdown").setAttribute("data-bs-theme","dark"),document.querySelector(".select2-dropdown .select2-search__field").setAttribute("placeholder","Find a branch...")}))})(),(()=>{const e=(e,t)=>e.every((e=>{const n=!e.classList.contains("show");return"collapsed"===t?n:!n})),t=e=>[...document.querySelectorAll(e.dataset.nbTarget||".collapse")];document.addEventListener("click",(e=>{const n=e.target.closest('[data-nb-toggle="collapse-all"]');n&&t(n).forEach((e=>{const t=window.bootstrap.Collapse.getOrCreateInstance(e);"true"===n.getAttribute("aria-expanded")?t.hide():t.show()}))})),document.addEventListener("hidden.bs.collapse",(()=>[...document.querySelectorAll('[data-nb-toggle="collapse-all"]')].filter((n=>e(t(n),"collapsed"))).forEach((e=>{e.setAttribute("aria-expanded","false"),e.textContent="Expand All Groups"})))),document.addEventListener("shown.bs.collapse",(()=>[...document.querySelectorAll('[data-nb-toggle="collapse-all"]')].filter((n=>e(t(n),"expanded"))).forEach((e=>{e.setAttribute("aria-expanded","true"),e.textContent="Collapse All Groups"}))))})(),(()=>{const e=(e,t)=>e?.closest?.(`.${t}`),t=t=>n=>{const a=e(n.target,"nb-draggable-handle");a&&e(a,g).setAttribute("draggable",String(t))},n=t(!0),a=t(!1);document.addEventListener("mousedown",n),document.addEventListener("mouseup",a),document.addEventListener("dragstart",(t=>{const n=e(t.target,g);n&&(t.dataTransfer.clearData("text/plain"),t.dataTransfer.setData("text/plain",t.target.id),n.classList.add(h))})),document.addEventListener("dragend",(t=>{const n=e(t.target,g);n&&(n.classList.remove(h),n.setAttribute("draggable","false"))})),document.addEventListener("dragover",(t=>{e(t.target,b)&&t.preventDefault()})),document.addEventListener("drop",(t=>{const n=document.getElementById(t.dataTransfer.getData("text/plain"));if(n){t.preventDefault();const a=e(n,b),o=(()=>{const n=e(t.target,g);if(n){const{height:e,top:a}=n.getBoundingClientRect();return t.clientY<a+e/2?n:n.nextSibling}return[...a.children].find((e=>{const{left:n,right:a,top:o}=e.getBoundingClientRect();return n>t.clientX||a>=t.clientX&&o>=t.clientY}))})();o?a.insertBefore(n,o):a.append(n),n.classList.add(h)}}))})(),document.addEventListener("nb-drawer:close",(e=>w(e.target,!1))),document.addEventListener("nb-drawer:open",(e=>w(e.target,!0))),document.addEventListener("nb-drawer:toggle",(e=>w(e.target))),document.addEventListener("nb-drawer:opened",(e=>{if(e.target.id){const t={...window.history?.state,drawer:e.target.id},n=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.history?.replaceState(t,"",n)}})),document.addEventListener("nb-drawer:closed",(()=>{const{drawer:e,...t}="object"==typeof window.history?.state&&null!==window.history.state?window.history.state:{},n=Object.keys(t).length>0?t:null,a=`${window.location.pathname}${window.location.search}${window.location.hash}`;window.history?.replaceState(n,"",a)})),document.addEventListener("click",(e=>{const t=e.target.closest("[data-nb-dismiss]"),n=e.target.closest("[data-nb-toggle]");if("drawer"===t?.dataset.nbDismiss){const e=t.closest(".nb-drawer");e?.dispatchEvent(new CustomEvent("nb-drawer:close",{bubbles:!0,cancelable:!0}))}else if("drawer"===n?.dataset.nbToggle){const e=document.querySelector(n.dataset.nbTarget);e?.dispatchEvent(new CustomEvent("nb-drawer:toggle",{bubbles:!0,cancelable:!0}))}})),window.history?.state?.drawer&&document.getElementById(window.history.state.drawer)?.dispatchEvent(new CustomEvent("nb-drawer:open",{bubbles:!0,cancelable:!0})),(()=>{const e=new IntersectionObserver((([e])=>e.target.classList.toggle("nb-is-pinned",e.intersectionRatio<1)),{threshold:[1]});[...document.querySelectorAll(".nb-form-sticky-footer")].forEach((t=>e.observe(t)))})(),(()=>{const e=document.getElementById("header_search");if(!e)return()=>{};const t=(()=>{try{const e=document.getElementById("nav_menu");return e?JSON.parse(e.textContent):{}}catch(e){return{}}})(),n=Object.fromEntries(Object.entries(t.tabs).flatMap((([,e])=>Object.entries(e.groups).flatMap((([,e])=>Object.entries(e.items).map((([e,t])=>[e,t]))))))),a=new RegExp(`^\\s*in\\s*:\\s*(${Object.entries(n).flatMap((([,{name:e}])=>[e,...["","_","\\-"].map((t=>e.replace(/\s+/g,t)))])).join("|")})\\s+`,"i"),o=e.querySelector("input"),r=()=>{const e=document.getElementById("search_popup");e&&(e.remove(),document.body.classList.toggle("overflow-y-hidden",!1))};document.addEventListener("keydown",(e=>{const t=e.getModifierState?.("Meta"),n=e.ctrlKey;(t||n)&&"k"===e.key?(e.preventDefault(),o.focus()):"Escape"===e.key&&r()}));o.addEventListener("focus",(()=>{const t=document.getElementById("search_popup");if(t){const e=t.querySelector("input");return e?.focus(),void e?.setSelectionRange(-1,-1)}document.body.classList.toggle("overflow-y-hidden",!0);const{left:s=0,right:i=0}=document.querySelector("main")?.getBoundingClientRect()??{},{top:l}=o.getBoundingClientRect(),d=E("span",{"aria-hidden":"true",className:"mdi mdi-magnify d-inline-flex ms-12 mt-6 pe-none position-absolute start-0 text-secondary top-0 user-select-none",style:`height: ${k}rem; width: ${k}rem;`}),c=E("span",{className:"d-inline-flex gap-6 left-0 my-6 position-absolute top-0",style:`left: ${q};`}),u=E("input",{className:"form-control w-100",name:"q",required:"true",style:`padding-inline: ${q};`,type:"search",value:o.value}),m=E("button",{className:"btn mdi mdi-close bg-transparent border-0 end-0 hstack justify-content-center me-12 mt-6 p-0 position-absolute text-secondary top-0 nb-transition-base"+(""===u.value?" invisible opacity-0":""),style:`height: ${k}rem; width: ${k}rem;`,type:"button"},E("span",{className:"visually-hidden"},"Clear"));m.addEventListener("click",(()=>{u.value="",u.dispatchEvent(new InputEvent("input")),u.focus()})),u.addEventListener("input",(()=>{const e=""===u.value;m.classList.toggle("invisible",e),m.classList.toggle("opacity-0",e)}));const p=E("input",{className:"d-none",type:"submit"}),g=E("form",{action:e.getAttribute("action"),className:"position-relative w-100",role:"search"},d,c,u,m,p);g.addEventListener("submit",(()=>{const e=g.querySelector("[data-nb-link]:last-child");e&&g.setAttribute("action",e.dataset.nbLink)}));const b=E("div"),h=E("div",{className:"mx-auto w-100",style:`max-width: ${A(720)}rem;`},g,b),v=E("div",{className:"overflow-auto pb-20 position-fixed top-0 end-0 bottom-0 start-0 nb-z-modal-backdrop",id:"search_popup",role:"dialog",style:`background-color: rgba(0, 0, 0, .5); padding-block-start: ${l}px; padding-inline-start: calc(${s}px + ${A(20)}rem); padding-inline-end: calc(100% - ${i}px + ${A(20)}rem);`},h);v.addEventListener("click",(e=>{e.target===v&&r()})),document.body.appendChild(v);const w=e=>{const t=Object.entries(n).find((([t])=>t===e))?.[1]?.name??e,a=E("button",{type:"button"},E("span",{"aria-hidden":"true",class:"mdi mdi-close"}),E("span",{class:"visually-hidden"},"Remove")),o=E("span",{className:"badge border","data-nb-link":e},`in: ${t}`,a);a.addEventListener("click",(()=>{o.remove(),u.focus()})),[...c.querySelectorAll(`[data-nb-link="${e}"]`)].forEach((e=>e.remove())),c.appendChild(o),[...c.children].slice(0,-1).forEach((e=>e.remove()))};new ResizeObserver((()=>{const{width:e}=c.getBoundingClientRect();u.style.paddingInlineStart=e?`calc(${q} + ${e}px + ${x}rem)`:q})).observe(c),u.addEventListener("input",(()=>{const e=u.value.match(a);if(e){const[t,a]=e,o=e=>e.trim().toLowerCase().replace(/\s|_|-/g,""),r=Object.entries(n).find((([,{name:e}])=>o(e)===o(a)))?.[0];r&&(u.value=u.value.replace(t,""),u.dispatchEvent(new InputEvent("input")),w(r))}})),u.addEventListener("keydown",(e=>{const t="Backspace"===e.key,n=0===u.selectionEnd&&0===u.selectionStart;t&&n&&c.querySelector(":last-child")?.remove()})),e.querySelectorAll("[data-nb-link]").forEach((e=>w(e.dataset.nbLink))),u.focus(),u.setSelectionRange(-1,-1)}))})(),window.nb.select2={initializeSelect2Fields:R,setSelect2Value:j},(()=>{const e=[...document.querySelectorAll(".nav.nav-tabs")].map((e=>{const t=new ResizeObserver((()=>(e=>{const t=e.parentNode;[...t.querySelectorAll('.nav.nav-tabs[data-clone="true"]')].forEach((e=>e.remove()));const n=e.cloneNode(!0);n.removeAttribute("id"),n.dataset.clone="true";const o=["flex-nowrap","invisible","position-absolute","z-n1"];n.classList.add(...o),e.nextSibling?t.insertBefore(n,e.nextSibling):t.appendChild(n);const r=()=>n.getBoundingClientRect().width>e.getBoundingClientRect().width;if(!r())return e.classList.remove(...J),void t.removeChild(n);const s=E("ul",{className:"dropdown-menu dropdown-menu-end"}),i=E("span",{className:"mdi mdi-menu"}),l=E("span",{className:"visually-hidden"},"Toggle Dropdown"),d=E("button",{"aria-expanded":"false",className:"btn dropdown-toggle text-secondary","data-bs-toggle":"dropdown",type:"button"},i,l),c=E("li",{className:"dropdown flex-grow-1 mb-n1 text-end"},d,s);n.appendChild(c);const u=[];for(;r();){const e=c.previousElementSibling;u.unshift(e),n.removeChild(e)}u.forEach((e=>{S(e),[...e.children].forEach((e=>{S(e,"active","disabled"),e.classList.add("dropdown-item","justify-content-between")})),s.appendChild(e)})),[...n.querySelectorAll("a")].forEach((t=>{t.addEventListener("shown.bs.tab",(()=>{const n=e.querySelector(`a[href="${t.getAttribute("href")}"]`);(a.Tab.getInstance(n)||new a.Tab(n)).show()}))})),e.classList.add(...J),n.classList.remove(...o)})(e)));return t.observe(e),t}))})(),(()=>{const e=document.getElementById(G),t=e?.querySelectorAll("button[data-nb-theme]")??[];K(Y()),window.matchMedia(`(prefers-color-scheme: ${U})`).addEventListener("change",(()=>K(Y())));const n=e=>K(e.currentTarget.dataset.nbTheme,{manual:!0});t.forEach((e=>e.addEventListener("click",n)))})(),window.toggleFavorite=(e,t)=>{t.detail.successful&&e.classList.toggle("active")},window.setRequestUrl=(e,t)=>{const n=e.classList.contains("active");t.detail.path=n?e.dataset.deleteUrl:e.dataset.addUrl},document.querySelectorAll('a[data-bs-toggle="tooltip"], div[data-bs-toggle="tooltip"] > a').forEach((e=>{e.addEventListener("click",(()=>{e.blur()}))})),document.addEventListener("hidden.bs.modal",(()=>{document.querySelectorAll('[data-bs-toggle="tooltip"] > a').forEach((e=>{e.blur()}))}))}))}},n={};function a(e){var o=n[e];if(void 0!==o)return o.exports;var r=n[e]={exports:{}};return t[e].call(r.exports,r,r.exports,a),r.exports}a.m=t,e=[],a.O=(t,n,o,r)=>{if(!n){var s=1/0;for(c=0;c<e.length;c++){for(var[n,o,r]=e[c],i=!0,l=0;l<n.length;l++)(!1&r||s>=r)&&Object.keys(a.O).every((e=>a.O[e](n[l])))?n.splice(l--,1):(i=!1,r<s&&(s=r));if(i){e.splice(c--,1);var d=o();void 0!==d&&(t=d)}}return t}r=r||0;for(var c=e.length;c>0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[n,o,r]},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={825:0};a.O.j=t=>0===e[t];var t=(t,n)=>{var o,r,[s,i,l]=n,d=0;if(s.some((t=>0!==e[t]))){for(o in i)a.o(i,o)&&(a.m[o]=i[o]);if(l)var c=l(a)}for(t&&t(n);d<s.length;d++)r=s[d],a.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return a.O(c)},n=self.webpackChunknautobot=self.webpackChunknautobot||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var o=a.O(void 0,[68],(()=>a(226)));o=a.O(o)})();
|
|
2
2
|
//# sourceMappingURL=nautobot.js.map
|