/*! elementor-pro - v3.28.0 - 05-05-2025 */
"use strict";(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[292],{507:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;class Hotspot extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{hotspot:".e-hotspot",tooltip:".e-hotspot__tooltip"}}}getDefaultElements(){const t=this.getSettings("selectors");return{$hotspot:this.$element.find(t.hotspot),$hotspotsExcludesLinks:this.$element.find(t.hotspot).filter(":not(.e-hotspot--no-tooltip)"),$tooltip:this.$element.find(t.tooltip)}}bindEvents(){const t=this.getCurrentDeviceSetting("tooltip_trigger"),e="mouseenter"===t?"mouseleave mouseenter":t;"none"!==e&&this.elements.$hotspotsExcludesLinks.on(e,(t=>this.onHotspotTriggerEvent(t)))}onDeviceModeChange(){this.elements.$hotspotsExcludesLinks.off(),this.bindEvents()}onHotspotTriggerEvent(t){const e=jQuery(t.target),o=e.closest(".e-hotspot__button").length,s="mouseleave"===t.type&&(e.is(".e-hotspot--tooltip-position")||e.parents(".e-hotspot--tooltip-position").length),n="mobile"===elementorFrontend.getCurrentDeviceMode();if(!(e.closest(".e-hotspot--link").length&&n&&("mouseleave"===t.type||"mouseenter"===t.type))&&(o||s)){const e=jQuery(t.currentTarget);this.elements.$hotspot.not(e).removeClass("e-hotspot--active"),e.toggleClass("e-hotspot--active")}}editorAddSequencedAnimation(){this.elements.$hotspot.toggleClass("e-hotspot--sequenced","yes"===this.getElementSettings("hotspot_sequenced_animation"))}hotspotSequencedAnimation(){const t=this.getElementSettings();if("no"===t.hotspot_sequenced_animation)return;const e=elementorModules.utils.Scroll.scrollObserver({callback:o=>{o.isInViewport&&(e.unobserve(this.$element[0]),this.elements.$hotspot.each(((e,o)=>{if(0===e)return;const s=t.hotspot_sequenced_animation_duration,n=e*((s?s.size:1e3)/this.elements.$hotspot.length);o.style.animationDelay=n+"ms"})))}});e.observe(this.$element[0])}setTooltipPositionControl(){const t=this.getElementSettings();void 0!==t.tooltip_animation&&t.tooltip_animation.match(/^e-hotspot--(slide|fade)-direction/)&&(this.elements.$tooltip.removeClass("e-hotspot--tooltip-animation-from-left e-hotspot--tooltip-animation-from-top e-hotspot--tooltip-animation-from-right e-hotspot--tooltip-animation-from-bottom"),this.elements.$tooltip.addClass("e-hotspot--tooltip-animation-from-"+t.tooltip_position))}onInit(){super.onInit(...arguments),this.hotspotSequencedAnimation(),this.setTooltipPositionControl(),window.elementor&&elementor.listenTo(elementor.channels.deviceMode,"change",(()=>this.onDeviceModeChange()))}onElementChange(t){t.startsWith("tooltip_position")&&this.setTooltipPositionControl(),t.startsWith("hotspot_sequenced_animation")&&this.editorAddSequencedAnimation()}}e.default=Hotspot}}]);/*! elementor-pro - v3.28.0 - 05-05-2025 */
"use strict";
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["product-add-to-cart"],{
/***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js":
/*!******************************************************************!*\
!*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, exports) => {
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
class Base extends elementorModules.frontend.handlers.Base {
getDefaultSettings() {
return {
selectors: {
stickyRightColumn: '.e-sticky-right-column'
},
classes: {
stickyRightColumnActive: 'e-sticky-right-column--active'
}
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$stickyRightColumn: this.$element.find(selectors.stickyRightColumn)
};
}
bindEvents() {
// Add our wrapper class around the select2 whenever it is opened.
elementorFrontend.elements.$document.on('select2:open', event => {
this.addSelect2Wrapper(event);
});
}
addSelect2Wrapper(event) {
// The select element is recaptured every time because the markup can refresh
const selectElement = jQuery(event.target).data('select2');
if (selectElement.$dropdown) {
selectElement.$dropdown.addClass('e-woo-select2-wrapper');
}
}
isStickyRightColumnActive() {
const classes = this.getSettings('classes');
return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive);
}
activateStickyRightColumn() {
const elementSettings = this.getElementSettings(),
$wpAdminBar = elementorFrontend.elements.$wpAdminBar,
classes = this.getSettings('classes');
let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0;
if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) {
stickyOptionsOffset += $wpAdminBar.height();
}
if ('yes' === this.getElementSettings('sticky_right_column')) {
this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive);
this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px');
}
}
deactivateStickyRightColumn() {
if (!this.isStickyRightColumnActive()) {
return;
}
const classes = this.getSettings('classes');
this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive);
}
/**
* Activates the sticky column
*
* @return {void}
*/
toggleStickyRightColumn() {
if (!this.getElementSettings('sticky_right_column')) {
this.deactivateStickyRightColumn();
return;
}
if (!this.isStickyRightColumnActive()) {
this.activateStickyRightColumn();
}
}
equalizeElementHeight($element) {
if ($element.length) {
$element.removeAttr('style'); // First remove the custom height we added so that the new height can be re-calculated according to the content
let maxHeight = 0;
$element.each((index, element) => {
maxHeight = Math.max(maxHeight, element.offsetHeight);
});
if (0 < maxHeight) {
$element.css({
height: maxHeight + 'px'
});
}
}
}
/**
* WooCommerce prints the Purchase Note separated from the product name by a border and padding.
* In Elementor's Order Summary design, the product name and purchase note are displayed un-separated.
* To achieve this design, it is necessary to access the Product Name line before the Purchase Note line to adjust
* its padding. Since this cannot be achieved in CSS, it is done in this method.
*
* @param {Object} $element
*
* @return {void}
*/
removePaddingBetweenPurchaseNote($element) {
if ($element) {
$element.each((index, element) => {
jQuery(element).prev().children('td').addClass('product-purchase-note-is-below');
});
}
}
/**
* `elementorPageId` and `elementorWidgetId` are added to the url in the `_wp_http_referer` input which is then
* received when WooCommerce does its cart and checkout ajax requests e.g `update_order_review` and `update_cart`.
* These query strings are extracted from the url and used in our `load_widget_before_wc_ajax` method.
*/
updateWpReferers() {
const selectors = this.getSettings('selectors'),
wpHttpRefererInputs = this.$element.find(selectors.wpHttpRefererInputs),
url = new URL(document.location);
url.searchParams.set('elementorPageId', elementorFrontend.config.post.id);
url.searchParams.set('elementorWidgetId', this.getID());
wpHttpRefererInputs.attr('value', url);
}
}
exports["default"] = Base;
/***/ }),
/***/ "../modules/woocommerce/assets/js/frontend/handlers/product-add-to-cart.js":
/*!*********************************************************************************!*\
!*** ../modules/woocommerce/assets/js/frontend/handlers/product-add-to-cart.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 _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));
class ProductAddToCart extends _base.default {
getDefaultSettings() {
return {
selectors: {
quantityInput: '.e-loop-add-to-cart-form input.qty',
addToCartButton: '.e-loop-add-to-cart-form .ajax_add_to_cart',
addedToCartButton: '.added_to_cart',
loopFormContainer: '.e-loop-add-to-cart-form-container'
}
};
}
getDefaultElements() {
const selectors = this.getSettings('selectors');
return {
$quantityInput: this.$element.find(selectors.quantityInput),
$addToCartButton: this.$element.find(selectors.addToCartButton)
};
}
updateAddToCartButtonQuantity() {
this.elements.$addToCartButton.attr('data-quantity', this.elements.$quantityInput.val());
}
handleAddedToCart($button) {
const selectors = this.getSettings('selectors'),
$addToCartButton = $button.siblings(selectors.addedToCartButton),
$loopFormContainer = $addToCartButton.parents(selectors.loopFormContainer);
$loopFormContainer.children(selectors.addedToCartButton).remove();
$loopFormContainer.append($addToCartButton);
}
bindEvents() {
super.bindEvents(...arguments);
this.elements.$quantityInput.on('change', () => {
this.updateAddToCartButtonQuantity();
});
elementorFrontend.elements.$body.off('added_to_cart.elementor-woocommerce-product-add-to-cart');
elementorFrontend.elements.$body.on('added_to_cart.elementor-woocommerce-product-add-to-cart', (e, fragments, cartHash, $button) => {
this.handleAddedToCart($button);
});
}
}
exports["default"] = ProductAddToCart;
/***/ })
}]);
//# sourceMappingURL=product-add-to-cart.d5883897e035f9c53c5e.bundle.js.map// Icon Sizes
// -------------------------
/* makes the font 33% larger relative to the icon container */
.#{$el-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.#{$el-css-prefix}-2x { font-size: 2em; }
.#{$el-css-prefix}-3x { font-size: 3em; }
.#{$el-css-prefix}-4x { font-size: 4em; }
.#{$el-css-prefix}-5x { font-size: 5em; }
"use strict";(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[1017],{1017:i=>{i.exports=JSON.parse('{"4.0-default":{"title":"Il nuovo predefinito","description":"I nuovi siti partono con la versione 4.0 e le funzioni atomiche attivate per impostazione predefinita. I siti esistenti possono attivarle manualmente. Layout e siti attuali restano invariati.","topic":"Versione 4.0","chipTags":["Atomic Editor"],"readMoreText":"Scopri di più","cta":""},"4.0-atomic-forms":{"title":"Moduli atomici","description":"Crea moduli come parte del layout, non come widget separati. Layout flessibili su più colonne, annidamento libero e controllo completo con lo stesso sistema atomico.","topic":"Versione 4.0","chipTags":["Atomic Editor"],"readMoreText":"Scopri di più","cta":""},"4.0-interactions":{"title":"Interazioni Pro","description":"Crea animazioni avanzate e leggere nell’Editor. Definisci il comportamento in modo visivo, tutto basato sul sistema, senza script pesanti o strumenti esterni.","topic":"Versione 4.0","chipTags":["Atomic Editor"],"readMoreText":"Scopri di più","cta":""},"4.0-sync-design-system":{"title":"Sincronizza e condividi i design system","description":"Esporta e importa variabili e classi tra i siti e sincronizzale con Global Styles v3. Un design system coerente tra progetti e versioni.","topic":"Versione 4.0","chipTags":["Atomic Editor"],"readMoreText":"Scopri di più","cta":""},"angie-launch":{"title":"Presentazione di Angie Code.","description":"Crea widget Elementor e snippet da una semplice descrizione. Nativo per WordPress ed Elementor. Anteprima sicura, affina in conversazione e pubblica quando sei pronto.","topic":"Angie Code","chipTags":["Nuovo lancio"],"readMoreText":"Scopri di più","cta":""},"partner-program":{"title":"Collabora con Elementor. Fai crescere il tuo business.","description":"Unisciti per accedere in esclusiva, visibilità, opportunità di marketing e ricavi aggiuntivi sul lavoro che già fai. Iscriviti gratis e inizia subito.","chipTags":["Programma partner"],"readMoreText":"","cta":"Candidati ora"},"manage-launch":{"title":"Presentazione di Manage","description":"Monitora, ottimizza e mantieni tutti i siti da un’unica dashboard. Prestazioni, aggiornamenti di massa e rischi di sicurezza.","chipTags":["Nuovo lancio"],"readMoreText":"","cta":"Inizia gratis"},"components-3.35":{"title":"Componenti","description":"Sezioni modulari riutilizzabili che si aggiornano ovunque e decidi quanto controllo dare a team o clienti.","topic":"Versione 4.0","chipTags":["Atomic Editor"],"readMoreText":"Scopri di più","cta":""},"one-launch":{"title":"Presentazione di Elementor One","description":"L’esperienza completa per creare siti. Tutti gli strumenti per creare, ottimizzare e gestire, unificati in un unico posto.","chipTags":["Nuovo lancio"],"readMoreText":"","cta":"Esplora Elementor One"},"atomic-tabs-3.34":{"title":"Tab atomici","description":"Inserisci qualsiasi contenuto nei tab per un design davvero atomico.","topic":"Versione 4.0","chipTags":["Atomic Editor"],"readMoreText":"Scopri di più","cta":""},"variables-manager-3.33":{"title":"Gestione variabili","description":"Centralizza colori, tipografia e token di dimensione per design system coerenti e scalabili.","topic":"Versione 4.0","chipTags":["Atomic Editor"],"readMoreText":"Scopri di più","cta":""},"ally-assistant":{"title":"Novità: accessibilità con Ally Assistant","description":"Analizza ogni pagina e risolvi con un clic: contrasti, testi alternativi e altro. Passaggi guidati o correzioni con IA per un sito più inclusivo.","topic":"Ally by Elementor","chipTags":["Nuova funzione"],"readMoreText":"","cta":"Scansiona gratis"},"image-optimizer-3.19":{"title":"Ottimizza le immagini per un sito veloce e d’impatto con il plugin Image Optimizer.","description":"Image Optimizer bilancia qualità e prestazioni. Ridimensiona, comprimi, converti in WebP: caricamenti più rapidi, esperienza migliore.","topic":"Image Optimizer Plugin by Elementor","chipTags":["Nuovo plugin"],"readMoreText":"","cta":"Ottieni Image Optimizer"},"5-star-rating-prompt":{"title":"Ti piacciono le novità? Valutaci con 5 stelle","description":"Racconta a tutti cosa ami di Elementor.","chipTags":[],"readMoreText":"","cta":"Lascia una recensione"},"site-mailer-introducing":{"title":"Presentazione di Site Mailer","description":"Tieni le email di WordPress fuori dallo spam: consegna migliore e configurazione semplice, senza plugin SMTP complicati.","topic":"Site Mailer Plugin by Elementor","chipTags":["Nuovo plugin"],"readMoreText":"","cta":"Prova gratuita"}}')}}]);
Who Founded YouTube?
YouTube was founded by three former PayPal employees: Chad Hurley, Steve Chen, and Jawed Karim. They combined product thinking, engineering skills, and a clear user goal: create a website where anyone could upload a video and watch it instantly in a browser.
Chad Hurley — product/design focus and early CEO role
Steve Chen — engineering and infrastructure
Jawed Karim — engineering and early concept support
The Problem YouTube Solved
At the time, sharing video often meant emailing huge files or dealing with complicated players and downloads. YouTube made video:
Uploadable by non-experts (simple interface)
Streamable in the browser (no special setup)
Sharable through links and embedding on other sites
Early Growth and the First Video
YouTube launched publicly in 2005. One of the most famous early moments was the first uploaded video, “Me at the zoo,” featuring co-founder Jawed Karim. The clip was short and casual—exactly the kind of everyday content that proved the platform’s big idea: ordinary people could publish video without needing a studio.
Key Milestones Timeline
Year/Date Milestone Why It Mattered
2005 YouTube is founded and launches Introduced easy browser-based video sharing
2005 “Me at the zoo” is uploaded Became a symbol of user-generated video culture
2006 Google acquires YouTube Provided resources to scale hosting and global reach
Why Google Bought YouTube
By 2006, YouTube’s traffic was exploding. Video hosting is expensive—bandwidth and storage costs rise fast when millions of people watch content daily. Google’s acquisition gave YouTube the infrastructure and advertising ecosystem to grow into a sustainable business.
What YouTube’s Founding Changed
YouTube didn’t just create a popular website; it reshaped how people learn, entertain themselves, and build careers online. Its founding helped accelerate:
Creator-driven media and influencer culture
How-to education and free tutorials at massive scale
Music discovery, commentary, and global community trends
From a small startup idea to a global video powerhouse, YouTube’s founding is a classic example of a simple product solving a real problem—and changing the internet in the process.