@wordpress/format-library 4.27.2 → 4.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/bold/index.js +1 -2
- package/build/bold/index.js.map +1 -1
- package/build/code/index.js +1 -2
- package/build/code/index.js.map +1 -1
- package/build/default-formats.js +1 -2
- package/build/default-formats.js.map +1 -1
- package/build/default-formats.native.js +1 -2
- package/build/default-formats.native.js.map +1 -1
- package/build/image/index.js +1 -2
- package/build/image/index.js.map +1 -1
- package/build/italic/index.js +1 -2
- package/build/italic/index.js.map +1 -1
- package/build/keyboard/index.js +1 -2
- package/build/keyboard/index.js.map +1 -1
- package/build/language/index.js +1 -2
- package/build/language/index.js.map +1 -1
- package/build/link/index.js +73 -24
- package/build/link/index.js.map +1 -1
- package/build/link/index.native.js +1 -2
- package/build/link/index.native.js.map +1 -1
- package/build/link/inline.js +74 -76
- package/build/link/inline.js.map +1 -1
- package/build/link/modal-screens/link-picker-screen.native.js +1 -2
- package/build/link/modal-screens/link-picker-screen.native.js.map +1 -1
- package/build/link/modal-screens/link-settings-screen.native.js +1 -2
- package/build/link/modal-screens/link-settings-screen.native.js.map +1 -1
- package/build/link/modal-screens/screens.native.js +1 -2
- package/build/link/modal-screens/screens.native.js.map +1 -1
- package/build/link/modal.native.js +1 -2
- package/build/link/modal.native.js.map +1 -1
- package/build/link/use-link-instance-key.js +1 -2
- package/build/link/use-link-instance-key.js.map +1 -1
- package/build/strikethrough/index.js +1 -2
- package/build/strikethrough/index.js.map +1 -1
- package/build/subscript/index.js +1 -2
- package/build/subscript/index.js.map +1 -1
- package/build/superscript/index.js +1 -2
- package/build/superscript/index.js.map +1 -1
- package/build/text-color/index.js +6 -7
- package/build/text-color/index.js.map +1 -1
- package/build/text-color/index.native.js +1 -2
- package/build/text-color/index.native.js.map +1 -1
- package/build/text-color/inline.js +6 -12
- package/build/text-color/inline.js.map +1 -1
- package/build/underline/index.js +1 -2
- package/build/underline/index.js.map +1 -1
- package/build/unknown/index.js +1 -2
- package/build/unknown/index.js.map +1 -1
- package/build-module/link/index.js +74 -24
- package/build-module/link/index.js.map +1 -1
- package/build-module/link/inline.js +72 -73
- package/build-module/link/inline.js.map +1 -1
- package/build-module/text-color/index.js +2 -1
- package/build-module/text-color/index.js.map +1 -1
- package/build-module/text-color/inline.js +7 -13
- package/build-module/text-color/inline.js.map +1 -1
- package/package.json +14 -14
- package/src/link/index.js +84 -35
- package/src/link/inline.js +87 -93
- package/src/text-color/index.js +1 -0
- package/src/text-color/inline.js +2 -12
|
@@ -11,8 +11,8 @@ var _blockEditor = require("@wordpress/block-editor");
|
|
|
11
11
|
var _icons = require("@wordpress/icons");
|
|
12
12
|
var _richText = require("@wordpress/rich-text");
|
|
13
13
|
var _inline = _interopRequireWildcard(require("./inline"));
|
|
14
|
-
function _getRequireWildcardCache(
|
|
15
|
-
function _interopRequireWildcard(
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
16
|
/**
|
|
17
17
|
* WordPress dependencies
|
|
18
18
|
*/
|
|
@@ -21,8 +21,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
21
21
|
* Internal dependencies
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
const transparentValue = 'rgba(0, 0, 0, 0)';
|
|
25
|
-
exports.transparentValue = transparentValue;
|
|
24
|
+
const transparentValue = exports.transparentValue = 'rgba(0, 0, 0, 0)';
|
|
26
25
|
const name = 'core/text-color';
|
|
27
26
|
const title = (0, _i18n.__)('Highlight');
|
|
28
27
|
const EMPTY_ARRAY = [];
|
|
@@ -86,10 +85,11 @@ function TextColorEdit({
|
|
|
86
85
|
activeAttributes: activeAttributes,
|
|
87
86
|
value: value,
|
|
88
87
|
onChange: onChange,
|
|
89
|
-
contentRef: contentRef
|
|
88
|
+
contentRef: contentRef,
|
|
89
|
+
isActive: isActive
|
|
90
90
|
}));
|
|
91
91
|
}
|
|
92
|
-
const textColor = {
|
|
92
|
+
const textColor = exports.textColor = {
|
|
93
93
|
name,
|
|
94
94
|
title,
|
|
95
95
|
tagName: 'mark',
|
|
@@ -100,5 +100,4 @@ const textColor = {
|
|
|
100
100
|
},
|
|
101
101
|
edit: TextColorEdit
|
|
102
102
|
};
|
|
103
|
-
exports.textColor = textColor;
|
|
104
103
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_element","_blockEditor","_icons","_richText","_inline","_interopRequireWildcard","_getRequireWildcardCache","
|
|
1
|
+
{"version":3,"names":["_i18n","require","_element","_blockEditor","_icons","_richText","_inline","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","transparentValue","exports","name","title","__","EMPTY_ARRAY","getComputedStyleProperty","element","property","ownerDocument","defaultView","style","getComputedStyle","value","getPropertyValue","parentElement","fillComputedColors","color","backgroundColor","TextColorEdit","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","useSettings","isAddingColor","setIsAddingColor","useState","enableIsAddingColor","useCallback","disableIsAddingColor","colorIndicatorStyle","useMemo","current","getActiveColors","hasColorsToChoose","length","_react","createElement","Fragment","RichTextToolbarButton","className","icon","Icon","keys","textColorIcon","colorIcon","onClick","removeFormat","role","onClose","textColor","tagName","attributes","class","edit"],"sources":["@wordpress/format-library/src/text-color/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { RichTextToolbarButton, useSettings } from '@wordpress/block-editor';\nimport {\n\tIcon,\n\tcolor as colorIcon,\n\ttextColor as textColorIcon,\n} from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { default as InlineColorUI, getActiveColors } from './inline';\n\nexport const transparentValue = 'rgba(0, 0, 0, 0)';\n\nconst name = 'core/text-color';\nconst title = __( 'Highlight' );\n\nconst EMPTY_ARRAY = [];\n\nfunction getComputedStyleProperty( element, property ) {\n\tconst { ownerDocument } = element;\n\tconst { defaultView } = ownerDocument;\n\tconst style = defaultView.getComputedStyle( element );\n\tconst value = style.getPropertyValue( property );\n\n\tif (\n\t\tproperty === 'background-color' &&\n\t\tvalue === transparentValue &&\n\t\telement.parentElement\n\t) {\n\t\treturn getComputedStyleProperty( element.parentElement, property );\n\t}\n\n\treturn value;\n}\n\nfunction fillComputedColors( element, { color, backgroundColor } ) {\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tcolor: color || getComputedStyleProperty( element, 'color' ),\n\t\tbackgroundColor:\n\t\t\tbackgroundColor === transparentValue\n\t\t\t\t? getComputedStyleProperty( element, 'background-color' )\n\t\t\t\t: backgroundColor,\n\t};\n}\n\nfunction TextColorEdit( {\n\tvalue,\n\tonChange,\n\tisActive,\n\tactiveAttributes,\n\tcontentRef,\n} ) {\n\tconst [ allowCustomControl, colors = EMPTY_ARRAY ] = useSettings(\n\t\t'color.custom',\n\t\t'color.palette'\n\t);\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst colorIndicatorStyle = useMemo(\n\t\t() =>\n\t\t\tfillComputedColors(\n\t\t\t\tcontentRef.current,\n\t\t\t\tgetActiveColors( value, name, colors )\n\t\t\t),\n\t\t[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\tif ( ! hasColorsToChoose && ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RichTextToolbarButton\n\t\t\t\tclassName=\"format-library-text-color-button\"\n\t\t\t\tisActive={ isActive }\n\t\t\t\ticon={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tObject.keys( activeAttributes ).length\n\t\t\t\t\t\t\t\t? textColorIcon\n\t\t\t\t\t\t\t\t: colorIcon\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyle={ colorIndicatorStyle }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\ttitle={ title }\n\t\t\t\t// If has no colors to choose but a color is active remove the color onClick.\n\t\t\t\tonClick={\n\t\t\t\t\thasColorsToChoose\n\t\t\t\t\t\t? enableIsAddingColor\n\t\t\t\t\t\t: () => onChange( removeFormat( value, name ) )\n\t\t\t\t}\n\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t/>\n\t\t\t{ isAddingColor && (\n\t\t\t\t<InlineColorUI\n\t\t\t\t\tname={ name }\n\t\t\t\t\tonClose={ disableIsAddingColor }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const textColor = {\n\tname,\n\ttitle,\n\ttagName: 'mark',\n\tclassName: 'has-inline-color',\n\tattributes: {\n\t\tstyle: 'style',\n\t\tclass: 'class',\n\t},\n\tedit: TextColorEdit,\n};\n"],"mappings":"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"}
|
|
@@ -123,7 +123,7 @@ function TextColorEdit({
|
|
|
123
123
|
contentRef: contentRef
|
|
124
124
|
}));
|
|
125
125
|
}
|
|
126
|
-
const textColor = {
|
|
126
|
+
const textColor = exports.textColor = {
|
|
127
127
|
name,
|
|
128
128
|
title,
|
|
129
129
|
tagName: 'mark',
|
|
@@ -134,5 +134,4 @@ const textColor = {
|
|
|
134
134
|
},
|
|
135
135
|
edit: TextColorEdit
|
|
136
136
|
};
|
|
137
|
-
exports.textColor = textColor;
|
|
138
137
|
//# sourceMappingURL=index.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_i18n","_element","_blockEditor","_components","_icons","_richText","_compose","_inline","_inline2","_interopRequireDefault","_style","name","title","__","getComputedStyleProperty","element","property","_element$props$style","style","props","backgroundColor","baseColors","color","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","useSettings","colors","useMobileGlobalStylesColors","isAddingColor","setIsAddingColor","useState","enableIsAddingColor","useCallback","disableIsAddingColor","colorIndicatorStyle","useMemo","getActiveColors","hasColorsToChoose","length","onPressButton","removeFormat","outlineStyle","usePreferredColorSchemeStyle","styles","borderWidth","StyleSheet","hairlineWidth","isActiveStyle","customContainerStyles","_react","createElement","Fragment","BlockControls","ToolbarGroup","View","pointerEvents","ToolbarButton","icon","Icon","Object","keys","textColorIcon","colorIcon","extraProps","onClick","default","onClose","textColor","tagName","className","attributes","class","edit"
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_i18n","_element","_blockEditor","_components","_icons","_richText","_compose","_inline","_inline2","_interopRequireDefault","_style","name","title","__","getComputedStyleProperty","element","property","_element$props$style","style","props","backgroundColor","baseColors","color","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","useSettings","colors","useMobileGlobalStylesColors","isAddingColor","setIsAddingColor","useState","enableIsAddingColor","useCallback","disableIsAddingColor","colorIndicatorStyle","useMemo","getActiveColors","hasColorsToChoose","length","onPressButton","removeFormat","outlineStyle","usePreferredColorSchemeStyle","styles","borderWidth","StyleSheet","hairlineWidth","isActiveStyle","customContainerStyles","_react","createElement","Fragment","BlockControls","ToolbarGroup","View","pointerEvents","ToolbarButton","icon","Icon","Object","keys","textColorIcon","colorIcon","extraProps","onClick","default","onClose","textColor","exports","tagName","className","attributes","class","edit"],"sources":["@wordpress/format-library/src/text-color/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { StyleSheet, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { BlockControls, useSettings } from '@wordpress/block-editor';\nimport {\n\tToolbarGroup,\n\tToolbarButton,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tcolor as colorIcon,\n\ttextColor as textColorIcon,\n} from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getActiveColors } from './inline.js';\nimport { default as InlineColorUI } from './inline';\nimport styles from './style.scss';\n\nconst name = 'core/text-color';\nconst title = __( 'Text color' );\n\nfunction getComputedStyleProperty( element, property ) {\n\tconst style = element?.props?.style ?? {};\n\n\tif ( property === 'background-color' ) {\n\t\tconst { backgroundColor, baseColors } = style;\n\n\t\tif ( backgroundColor !== 'transparent' ) {\n\t\t\treturn backgroundColor;\n\t\t} else if ( baseColors && baseColors?.color?.background ) {\n\t\t\treturn baseColors?.color?.background;\n\t\t}\n\n\t\treturn 'transparent';\n\t}\n}\n\nfunction fillComputedColors( element, { color, backgroundColor } ) {\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tcolor: color || getComputedStyleProperty( element, 'color' ),\n\t\tbackgroundColor: getComputedStyleProperty(\n\t\t\telement,\n\t\t\t'background-color'\n\t\t),\n\t};\n}\n\nfunction TextColorEdit( {\n\tvalue,\n\tonChange,\n\tisActive,\n\tactiveAttributes,\n\tcontentRef,\n} ) {\n\tconst [ allowCustomControl ] = useSettings( 'color.custom' );\n\tconst colors = useMobileGlobalStylesColors();\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst colorIndicatorStyle = useMemo(\n\t\t() =>\n\t\t\tfillComputedColors(\n\t\t\t\tcontentRef,\n\t\t\t\tgetActiveColors( value, name, colors )\n\t\t\t),\n\t\t[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\n\tconst onPressButton = useCallback( () => {\n\t\tif ( hasColorsToChoose ) {\n\t\t\tenableIsAddingColor();\n\t\t} else {\n\t\t\tonChange( removeFormat( value, name ) );\n\t\t}\n\t}, [ hasColorsToChoose, value ] );\n\n\tconst outlineStyle = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles[ 'components-inline-color__outline' ],\n\t\t\tstyles[ 'components-inline-color__outline--dark' ]\n\t\t),\n\t\t{ borderWidth: StyleSheet.hairlineWidth },\n\t];\n\n\tif ( ! hasColorsToChoose && ! isActive ) {\n\t\treturn null;\n\t}\n\n\tconst isActiveStyle = {\n\t\t...colorIndicatorStyle,\n\t\t...( ! colorIndicatorStyle?.backgroundColor\n\t\t\t? { backgroundColor: 'transparent' }\n\t\t\t: {} ),\n\t\t...styles[ 'components-inline-color--is-active' ],\n\t};\n\n\tconst customContainerStyles =\n\t\tstyles[ 'components-inline-color__button-container' ];\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ isActive && (\n\t\t\t\t\t\t<View style={ outlineStyle } pointerEvents=\"none\" />\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"text-color\"\n\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\tObject.keys( activeAttributes ).length\n\t\t\t\t\t\t\t\t\t\t? textColorIcon\n\t\t\t\t\t\t\t\t\t\t: colorIcon\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tcolorIndicatorStyle?.color && {\n\t\t\t\t\t\t\t\t\t\tcolor: colorIndicatorStyle.color,\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\textraProps={ {\n\t\t\t\t\t\t\tisActiveStyle,\n\t\t\t\t\t\t\tcustomContainerStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// If has no colors to choose but a color is active remove the color onClick\n\t\t\t\t\t\tonClick={ onPressButton }\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ isAddingColor && (\n\t\t\t\t<InlineColorUI\n\t\t\t\t\tname={ name }\n\t\t\t\t\tonClose={ disableIsAddingColor }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const textColor = {\n\tname,\n\ttitle,\n\ttagName: 'mark',\n\tclassName: 'has-inline-color',\n\tattributes: {\n\t\tstyle: 'style',\n\t\tclass: 'class',\n\t},\n\tedit: TextColorEdit,\n};\n"],"mappings":";;;;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAKA,IAAAK,MAAA,GAAAL,OAAA;AAKA,IAAAM,SAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AAKA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAC,sBAAA,CAAAV,OAAA;AACA,IAAAW,MAAA,GAAAD,sBAAA,CAAAV,OAAA;AA7BA;AACA;AACA;;AAGA;AACA;AACA;;AAiBA;AACA;AACA;;AAKA,MAAMY,IAAI,GAAG,iBAAiB;AAC9B,MAAMC,KAAK,GAAG,IAAAC,QAAE,EAAE,YAAa,CAAC;AAEhC,SAASC,wBAAwBA,CAAEC,OAAO,EAAEC,QAAQ,EAAG;EAAA,IAAAC,oBAAA;EACtD,MAAMC,KAAK,IAAAD,oBAAA,GAAGF,OAAO,EAAEI,KAAK,EAAED,KAAK,cAAAD,oBAAA,cAAAA,oBAAA,GAAI,CAAC,CAAC;EAEzC,IAAKD,QAAQ,KAAK,kBAAkB,EAAG;IACtC,MAAM;MAAEI,eAAe;MAAEC;IAAW,CAAC,GAAGH,KAAK;IAE7C,IAAKE,eAAe,KAAK,aAAa,EAAG;MACxC,OAAOA,eAAe;IACvB,CAAC,MAAM,IAAKC,UAAU,IAAIA,UAAU,EAAEC,KAAK,EAAEC,UAAU,EAAG;MACzD,OAAOF,UAAU,EAAEC,KAAK,EAAEC,UAAU;IACrC;IAEA,OAAO,aAAa;EACrB;AACD;AAEA,SAASC,kBAAkBA,CAAET,OAAO,EAAE;EAAEO,KAAK;EAAEF;AAAgB,CAAC,EAAG;EAClE,IAAK,CAAEE,KAAK,IAAI,CAAEF,eAAe,EAAG;IACnC;EACD;EAEA,OAAO;IACNE,KAAK,EAAEA,KAAK,IAAIR,wBAAwB,CAAEC,OAAO,EAAE,OAAQ,CAAC;IAC5DK,eAAe,EAAEN,wBAAwB,CACxCC,OAAO,EACP,kBACD;EACD,CAAC;AACF;AAEA,SAASU,aAAaA,CAAE;EACvBC,KAAK;EACLC,QAAQ;EACRC,QAAQ;EACRC,gBAAgB;EAChBC;AACD,CAAC,EAAG;EACH,MAAM,CAAEC,kBAAkB,CAAE,GAAG,IAAAC,wBAAW,EAAE,cAAe,CAAC;EAC5D,MAAMC,MAAM,GAAG,IAAAC,uCAA2B,EAAC,CAAC;EAC5C,MAAM,CAAEC,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EAC7D,MAAMC,mBAAmB,GAAG,IAAAC,oBAAW,EACtC,MAAMH,gBAAgB,CAAE,IAAK,CAAC,EAC9B,CAAEA,gBAAgB,CACnB,CAAC;EACD,MAAMI,oBAAoB,GAAG,IAAAD,oBAAW,EACvC,MAAMH,gBAAgB,CAAE,KAAM,CAAC,EAC/B,CAAEA,gBAAgB,CACnB,CAAC;EACD,MAAMK,mBAAmB,GAAG,IAAAC,gBAAO,EAClC,MACClB,kBAAkB,CACjBM,UAAU,EACV,IAAAa,uBAAe,EAAEjB,KAAK,EAAEf,IAAI,EAAEsB,MAAO,CACtC,CAAC,EACF,CAAEP,KAAK,EAAEO,MAAM,CAChB,CAAC;EAED,MAAMW,iBAAiB,GAAGX,MAAM,CAACY,MAAM,IAAI,CAAEd,kBAAkB;EAE/D,MAAMe,aAAa,GAAG,IAAAP,oBAAW,EAAE,MAAM;IACxC,IAAKK,iBAAiB,EAAG;MACxBN,mBAAmB,CAAC,CAAC;IACtB,CAAC,MAAM;MACNX,QAAQ,CAAE,IAAAoB,sBAAY,EAAErB,KAAK,EAAEf,IAAK,CAAE,CAAC;IACxC;EACD,CAAC,EAAE,CAAEiC,iBAAiB,EAAElB,KAAK,CAAG,CAAC;EAEjC,MAAMsB,YAAY,GAAG,CACpB,IAAAC,qCAA4B,EAC3BC,cAAM,CAAE,kCAAkC,CAAE,EAC5CA,cAAM,CAAE,wCAAwC,CACjD,CAAC,EACD;IAAEC,WAAW,EAAEC,uBAAU,CAACC;EAAc,CAAC,CACzC;EAED,IAAK,CAAET,iBAAiB,IAAI,CAAEhB,QAAQ,EAAG;IACxC,OAAO,IAAI;EACZ;EAEA,MAAM0B,aAAa,GAAG;IACrB,GAAGb,mBAAmB;IACtB,IAAK,CAAEA,mBAAmB,EAAErB,eAAe,GACxC;MAAEA,eAAe,EAAE;IAAc,CAAC,GAClC,CAAC,CAAC,CAAE;IACP,GAAG8B,cAAM,CAAE,oCAAoC;EAChD,CAAC;EAED,MAAMK,qBAAqB,GAC1BL,cAAM,CAAE,2CAA2C,CAAE;EAEtD,OACC,IAAAM,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAE,QAAA,QACC,IAAAF,MAAA,CAAAC,aAAA,EAACvD,YAAA,CAAAyD,aAAa,QACb,IAAAH,MAAA,CAAAC,aAAA,EAACtD,WAAA,CAAAyD,YAAY,QACVhC,QAAQ,IACT,IAAA4B,MAAA,CAAAC,aAAA,EAAC3D,YAAA,CAAA+D,IAAI;IAAC3C,KAAK,EAAG8B,YAAc;IAACc,aAAa,EAAC;EAAM,CAAE,CACnD,EAED,IAAAN,MAAA,CAAAC,aAAA,EAACtD,WAAA,CAAA4D,aAAa;IACbpD,IAAI,EAAC,YAAY;IACjBiB,QAAQ,EAAGA,QAAU;IACrBoC,IAAI,EACH,IAAAR,MAAA,CAAAC,aAAA,EAACrD,MAAA,CAAA6D,IAAI;MACJD,IAAI,EACHE,MAAM,CAACC,IAAI,CAAEtC,gBAAiB,CAAC,CAACgB,MAAM,GACnCuB,gBAAa,GACbC,YACH;MACDnD,KAAK,EACJuB,mBAAmB,EAAEnB,KAAK,IAAI;QAC7BA,KAAK,EAAEmB,mBAAmB,CAACnB;MAC5B;IACA,CACD,CACD;IACDV,KAAK,EAAGA,KAAO;IACf0D,UAAU,EAAG;MACZhB,aAAa;MACbC;IACD;IACA;IAAA;IACAgB,OAAO,EAAGzB;EAAe,CACzB,CACY,CACA,CAAC,EACdX,aAAa,IACd,IAAAqB,MAAA,CAAAC,aAAA,EAACjD,QAAA,CAAAgE,OAAa;IACb7D,IAAI,EAAGA,IAAM;IACb8D,OAAO,EAAGjC,oBAAsB;IAChCX,gBAAgB,EAAGA,gBAAkB;IACrCH,KAAK,EAAGA,KAAO;IACfC,QAAQ,EAAGA,QAAU;IACrBG,UAAU,EAAGA;EAAY,CACzB,CAED,CAAC;AAEL;AAEO,MAAM4C,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACxB/D,IAAI;EACJC,KAAK;EACLgE,OAAO,EAAE,MAAM;EACfC,SAAS,EAAE,kBAAkB;EAC7BC,UAAU,EAAE;IACX5D,KAAK,EAAE,OAAO;IACd6D,KAAK,EAAE;EACR,CAAC;EACDC,IAAI,EAAEvD;AACP,CAAC"}
|
|
@@ -128,22 +128,16 @@ function InlineColorUI({
|
|
|
128
128
|
value,
|
|
129
129
|
onChange,
|
|
130
130
|
onClose,
|
|
131
|
-
contentRef
|
|
131
|
+
contentRef,
|
|
132
|
+
isActive
|
|
132
133
|
}) {
|
|
133
134
|
const popoverAnchor = (0, _richText.useAnchor)({
|
|
134
135
|
editableContentElement: contentRef.current,
|
|
135
|
-
settings:
|
|
136
|
+
settings: {
|
|
137
|
+
..._index.textColor,
|
|
138
|
+
isActive
|
|
139
|
+
}
|
|
136
140
|
});
|
|
137
|
-
|
|
138
|
-
/*
|
|
139
|
-
As you change the text color by typing a HEX value into a field,
|
|
140
|
-
the return value of document.getSelection jumps to the field you're editing,
|
|
141
|
-
not the highlighted text. Given that useAnchor uses document.getSelection,
|
|
142
|
-
it will return null, since it can't find the <mark> element within the HEX input.
|
|
143
|
-
This caches the last truthy value of the selection anchor reference.
|
|
144
|
-
*/
|
|
145
|
-
const cachedRect = (0, _blockEditor.useCachedTruthy)(popoverAnchor.getBoundingClientRect());
|
|
146
|
-
popoverAnchor.getBoundingClientRect = () => cachedRect;
|
|
147
141
|
return (0, _react.createElement)(_components.Popover, {
|
|
148
142
|
onClose: onClose,
|
|
149
143
|
className: "format-library__inline-color-popover",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_data","_richText","_blockEditor","_components","_i18n","_index","_lockUnlock","Tabs","unlock","componentsPrivateApis","TABS","name","title","__","parseCSS","css","split","reduce","accumulator","rule","property","value","color","transparentValue","backgroundColor","parseClassName","className","colorSettings","startsWith","endsWith","colorSlug","replace","colorObject","getColorObjectByAttributeValues","getActiveColors","activeColorFormat","getActiveFormat","attributes","style","class","setColors","colors","removeFormat","styles","classNames","push","join","getColorObjectByColorValue","getColorClassName","slug","length","applyFormat","type","ColorPicker","onChange","useSelect","select","_getSettings$colors","getSettings","blockEditorStore","onColorChange","useCallback","activeColors","useMemo","_react","createElement","ColorPalette","InlineColorUI","onClose","contentRef","popoverAnchor","useAnchor","editableContentElement","current","settings","cachedRect","useCachedTruthy","getBoundingClientRect","Popover","anchor","TabList","map","tab","Tab","tabId","key","TabPanel","focusable"],"sources":["@wordpress/format-library/src/text-color/inline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchor,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n\tuseCachedTruthy,\n} from '@wordpress/block-editor';\nimport {\n\tPopover,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst TABS = [\n\t{ name: 'color', title: __( 'Text' ) },\n\t{ name: 'backgroundColor', title: __( 'Background' ) },\n];\n\nfunction parseCSS( css = '' ) {\n\treturn css.split( ';' ).reduce( ( accumulator, rule ) => {\n\t\tif ( rule ) {\n\t\t\tconst [ property, value ] = rule.split( ':' );\n\t\t\tif ( property === 'color' ) accumulator.color = value;\n\t\t\tif ( property === 'background-color' && value !== transparentValue )\n\t\t\t\taccumulator.backgroundColor = value;\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function parseClassName( className = '', colorSettings ) {\n\treturn className.split( ' ' ).reduce( ( accumulator, name ) => {\n\t\t// `colorSlug` could contain dashes, so simply match the start and end.\n\t\tif ( name.startsWith( 'has-' ) && name.endsWith( '-color' ) ) {\n\t\t\tconst colorSlug = name\n\t\t\t\t.replace( /^has-/, '' )\n\t\t\t\t.replace( /-color$/, '' );\n\t\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\t\tcolorSettings,\n\t\t\t\tcolorSlug\n\t\t\t);\n\t\t\taccumulator.color = colorObject.color;\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function getActiveColors( value, name, colorSettings ) {\n\tconst activeColorFormat = getActiveFormat( value, name );\n\n\tif ( ! activeColorFormat ) {\n\t\treturn {};\n\t}\n\n\treturn {\n\t\t...parseCSS( activeColorFormat.attributes.style ),\n\t\t...parseClassName( activeColorFormat.attributes.class, colorSettings ),\n\t};\n}\n\nfunction setColors( value, name, colorSettings, colors ) {\n\tconst { color, backgroundColor } = {\n\t\t...getActiveColors( value, name, colorSettings ),\n\t\t...colors,\n\t};\n\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn removeFormat( value, name );\n\t}\n\n\tconst styles = [];\n\tconst classNames = [];\n\tconst attributes = {};\n\n\tif ( backgroundColor ) {\n\t\tstyles.push( [ 'background-color', backgroundColor ].join( ':' ) );\n\t} else {\n\t\t// Override default browser color for mark element.\n\t\tstyles.push( [ 'background-color', transparentValue ].join( ':' ) );\n\t}\n\n\tif ( color ) {\n\t\tconst colorObject = getColorObjectByColorValue( colorSettings, color );\n\n\t\tif ( colorObject ) {\n\t\t\tclassNames.push( getColorClassName( 'color', colorObject.slug ) );\n\t\t} else {\n\t\t\tstyles.push( [ 'color', color ].join( ':' ) );\n\t\t}\n\t}\n\n\tif ( styles.length ) attributes.style = styles.join( ';' );\n\tif ( classNames.length ) attributes.class = classNames.join( ' ' );\n\n\treturn applyFormat( value, { type: name, attributes } );\n}\n\nfunction ColorPicker( { name, property, value, onChange } ) {\n\tconst colors = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().colors ?? [];\n\t}, [] );\n\tconst onColorChange = useCallback(\n\t\t( color ) => {\n\t\t\tonChange(\n\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t);\n\t\t},\n\t\t[ colors, onChange, property ]\n\t);\n\tconst activeColors = useMemo(\n\t\t() => getActiveColors( value, name, colors ),\n\t\t[ name, value, colors ]\n\t);\n\n\treturn (\n\t\t<ColorPalette\n\t\t\tvalue={ activeColors[ property ] }\n\t\t\tonChange={ onColorChange }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n} ) {\n\tconst popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings,\n\t} );\n\n\t/*\n\t As you change the text color by typing a HEX value into a field,\n\t the return value of document.getSelection jumps to the field you're editing,\n\t not the highlighted text. Given that useAnchor uses document.getSelection,\n\t it will return null, since it can't find the <mark> element within the HEX input.\n\t This caches the last truthy value of the selection anchor reference.\n\t */\n\tconst cachedRect = useCachedTruthy( popoverAnchor.getBoundingClientRect() );\n\tpopoverAnchor.getBoundingClientRect = () => cachedRect;\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"format-library__inline-color-popover\"\n\t\t\tanchor={ popoverAnchor }\n\t\t>\n\t\t\t<Tabs>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t\t<Tabs.Tab tabId={ tab.name } key={ tab.name }>\n\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t) ) }\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\ttabId={ tab.name }\n\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t</Popover>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_element","require","_data","_richText","_blockEditor","_components","_i18n","_index","_lockUnlock","Tabs","unlock","componentsPrivateApis","TABS","name","title","__","parseCSS","css","split","reduce","accumulator","rule","property","value","color","transparentValue","backgroundColor","parseClassName","className","colorSettings","startsWith","endsWith","colorSlug","replace","colorObject","getColorObjectByAttributeValues","getActiveColors","activeColorFormat","getActiveFormat","attributes","style","class","setColors","colors","removeFormat","styles","classNames","push","join","getColorObjectByColorValue","getColorClassName","slug","length","applyFormat","type","ColorPicker","onChange","useSelect","select","_getSettings$colors","getSettings","blockEditorStore","onColorChange","useCallback","activeColors","useMemo","_react","createElement","ColorPalette","InlineColorUI","onClose","contentRef","isActive","popoverAnchor","useAnchor","editableContentElement","current","settings","Popover","anchor","TabList","map","tab","Tab","tabId","key","TabPanel","focusable"],"sources":["@wordpress/format-library/src/text-color/inline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchor,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tPopover,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst TABS = [\n\t{ name: 'color', title: __( 'Text' ) },\n\t{ name: 'backgroundColor', title: __( 'Background' ) },\n];\n\nfunction parseCSS( css = '' ) {\n\treturn css.split( ';' ).reduce( ( accumulator, rule ) => {\n\t\tif ( rule ) {\n\t\t\tconst [ property, value ] = rule.split( ':' );\n\t\t\tif ( property === 'color' ) accumulator.color = value;\n\t\t\tif ( property === 'background-color' && value !== transparentValue )\n\t\t\t\taccumulator.backgroundColor = value;\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function parseClassName( className = '', colorSettings ) {\n\treturn className.split( ' ' ).reduce( ( accumulator, name ) => {\n\t\t// `colorSlug` could contain dashes, so simply match the start and end.\n\t\tif ( name.startsWith( 'has-' ) && name.endsWith( '-color' ) ) {\n\t\t\tconst colorSlug = name\n\t\t\t\t.replace( /^has-/, '' )\n\t\t\t\t.replace( /-color$/, '' );\n\t\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\t\tcolorSettings,\n\t\t\t\tcolorSlug\n\t\t\t);\n\t\t\taccumulator.color = colorObject.color;\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function getActiveColors( value, name, colorSettings ) {\n\tconst activeColorFormat = getActiveFormat( value, name );\n\n\tif ( ! activeColorFormat ) {\n\t\treturn {};\n\t}\n\n\treturn {\n\t\t...parseCSS( activeColorFormat.attributes.style ),\n\t\t...parseClassName( activeColorFormat.attributes.class, colorSettings ),\n\t};\n}\n\nfunction setColors( value, name, colorSettings, colors ) {\n\tconst { color, backgroundColor } = {\n\t\t...getActiveColors( value, name, colorSettings ),\n\t\t...colors,\n\t};\n\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn removeFormat( value, name );\n\t}\n\n\tconst styles = [];\n\tconst classNames = [];\n\tconst attributes = {};\n\n\tif ( backgroundColor ) {\n\t\tstyles.push( [ 'background-color', backgroundColor ].join( ':' ) );\n\t} else {\n\t\t// Override default browser color for mark element.\n\t\tstyles.push( [ 'background-color', transparentValue ].join( ':' ) );\n\t}\n\n\tif ( color ) {\n\t\tconst colorObject = getColorObjectByColorValue( colorSettings, color );\n\n\t\tif ( colorObject ) {\n\t\t\tclassNames.push( getColorClassName( 'color', colorObject.slug ) );\n\t\t} else {\n\t\t\tstyles.push( [ 'color', color ].join( ':' ) );\n\t\t}\n\t}\n\n\tif ( styles.length ) attributes.style = styles.join( ';' );\n\tif ( classNames.length ) attributes.class = classNames.join( ' ' );\n\n\treturn applyFormat( value, { type: name, attributes } );\n}\n\nfunction ColorPicker( { name, property, value, onChange } ) {\n\tconst colors = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().colors ?? [];\n\t}, [] );\n\tconst onColorChange = useCallback(\n\t\t( color ) => {\n\t\t\tonChange(\n\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t);\n\t\t},\n\t\t[ colors, onChange, property ]\n\t);\n\tconst activeColors = useMemo(\n\t\t() => getActiveColors( value, name, colors ),\n\t\t[ name, value, colors ]\n\t);\n\n\treturn (\n\t\t<ColorPalette\n\t\t\tvalue={ activeColors[ property ] }\n\t\t\tonChange={ onColorChange }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n\tisActive,\n} ) {\n\tconst popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings: { ...settings, isActive },\n\t} );\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"format-library__inline-color-popover\"\n\t\t\tanchor={ popoverAnchor }\n\t\t>\n\t\t\t<Tabs>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t\t<Tabs.Tab tabId={ tab.name } key={ tab.name }>\n\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t) ) }\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\ttabId={ tab.name }\n\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t</Popover>\n\t);\n}\n"],"mappings":"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"}
|
package/build/underline/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var _blockEditor = require("@wordpress/block-editor");
|
|
|
14
14
|
|
|
15
15
|
const name = 'core/underline';
|
|
16
16
|
const title = (0, _i18n.__)('Underline');
|
|
17
|
-
const underline = {
|
|
17
|
+
const underline = exports.underline = {
|
|
18
18
|
name,
|
|
19
19
|
title,
|
|
20
20
|
tagName: 'span',
|
|
@@ -45,5 +45,4 @@ const underline = {
|
|
|
45
45
|
}));
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
|
-
exports.underline = underline;
|
|
49
48
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_richText","_blockEditor","name","title","__","underline","tagName","className","attributes","style","edit","value","onChange","onToggle","toggleFormat","type","_react","createElement","Fragment","RichTextShortcut","character","onUse","__unstableRichTextInputEvent","inputType","onInput"
|
|
1
|
+
{"version":3,"names":["_i18n","require","_richText","_blockEditor","name","title","__","underline","exports","tagName","className","attributes","style","edit","value","onChange","onToggle","toggleFormat","type","_react","createElement","Fragment","RichTextShortcut","character","onUse","__unstableRichTextInputEvent","inputType","onInput"],"sources":["@wordpress/format-library/src/underline/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { toggleFormat } from '@wordpress/rich-text';\nimport {\n\tRichTextShortcut,\n\t__unstableRichTextInputEvent,\n} from '@wordpress/block-editor';\n\nconst name = 'core/underline';\nconst title = __( 'Underline' );\n\nexport const underline = {\n\tname,\n\ttitle,\n\ttagName: 'span',\n\tclassName: null,\n\tattributes: {\n\t\tstyle: 'style',\n\t},\n\tedit( { value, onChange } ) {\n\t\tconst onToggle = () => {\n\t\t\tonChange(\n\t\t\t\ttoggleFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tstyle: 'text-decoration: underline;',\n\t\t\t\t\t},\n\t\t\t\t\ttitle,\n\t\t\t\t} )\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<RichTextShortcut\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\tcharacter=\"u\"\n\t\t\t\t\tonUse={ onToggle }\n\t\t\t\t/>\n\t\t\t\t<__unstableRichTextInputEvent\n\t\t\t\t\tinputType=\"formatUnderline\"\n\t\t\t\t\tonInput={ onToggle }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAQA,MAAMG,IAAI,GAAG,gBAAgB;AAC7B,MAAMC,KAAK,GAAG,IAAAC,QAAE,EAAE,WAAY,CAAC;AAExB,MAAMC,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACxBH,IAAI;EACJC,KAAK;EACLI,OAAO,EAAE,MAAM;EACfC,SAAS,EAAE,IAAI;EACfC,UAAU,EAAE;IACXC,KAAK,EAAE;EACR,CAAC;EACDC,IAAIA,CAAE;IAAEC,KAAK;IAAEC;EAAS,CAAC,EAAG;IAC3B,MAAMC,QAAQ,GAAGA,CAAA,KAAM;MACtBD,QAAQ,CACP,IAAAE,sBAAY,EAAEH,KAAK,EAAE;QACpBI,IAAI,EAAEd,IAAI;QACVO,UAAU,EAAE;UACXC,KAAK,EAAE;QACR,CAAC;QACDP;MACD,CAAE,CACH,CAAC;IACF,CAAC;IAED,OACC,IAAAc,MAAA,CAAAC,aAAA,EAAAD,MAAA,CAAAE,QAAA,QACC,IAAAF,MAAA,CAAAC,aAAA,EAACjB,YAAA,CAAAmB,gBAAgB;MAChBJ,IAAI,EAAC,SAAS;MACdK,SAAS,EAAC,GAAG;MACbC,KAAK,EAAGR;IAAU,CAClB,CAAC,EACF,IAAAG,MAAA,CAAAC,aAAA,EAACjB,YAAA,CAAAsB,4BAA4B;MAC5BC,SAAS,EAAC,iBAAiB;MAC3BC,OAAO,EAAGX;IAAU,CACpB,CACA,CAAC;EAEL;AACD,CAAC"}
|
package/build/unknown/index.js
CHANGED
|
@@ -15,7 +15,7 @@ var _icons = require("@wordpress/icons");
|
|
|
15
15
|
|
|
16
16
|
const name = 'core/unknown';
|
|
17
17
|
const title = (0, _i18n.__)('Clear Unknown Formatting');
|
|
18
|
-
const unknown = {
|
|
18
|
+
const unknown = exports.unknown = {
|
|
19
19
|
name,
|
|
20
20
|
title,
|
|
21
21
|
tagName: '*',
|
|
@@ -46,5 +46,4 @@ const unknown = {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
-
exports.unknown = unknown;
|
|
50
49
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_richText","_blockEditor","_icons","name","title","__","unknown","tagName","className","edit","isActive","value","onChange","onFocus","onClick","removeFormat","selectedValue","slice","hasUnknownFormats","formats","some","format","type","_react","createElement","RichTextToolbarButton","icon","help"
|
|
1
|
+
{"version":3,"names":["_i18n","require","_richText","_blockEditor","_icons","name","title","__","unknown","exports","tagName","className","edit","isActive","value","onChange","onFocus","onClick","removeFormat","selectedValue","slice","hasUnknownFormats","formats","some","format","type","_react","createElement","RichTextToolbarButton","icon","help"],"sources":["@wordpress/format-library/src/unknown/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { removeFormat, slice } from '@wordpress/rich-text';\nimport { RichTextToolbarButton } from '@wordpress/block-editor';\nimport { help } from '@wordpress/icons';\n\nconst name = 'core/unknown';\nconst title = __( 'Clear Unknown Formatting' );\n\nexport const unknown = {\n\tname,\n\ttitle,\n\ttagName: '*',\n\tclassName: null,\n\tedit( { isActive, value, onChange, onFocus } ) {\n\t\tfunction onClick() {\n\t\t\tonChange( removeFormat( value, name ) );\n\t\t\tonFocus();\n\t\t}\n\n\t\tconst selectedValue = slice( value );\n\t\tconst hasUnknownFormats = selectedValue.formats.some( ( formats ) => {\n\t\t\treturn formats.some( ( format ) => format.type === name );\n\t\t} );\n\n\t\tif ( ! isActive && ! hasUnknownFormats ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<RichTextToolbarButton\n\t\t\t\tname=\"unknown\"\n\t\t\t\ticon={ help }\n\t\t\t\ttitle={ title }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tisActive={ true }\n\t\t\t/>\n\t\t);\n\t},\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AANA;AACA;AACA;;AAMA,MAAMI,IAAI,GAAG,cAAc;AAC3B,MAAMC,KAAK,GAAG,IAAAC,QAAE,EAAE,0BAA2B,CAAC;AAEvC,MAAMC,OAAO,GAAAC,OAAA,CAAAD,OAAA,GAAG;EACtBH,IAAI;EACJC,KAAK;EACLI,OAAO,EAAE,GAAG;EACZC,SAAS,EAAE,IAAI;EACfC,IAAIA,CAAE;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,QAAQ;IAAEC;EAAQ,CAAC,EAAG;IAC9C,SAASC,OAAOA,CAAA,EAAG;MAClBF,QAAQ,CAAE,IAAAG,sBAAY,EAAEJ,KAAK,EAAET,IAAK,CAAE,CAAC;MACvCW,OAAO,CAAC,CAAC;IACV;IAEA,MAAMG,aAAa,GAAG,IAAAC,eAAK,EAAEN,KAAM,CAAC;IACpC,MAAMO,iBAAiB,GAAGF,aAAa,CAACG,OAAO,CAACC,IAAI,CAAID,OAAO,IAAM;MACpE,OAAOA,OAAO,CAACC,IAAI,CAAIC,MAAM,IAAMA,MAAM,CAACC,IAAI,KAAKpB,IAAK,CAAC;IAC1D,CAAE,CAAC;IAEH,IAAK,CAAEQ,QAAQ,IAAI,CAAEQ,iBAAiB,EAAG;MACxC,OAAO,IAAI;IACZ;IAEA,OACC,IAAAK,MAAA,CAAAC,aAAA,EAACxB,YAAA,CAAAyB,qBAAqB;MACrBvB,IAAI,EAAC,SAAS;MACdwB,IAAI,EAAGC,WAAM;MACbxB,KAAK,EAAGA,KAAO;MACfW,OAAO,EAAGA,OAAS;MACnBJ,QAAQ,EAAG;IAAM,CACjB,CAAC;EAEJ;AACD,CAAC"}
|
|
@@ -3,12 +3,12 @@ import { createElement, Fragment } from "react";
|
|
|
3
3
|
* WordPress dependencies
|
|
4
4
|
*/
|
|
5
5
|
import { __ } from '@wordpress/i18n';
|
|
6
|
-
import { useState } from '@wordpress/element';
|
|
6
|
+
import { useState, useLayoutEffect } from '@wordpress/element';
|
|
7
7
|
import { getTextContent, applyFormat, removeFormat, slice, isCollapsed, insert, create } from '@wordpress/rich-text';
|
|
8
8
|
import { isURL, isEmail } from '@wordpress/url';
|
|
9
9
|
import { RichTextToolbarButton, RichTextShortcut } from '@wordpress/block-editor';
|
|
10
10
|
import { decodeEntities } from '@wordpress/html-entities';
|
|
11
|
-
import { link as linkIcon
|
|
11
|
+
import { link as linkIcon } from '@wordpress/icons';
|
|
12
12
|
import { speak } from '@wordpress/a11y';
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -27,16 +27,40 @@ function Edit({
|
|
|
27
27
|
contentRef
|
|
28
28
|
}) {
|
|
29
29
|
const [addingLink, setAddingLink] = useState(false);
|
|
30
|
-
|
|
30
|
+
// We only need to store the button element that opened the popover. We can ignore the other states, as they will be handled by the onFocus prop to return to the rich text field.
|
|
31
|
+
const [openedBy, setOpenedBy] = useState(null);
|
|
32
|
+
useLayoutEffect(() => {
|
|
33
|
+
const editableContentElement = contentRef.current;
|
|
34
|
+
if (!editableContentElement) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
function handleClick(event) {
|
|
38
|
+
// There is a situation whereby there is an existing link in the rich text
|
|
39
|
+
// and the user clicks on the leftmost edge of that link and fails to activate
|
|
40
|
+
// the link format, but the click event still fires on the `<a>` element.
|
|
41
|
+
// This causes the `addingLink` state to be set to `true` and the link UI
|
|
42
|
+
// to be rendered in "creating" mode. We need to check isActive to see if
|
|
43
|
+
// we have an active link format.
|
|
44
|
+
if (event.target.tagName !== 'A' || !isActive) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
setAddingLink(true);
|
|
48
|
+
}
|
|
49
|
+
editableContentElement.addEventListener('click', handleClick);
|
|
50
|
+
return () => {
|
|
51
|
+
editableContentElement.removeEventListener('click', handleClick);
|
|
52
|
+
};
|
|
53
|
+
}, [contentRef, isActive]);
|
|
54
|
+
function addLink(target) {
|
|
31
55
|
const text = getTextContent(slice(value));
|
|
32
|
-
if (text && isURL(text) && isValidHref(text)) {
|
|
56
|
+
if (!isActive && text && isURL(text) && isValidHref(text)) {
|
|
33
57
|
onChange(applyFormat(value, {
|
|
34
58
|
type: name,
|
|
35
59
|
attributes: {
|
|
36
60
|
url: text
|
|
37
61
|
}
|
|
38
62
|
}));
|
|
39
|
-
} else if (text && isEmail(text)) {
|
|
63
|
+
} else if (!isActive && text && isEmail(text)) {
|
|
40
64
|
onChange(applyFormat(value, {
|
|
41
65
|
type: name,
|
|
42
66
|
attributes: {
|
|
@@ -44,14 +68,48 @@ function Edit({
|
|
|
44
68
|
}
|
|
45
69
|
}));
|
|
46
70
|
} else {
|
|
71
|
+
if (target) {
|
|
72
|
+
setOpenedBy(target);
|
|
73
|
+
}
|
|
47
74
|
setAddingLink(true);
|
|
48
75
|
}
|
|
49
76
|
}
|
|
50
|
-
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Runs when the popover is closed via escape keypress, unlinking the selected text,
|
|
80
|
+
* but _not_ on a click outside the popover. onFocusOutside handles that.
|
|
81
|
+
*/
|
|
82
|
+
function stopAddingLink() {
|
|
83
|
+
// Don't let the click handler on the toolbar button trigger again.
|
|
84
|
+
|
|
85
|
+
// There are two places for us to return focus to on Escape keypress:
|
|
86
|
+
// 1. The rich text field.
|
|
87
|
+
// 2. The toolbar button.
|
|
88
|
+
|
|
89
|
+
// The toolbar button is the only one we need to handle returning focus to.
|
|
90
|
+
// Otherwise, we rely on the passed in onFocus to return focus to the rich text field.
|
|
91
|
+
|
|
92
|
+
// Close the popover
|
|
51
93
|
setAddingLink(false);
|
|
52
|
-
|
|
94
|
+
// Return focus to the toolbar button or the rich text field
|
|
95
|
+
if (openedBy?.tagName === 'BUTTON') {
|
|
96
|
+
openedBy.focus();
|
|
97
|
+
} else {
|
|
53
98
|
onFocus();
|
|
54
99
|
}
|
|
100
|
+
// Remove the openedBy state
|
|
101
|
+
setOpenedBy(null);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Test for this:
|
|
105
|
+
// 1. Click on the link button
|
|
106
|
+
// 2. Click the Options button in the top right of header
|
|
107
|
+
// 3. Focus should be in the dropdown of the Options button
|
|
108
|
+
// 4. Press Escape
|
|
109
|
+
// 5. Focus should be on the Options button
|
|
110
|
+
function onFocusOutside() {
|
|
111
|
+
setAddingLink(false);
|
|
112
|
+
setOpenedBy(null);
|
|
55
113
|
}
|
|
56
114
|
function onRemoveFormat() {
|
|
57
115
|
onChange(removeFormat(value, name));
|
|
@@ -65,29 +123,21 @@ function Edit({
|
|
|
65
123
|
type: "primaryShift",
|
|
66
124
|
character: "k",
|
|
67
125
|
onUse: onRemoveFormat
|
|
68
|
-
}),
|
|
69
|
-
name: "link",
|
|
70
|
-
icon: linkOff,
|
|
71
|
-
title: __('Unlink'),
|
|
72
|
-
onClick: onRemoveFormat,
|
|
73
|
-
isActive: isActive,
|
|
74
|
-
shortcutType: "primaryShift",
|
|
75
|
-
shortcutCharacter: "k",
|
|
76
|
-
"aria-haspopup": "true",
|
|
77
|
-
"aria-expanded": addingLink || isActive
|
|
78
|
-
}), !isActive && createElement(RichTextToolbarButton, {
|
|
126
|
+
}), createElement(RichTextToolbarButton, {
|
|
79
127
|
name: "link",
|
|
80
128
|
icon: linkIcon,
|
|
81
|
-
title: title,
|
|
82
|
-
onClick:
|
|
83
|
-
|
|
129
|
+
title: isActive ? __('Link') : title,
|
|
130
|
+
onClick: event => {
|
|
131
|
+
addLink(event.currentTarget);
|
|
132
|
+
},
|
|
133
|
+
isActive: isActive || addingLink,
|
|
84
134
|
shortcutType: "primary",
|
|
85
135
|
shortcutCharacter: "k",
|
|
86
136
|
"aria-haspopup": "true",
|
|
87
|
-
"aria-expanded": addingLink
|
|
88
|
-
}),
|
|
89
|
-
addingLink: addingLink,
|
|
137
|
+
"aria-expanded": addingLink
|
|
138
|
+
}), addingLink && createElement(InlineLinkUI, {
|
|
90
139
|
stopAddingLink: stopAddingLink,
|
|
140
|
+
onFocusOutside: onFocusOutside,
|
|
91
141
|
isActive: isActive,
|
|
92
142
|
activeAttributes: activeAttributes,
|
|
93
143
|
value: value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","useState","getTextContent","applyFormat","removeFormat","slice","isCollapsed","insert","create","isURL","isEmail","RichTextToolbarButton","RichTextShortcut","decodeEntities","link","linkIcon","linkOff","speak","InlineLinkUI","isValidHref","name","title","Edit","isActive","activeAttributes","value","onChange","onFocus","contentRef","addingLink","setAddingLink","addLink","text","type","attributes","url","stopAddingLink","returnFocus","onRemoveFormat","createElement","Fragment","character","onUse","icon","onClick","shortcutType","shortcutCharacter","tagName","className","id","_id","target","rel","__unstablePasteRule","html","plainText","pastedText","replace","trim","test","window","console","log","format","length","edit"],"sources":["@wordpress/format-library/src/link/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport {\n\tgetTextContent,\n\tapplyFormat,\n\tremoveFormat,\n\tslice,\n\tisCollapsed,\n\tinsert,\n\tcreate,\n} from '@wordpress/rich-text';\nimport { isURL, isEmail } from '@wordpress/url';\nimport {\n\tRichTextToolbarButton,\n\tRichTextShortcut,\n} from '@wordpress/block-editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon, linkOff } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport InlineLinkUI from './inline';\nimport { isValidHref } from './utils';\n\nconst name = 'core/link';\nconst title = __( 'Link' );\n\nfunction Edit( {\n\tisActive,\n\tactiveAttributes,\n\tvalue,\n\tonChange,\n\tonFocus,\n\tcontentRef,\n} ) {\n\tconst [ addingLink, setAddingLink ] = useState( false );\n\n\tfunction addLink() {\n\t\tconst text = getTextContent( slice( value ) );\n\n\t\tif ( text && isURL( text ) && isValidHref( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: text },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else if ( text && isEmail( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: `mailto:${ text }` },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else {\n\t\t\tsetAddingLink( true );\n\t\t}\n\t}\n\n\tfunction stopAddingLink( returnFocus = true ) {\n\t\tsetAddingLink( false );\n\t\tif ( returnFocus ) {\n\t\t\tonFocus();\n\t\t}\n\t}\n\n\tfunction onRemoveFormat() {\n\t\tonChange( removeFormat( value, name ) );\n\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RichTextShortcut type=\"primary\" character=\"k\" onUse={ addLink } />\n\t\t\t<RichTextShortcut\n\t\t\t\ttype=\"primaryShift\"\n\t\t\t\tcharacter=\"k\"\n\t\t\t\tonUse={ onRemoveFormat }\n\t\t\t/>\n\t\t\t{ isActive && (\n\t\t\t\t<RichTextToolbarButton\n\t\t\t\t\tname=\"link\"\n\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\ttitle={ __( 'Unlink' ) }\n\t\t\t\t\tonClick={ onRemoveFormat }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\tshortcutType=\"primaryShift\"\n\t\t\t\t\tshortcutCharacter=\"k\"\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\taria-expanded={ addingLink || isActive }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! isActive && (\n\t\t\t\t<RichTextToolbarButton\n\t\t\t\t\tname=\"link\"\n\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tonClick={ addLink }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\tshortcutType=\"primary\"\n\t\t\t\t\tshortcutCharacter=\"k\"\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\taria-expanded={ addingLink || isActive }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ( addingLink || isActive ) && (\n\t\t\t\t<InlineLinkUI\n\t\t\t\t\taddingLink={ addingLink }\n\t\t\t\t\tstopAddingLink={ stopAddingLink }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const link = {\n\tname,\n\ttitle,\n\ttagName: 'a',\n\tclassName: null,\n\tattributes: {\n\t\turl: 'href',\n\t\ttype: 'data-type',\n\t\tid: 'data-id',\n\t\t_id: 'id',\n\t\ttarget: 'target',\n\t\trel: 'rel',\n\t},\n\t__unstablePasteRule( value, { html, plainText } ) {\n\t\tconst pastedText = ( html || plainText )\n\t\t\t.replace( /<[^>]+>/g, '' )\n\t\t\t.trim();\n\n\t\t// A URL was pasted, turn the selection into a link.\n\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\tif ( ! isURL( pastedText ) || ! /^https?:/.test( pastedText ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Created link:\\n\\n', pastedText );\n\n\t\tconst format = {\n\t\t\ttype: name,\n\t\t\tattributes: {\n\t\t\t\turl: decodeEntities( pastedText ),\n\t\t\t},\n\t\t};\n\n\t\tif ( isCollapsed( value ) ) {\n\t\t\treturn insert(\n\t\t\t\tvalue,\n\t\t\t\tapplyFormat(\n\t\t\t\t\tcreate( { text: plainText } ),\n\t\t\t\t\tformat,\n\t\t\t\t\t0,\n\t\t\t\t\tplainText.length\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn applyFormat( value, format );\n\t},\n\tedit: Edit,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["__","useState","useLayoutEffect","getTextContent","applyFormat","removeFormat","slice","isCollapsed","insert","create","isURL","isEmail","RichTextToolbarButton","RichTextShortcut","decodeEntities","link","linkIcon","speak","InlineLinkUI","isValidHref","name","title","Edit","isActive","activeAttributes","value","onChange","onFocus","contentRef","addingLink","setAddingLink","openedBy","setOpenedBy","editableContentElement","current","handleClick","event","target","tagName","addEventListener","removeEventListener","addLink","text","type","attributes","url","stopAddingLink","focus","onFocusOutside","onRemoveFormat","createElement","Fragment","character","onUse","icon","onClick","currentTarget","shortcutType","shortcutCharacter","className","id","_id","rel","__unstablePasteRule","html","plainText","pastedText","replace","trim","test","window","console","log","format","length","edit"],"sources":["@wordpress/format-library/src/link/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useLayoutEffect } from '@wordpress/element';\nimport {\n\tgetTextContent,\n\tapplyFormat,\n\tremoveFormat,\n\tslice,\n\tisCollapsed,\n\tinsert,\n\tcreate,\n} from '@wordpress/rich-text';\nimport { isURL, isEmail } from '@wordpress/url';\nimport {\n\tRichTextToolbarButton,\n\tRichTextShortcut,\n} from '@wordpress/block-editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport InlineLinkUI from './inline';\nimport { isValidHref } from './utils';\n\nconst name = 'core/link';\nconst title = __( 'Link' );\n\nfunction Edit( {\n\tisActive,\n\tactiveAttributes,\n\tvalue,\n\tonChange,\n\tonFocus,\n\tcontentRef,\n} ) {\n\tconst [ addingLink, setAddingLink ] = useState( false );\n\t// We only need to store the button element that opened the popover. We can ignore the other states, as they will be handled by the onFocus prop to return to the rich text field.\n\tconst [ openedBy, setOpenedBy ] = useState( null );\n\n\tuseLayoutEffect( () => {\n\t\tconst editableContentElement = contentRef.current;\n\t\tif ( ! editableContentElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction handleClick( event ) {\n\t\t\t// There is a situation whereby there is an existing link in the rich text\n\t\t\t// and the user clicks on the leftmost edge of that link and fails to activate\n\t\t\t// the link format, but the click event still fires on the `<a>` element.\n\t\t\t// This causes the `addingLink` state to be set to `true` and the link UI\n\t\t\t// to be rendered in \"creating\" mode. We need to check isActive to see if\n\t\t\t// we have an active link format.\n\t\t\tif ( event.target.tagName !== 'A' || ! isActive ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAddingLink( true );\n\t\t}\n\n\t\teditableContentElement.addEventListener( 'click', handleClick );\n\n\t\treturn () => {\n\t\t\teditableContentElement.removeEventListener( 'click', handleClick );\n\t\t};\n\t}, [ contentRef, isActive ] );\n\n\tfunction addLink( target ) {\n\t\tconst text = getTextContent( slice( value ) );\n\n\t\tif ( ! isActive && text && isURL( text ) && isValidHref( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: text },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else if ( ! isActive && text && isEmail( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: `mailto:${ text }` },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else {\n\t\t\tif ( target ) {\n\t\t\t\tsetOpenedBy( target );\n\t\t\t}\n\t\t\tsetAddingLink( true );\n\t\t}\n\t}\n\n\t/**\n\t * Runs when the popover is closed via escape keypress, unlinking the selected text,\n\t * but _not_ on a click outside the popover. onFocusOutside handles that.\n\t */\n\tfunction stopAddingLink() {\n\t\t// Don't let the click handler on the toolbar button trigger again.\n\n\t\t// There are two places for us to return focus to on Escape keypress:\n\t\t// 1. The rich text field.\n\t\t// 2. The toolbar button.\n\n\t\t// The toolbar button is the only one we need to handle returning focus to.\n\t\t// Otherwise, we rely on the passed in onFocus to return focus to the rich text field.\n\n\t\t// Close the popover\n\t\tsetAddingLink( false );\n\t\t// Return focus to the toolbar button or the rich text field\n\t\tif ( openedBy?.tagName === 'BUTTON' ) {\n\t\t\topenedBy.focus();\n\t\t} else {\n\t\t\tonFocus();\n\t\t}\n\t\t// Remove the openedBy state\n\t\tsetOpenedBy( null );\n\t}\n\n\t// Test for this:\n\t// 1. Click on the link button\n\t// 2. Click the Options button in the top right of header\n\t// 3. Focus should be in the dropdown of the Options button\n\t// 4. Press Escape\n\t// 5. Focus should be on the Options button\n\tfunction onFocusOutside() {\n\t\tsetAddingLink( false );\n\t\tsetOpenedBy( null );\n\t}\n\n\tfunction onRemoveFormat() {\n\t\tonChange( removeFormat( value, name ) );\n\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RichTextShortcut type=\"primary\" character=\"k\" onUse={ addLink } />\n\t\t\t<RichTextShortcut\n\t\t\t\ttype=\"primaryShift\"\n\t\t\t\tcharacter=\"k\"\n\t\t\t\tonUse={ onRemoveFormat }\n\t\t\t/>\n\t\t\t<RichTextToolbarButton\n\t\t\t\tname=\"link\"\n\t\t\t\ticon={ linkIcon }\n\t\t\t\ttitle={ isActive ? __( 'Link' ) : title }\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\taddLink( event.currentTarget );\n\t\t\t\t} }\n\t\t\t\tisActive={ isActive || addingLink }\n\t\t\t\tshortcutType=\"primary\"\n\t\t\t\tshortcutCharacter=\"k\"\n\t\t\t\taria-haspopup=\"true\"\n\t\t\t\taria-expanded={ addingLink }\n\t\t\t/>\n\t\t\t{ addingLink && (\n\t\t\t\t<InlineLinkUI\n\t\t\t\t\tstopAddingLink={ stopAddingLink }\n\t\t\t\t\tonFocusOutside={ onFocusOutside }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const link = {\n\tname,\n\ttitle,\n\ttagName: 'a',\n\tclassName: null,\n\tattributes: {\n\t\turl: 'href',\n\t\ttype: 'data-type',\n\t\tid: 'data-id',\n\t\t_id: 'id',\n\t\ttarget: 'target',\n\t\trel: 'rel',\n\t},\n\t__unstablePasteRule( value, { html, plainText } ) {\n\t\tconst pastedText = ( html || plainText )\n\t\t\t.replace( /<[^>]+>/g, '' )\n\t\t\t.trim();\n\n\t\t// A URL was pasted, turn the selection into a link.\n\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\tif ( ! isURL( pastedText ) || ! /^https?:/.test( pastedText ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Created link:\\n\\n', pastedText );\n\n\t\tconst format = {\n\t\t\ttype: name,\n\t\t\tattributes: {\n\t\t\t\turl: decodeEntities( pastedText ),\n\t\t\t},\n\t\t};\n\n\t\tif ( isCollapsed( value ) ) {\n\t\t\treturn insert(\n\t\t\t\tvalue,\n\t\t\t\tapplyFormat(\n\t\t\t\t\tcreate( { text: plainText } ),\n\t\t\t\t\tformat,\n\t\t\t\t\t0,\n\t\t\t\t\tplainText.length\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn applyFormat( value, format );\n\t},\n\tedit: Edit,\n};\n"],"mappings":"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"}
|