@wordpress/components
Version:
UI components for WordPress.
8 lines (7 loc) • 3.71 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/alignment-matrix-control/utils.tsx"],
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\n\nexport const GRID = [['top left', 'top center', 'top right'], ['center left', 'center center', 'center right'], ['bottom left', 'bottom center', 'bottom right']];\n\n// Stored as map as i18n __() only accepts strings (not variables)\nexport const ALIGNMENT_LABEL = {\n 'top left': __('Top Left'),\n 'top center': __('Top Center'),\n 'top right': __('Top Right'),\n 'center left': __('Center Left'),\n 'center center': __('Center'),\n center: __('Center'),\n 'center right': __('Center Right'),\n 'bottom left': __('Bottom Left'),\n 'bottom center': __('Bottom Center'),\n 'bottom right': __('Bottom Right')\n};\n\n// Transforms GRID into a flat Array of values.\nexport const ALIGNMENTS = GRID.flat();\n\n/**\n * Normalizes and transforms an incoming value to better match the alignment values\n *\n * @param value An alignment value to parse.\n *\n * @return The parsed value.\n */\nfunction normalize(value) {\n const normalized = value === 'center' ? 'center center' : value;\n\n // Strictly speaking, this could be `string | null | undefined`,\n // but will be validated shortly, so we're typecasting to an\n // `AlignmentMatrixControlValue` to keep TypeScript happy.\n const transformed = normalized?.replace('-', ' ');\n return ALIGNMENTS.includes(transformed) ? transformed : undefined;\n}\n\n/**\n * Creates an item ID based on a prefix ID and an alignment value.\n *\n * @param prefixId An ID to prefix.\n * @param value An alignment value.\n *\n * @return The item id.\n */\nexport function getItemId(prefixId, value) {\n const normalized = normalize(value);\n if (!normalized) {\n return;\n }\n const id = normalized.replace(' ', '-');\n return `${prefixId}-${id}`;\n}\n\n/**\n * Extracts an item value from its ID\n *\n * @param prefixId An ID prefix to remove\n * @param id An item ID\n * @return The item value\n */\nexport function getItemValue(prefixId, id) {\n const value = id?.replace(prefixId + '-', '');\n return normalize(value);\n}\n\n/**\n * Retrieves the alignment index from a value.\n *\n * @param alignment Value to check.\n *\n * @return The index of a matching alignment.\n */\nexport function getAlignmentIndex(alignment = 'center') {\n const normalized = normalize(alignment);\n if (!normalized) {\n return undefined;\n }\n const index = ALIGNMENTS.indexOf(normalized);\n return index > -1 ? index : undefined;\n}"],
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AAMZ,IAAM,OAAO,CAAC,CAAC,YAAY,cAAc,WAAW,GAAG,CAAC,eAAe,iBAAiB,cAAc,GAAG,CAAC,eAAe,iBAAiB,cAAc,CAAC;AAGzJ,IAAM,kBAAkB;AAAA,EAC7B,gBAAY,gBAAG,UAAU;AAAA,EACzB,kBAAc,gBAAG,YAAY;AAAA,EAC7B,iBAAa,gBAAG,WAAW;AAAA,EAC3B,mBAAe,gBAAG,aAAa;AAAA,EAC/B,qBAAiB,gBAAG,QAAQ;AAAA,EAC5B,YAAQ,gBAAG,QAAQ;AAAA,EACnB,oBAAgB,gBAAG,cAAc;AAAA,EACjC,mBAAe,gBAAG,aAAa;AAAA,EAC/B,qBAAiB,gBAAG,eAAe;AAAA,EACnC,oBAAgB,gBAAG,cAAc;AACnC;AAGO,IAAM,aAAa,KAAK,KAAK;AASpC,SAAS,UAAU,OAAO;AACxB,QAAM,aAAa,UAAU,WAAW,kBAAkB;AAK1D,QAAM,cAAc,YAAY,QAAQ,KAAK,GAAG;AAChD,SAAO,WAAW,SAAS,WAAW,IAAI,cAAc;AAC1D;AAUO,SAAS,UAAU,UAAU,OAAO;AACzC,QAAM,aAAa,UAAU,KAAK;AAClC,MAAI,CAAC,YAAY;AACf;AAAA,EACF;AACA,QAAM,KAAK,WAAW,QAAQ,KAAK,GAAG;AACtC,SAAO,GAAG,QAAQ,IAAI,EAAE;AAC1B;AASO,SAAS,aAAa,UAAU,IAAI;AACzC,QAAM,QAAQ,IAAI,QAAQ,WAAW,KAAK,EAAE;AAC5C,SAAO,UAAU,KAAK;AACxB;AASO,SAAS,kBAAkB,YAAY,UAAU;AACtD,QAAM,aAAa,UAAU,SAAS;AACtC,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,WAAW,QAAQ,UAAU;AAC3C,SAAO,QAAQ,KAAK,QAAQ;AAC9B;",
"names": []
}