Web Tools #363 - CSS Tools, Media, JS Utilities

Web Tools Weekly
What a Tool!

Issue #363 • July 2, 2020

Advertisement
Managing Complexity in Adopting Microservices
July 8 @ 10 AM PT | 5 PM UTC
Join Rollbar, Optimizely, Postman, and DeployHub for an enlightening panel discussion around the evolution of microservices and best practices for managing a microservices architecture.
Register here
CircleCI

If you have multiple objects in JavaScript and you want to merge them together, keeping what's in common, then the Object.assign() method is going to come in handy.

Here are three example objects that I'll use to demonstrate:

const obj1 = { a: 1, b: 2, c:3, d:4 };
const obj2 = { b: 5, c: 6, e:7, f:8 };
const obj3 = { f: 9, g: 10, h:11, i:12 };

The object key/value pairs are named using the letters of the English alphabet. But you'll notice there's some overlap in the letters. If I want to merge these objects while holding on to the most recent version of any particular key's value, I can use Object.assign():

const newObj = Object.assign(obj1, obj2, obj3);

// Show the modified target object
console.log(obj1);

// Show what's returned (same as target)
console.log(newObj);

Try it on CodePen

As you can see, Object.assign() is pretty simple to use. The first argument is the object that you want to receive the sum of the key/value pairs (i.e. the "target" object). The remainder of the arguments (one or more) constitute the ones you want to assign to the target when combined.

Things to keep in mind when using Object.assign():

  • The target object receives all enumerable own properties from the source objects
  • Later properties overwrite previous ones (as shown in the example code where "b" is overwritten, among others)
  • The "order" is defined by the order in which you put the parameters in the method call. The example CodePen also shows an alternate arrangement for the assignment (i.e. obj1, obj3, obj2), which provides a slightly different output
MDN's article has more info and some more complex examples, but that's Object.assign() in a nutshell.


Now on to this week's tools!

 

CSS and HTML Tools

Managing Complexity in Adopting Microservices
July 8 @ 10 AM PT | 5 PM UTC
Join Rollbar, Optimizely, Postman, and DeployHub for an enlightening panel discussion around the evolution of microservices and best practices for managing a microservices architecture. sponsored 

Stitches
Yet another CSS-in-JS solution, this one favouring atomic CSS.

Sorted CSS Colors
Drag the slider to view sorted named CSS colors in a way that shows related colors together.

