mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-31 18:28:20 +02:00 
			
		
		
		
	Update admin interface dependencies (#4581)
- Updated JS/CSS dependencies - Fixed a small issue regarding DNS IP detection fixes #3946 fixes #3947
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							9555ac7bb8
						
					
				
				
					commit
					f05398a6b3
				
			| @@ -170,7 +170,7 @@ pub fn static_files(filename: &str) -> Result<(ContentType, &'static [u8]), Erro | ||||
|         } | ||||
|         "bootstrap.css" => Ok((ContentType::CSS, include_bytes!("../static/scripts/bootstrap.css"))), | ||||
|         "bootstrap.bundle.js" => Ok((ContentType::JavaScript, include_bytes!("../static/scripts/bootstrap.bundle.js"))), | ||||
|         "jdenticon.js" => Ok((ContentType::JavaScript, include_bytes!("../static/scripts/jdenticon.js"))), | ||||
|         "jdenticon-3.3.0.js" => Ok((ContentType::JavaScript, include_bytes!("../static/scripts/jdenticon-3.3.0.js"))), | ||||
|         "datatables.js" => Ok((ContentType::JavaScript, include_bytes!("../static/scripts/datatables.js"))), | ||||
|         "datatables.css" => Ok((ContentType::CSS, include_bytes!("../static/scripts/datatables.css"))), | ||||
|         "jquery-3.7.1.slim.js" => { | ||||
|   | ||||
							
								
								
									
										6
									
								
								src/static/scripts/admin_diagnostics.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								src/static/scripts/admin_diagnostics.js
									
									
									
									
										vendored
									
									
								
							| @@ -21,7 +21,11 @@ const browserUTC = `${year}-${month}-${day} ${hour}:${minute}:${seconds} UTC`; | ||||
|  | ||||
| // ================================ | ||||
| // Check if the output is a valid IP | ||||
| const isValidIp = value => (/^(?:(?:^|\.)(?:2(?:5[0-5]|[0-4]\d)|1?\d?\d)){4}$/.test(value) ? true : false); | ||||
| function isValidIp(ip) { | ||||
|     const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; | ||||
|     const ipv6Regex = /^(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}|((?:[a-fA-F0-9]{1,4}:){1,7}:|:(:[a-fA-F0-9]{1,4}){1,7}|[a-fA-F0-9]{1,4}:((:[a-fA-F0-9]{1,4}){1,6}))$/; | ||||
|     return ipv4Regex.test(ip) || ipv6Regex.test(ip); | ||||
| } | ||||
|  | ||||
| function checkVersions(platform, installed, latest, commit=null) { | ||||
|     if (installed === "-" || latest === "-") { | ||||
|   | ||||
							
								
								
									
										17
									
								
								src/static/scripts/bootstrap.bundle.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								src/static/scripts/bootstrap.bundle.js
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| /*! | ||||
|   * Bootstrap v5.3.2 (https://getbootstrap.com/) | ||||
|   * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||||
|   * Bootstrap v5.3.3 (https://getbootstrap.com/) | ||||
|   * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) | ||||
|   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||||
|   */ | ||||
| (function (global, factory) { | ||||
| @@ -210,7 +210,6 @@ | ||||
|   const reflow = element => { | ||||
|     element.offsetHeight; // eslint-disable-line no-unused-expressions | ||||
|   }; | ||||
|  | ||||
|   const getjQuery = () => { | ||||
|     if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { | ||||
|       return window.jQuery; | ||||
| @@ -648,7 +647,7 @@ | ||||
|    * Constants | ||||
|    */ | ||||
|  | ||||
|   const VERSION = '5.3.2'; | ||||
|   const VERSION = '5.3.3'; | ||||
|  | ||||
|   /** | ||||
|    * Class definition | ||||
| @@ -729,9 +728,9 @@ | ||||
|       if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { | ||||
|         hrefAttribute = `#${hrefAttribute.split('#')[1]}`; | ||||
|       } | ||||
|       selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null; | ||||
|       selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; | ||||
|     } | ||||
|     return selector; | ||||
|     return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null; | ||||
|   }; | ||||
|   const SelectorEngine = { | ||||
|     find(selector, element = document.documentElement) { | ||||
| @@ -3916,7 +3915,6 @@ | ||||
|     // if false, we use the backdrop helper without adding any element to the dom | ||||
|     rootElement: 'body' // give the choice to place backdrop under different elements | ||||
|   }; | ||||
|  | ||||
|   const DefaultType$8 = { | ||||
|     className: 'string', | ||||
|     clickCallback: '(function|null)', | ||||
| @@ -4041,7 +4039,6 @@ | ||||
|     autofocus: true, | ||||
|     trapElement: null // The element to trap focus inside of | ||||
|   }; | ||||
|  | ||||
|   const DefaultType$7 = { | ||||
|     autofocus: 'boolean', | ||||
|     trapElement: 'element' | ||||
| @@ -4768,7 +4765,10 @@ | ||||
|     br: [], | ||||
|     col: [], | ||||
|     code: [], | ||||
|     dd: [], | ||||
|     div: [], | ||||
|     dl: [], | ||||
|     dt: [], | ||||
|     em: [], | ||||
|     hr: [], | ||||
|     h1: [], | ||||
| @@ -6311,3 +6311,4 @@ | ||||
|   return index_umd; | ||||
|  | ||||
| })); | ||||
| //# sourceMappingURL=bootstrap.bundle.js.map | ||||
|   | ||||
							
								
								
									
										53
									
								
								src/static/scripts/bootstrap.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								src/static/scripts/bootstrap.css
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
| @charset "UTF-8"; | ||||
| /*! | ||||
|  * Bootstrap  v5.3.2 (https://getbootstrap.com/) | ||||
|  * Copyright 2011-2023 The Bootstrap Authors | ||||
|  * Bootstrap  v5.3.3 (https://getbootstrap.com/) | ||||
|  * Copyright 2011-2024 The Bootstrap Authors | ||||
|  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) | ||||
|  */ | ||||
| :root, | ||||
| @@ -3042,6 +3042,9 @@ textarea.form-control-lg { | ||||
| .btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { | ||||
|   box-shadow: var(--bs-btn-focus-box-shadow); | ||||
| } | ||||
| .btn-check:checked:focus-visible + .btn { | ||||
|   box-shadow: var(--bs-btn-focus-box-shadow); | ||||
| } | ||||
| .btn:disabled, .btn.disabled, fieldset:disabled .btn { | ||||
|   color: var(--bs-btn-disabled-color); | ||||
|   pointer-events: none; | ||||
| @@ -4573,12 +4576,11 @@ textarea.form-control-lg { | ||||
|   --bs-accordion-btn-padding-y: 1rem; | ||||
|   --bs-accordion-btn-color: var(--bs-body-color); | ||||
|   --bs-accordion-btn-bg: var(--bs-accordion-bg); | ||||
|   --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); | ||||
|   --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); | ||||
|   --bs-accordion-btn-icon-width: 1.25rem; | ||||
|   --bs-accordion-btn-icon-transform: rotate(-180deg); | ||||
|   --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; | ||||
|   --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); | ||||
|   --bs-accordion-btn-focus-border-color: #86b7fe; | ||||
|   --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); | ||||
|   --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); | ||||
|   --bs-accordion-body-padding-x: 1.25rem; | ||||
|   --bs-accordion-body-padding-y: 1rem; | ||||
| @@ -4636,7 +4638,6 @@ textarea.form-control-lg { | ||||
| } | ||||
| .accordion-button:focus { | ||||
|   z-index: 3; | ||||
|   border-color: var(--bs-accordion-btn-focus-border-color); | ||||
|   outline: 0; | ||||
|   box-shadow: var(--bs-accordion-btn-focus-box-shadow); | ||||
| } | ||||
| @@ -4654,7 +4655,7 @@ textarea.form-control-lg { | ||||
|   border-top-left-radius: var(--bs-accordion-border-radius); | ||||
|   border-top-right-radius: var(--bs-accordion-border-radius); | ||||
| } | ||||
| .accordion-item:first-of-type .accordion-button { | ||||
| .accordion-item:first-of-type > .accordion-header .accordion-button { | ||||
|   border-top-left-radius: var(--bs-accordion-inner-border-radius); | ||||
|   border-top-right-radius: var(--bs-accordion-inner-border-radius); | ||||
| } | ||||
| @@ -4665,11 +4666,11 @@ textarea.form-control-lg { | ||||
|   border-bottom-right-radius: var(--bs-accordion-border-radius); | ||||
|   border-bottom-left-radius: var(--bs-accordion-border-radius); | ||||
| } | ||||
| .accordion-item:last-of-type .accordion-button.collapsed { | ||||
| .accordion-item:last-of-type > .accordion-header .accordion-button.collapsed { | ||||
|   border-bottom-right-radius: var(--bs-accordion-inner-border-radius); | ||||
|   border-bottom-left-radius: var(--bs-accordion-inner-border-radius); | ||||
| } | ||||
| .accordion-item:last-of-type .accordion-collapse { | ||||
| .accordion-item:last-of-type > .accordion-collapse { | ||||
|   border-bottom-right-radius: var(--bs-accordion-border-radius); | ||||
|   border-bottom-left-radius: var(--bs-accordion-border-radius); | ||||
| } | ||||
| @@ -4678,21 +4679,21 @@ textarea.form-control-lg { | ||||
|   padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); | ||||
| } | ||||
|  | ||||
| .accordion-flush .accordion-collapse { | ||||
|   border-width: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item { | ||||
| .accordion-flush > .accordion-item { | ||||
|   border-right: 0; | ||||
|   border-left: 0; | ||||
|   border-radius: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item:first-child { | ||||
| .accordion-flush > .accordion-item:first-child { | ||||
|   border-top: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item:last-child { | ||||
| .accordion-flush > .accordion-item:last-child { | ||||
|   border-bottom: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { | ||||
| .accordion-flush > .accordion-item > .accordion-header .accordion-button, .accordion-flush > .accordion-item > .accordion-header .accordion-button.collapsed { | ||||
|   border-radius: 0; | ||||
| } | ||||
| .accordion-flush > .accordion-item > .accordion-collapse { | ||||
|   border-radius: 0; | ||||
| } | ||||
|  | ||||
| @@ -5578,7 +5579,6 @@ textarea.form-control-lg { | ||||
|   display: flex; | ||||
|   flex-shrink: 0; | ||||
|   align-items: center; | ||||
|   justify-content: space-between; | ||||
|   padding: var(--bs-modal-header-padding); | ||||
|   border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); | ||||
|   border-top-left-radius: var(--bs-modal-inner-border-radius); | ||||
| @@ -6144,20 +6144,12 @@ textarea.form-control-lg { | ||||
|   background-size: 100% 100%; | ||||
| } | ||||
|  | ||||
| /* rtl:options: { | ||||
|   "autoRename": true, | ||||
|   "stringMap":[ { | ||||
|     "name"    : "prev-next", | ||||
|     "search"  : "prev", | ||||
|     "replace" : "next" | ||||
|   } ] | ||||
| } */ | ||||
| .carousel-control-prev-icon { | ||||
|   background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); | ||||
|   background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")*/; | ||||
| } | ||||
|  | ||||
| .carousel-control-next-icon { | ||||
|   background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); | ||||
|   background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e") /*rtl:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")*/; | ||||
| } | ||||
|  | ||||
| .carousel-indicators { | ||||
| @@ -6777,14 +6769,11 @@ textarea.form-control-lg { | ||||
| .offcanvas-header { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   justify-content: space-between; | ||||
|   padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); | ||||
| } | ||||
| .offcanvas-header .btn-close { | ||||
|   padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); | ||||
|   margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); | ||||
|   margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); | ||||
|   margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); | ||||
|   margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x)) calc(-0.5 * var(--bs-offcanvas-padding-y)) auto; | ||||
| } | ||||
|  | ||||
| .offcanvas-title { | ||||
| @@ -12064,3 +12053,5 @@ textarea.form-control-lg { | ||||
|     display: none !important; | ||||
|   } | ||||
| } | ||||
|  | ||||
| /*# sourceMappingURL=bootstrap.css.map */ | ||||
							
								
								
									
										18
									
								
								src/static/scripts/datatables.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								src/static/scripts/datatables.css
									
									
									
									
										vendored
									
									
								
							| @@ -4,10 +4,10 @@ | ||||
|  * | ||||
|  * To rebuild or modify this file with the latest versions of the included | ||||
|  * software please visit: | ||||
|  *   https://datatables.net/download/#bs5/dt-2.0.0 | ||||
|  *   https://datatables.net/download/#bs5/dt-2.0.7 | ||||
|  * | ||||
|  * Included libraries: | ||||
|  *   DataTables 2.0.0 | ||||
|  *   DataTables 2.0.7 | ||||
|  */ | ||||
|  | ||||
| @charset "UTF-8"; | ||||
| @@ -347,7 +347,7 @@ table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) > * { | ||||
|   box-shadow: none; | ||||
| } | ||||
| table.table.dataTable > :not(caption) > * > * { | ||||
|   background-color: transparent; | ||||
|   background-color: var(--bs-table-bg); | ||||
| } | ||||
| table.table.dataTable > tbody > tr { | ||||
|   background-color: transparent; | ||||
| @@ -463,10 +463,18 @@ div.dt-scroll-foot > .dt-scroll-footInner > table > tfoot > tr:first-child { | ||||
|     justify-content: center !important; | ||||
|   } | ||||
| } | ||||
| table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled) { | ||||
| table.dataTable.table-sm > thead > tr th.dt-orderable-asc, table.dataTable.table-sm > thead > tr th.dt-orderable-desc, table.dataTable.table-sm > thead > tr th.dt-ordering-asc, table.dataTable.table-sm > thead > tr th.dt-ordering-desc, | ||||
| table.dataTable.table-sm > thead > tr td.dt-orderable-asc, | ||||
| table.dataTable.table-sm > thead > tr td.dt-orderable-desc, | ||||
| table.dataTable.table-sm > thead > tr td.dt-ordering-asc, | ||||
| table.dataTable.table-sm > thead > tr td.dt-ordering-desc { | ||||
|   padding-right: 20px; | ||||
| } | ||||
| table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled):before, table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled):after { | ||||
| table.dataTable.table-sm > thead > tr th.dt-orderable-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-orderable-desc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-desc span.dt-column-order, | ||||
| table.dataTable.table-sm > thead > tr td.dt-orderable-asc span.dt-column-order, | ||||
| table.dataTable.table-sm > thead > tr td.dt-orderable-desc span.dt-column-order, | ||||
| table.dataTable.table-sm > thead > tr td.dt-ordering-asc span.dt-column-order, | ||||
| table.dataTable.table-sm > thead > tr td.dt-ordering-desc span.dt-column-order { | ||||
|   right: 5px; | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										1025
									
								
								src/static/scripts/datatables.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1025
									
								
								src/static/scripts/datatables.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,12 +1,12 @@ | ||||
| /** | ||||
|  * Jdenticon 3.2.0 | ||||
|  * Jdenticon 3.3.0 | ||||
|  * http://jdenticon.com
 | ||||
|  *   | ||||
|  * Built: 2022-08-07T11:23:11.640Z | ||||
|  * Built: 2024-05-10T09:48:41.921Z | ||||
|  * | ||||
|  * MIT License | ||||
|  *  | ||||
|  * Copyright (c) 2014-2021 Daniel Mester Pirttijärvi | ||||
|  * Copyright (c) 2014-2024 Daniel Mester Pirttijärvi | ||||
|  *  | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
| @@ -304,6 +304,8 @@ var ATTRIBUTES = { | ||||
|     o/*VALUE*/: "data-jdenticon-value" | ||||
| }; | ||||
| 
 | ||||
| var IS_RENDERED_PROPERTY = "jdenticonRendered"; | ||||
| 
 | ||||
| var ICON_SELECTOR = "[" + ATTRIBUTES.t/*HASH*/ +"],[" + ATTRIBUTES.o/*VALUE*/ +"]"; | ||||
| 
 | ||||
| var documentQuerySelectorAll = /** @type {!Function} */ ( | ||||
| @@ -323,6 +325,27 @@ function getIdenticonType(el) { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function whenDocumentIsReady(/** @type {Function} */ callback) { | ||||
|     function loadedHandler() { | ||||
|         document.removeEventListener("DOMContentLoaded", loadedHandler); | ||||
|         window.removeEventListener("load", loadedHandler); | ||||
|         setTimeout(callback, 0); // Give scripts a chance to run
 | ||||
|     } | ||||
|      | ||||
|     if (typeof document !== "undefined" && | ||||
|         typeof window !== "undefined" && | ||||
|         typeof setTimeout !== "undefined" | ||||
|     ) { | ||||
|         if (document.readyState === "loading") { | ||||
|             document.addEventListener("DOMContentLoaded", loadedHandler); | ||||
|             window.addEventListener("load", loadedHandler); | ||||
|         } else { | ||||
|             // Document already loaded. The load events above likely won't be raised
 | ||||
|             setTimeout(callback, 0); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function observer(updateCallback) { | ||||
|     if (typeof MutationObserver != "undefined") { | ||||
|         var mutationObserver = new MutationObserver(function onmutation(mutations) { | ||||
| @@ -1011,6 +1034,11 @@ function drawIcon(ctx, hashOrValue, size, config) { | ||||
|     iconGenerator(new CanvasRenderer(ctx, size),  | ||||
|         isValidHash(hashOrValue) || computeHash(hashOrValue),  | ||||
|         config); | ||||
| 
 | ||||
|     var canvas = ctx.canvas; | ||||
|     if (canvas) { | ||||
|         canvas[IS_RENDERED_PROPERTY] = true; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
| @@ -1313,6 +1341,24 @@ function updateAll() { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute that have not already | ||||
|  * been rendered. | ||||
|  */ | ||||
| function updateAllConditional() { | ||||
|     if (documentQuerySelectorAll) { | ||||
|         /** @type {NodeListOf<HTMLElement>} */ | ||||
|         var elements = documentQuerySelectorAll(ICON_SELECTOR); | ||||
|          | ||||
|         for (var i = 0; i < elements.length; i++) { | ||||
|             var el = elements[i]; | ||||
|             if (!el[IS_RENDERED_PROPERTY]) { | ||||
|                 update(el); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Updates the identicon in the specified `<canvas>` or `<svg>` elements. | ||||
|  * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type | ||||
| @@ -1381,6 +1427,7 @@ function renderDomElement(el, hashOrValue, config, rendererFactory) { | ||||
|     if (renderer) { | ||||
|         // Draw icon
 | ||||
|         iconGenerator(renderer, hash, config); | ||||
|         el[IS_RENDERED_PROPERTY] = true; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @@ -1419,7 +1466,7 @@ jdenticon["updateSvg"] = update; | ||||
|  * Specifies the version of the Jdenticon package in use. | ||||
|  * @type {string} | ||||
|  */ | ||||
| jdenticon["version"] = "3.2.0"; | ||||
| jdenticon["version"] = "3.3.0"; | ||||
| 
 | ||||
| /** | ||||
|  * Specifies which bundle of Jdenticon that is used. | ||||
| @@ -1444,7 +1491,7 @@ function jdenticonStartup() { | ||||
|     )["replaceMode"]; | ||||
|      | ||||
|     if (replaceMode != "never") { | ||||
|         updateAll(); | ||||
|         updateAllConditional(); | ||||
|          | ||||
|         if (replaceMode == "observe") { | ||||
|             observer(update); | ||||
| @@ -1453,9 +1500,7 @@ function jdenticonStartup() { | ||||
| } | ||||
| 
 | ||||
| // Schedule to render all identicons on the page once it has been loaded.
 | ||||
| if (typeof setTimeout === "function") { | ||||
|     setTimeout(jdenticonStartup, 0); | ||||
| } | ||||
| whenDocumentIsReady(jdenticonStartup); | ||||
| 
 | ||||
| return jdenticon; | ||||
| 
 | ||||
| @@ -62,4 +62,4 @@ | ||||
| <script src="{{urlpath}}/vw_static/jquery-3.7.1.slim.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/datatables.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/admin_organizations.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/jdenticon.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/jdenticon-3.3.0.js"></script> | ||||
|   | ||||
| @@ -143,4 +143,4 @@ | ||||
| <script src="{{urlpath}}/vw_static/jquery-3.7.1.slim.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/datatables.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/admin_users.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/jdenticon.js"></script> | ||||
| <script src="{{urlpath}}/vw_static/jdenticon-3.3.0.js"></script> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user