/*! elementor-pro - v3.14.0 - 26-06-2023 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["progress-tracker"],{ /***/ "../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js": /*!************************************************************************************!*\ !*** ../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class CircularProgress { constructor(element, settings) { this.settings = settings; this.lastKnownProgress = null; this.circularProgressTracker = element.find('.elementor-scrolling-tracker-circular')[0]; this.circularCurrentProgress = this.circularProgressTracker.getElementsByClassName('current-progress')[0]; this.circularCurrentProgressPercentage = this.circularProgressTracker.getElementsByClassName('current-progress-percentage')[0]; const radius = this.circularCurrentProgress.r.baseVal.value; const circumference = radius * 2 * Math.PI; this.circularCurrentProgress.style.strokeDasharray = `${circumference} ${circumference}`; this.circularCurrentProgress.style.strokeDashoffset = circumference; this.elements = this.cacheElements(); this.resizeObserver = new ResizeObserver(() => { if (this.lastKnownProgress) { this.updateProgress(this.lastKnownProgress); } }); this.resizeObserver.observe(this.circularProgressTracker); } cacheElements() { return { circularProgressTracker: this.circularProgressTracker, circularCurrentProgress: this.circularCurrentProgress, circularCurrentProgressPercentage: this.circularCurrentProgressPercentage }; } updateProgress(progress) { // On page load, there is no progress and some of the elements might be not fully rendered - so we hide the progress. if (progress <= 0) { this.elements.circularCurrentProgress.style.display = 'none'; this.elements.circularCurrentProgressPercentage.style.display = 'none'; return; } this.elements.circularCurrentProgress.style.display = 'block'; this.elements.circularCurrentProgressPercentage.style.display = 'block'; const radius = this.elements.circularCurrentProgress.r.baseVal.value, circumference = radius * 2 * Math.PI, offset = circumference - progress / 100 * circumference; this.lastKnownProgress = progress; this.elements.circularCurrentProgress.style.strokeDasharray = `${circumference} ${circumference}`; this.elements.circularCurrentProgress.style.strokeDashoffset = 'ltr' === this.settings.direction ? -offset : offset; if ('yes' === this.settings.percentage) { this.elements.circularCurrentProgressPercentage.innerHTML = Math.round(progress) + '%'; } } onDestroy() { this.resizeObserver.unobserve(this.circularProgressTracker); } } var _default = CircularProgress; exports["default"] = _default; /***/ }), /***/ "../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js": /*!**********************************************************************************!*\ !*** ../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class LinearProgress { constructor(element, settings) { this.settings = settings; this.linearProgressTracker = element.find('.elementor-scrolling-tracker-horizontal')[0]; this.linearCurrentProgress = this.linearProgressTracker.getElementsByClassName('current-progress')[0]; this.linearCurrentProgressPercentage = this.linearProgressTracker.getElementsByClassName('current-progress-percentage')[0]; this.elements = this.cacheElements(); } cacheElements() { return { linearProgressTracker: this.linearProgressTracker, linearCurrentProgress: this.linearCurrentProgress, linearCurrentProgressPercentage: this.linearCurrentProgressPercentage }; } updateProgress(progress) { // On page load, there is no progress and some of the elements might be not fully rendered - so we hide the progress. if (progress < 1) { this.elements.linearCurrentProgress.style.display = 'none'; return; } this.elements.linearCurrentProgress.style.display = 'flex'; this.elements.linearCurrentProgress.style.width = progress + '%'; if ('yes' === this.settings.percentage && // Multiplying the progress percentage width by 1.5 to make sure it has enough space to be shown correctly. this.elements.linearCurrentProgress.getBoundingClientRect().width > this.elements.linearCurrentProgressPercentage.getBoundingClientRect().width * 1.5) { this.elements.linearCurrentProgressPercentage.innerHTML = Math.round(progress) + '%'; this.elements.linearCurrentProgressPercentage.style.color = getComputedStyle(this.linearCurrentProgress).getPropertyValue('--percentage-color'); } else { this.elements.linearCurrentProgressPercentage.style.color = 'transparent'; } } } var _default = LinearProgress; exports["default"] = _default; /***/ }), /***/ "../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js": /*!***********************************************************************************!*\ !*** ../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _circularProgress = _interopRequireDefault(__webpack_require__(/*! ./circular-progress */ "../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js")); var _linearProgress = _interopRequireDefault(__webpack_require__(/*! ./linear-progress */ "../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js")); class ProgressTracker extends elementorModules.frontend.handlers.Base { onInit() { elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); this.circular = 'circular' === this.getElementSettings().type; const Handler = this.circular ? _circularProgress.default : _linearProgress.default; this.progressBar = new Handler(this.$element, this.getElementSettings()); this.progressPercentage = 0; this.scrollHandler(); this.handler = this.scrollHandler.bind(this); this.initListeners(); } getTrackingElementSelector() { const trackingElementSetting = this.getElementSettings().relative_to; let selector; switch (trackingElementSetting) { case 'selector': selector = jQuery(this.getElementSettings().selector); break; case 'post_content': selector = jQuery('.elementor-widget-theme-post-content'); break; default: selector = this.isScrollSnap() ? jQuery('#e-scroll-snap-container') : elementorFrontend.elements.$body; break; } return selector; } // TODO: On Elementor-Pro-3.6.0 delete this function and instead // use the function isScrollSnapActivated() from \elementor\assets\dev\js\frontend\utils\utils.js isScrollSnap() { const scrollSnapStatus = this.isEdit ? elementor.settings.page.model.attributes.scroll_snap : elementorFrontend.config.settings.page.scroll_snap; return 'yes' === scrollSnapStatus ? true : false; } addScrollSnapContainer() { if (this.isScrollSnap() && !jQuery('#e-scroll-snap-container').length) { jQuery('body').wrapInner('
'); } } scrollHandler() { // Temporary solution to integrate Scroll-Snap with Progress-Tracker. // Add Scroll-Snap container to all content in order to calculate the viewport percentage. this.addScrollSnapContainer(); const $trackingElementSelector = this.getTrackingElementSelector(), scrollStartPercentage = $trackingElementSelector.is(elementorFrontend.elements.$body) || $trackingElementSelector.is(jQuery('#e-scroll-snap-container')) ? -100 : 0; this.progressPercentage = elementorModules.utils.Scroll.getElementViewportPercentage(this.getTrackingElementSelector(), { start: scrollStartPercentage, end: -100 }); this.progressBar.updateProgress(this.progressPercentage); } initListeners() { window.addEventListener('scroll', this.handler); elementorFrontend.elements.$body[0].addEventListener('scroll', this.handler); } onDestroy() { if (this.progressBar.onDestroy) { this.progressBar.onDestroy(); } window.removeEventListener('scroll', this.handler); elementorFrontend.elements.$body[0].removeEventListener('scroll', this.handler); } } var _default = ProgressTracker; exports["default"] = _default; /***/ }) }]); //# sourceMappingURL=progress-tracker.3424c0ac2b2c8da47033.bundle.js.map{"id":834,"date":"2025-01-31T12:43:36","date_gmt":"2025-01-31T12:43:36","guid":{"rendered":"http:\/\/bravar-kus.hr\/?p=834"},"modified":"2025-01-31T13:31:58","modified_gmt":"2025-01-31T13:31:58","slug":"latest-news-2","status":"publish","type":"post","link":"http:\/\/bravar-kus.hr\/latest-news-2\/","title":{"rendered":"Latest News"},"content":{"rendered":"Google Introduces New Features to Help You Identify AI-Edited Photos <\/p>\n
<\/p>\n
On the other hand, Pearson says, AI tools might allow more deployment of fast and accurate oncology imaging into communities \u2014 such as rural and low-income areas \u2014 that don\u2019t have many specialists to read and analyze scans and biopsies. Pearson hopes that the images can be read by AI tools in those communities, with the results sent electronically to radiologists and pathologists elsewhere for analysis. \u201cWhat you would see is a highly magnified picture of the microscopic architecture of the tumor. Those images are high resolution, they\u2019re gigapixel in size, so there\u2019s a ton of information in them.<\/p>\n<\/p>\n
Unlike traditional methods that focus on absolute performance, this new approach assesses how models perform by contrasting their responses to the easiest and hardest images. The study further explored how image difficulty could be explained and tested for similarity to human visual processing. Using metrics like c-score, prediction depth, and adversarial robustness, the team found that harder images are processed differently by networks. \u201cWhile there are observable trends, such as easier images being more prototypical, a comprehensive semantic explanation of image difficulty continues to elude the scientific community,\u201d says Mayo.<\/p>\n<\/p>\n
Computational detection tools could be a great starting point as part of a verification process, along with other open source techniques, often referred to as OSINT methods. This may include reverse image search, geolocation, or shadow analysis, among many others. Fast forward to the present, and the team has taken their research a step further with MVT.<\/p>\n<\/p>\n
For those premises that do rely on ear tags and the like, the AI-powered technology can act as a back-up system, allowing producers to continuously identify cattle even if an RFID tag has been lost. Asked how else the company\u2019s technology simplifies cattle management, Elliott told us it addresses several limitations. \u201cFor example, we eliminate the distance restriction at the chute that we see with low-frequency RFID tag, which is 2 inches.<\/p>\n<\/p>\n
\u2018We can recognize cows from 50 feet away\u2019: AI-powered app can identify cattle in a snap.<\/p>\n