Animate.css
The godfather of all the drop-in CSS animation libraries is now at version 4 and brings some breaking changes (it's CSS, how much can it break?).
 
Animate.css

Twin
Use Tailwind classes within CSS-in-JS libraries.

Knopf.css
A modern, modular, and extensible CSS button system designed for both rapid prototyping and production-ready applications.

Entity Pro
A glyph and emoji finder for Mac that uses smart search.

Swach
A robust color management tool for Mac, Windows, and Linux that includes a picker, palettes, contrast checker, and a neat "color harmonies" generator.

Gradihunt
Just another CSS gradient gallery for inspiration and the ability to 'favourite' gradients.

new.css
A classless CSS framework to write modern websites using only HTML.

classnames-components
A CSS class component wrapper to speed up styling React components.

flat-html
An alternative to templating and generating complicated HTML. Seems to be more of a novelty rather than anything practical.
 

Media Tools (SVG, Video, Images, etc.)

Textures.js
A JavaScript library for creating SVG patterns for data visualization.

Image Extractor
Enter a URL to extract all images from any public website.

nanogallery2
Now at version 3. A modern photo/video gallery and lightbox solution that's responsive and customizable.
 
nanogallery2

Universal AR SDK for JavaScript
Build immersive Augmented Reality in the platform of your choice (this is the JS version, other platforms also supported).

HiFiC
High-fidelity generative image compression for a state-of-the-art generative lossy compression system.

Responsive Video Poster
JavaScript plugin that uses a standard image tag as the video poster so you can use standard responsive image techniques to load only the most appropriate image.

Tree
An online tree-like utility for generating ASCII folder structure diagrams.

Chart
Create charts with random, tabular, or JSON data inside Sketch, Figma, or Adobe XD.

Artify
An easy to use web-based design editor packed with 2 million icons, 3,000 Illustrations, 3,000 mockups and thousands of elements and assets like patterns, photos, abstract shapes, and more.

Deakins
Small and simple 2D viewport/camera management for Canvas

Artvee
Browse and download high-resolution, public domain artworks, which you can use for any purpose (commercial or non-commercial).

Blobs
Generate random blobs varying in complexity, downloadable as SVG (image or code) or Flutter code.

JavaScript Utilities

Tech Productivity
A brief weekly newsletter for tech professionals. Features articles, tips, and tools for improved productivity.   promoted

emoji-picker-element
A lightweight emoji picker component for the modern web.

emoji-picker-element

Rando.js
The easiest way to do randomness in JavaScript (e.g. picking a random int/float between two numbers).

dotago.js
Silly syntactic sugar for creating relative dates and time durations with JavaScript.

DFlex
Multiple utilities to manipulate the DOM, including a generator, DOM store, and a draggable utility.

tragopan
Minimal dependency-free pan/zoom library. Uses native browser scrolling as its implementation for panning (left/right/up/down), and transform/scale for zooming (in/out).

secret-blob
Tiny module for easy encryption of buffers.

Selecto.js
A component that allows you to select elements in the drag area using mouse or touch.

RoughNotation
A small JavaScript library to create and animate annotations on a web page. Uses RoughJS to create a hand-drawn look and feel and elements can be annotated in a number of different styles.

ac-colors
A reactive JavaScript color library that can freely convert between many color formats, as well as handle random color generation and contrast ratio calculation.

monetize.js
An Event-driven library that serves as a wrapper and simulator for Web Monetization API.

mande
Simple, light, and easy to use wrapper around the Fetch API.

PluralJS
A micro library to produce any singular noun into plural. Takes into consideration uncountable nouns (like "wildlife") and irregularities (like adding -es to some words e.g. "dingoes").

A Tweet for Thought

Here's a plot chart demonstrating 'effectiveness' vs. 'how often it's used' for various debugging techniques (by Forrest Brazeal).
 

Send Me Your Tools!

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

TitleRun is a game you can play in your browser's title bar.

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly

Older messages

Web Tools #362 - Front-end Frameworks, React Tools, Build Tools

Thursday, June 25, 2020

Web Tools Weekly WEB VERSION Issue #362 • June 25, 2020 Advertisement Codacy: Automated Code Reviews Codacy is an automated code standardization platform that helps improve code quality, create

Web Tools #361 - JS Libraries, Testing Tools, Uncategorizables

Thursday, June 18, 2020

Web Tools Weekly WEB VERSION Issue #361 • June 18, 2020 Advertisement The New Tab Page You'll Actually Use Replace your web browser's gratuitous new tab page with a minimal list of links,

Web Tools #360 - React Tools, Git/CLI, JS Utilities

Thursday, June 11, 2020

Web Tools Weekly WEB VERSION Issue #360 • June 11, 2020 The following intro is a paid product review for NetNut, a fast residential proxy network for web scraping, SERP monitoring, and more. If your

Web Tools #359 - CSS Tools, IDEs, a Must-Have JS Book

Thursday, June 4, 2020

Web Tools Weekly WEB VERSION Issue #359 • June 4, 2020 Advertisement The New Tab Page You'll Actually Use Replace your web browser's gratuitous new tab page with a minimal list of links,

Web Tools #358

Thursday, May 28, 2020

Web Tools Weekly WEB VERSION Issue #358 • May 28, 2020 Promotion 50% Off! Fullstack Advanced React & GraphQL Learn advanced React by building an online store in this excercise-driven video course.

You Might Also Like

Daily Coding Problem: Problem #1668 [Easy]

Tuesday, January 14, 2025

Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Microsoft. A number is considered perfect if its digits sum up to exactly 10. Given a

Django vs FastAPI, Interacting With Python, Data Cleaning, and More

Tuesday, January 14, 2025

Django vs. FastAPI, an Honest Comparison #664 – JANUARY 14, 2025 VIEW IN BROWSER The PyCoder's Weekly Logo Django vs. FastAPI, an Honest Comparison David has worked with Django for a long time, but

🤖 Yes, I Do Want a Drink-Carrying Robot — The Best Way to Give Old TVs Bluetooth

Tuesday, January 14, 2025

Also: How to Prevent Your Computer From Waking Up Accidentally, and More! How-To Geek Logo January 14, 2025 Did You Know Except for the letter Q, every letter of the alphabet shows up in the names of

Charted | AI's Perceived Impact on Job Creation, by Country 🔮

Tuesday, January 14, 2025

This chart presents Ipsos survey results on whether people believe AI will create many new jobs in their country. View Online | Subscribe | Download Our App Presented by Hinrich Foundation NEW REPORT:

HackerNoon Decoded: How Users Searched in 2024

Tuesday, January 14, 2025

Top Tech Content sent at Noon! Boost Your Article on HackerNoon for $159.99! Read this email in your browser How are you, @newsletterest1? 🪐 What's happening in tech today, January 14, 2025? The

Hack Your Python Roadblocks -- Just 5 Seats Left

Tuesday, January 14, 2025

Hi there, A quick update: after last week's announcement, the Intermediate Python Deep Dive live course is almost full. We're down to just 5 spots left for the February cohort, and once they

Spyglass Dispatch: TikTok & Twitter

Tuesday, January 14, 2025

Sonos Switch • MySports Streaming • Amazon's Alexa Brain Freeze • Billionaire-Free Social Media • EU Backs off Big Tech The Spyglass Dispatch is a newsletter sent on weekdays featuring links and

5 AI Predictions for 2025 (AI hype dying; real opportunities rising)

Tuesday, January 14, 2025

plus, a new study: AI Economy = $15 trillion. ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏

Power BI Weekly #291 - 14th January 2025

Tuesday, January 14, 2025

Power BI Weekly Newsletter Issue #291 powered by endjin Welcome to the 291st edition of Power BI Weekly! No official Power BI blogs yet, so let's dive into the community articles. To start, Eugene

LW 165 - How Shopify Built Its Live Globe for Black Friday

Tuesday, January 14, 2025

How Shopify Built Its Live Globe for Black Friday ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ Shopify Development news and articles Issue 165