Responsive Menu - Version 4.1.10

Version Description

(30th Mar 2022) = * Bug: Fixed issue with submenu font-wieght * Bug: Fixed issue with svg icons * Enhancement: Updated scssphp to latest version (1.10.2)

Download this release

Release Info

Developer expresstech
Plugin Icon 128x128 Responsive Menu
Version 4.1.10
Comparing to
See all releases

Code changes from version 4.1.9 to 4.1.10

Files changed (74) hide show
  1. readme.txt +12 -4
  2. responsive-menu.php +2 -2
  3. v4.0.0/assets/scss/main.scss +1 -0
  4. v4.0.0/inc/classes/class-control-manager.php +31 -16
  5. v4.0.0/inc/classes/class-editor.php +14 -9
  6. v4.0.0/inc/classes/class-style-manager.php +6 -0
  7. v4.0.0/inc/classes/class-ui-manager.php +9 -3
  8. v4.0.0/libs/scssphp/composer.json +1 -1
  9. v4.0.0/libs/scssphp/composer.lock +23 -9
  10. v4.0.0/libs/scssphp/vendor/bin/pscss +0 -14
  11. v4.0.0/libs/scssphp/vendor/composer/ClassLoader.php +40 -4
  12. v4.0.0/libs/scssphp/vendor/composer/InstalledVersions.php +337 -0
  13. v4.0.0/libs/scssphp/vendor/composer/autoload_classmap.php +1 -0
  14. v4.0.0/libs/scssphp/vendor/composer/autoload_real.php +7 -2
  15. v4.0.0/libs/scssphp/vendor/composer/autoload_static.php +5 -0
  16. v4.0.0/libs/scssphp/vendor/composer/installed.json +82 -64
  17. v4.0.0/libs/scssphp/vendor/composer/installed.php +32 -0
  18. v4.0.0/libs/scssphp/vendor/composer/platform_check.php +26 -0
  19. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/README.md +34 -9
  20. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/bin/pscss +83 -54
  21. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/composer.json +72 -12
  22. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/phpcs.xml.dist +12 -0
  23. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/scss.inc.php +15 -28
  24. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Base/Range.php +14 -4
  25. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block.php +10 -7
  26. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/AtRootBlock.php +37 -0
  27. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/CallableBlock.php +45 -0
  28. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/ContentBlock.php +38 -0
  29. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/DirectiveBlock.php +37 -0
  30. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/EachBlock.php +37 -0
  31. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/ElseBlock.php +27 -0
  32. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/ElseifBlock.php +32 -0
  33. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/ForBlock.php +47 -0
  34. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/IfBlock.php +37 -0
  35. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/MediaBlock.php +37 -0
  36. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/NestedPropertyBlock.php +37 -0
  37. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Block/WhileBlock.php +32 -0
  38. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Cache.php +47 -14
  39. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Colors.php +20 -14
  40. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/CompilationResult.php +69 -0
  41. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Compiler.php +4122 -1552
  42. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Compiler/CachedResult.php +77 -0
  43. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Compiler/Environment.php +26 -3
  44. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Exception/CompilerException.php +4 -1
  45. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Exception/ParserException.php +38 -1
  46. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Exception/RangeException.php +4 -1
  47. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Exception/SassException.php +7 -0
  48. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Exception/SassScriptException.php +32 -0
  49. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Exception/ServerException.php +6 -1
  50. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter.php +67 -21
  51. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter/Compact.php +7 -0
  52. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter/Compressed.php +5 -3
  53. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter/Crunched.php +9 -1
  54. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter/Debug.php +7 -1
  55. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter/Expanded.php +6 -2
  56. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter/Nested.php +14 -5
  57. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Formatter/OutputBlock.php +12 -9
  58. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Logger/LoggerInterface.php +48 -0
  59. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Logger/QuietLogger.php +27 -0
  60. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Logger/StreamLogger.php +60 -0
  61. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Node.php +6 -3
  62. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Node/Number.php +567 -153
  63. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/OutputStyle.php +9 -0
  64. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Parser.php +1273 -476
  65. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/SourceMap/Base64.php +7 -4
  66. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/SourceMap/Base64VLQ.php +16 -11
  67. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/SourceMap/SourceMapGenerator.php +61 -19
  68. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Type.php +138 -0
  69. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Util.php +119 -5
  70. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Util/Path.php +77 -0
  71. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/ValueConverter.php +95 -0
  72. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Version.php +2 -1
  73. v4.0.0/libs/scssphp/vendor/scssphp/scssphp/src/Warn.php +84 -0
  74. v4.0.0/templates/rmp-editor.php +27 -23
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: expresstech, responsivemenu, imvarunkmr, surajkumarsingh, infosate
3
  Tags: responsive, mega menu, navigation, mobile, hamburger
4
  Requires at least: 3.6
5
  Tested up to: 5.9
6
- Stable tag: 4.1.9
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -11,7 +11,8 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  Highly customisable Responsive Menu plugin with 150+ options. No coding knowledge needed to design it exactly as you want.
12
 
13
  == Description ==
14
- **Description:**
 
15
 
16
  Highly customisable Responsive Menu Plugin for WordPress. With over 150 customisable options you get a combination of 22,500 options! No coding experience or knowledge is needed with an easy to use interface you can get it looking exactly as you want with minimal fuss.
17
 
