�a-�Bi��s�&a y�(%����� 0��b�b��w^�UC�݆/�O�U/K�i7ڀ�m��W.��K��?7��g}&K"��%3βd��x7H�g��MhܾV 5�;�\NXR����~�r����gf}���?��C��%me�S{jE��V�Q��]�oR��g�8rC�dg:���]�0�+���i|�L����>-.{��kmzO{?�x��WO�r���o֛%��N"�u��v����xC�*��>�Frp�~��bu�[���.RXR��@Y!r% �=t��gY����e/Y}��:�Q�A�vA R��&Q��Q� �������CH;+��‡q�|xY ���q���,~��/�� � A/C U-~���Ӕ���&u��=h�Ҏ0��xw��Քc^ս��y��~��Ƿ�@��}������*d8��)Ĵ����8y��-��� ���~��Mȟ��W( ���9׋�o�̯��!�j� GN��9T%ވ�_�*��5��ZC�e��ք��d���*�� ��0�΂�K?龱�:� ��i8x���͡��`r������+ºnpK��j ��Ѡ���0�7�@^��L��ǯ���ޣs9�:1<��`ye5�f��!�ꝫ�;BE��|�h$pR:"�<���M �绀OZ�v[c��?Ȯ��\�Q-�ꃉ���~d[a�Q(b� ++4,�; R���,����`�~Z��U󐼙I��@��ߚ�߯�9g����h4���R|f!�����.�"����ޯ�tv��ᱍ�_�?�C��hh�m��)��2a>/$%n$׆h�s Z/��:�;���w�!���u����l�}��g�Cd��Fm}� ���Z*��813�i[�N�Gj�h�p��e!--\��(�\X�Yp�*��h��{j37������;89O|��4��g�{䵀 ،1Ť�l��`�Sğ���iL1V­`��/�Ovu���n@����p�XĒ@�`x>J^[�0���ж� b�<([�~��z!<�-=W�J�_�N0U��9�oƖ�&��W��t{����re�6(���S�_0E��K�ۧ����� �I�~K�K+�_T��R���뻡'띎*!� �%���&�w|H���I�I@�e\T��*��P5c+s9®~�F�%� �i b��n]{��� ��H��pG�)��������p��R�6C+�|���m$-cK ��Y�t.Wo�R�퍬�퐨�T�{qT����(�B:��m���9�� Xe��&��P�Dw}���}�]80@�K�ٖfZz��o�D��n,�ui%��a�M����.����J#ܗ��@�5���b�߃<�1��K� }�!�nَk)j�n�S��ha����"r]_���r9%&(.�>[�of@ ��~�:�����v��)n��������af�cr��cX�V`C�����|иUP �SS�� ֯ ��S�����: Y�p*�� %�b`om��D�ȉs��s(LK3!.G���cs�՟O.n��(�.��m��ۚ�qhY�J����*�|U�T ���y��{3����cEɜ�>T�N#ȇ ���q�����- <��X�l�=�Ȃ�R��^�����~�\ 碏b���h2O����2�qV48�/{�I��m:�P3D���I�hU�=��H���=��GP-7S!��3�`��1`n��Ĝ)r�n�L���x<�62��*/�;۸IQI! I���nۇqT�d����BF1< �k�"��s1�>M5�Igq�z 'o�tw��b.�Iž���A����v����}�j���≐_�!h(cٕz|u�D@��>2�/��~���yZ�L�n����������BM4��>��;ꔪ_��|2���?����q����ׯ~�i*C�GE�)F.����M2P1l���E��_�t(<��q�7���������\��~u_O�F�ԞU��!�M�X�7Z��$&0���HE=�񤤥�5_��|{�|@����҈��l��V���~w��Rr"o �a9�?��+kvE�qE��f̢�{�)���j粘Ѩ�$!,��SdW�^�e�)��V��SR�<�X� * �X�٘f򤕀�+@��F�-����A��Ҹk _�Y�4��������l|���C.���+[mٍF�=B+u/��@\�&r� w�/ �q� �e$�М$PM�h��S1�-����@��*��P�2\�A&9*8�^�J�QDS�$�gcfpL��W��QD�]��%�݂��1D�ɤ��������b�`>��\��~�a��#��\�U} ��ѝJz&��# ����P&����FV�xO1E��l'�,���:gXZ�<X F���o*��$e'`]�l�YVk��� �O�B������KЉk�q�w&�$�%@f݌�Z��>B��l &PW| s1�+_BY�\՛��p,E�W�d�Ġĥc��� RH���p�5�`,���]���`q�Y��?�-���N���1��;���!��#��D��[P�X� �B�g9��x�,g|��V�A���$1�gd���z,��cӸ�D ��h%^�E�  �t��T��(o�Q,� !b0梥�)|��x��d��KI#��&�}����O��oͨԣ�7:Yۋr X*a�>ql�Fm4�p{��D�(�m4��-�˼�?uޱShE6"��� ��k�- �,�W�����-� M��H�9���d �u��#�nk �i�}��Ķ<�Ƣ�\��t�2�G1���mN @�km�M���f+5Tpo�qv�mC������ە��SG����s��^b��2�g,��9Y��}#��T����֜�4��WN�\�j��^FFm�:~�����o�s�g���a� �[YL� ^K�(�_�f��0�����<��{���p��Mq��_�eNe��%���N񨌇A֮�"� }[���w͖Ȍ?s��v8?��vb%��Y�����U�x<�­���.yC���iUᎼ� @k8 ,Q���L ӕd��Q���V_��.]�9��\���cU�bE� %M�Aމɛ(�L)&�� �Y� �Jvm�h���Rs�&=����ɕ���ݰ�'�`�/�1�F��vY�/�ȱ�"q�%�F���Q?�4G��T"x\?�Q���ڌ�%�G����ǁiY��%`���5_�Z�RQ�/j�te7@h@������g�_� �i���`5�s� �!NX�X[nK��Z���#���4>���B�IJT9��#��fN��k|ܰG���W�-5X���)�_T�-�OPD�:��]��� �����Ot��rI���U�b�Ě�U��aJ���bm��CF`�V?�/��/en��:$�&q��.~��`{m `3� #S9⛏�i�5�=�v��{����=ņ��Wۣ����#�\� ��J���4�"����m����K쟔wD�1�vVߥ]d��~_�\��H�[�3n void */ public function localize_script( $handle, $object_name, $data ) { wp_localize_script( $this->prefix . $handle, $object_name, $data ); } /** * Adds an inline script. * * @param string $handle The script handle. * @param string $data The l10n data. * @param string $position Optional. Whether to add the inline script before the handle or after. * * @return void */ public function add_inline_script( $handle, $data, $position = 'after' ) { wp_add_inline_script( $this->prefix . $handle, $data, $position ); } /** * A list of styles that shouldn't be registered but are needed in other locations in the plugin. * * @return array */ public function special_styles() { $flat_version = $this->flatten_version( WPSEO_VERSION ); $asset_args = [ 'name' => 'inside-editor', 'src' => 'inside-editor-' . $flat_version, ]; return [ 'inside-editor' => new WPSEO_Admin_Asset( $asset_args ) ]; } /** * Flattens a version number for use in a filename. * * @param string $version The original version number. * * @return string The flattened version number. */ public function flatten_version( $version ) { $parts = explode( '.', $version ); if ( count( $parts ) === 2 && preg_match( '/^\d+$/', $parts[1] ) === 1 ) { $parts[] = '0'; } return implode( '', $parts ); } /** * Creates a default location object for use in the admin asset manager. * * @return WPSEO_Admin_Asset_Location The location to use in the asset manager. */ public static function create_default_location() { if ( defined( 'YOAST_SEO_DEV_SERVER' ) && YOAST_SEO_DEV_SERVER ) { $url = defined( 'YOAST_SEO_DEV_SERVER_URL' ) ? YOAST_SEO_DEV_SERVER_URL : WPSEO_Admin_Asset_Dev_Server_Location::DEFAULT_URL; return new WPSEO_Admin_Asset_Dev_Server_Location( $url ); } return new WPSEO_Admin_Asset_SEO_Location( WPSEO_FILE, false ); } /** * Checks if the given script is enqueued. * * @param string $script The script to check. * * @return bool True when the script is enqueued. */ public function is_script_enqueued( $script ) { return wp_script_is( $this->prefix . $script ); } /** * Returns the scripts that need to be registered. * * @todo Data format is not self-documenting. Needs explanation inline. R. * * @return array The scripts that need to be registered. */ protected function scripts_to_be_registered() { $header_scripts = [ 'admin-global', 'block-editor', 'classic-editor', 'post-edit', 'help-scout-beacon', 'redirect-old-features-tab', ]; $additional_dependencies = [ 'analysis-worker' => [ self::PREFIX . 'analysis-package' ], 'api-client' => [ 'wp-api' ], 'crawl-settings' => [ 'jquery' ], 'dashboard-widget' => [ self::PREFIX . 'api-client' ], 'wincher-dashboard-widget' => [ self::PREFIX . 'api-client' ], 'editor-modules' => [ 'jquery' ], 'elementor' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'indexation' => [ 'jquery-ui-core', 'jquery-ui-progressbar', ], 'first-time-configuration' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'integrations-page' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'post-edit' => [ self::PREFIX . 'api-client', self::PREFIX . 'block-editor', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'reindex-links' => [ 'jquery-ui-core', 'jquery-ui-progressbar', ], 'settings' => [ 'jquery-ui-core', 'jquery-ui-progressbar', self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'term-edit' => [ self::PREFIX . 'api-client', self::PREFIX . 'classic-editor', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'general-page' => [ self::PREFIX . 'api-client', ], ]; $plugin_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/plugin.php', 'ext_length' => 3, 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $external_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/externals.php', 'ext_length' => 3, 'suffix' => '-package', 'base_dir' => 'externals/', 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $language_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/languages.php', 'ext_length' => 3, 'suffix' => '-language', 'base_dir' => 'languages/', 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $renamed_scripts = $this->load_renamed_scripts(); $scripts = array_merge( $plugin_scripts, $external_scripts, $language_scripts, $renamed_scripts ); $scripts['installation-success'] = [ 'name' => 'installation-success', 'src' => 'installation-success.js', 'deps' => [ 'wp-a11y', 'wp-dom-ready', 'wp-components', 'wp-element', 'wp-i18n', self::PREFIX . 'components-new-package', self::PREFIX . 'externals-components', ], 'version' => $scripts['installation-success']['version'], ]; $scripts['post-edit-classic'] = [ 'name' => 'post-edit-classic', 'src' => $scripts['post-edit']['src'], 'deps' => array_map( static function ( $dep ) { if ( $dep === self::PREFIX . 'block-editor' ) { return self::PREFIX . 'classic-editor'; } return $dep; }, $scripts['post-edit']['deps'] ), 'in_footer' => ! in_array( 'post-edit-classic', $header_scripts, true ), 'version' => $scripts['post-edit']['version'], ]; $scripts['workouts'] = [ 'name' => 'workouts', 'src' => 'workouts.js', 'deps' => [ 'clipboard', 'lodash', 'wp-api-fetch', 'wp-a11y', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', self::PREFIX . 'analysis', self::PREFIX . 'react-select', self::PREFIX . 'components-new-package', ], 'version' => $scripts['workouts']['version'], ]; // Add the current language to every script that requires the analysis package. foreach ( $scripts as $name => $script ) { if ( substr( $name, -8 ) === 'language' ) { continue; } if ( in_array( self::PREFIX . 'analysis-package', $script['deps'], true ) ) { $scripts[ $name ]['deps'][] = self::PREFIX . YoastSEO()->helpers->language->get_researcher_language() . '-language'; } } return $scripts; } /** * Loads a generated asset file. * * @param array $args { * The arguments. * * @type string $asset_file The asset file to load. * @type int $ext_length The length of the extension, including suffix, of the filename. * @type string $suffix Optional. The suffix of the asset name. * @type array $additional_deps Optional. The additional dependencies assets may have. * @type string $base_dir Optional. The base directory of the asset. * @type string[] $header_scripts Optional. The script names that should be in the header. * } * * @return array { * The scripts to be registered. * * @type string $name The name of the asset. * @type string $src The src of the asset. * @type string[] $deps The dependenies of the asset. * @type bool $in_footer Whether or not the asset should be in the footer. * } */ protected function load_generated_asset_file( $args ) { $args = wp_parse_args( $args, [ 'suffix' => '', 'additional_deps' => [], 'base_dir' => '', 'header_scripts' => [], ] ); $scripts = []; $assets = require $args['asset_file']; foreach ( $assets as $file => $data ) { $name = substr( $file, 0, -$args['ext_length'] ); $name = strtolower( preg_replace( '/([A-Z])/', '-$1', $name ) ); $name .= $args['suffix']; $deps = $data['dependencies']; if ( isset( $args['additional_deps'][ $name ] ) ) { $deps = array_merge( $deps, $args['additional_deps'][ $name ] ); } $scripts[ $name ] = [ 'name' => $name, 'src' => $args['base_dir'] . $file, 'deps' => $deps, 'in_footer' => ! in_array( $name, $args['header_scripts'], true ), 'version' => $data['version'], ]; } return $scripts; } /** * Loads the scripts that should be renamed for BC. * * @return array { * The scripts to be registered. * * @type string $name The name of the asset. * @type string $src The src of the asset. * @type string[] $deps The dependenies of the asset. * @type bool $in_footer Whether or not the asset should be in the footer. * } */ protected function load_renamed_scripts() { $scripts = []; $renamed_scripts = [ 'admin-global-script' => 'admin-global', 'analysis' => 'analysis-package', 'analysis-report' => 'analysis-report-package', 'api' => 'api-client', 'commons' => 'commons-package', 'edit-page' => 'edit-page-script', 'draft-js' => 'draft-js-package', 'feature-flag' => 'feature-flag-package', 'helpers' => 'helpers-package', 'jed' => 'jed-package', 'chart.js' => 'chart.js-package', 'network-admin-script' => 'network-admin', 'redux' => 'redux-package', 'replacement-variable-editor' => 'replacement-variable-editor-package', 'search-metadata-previews' => 'search-metadata-previews-package', 'social-metadata-forms' => 'social-metadata-forms-package', 'styled-components' => 'styled-components-package', 'style-guide' => 'style-guide-package', 'yoast-components' => 'components-new-package', ]; foreach ( $renamed_scripts as $original => $replacement ) { $scripts[] = [ 'name' => $original, 'src' => false, 'deps' => [ self::PREFIX . $replacement ], ]; } return $scripts; } /** * Returns the styles that need to be registered. * * @todo Data format is not self-documenting. Needs explanation inline. R. * * @return array Styles that need to be registered. */ protected function styles_to_be_registered() { $flat_version = $this->flatten_version( WPSEO_VERSION ); return [ [ 'name' => 'admin-css', 'src' => 'yst_plugin_tools-' . $flat_version, 'deps' => [ self::PREFIX . 'toggle-switch' ], ], [ 'name' => 'toggle-switch', 'src' => 'toggle-switch-' . $flat_version, ], [ 'name' => 'dismissible', 'src' => 'wpseo-dismissible-' . $flat_version, ], [ 'name' => 'notifications', 'src' => 'notifications-' . $flat_version, ], [ 'name' => 'alert', 'src' => 'alerts-' . $flat_version, ], [ 'name' => 'edit-page', 'src' => 'edit-page-' . $flat_version, ], [ 'name' => 'featured-image', 'src' => 'featured-image-' . $flat_version, ���Y"�Jx��a�RU��0�\2��Y�*������{Kf}UM�ᙱo� �.��ڸ+q7v�1�L�N� ������֫�N=���<�h�-A(C��b�0�g�ArԂ � ����ٲ� �/9��>Ot�`�S���.��u�au����W����t�Qݹ���A�\�v����%�$_*Q� �����N/���"O�4�-��~|��ky.���id��Sr�1�Z� ��f@���֜*���K��ǻ�<�F�@�~���<�!�l_�ݭ�&��`���T,Sa��U<�^��>�`Ղ�*c�9����) �P3�{�ff���ػ[��7W� ���<�/U'�X�lb�{�ϩ�Y��7�J�IdsB`f'0tj����;k͊dQ�I:�2n��K������,Tʸ�;�����K�� � 2�2�X�#�T��k9�8�&ؐ-�G @�b�¾��)��?�t�.��eԬA�ܻ55�.Z,��2�k_2�p��E����S�M�ť��,��ңq��֮溊v�~�`&g�D����xK��˵��YLP��_�Q��B�^� ��?�������oV���}.D��P���;L"��x�=^���%<"��ƌ��������aj@�tl�1�� w��"@��sIN¹t|��;^8kJ�R���7z":Z:�Q=�(�2*�>[ D��"(3rt�6��������s���&���^���G� �����Ê4 i|a��thu ��eJr��Fr�w[��A��s�Ǔa��}x���,��O���;:�//F8j���H�vŹ6��� ��I� M��?}��9'�,sp��\��&[PT*TWĽ�6�~'�;����ojEq�_������'IܰR�� q�U6t�9�x �ajƓ���m+��(�lT7���������Ko���cl�P�e���8��1ɀW�^��L�J�Tel��@V��DS���+�� �=��aپ��(����:��``�ߟ�O�� �����Y�o��KE�b��nxd���3�le�򛈓���7i�&^ ���m�ᗿ�hK~XMA�`��]��Y��/����d�b> ��6��;���[i�T�|Ts N���?+xr�5*��0|K��H���_|��ge���L\K�Sg�3�pA��Z 2kq.�f0*����LXzۖ��P�g1 D�\���P�����uĵ�j{�1DͶ�U� R����Z�3.0٬�D�+u��c<� ��Sa�۟�Ѐ4̎�c?R �`w�Fh+!]C0�����[D�̷xw#1ǝePξ7�V����˱|AmJ��wWZ�s��w+e+ �P��13� ���of������5�A��7U��R�H��y���T�Vs(� _�ƶ�h5�62 �����Z��,�� � �%9��k�r �oD��sg��5yٗV ��e��g}G�7�_BȻ+�,��>�����"�����ͪ������i#CD�V3� �2�i��ǥ��ɕd�I�@C�*�����"�H���2����"�ä�c��d@-���Xy�0�B@��mV�ad}}k��!�)8���`��^����M��8� Lk @��0i,��ƛ��a3��D�S!�7� ����:������חF�WMg�����@amu6�p2O��)YR����d)32��0���Ҝ^�}���Q�����˟����>��.���?��X��b\�̉��0�y���[߶�lC2:�� h������ �!t�seߟ�ϋ�(]CA��hc� � �j@���!`tW,��:г�(��8v���]�;�Qs��|G�W@��)�w:A[���xO�x*����s@M~ɼh����0�2w�؛9i����>D8��_ ��MG�D�x&toӣ(��3��O0����RB�WoĤ��a}}�$lļ�Ȕ��UOiͶ*� � ��9�U��U�zea����ͻI�߷�-��$=?��u2���B*Ԍ^��7B}ϞGK���\�@g��7r��R�[�� �o�����>������`� ��>�\2}�=\u9��t��`c�/Nf`|L��;У��8@��a��2������l�㜝n\���Bbr�2QBĬbΓ8�SC\�ap��!����wʋEC ���.�+@I��H_����:�r�w�e@�;�d�J�7ʸ��Lx��1#�o����g�҈l-R����-R��`uv��){7%����<��я��Q;���J��m��qw�+j�tco�j}��Y����(�0�p�BF2� ��N��th���'9���Y_�Uq��}{�4�k�0���Ċ��ʜ��\2�k�i���KR�-^�$L� ��Cg����pv��C1�*�$4��Vy�TY�]-�}����.7��%Hb �n�˽�������*C��a��`��g�#Ѷ/c���K<'+W�|5l�$�p�0�?���'BO��S4b����I��m���]Ģ���=�����n�χ7Q�' /OX�_��ou z�� AZ*Ժ{����� ����P��F��_3d6?�uo�UxA��qAOٍ:��-�@zֻݤ�^k ��/Ŷ'�L�wY�Y�����k[���k���y��r�3V����nҥB[�X�zN�kD��^i���� ��bb_�+�4� %M�Pҍ�.�p�"�`p����̏0>n��A��6_#*� �{�����]��It��ħ��Tcɐj�U�x͢�s�?&@�f�g��fd@x/,��G��U�y&Y6wG�s�@r< `BJ!��z� ��f��_�`D�� ��Fd\gd�����;��-��F�CtU��_.�Y��� ��2V�R?zƴ���g�Xu�mn�ծ�™P:���X0�Y=�I���#�[���_�zH|�(��$�>���v�/l��Y7��̽-;�-eo3T���W{�r2��#�FT��H�.���yT��Q+�E����\���3O g��Nͽ`���o9��"���k��Ɔ�?~��A�����<����AD� �a�o3� �0t`�2���K�r��;��lxEll�D��z`����|�z���s�A�T䚪���p�j��M� W�[3���T�d����N��1�~;�$m�����N�/Lj�v��K)�L�Ô�2�n}��$��R��/>��utק�J{CU����C�-��J�1�7�G@��j柢�8|.�[��� x�y"�R��4�E��c+��Se:�}�Z�W̖��%ɑdpmf�ƊU����*-H�[�>F�rwY:A_�ҷ=�/P�1D�s� 'YHQZgh�3y���^�����h{ehN��]A����?ΠHq�u���rr_;����f�� !��UСиn%�� �˙Ưu�P��M���rj��S��\�0 ��|�ۦ��;\���������mSi옰�tݴ�H���j2���ͯ�邂�� �P[t�B�t���G4yU4@UE�V�:��zz��\�ߎ��0���ӊ��f�ʊ!�����–v���A�ć�����f͏7��#hRŏ�[*�>��_���g �$�z'&,>}���>�a3��!RP&hA�D�!4'htN�)L��üD>�Z��d6<�)]B�'\i,oR��78 � X ^)� x9(.(j𼼢��T&�Qn7�� ��W�(@Ʈ�����T�͖�k)E�?B6=A�Q"$j&�(���a-�Bi��s�&a y�(%����� 0��b�b��w^�UC�݆/�O�U/K�i7ڀ�m��W.��K��?7��g}&K"��%3βd��x7H�g��MhܾV 5�;�\NXR����~�r����gf}���?��C��%me�S{jE��V�Q��]�oR��g�8rC�dg:���]�0�+���i|�L����>-.{��kmzO{?�x��WO�r���o֛%��N"�u��v����xC�*��>�Frp�~��bu�[���.RXR��@Y!r% �=t��gY����e/Y}��:�Q�A�vA R��&Q��Q� �������CH;+��‡q�|xY ���q���,~��/�� � A/C U-~���Ӕ���&u��=h�Ҏ0��xw��Քc^ս��y��~��Ƿ�@��}������*d8��)Ĵ����8y��-��� ���~��Mȟ��W( ���9׋�o�̯��!�j� GN��9T%ވ�_�*��5��ZC�e��ք��d���*�� ��0�΂�K?龱�:� ��i8x���͡��`r������+ºnpK��j ��Ѡ���0�7�@^��L��ǯ���ޣs9�:1<��`ye5�f��!�ꝫ�;BE��|�h$pR:"�<���M �绀OZ�v[c��?Ȯ��\�Q-�ꃉ���~d[a�Q(b� ++4,�; R���,����`�~Z��U󐼙I��@��ߚ�߯�9g����h4���R|f!�����.�"����ޯ�tv��ᱍ�_�?�C��hh�m��)��2a>/$%n$׆h�s Z/��:�;���w�!���u����l�}��g�Cd��Fm}� ���Z*��813�i[�N�Gj�h�p��e!--\��(�\X�Yp�*��h��{j37������;89O|��4��g�{䵀 ،1Ť�l��`�Sğ���iL1V­`��/�Ovu���n@����p�XĒ@�`x>J^[�0���ж� b�<([�~��z!<�-=W�J�_�N0U��9�oƖ�&��W��t{����re�6(���S�_0E��K�ۧ����� �I�~K�K+�_T��R���뻡'띎*!� �%���&�w|H���I�I@�e\T��*��P5c+s9®~�F�%� �i b��n]{��� ��H��pG�)��������p��R�6C+�|���m$-cK ��Y�t.Wo�R�퍬�퐨�T�{qT����(�B:��m���9�� Xe��&��P�Dw}���}�]80@�K�ٖfZz��o�D��n,�ui%��a�M����.����J#ܗ��@�5���b�߃<�1��K� }�!�nَk)j�n�S��ha����"r]_���r9%&(.�>[�of@ ��~�:�����v��)n��������af�cr��cX�V`C�����|иUP �SS�� ֯ ��S�����: Y�p*�� %�b`om��D�ȉs��s(LK3!.G���cs�՟O.n��(�.��m��ۚ�qhY�J����*�|U�T ���y��{3����cEɜ�>T�N#ȇ ���q�����- <��X�l�=�Ȃ�R��^�����~�\ 碏b���h2O����2�qV48�/{�I��m:�P3D���I�hU�=��H���=��GP-7S!��3�`��1`n��Ĝ)r�n�L���x<�62��*/�;۸IQI! I���nۇqT�d����BF1< �k�"��s1�>M5�Igq�z 'o�tw��b.�Iž���A����v����}�j���≐_�!h(cٕz|u�D@��>2�/��~���yZ�L�n����������BM4��>��;ꔪ_��|2���?����q����ׯ~�i*C�GE�)F.����M2P1l���E��_�t(<��q�7���������\��~u_O�F�ԞU��!�M�X�7Z��$&0���HE=�񤤥�5_��|{�|@����҈��l��V���~w��Rr"o �a9�?��+kvE�qE��f̢�{�)���j粘Ѩ�$!,��SdW�^�e�)��V��SR�<�X� * �X�٘f򤕀�+@��F�-����A��Ҹk _�Y�4��������l|���C.���+[mٍF�=B+u/��@\�&r� w�/ �q� �e$�М$PM�h��S1�-����@��*��P�2\�A&9*8�^�J�QDS�$�gcfpL��W��QD�]��%�݂��1D�ɤ��������b�`>��\��~�a��#��\�U} ��ѝJz&��# ����P&����FV�xO1E��l'�,���:gXZ�<X F���o*��$e'`]�l�YVk��� �O�B������KЉk�q�w&�$�%@f݌�Z��>B��l &PW| s1�+_BY�\՛��p,E�W�d�Ġĥc��� RH���p�5�`,���]���`q�Y��?�-���N���1��;���!��#��D��[P�X� �B�g9��x�,g|��V�A���$1�gd���z,��cӸ�D ��h%^�E�  �t��T��(o�Q,� !b0梥�)|��x��d��KI#��&�}����O��oͨԣ�7:Yۋr X*a�>ql�Fm4�p{��D�(�m4��-�˼�?uޱShE6"��� ��k�- �,�W�����-� M��H�9���d �u��#�nk �i�}��Ķ<�Ƣ�\��t�2�G1���mN @�km�M���f+5Tpo�qv�mC������ە��SG����s��^b��2�g,��9Y��}#��T����֜�4��WN�\�j��^FFm�:~�����o�s�g���a� �[YL� ^K�(�_�f��0�����<��{���p��Mq��_�eNe��%���N񨌇A֮�"� }[���w͖Ȍ?s��v8?��vb%��Y�����U�x<�­���.yC���iUᎼ� @k8 ,Q���L ӕd��Q���V_��.]�9��\���cU�bE� %M�Aމɛ(�L)&�� �Y� �Jvm�h���Rs�&=����ɕ���ݰ�'�`�/�1�F��vY�/�ȱ�"q�%�F���Q?�4G��T"x\?�Q���ڌ�%�G����ǁiY��%`���5_�Z�RQ�/j�te7@h@������g�_� �i���`5�s� �!NX�X[nK��Z���#���4>���B�IJT9��#��fN��k|ܰG���W�-5X���)�_T�-�OPD�:��]��� �����Ot��rI���U�b�Ě�U��aJ���bm��CF`�V?�/��/en��:$�&q��.~��`{m `3� #S9⛏�i�5�=�v��{����=ņ��Wۣ����#�\� ��J���4�"����m����K쟔wD�1�vVߥ]d��~_�\��H�[�3n void */ public function localize_script( $handle, $object_name, $data ) { wp_localize_script( $this->prefix . $handle, $object_name, $data ); } /** * Adds an inline script. * * @param string $handle The script handle. * @param string $data The l10n data. * @param string $position Optional. Whether to add the inline script before the handle or after. * * @return void */ public function add_inline_script( $handle, $data, $position = 'after' ) { wp_add_inline_script( $this->prefix . $handle, $data, $position ); } /** * A list of styles that shouldn't be registered but are needed in other locations in the plugin. * * @return array */ public function special_styles() { $flat_version = $this->flatten_version( WPSEO_VERSION ); $asset_args = [ 'name' => 'inside-editor', 'src' => 'inside-editor-' . $flat_version, ]; return [ 'inside-editor' => new WPSEO_Admin_Asset( $asset_args ) ]; } /** * Flattens a version number for use in a filename. * * @param string $version The original version number. * * @return string The flattened version number. */ public function flatten_version( $version ) { $parts = explode( '.', $version ); if ( count( $parts ) === 2 && preg_match( '/^\d+$/', $parts[1] ) === 1 ) { $parts[] = '0'; } return implode( '', $parts ); } /** * Creates a default location object for use in the admin asset manager. * * @return WPSEO_Admin_Asset_Location The location to use in the asset manager. */ public static function create_default_location() { if ( defined( 'YOAST_SEO_DEV_SERVER' ) && YOAST_SEO_DEV_SERVER ) { $url = defined( 'YOAST_SEO_DEV_SERVER_URL' ) ? YOAST_SEO_DEV_SERVER_URL : WPSEO_Admin_Asset_Dev_Server_Location::DEFAULT_URL; return new WPSEO_Admin_Asset_Dev_Server_Location( $url ); } return new WPSEO_Admin_Asset_SEO_Location( WPSEO_FILE, false ); } /** * Checks if the given script is enqueued. * * @param string $script The script to check. * * @return bool True when the script is enqueued. */ public function is_script_enqueued( $script ) { return wp_script_is( $this->prefix . $script ); } /** * Returns the scripts that need to be registered. * * @todo Data format is not self-documenting. Needs explanation inline. R. * * @return array The scripts that need to be registered. */ protected function scripts_to_be_registered() { $header_scripts = [ 'admin-global', 'block-editor', 'classic-editor', 'post-edit', 'help-scout-beacon', 'redirect-old-features-tab', ]; $additional_dependencies = [ 'analysis-worker' => [ self::PREFIX . 'analysis-package' ], 'api-client' => [ 'wp-api' ], 'crawl-settings' => [ 'jquery' ], 'dashboard-widget' => [ self::PREFIX . 'api-client' ], 'wincher-dashboard-widget' => [ self::PREFIX . 'api-client' ], 'editor-modules' => [ 'jquery' ], 'elementor' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'indexation' => [ 'jquery-ui-core', 'jquery-ui-progressbar', ], 'first-time-configuration' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'integrations-page' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'post-edit' => [ self::PREFIX . 'api-client', self::PREFIX . 'block-editor', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'reindex-links' => [ 'jquery-ui-core', 'jquery-ui-progressbar', ], 'settings' => [ 'jquery-ui-core', 'jquery-ui-progressbar', self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'term-edit' => [ self::PREFIX . 'api-client', self::PREFIX . 'classic-editor', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'general-page' => [ self::PREFIX . 'api-client', ], ]; $plugin_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/plugin.php', 'ext_length' => 3, 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $external_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/externals.php', 'ext_length' => 3, 'suffix' => '-package', 'base_dir' => 'externals/', 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $language_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/languages.php', 'ext_length' => 3, 'suffix' => '-language', 'base_dir' => 'languages/', 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $renamed_scripts = $this->load_renamed_scripts(); $scripts = array_merge( $plugin_scripts, $external_scripts, $language_scripts, $renamed_scripts ); $scripts['installation-success'] = [ 'name' => 'installation-success', 'src' => 'installation-success.js', 'deps' => [ 'wp-a11y', 'wp-dom-ready', 'wp-components', 'wp-element', 'wp-i18n', self::PREFIX . 'components-new-package', self::PREFIX . 'externals-components', ], 'version' => $scripts['installation-success']['version'], ]; $scripts['post-edit-classic'] = [ 'name' => 'post-edit-classic', 'src' => $scripts['post-edit']['src'], 'deps' => array_map( static function ( $dep ) { if ( $dep === self::PREFIX . 'block-editor' ) { return self::PREFIX . 'classic-editor'; } return $dep; }, $scripts['post-edit']['deps'] ), 'in_footer' => ! in_array( 'post-edit-classic', $header_scripts, true ), 'version' => $scripts['post-edit']['version'], ]; $scripts['workouts'] = [ 'name' => 'workouts', 'src' => 'workouts.js', 'deps' => [ 'clipboard', 'lodash', 'wp-api-fetch', 'wp-a11y', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', self::PREFIX . 'analysis', self::PREFIX . 'react-select', self::PREFIX . 'components-new-package', ], 'version' => $scripts['workouts']['version'], ]; // Add the current language to every script that requires the analysis package. foreach ( $scripts as $name => $script ) { if ( substr( $name, -8 ) === 'language' ) { continue; } if ( in_array( self::PREFIX . 'analysis-package', $script['deps'], true ) ) { $scripts[ $name ]['deps'][] = self::PREFIX . YoastSEO()->helpers->language->get_researcher_language() . '-language'; } } return $scripts; } /** * Loads a generated asset file. * * @param array $args { * The arguments. * * @type string $asset_file The asset file to load. * @type int $ext_length The length of the extension, including suffix, of the filename. * @type string $suffix Optional. The suffix of the asset name. * @type array $additional_deps Optional. The additional dependencies assets may have. * @type string $base_dir Optional. The base directory of the asset. * @type string[] $header_scripts Optional. The script names that should be in the header. * } * * @return array { * The scripts to be registered. * * @type string $name The name of the asset. * @type string $src The src of the asset. * @type string[] $deps The dependenies of the asset. * @type bool $in_footer Whether or not the asset should be in the footer. * } */ protected function load_generated_asset_file( $args ) { $args = wp_parse_args( $args, [ 'suffix' => '', 'additional_deps' => [], 'base_dir' => '', 'header_scripts' => [], ] ); $scripts = []; $assets = require $args['asset_file']; foreach ( $assets as $file => $data ) { $name = substr( $file, 0, -$args['ext_length'] ); $name = strtolower( preg_replace( '/([A-Z])/', '-$1', $name ) ); $name .= $args['suffix']; $deps = $data['dependencies']; if ( isset( $args['additional_deps'][ $name ] ) ) { $deps = array_merge( $deps, $args['additional_deps'][ $name ] ); } $scripts[ $name ] = [ 'name' => $name, 'src' => $args['base_dir'] . $file, 'deps' => $deps, 'in_footer' => ! in_array( $name, $args['header_scripts'], true ), 'version' => $data['version'], ]; } return $scripts; } /** * Loads the scripts that should be renamed for BC. * * @return array { * The scripts to be registered. * * @type string $name The name of the asset. * @type string $src The src of the asset. * @type string[] $deps The dependenies of the asset. * @type bool $in_footer Whether or not the asset should be in the footer. * } */ protected function load_renamed_scripts() { $scripts = []; $renamed_scripts = [ 'admin-global-script' => 'admin-global', 'analysis' => 'analysis-package', 'analysis-report' => 'analysis-report-package', 'api' => 'api-client', 'commons' => 'commons-package', 'edit-page' => 'edit-page-script', 'draft-js' => 'draft-js-package', 'feature-flag' => 'feature-flag-package', 'helpers' => 'helpers-package', 'jed' => 'jed-package', 'chart.js' => 'chart.js-package', 'network-admin-script' => 'network-admin', 'redux' => 'redux-package', 'replacement-variable-editor' => 'replacement-variable-editor-package', 'search-metadata-previews' => 'search-metadata-previews-package', 'social-metadata-forms' => 'social-metadata-forms-package', 'styled-components' => 'styled-components-package', 'style-guide' => 'style-guide-package', 'yoast-components' => 'components-new-package', ]; foreach ( $renamed_scripts as $original => $replacement ) { $scripts[] = [ 'name' => $original, 'src' => false, 'deps' => [ self::PREFIX . $replacement ], ]; } return $scripts; } /** * Returns the styles that need to be registered. * * @todo Data format is not self-documenting. Needs explanation inline. R. * * @return array Styles that need to be registered. */ protected function styles_to_be_registered() { $flat_version = $this->flatten_version( WPSEO_VERSION ); return [ [ 'name' => 'admin-css', 'src' => 'yst_plugin_tools-' . $flat_version, 'deps' => [ self::PREFIX . 'toggle-switch' ], ], [ 'name' => 'toggle-switch', 'src' => 'toggle-switch-' . $flat_version, ], [ 'name' => 'dismissible', 'src' => 'wpseo-dismissible-' . $flat_version, ], [ 'name' => 'notifications', 'src' => 'notifications-' . $flat_version, ], [ 'name' => 'alert', 'src' => 'alerts-' . $flat_version, ], [ 'name' => 'edit-page', 'src' => 'edit-page-' . $flat_version, ], [ 'name' => 'featured-image', 'src' => 'featured-image-' . $flat_version, ���Y"�Jx��a�RU��0�\2��Y�*������{Kf}UM�ᙱo� �.��ڸ+q7v�1�L�N� ������֫�N=���<�h�-A(C��b�0�g�ArԂ � ����ٲ� �/9��>Ot�`�S���.��u�au����W����t�Qݹ���A�\�v����%�$_*Q� �����N/���"O�4�-��~|��ky.���id��Sr�1�Z� ��f@���֜*���K��ǻ�<�F�@�~���<�!�l_�ݭ�&��`���T,Sa��U<�^��>�`Ղ�*c�9����) �P3�{�ff���ػ[��7W� ���<�/U'�X�lb�{�ϩ�Y��7�J�IdsB`f'0tj����;k͊dQ�I:�2n��K������,Tʸ�;�����K�� � 2�2�X�#�T��k9�8�&ؐ-�G @�b�¾��)��?�t�.��eԬA�ܻ55�.Z,��2�k_2�p��E����S�M�ť��,��ңq��֮溊v�~�`&g�D����xK��˵��YLP��_�Q��B�^� ��?�������oV���}.D��P���;L"��x�=^���%<"��ƌ��������aj@�tl�1�� w��"@��sIN¹t|��;^8kJ�R���7z":Z:�Q=�(�2*�>[ D��"(3rt�6��������s���&���^���G� �����Ê4 i|a��thu ��eJr��Fr�w[��A��s�Ǔa��}x���,��O���;:�//F8j���H�vŹ6��� ��I� M��?}��9'�,sp��\��&[PT*TWĽ�6�~'�;����ojEq�_������'IܰR�� q�U6t�9�x �ajƓ���m+��(�lT7���������Ko���cl�P�e���8��1ɀW�^��L�J�Tel��@V��DS���+�� �=��aپ��(����:��``�ߟ�O�� �����Y�o��KE�b��nxd���3�le�򛈓���7i�&^ ���m�ᗿ�hK~XMA�`��]��Y��/����d�b> ��6��;���[i�T�|Ts N���?+xr�5*��0|K��H���_|��ge���L\K�Sg�3�pA��Z 2kq.�f0*����LXzۖ��P�g1 D�\���P�����uĵ�j{�1DͶ�U� R����Z�3.0٬�D�+u��c<� ��Sa�۟�Ѐ4̎�c?R �`w�Fh+!]C0�����[D�̷xw#1ǝePξ7�V����˱|AmJ��wWZ�s��w+e+ �P��13� ���of������5�A��7U��R�H��y���T�Vs(� _�ƶ�h5�62 �����Z��,�� � �%9��k�r �oD��sg��5yٗV ��e��g}G�7�_BȻ+�,��>�����"�����ͪ������i#CD�V3� �2�i��ǥ��ɕd�I�@C�*�����"�H���2����"�ä�c��d@-���Xy�0�B@��mV�ad}}k��!�)8���`��^����M��8� Lk @��0i,��ƛ��a3��D�S!�7� ����:������חF�WMg�����@amu6�p2O��)YR����d)32��0���Ҝ^�}���Q�����˟����>��.���?��X��b\�̉��0�y���[߶�lC2:�� h������ �!t�seߟ�ϋ�(]CA��hc� � �j@���!`tW,��:г�(��8v���]�;�Qs��|G�W@��)�w:A[���xO�x*����s@M~ɼh����0�2w�؛9i����>D8��_ ��MG�D�x&toӣ(��3��O0����RB�WoĤ��a}}�$lļ�Ȕ��UOiͶ*� � ��9�U��U�zea����ͻI�߷�-��$=?��u2���B*Ԍ^��7B}ϞGK���\�@g��7r��R�[�� �o�����>������`� ��>�\2}�=\u9��t��`c�/Nf`|L��;У��8@��a��2������l�㜝n\���Bbr�2QBĬbΓ8�SC\�ap��!����wʋEC ���.�+@I��H_����:�r�w�e@�;�d�J�7ʸ��Lx��1#�o����g�҈l-R����-R��`uv��){7%����<��я��Q;���J��m��qw�+j�tco�j}��Y����(�0�p�BF2� ��N��th���'9���Y_�Uq��}{�4�k�0���Ċ��ʜ��\2�k�i���KR�-^�$L� ��Cg����pv��C1�*�$4��Vy�TY�]-�}����.7��%Hb �n�˽�������*C��a��`��g�#Ѷ/c���K<'+W�|5l�$�p�0�?���'BO��S4b����I��m���]Ģ���=�����n�χ7Q�' /OX�_��ou z�� AZ*Ժ{����� ����P��F��_3d6?�uo�UxA��qAOٍ:��-�@zֻݤ�^k ��/Ŷ'�L�wY�Y�����k[���k���y��r�3V����nҥB[�X�zN�kD��^i���� ��bb_�+�4� %M�Pҍ�.�p�"�`p����̏0>n��A��6_#*� �{�����]��It��ħ��Tcɐj�U�x͢�s�?&@�f�g��fd@x/,��G��U�y&Y6wG�s�@r< `BJ!��z� ��f��_�`D�� ��Fd\gd�����;��-��F�CtU��_.�Y��� ��2V�R?zƴ���g�Xu�mn�ծ�™P:���X0�Y=�I���#�[���_�zH|�(��$�>���v�/l��Y7��̽-;�-eo3T���W{�r2��#�FT��H�.���yT��Q+�E����\���3O g��Nͽ`���o9��"���k��Ɔ�?~��A�����<����AD� �a�o3� �0t`�2���K�r��;��lxEll�D��z`����|�z���s�A�T䚪���p�j��M� W�[3���T�d����N��1�~;�$m�����N�/Lj�v��K)�L�Ô�2�n}��$��R��/>��utק�J{CU����C�-��J�1�7�G@��j柢�8|.�[��� x�y"�R��4�E��c+��Se:�}�Z�W̖��%ɑdpmf�ƊU����*-H�[�>F�rwY:A_�ҷ=�/P�1D�s� 'YHQZgh�3y���^�����h{ehN��]A����?ΠHq�u���rr_;����f�� !��UСиn%�� �˙Ưu�P��M���rj��S��\�0 ��|�ۦ��;\���������mSi옰�tݴ�H���j2���ͯ�邂�� �P[t�B�t���G4yU4@UE�V�:��zz��\�ߎ��0���ӊ��f�ʊ!�����–v���A�ć�����f͏7��#hRŏ�[*�>��_���g �$�z'&,>}���>�a3��!RP&hA�D�!4'htN�)L��üD>�Z��d6<�)]B�'\i,oR��78 � X ^)� x9(.(j𼼢��T&�Qn7�� ��W�(@Ʈ�����T�͖�k)E�?B6=A�Q"$j&�(��