mirror of
				https://github.com/zen-browser/desktop.git
				synced 2025-11-04 09:44:32 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			1.9.1b
			...
			squircles-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					335925abad | 
@@ -40,6 +40,8 @@
 | 
				
			|||||||
        gZenVerticalTabsManager.init();
 | 
					        gZenVerticalTabsManager.init();
 | 
				
			||||||
        gZenUIManager.init();
 | 
					        gZenUIManager.init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this._initSquircles();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        document.l10n.setAttributes(document.getElementById('tabs-newtab-button'), 'tabs-toolbar-new-tab');
 | 
					        document.l10n.setAttributes(document.getElementById('tabs-newtab-button'), 'tabs-toolbar-new-tab');
 | 
				
			||||||
      } catch (e) {
 | 
					      } catch (e) {
 | 
				
			||||||
        console.error('ZenThemeModifier: Error initializing browser layout', e);
 | 
					        console.error('ZenThemeModifier: Error initializing browser layout', e);
 | 
				
			||||||
@@ -121,6 +123,12 @@
 | 
				
			|||||||
      gURLBar._initPasteAndGo();
 | 
					      gURLBar._initPasteAndGo();
 | 
				
			||||||
      gURLBar._initStripOnShare();
 | 
					      gURLBar._initStripOnShare();
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    _initSquircles() {
 | 
				
			||||||
 | 
					      CSS.paintWorklet.addModule(
 | 
				
			||||||
 | 
					        `chrome://browser/content/zen-vendor/css-houdini-squircle.min.mjs`
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ZenStartup.init();
 | 
					  ZenStartup.init();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,7 @@
 | 
				
			|||||||
<script src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"/>
 | 
					<script src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"/>
 | 
				
			||||||
<script src="chrome://browser/content/zen-components/ZenProfileDialogUI.mjs" />
 | 
					<script src="chrome://browser/content/zen-components/ZenProfileDialogUI.mjs" />
 | 
				
			||||||
<script src="chrome://browser/content/zen-components/ZenGlanceManager.mjs" />
 | 
					<script src="chrome://browser/content/zen-components/ZenGlanceManager.mjs" />
 | 
				
			||||||
 | 
					<script src="chrome://browser/content/zen-vendor/css-paint-polyfill.min.mjs" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Unimportant scripts
 | 
					# Unimportant scripts
 | 
				
			||||||
<script src="chrome://browser/content/zen-components/ZenRices.mjs" />
 | 
					<script src="chrome://browser/content/zen-components/ZenRices.mjs" />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,4 +75,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        # JS Vendor
 | 
					        # JS Vendor
 | 
				
			||||||
        content/browser/zen-vendor/tsparticles.confetti.bundle.min.js (content/zen-vendor/tsparticles.confetti.bundle.min.js)
 | 
					        content/browser/zen-vendor/tsparticles.confetti.bundle.min.js (content/zen-vendor/tsparticles.confetti.bundle.min.js)
 | 
				
			||||||
        content/browser/zen-vendor/motion.min.mjs                      (content/zen-vendor/motion.min.mjs)
 | 
					        content/browser/zen-vendor/motion.min.mjs                     (content/zen-vendor/motion.min.mjs)
 | 
				
			||||||
 | 
					        content/browser/zen-vendor/css-houdini-squircle.min.mjs       (content/zen-vendor/css-houdini-squircle.min.mjs)
 | 
				
			||||||
 | 
					        content/browser/zen-vendor/css-paint-polyfill.min.mjs         (content/zen-vendor/css-paint-polyfill.min.mjs)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					const drawSquircle=(ctx,geom,radii,smooth,lineWidth,color)=>{const defaultFill=color;const lineWidthOffset=lineWidth/2;ctx.beginPath();ctx.lineTo(radii[0],lineWidthOffset);ctx.lineTo(geom.width-radii[1],lineWidthOffset);ctx.bezierCurveTo(geom.width-radii[1]/smooth,lineWidthOffset,geom.width-lineWidthOffset,radii[1]/smooth,geom.width-lineWidthOffset,radii[1]);ctx.lineTo(geom.width-lineWidthOffset,geom.height-radii[2]);ctx.bezierCurveTo(geom.width-lineWidthOffset,geom.height-radii[2]/smooth,geom.width-radii[2]/smooth,geom.height-lineWidthOffset,geom.width-radii[2],geom.height-lineWidthOffset);ctx.lineTo(radii[3],geom.height-lineWidthOffset);ctx.bezierCurveTo(radii[3]/smooth,geom.height-lineWidthOffset,lineWidthOffset,geom.height-radii[3]/smooth,lineWidthOffset,geom.height-radii[3]);ctx.lineTo(lineWidthOffset,radii[0]);ctx.bezierCurveTo(lineWidthOffset,radii[0]/smooth,radii[0]/smooth,lineWidthOffset,radii[0],lineWidthOffset);ctx.closePath();if(lineWidth){ctx.strokeStyle=defaultFill;ctx.lineWidth=lineWidth;ctx.stroke()}else{ctx.fillStyle=defaultFill;ctx.fill()}};class SquircleClass{static get contextOptions(){return{alpha:true}}static get inputProperties(){return["--squircle-radius","--squircle-radius-top-left","--squircle-radius-top-right","--squircle-radius-bottom-right","--squircle-radius-bottom-left","--squircle-smooth","--squircle-outline","--squircle-fill"]}paint(ctx,geom,properties){const smoothRatio=10;const distanceRatio=1.8;const squircleSmooth=parseFloat(properties.get("--squircle-smooth")*smoothRatio);const individualRadiiProps=SquircleClass.inputProperties.slice(1,5);let squircleRadii=individualRadiiProps.map(prop=>{const value=properties.get(prop);return value?parseInt(value,10)*distanceRatio:NaN});let shorthand_R;if(squircleRadii.some(isNaN)){const radiusRegex=/([0-9]+[a-z%]*)/g;const radius_shorthand=properties.get("--squircle-radius").toString();const matches=radius_shorthand.match(radiusRegex);if(matches){shorthand_R=matches.map(val=>parseInt(val,10)*distanceRatio);while(shorthand_R.length<4){if(shorthand_R.length===1){shorthand_R.push(shorthand_R[0])}else if(shorthand_R.length===2){shorthand_R=[shorthand_R[0],shorthand_R[1],shorthand_R[0],shorthand_R[1]]}else if(shorthand_R.length===3){shorthand_R=[shorthand_R[0],shorthand_R[1],shorthand_R[2],shorthand_R[1]]}}}else{const defaultRadius=squircleRadii.every(isNaN)?8*distanceRatio:0;shorthand_R=[defaultRadius,defaultRadius,defaultRadius,defaultRadius]}}squircleRadii=squircleRadii.map((val,i)=>isNaN(val)?shorthand_R[i]:val);const squrcleOutline=parseFloat(properties.get("--squircle-outline"),10);const squrcleColor=properties.get("--squircle-fill").toString();const isSmooth=()=>{if(typeof properties.get("--squircle-smooth")[0]!=="undefined"){if(squircleSmooth===0){return 1}return squircleSmooth}else{return 10}};const isOutline=()=>{if(squrcleOutline){return squrcleOutline}else{return 0}};const isColor=()=>{if(squrcleColor){return squrcleColor}else{return"#f45"}};const maxRadius=Math.max(...squircleRadii);if(maxRadius<geom.width/2&&maxRadius<geom.height/2){drawSquircle(ctx,geom,squircleRadii,isSmooth(),isOutline(),isColor())}else{const minRadius=Math.min(geom.width/2,geom.height/2);drawSquircle(ctx,geom,squircleRadii.map(()=>minRadius),isSmooth(),isOutline(),isColor())}}}if(typeof registerPaint!=="undefined"){registerPaint("squircle",SquircleClass)}
 | 
				
			||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user