@@ -73,9 +74,11 @@ For more reasons to go Pro, please visit [this page](https://responsive.menu#why
73
 
74
  [youtube https://www.youtube.com/watch?v=aj6ba0tGKPg]
75
 
76
- 🌐Our Plugins
 
 
77
 
78
- If you like this plugin, consider exploring our other plugins:
79
 
80
  ⏱️ [Quiz and Survey Master](https://wordpress.org/plugins/quiz-master-next/) - Best WordPress Quiz Plugin to create engaging quizzes, surveys, & exams using WordPress and convert your website into a lead generation machine.
81
 
@@ -117,6 +120,11 @@ To view our FAQ, please go to [https://responsive.menu/faq/](https://responsive.
117
 
118
  == Changelog ==
119
 
 
 
 
 
 
120
  = 4.1.9 (8th Mar 2022) =
121
  * Enhancement: Fixed issues with admin bar settings
122
 
3
  Tags: responsive, mega menu, navigation, mobile, hamburger
4
  Requires at least: 3.6
5
  Tested up to: 5.9
6
+ Stable tag: 4.1.10
7
  Requires PHP: 5.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  Highly customisable Responsive Menu plugin with 150+ options. No coding knowledge needed to design it exactly as you want.
12
 
13
  == Description ==
14
+
15
+ Try Demo ➡️ [Get a personal sandbox demo with Response Menu](https://instawp.io/plugins/responsive-menu)
16
 
17
  Highly customisable Responsive Menu Plugin for WordPress. With over 150 customisable options you get a combination of 22,500 options! No coding experience or knowledge is needed with an easy to use interface you can get it looking exactly as you want with minimal fuss.
18
 
74
 
75
  [youtube https://www.youtube.com/watch?v=aj6ba0tGKPg]
76
 
77
+ 🌐Our themes and plugins
78
+
79
+ If you like this plugin, consider exploring our other themes and plugins:
80
 
81
+ 🧱 [Gutena](https://wordpress.org/themes/gutena/) - Block Based Theme for WordPress includes over 50 free block patterns with new patterns added every week.
82
 
83
  ⏱️ [Quiz and Survey Master](https://wordpress.org/plugins/quiz-master-next/) - Best WordPress Quiz Plugin to create engaging quizzes, surveys, & exams using WordPress and convert your website into a lead generation machine.
84
 
120
 
121
  == Changelog ==
122
 
123
+ = 4.1.10 (30th Mar 2022) =
124
+ * Bug: Fixed issue with submenu font-wieght
125
+ * Bug: Fixed issue with svg icons
126
+ * Enhancement: Updated scssphp to latest version (1.10.2)
127
+
128
  = 4.1.9 (8th Mar 2022) =
129
  * Enhancement: Fixed issues with admin bar settings
130
 
responsive-menu.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Responsive Menu
5
  Plugin URI: https://expresstech.io
6
  Description: Highly Customisable Responsive Menu Plugin for WordPress
7
- Version: 4.1.9
8
  Author: ExpressTech
9
  Text Domain: responsive-menu
10
  Author URI: https://responsive.menu
@@ -16,7 +16,7 @@ Tags: responsive, menu, responsive menu, mega menu, max mega menu, max menu
16
  * Constant as plugin version.
17
  */
18
  if ( ! defined( 'RMP_PLUGIN_VERSION' ) ) {
19
- define( 'RMP_PLUGIN_VERSION', '4.1.9' );
20
  }
21
 
22
  define( 'RESPONSIVE_MENU_URL', plugin_dir_url( __FILE__ ) );
4
  Plugin Name: Responsive Menu
5
  Plugin URI: https://expresstech.io
6
  Description: Highly Customisable Responsive Menu Plugin for WordPress
7
+ Version: 4.1.10
8
  Author: ExpressTech
9
  Text Domain: responsive-menu
10
  Author URI: https://responsive.menu
16
  * Constant as plugin version.
17
  */
18
  if ( ! defined( 'RMP_PLUGIN_VERSION' ) ) {
19
+ define( 'RMP_PLUGIN_VERSION', '4.1.10' );
20
  }
21
 
22
  define( 'RESPONSIVE_MENU_URL', plugin_dir_url( __FILE__ ) );
v4.0.0/assets/scss/main.scss CHANGED
@@ -448,6 +448,7 @@
448
  font-family: inherit;
449
  }
450
 
 
451
  color: $submenu_item_text_color;
452
  text-align: $submenu_item_text_alignment;
453
  background-color: $submenu_item_background_color;
448
  font-family: inherit;
449
  }
450
 
451
+ font-weight: $submenu_font_weight;
452
  color: $submenu_item_text_color;
453
  text-align: $submenu_item_text_alignment;
454
  background-color: $submenu_item_background_color;
v4.0.0/inc/classes/class-control-manager.php CHANGED
@@ -740,6 +740,12 @@ class Control_Manager {
740
  return;
741
  }
742
 
 
 
 
 
 
 
743
  $group_classes = '';
744
 
745
  if ( ! empty( $param['group_classes'] ) ) {
@@ -802,9 +808,9 @@ class Control_Manager {
802
  <div class="rmp-icon-picker-placeholder">
803
  <span>
804
  <?php
805
- $svg_placeholder = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/image-placeholder.svg' );
806
- if ( is_array( $svg_placeholder ) && ! is_wp_error( $svg_placeholder ) ) {
807
- echo wp_kses( $svg_placeholder['body'], rmp_allow_svg_html_tags() );
808
  }
809
  ?>
810
  </span>
@@ -845,7 +851,11 @@ class Control_Manager {
845
  if ( empty( $param ) ) {
846
  return;
847
  }
848
-
 
 
 
 
849
  $group_classes = '';
850
 
851
  if ( ! empty( $param['group_classes'] ) ) {
@@ -899,9 +909,9 @@ class Control_Manager {
899
  <div class="rmp-image-picker-placeholder">
900
  <span>
901
  <?php
902
- $svg_placeholder = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/image-placeholder.svg' );
903
- if ( is_array( $svg_placeholder ) && ! is_wp_error( $svg_placeholder ) ) {
904
- echo wp_kses( $svg_placeholder['body'], rmp_allow_svg_html_tags() );
905
  }
906
  ?>
907
  </span>
@@ -1107,31 +1117,36 @@ class Control_Manager {
1107
  * @return HTML
1108
  */
1109
  protected function get_device_options() {
 
 
 
 
 
1110
  ?>
1111
  <div class="rmp-device-switcher-holder">
1112
  <a target="_blank" rel="noopener" class="upgrade-tooltip" href="<?php echo esc_url( $this->pro_plugin_url ); ?>" > PRO </a>
1113
  <ul class="select rmp-device-switcher" >
1114
  <li data-device="mobile">
1115
  <?php
1116
- $svg_mobile = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/mobile.svg' );
1117
- if ( is_array( $svg_mobile ) && ! is_wp_error( $svg_mobile ) ) {
1118
- echo wp_kses( $svg_mobile['body'], rmp_allow_svg_html_tags() );
1119
  }
1120
  ?>
1121
  </li>
1122
  <li data-device="tablet">
1123
  <?php
1124
- $svg_tablet = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/tablet.svg' );
1125
- if ( is_array( $svg_tablet ) && ! is_wp_error( $svg_tablet ) ) {
1126
- echo wp_kses( $svg_tablet['body'], rmp_allow_svg_html_tags() );
1127
  }
1128
  ?>
1129
  </li>
1130
  <li data-device="desktop">
1131
  <?php
1132
- $svg_desktop = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/desktop.svg' );
1133
- if ( is_array( $svg_desktop ) && ! is_wp_error( $svg_desktop ) ) {
1134
- echo wp_kses( $svg_desktop['body'], rmp_allow_svg_html_tags() );
1135
  }
1136
  ?>
1137
  </li>
740
  return;
741
  }
742
 
743
+ global $wp_filesystem;
744
+ if ( empty( $wp_filesystem ) ) {
745
+ require_once ABSPATH . 'wp-admin/includes/file.php';
746
+ }
747
+ WP_Filesystem();
748
+
749
  $group_classes = '';
750
 
751
  if ( ! empty( $param['group_classes'] ) ) {
808
  <div class="rmp-icon-picker-placeholder">
809
  <span>
810
  <?php
811
+ $svg_placeholder = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/image-placeholder.svg' );
812
+ if ( $svg_placeholder ) {
813
+ echo wp_kses( $svg_placeholder, rmp_allow_svg_html_tags() );
814
  }
815
  ?>
816
  </span>
851
  if ( empty( $param ) ) {
852
  return;
853
  }
854
+ global $wp_filesystem;
855
+ if ( empty( $wp_filesystem ) ) {
856
+ require_once ABSPATH . 'wp-admin/includes/file.php';
857
+ }
858
+ WP_Filesystem();
859
  $group_classes = '';
860
 
861
  if ( ! empty( $param['group_classes'] ) ) {
909
  <div class="rmp-image-picker-placeholder">
910
  <span>
911
  <?php
912
+ $svg_placeholder = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/image-placeholder.svg' );
913
+ if ( $svg_placeholder ) {
914
+ echo wp_kses( $svg_placeholder, rmp_allow_svg_html_tags() );
915
  }
916
  ?>
917
  </span>
1117
  * @return HTML
1118
  */
1119
  protected function get_device_options() {
1120
+ global $wp_filesystem;
1121
+ if ( empty( $wp_filesystem ) ) {
1122
+ require_once ABSPATH . 'wp-admin/includes/file.php';
1123
+ }
1124
+ WP_Filesystem();
1125
  ?>
1126
  <div class="rmp-device-switcher-holder">
1127
  <a target="_blank" rel="noopener" class="upgrade-tooltip" href="<?php echo esc_url( $this->pro_plugin_url ); ?>" > PRO </a>
1128
  <ul class="select rmp-device-switcher" >
1129
  <li data-device="mobile">
1130
  <?php
1131
+ $svg_mobile = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/mobile.svg' );
1132
+ if ( $svg_mobile ) {
1133
+ echo wp_kses( $svg_mobile, rmp_allow_svg_html_tags() );
1134
  }
1135
  ?>
1136
  </li>
1137
  <li data-device="tablet">
1138
  <?php
1139
+ $svg_tablet = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/tablet.svg' );
1140
+ if ( $svg_tablet ) {
1141
+ echo wp_kses( $svg_tablet, rmp_allow_svg_html_tags() );
1142
  }
1143
  ?>
1144
  </li>
1145
  <li data-device="desktop">
1146
  <?php
1147
+ $svg_desktop = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/desktop.svg' );
1148
+ if ( $svg_desktop ) {
1149
+ echo wp_kses( $svg_desktop, rmp_allow_svg_html_tags() );
1150
  }
1151
  ?>
1152
  </li>
v4.0.0/inc/classes/class-editor.php CHANGED
@@ -105,6 +105,11 @@ class Editor {
105
  * @param HTML.
106
  */
107
  public function footer_section() {
 
 
 
 
 
108
  ?>
109
  <div id="rmp-editor-footer" class="rmp-editor-footer">
110
 
@@ -141,9 +146,9 @@ class Editor {
141
 
142
  <button type="button" id="rmp-preview-mobile" class=" rmp-device-preview rmp-preview-mobile active" aria-pressed="1" data-device="mobile">
143
  <?php
144
- $svg_mobile = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/mobile.svg' );
145
- if ( is_array( $svg_mobile ) && ! is_wp_error( $svg_mobile ) ) {
146
- echo wp_kses( $svg_mobile['body'], rmp_allow_svg_html_tags() );
147
  }
148
  ?>
149
  <span class="screen-reader-text">
@@ -153,9 +158,9 @@ class Editor {
153
 
154
  <button type="button" id="rmp-preview-tablet" class="rmp-preview-tablet rmp-device-preview" aria-pressed="" data-device="tablet">
155
  <?php
156
- $svg_tablet = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/tablet.svg' );
157
- if ( is_array( $svg_tablet ) && ! is_wp_error( $svg_tablet ) ) {
158
- echo wp_kses( $svg_tablet['body'], rmp_allow_svg_html_tags() );
159
  }
160
  ?>
161
  <span class="screen-reader-text">
@@ -165,9 +170,9 @@ class Editor {
165
 
166
  <button type="button" id="rmp-preview-desktop" class="rmp-preview-desktop rmp-device-preview" aria-pressed="" data-device="desktop">
167
  <?php
168
- $svg_desktop = wp_remote_get( RMP_PLUGIN_URL_V4 . '/assets/admin/icons/svg/desktop.svg' );
169
- if ( is_array( $svg_desktop ) && ! is_wp_error( $svg_desktop ) ) {
170
- echo wp_kses( $svg_desktop['body'], rmp_allow_svg_html_tags() );
171
  }
172
  ?>
173
  <span class="screen-reader-text">
105
  * @param HTML.
106
  */
107
  public function footer_section() {
108
+ global $wp_filesystem;
109
+ if ( empty( $wp_filesystem ) ) {
110
+ require_once ABSPATH . 'wp-admin/includes/file.php';
111
+ }
112
+ WP_Filesystem();
113
  ?>
114
  <div id="rmp-editor-footer" class="rmp-editor-footer">
115
 
146
 
147
  <button type="button" id="rmp-preview-mobile" class=" rmp-device-preview rmp-preview-mobile active" aria-pressed="1" data-device="mobile">
148
  <?php
149
+ $svg_mobile = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/mobile.svg' );
150
+ if ( $svg_mobile ) {
151
+ echo wp_kses( $svg_mobile, rmp_allow_svg_html_tags() );
152
  }
153
  ?>
154
  <span class="screen-reader-text">
158
 
159
  <button type="button" id="rmp-preview-tablet" class="rmp-preview-tablet rmp-device-preview" aria-pressed="" data-device="tablet">
160
  <?php
161
+ $svg_tablet = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/tablet.svg' );
162
+ if ( $svg_tablet ) {
163
+ echo wp_kses( $svg_tablet, rmp_allow_svg_html_tags() );
164
  }
165
  ?>
166
  <span class="screen-reader-text">
170
 
171
  <button type="button" id="rmp-preview-desktop" class="rmp-preview-desktop rmp-device-preview" aria-pressed="" data-device="desktop">
172
  <?php
173
+ $svg_desktop = $wp_filesystem->get_contents( RMP_PLUGIN_PATH_V4 . '/assets/admin/icons/svg/desktop.svg' );
174
+ if ( $svg_desktop ) {
175
+ echo wp_kses( $svg_desktop, rmp_allow_svg_html_tags() );
176
  }
177
  ?>
178
  <span class="screen-reader-text">
v4.0.0/inc/classes/class-style-manager.php CHANGED
@@ -1064,6 +1064,11 @@ class Style_Manager {
1064
  $submenu_item_font_size = $options['submenu_font_size'];
1065
  }
1066
 
 
 
 
 
 
1067
  $submenu_item_font_size_unit = '';
1068
  if ( ! empty( $options['submenu_font_size_unit'] ) ) {
1069
  $submenu_item_font_size_unit = $options['submenu_font_size_unit'];
@@ -1412,6 +1417,7 @@ class Style_Manager {
1412
  'submenu_current_item_border_color_hover' => $submenu_current_item_border_color_hover,
1413
 
1414
  'submenu_item_font_size' => $submenu_item_font_size,
 
1415
  'submenu_item_font_size_unit' => $submenu_item_font_size_unit,
1416
  'submenu_item_font_family' => $submenu_item_font_family,
1417
  'submenu_item_text_alignment' => $submenu_item_text_alignment,
1064
  $submenu_item_font_size = $options['submenu_font_size'];
1065
  }
1066
 
1067
+ $submenu_font_weight = '';
1068
+ if ( ! empty( $options['submenu_font_weight'] ) ) {
1069
+ $submenu_font_weight = $options['submenu_font_weight'];
1070
+ }
1071
+
1072
  $submenu_item_font_size_unit = '';
1073
  if ( ! empty( $options['submenu_font_size_unit'] ) ) {
1074
  $submenu_item_font_size_unit = $options['submenu_font_size_unit'];
1417
  'submenu_current_item_border_color_hover' => $submenu_current_item_border_color_hover,
1418
 
1419
  'submenu_item_font_size' => $submenu_item_font_size,
1420
+ 'submenu_font_weight' => $submenu_font_weight,
1421
  'submenu_item_font_size_unit' => $submenu_item_font_size_unit,
1422
  'submenu_item_font_family' => $submenu_item_font_family,
1423
  'submenu_item_text_alignment' => $submenu_item_text_alignment,
v4.0.0/inc/classes/class-ui-manager.php CHANGED
@@ -162,6 +162,12 @@ class UI_Manager {
162
  return;
163
  }
164
 
 
 
 
 
 
 
165
  $item_class = '';
166
  if ( ! empty( $tab_attr['item_class'] ) ) {
167
  $item_class = $tab_attr['item_class'];
@@ -187,9 +193,9 @@ class UI_Manager {
187
  ?>
188
  <span class="rmp-tab-item-icon">
189
  <?php
190
- $svg_icon = wp_remote_get( $tab_attr['item_header']['item_svg_icon'] );
191
- if ( is_array( $svg_icon ) && ! is_wp_error( $svg_icon ) ) {
192
- echo wp_kses( $svg_icon['body'], rmp_allow_svg_html_tags() );
193
  }
194
  ?>
195
  </span>
162
  return;
163
  }
164
 
165
+ global $wp_filesystem;
166
+ if ( empty( $wp_filesystem ) ) {
167
+ require_once ABSPATH . 'wp-admin/includes/file.php';
168
+ }
169
+ WP_Filesystem();
170
+
171
  $item_class = '';
172
  if ( ! empty( $tab_attr['item_class'] ) ) {
173
  $item_class = $tab_attr['item_class'];
193
  ?>
194
  <span class="rmp-tab-item-icon">
195
  <?php
196
+ $svg_icon = $wp_filesystem->get_contents( $tab_attr['item_header']['item_svg_icon'] );
197
+ if ( $svg_icon ) {
198
+ echo wp_kses( $svg_icon, rmp_allow_svg_html_tags() );
199
  }
200
  ?>
201
  </span>
v4.0.0/libs/scssphp/composer.json CHANGED
@@ -1,5 +1,5 @@
1
  {
2
  "require": {
3
- "scssphp/scssphp": "^1.1"
4
  }
5
  }
1
  {
2
  "require": {
3
+ "scssphp/scssphp": "^1.10.2"
4
  }
5
  }
v4.0.0/libs/scssphp/composer.lock CHANGED
@@ -4,20 +4,20 @@
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
- "content-hash": "639d6b1231e90f706ba0d28d5e0a622f",
8
  "packages": [
9
  {
10
  "name": "scssphp/scssphp",
11
- "version": "1.1.0",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/scssphp/scssphp.git",
15
- "reference": "4363ddce8d750f055c436833dd77d83517946532"
16
  },
17
  "dist": {
18
  "type": "zip",
19
- "url": "https://api.github.com/repos/scssphp/scssphp/zipball/4363ddce8d750f055c436833dd77d83517946532",
20
- "reference": "4363ddce8d750f055c436833dd77d83517946532",
21
  "shasum": ""
22
  },
23
  "require": {
@@ -26,11 +26,20 @@
26
  "php": ">=5.6.0"
27
  },
28
  "require-dev": {
29
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3",
 
 
30
  "squizlabs/php_codesniffer": "~3.5",
31
- "twbs/bootstrap": "~4.3",
 
 
 
32
  "zurb/foundation": "~6.5"
33
  },
 
 
 
 
34
  "bin": [
35
  "bin/pscss"
36
  ],
@@ -65,7 +74,11 @@
65
  "scss",
66
  "stylesheet"
67
  ],
68
- "time": "2020-04-21T15:53:32+00:00"
 
 
 
 
69
  }
70
  ],
71
  "packages-dev": [],
@@ -75,5 +88,6 @@
75
  "prefer-stable": false,
76
  "prefer-lowest": false,
77
  "platform": [],
78
- "platform-dev": []
 
79
  }
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
+ "content-hash": "1ea5523c517849d7d79d7278b95713b7",
8
  "packages": [
9
  {
10
  "name": "scssphp/scssphp",
11
+ "version": "v1.10.2",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/scssphp/scssphp.git",
15
+ "reference": "387f4f4abf5d99f16be16314c5ab856f81c82f46"
16
  },
17
  "dist": {
18
  "type": "zip",
19
+ "url": "https://api.github.com/repos/scssphp/scssphp/zipball/387f4f4abf5d99f16be16314c5ab856f81c82f46",
20
+ "reference": "387f4f4abf5d99f16be16314c5ab856f81c82f46",
21
  "shasum": ""
22
  },
23
  "require": {
26
  "php": ">=5.6.0"
27
  },
28
  "require-dev": {
29
+ "bamarni/composer-bin-plugin": "^1.4",
30
+ "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4",
31
+ "sass/sass-spec": "*",
32
  "squizlabs/php_codesniffer": "~3.5",
33
+ "symfony/phpunit-bridge": "^5.1",
34
+ "thoughtbot/bourbon": "^7.0",
35
+ "twbs/bootstrap": "~5.0",
36
+ "twbs/bootstrap4": "4.6.1",
37
  "zurb/foundation": "~6.5"
38
  },
39
+ "suggest": {
40
+ "ext-iconv": "Can be used as fallback when ext-mbstring is not available",
41
+ "ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv"
42
+ },
43
  "bin": [
44
  "bin/pscss"
45
  ],
74
  "scss",
75
  "stylesheet"
76
  ],
77
+ "support": {
78
+ "issues": "https://github.com/scssphp/scssphp/issues",
79
+ "source": "https://github.com/scssphp/scssphp/tree/v1.10.2"
80
+ },
81
+ "time": "2022-03-02T21:15:09+00:00"
82
  }
83
  ],
84
  "packages-dev": [],
88
  "prefer-stable": false,
89
  "prefer-lowest": false,
90
  "platform": [],
91
+ "platform-dev": [],
92
+ "plugin-api-version": "2.1.0"
93
  }
v4.0.0/libs/scssphp/vendor/bin/pscss DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env sh
2
-
3
- dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../scssphp/scssphp/bin" && pwd)
4
-
5
- if [ -d /proc/cygdrive ]; then
6
- case $(which php) in
7
- $(readlink -n /proc/cygdrive)/*)
8
- # We are in Cygwin using Windows php, so the path must be translated
9
- dir=$(cygpath -m "$dir");
10
- ;;
11
- esac
12
- fi
13
-
14
- "${dir}/pscss" "$@"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
v4.0.0/libs/scssphp/vendor/composer/ClassLoader.php CHANGED
@@ -37,11 +37,13 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
 
 
45
  // PSR-4
46
  private $prefixLengthsPsr4 = array();
47
  private $prefixDirsPsr4 = array();
@@ -57,10 +59,17 @@ class ClassLoader
57
  private $missingClasses = array();
58
  private $apcuPrefix;
59
 
 
 
 
 
 
 
 
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
@@ -300,6 +309,17 @@ class ClassLoader
300
  public function register($prepend = false)
301
  {
302
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  /**
@@ -308,13 +328,17 @@ class ClassLoader
308
  public function unregister()
309
  {
310
  spl_autoload_unregister(array($this, 'loadClass'));
 
 
 
 
311
  }
312
 
313
  /**
314
  * Loads the given class or interface.
315
  *
316
  * @param string $class The name of the class
317
- * @return bool|null True if loaded, null otherwise
318
  */
319
  public function loadClass($class)
320
  {
@@ -323,6 +347,8 @@ class ClassLoader
323
 
324
  return true;
325
  }
 
 
326
  }
327
 
328
  /**
@@ -367,6 +393,16 @@ class ClassLoader
367
  return $file;
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
370
  private function findFileWithExtension($class, $ext)
371
  {
372
  // PSR-4 lookup
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
45
+ private $vendorDir;
46
+
47
  // PSR-4
48
  private $prefixLengthsPsr4 = array();
49
  private $prefixDirsPsr4 = array();
59
  private $missingClasses = array();
60
  private $apcuPrefix;
61
 
62
+ private static $registeredLoaders = array();
63
+
64
+ public function __construct($vendorDir = null)
65
+ {
66
+ $this->vendorDir = $vendorDir;
67
+ }
68
+
69
  public function getPrefixes()
70
  {
71
  if (!empty($this->prefixesPsr0)) {
72
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
73
  }
74
 
75
  return array();
309
  public function register($prepend = false)
310
  {
311
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
+
313
+ if (null === $this->vendorDir) {
314
+ return;
315
+ }
316
+
317
+ if ($prepend) {
318
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
319
+ } else {
320
+ unset(self::$registeredLoaders[$this->vendorDir]);
321
+ self::$registeredLoaders[$this->vendorDir] = $this;
322
+ }
323
  }
324
 
325
  /**
328
  public function unregister()
329
  {
330
  spl_autoload_unregister(array($this, 'loadClass'));
331
+
332
+ if (null !== $this->vendorDir) {
333
+ unset(self::$registeredLoaders[$this->vendorDir]);
334
+ }
335
  }
336
 
337
  /**
338
  * Loads the given class or interface.
339
  *
340
  * @param string $class The name of the class
341
+ * @return true|null True if loaded, null otherwise
342
  */
343
  public function loadClass($class)
344
  {
347
 
348
  return true;
349
  }
350
+
351
+ return null;
352
  }
353
 
354
  /**
393
  return $file;
394
  }
395
 
396
+ /**
397
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
398
+ *
399
+ * @return self[]
400
+ */
401
+ public static function getRegisteredLoaders()
402
+ {
403
+ return self::$registeredLoaders;
404
+ }
405
+
406
  private function findFileWithExtension($class, $ext)
407
  {
408
  // PSR-4 lookup
v4.0.0/libs/scssphp/vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,337 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+ /**
19
+ * This class is copied in every Composer installed project and available to all
20
+ *
21
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
+ *
23
+ * To require it's presence, you can require `composer-runtime-api ^2.0`
24
+ */
25
+ class InstalledVersions
26
+ {
27
+ private static $installed;
28
+ private static $canGetVendors;
29
+ private static $installedByVendor = array();
30
+
31
+ /**
32
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
33
+ *
34
+ * @return string[]
35
+ * @psalm-return list<string>
36
+ */
37
+ public static function getInstalledPackages()
38
+ {
39
+ $packages = array();
40
+ foreach (self::getInstalled() as $installed) {
41
+ $packages[] = array_keys($installed['versions']);
42
+ }
43
+
44
+ if (1 === \count($packages)) {
45
+ return $packages[0];
46
+ }
47
+
48
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
49
+ }
50
+
51
+ /**
52
+ * Returns a list of all package names with a specific type e.g. 'library'
53
+ *
54
+ * @param string $type
55
+ * @return string[]
56
+ * @psalm-return list<string>
57
+ */
58
+ public static function getInstalledPackagesByType($type)
59
+ {
60
+ $packagesByType = array();
61
+
62
+ foreach (self::getInstalled() as $installed) {
63
+ foreach ($installed['versions'] as $name => $package) {
64
+ if (isset($package['type']) && $package['type'] === $type) {
65
+ $packagesByType[] = $name;
66
+ }
67
+ }
68
+ }
69
+
70
+ return $packagesByType;
71
+ }
72
+
73
+ /**
74
+ * Checks whether the given package is installed
75
+ *
76
+ * This also returns true if the package name is provided or replaced by another package
77
+ *
78
+ * @param string $packageName
79
+ * @param bool $includeDevRequirements
80
+ * @return bool
81
+ */
82
+ public static function isInstalled($packageName, $includeDevRequirements = true)
83
+ {
84
+ foreach (self::getInstalled() as $installed) {
85
+ if (isset($installed['versions'][$packageName])) {
86
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
87
+ }
88
+ }
89
+
90
+ return false;
91
+ }
92
+
93
+ /**
94
+ * Checks whether the given package satisfies a version constraint
95
+ *
96
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
97
+ *
98
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
99
+ *
100
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
101
+ * @param string $packageName
102
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
103
+ * @return bool
104
+ */
105
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
106
+ {
107
+ $constraint = $parser->parseConstraints($constraint);
108
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
109
+
110
+ return $provided->matches($constraint);
111
+ }
112
+
113
+ /**
114
+ * Returns a version constraint representing all the range(s) which are installed for a given package
115
+ *
116
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
117
+ * whether a given version of a package is installed, and not just whether it exists
118
+ *
119
+ * @param string $packageName
120
+ * @return string Version constraint usable with composer/semver
121
+ */
122
+ public static function getVersionRanges($packageName)
123
+ {
124
+ foreach (self::getInstalled() as $installed) {
125
+ if (!isset($installed['versions'][$packageName])) {
126
+ continue;
127
+ }
128
+
129
+ $ranges = array();
130
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
131
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
132
+ }
133
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
134
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
135
+ }
136
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
137
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
138
+ }
139
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
140
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
141
+ }
142
+
143
+ return implode(' || ', $ranges);
144
+ }
145
+
146
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
147
+ }
148
+
149
+ /**
150
+ * @param string $packageName
151
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
152
+ */
153
+ public static function getVersion($packageName)
154
+ {
155
+ foreach (self::getInstalled() as $installed) {
156
+ if (!isset($installed['versions'][$packageName])) {
157
+ continue;
158
+ }
159
+
160
+ if (!isset($installed['versions'][$packageName]['version'])) {
161
+ return null;
162
+ }
163
+
164
+ return $installed['versions'][$packageName]['version'];
165
+ }
166
+
167
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
168
+ }
169
+
170
+ /**
171
+ * @param string $packageName
172
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
173
+ */
174
+ public static function getPrettyVersion($packageName)
175
+ {
176
+ foreach (self::getInstalled() as $installed) {
177
+ if (!isset($installed['versions'][$packageName])) {
178
+ continue;
179
+ }
180
+
181
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
182
+ return null;
183
+ }
184
+
185
+ return $installed['versions'][$packageName]['pretty_version'];
186
+ }
187
+
188
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
189
+ }
190
+
191
+ /**
192
+ * @param string $packageName
193
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
194
+ */
195
+ public static function getReference($packageName)
196
+ {
197
+ foreach (self::getInstalled() as $installed) {
198
+ if (!isset($installed['versions'][$packageName])) {
199
+ continue;
200
+ }
201
+
202
+ if (!isset($installed['versions'][$packageName]['reference'])) {
203
+ return null;
204
+ }
205
+
206
+ return $installed['versions'][$packageName]['reference'];
207
+ }
208
+
209
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
210
+ }
211
+
212
+ /**
213
+ * @param string $packageName
214
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
215
+ */
216
+ public static function getInstallPath($packageName)
217
+ {
218
+ foreach (self::getInstalled() as $installed) {
219
+ if (!isset($installed['versions'][$packageName])) {
220
+ continue;
221
+ }
222
+
223
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
224
+ }
225
+
226
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
227
+ }
228
+
229
+ /**
230
+ * @return array
231
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
232
+ */
233
+ public static function getRootPackage()
234
+ {
235
+ $installed = self::getInstalled();
236
+
237
+ return $installed[0]['root'];
238
+ }
239
+
240
+ /**
241
+ * Returns the raw installed.php data for custom implementations
242
+ *
243
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244
+ * @return array[]
245
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
246
+ */
247
+ public static function getRawData()
248
+ {
249
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
250
+
251
+ if (null === self::$installed) {
252
+ // only require the installed.php file if this file is loaded from its dumped location,
253
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
254
+ if (substr(__DIR__, -8, 1) !== 'C') {
255
+ self::$installed = include __DIR__ . '/installed.php';
256
+ } else {
257
+ self::$installed = array();
258
+ }
259
+ }
260
+
261
+ return self::$installed;
262
+ }
263
+
264
+ /**
265
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
266
+ *
267
+ * @return array[]
268
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
269
+ */
270
+ public static function getAllRawData()
271
+ {
272
+ return self::getInstalled();
273
+ }
274
+
275
+ /**
276
+ * Lets you reload the static array from another file
277
+ *
278
+ * This is only useful for complex integrations in which a project needs to use
279
+ * this class but then also needs to execute another project's autoloader in process,
280
+ * and wants to ensure both projects have access to their version of installed.php.
281
+ *
282
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
283
+ * the data it needs from this class, then call reload() with
284
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
285
+ * the project in which it runs can then also use this class safely, without
286
+ * interference between PHPUnit's dependencies and the project's dependencies.
287
+ *
288
+ * @param array[] $data A vendor/composer/installed.php data set
289
+ * @return void
290
+ *
291
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
292
+ */
293
+ public static function reload($data)
294
+ {
295
+ self::$installed = $data;
296
+ self::$installedByVendor = array();
297
+ }
298
+
299
+ /**
300
+ * @return array[]
301
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
302
+ */
303
+ private static function getInstalled()
304
+ {
305
+ if (null === self::$canGetVendors) {
306
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
307
+ }
308
+
309
+ $installed = array();
310
+
311
+ if (self::$canGetVendors) {
312
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
313
+ if (isset(self::$installedByVendor[$vendorDir])) {
314
+ $installed[] = self::$installedByVendor[$vendorDir];
315
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
316
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
317
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
318
+ self::$installed = $installed[count($installed) - 1];
319
+ }
320
+ }
321
+ }
322
+ }
323
+
324
+ if (null === self::$installed) {
325
+ // only require the installed.php file if this file is loaded from its dumped location,
326
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
327
+ if (substr(__DIR__, -8, 1) !== 'C') {
328
+ self::$installed = require __DIR__ . '/installed.php';
329
+ } else {
330
+ self::$installed = array();
331
+ }
332
+ }
333
+ $installed[] = self::$installed;
334
+
335
+ return $installed;
336
+ }
337
+ }
v4.0.0/libs/scssphp/vendor/composer/autoload_classmap.php CHANGED
@@ -6,4 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
  );
v4.0.0/libs/scssphp/vendor/composer/autoload_real.php CHANGED
@@ -13,19 +13,24 @@ class ComposerAutoloaderInit63d42ceb3ded2b5ffe0e0f4c4066ef1c
13
  }
14
  }
15
 
 
 
 
16
  public static function getLoader()
17
  {
18
  if (null !== self::$loader) {
19
  return self::$loader;
20
  }
21
 
 
 
22
  spl_autoload_register(array('ComposerAutoloaderInit63d42ceb3ded2b5ffe0e0f4c4066ef1c', 'loadClassLoader'), true, true);
23
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
  spl_autoload_unregister(array('ComposerAutoloaderInit63d42ceb3ded2b5ffe0e0f4c4066ef1c', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
- require_once __DIR__ . '/autoload_static.php';
29
 
30
  call_user_func(\Composer\Autoload\ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c::getInitializer($loader));
31
  } else {
13
  }
14
  }
15
 
16
+ /**
17
+ * @return \Composer\Autoload\ClassLoader
18
+ */
19
  public static function getLoader()
20
  {
21
  if (null !== self::$loader) {
22
  return self::$loader;
23
  }
24
 
25
+ require __DIR__ . '/platform_check.php';
26
+
27
  spl_autoload_register(array('ComposerAutoloaderInit63d42ceb3ded2b5ffe0e0f4c4066ef1c', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
  spl_autoload_unregister(array('ComposerAutoloaderInit63d42ceb3ded2b5ffe0e0f4c4066ef1c', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
+ require __DIR__ . '/autoload_static.php';
34
 
35
  call_user_func(\Composer\Autoload\ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c::getInitializer($loader));
36
  } else {
v4.0.0/libs/scssphp/vendor/composer/autoload_static.php CHANGED
@@ -20,11 +20,16 @@ class ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c
20
  ),
21
  );
22
 
 
 
 
 
23
  public static function getInitializer(ClassLoader $loader)
24
  {
25
  return \Closure::bind(function () use ($loader) {
26
  $loader->prefixLengthsPsr4 = ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c::$prefixLengthsPsr4;
27
  $loader->prefixDirsPsr4 = ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c::$prefixDirsPsr4;
 
28
 
29
  }, null, ClassLoader::class);
30
  }
20
  ),
21
  );
22
 
23
+ public static $classMap = array (
24
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
25
+ );
26
+
27
  public static function getInitializer(ClassLoader $loader)
28
  {
29
  return \Closure::bind(function () use ($loader) {
30
  $loader->prefixLengthsPsr4 = ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c::$prefixLengthsPsr4;
31
  $loader->prefixDirsPsr4 = ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c::$prefixDirsPsr4;
32
+ $loader->classMap = ComposerStaticInit63d42ceb3ded2b5ffe0e0f4c4066ef1c::$classMap;
33
 
34
  }, null, ClassLoader::class);
35
  }
v4.0.0/libs/scssphp/vendor/composer/installed.json CHANGED
@@ -1,65 +1,83 @@
1
- [
2
- {
3
- "name": "scssphp/scssphp",
4
- "version": "1.1.0",
5
- "version_normalized": "1.1.0.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/scssphp/scssphp.git",
9
- "reference": "4363ddce8d750f055c436833dd77d83517946532"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/scssphp/scssphp/zipball/4363ddce8d750f055c436833dd77d83517946532",
14
- "reference": "4363ddce8d750f055c436833dd77d83517946532",
15
- "shasum": ""
16
- },
17
- "require": {
18
- "ext-ctype": "*",
19
- "ext-json": "*",
20
- "php": ">=5.6.0"
21
- },
22
- "require-dev": {
23
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3",
24
- "squizlabs/php_codesniffer": "~3.5",
25
- "twbs/bootstrap": "~4.3",
26
- "zurb/foundation": "~6.5"
27
- },
28
- "time": "2020-04-21T15:53:32+00:00",
29
- "bin": [
30
- "bin/pscss"
31
- ],
32
- "type": "library",
33
- "installation-source": "dist",
34
- "autoload": {
35
- "psr-4": {
36
- "ScssPhp\\ScssPhp\\": "src/"
37
- }
38
- },
39
- "notification-url": "https://packagist.org/downloads/",
40
- "license": [
41
- "MIT"
42
- ],
43
- "authors": [
44
- {
45
- "name": "Anthon Pang",
46
- "email": "apang@softwaredevelopment.ca",
47
- "homepage": "https://github.com/robocoder"
48
  },
49
- {
50
- "name": "Cédric Morin",
51
- "email": "cedric@yterium.com",
52
- "homepage": "https://github.com/Cerdic"
53
- }
54
- ],
55
- "description": "scssphp is a compiler for SCSS written in PHP.",
56
- "homepage": "http://scssphp.github.io/scssphp/",
57
- "keywords": [
58
- "css",
59
- "less",
60
- "sass",
61
- "scss",
62
- "stylesheet"
63
- ]
64
- }
65
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "scssphp/scssphp",
5
+ "version": "v1.10.2",
6
+ "version_normalized": "1.10.2.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "https://github.com/scssphp/scssphp.git",
10
+ "reference": "387f4f4abf5d99f16be16314c5ab856f81c82f46"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/scssphp/scssphp/zipball/387f4f4abf5d99f16be16314c5ab856f81c82f46",
15
+ "reference": "387f4f4abf5d99f16be16314c5ab856f81c82f46",
16
+ "shasum": ""
17
+ },
18
+ "require": {
19
+ "ext-ctype": "*",
20
+ "ext-json": "*",
21
+ "php": ">=5.6.0"
22
+ },
23
+ "require-dev": {
24
+ "bamarni/composer-bin-plugin": "^1.4",
25
+ "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4",
26
+ "sass/sass-spec": "*",
27
+ "squizlabs/php_codesniffer": "~3.5",
28
+ "symfony/phpunit-bridge": "^5.1",
29
+ "thoughtbot/bourbon": "^7.0",
30
+ "twbs/bootstrap": "~5.0",
31
+ "twbs/bootstrap4": "4.6.1",
32
+ "zurb/foundation": "~6.5"
33
+ },
34
+ "suggest": {
35
+ "ext-iconv": "Can be used as fallback when ext-mbstring is not available",
36
+ "ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv"
37
+ },
38
+ "time": "2022-03-02T21:15:09+00:00",
39
+ "bin": [
40
+ "bin/pscss"
41
+ ],
42
+ "type": "library",
43
+ "installation-source": "dist",
44
+ "autoload": {
45
+ "psr-4": {
46
+ "ScssPhp\\ScssPhp\\": "src/"
47
+ }
48
+ },
49
+ "notification-url": "https://packagist.org/downloads/",
50
+ "license": [
51
+ "MIT"
52
+ ],
53
+ "authors": [
54
+ {
55
+ "name": "Anthon Pang",
56
+ "email": "apang@softwaredevelopment.ca",
57
+ "homepage": "https://github.com/robocoder"
58
+ },
59
+ {
60
+ "name": "Cédric Morin",
61
+ "email": "cedric@yterium.com",
62
+ "homepage": "https://github.com/Cerdic"
63
+ }
64
+ ],
65
+ "description": "scssphp is a compiler for SCSS written in PHP.",
66
+ "homepage": "http://scssphp.github.io/scssphp/",
67
+ "keywords": [
68
+ "css",
69
+ "less",
70
+ "sass",
71
+ "scss",
72
+ "stylesheet"
73
+ ],
74
+ "support": {
75
+ "issues": "https://github.com/scssphp/scssphp/issues",
76
+ "source": "https://github.com/scssphp/scssphp/tree/v1.10.2"
77
+ },
78
+ "install-path": "../scssphp/scssphp"
79
+ }
80
+ ],
81
+ "dev": true,
82
+ "dev-package-names": []
83
+ }
v4.0.0/libs/scssphp/vendor/composer/installed.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array(
2
+ 'root' => array(
3
+ 'pretty_version' => 'dev-master',
4
+ 'version' => 'dev-master',
5
+ 'type' => 'library',
6
+ 'install_path' => __DIR__ . '/../../',
7
+ 'aliases' => array(),
8
+ 'reference' => '93878f5bdc00aaa000cdaab9278b8b7b2eb5f483',
9
+ 'name' => '__root__',
10
+ 'dev' => true,
11
+ ),
12
+ 'versions' => array(
13
+ '__root__' => array(
14
+ 'pretty_version' => 'dev-master',
15
+ 'version' => 'dev-master',
16
+ 'type' => 'library',
17
+ 'install_path' => __DIR__ . '/../../',
18
+ 'aliases' => array(),
19
+ 'reference' => '93878f5bdc00aaa000cdaab9278b8b7b2eb5f483',
20
+ 'dev_requirement' => false,
21
+ ),
22
+ 'scssphp/scssphp' => array(
23
+ 'pretty_version' => 'v1.10.2',
24
+ 'version' => '1.10.2.0',
25
+ 'type' => 'library',
26
+ 'install_path' => __DIR__ . '/../scssphp/scssphp',
27
+ 'aliases' => array(),
28
+ 'reference' => '387f4f4abf5d99f16be16314c5ab856f81c82f46',
29
+ 'dev_requirement' => false,
30
+ ),
31
+ ),
32
+ );
v4.0.0/libs/scssphp/vendor/composer/platform_check.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // platform_check.php @generated by Composer
4
+
5
+ $issues = array();
6
+
7
+ if (!(PHP_VERSION_ID >= 50600)) {
8
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 5.6.0". You are running ' . PHP_VERSION . '.';
9
+ }
10
+
11
+ if ($issues) {
12
+ if (!headers_sent()) {
13
+ header('HTTP/1.1 500 Internal Server Error');
14
+ }
15
+ if (!ini_get('display_errors')) {
16
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
+ } elseif (!headers_sent()) {
19
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
+ }
21
+ }
22
+ trigger_error(
23
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
+ E_USER_ERROR
25
+ );
26
+ }
v4.0.0/libs/scssphp/vendor/scssphp/scssphp/README.md CHANGED
@@ -1,12 +1,12 @@
1
  # scssphp
2
- ### <http://scssphp.github.io/scssphp>
3
 
4
- [![Build](https://travis-ci.org/scssphp/scssphp.svg?branch=master)](http://travis-ci.org/scssphp/scssphp)
5
  [![License](https://poser.pugx.org/scssphp/scssphp/license)](https://packagist.org/packages/scssphp/scssphp)
6
 
7
  `scssphp` is a compiler for SCSS written in PHP.
8
 
9
- Checkout the homepage, <http://scssphp.github.io/scssphp>, for directions on how to use.
10
 
11
  ## Running Tests
12
 
@@ -23,7 +23,7 @@ There are several tests in the `tests/` directory:
23
  * `FailingTest.php` contains tests reported in Github issues that demonstrate compatibility bugs.
24
  * `InputTest.php` compiles every `.scss` file in the `tests/inputs` directory
25
  then compares to the respective `.css` file in the `tests/outputs` directory.
26
- * `ScssTest.php` extracts (ruby) `scss` tests from the `tests/scss_test.rb` file.
27
 
28
  When changing any of the tests in `tests/inputs`, the tests will most likely
29
  fail because the output has changed. Once you verify that the output is correct
@@ -31,16 +31,41 @@ you can run the following command to rebuild all the tests:
31
 
32
  BUILD=1 vendor/bin/phpunit tests
33
 
34
- This will compile all the tests, and save results into `tests/outputs`.
 
35
 
36
- To enable the `scss` compatibility tests:
37
 
38
- TEST_SCSS_COMPAT=1 vendor/bin/phpunit tests
39
 
40
  ## Coding Standard
41
 
42
- `scssphp` source conforms to [PSR2](http://www.php-fig.org/psr/psr-2/).
43
 
44
  Run the following command from the root directory to check the code for "sniffs".
45
 
46
- vendor/bin/phpcs --standard=PSR2 bin src tests
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # scssphp
2
+ ### <https://scssphp.github.io/scssphp>
3
 
4
+ ![Build](https://github.com/scssphp/scssphp/workflows/CI/badge.svg)
5
  [![License](https://poser.pugx.org/scssphp/scssphp/license)](https://packagist.org/packages/scssphp/scssphp)
6
 
7
  `scssphp` is a compiler for SCSS written in PHP.
8
 
9
+ Checkout the homepage, <https://scssphp.github.io/scssphp>, for directions on how to use.
10
 
11
  ## Running Tests
12
 
23
  * `FailingTest.php` contains tests reported in Github issues that demonstrate compatibility bugs.
24
  * `InputTest.php` compiles every `.scss` file in the `tests/inputs` directory
25
  then compares to the respective `.css` file in the `tests/outputs` directory.
26
+ * `SassSpecTest.php` extracts tests from the `sass/sass-spec` repository.
27
 
28
  When changing any of the tests in `tests/inputs`, the tests will most likely
29
  fail because the output has changed. Once you verify that the output is correct
31
 
32
  BUILD=1 vendor/bin/phpunit tests
33
 
34
+ This will compile all the tests, and save results into `tests/outputs`. It also
35
+ updates the list of excluded specs from sass-spec.
36
 
37
+ To enable the full `sass-spec` compatibility tests:
38
 
39
+ TEST_SASS_SPEC=1 vendor/bin/phpunit tests
40
 
41
  ## Coding Standard
42
 
43
+ `scssphp` source conforms to [PSR12](https://www.php-fig.org/psr/psr-12/).
44
 
45
  Run the following command from the root directory to check the code for "sniffs".
46
 
47
+ vendor/bin/phpcs --standard=PSR12 --extensions=php bin src tests *.php
48
+
49
+ ## Static Analysis
50
+
51
+ `scssphp` uses [phpstan](https://phpstan.org/) for static analysis.
52
+
53
+ Run the following command from the root directory to analyse the codebase:
54
+
55
+ make phpstan
56
+
57
+ As most of the codebase is composed of legacy code which cannot be type-checked
58
+ fully, the setup contains a baseline file with all errors we want to ignore. In
59
+ particular, we ignore all errors related to not specifying the types inside arrays
60
+ when these arrays correspond to the representation of Sass values and Sass AST nodes
61
+ in the parser and compiler.
62
+ When contributing, the proper process to deal with static analysis is the following:
63
+
64
+ 1. Make your change in the codebase
65
+ 2. Run `make phpstan`
66
+ 3. Fix errors reported by phpstan when possible
67
+ 4. Repeat step 2 and 3 until nothing gets fixed anymore at step 3
68
+ 5. Run `make phpstan-baseline` to regenerate the phpstan baseline
69
+
70
+ Additions to the baseline will be reviewed to avoid ignoring errors that should have
71
+ been fixed.
v4.0.0/libs/scssphp/vendor/scssphp/scssphp/bin/pscss CHANGED
@@ -1,5 +1,6 @@
1
  #!/usr/bin/env php
2
  <?php
 
3
  /**
4
  * SCSSPHP
5
  *
@@ -19,26 +20,26 @@ if (version_compare(PHP_VERSION, '5.6') < 0) {
19
  include __DIR__ . '/../scss.inc.php';
20
 
21
  use ScssPhp\ScssPhp\Compiler;
 
 
22
  use ScssPhp\ScssPhp\Parser;
23
  use ScssPhp\ScssPhp\Version;
24
 
25
  $style = null;
26
- $loadPaths = null;
27
- $precision = null;
28
  $dumpTree = false;
29
  $inputFile = null;
30
  $changeDir = false;
31
- $debugInfo = false;
32
- $lineNumbers = false;
33
- $ignoreErrors = false;
34
  $encoding = false;
35
  $sourceMap = false;
 
 
36
 
37
  /**
38
  * Parse argument
39
  *
40
- * @param integer $i
41
- * @param array $options
42
  *
43
  * @return string|null
44
  */
@@ -61,25 +62,29 @@ function parseArgument(&$i, $options) {
61
  }
62
  }
63
 
 
 
64
  for ($i = 1; $i < $argc; $i++) {
65
  if ($argv[$i] === '-?' || $argv[$i] === '-h' || $argv[$i] === '--help') {
66
  $exe = $argv[0];
67
 
68
  $HELP = <<<EOT
69
- Usage: $exe [options] [input-file]
70
 
71
  Options include:
72
 
73
  --help Show this message [-h, -?]
74
- --continue-on-error Continue compilation (as best as possible) when error encountered
75
- --debug-info Annotate selectors with CSS referring to the source file and line number [-g]
76
- --dump-tree Dump formatted parse tree [-T]
77
  --iso8859-1 Use iso8859-1 encoding instead of default utf-8
78
- --line-numbers Annotate selectors with comments referring to the source file and line number [--line-comments]
79
  --load-path=PATH Set import path [-I]
80
- --precision=N Set decimal number precision (default 10) [-p]
81
  --sourcemap Create source map file
82
- --style=FORMAT Set the output format (compact, compressed, crunched, expanded, or nested) [-s, -t]
 
 
83
  --version Print the version [-v]
84
 
85
  EOT;
@@ -90,13 +95,15 @@ EOT;
90
  exit(Version::VERSION . "\n");
91
  }
92
 
 
93
  if ($argv[$i] === '--continue-on-error') {
94
- $ignoreErrors = true;
95
  continue;
96
  }
97
 
 
98
  if ($argv[$i] === '-g' || $argv[$i] === '--debug-info') {
99
- $debugInfo = true;
100
  continue;
101
  }
102
 
@@ -105,8 +112,9 @@ EOT;
105
  continue;
106
  }
107
 
 
108
  if ($argv[$i] === '--line-numbers' || $argv[$i] === '--line-comments') {
109
- $lineNumbers = true;
110
  continue;
111
  }
112
 
@@ -115,6 +123,16 @@ EOT;
115
  continue;
116
  }
117
 
 
 
 
 
 
 
 
 
 
 
118
  if ($argv[$i] === '-T' || $argv[$i] === '--dump-tree') {
119
  $dumpTree = true;
120
  continue;
@@ -130,34 +148,25 @@ EOT;
130
  $value = parseArgument($i, array('-I', '--load-path'));
131
 
132
  if (isset($value)) {
133
- $loadPaths = $value;
134
  continue;
135
  }
136
 
 
137
  $value = parseArgument($i, array('-p', '--precision'));
138
 
139
  if (isset($value)) {
140
- $precision = $value;
141
  continue;
142
  }
143
 
144
- if (file_exists($argv[$i])) {
145
- $inputFile = $argv[$i];
146
- continue;
147
- }
148
  }
149
 
150
 
151
- if ($inputFile) {
 
152
  $data = file_get_contents($inputFile);
153
-
154
- $newWorkingDir = dirname(realpath($inputFile));
155
- $oldWorkingDir = getcwd();
156
-
157
- if ($oldWorkingDir !== $newWorkingDir) {
158
- $changeDir = chdir($newWorkingDir);
159
- $inputFile = basename($inputFile);
160
- }
161
  } else {
162
  $data = '';
163
 
@@ -171,45 +180,65 @@ if ($dumpTree) {
171
 
172
  print_r(json_decode(json_encode($parser->parse($data)), true));
173
 
 
 
174
  exit();
175
  }
176
 
177
  $scss = new Compiler();
178
 
179
- if ($debugInfo) {
180
- $scss->setLineNumberStyle(Compiler::DEBUG_INFO);
181
- }
182
-
183
- if ($lineNumbers) {
184
- $scss->setLineNumberStyle(Compiler::LINE_COMMENTS);
185
- }
186
-
187
- if ($ignoreErrors) {
188
- $scss->setIgnoreErrors($ignoreErrors);
189
- }
190
-
191
  if ($loadPaths) {
192
- $scss->setImportPaths(explode(PATH_SEPARATOR, $loadPaths));
193
- }
194
-
195
- if ($precision) {
196
- $scss->setNumberPrecision($precision);
197
  }
198
 
199
  if ($style) {
200
- $scss->setFormatter('ScssPhp\\ScssPhp\\Formatter\\' . ucfirst($style));
 
 
 
 
 
201
  }
202
 
 
 
 
203
  if ($sourceMap) {
204
- $scss->setSourceMap(Compiler::SOURCE_MAP_INLINE);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  }
206
 
207
  if ($encoding) {
208
  $scss->setEncoding($encoding);
209
  }
210
 
211
- echo $scss->compile($data, $inputFile);
 
 
 
 
 
212
 
213
- if ($changeDir) {
214
- chdir($oldWorkingDir);
 
 
 
 
 
 
215
  }
1
  #!/usr/bin/env php
2
  <?php
3
+
4
  /**
5
  * SCSSPHP
6
  *
20
  include __DIR__ . '/../scss.inc.php';
21
 
22
  use ScssPhp\ScssPhp\Compiler;
23
+ use ScssPhp\ScssPhp\Exception\SassException;
24
+ use ScssPhp\ScssPhp\OutputStyle;
25
  use ScssPhp\ScssPhp\Parser;
26
  use ScssPhp\ScssPhp\Version;
27
 
28
  $style = null;
29
+ $loadPaths = [];
 
30
  $dumpTree = false;
31
  $inputFile = null;
32
  $changeDir = false;
 
 
 
33
  $encoding = false;
34
  $sourceMap = false;
35
+ $embedSources = false;
36
+ $embedSourceMap = false;
37
 
38
  /**
39
  * Parse argument
40
  *
41
+ * @param int $i
42
+ * @param string[] $options
43
  *
44
  * @return string|null
45
  */
62
  }
63
  }
64
 
65
+ $arguments = [];
66
+
67
  for ($i = 1; $i < $argc; $i++) {
68
  if ($argv[$i] === '-?' || $argv[$i] === '-h' || $argv[$i] === '--help') {
69
  $exe = $argv[0];
70
 
71
  $HELP = <<<EOT
72
+ Usage: $exe [options] [input-file] [output-file]
73
 
74
  Options include:
75
 
76
  --help Show this message [-h, -?]
77
+ --continue-on-error [deprecated] Ignored
78
+ --debug-info [deprecated] Ignored [-g]
79
+ --dump-tree [deprecated] Dump formatted parse tree [-T]
80
  --iso8859-1 Use iso8859-1 encoding instead of default utf-8
81
+ --line-numbers [deprecated] Ignored [--line-comments]
82
  --load-path=PATH Set import path [-I]
83
+ --precision=N [deprecated] Ignored. (default 10) [-p]
84
  --sourcemap Create source map file
85
+ --embed-sources Embed source file contents in source maps
86
+ --embed-source-map Embed the source map contents in CSS (default if writing to stdout)
87
+ --style=FORMAT Set the output style (compressed or expanded) [-s, -t]
88
  --version Print the version [-v]
89
 
90
  EOT;
95
  exit(Version::VERSION . "\n");
96
  }
97
 
98
+ // Keep parsing --continue-on-error to avoid BC breaks for scripts using it
99
  if ($argv[$i] === '--continue-on-error') {
100
+ // TODO report it as a warning ?
101
  continue;
102
  }
103
 
104
+ // Keep parsing it to avoid BC breaks for scripts using it
105
  if ($argv[$i] === '-g' || $argv[$i] === '--debug-info') {
106
+ // TODO report it as a warning ?
107
  continue;
108
  }
109
 
112
  continue;
113
  }
114
 
115
+ // Keep parsing it to avoid BC breaks for scripts using it
116
  if ($argv[$i] === '--line-numbers' || $argv[$i] === '--line-comments') {
117
+ // TODO report it as a warning ?
118
  continue;
119
  }
120
 
123
  continue;
124
  }
125
 
126
+ if ($argv[$i] === '--embed-sources') {
127
+ $embedSources = true;
128
+ continue;
129
+ }
130
+
131
+ if ($argv[$i] === '--embed-source-map') {
132
+ $embedSourceMap = true;
133
+ continue;
134
+ }
135
+
136
  if ($argv[$i] === '-T' || $argv[$i] === '--dump-tree') {
137
  $dumpTree = true;
138
  continue;
148
  $value = parseArgument($i, array('-I', '--load-path'));
149
 
150
  if (isset($value)) {
151
+ $loadPaths[] = $value;
152
  continue;
153
  }
154
 
155
+ // Keep parsing --precision to avoid BC breaks for scripts using it
156
  $value = parseArgument($i, array('-p', '--precision'));
157
 
158
  if (isset($value)) {
159
+ // TODO report it as a warning ?
160
  continue;
161
  }
162
 
163
+ $arguments[] = $argv[$i];
 
 
 
164
  }
165
 
166
 
167
+ if (isset($arguments[0]) && file_exists($arguments[0])) {
168
+ $inputFile = $arguments[0];
169
  $data = file_get_contents($inputFile);
 
 
 
 
 
 
 
 
170
  } else {
171
  $data = '';
172
 
180
 
181
  print_r(json_decode(json_encode($parser->parse($data)), true));
182
 
183
+ fwrite(STDERR, 'Warning: the --dump-tree option is deprecated. Use proper debugging tools instead.');
184
+
185
  exit();
186
  }
187
 
188
  $scss = new Compiler();
189
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  if ($loadPaths) {
191
+ $scss->setImportPaths($loadPaths);
 
 
 
 
192
  }
193
 
194
  if ($style) {
195
+ if ($style === OutputStyle::COMPRESSED || $style === OutputStyle::EXPANDED) {
196
+ $scss->setOutputStyle($style);
197
+ } else {
198
+ fwrite(STDERR, "WARNING: the $style style is deprecated.\n");
199
+ $scss->setFormatter('ScssPhp\\ScssPhp\\Formatter\\' . ucfirst($style));
200
+ }
201
  }
202
 
203
+ $outputFile = isset($arguments[1]) ? $arguments[1] : null;
204
+ $sourceMapFile = null;
205
+
206
  if ($sourceMap) {
207
+ $sourceMapOptions = array(
208
+ 'outputSourceFiles' => $embedSources,
209
+ );
210
+ if ($embedSourceMap || $outputFile === null) {
211
+ $scss->setSourceMap(Compiler::SOURCE_MAP_INLINE);
212
+ } else {
213
+ $sourceMapFile = $outputFile . '.map';
214
+ $sourceMapOptions['sourceMapWriteTo'] = $sourceMapFile;
215
+ $sourceMapOptions['sourceMapURL'] = basename($sourceMapFile);
216
+ $sourceMapOptions['sourceMapBasepath'] = getcwd();
217
+ $sourceMapOptions['sourceMapFilename'] = basename($outputFile);
218
+
219
+ $scss->setSourceMap(Compiler::SOURCE_MAP_FILE);
220
+ }
221
+
222
+ $scss->setSourceMapOptions($sourceMapOptions);
223
  }
224
 
225
  if ($encoding) {
226
  $scss->setEncoding($encoding);
227
  }
228
 
229
+ try {
230
+ $result = $scss->compileString($data, $inputFile);
231
+ } catch (SassException $e) {
232
+ fwrite(STDERR, 'Error: '.$e->getMessage()."\n");
233
+ exit(1);
234
+ }
235
 
236
+ if ($outputFile) {
237
+ file_put_contents($outputFile, $result->getCss());
238
+
239
+ if ($sourceMapFile !== null && $result->getSourceMap() !== null) {
240
+ file_put_contents($sourceMapFile, $result->getSourceMap());
241
+ }
242
+ } else {
243
+ echo $result->getCss();
244
  }
v4.0.0/libs/scssphp/vendor/scssphp/scssphp/composer.json CHANGED
@@ -30,22 +30,82 @@
30
  "ext-json": "*",
31
  "ext-ctype": "*"
32
  },
 
 
 
 
33
  "require-dev": {
 
 
 
34
  "squizlabs/php_codesniffer": "~3.5",
35
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3",
36
- "twbs/bootstrap": "~4.3",
 
 
37
  "zurb/foundation": "~6.5"
38
  },
39
- "minimum-stability": "dev",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  "bin": ["bin/pscss"],
41
- "archive": {
42
- "exclude": [
43
- "/Makefile",
44
- "/.gitattributes",
45
- "/.gitignore",
46
- "/.travis.yml",
47
- "/phpunit.xml.dist",
48
- "/tests"
49
- ]
50
  }
51
  }
30
  "ext-json": "*",
31
  "ext-ctype": "*"
32
  },
33
+ "suggest": {
34
+ "ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv",
35
+ "ext-iconv": "Can be used as fallback when ext-mbstring is not available"
36
+ },
37
  "require-dev": {
38
+ "bamarni/composer-bin-plugin": "^1.4",
39
+ "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4",
40
+ "sass/sass-spec": "*",
41
  "squizlabs/php_codesniffer": "~3.5",
42
+ "symfony/phpunit-bridge": "^5.1",
43
+ "thoughtbot/bourbon": "^7.0",
44
+ "twbs/bootstrap": "~5.0",
45
+ "twbs/bootstrap4": "4.6.1",
46
  "zurb/foundation": "~6.5"
47
  },
48
+ "repositories": [
49
+ {
50
+ "type": "package",
51
+ "package": {
52
+ "name": "sass/sass-spec",
53
+ "version": "2022.02.24",
54
+ "source": {
55
+ "type": "git",
56
+ "url": "https://github.com/sass/sass-spec.git",
57
+ "reference": "f41b9bfb9a3013392f2136c79f7f3356f15fb8ba"
58
+ },
59
+ "dist": {
60
+ "type": "zip",
61
+ "url": "https://api.github.com/repos/sass/sass-spec/zipball/f41b9bfb9a3013392f2136c79f7f3356f15fb8ba",
62
+ "reference": "f41b9bfb9a3013392f2136c79f7f3356f15fb8ba",
63
+ "shasum": ""
64
+ }
65
+ }
66
+ },
67
+ {
68
+ "type": "package",
69
+ "package": {
70
+ "name": "thoughtbot/bourbon",
71
+ "version": "v7.0.0",
72
+ "source": {
73
+ "type": "git",
74
+ "url": "https://github.com/thoughtbot/bourbon.git",
75
+ "reference": "fbe338ee6807e7f7aa996d82c8a16f248bb149b3"
76
+ },
77
+ "dist": {
78
+ "type": "zip",
79
+ "url": "https://api.github.com/repos/thoughtbot/bourbon/zipball/fbe338ee6807e7f7aa996d82c8a16f248bb149b3",
80
+ "reference": "fbe338ee6807e7f7aa996d82c8a16f248bb149b3",
81
+ "shasum": ""
82
+ }
83
+ }
84
+ },
85
+ {
86
+ "type": "package",
87
+ "package": {
88
+ "name": "twbs/bootstrap4",
89
+ "version": "v4.6.1",
90
+ "source": {
91
+ "type": "git",
92
+ "url": "https://github.com/twbs/bootstrap.git",
93
+ "reference": "043a03c95a2ad6738f85b65e53b9dbdfb03b8d10"
94
+ },
95
+ "dist": {
96
+ "type": "zip",
97
+ "url": "https://api.github.com/repos/twbs/bootstrap/zipball/043a03c95a2ad6738f85b65e53b9dbdfb03b8d10",
98
+ "reference": "043a03c95a2ad6738f85b65e53b9dbdfb03b8d10",
99
+ "shasum": ""
100
+ }
101
+ }
102
+ }
103
+ ],
104
  "bin": ["bin/pscss"],
105
+ "config": {
106
+ "sort-packages": true,
107
+ "allow-plugins": {
108
+ "bamarni/composer-bin-plugin": true
109
+ }
 
 
 
 
110
  }
111
  }
v4.0.0/libs/scssphp/vendor/scssphp/scssphp/phpcs.xml.dist ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset name="PSR12 (adapted for PHP 5.6+)">
3
+ <rule ref="PSR12">
4
+ <!-- Ignore this PHP 7.1+ sniff as long as we support PHP 5.6+ -->
5
+ <exclude name="PSR12.Properties.ConstantVisibility.NotFound"/>
6
+
7
+ <!-- This sniff doesn't ignore comment blocks -->
8
+ <!--
9
+ <exclude name="Generic.Files.LineLength"/>
10
+ -->
11
+ </rule>
12
+ </ruleset>
v4.0.0/libs/scssphp/vendor/scssphp/scssphp/scss.inc.php CHANGED
@@ -1,34 +1,21 @@
1
  <?php
 
2
  if (version_compare(PHP_VERSION, '5.6') < 0) {
3
  throw new \Exception('scssphp requires PHP 5.6 or above');
4
  }
5
 
6
- if (! class_exists('ScssPhp\ScssPhp\Version', false)) {
7
- include_once __DIR__ . '/src/Base/Range.php';
8
- include_once __DIR__ . '/src/Block.php';
9
- include_once __DIR__ . '/src/Cache.php';
10
- include_once __DIR__ . '/src/Colors.php';
11
- include_once __DIR__ . '/src/Compiler.php';
12
- include_once __DIR__ . '/src/Compiler/Environment.php';
13
- include_once __DIR__ . '/src/Exception/CompilerException.php';
14
- include_once __DIR__ . '/src/Exception/ParserException.php';
15
- include_once __DIR__ . '/src/Exception/RangeException.php';
16
- include_once __DIR__ . '/src/Exception/ServerException.php';
17
- include_once __DIR__ . '/src/Formatter.php';
18
- include_once __DIR__ . '/src/Formatter/Compact.php';
19
- include_once __DIR__ . '/src/Formatter/Compressed.php';
20
- include_once __DIR__ . '/src/Formatter/Crunched.php';
21
- include_once __DIR__ . '/src/Formatter/Debug.php';
22
- include_once __DIR__ . '/src/Formatter/Expanded.php';
23
- include_once __DIR__ . '/src/Formatter/Nested.php';
24
- include_once __DIR__ . '/src/Formatter/OutputBlock.php';
25
- include_once __DIR__ . '/src/Node.php';
26
- include_once __DIR__ . '/src/Node/Number.php';
27
- include_once __DIR__ . '/src/Parser.php';
28
- include_once __DIR__ . '/src/SourceMap/Base64.php';
29
- include_once __DIR__ . '/src/SourceMap/Base64VLQ.php';
30
- include_once __DIR__ . '/src/SourceMap/SourceMapGenerator.php';
31
- include_once __DIR__ . '/src/Type.php';
32
- include_once __DIR__ . '/src/Util.php';
33
- include_once __DIR__ . '/src/Version.php';
34
  }
1
  <?php
2
+
3
  if (version_compare(PHP_VERSION, '5.6') < 0) {
4
  throw new \Exception('scssphp requires PHP 5.6 or above');
5
  }
6
 
7
+ if (! class_exists('ScssPhp\ScssPhp\Version')) {
8
+ spl_autoload_register(function ($class) {
9
+ if (0 !== strpos($class, 'ScssPhp\ScssPhp\\')) {
10
+ // Not a ScssPhp class
11
+ return;
12
+ }
13
+
14
+