From 5f98c82919e9814b4e62e53e8548619a4e15d93b Mon Sep 17 00:00:00 2001 From: Satya Deep Maheshwari Date: Sun, 7 Jan 2024 15:00:27 +0530 Subject: [PATCH] Synch Changes from dev branch: : --- EXTERNAL_IMAGES.md | 45 +++++ README.md | 10 +- blocks/embed/embed.css | 65 +++++++ blocks/embed/embed.js | 113 +++++++++++++ fstab.yaml | 2 +- .../using-asset-selector-with-franklin.jpeg | Bin 0 -> 114158 bytes scripts/scripts.js | 159 ++++++++++++++++++ tools/sidekick/config.json | 14 ++ 8 files changed, 405 insertions(+), 3 deletions(-) create mode 100644 EXTERNAL_IMAGES.md create mode 100644 blocks/embed/embed.css create mode 100644 blocks/embed/embed.js create mode 100644 resources/using-asset-selector-with-franklin.jpeg create mode 100644 tools/sidekick/config.json diff --git a/EXTERNAL_IMAGES.md b/EXTERNAL_IMAGES.md new file mode 100644 index 0000000000..3ec0441c78 --- /dev/null +++ b/EXTERNAL_IMAGES.md @@ -0,0 +1,45 @@ +# Using images from external URLs in AEM Franklin pages + +## Introduction +This document explains a mechanism for getting images served from external URLs on AEM Franklin pages. You may find this useful if you want to have your images served from an external assets repository. + +## Process +During the page authoring process, the author has to specify the external URL from which the image is served. This is done by placing external image links containing the hyperlinked publicly accessible image URLs on the Word/Google Document. The image links are then replaced with the actual images during the page rendering process. + +### Note for site authors +Here's [an example page and document](https://ext-images--franklin-assets-selector--hlxsites.hlx.page/external-images-example?view-doc-source=true) that shows how to use external images in AEM Franklin pages. +You can specify external images by just copying and pasting the image URL in the Word/Google Document. The image URL must be hyperlinked. If the hyperlink has an image file extension, it will be treated as an external image. If the hyperlink does not have an image file extension, it will be treated as a regular hyperlink. +Alternatively, you can also explicitly specify an external image marker and adding the external image url as a hyperlink in it. +The above [example page](https://ext-images--franklin-assets-selector--hlxsites.hlx.page/external-images-example?view-doc-source=true) demonstrates both the approaches. + +### Note for site developers +Anchor tags get treated as external images if their `textContent` is same as their `href` attribute and the URL specified in `href` is of an image file extension. For e.g. `'jpg', 'jpeg', 'png', 'gif', 'webp'`. Web optimized image formats such as `webp` should be preferred. You can find the implementation of this [here](https://github.com/hlxsites/franklin-assets-selector/blob/9145aeac55512ec199152065b16db6c24cea3421/scripts/scripts.js#L105-L110) + +Alternatively, an *image marker* text can be used to explicitly indicate external images. This is a pre-configured value. You can configure it [here](https://github.com/hlxsites/franklin-assets-selector/blob/9145aeac55512ec199152065b16db6c24cea3421/scripts/scripts.js#L227). + + +Also note that for creating optimized `picture` tags for external images, you must override `createOptimizedPicture` function. You can find a sample overidden implementation of `createOptimizedPicture` [here](https://github.com/hlxsites/franklin-assets-selector/blob/9145aeac55512ec199152065b16db6c24cea3421/scripts/scripts.js#L142-L182). + +To summarize, most of the logic for this [is here](https://github.com/hlxsites/franklin-assets-selector/blob/9145aeac55512ec199152065b16db6c24cea3421/scripts/scripts.js#L69-L218) and trigger point for it starts with `decorateExternalImages`. For e.g. [here with an implict external image decoration](https://github.com/hlxsites/franklin-assets-selector/blob/9145aeac55512ec199152065b16db6c24cea3421/scripts/scripts.js#L229-L230). + +``` +export function decorateMain(main) { + // decorate external images with implicit external image detection + decorateExternalImages(main); + ... +} +``` + +And [here with an explicit external image marker](https://github.com/hlxsites/franklin-assets-selector/blob/9145aeac55512ec199152065b16db6c24cea3421/scripts/scripts.js#L226-L227). +``` +export function decorateMain(main) { + // decorate external images with explicit external image marker + decorateExternalImages(main, '//External Image//'); +... +} +``` + +## How does this work? +During the page rendering process, the frontend code replaces the anchor tags identified as exteernal images on the page with the `picture` tags with `src`/`srcset` attributes set as the external image's url as specified in the external image link placed on the Word / Google Document during the page authoring process. + +Authors can optionally specify query paramaters in the hyperlinked external url and they would be retained in the `picture` tag's `src`/`srcset` attributes. These are useful for specifying image delivery parameters such as image width, height, format, etc. as understood by the external image delivery service. \ No newline at end of file diff --git a/README.md b/README.md index 774cf55142..a24a135fda 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ -# Your Project's Title... -Your project's description... +# AEM Asset Selector for Franklin Authoring +Integration between AEM Asset Selector and AEM Franklin to make AEM assets available in Franklin site authoring. + +# High level flow + +[Link to Diagram Source](https://lucid.app/lucidchart/d6db1b7d-144f-4ac9-94a2-fce760ed2ca4/edit?viewport_loc=-368%2C-403%2C1899%2C1069%2C0_0&invitationId=inv_cd6848d0-dfc0-4be9-b0cb-3cae5a1ba757) + +![High Level Flow](/resources/using-asset-selector-with-franklin.jpeg) ## Environments - Preview: https://main--{repo}--{owner}.hlx.page/ diff --git a/blocks/embed/embed.css b/blocks/embed/embed.css new file mode 100644 index 0000000000..a8901799ec --- /dev/null +++ b/blocks/embed/embed.css @@ -0,0 +1,65 @@ +main .embed { + width: unset; + text-align: center; + max-width: 800px; + margin: 32px auto; + } + + main .embed > div { + display: flex; + justify-content: center; + } + + main .embed.embed-twitter .twitter-tweet-rendered { + margin-left: auto; + margin-right: auto; + } + + main .embed .embed-placeholder { + width: 100%; + aspect-ratio: 16 / 9; + position: relative; + } + + main .embed .embed-placeholder > * { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + } + + main .embed .embed-placeholder picture img { + width: 100%; + height: 100%; + object-fit: cover; + } + + main .embed .embed-placeholder-play button { + box-sizing: border-box; + position: relative; + display: block; + transform: scale(3); + width: 22px; + height: 22px; + border: 2px solid; + border-radius: 20px; + padding: 0; + } + + main .embed .embed-placeholder-play button::before { + content: ""; + display: block; + box-sizing: border-box; + position: absolute; + width: 0; + height: 10px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 6px solid; + top: 4px; + left: 7px; + } \ No newline at end of file diff --git a/blocks/embed/embed.js b/blocks/embed/embed.js new file mode 100644 index 0000000000..f67ef2163b --- /dev/null +++ b/blocks/embed/embed.js @@ -0,0 +1,113 @@ +/* + * Embed Block + * Show videos and social posts directly on your page + * https://www.hlx.live/developer/block-collection/embed + */ + +const loadScript = (url, callback, type) => { + const head = document.querySelector('head'); + const script = document.createElement('script'); + script.src = url; + if (type) { + script.setAttribute('type', type); + } + script.onload = callback; + head.append(script); + return script; +}; + +const getDefaultEmbed = (url) => `
+ +
`; + +const embedYoutube = (url, autoplay) => { + const usp = new URLSearchParams(url.search); + const suffix = autoplay ? '&muted=1&autoplay=1' : ''; + let vid = usp.get('v') ? encodeURIComponent(usp.get('v')) : ''; + const embed = url.pathname; + if (url.origin.includes('youtu.be')) { + [, vid] = url.pathname.split('/'); + } + const embedHTML = `
+ +
`; + return embedHTML; +}; + +const embedVimeo = (url, autoplay) => { + const [, video] = url.pathname.split('/'); + const suffix = autoplay ? '?muted=1&autoplay=1' : ''; + const embedHTML = `
+ +
`; + return embedHTML; +}; + +const embedTwitter = (url) => { + const embedHTML = `
`; + loadScript('https://platform.twitter.com/widgets.js'); + return embedHTML; +}; + +const loadEmbed = (block, link, autoplay) => { + if (block.classList.contains('embed-is-loaded')) { + return; + } + + const EMBEDS_CONFIG = [ + { + match: ['youtube', 'youtu.be'], + embed: embedYoutube, + }, + { + match: ['vimeo'], + embed: embedVimeo, + }, + { + match: ['twitter'], + embed: embedTwitter, + }, + ]; + + const config = EMBEDS_CONFIG.find((e) => e.match.some((match) => link.includes(match))); + const url = new URL(link); + if (config) { + block.innerHTML = config.embed(url, autoplay); + block.classList = `block embed embed-${config.match[0]}`; + } else { + block.innerHTML = getDefaultEmbed(url); + block.classList = 'block embed'; + } + block.classList.add('embed-is-loaded'); +}; + +export default function decorate(block) { + const placeholder = block.querySelector('picture'); + const link = block.querySelector('a').href; + block.textContent = ''; + + if (placeholder) { + const wrapper = document.createElement('div'); + wrapper.className = 'embed-placeholder'; + wrapper.innerHTML = '
'; + wrapper.prepend(placeholder); + wrapper.addEventListener('click', () => { + loadEmbed(block, link, true); + }); + block.append(wrapper); + } else { + const observer = new IntersectionObserver((entries) => { + if (entries.some((e) => e.isIntersecting)) { + observer.disconnect(); + loadEmbed(block, link); + } + }); + observer.observe(block); + } +} \ No newline at end of file diff --git a/fstab.yaml b/fstab.yaml index 40ef9de12c..6da5b67703 100644 --- a/fstab.yaml +++ b/fstab.yaml @@ -1,2 +1,2 @@ mountpoints: - /: https://drive.google.com/drive/u/0/folders/1MGzOt7ubUh3gu7zhZIPb7R7dyRzG371j \ No newline at end of file + /: https://adobe.sharepoint.com/:f:/r/sites/HelixProjects/Shared%20Documents/sites/aem-assets \ No newline at end of file diff --git a/resources/using-asset-selector-with-franklin.jpeg b/resources/using-asset-selector-with-franklin.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c740daca08b0b431f7eea370a480c7a5b73bcba6 GIT binary patch literal 114158 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 R$8^a5HuV3Y1R_2U{U5Qa-ev#* literal 0 HcmV?d00001 diff --git a/scripts/scripts.js b/scripts/scripts.js index 0211c1dd34..7139066757 100644 --- a/scripts/scripts.js +++ b/scripts/scripts.js @@ -1,6 +1,7 @@ import { sampleRUM, buildBlock, + createOptimizedPicture as libCreateOptimizedPicture, loadHeader, loadFooter, decorateButtons, @@ -55,12 +56,170 @@ function buildAutoBlocks(main) { } } +/** + * Gets the extension of a URL. + * @param {string} url The URL + * @returns {string} The extension + * @private + * @example + * get_url_extension('https://example.com/foo.jpg'); + * // returns 'jpg' + * get_url_extension('https://example.com/foo.jpg?bar=baz'); + * // returns 'jpg' + * get_url_extension('https://example.com/foo'); + * // returns '' + * get_url_extension('https://example.com/foo.jpg#qux'); + * // returns 'jpg' + */ +function getUrlExtension(url) { + return url.split(/[#?]/)[0].split('.').pop().trim(); +} + +/** + * Checks if an element is an external image. + * @param {Element} element The element + * @param {string} externalImageMarker The marker for external images + * @returns {boolean} Whether the element is an external image + * @private + */ +function isExternalImage(element, externalImageMarker) { + // if the element is not an anchor, it's not an external image + if (element.tagName !== 'A') return false; + + // if the element is an anchor with the external image marker as text content, + // it's an external image + if (element.textContent.trim() === externalImageMarker) { + return true; + } + + // if the element is an anchor with the href as text content and the href has + // an image extension, it's an external image + if (element.textContent.trim() === element.getAttribute('href')) { + const ext = getUrlExtension(element.getAttribute('href')); + return ext && ['jpg', 'jpeg', 'png', 'gif', 'webp'].includes(ext.toLowerCase()); + } + + return false; +} + +/* + * Appends query params to a URL + * @param {string} url The URL to append query params to + * @param {object} params The query params to append + * @returns {string} The URL with query params appended + * @private + * @example + * appendQueryParams('https://example.com', { foo: 'bar' }); + * // returns 'https://example.com?foo=bar' +*/ +function appendQueryParams(url, params) { + const { searchParams } = url; + params.forEach((value, key) => { + searchParams.set(key, value); + }); + url.search = searchParams.toString(); + return url.toString(); +} + +/** + * Creates an optimized picture element for an image. + * If the image is not an absolute URL, it will be passed to libCreateOptimizedPicture. + * @param {string} src The image source URL + * @param {string} alt The image alt text + * @param {boolean} eager Whether to load the image eagerly + * @param {object[]} breakpoints The breakpoints to use + * @returns {Element} The picture element + * + */ +export function createOptimizedPicture(src, alt = '', eager = false, breakpoints = [{ media: '(min-width: 600px)', width: '2000' }, { width: '750' }]) { + const isAbsoluteUrl = /^https?:\/\//i.test(src); + + // Fallback to createOptimizedPicture if src is not an absolute URL + if (!isAbsoluteUrl) return libCreateOptimizedPicture(src, alt, eager, breakpoints); + + const url = new URL(src); + const picture = document.createElement('picture'); + const { pathname } = url; + const ext = pathname.substring(pathname.lastIndexOf('.') + 1); + + // webp + breakpoints.forEach((br) => { + const source = document.createElement('source'); + if (br.media) source.setAttribute('media', br.media); + source.setAttribute('type', 'image/webp'); + const searchParams = new URLSearchParams({ width: br.width, format: 'webply' }); + source.setAttribute('srcset', appendQueryParams(url, searchParams)); + picture.appendChild(source); + }); + + // fallback + breakpoints.forEach((br, i) => { + const searchParams = new URLSearchParams({ width: br.width, format: ext }); + + if (i < breakpoints.length - 1) { + const source = document.createElement('source'); + if (br.media) source.setAttribute('media', br.media); + source.setAttribute('srcset', appendQueryParams(url, searchParams)); + picture.appendChild(source); + } else { + const img = document.createElement('img'); + img.setAttribute('loading', eager ? 'eager' : 'lazy'); + img.setAttribute('alt', alt); + picture.appendChild(img); + img.setAttribute('src', appendQueryParams(url, searchParams)); + } + }); + + return picture; +} + +/* + * Decorates external images with a picture element + * @param {Element} ele The element + * @param {string} deliveryMarker The marker for external images + * @private + * @example + * decorateExternalImages(main, '//External Image//'); + */ +function decorateExternalImages(ele, deliveryMarker) { + const extImages = ele.querySelectorAll('a'); + extImages.forEach((extImage) => { + if (isExternalImage(extImage, deliveryMarker)) { + const extImageSrc = extImage.getAttribute('href'); + const extPicture = createOptimizedPicture(extImageSrc); + + /* copy query params from link to img */ + const extImageUrl = new URL(extImageSrc); + const { searchParams } = extImageUrl; + extPicture.querySelectorAll('source, img').forEach((child) => { + if (child.tagName === 'SOURCE') { + const srcset = child.getAttribute('srcset'); + if (srcset) { + child.setAttribute('srcset', appendQueryParams(new URL(srcset, extImageSrc), searchParams)); + } + } else if (child.tagName === 'IMG') { + const src = child.getAttribute('src'); + if (src) { + child.setAttribute('src', appendQueryParams(new URL(src, extImageSrc), searchParams)); + } + } + }); + extImage.parentNode.replaceChild(extPicture, extImage); + } + }); +} + /** * Decorates the main element. * @param {Element} main The main element */ // eslint-disable-next-line import/prefer-default-export export function decorateMain(main) { + // decorate external images with explicit external image marker + decorateExternalImages(main, '//External Image//'); + + // decorate external images with implicit external image marker + decorateExternalImages(main); // hopefully forward compatible button decoration decorateButtons(main); decorateIcons(main); diff --git a/tools/sidekick/config.json b/tools/sidekick/config.json new file mode 100644 index 0000000000..41feb63165 --- /dev/null +++ b/tools/sidekick/config.json @@ -0,0 +1,14 @@ +{ + "project": "franklin-asset-selector", + "plugins": [ + { + "id": "asset-library", + "title": "AEM Assets Library", + "environments": ["edit"], + "url": "https://experience.adobe.com/solutions/CQ-assets-selectors/static-assets/resources/franklin/asset-selector.html", + "isPalette": true, + "includePaths": ["**.docx**"], + "paletteRect": "top: 50px; bottom: 10px; right: 10px; left: auto; width:400px; height: calc(100vh - 60px)" + } + ] +}