Plugin Directory

Changeset 2471073


Ignore:
Timestamp:
02/08/2021 08:00:32 PM (5 years ago)
Author:
iamfriendly
Message:

Update to version 0.1.7 from GitHub

Location:
content-visibility
Files:
6 added
20 edited
1 copied

Legend:

Unmodified
Added
Removed
  • content-visibility/tags/0.1.7/build/index.asset.php

    r2450785 r2471073  
    1 <?php return array('dependencies' => array('wp-blockEditor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-plugins', 'wp-polyfill'), 'version' => '73805e04464a42880c999de34c92cf2b');
     1<?php return array('dependencies' => array('react', 'wp-blockEditor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-plugins', 'wp-polyfill'), 'version' => '0447464b24d62159bb7ca40696afd5f3');
  • content-visibility/tags/0.1.7/build/index.css

    r2450785 r2471073  
    135135  width: 100%; }
    136136
     137/*
     138    Multi-select component
     139    ----------------------   
     140*/
     141.content-visibility-multi-select {
     142  width: 100%;
     143  margin: 1rem 0 0 0; }
     144
     145/*
     146    Remove horizontal scrolling, artifact of weird padding on main component.
     147*/
     148.content-visibility-multi-select .panel-content {
     149  overflow-x: hidden; }
     150
     151/*
     152    Ensure each of the items fill the dropdown and have space to make more readable.
     153*/
     154.content-visibility-multi-select-item {
     155  width: 100%; }
     156
     157.content-visibility-multi-select .select-panel label {
     158  max-width: none;
     159  margin-right: 0;
     160  padding: 0.7rem 0.7rem 0; }
     161
     162/*
     163    Don't need background colour change on hover, not WordPress-y.
     164*/
     165.content-visibility-multi-select .select-panel label:hover,
     166.content-visibility-multi-select .select-panel label:focus,
     167.content-visibility-multi-select .select-panel label.selected {
     168  background: transparent; }
     169
     170/*
     171    Give ourselves some breathing room with the main list items. Leaves the 'select all' standing alone at the top.
     172*/
     173.content-visibility-multi-select .select-panel ul {
     174  padding: 0.7rem 0; }
     175
     176.content-visibility-multi-select input[type="checkbox"] {
     177  margin-right: 0.5rem; }
     178
     179/*
     180    Make each item a bit more uniform, ensures horiz alignment with icons.
     181*/
     182.item-renderer.content-visibility-multi-select-item > span {
     183  height: 20px;
     184  display: inline-block; }
     185
     186/*
     187    Give the search input some breathing room.
     188*/
     189.content-visibility-multi-select .select-panel > div {
     190  margin-top: 0.25rem;
     191  padding: 0 0.25rem; }
     192
     193/*
     194    Make the icons a little less harsh
     195*/
     196.content-visibility-multi-select .content-visibility-multi-select-item .dashicon {
     197  opacity: 0.5; }
     198
     199/*
     200    Popover content toggle buttons. Make sure they can handle long values as someone may
     201    select multiple options. Give max-width to ensure the button's icon is inline.
     202    min-width ensures the initial button's value doesn't wrap (i.e. when it's short)
     203*/
     204.components-button.is-secondary.content-visibility-special-page-inserter-toggle {
     205  white-space: break-spaces;
     206  max-width: 85%;
     207  min-width: 190px;
     208  font-size: 12px;
     209  line-height: 1.6; }
     210
     211/*
     212    If someone has selected special pages, then we make it less like a link.
     213*/
     214.components-button.is-secondary.content-visibility-special-page-inserter-toggle.has-items {
     215  text-decoration: none;
     216  line-height: 1.6;
     217  text-transform: capitalize; }
     218
     219/*
     220    The 'Set Selected' button
     221*/
     222.components-button.content-visibility-submit-special-pages {
     223  margin-top: 1rem;
     224  margin-bottom: 1rem; }
     225
     226/*
     227    Special Page Help Toggle
     228*/
     229.content-visibility-help-text .content-visibility-special-page-help-instructions-toggle.is-small {
     230  font-size: 12px;
     231  margin-top: 1rem; }
     232
     233.content-visibility-special-page-help-instructions-popover .components-popover__content {
     234  padding: 1rem;
     235  width: 23rem;
     236  height: 30rem !important; }
     237
     238.content-visibility-control-panel .special-page-help-instructions-button {
     239  text-align: right;
     240  margin-top: 1rem;
     241  margin-bottom: 0; }
     242
     243.content-visibility-control-panel .special-page-help-instructions-button .content-visibility-special-page-help-instructions-toggle {
     244  margin-left: 0;
     245  margin-right: 0;
     246  padding-left: 3px; }
     247
     248.content-visibility-control-panel .special-page-help-instructions-button .dashicon {
     249  position: relative;
     250  top: 3px;
     251  color: #007cba; }
     252
     253.content-visibility-submit-special-pages-button-container {
     254  text-align: right;
     255  margin-top: 0; }
     256
     257/*
     258    Special Page Help Popover
     259*/
     260.content-visibility-special-page-help-instructions-popover span {
     261  color: black;
     262  font-weight: 600; }
     263
     264/* Special Page Close Button */
     265.content-visibility-close-popover {
     266  position: absolute;
     267  top: -2rem;
     268  right: -1rem; }
     269
     270/*
     271    Special Page Panel
     272*/
     273/* Make sure each inserter is its own row */
     274.components-panel__row.content-visibility-page-inserter-panel-row {
     275  flex-direction: column; }
     276
     277.content-visibility-special-page-inserter {
     278  margin-top: 1rem; }
     279
     280/* Align the icon for each inserter a little neater */
     281.content-visibility-special-page-inserter .dashicon {
     282  position: relative;
     283  top: 4px;
     284  opacity: 0.6; }
     285
    137286
    138287/*# sourceMappingURL=index.css.map*/
  • content-visibility/tags/0.1.7/build/index.css.map

    r2450785 r2471073  
    1 {"version":3,"sources":["webpack:///editor.scss"],"names":[],"mappings":"AAAA;;;;;;;CAOC;AACD;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,eAAe;EACf,eAAe,EAAE;;AAEnB;EACE,UAAU;EACV,iBAAiB;EACjB,qBAAqB,EAAE;;AAEzB;;CAEC;AACD;EACE,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;EACE,WAAW;EACX,cAAc;EACd,WAAW;EACX,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,2BAA2B,EAAE;;AAE/B;EACE,gBAAgB,EAAE;;AAEpB;EACE,iBAAiB,EAAE;;AAErB;;CAEC;AACD;EACE,yBAAyB;EACzB,kBAAkB;EAClB,mBAAmB;EACnB,WAAW,EAAE;;AAEf;EACE,gCAAgC,EAAE;;AAEpC;;CAEC;AACD;EACE,YAAY,EAAE;;AAEhB;EACE,YAAY,EAAE;;AAEhB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;EACE,kBAAkB,EAAE;;AAEtB;EACE,gBAAgB,EAAE;;AAEpB;;;;CAIC;AACD;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,oWAAoW,EAAE;;AAExW;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,ofAAof,EAAE;;AAExf;;CAEC;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,WAAW;EACX,WAAW;EACX,WAAW,EAAE","file":"index.css","sourcesContent":["/*\n* Styles for the Content Visibility WordPress plugin by Rich Tape.\n*\n* This file provides the core styling for the main Content Visibility Plugin. We mostly\n* use native WordPress control components, and rely on their styling to make this plugin\n* feel native to WordPress. However, there are some tweaks needed as we're using components\n* in ways that WordPress doesn't use yet - and hence doesn't provide styling affordances for.\n*/\n/*\n    Ensure our slots for add-ons are block.\n*/\n.content-visibility-controls .content-visibility-extra-controls {\n  display: block; }\n\n/*\n    Give the Rules Enabled toggle a little more breathing room.\n*/\n.content-visibility-controls .content-visibility-rules-enabled .components-toggle-control {\n  margin: 1rem 0; }\n\n/*\n    Make the Show/Hidden radio buttons sit next to each other...\n*/\n.content-visibility-controls .components-base-control__label {\n  max-width: none;\n  margin-top: 1em; }\n\n.content-visibility-controls .components-radio-control__option {\n  width: 50%;\n  margin: 0.5em 0 0;\n  display: inline-block; }\n\n/*\n    ...But not for User Roles\n*/\n.content-visibility-controls .content-visibility-user-role-control .components-radio-control__option {\n  width: 100%; }\n\n/*\n    User Auth controls, with the help text, look weird due to flex.\n*/\n.content-visibility-control-panel.content-visibility-user-authenticated-controls .components-panel__row {\n  display: block; }\n\n.content-visibility-user-authenticated-control {\n  width: 100%;\n  display: block;\n  float: none;\n  clear: both; }\n\n/*\n    Make the shown/not shown control stand out a little\n*/\n.content-visibility-displayed-control .components-base-control.components-radio-control {\n  margin-bottom: 0 !important; }\n\n.content-visibility-displayed-control .components-base-control.components-radio-control .components-base-control__field {\n  margin-bottom: 0; }\n\n.content-visibility-displayed-control .components-base-control__field .components-radio-control__option:last-of-type {\n  text-align: right; }\n\n/*\n    Styling for the rule panels\n*/\n.content-visibility-controls.is-opened .content-visibility-control-panel {\n  border: 1px solid #e2e4e7;\n  margin-bottom: 1em;\n  background: #fcfcfc;\n  width: 100%; }\n\n.content-visibility-controls.is-opened .content-visibility-control-panel.is-opened .components-panel__body-toggle {\n  border-bottom: 1px solid #e2e4e7; }\n\n/*\n    When the rules are disabled (default) we lower opacity of controls\n*/\n.content-visibility-controls-container.hide-controls {\n  opacity: 0.2; }\n\n.components-disabled {\n  opacity: 0.5; }\n\n/*\n    Tidy up margins for user auth\n*/\n.content-visibility-user-authenticated-controls .components-panel__row .content-visibility-user-authenticated-control {\n  margin-bottom: 0; }\n\n/*\n    User roles have a massive margin, reduce that\n*/\n.content-visibility-user-role-controls .components-panel__row ul {\n  margin-bottom: 0; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control {\n  margin-bottom: 5px; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control:last-of-type {\n  margin-bottom: 0; }\n\n/*\n    When a block has rules enabled, we style it to show it has rules. Looks a bit weird that we have two\n    rules almost identical. But the BlockListBlock component only accepts one className so this is how it has to be.\n    Different icons used for 'shown' or 'hidden' rules.\n*/\n.wp-admin .wp-block.content-visibility-rules-enabled-shown:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle></svg>'); }\n\n.wp-admin .wp-block.content-visibility-rules-enabled-hidden:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye-off\"><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line></svg>'); }\n\n/*\n    Help text generic styling. This is to make it look like a WordPress hint.\n*/\n.content-visibility-controls-container .content-visibility-help-text {\n  margin: 1rem 0 0;\n  font-size: 12px;\n  font-style: normal;\n  color: #757575;\n  clear: both;\n  float: none;\n  width: 100%; }\n"],"sourceRoot":""}
     1{"version":3,"sources":["webpack:///editor.scss"],"names":[],"mappings":"AAAA;;;;;;;CAOC;AACD;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,eAAe;EACf,eAAe,EAAE;;AAEnB;EACE,UAAU;EACV,iBAAiB;EACjB,qBAAqB,EAAE;;AAEzB;;CAEC;AACD;EACE,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;EACE,WAAW;EACX,cAAc;EACd,WAAW;EACX,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,2BAA2B,EAAE;;AAE/B;EACE,gBAAgB,EAAE;;AAEpB;EACE,iBAAiB,EAAE;;AAErB;;CAEC;AACD;EACE,yBAAyB;EACzB,kBAAkB;EAClB,mBAAmB;EACnB,WAAW,EAAE;;AAEf;EACE,gCAAgC,EAAE;;AAEpC;;CAEC;AACD;EACE,YAAY,EAAE;;AAEhB;EACE,YAAY,EAAE;;AAEhB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;EACE,kBAAkB,EAAE;;AAEtB;EACE,gBAAgB,EAAE;;AAEpB;;;;CAIC;AACD;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,oWAAoW,EAAE;;AAExW;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,ofAAof,EAAE;;AAExf;;CAEC;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,WAAW;EACX,WAAW;EACX,WAAW,EAAE;;AAEf;;;CAGC;AACD;EACE,WAAW;EACX,kBAAkB,EAAE;;AAEtB;;CAEC;AACD;EACE,kBAAkB,EAAE;;AAEtB;;CAEC;AACD;EACE,WAAW,EAAE;;AAEf;EACE,eAAe;EACf,eAAe;EACf,wBAAwB,EAAE;;AAE5B;;CAEC;AACD;;;EAGE,uBAAuB,EAAE;;AAE3B;;CAEC;AACD;EACE,iBAAiB,EAAE;;AAErB;EACE,oBAAoB,EAAE;;AAExB;;CAEC;AACD;EACE,YAAY;EACZ,qBAAqB,EAAE;;AAEzB;;CAEC;AACD;EACE,mBAAmB;EACnB,kBAAkB,EAAE;;AAEtB;;CAEC;AACD;EACE,YAAY,EAAE;;AAEhB;;;;CAIC;AACD;EACE,yBAAyB;EACzB,cAAc;EACd,gBAAgB;EAChB,eAAe;EACf,gBAAgB,EAAE;;AAEpB;;CAEC;AACD;EACE,qBAAqB;EACrB,gBAAgB;EAChB,0BAA0B,EAAE;;AAE9B;;CAEC;AACD;EACE,gBAAgB;EAChB,mBAAmB,EAAE;;AAEvB;;CAEC;AACD;EACE,eAAe;EACf,gBAAgB,EAAE;;AAEpB;EACE,aAAa;EACb,YAAY;EACZ,wBAAwB,EAAE;;AAE5B;EACE,iBAAiB;EACjB,gBAAgB;EAChB,gBAAgB,EAAE;;AAEpB;EACE,cAAc;EACd,eAAe;EACf,iBAAiB,EAAE;;AAErB;EACE,kBAAkB;EAClB,QAAQ;EACR,cAAc,EAAE;;AAElB;EACE,iBAAiB;EACjB,aAAa,EAAE;;AAEjB;;CAEC;AACD;EACE,YAAY;EACZ,gBAAgB,EAAE;;AAEpB,8BAA8B;AAC9B;EACE,kBAAkB;EAClB,UAAU;EACV,YAAY,EAAE;;AAEhB;;CAEC;AACD,2CAA2C;AAC3C;EACE,sBAAsB,EAAE;;AAE1B;EACE,gBAAgB,EAAE;;AAEpB,qDAAqD;AACrD;EACE,kBAAkB;EAClB,QAAQ;EACR,YAAY,EAAE","file":"index.css","sourcesContent":["/*\n* Styles for the Content Visibility WordPress plugin by Rich Tape.\n*\n* This file provides the core styling for the main Content Visibility Plugin. We mostly\n* use native WordPress control components, and rely on their styling to make this plugin\n* feel native to WordPress. However, there are some tweaks needed as we're using components\n* in ways that WordPress doesn't use yet - and hence doesn't provide styling affordances for.\n*/\n/*\n    Ensure our slots for add-ons are block.\n*/\n.content-visibility-controls .content-visibility-extra-controls {\n  display: block; }\n\n/*\n    Give the Rules Enabled toggle a little more breathing room.\n*/\n.content-visibility-controls .content-visibility-rules-enabled .components-toggle-control {\n  margin: 1rem 0; }\n\n/*\n    Make the Show/Hidden radio buttons sit next to each other...\n*/\n.content-visibility-controls .components-base-control__label {\n  max-width: none;\n  margin-top: 1em; }\n\n.content-visibility-controls .components-radio-control__option {\n  width: 50%;\n  margin: 0.5em 0 0;\n  display: inline-block; }\n\n/*\n    ...But not for User Roles\n*/\n.content-visibility-controls .content-visibility-user-role-control .components-radio-control__option {\n  width: 100%; }\n\n/*\n    User Auth controls, with the help text, look weird due to flex.\n*/\n.content-visibility-control-panel.content-visibility-user-authenticated-controls .components-panel__row {\n  display: block; }\n\n.content-visibility-user-authenticated-control {\n  width: 100%;\n  display: block;\n  float: none;\n  clear: both; }\n\n/*\n    Make the shown/not shown control stand out a little\n*/\n.content-visibility-displayed-control .components-base-control.components-radio-control {\n  margin-bottom: 0 !important; }\n\n.content-visibility-displayed-control .components-base-control.components-radio-control .components-base-control__field {\n  margin-bottom: 0; }\n\n.content-visibility-displayed-control .components-base-control__field .components-radio-control__option:last-of-type {\n  text-align: right; }\n\n/*\n    Styling for the rule panels\n*/\n.content-visibility-controls.is-opened .content-visibility-control-panel {\n  border: 1px solid #e2e4e7;\n  margin-bottom: 1em;\n  background: #fcfcfc;\n  width: 100%; }\n\n.content-visibility-controls.is-opened .content-visibility-control-panel.is-opened .components-panel__body-toggle {\n  border-bottom: 1px solid #e2e4e7; }\n\n/*\n    When the rules are disabled (default) we lower opacity of controls\n*/\n.content-visibility-controls-container.hide-controls {\n  opacity: 0.2; }\n\n.components-disabled {\n  opacity: 0.5; }\n\n/*\n    Tidy up margins for user auth\n*/\n.content-visibility-user-authenticated-controls .components-panel__row .content-visibility-user-authenticated-control {\n  margin-bottom: 0; }\n\n/*\n    User roles have a massive margin, reduce that\n*/\n.content-visibility-user-role-controls .components-panel__row ul {\n  margin-bottom: 0; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control {\n  margin-bottom: 5px; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control:last-of-type {\n  margin-bottom: 0; }\n\n/*\n    When a block has rules enabled, we style it to show it has rules. Looks a bit weird that we have two\n    rules almost identical. But the BlockListBlock component only accepts one className so this is how it has to be.\n    Different icons used for 'shown' or 'hidden' rules.\n*/\n.wp-admin .wp-block.content-visibility-rules-enabled-shown:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle></svg>'); }\n\n.wp-admin .wp-block.content-visibility-rules-enabled-hidden:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye-off\"><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line></svg>'); }\n\n/*\n    Help text generic styling. This is to make it look like a WordPress hint.\n*/\n.content-visibility-controls-container .content-visibility-help-text {\n  margin: 1rem 0 0;\n  font-size: 12px;\n  font-style: normal;\n  color: #757575;\n  clear: both;\n  float: none;\n  width: 100%; }\n\n/*\n    Multi-select component\n    ----------------------    \n*/\n.content-visibility-multi-select {\n  width: 100%;\n  margin: 1rem 0 0 0; }\n\n/*\n    Remove horizontal scrolling, artifact of weird padding on main component.\n*/\n.content-visibility-multi-select .panel-content {\n  overflow-x: hidden; }\n\n/*\n    Ensure each of the items fill the dropdown and have space to make more readable.\n*/\n.content-visibility-multi-select-item {\n  width: 100%; }\n\n.content-visibility-multi-select .select-panel label {\n  max-width: none;\n  margin-right: 0;\n  padding: 0.7rem 0.7rem 0; }\n\n/*\n    Don't need background colour change on hover, not WordPress-y.\n*/\n.content-visibility-multi-select .select-panel label:hover,\n.content-visibility-multi-select .select-panel label:focus,\n.content-visibility-multi-select .select-panel label.selected {\n  background: transparent; }\n\n/*\n    Give ourselves some breathing room with the main list items. Leaves the 'select all' standing alone at the top.\n*/\n.content-visibility-multi-select .select-panel ul {\n  padding: 0.7rem 0; }\n\n.content-visibility-multi-select input[type=\"checkbox\"] {\n  margin-right: 0.5rem; }\n\n/*\n    Make each item a bit more uniform, ensures horiz alignment with icons.\n*/\n.item-renderer.content-visibility-multi-select-item > span {\n  height: 20px;\n  display: inline-block; }\n\n/*\n    Give the search input some breathing room.\n*/\n.content-visibility-multi-select .select-panel > div {\n  margin-top: 0.25rem;\n  padding: 0 0.25rem; }\n\n/*\n    Make the icons a little less harsh\n*/\n.content-visibility-multi-select .content-visibility-multi-select-item .dashicon {\n  opacity: 0.5; }\n\n/*\n    Popover content toggle buttons. Make sure they can handle long values as someone may\n    select multiple options. Give max-width to ensure the button's icon is inline.\n    min-width ensures the initial button's value doesn't wrap (i.e. when it's short)\n*/\n.components-button.is-secondary.content-visibility-special-page-inserter-toggle {\n  white-space: break-spaces;\n  max-width: 85%;\n  min-width: 190px;\n  font-size: 12px;\n  line-height: 1.6; }\n\n/*\n    If someone has selected special pages, then we make it less like a link.\n*/\n.components-button.is-secondary.content-visibility-special-page-inserter-toggle.has-items {\n  text-decoration: none;\n  line-height: 1.6;\n  text-transform: capitalize; }\n\n/*\n    The 'Set Selected' button\n*/\n.components-button.content-visibility-submit-special-pages {\n  margin-top: 1rem;\n  margin-bottom: 1rem; }\n\n/*\n    Special Page Help Toggle\n*/\n.content-visibility-help-text .content-visibility-special-page-help-instructions-toggle.is-small {\n  font-size: 12px;\n  margin-top: 1rem; }\n\n.content-visibility-special-page-help-instructions-popover .components-popover__content {\n  padding: 1rem;\n  width: 23rem;\n  height: 30rem !important; }\n\n.content-visibility-control-panel .special-page-help-instructions-button {\n  text-align: right;\n  margin-top: 1rem;\n  margin-bottom: 0; }\n\n.content-visibility-control-panel .special-page-help-instructions-button .content-visibility-special-page-help-instructions-toggle {\n  margin-left: 0;\n  margin-right: 0;\n  padding-left: 3px; }\n\n.content-visibility-control-panel .special-page-help-instructions-button .dashicon {\n  position: relative;\n  top: 3px;\n  color: #007cba; }\n\n.content-visibility-submit-special-pages-button-container {\n  text-align: right;\n  margin-top: 0; }\n\n/*\n    Special Page Help Popover\n*/\n.content-visibility-special-page-help-instructions-popover span {\n  color: black;\n  font-weight: 600; }\n\n/* Special Page Close Button */\n.content-visibility-close-popover {\n  position: absolute;\n  top: -2rem;\n  right: -1rem; }\n\n/*\n    Special Page Panel\n*/\n/* Make sure each inserter is its own row */\n.components-panel__row.content-visibility-page-inserter-panel-row {\n  flex-direction: column; }\n\n.content-visibility-special-page-inserter {\n  margin-top: 1rem; }\n\n/* Align the icon for each inserter a little neater */\n.content-visibility-special-page-inserter .dashicon {\n  position: relative;\n  top: 4px;\n  opacity: 0.6; }\n"],"sourceRoot":""}
  • content-visibility/tags/0.1.7/build/index.js

    r2450785 r2471073  
    1 (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["style-index"],{
     1(window["webpackJsonp_content_visibility"] = window["webpackJsonp_content_visibility"] || []).push([["style-index"],{
    22
    33/***/ "./src/style.scss":
     
    155155/******/    __webpack_require__.p = "";
    156156/******/
    157 /******/    var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
     157/******/    var jsonpArray = window["webpackJsonp_content_visibility"] = window["webpackJsonp_content_visibility"] || [];
    158158/******/    var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
    159159/******/    jsonpArray.push = webpackJsonpCallback;
     
    223223
    224224module.exports = _extends;
     225
     226/***/ }),
     227
     228/***/ "./node_modules/@babel/runtime/helpers/typeof.js":
     229/*!*******************************************************!*\
     230  !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
     231  \*******************************************************/
     232/*! no static exports found */
     233/***/ (function(module, exports) {
     234
     235function _typeof(obj) {
     236  "@babel/helpers - typeof";
     237
     238  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
     239    module.exports = _typeof = function _typeof(obj) {
     240      return typeof obj;
     241    };
     242  } else {
     243    module.exports = _typeof = function _typeof(obj) {
     244      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
     245    };
     246  }
     247
     248  return _typeof(obj);
     249}
     250
     251module.exports = _typeof;
     252
     253/***/ }),
     254
     255/***/ "./node_modules/goober/dist/goober.module.js":
     256/*!***************************************************!*\
     257  !*** ./node_modules/goober/dist/goober.module.js ***!
     258  \***************************************************/
     259/*! exports provided: css, extractCss, glob, keyframes, setup, styled */
     260/***/ (function(module, __webpack_exports__, __webpack_require__) {
     261
     262"use strict";
     263__webpack_require__.r(__webpack_exports__);
     264/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return i; });
     265/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extractCss", function() { return r; });
     266/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "glob", function() { return d; });
     267/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyframes", function() { return g; });
     268/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setup", function() { return b; });
     269/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "styled", function() { return h; });
     270let e={data:""},t=t=>{try{let e=t?t.querySelector("#_goober"):self._goober;return e||(e=(t||document.head).appendChild(document.createElement("style")),e.innerHTML=" ",e.id="_goober"),e.firstChild}catch(e){}return t||e},r=e=>{let r=t(e),a=r.data;return r.data="",a},a=/(?:([A-Z0-9-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(})/gi,l=/\/\*[\s\S]*?\*\/|\s{2,}|\n/gm,o=(e,t)=>{let r,a="",l="",n="";for(let c in e){let s=e[c];"object"==typeof s?(r=t?t.replace(/([^,])+/g,e=>c.replace(/([^,])+/g,t=>/&/g.test(t)?t.replace(/&/g,e):e?e+" "+t:t)):c,l+="@"==c[0]?"f"==c[1]?o(s,c):c+"{"+o(s,"k"==c[1]?"":t)+"}":o(s,r)):"@"==c[0]&&"i"==c[1]?a=c+" "+s+";":n+=o.p?o.p(c.replace(/[A-Z]/g,"-$&").toLowerCase(),s):c.replace(/[A-Z]/g,"-$&").toLowerCase()+":"+s+";"}return n[0]?(r=t?t+"{"+n+"}":n,a+r+l):a+l},n={},c=e=>{let t="";for(let r in e)t+=r+("object"==typeof e[r]?c(e[r]):e[r]);return t},s=(e,t,r,s,p)=>{let i="object"==typeof e?c(e):e,u=n[i]||(n[i]="go"+i.split("").reduce((e,t)=>101*e+t.charCodeAt(0)>>>0,11));if(!n[u]){let t="object"==typeof e?e:(e=>{let t,r=[{}];for(;t=a.exec(e.replace(l,""));)t[4]&&r.shift(),t[3]?r.unshift(r[0][t[3]]=r[0][t[3]]||{}):t[4]||(r[0][t[1]]=t[2]);return r[0]})(e);n[u]=o(p?{["@keyframes "+u]:t}:t,r?"":"."+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(n[u],t,s),u},p=(e,t,r)=>e.reduce((e,a,l)=>{let n=t[l];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?"."+t:e&&"object"==typeof e?e.props?"":o(e,""):e}return e+a+(null==n?"":n)},"");function i(e){let r=this||{},a=e.call?e(r.p):e;return s(a.unshift?a.raw?p(a,[].slice.call(arguments,1),r.p):a.reduce((e,t)=>t?Object.assign(e,t.call?t(r.p):t):e,{}):a,t(r.target),r.g,r.o,r.k)}let u,f,d=i.bind({g:1}),g=i.bind({k:1});function b(e,t,r){o.p=t,u=e,f=r}function h(e,t){let r=this||{};return function(){let a=arguments;function l(o,n){let c=Object.assign({},o),s=c.className||l.className;return r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\d+/g.test(s),c.className=i.apply(r,a)+(s?" "+s:""),t&&(c.ref=n),u(c.as||e,c)}return t?t(l):l}}
     271
    225272
    226273/***/ }),
     
    21112158
    21122159module.exports = stubFalse;
     2160
     2161
     2162/***/ }),
     2163
     2164/***/ "./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js":
     2165/*!********************************************************************************************!*\
     2166  !*** ./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js ***!
     2167  \********************************************************************************************/
     2168/*! exports provided: default, Dropdown, SelectItem, SelectPanel */
     2169/***/ (function(module, __webpack_exports__, __webpack_require__) {
     2170
     2171"use strict";
     2172__webpack_require__.r(__webpack_exports__);
     2173/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return Dropdown; });
     2174/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectItem", function() { return SelectItem; });
     2175/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectPanel", function() { return SelectPanel; });
     2176/* harmony import */ var goober__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! goober */ "./node_modules/goober/dist/goober.module.js");
     2177/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
     2178/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
     2179
     2180
     2181
     2182var debounce = function debounce(func, wait) {
     2183  var timeout;
     2184  return function () {
     2185    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
     2186      args[_key] = arguments[_key];
     2187    }
     2188
     2189    clearTimeout(timeout);
     2190    timeout = setTimeout(function () {
     2191      func.apply(null, args);
     2192    }, wait);
     2193  };
     2194};
     2195
     2196/**
     2197 * Filters React Select options and sorts by similarity to a search filter.
     2198 * Handles partial matches, eg. searching for "Waberg High" will find "Raoul
     2199 * Wallenberg Traditional High School". Case insensitive. Ignores
     2200 * non-alphanumeric characters.
     2201 *
     2202 * @param  options  An unfiltered list of Options.
     2203 * @param? filter  A string to compare against Option labels.
     2204 * @param? substitutions  Strings with multiple spellings or variations that we
     2205 *           expect to match, eg. accented characters or abbreviated words.
     2206 *
     2207 * @return A filtered and sorted array of Options.
     2208 */
     2209function filterOptions(options, filter, substitutions) {
     2210  // If the filter is blank, return the full list of Options.
     2211  if (!filter) {
     2212    return options;
     2213  }
     2214
     2215  var cleanFilter = cleanUpText(filter, substitutions);
     2216  return options // Filter out undefined or null Options.
     2217  .filter(function (_ref) {
     2218    var label = _ref.label,
     2219        value = _ref.value;
     2220    return label != null && value != null;
     2221  }) // Create a {score, Option} pair for each Option based on its label's
     2222  // similarity to the filter text.
     2223  .map(function (option) {
     2224    return {
     2225      option: option,
     2226      score: typeaheadSimilarity(cleanUpText(option.label, substitutions), cleanFilter)
     2227    };
     2228  }) // Only include matches of the entire substring, with a slight
     2229  // affordance for transposition or extra characters.
     2230  .filter(function (pair) {
     2231    return pair.score >= cleanFilter.length - 2;
     2232  }) // Sort 'em by order of their score.
     2233  .sort(function (a, b) {
     2234    return b.score - a.score;
     2235  }) // …and grab the original Options back from their pairs.
     2236  .map(function (pair) {
     2237    return pair.option;
     2238  });
     2239}
     2240/**
     2241 * Scores the similarity between two strings by returning the length of the
     2242 * longest common subsequence. Intended for comparing strings of different
     2243 * lengths; eg. when matching a typeahead search input with a school name.
     2244
     2245 * Meant for use in an instant search box where results are being fetched
     2246 * as a user is typing.
     2247 *
     2248 * @param  a  The longer string (though, we flip them if it's shorter).
     2249 * @param  b  The shorter string, eg. a typeahead search input.
     2250 *
     2251 * @return The length of the longest common subsequence. Higher scores indicate
     2252 *           closer matches.
     2253 */
     2254
     2255function typeaheadSimilarity(a, b) {
     2256  var aLength = a.length;
     2257  var bLength = b.length;
     2258  var table = [];
     2259
     2260  if (!aLength || !bLength) {
     2261    return 0;
     2262  } // Ensure `a` isn't shorter than `b`.
     2263
     2264
     2265  if (aLength < bLength) {
     2266    var _ref2 = [b, a];
     2267    a = _ref2[0];
     2268    b = _ref2[1];
     2269  } // Early exit if `a` includes `b`; these will be scored higher than any
     2270  // other options with the same `b` (filter string), with a preference for
     2271  // shorter `a` strings (option labels).
     2272
     2273
     2274  if (a.indexOf(b) !== -1) {
     2275    return bLength + 1 / aLength;
     2276  } // Initialize the table axes:
     2277  //
     2278  //    0 0 0 0 ... bLength
     2279  //    0
     2280  //    0
     2281  //
     2282  //   ...
     2283  //
     2284  // aLength
     2285  //
     2286
     2287
     2288  for (var x = 0; x <= aLength; ++x) {
     2289    table[x] = [0];
     2290  }
     2291
     2292  for (var y = 0; y <= bLength; ++y) {
     2293    table[0][y] = 0;
     2294  } // Populate the rest of the table with a dynamic programming algorithm.
     2295
     2296
     2297  for (var _x = 1; _x <= aLength; ++_x) {
     2298    for (var _y = 1; _y <= bLength; ++_y) {
     2299      table[_x][_y] = a[_x - 1] === b[_y - 1] ? 1 + table[_x - 1][_y - 1] : Math.max(table[_x][_y - 1], table[_x - 1][_y]);
     2300    }
     2301  }
     2302
     2303  return table[aLength][bLength];
     2304}
     2305/**
     2306 * Apply string substitutions, remove non-alphanumeric characters, and convert
     2307 * all letters to uppercase.
     2308 *
     2309 * eg. 'Scoil Bhríde Primary School' may become 'SCOILBHRIDEPRIMARYSCHOOL'.
     2310 *
     2311 * @param  input  An unsanitized input string.
     2312 * @param  substitutions  Strings with multiple spellings or variations that we
     2313 *          expect to match, for example accented characters or abbreviated
     2314 *          words.
     2315 *
     2316 * @return The sanitized text.
     2317 */
     2318
     2319function cleanUpText(input, substitutions) {
     2320  if (!input) {
     2321    return "";
     2322  } // Uppercase and remove all non-alphanumeric, non-accented characters.
     2323  // Also remove underscores.
     2324
     2325
     2326  input = input.toUpperCase().replace(/((?=[^\u00E0-\u00FC])\W)|_/g, "");
     2327
     2328  if (!substitutions) {
     2329    return input;
     2330  }
     2331
     2332  var safeSubstitutions = substitutions; // For Flow.
     2333  // Replace all strings in `safeSubstitutions` with their standardized
     2334  // counterparts.
     2335
     2336  return Object.keys(safeSubstitutions).reduce(function (output, substitution) {
     2337    var unsubbed = new RegExp(substitution, "g");
     2338    return output.replace(unsubbed, safeSubstitutions[substitution]);
     2339  }, input);
     2340}
     2341
     2342var strings = {
     2343  selectSomeItems: "Select...",
     2344  allItemsAreSelected: "All items are selected.",
     2345  selectAll: "Select All",
     2346  search: "Search",
     2347  clearSearch: "Clear Search",
     2348  clearSelected: "Clear Selected"
     2349};
     2350function getString(key, overrideStrings) {
     2351  return (overrideStrings == null ? void 0 : overrideStrings[key]) || strings[key];
     2352}
     2353
     2354var Cross = function Cross() {
     2355  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("svg", {
     2356    width: "24",
     2357    height: "24",
     2358    fill: "none",
     2359    stroke: "currentColor",
     2360    strokeWidth: "2",
     2361    className: "dropdown-search-clear-icon gray"
     2362  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("line", {
     2363    x1: "18",
     2364    y1: "6",
     2365    x2: "6",
     2366    y2: "18"
     2367  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("line", {
     2368    x1: "6",
     2369    y1: "6",
     2370    x2: "18",
     2371    y2: "18"
     2372  }));
     2373};
     2374
     2375var DefaultRenderer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2376  "& input,& span": {
     2377    verticalAlign: "middle",
     2378    margin: 0
     2379  },
     2380  span: {
     2381    display: "inline-block",
     2382    paddingLeft: "5px"
     2383  },
     2384  "&.disabled": {
     2385    opacity: 0.5
     2386  }
     2387});
     2388
     2389var DefaultItemRenderer = function DefaultItemRenderer(_ref) {
     2390  var checked = _ref.checked,
     2391      option = _ref.option,
     2392      onClick = _ref.onClick,
     2393      disabled = _ref.disabled;
     2394  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2395    className: DefaultRenderer + " item-renderer " + (disabled && "disabled")
     2396  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("input", {
     2397    type: "checkbox",
     2398    onChange: onClick,
     2399    checked: checked,
     2400    tabIndex: -1,
     2401    disabled: disabled
     2402  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", null, option.label));
     2403};
     2404
     2405/**
     2406 * This component represents an individual item in the multi-select drop-down
     2407 */
     2408var ItemContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2409  boxSizing: "border-box",
     2410  cursor: "pointer",
     2411  display: "block",
     2412  padding: "var(--rmsc-p)",
     2413  outline: 0,
     2414  "&:hover,&:focus": {
     2415    background: "var(--rmsc-hover)"
     2416  },
     2417  "&.selected": {
     2418    background: "var(--rmsc-selected)"
     2419  }
     2420});
     2421
     2422var SelectItem = function SelectItem(_ref) {
     2423  var _ref$itemRenderer = _ref.itemRenderer,
     2424      ItemRenderer = _ref$itemRenderer === void 0 ? DefaultItemRenderer : _ref$itemRenderer,
     2425      option = _ref.option,
     2426      checked = _ref.checked,
     2427      focused = _ref.focused,
     2428      tabIndex = _ref.tabIndex,
     2429      disabled = _ref.disabled,
     2430      onSelectionChanged = _ref.onSelectionChanged,
     2431      onClick = _ref.onClick;
     2432  var itemRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])();
     2433  Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(function () {
     2434    updateFocus(); // eslint-disable-next-line
     2435  }, [focused]);
     2436
     2437  var toggleChecked = function toggleChecked() {
     2438    onSelectionChanged(!checked);
     2439  };
     2440
     2441  var handleClick = function handleClick(e) {
     2442    toggleChecked();
     2443    onClick(e);
     2444  };
     2445
     2446  var updateFocus = function updateFocus() {
     2447    if (focused && !disabled && itemRef) {
     2448      itemRef.current.focus();
     2449    }
     2450  };
     2451
     2452  var handleKeyDown = function handleKeyDown(e) {
     2453    switch (e.which) {
     2454      case 13: // Enter
     2455
     2456      case 32:
     2457        // Space
     2458        toggleChecked();
     2459        break;
     2460
     2461      default:
     2462        return;
     2463    }
     2464
     2465    e.preventDefault();
     2466  };
     2467
     2468  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("label", {
     2469    className: ItemContainer + " select-item " + (checked && "selected"),
     2470    role: "option",
     2471    "aria-selected": checked,
     2472    tabIndex: tabIndex,
     2473    ref: itemRef,
     2474    onKeyDown: handleKeyDown
     2475  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ItemRenderer, {
     2476    option: option,
     2477    checked: checked,
     2478    onClick: handleClick,
     2479    disabled: disabled
     2480  }));
     2481};
     2482
     2483/**
     2484 * This component represents an unadorned list of SelectItem (s).
     2485 */
     2486var SelectListUl = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2487  margin: 0,
     2488  paddingLeft: 0,
     2489  li: {
     2490    listStyle: "none",
     2491    margin: 0
     2492  }
     2493});
     2494var skipIndex = 2;
     2495
     2496var SelectList = function SelectList(_ref) {
     2497  var value = _ref.value,
     2498      onChange = _ref.onChange,
     2499      disabled = _ref.disabled,
     2500      ItemRenderer = _ref.ItemRenderer,
     2501      options = _ref.options,
     2502      focusIndex = _ref.focusIndex,
     2503      _onClick = _ref.onClick;
     2504
     2505  var handleSelectionChanged = function handleSelectionChanged(option, checked) {
     2506    if (disabled) {
     2507      return;
     2508    }
     2509
     2510    onChange(checked ? [].concat(value, [option]) : value.filter(function (o) {
     2511      return o.value !== option.value;
     2512    }));
     2513  };
     2514
     2515  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("ul", {
     2516    className: SelectListUl
     2517  }, options.map(function (o, i) {
     2518    var tabIndex = i + skipIndex;
     2519    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("li", {
     2520      key: o.hasOwnProperty("key") ? o.key : i
     2521    }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectItem, {
     2522      focused: focusIndex === tabIndex,
     2523      tabIndex: tabIndex,
     2524      option: o,
     2525      onSelectionChanged: function onSelectionChanged(c) {
     2526        return handleSelectionChanged(o, c);
     2527      },
     2528      checked: value.find(function (s) {
     2529        return s.value === o.value;
     2530      }) ? true : false,
     2531      onClick: function onClick(e) {
     2532        return _onClick(e, tabIndex);
     2533      },
     2534      itemRenderer: ItemRenderer,
     2535      disabled: o.disabled || disabled
     2536    }));
     2537  }));
     2538};
     2539
     2540/**
     2541 * This component represents the entire panel which gets dropped down when the
     2542 * user selects the component.  It encapsulates the search filter, the
     2543 * Select-all item, and the list of options.
     2544 */
     2545var FocusType;
     2546
     2547(function (FocusType) {
     2548  FocusType[FocusType["SEARCH"] = -1] = "SEARCH";
     2549  FocusType[FocusType["NONE"] = 1] = "NONE";
     2550})(FocusType || (FocusType = {}));
     2551
     2552var SelectSearchContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2553  width: "100%",
     2554  position: "relative",
     2555  borderBottom: "1px solid var(--rmsc-border)",
     2556  input: {
     2557    height: "var(--rmsc-h)",
     2558    padding: "0 var(--rmsc-p)",
     2559    width: "100%",
     2560    outline: 0,
     2561    border: 0
     2562  }
     2563});
     2564var SearchClearButton = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2565  cursor: "pointer",
     2566  position: "absolute",
     2567  top: 0,
     2568  right: 0,
     2569  bottom: 0,
     2570  background: "none",
     2571  border: 0,
     2572  padding: "0 calc(var(--rmsc-p)/2)",
     2573  "[hidden]": {
     2574    display: "none"
     2575  }
     2576});
     2577var SelectPanel = function SelectPanel(props) {
     2578  var onChange = props.onChange,
     2579      options = props.options,
     2580      value = props.value,
     2581      customFilterOptions = props.filterOptions,
     2582      selectAllLabel = props.selectAllLabel,
     2583      ItemRenderer = props.ItemRenderer,
     2584      disabled = props.disabled,
     2585      disableSearch = props.disableSearch,
     2586      focusSearchOnOpen = props.focusSearchOnOpen,
     2587      hasSelectAll = props.hasSelectAll,
     2588      overrideStrings = props.overrideStrings,
     2589      ClearIcon = props.ClearIcon,
     2590      debounceDuration = props.debounceDuration;
     2591
     2592  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(""),
     2593      searchText = _useState[0],
     2594      setSearchText = _useState[1];
     2595
     2596  var _useState2 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(""),
     2597      searchTextForFilter = _useState2[0],
     2598      setSearchTextForFilter = _useState2[1];
     2599
     2600  var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(focusSearchOnOpen && !disableSearch ? FocusType.SEARCH : FocusType.NONE),
     2601      focusIndex = _useState3[0],
     2602      setFocusIndex = _useState3[1];
     2603
     2604  var debouncedSearch = Object(react__WEBPACK_IMPORTED_MODULE_1__["useCallback"])(debounce(function (query) {
     2605    return setSearchTextForFilter(query);
     2606  }, debounceDuration), []);
     2607  var selectAllOption = {
     2608    label: selectAllLabel || getString("selectAll", overrideStrings),
     2609    value: ""
     2610  };
     2611
     2612  var selectAllValues = function selectAllValues(checked) {
     2613    var filteredValues = filteredOptions().filter(function (o) {
     2614      return !o.disabled;
     2615    }).map(function (o) {
     2616      return o.value;
     2617    });
     2618
     2619    if (checked) {
     2620      var selectedValues = value.map(function (o) {
     2621        return o.value;
     2622      });
     2623      var finalSelectedValues = [].concat(selectedValues, filteredValues);
     2624      return options.filter(function (_ref) {
     2625        var value = _ref.value;
     2626        return finalSelectedValues.includes(value);
     2627      });
     2628    }
     2629
     2630    return value.filter(function (o) {
     2631      return !filteredValues.includes(o.value);
     2632    });
     2633  };
     2634
     2635  var selectAllChanged = function selectAllChanged(checked) {
     2636    var newOptions = selectAllValues(checked);
     2637    onChange(newOptions);
     2638  };
     2639
     2640  var handleSearchChange = function handleSearchChange(e) {
     2641    debouncedSearch(e.target.value);
     2642    setSearchText(e.target.value);
     2643    setFocusIndex(FocusType.SEARCH);
     2644  };
     2645
     2646  var handleClear = function handleClear() {
     2647    setSearchTextForFilter("");
     2648    setSearchText("");
     2649  };
     2650
     2651  var handleItemClicked = function handleItemClicked(index) {
     2652    return setFocusIndex(index);
     2653  };
     2654
     2655  var handleKeyDown = function handleKeyDown(e) {
     2656    switch (e.which) {
     2657      case 38:
     2658        // Up Arrow
     2659        if (e.altKey) {
     2660          return;
     2661        }
     2662
     2663        updateFocus(-1);
     2664        break;
     2665
     2666      case 40:
     2667        // Down Arrow
     2668        if (e.altKey) {
     2669          return;
     2670        }
     2671
     2672        updateFocus(1);
     2673        break;
     2674
     2675      default:
     2676        return;
     2677    }
     2678
     2679    e.stopPropagation();
     2680    e.preventDefault();
     2681  };
     2682
     2683  var handleSearchFocus = function handleSearchFocus() {
     2684    setFocusIndex(FocusType.SEARCH);
     2685  };
     2686
     2687  var filteredOptions = function filteredOptions() {
     2688    return customFilterOptions ? customFilterOptions(options, searchTextForFilter) : filterOptions(options, searchTextForFilter);
     2689  };
     2690
     2691  var updateFocus = function updateFocus(offset) {
     2692    var newFocus = focusIndex + offset;
     2693    newFocus = Math.max(1, newFocus);
     2694    newFocus = Math.min(newFocus, options.length + 1);
     2695    setFocusIndex(newFocus);
     2696  };
     2697
     2698  var _useMemo = Object(react__WEBPACK_IMPORTED_MODULE_1__["useMemo"])(function () {
     2699    var filteredOptionsList = filteredOptions().filter(function (o) {
     2700      return !o.disabled;
     2701    });
     2702    return [filteredOptionsList.every(function (o) {
     2703      return value.findIndex(function (v) {
     2704        return v.value === o.value;
     2705      }) !== -1;
     2706    }), filteredOptionsList.length !== 0]; // eslint-disable-next-line
     2707  }, [searchText, value]),
     2708      isAllOptionSelected = _useMemo[0],
     2709      hasSelectableOptions = _useMemo[1];
     2710
     2711  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2712    className: "select-panel",
     2713    role: "listbox",
     2714    onKeyDown: handleKeyDown
     2715  }, !disableSearch && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2716    className: SelectSearchContainer
     2717  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("input", {
     2718    autoFocus: focusSearchOnOpen,
     2719    placeholder: getString("search", overrideStrings),
     2720    type: "text",
     2721    "aria-describedby": getString("search", overrideStrings),
     2722    onKeyDown: function onKeyDown(e) {
     2723      return e.stopPropagation();
     2724    },
     2725    onChange: handleSearchChange,
     2726    onFocus: handleSearchFocus,
     2727    value: searchText
     2728  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("button", {
     2729    type: "button",
     2730    className: SearchClearButton + " search-clear-button",
     2731    hidden: !searchText,
     2732    onClick: handleClear,
     2733    "aria-label": getString("clearSearch", overrideStrings)
     2734  }, ClearIcon || react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Cross, null))), hasSelectAll && hasSelectableOptions && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectItem, {
     2735    focused: focusIndex === 1,
     2736    tabIndex: 1,
     2737    checked: isAllOptionSelected,
     2738    option: selectAllOption,
     2739    onSelectionChanged: selectAllChanged,
     2740    onClick: function onClick() {
     2741      return handleItemClicked(0);
     2742    },
     2743    itemRenderer: ItemRenderer,
     2744    disabled: disabled
     2745  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectList, Object.assign({}, props, {
     2746    options: filteredOptions(),
     2747    focusIndex: focusIndex,
     2748    onClick: function onClick(_e, index) {
     2749      return handleItemClicked(index);
     2750    },
     2751    ItemRenderer: ItemRenderer,
     2752    disabled: disabled
     2753  })));
     2754};
     2755
     2756function Arrow(_ref) {
     2757  var expanded = _ref.expanded;
     2758  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("svg", {
     2759    width: "24",
     2760    height: "24",
     2761    fill: "none",
     2762    stroke: "currentColor",
     2763    strokeWidth: "2",
     2764    className: "dropdown-heading-dropdown-arrow gray"
     2765  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("path", {
     2766    d: expanded ? "M18 15 12 9 6 15" : "M6 9L12 15 18 9"
     2767  }));
     2768}
     2769
     2770var Spinner = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2771  animation: "rotate 2s linear infinite",
     2772  "& .path": {
     2773    stroke: "var(--rmsc-border)",
     2774    strokeWidth: "4px",
     2775    strokeLinecap: "round",
     2776    animation: "dash 1.5s ease-in-out infinite"
     2777  },
     2778  "@keyframes rotate": {
     2779    "100%": {
     2780      transform: "rotate(360deg)"
     2781    }
     2782  },
     2783  "@keyframes dash": {
     2784    "0%": {
     2785      strokeDasharray: "1,150",
     2786      strokeDashoffset: 0
     2787    },
     2788    "50%": {
     2789      strokeDasharray: "90,150",
     2790      strokeDashoffset: "-35"
     2791    },
     2792    "100%": {
     2793      strokeDasharray: "90,150",
     2794      strokeDashoffset: "-124"
     2795    }
     2796  }
     2797});
     2798
     2799function Loading(_ref) {
     2800  var _ref$size = _ref.size,
     2801      size = _ref$size === void 0 ? 24 : _ref$size;
     2802  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", {
     2803    style: {
     2804      width: size,
     2805      marginRight: "0.2rem"
     2806    }
     2807  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("svg", {
     2808    width: size,
     2809    height: size,
     2810    className: Spinner,
     2811    viewBox: "0 0 50 50",
     2812    style: {
     2813      display: "inline",
     2814      verticalAlign: "middle"
     2815    }
     2816  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("circle", {
     2817    cx: "25",
     2818    cy: "25",
     2819    r: "20",
     2820    fill: "none",
     2821    className: "path"
     2822  })));
     2823}
     2824
     2825/**
     2826 * A generic dropdown component.  It takes the children of the component
     2827 * and hosts it in the component.  When the component is selected, it
     2828 * drops-down the contentComponent and applies the contentProps.
     2829 */
     2830var PanelContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2831  position: "absolute",
     2832  zIndex: 1,
     2833  top: "100%",
     2834  width: "100%",
     2835  paddingTop: "8px",
     2836  ".panel-content": {
     2837    maxHeight: "300px",
     2838    overflowY: "auto",
     2839    borderRadius: "var(--rmsc-radius)",
     2840    background: "var(--rmsc-bg)",
     2841    boxShadow: "0 0 0 1px rgba(0, 0, 0, 0.1), 0 4px 11px rgba(0, 0, 0, 0.1)"
     2842  }
     2843});
     2844var DropdownContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2845  position: "relative",
     2846  outline: 0,
     2847  backgroundColor: "var(--rmsc-bg)",
     2848  border: "1px solid var(--rmsc-border)",
     2849  borderRadius: "var(--rmsc-radius)",
     2850  "&:focus-within": {
     2851    boxShadow: "var(--rmsc-main) 0 0 0 1px",
     2852    borderColor: "var(--rmsc-main)"
     2853  }
     2854});
     2855var DropdownHeading = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2856  position: "relative",
     2857  padding: "0 var(--rmsc-p)",
     2858  display: "flex",
     2859  alignItems: "center",
     2860  width: "100%",
     2861  height: "var(--rmsc-h)",
     2862  cursor: "default",
     2863  outline: 0,
     2864  ".dropdown-heading-value": {
     2865    overflow: "hidden",
     2866    textOverflow: "ellipsis",
     2867    whiteSpace: "nowrap",
     2868    flex: 1
     2869  }
     2870});
     2871var ClearSelectedButton = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2872  cursor: "pointer",
     2873  background: "none",
     2874  border: 0,
     2875  padding: 0,
     2876  display: "flex"
     2877});
     2878
     2879var Dropdown = function Dropdown(_ref) {
     2880  var children = _ref.children,
     2881      ContentComponent = _ref.contentComponent,
     2882      contentProps = _ref.contentProps,
     2883      isLoading = _ref.isLoading,
     2884      disabled = _ref.disabled,
     2885      shouldToggleOnHover = _ref.shouldToggleOnHover,
     2886      labelledBy = _ref.labelledBy,
     2887      onMenuToggle = _ref.onMenuToggle,
     2888      ArrowRenderer = _ref.ArrowRenderer,
     2889      ClearSelectedIcon = _ref.ClearSelectedIcon,
     2890      defaultIsOpen = _ref.defaultIsOpen,
     2891      isOpen = _ref.isOpen;
     2892
     2893  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(true),
     2894      isInternalExpand = _useState[0],
     2895      setIsInternalExpand = _useState[1];
     2896
     2897  var _useState2 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(defaultIsOpen),
     2898      expanded = _useState2[0],
     2899      setExpanded = _useState2[1];
     2900
     2901  var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(false),
     2902      hasFocus = _useState3[0],
     2903      setHasFocus = _useState3[1];
     2904
     2905  var FinalArrow = ArrowRenderer || Arrow;
     2906  var wrapper = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])();
     2907  /* eslint-disable react-hooks/exhaustive-deps */
     2908
     2909  Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(function () {
     2910    onMenuToggle && onMenuToggle(expanded);
     2911  }, [expanded]);
     2912  Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(function () {
     2913    if (defaultIsOpen === undefined && typeof isOpen === "boolean") {
     2914      setIsInternalExpand(false);
     2915      setExpanded(isOpen);
     2916    }
     2917  }, [isOpen]);
     2918
     2919  var handleKeyDown = function handleKeyDown(e) {
     2920    var _wrapper$current;
     2921
     2922    if (isInternalExpand) {
     2923      switch (e.which) {
     2924        case 27: // Escape
     2925
     2926        case 38:
     2927          // Up Arrow
     2928          setExpanded(false);
     2929          wrapper == null ? void 0 : (_wrapper$current = wrapper.current) == null ? void 0 : _wrapper$current.focus();
     2930          break;
     2931
     2932        case 32: // Space
     2933
     2934        case 13: // Enter Key
     2935
     2936        case 40:
     2937          // Down Arrow
     2938          setExpanded(true);
     2939          break;
     2940
     2941        default:
     2942          return;
     2943      }
     2944    }
     2945
     2946    e.preventDefault();
     2947  };
     2948
     2949  var handleHover = function handleHover(iexpanded) {
     2950    isInternalExpand && shouldToggleOnHover && setExpanded(iexpanded);
     2951  };
     2952
     2953  var handleFocus = function handleFocus() {
     2954    return !hasFocus && setHasFocus(true);
     2955  };
     2956
     2957  var handleBlur = function handleBlur(e) {
     2958    if (!e.currentTarget.contains(e.relatedTarget) && isInternalExpand) {
     2959      setHasFocus(false);
     2960      setExpanded(false);
     2961    }
     2962  };
     2963
     2964  var handleMouseEnter = function handleMouseEnter() {
     2965    return handleHover(true);
     2966  };
     2967
     2968  var handleMouseLeave = function handleMouseLeave() {
     2969    return handleHover(false);
     2970  };
     2971
     2972  var toggleExpanded = function toggleExpanded() {
     2973    isInternalExpand && setExpanded(isLoading || disabled ? false : !expanded);
     2974  };
     2975
     2976  var handleClearSelected = function handleClearSelected(e) {
     2977    e.stopPropagation();
     2978    contentProps["onChange"]([]);
     2979    isInternalExpand && setExpanded(false);
     2980  };
     2981
     2982  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2983    tabIndex: 0,
     2984    className: DropdownContainer + " dropdown-container",
     2985    "aria-labelledby": labelledBy,
     2986    "aria-expanded": expanded,
     2987    "aria-readonly": true,
     2988    "aria-disabled": disabled,
     2989    ref: wrapper,
     2990    onKeyDown: handleKeyDown,
     2991    onFocus: handleFocus,
     2992    onBlur: handleBlur,
     2993    onMouseEnter: handleMouseEnter,
     2994    onMouseLeave: handleMouseLeave
     2995  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2996    className: DropdownHeading + " dropdown-heading",
     2997    onClick: toggleExpanded
     2998  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2999    className: "dropdown-heading-value"
     3000  }, children), isLoading && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Loading, null), contentProps["value"].length > 0 && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("button", {
     3001    type: "button",
     3002    className: ClearSelectedButton + " clear-selected-button",
     3003    onClick: handleClearSelected,
     3004    "aria-label": getString("clearSelected", contentProps["overrideStrings"])
     3005  }, ClearSelectedIcon || react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Cross, null)), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(FinalArrow, {
     3006    expanded: expanded
     3007  })), expanded && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     3008    className: PanelContainer + " dropdown-content"
     3009  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     3010    className: "panel-content"
     3011  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ContentComponent, Object.assign({}, contentProps)))));
     3012};
     3013
     3014var DropdownHeader = function DropdownHeader(_ref) {
     3015  var value = _ref.value,
     3016      options = _ref.options,
     3017      valueRenderer = _ref.valueRenderer,
     3018      overrideStrings = _ref.overrideStrings;
     3019  var noneSelected = value.length === 0;
     3020  var allSelected = value.length === options.length;
     3021  var customText = valueRenderer && valueRenderer(value, options);
     3022
     3023  var getSelectedText = function getSelectedText() {
     3024    return value.map(function (s) {
     3025      return s.label;
     3026    }).join(", ");
     3027  };
     3028
     3029  return noneSelected ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", {
     3030    className: "gray"
     3031  }, customText || getString("selectSomeItems", overrideStrings)) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", null, customText || (allSelected ? getString("allItemsAreSelected", overrideStrings) : getSelectedText()));
     3032};
     3033
     3034var MultiSelectBox = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     3035  "--rmscMain": "#4285f4",
     3036  "--rmscHover": "#f1f3f5",
     3037  "--rmscSelected": "#e2e6ea",
     3038  "--rmscBorder": "#ccc",
     3039  "--rmscGray": "#aaa",
     3040  "--rmscBg": "#fff",
     3041  "--rmscP": "10px",
     3042  "--rmscRadius": "4px",
     3043  "--rmscH": "38px",
     3044  "*": {
     3045    boxSizing: "border-box",
     3046    transition: "all 0.2s ease"
     3047  },
     3048  ".gray": {
     3049    color: "var(--rmsc-gray)"
     3050  }
     3051});
     3052
     3053var MultiSelect = function MultiSelect(_ref) {
     3054  var _ref$focusSearchOnOpe = _ref.focusSearchOnOpen,
     3055      focusSearchOnOpen = _ref$focusSearchOnOpe === void 0 ? true : _ref$focusSearchOnOpe,
     3056      _ref$hasSelectAll = _ref.hasSelectAll,
     3057      hasSelectAll = _ref$hasSelectAll === void 0 ? true : _ref$hasSelectAll,
     3058      shouldToggleOnHover = _ref.shouldToggleOnHover,
     3059      _ref$className = _ref.className,
     3060      className = _ref$className === void 0 ? "multi-select" : _ref$className,
     3061      options = _ref.options,
     3062      value = _ref.value,
     3063      valueRenderer = _ref.valueRenderer,
     3064      overrideStrings = _ref.overrideStrings,
     3065      onChange = _ref.onChange,
     3066      disabled = _ref.disabled,
     3067      ItemRenderer = _ref.ItemRenderer,
     3068      ArrowRenderer = _ref.ArrowRenderer,
     3069      selectAllLabel = _ref.selectAllLabel,
     3070      isLoading = _ref.isLoading,
     3071      disableSearch = _ref.disableSearch,
     3072      filterOptions = _ref.filterOptions,
     3073      labelledBy = _ref.labelledBy,
     3074      onMenuToggle = _ref.onMenuToggle,
     3075      ClearIcon = _ref.ClearIcon,
     3076      _ref$debounceDuration = _ref.debounceDuration,
     3077      debounceDuration = _ref$debounceDuration === void 0 ? 300 : _ref$debounceDuration,
     3078      ClearSelectedIcon = _ref.ClearSelectedIcon,
     3079      defaultIsOpen = _ref.defaultIsOpen,
     3080      isOpen = _ref.isOpen;
     3081  var nvalue = value || [];
     3082  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     3083    className: MultiSelectBox + " " + className
     3084  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Dropdown, {
     3085    isLoading: isLoading,
     3086    contentComponent: SelectPanel,
     3087    shouldToggleOnHover: shouldToggleOnHover,
     3088    contentProps: {
     3089      ItemRenderer: ItemRenderer,
     3090      options: options,
     3091      value: nvalue,
     3092      hasSelectAll: hasSelectAll,
     3093      selectAllLabel: selectAllLabel,
     3094      onChange: onChange,
     3095      disabled: disabled,
     3096      disableSearch: disableSearch,
     3097      focusSearchOnOpen: focusSearchOnOpen,
     3098      filterOptions: filterOptions,
     3099      overrideStrings: overrideStrings,
     3100      ClearIcon: ClearIcon,
     3101      debounceDuration: debounceDuration
     3102    },
     3103    disabled: disabled,
     3104    labelledBy: labelledBy,
     3105    onMenuToggle: onMenuToggle,
     3106    ArrowRenderer: ArrowRenderer,
     3107    ClearSelectedIcon: ClearSelectedIcon,
     3108    defaultIsOpen: defaultIsOpen,
     3109    isOpen: isOpen
     3110  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DropdownHeader, {
     3111    value: nvalue,
     3112    options: options,
     3113    valueRenderer: valueRenderer,
     3114    overrideStrings: overrideStrings
     3115  })));
     3116};
     3117
     3118/* harmony default export */ __webpack_exports__["default"] = (MultiSelect);
     3119
     3120//# sourceMappingURL=react-multi-select-component.esm.js.map
    21133121
    21143122
     
    26083616Object(_wordpress_plugins__WEBPACK_IMPORTED_MODULE_4__["registerPlugin"])('content-visibility-01-user-authentication-fill', {
    26093617  render: BlockVisibilityUserAuthenitcationFill
     3618});
     3619
     3620/***/ }),
     3621
     3622/***/ "./src/controls/multiselect/content-visibility-multiselect.js":
     3623/*!********************************************************************!*\
     3624  !*** ./src/controls/multiselect/content-visibility-multiselect.js ***!
     3625  \********************************************************************/
     3626/*! exports provided: ContentVisibilityMultiSelect */
     3627/***/ (function(module, __webpack_exports__, __webpack_require__) {
     3628
     3629"use strict";
     3630__webpack_require__.r(__webpack_exports__);
     3631/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ContentVisibilityMultiSelect", function() { return ContentVisibilityMultiSelect; });
     3632/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
     3633/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
     3634/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     3635/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
     3636/* harmony import */ var react_multi_select_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-multi-select-component */ "./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js");
     3637/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     3638/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_3__);
     3639
     3640
     3641
     3642function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
     3643
     3644function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
     3645
     3646
     3647
     3648/**
     3649 * Reusable, accessible multi-select component which includes a fuzzy search, select all/none using the react-multi-select-component
     3650 * by Harsh Zalavadiya : https://github.com/harshzalavadiya/react-multi-select-component#readme.
     3651 *
     3652 * I've expanded it slightly, by allowing the data passed in to accept an `icon` property which should be a WordPress Icon compnent.
     3653 *
     3654 * Requires passing in the onChange function to handle data saving. i.e. import this component and then use it like:
     3655 *
     3656 * ```
     3657 * <ContentVisibilityMultiSelect data={ fruits } labelledBy="Select Page Type" props={ props } onChange={ onChange } />
     3658 * ```
     3659 *
     3660 * the `onChange` function can look like this:
     3661 *
     3662 * ```
     3663 * const onChange = ( option ) => {
     3664 *     // Set the state and props.
     3665 *     setState( { option } );
     3666 *     props.setAttributes( {
     3667 *         contentVisibilityRules: {
     3668 *             ...props.attributes.contentVisibilityRules,
     3669 *             specialPage: {
     3670 *                 ...props.attributes.contentVisibilityRules.specialPage,
     3671 *                 pages: option
     3672 *             }
     3673 *         },
     3674 *     } );
     3675 *
     3676 * }
     3677 * ```
     3678 *
     3679 * `data` should be an array of objects which contains label (string), a value (string) and an optional icon (WordPress Icon compnent)
     3680 */
     3681
     3682var ContentVisibilityMultiSelect = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_3__["withState"])({
     3683  option: []
     3684})(function (_ref) {
     3685  var option = _ref.option,
     3686      setState = _ref.setState,
     3687      props = _ref.props,
     3688      data = _ref.data,
     3689      labelledBy = _ref.labelledBy,
     3690      type = _ref.type;
     3691
     3692  /**
     3693   * onChange callback for the ContentVisibilityMultiSelect component. This handles setting the props and state for
     3694   * this instance of the component.
     3695   *
     3696   * @param {array} option current value of what is selected.
     3697   */
     3698  var onChange = function onChange(option) {
     3699    // Set the state and props.
     3700    setState({
     3701      option: option
     3702    });
     3703    props.setAttributes({
     3704      contentVisibilityRules: _objectSpread(_objectSpread({}, props.attributes.contentVisibilityRules), {}, {
     3705        specialPage: _objectSpread(_objectSpread({}, props.attributes.contentVisibilityRules.specialPage), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, type, option))
     3706      })
     3707    });
     3708  };
     3709
     3710  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
     3711    className: "content-visibility-multi-select"
     3712  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(react_multi_select_component__WEBPACK_IMPORTED_MODULE_2__["default"], {
     3713    options: data,
     3714    value: props.attributes.contentVisibilityRules.specialPage[type] || option,
     3715    onChange: onChange,
     3716    labelledBy: labelledBy,
     3717    ItemRenderer: function ItemRenderer(_ref2) {
     3718      var checked = _ref2.checked,
     3719          option = _ref2.option,
     3720          onClick = _ref2.onClick,
     3721          disabled = _ref2.disabled;
     3722      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
     3723        className: "item-renderer content-visibility-multi-select-item ".concat(disabled && "disabled")
     3724      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("input", {
     3725        type: "checkbox",
     3726        onChange: onClick,
     3727        checked: checked,
     3728        tabIndex: -1,
     3729        disabled: disabled
     3730      }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", null, option.icon || "", " ", option.label));
     3731    } // isOpen={ true }
     3732
     3733  }));
    26103734});
    26113735
     
    26683792/***/ }),
    26693793
     3794/***/ "./src/controls/special-page/content-visibility-page-page-inserter.js":
     3795/*!****************************************************************************!*\
     3796  !*** ./src/controls/special-page/content-visibility-page-page-inserter.js ***!
     3797  \****************************************************************************/
     3798/*! exports provided: default */
     3799/***/ (function(module, __webpack_exports__, __webpack_require__) {
     3800
     3801"use strict";
     3802__webpack_require__.r(__webpack_exports__);
     3803/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     3804/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     3805/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     3806/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     3807/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     3808/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__);
     3809/* harmony import */ var _helpers_get_pages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/get-pages */ "./src/helpers/get-pages.js");
     3810/* harmony import */ var _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/keep-popup-open */ "./src/helpers/keep-popup-open.js");
     3811/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     3812/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
     3813/* harmony import */ var _helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../helpers/special-page-insert-text */ "./src/helpers/special-page-insert-text.js");
     3814/* harmony import */ var _helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../helpers/special-pages-insert-button-class */ "./src/helpers/special-pages-insert-button-class.js");
     3815/* harmony import */ var _multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../multiselect/content-visibility-multiselect */ "./src/controls/multiselect/content-visibility-multiselect.js");
     3816
     3817
     3818
     3819
     3820
     3821
     3822
     3823
     3824
     3825var PagePageInserter = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
     3826  isVisible: false
     3827})(function (_ref) {
     3828  var isVisible = _ref.isVisible,
     3829      setState = _ref.setState,
     3830      props = _ref.props;
     3831
     3832  /**
     3833   * Our data, passed from PHP and manipulated to be useful here in JS.
     3834   */
     3835  var data = Object(_helpers_get_pages__WEBPACK_IMPORTED_MODULE_3__["default"])();
     3836  /**
     3837   * This controls the key used where the data is stored.
     3838   */
     3839
     3840  var type = 'pages';
     3841  /**
     3842   * Helps with the content of the inserter button.
     3843   */
     3844
     3845  var niceName = {
     3846    singular: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Page', 'content-visibility'),
     3847    plural: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Pages', 'content-visibility')
     3848  };
     3849  /**
     3850   * Toggle the visible state. Detemines whether the popup is open or not.
     3851   */
     3852
     3853  var toggleVisible = function toggleVisible() {
     3854    setState(function (state) {
     3855      return {
     3856        isVisible: !state.isVisible
     3857      };
     3858    });
     3859  };
     3860
     3861  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
     3862    className: "content-visibility-special-page-inserter"
     3863  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3864    icon: "networking",
     3865    iconSize: "12"
     3866  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3867    isSecondary: true,
     3868    isSmall: true,
     3869    isLink: true,
     3870    onClick: toggleVisible,
     3871    className: Object(_helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__["default"])(props, type)
     3872  }, Object(_helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__["default"])(props, type, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select specific pages', 'content-visibility'), niceName), isVisible && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Popover"], {
     3873    position: "middle left",
     3874    className: "content-visibility-special-page-help-instructions-popover",
     3875    onClick: _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__["default"]
     3876  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select Pages', 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3877    className: "content-visibility-help-text"
     3878  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select the pages upon which you would like this block to be ', 'content-visibility') + props.attributes.contentVisibility), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__["ContentVisibilityMultiSelect"], {
     3879    data: data,
     3880    labelledBy: "Select Page",
     3881    props: props,
     3882    type: type
     3883  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3884    className: "content-visibility-submit-special-pages-button-container"
     3885  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3886    isPrimary: true,
     3887    className: "content-visibility-submit-special-pages",
     3888    onClick: toggleVisible
     3889  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Set Selected', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3890    icon: "editor-help",
     3891    iconSize: "12"
     3892  }), " ", Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("strong", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Help', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])("Selecting one or more pages from this list will mean that this block will only be ".concat(props.attributes.contentVisibility, " on those pages. If you want this block to be ").concat(props.attributes.contentVisibility, " on ALL pages, please use the 'Special Pages' option and select 'Any Page'"), 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["IconButton"], {
     3893    className: "content-visibility-close-popover",
     3894    icon: "no",
     3895    label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Close', 'content-visibility'),
     3896    onClick: toggleVisible
     3897  }))));
     3898});
     3899/* harmony default export */ __webpack_exports__["default"] = (PagePageInserter);
     3900
     3901/***/ }),
     3902
     3903/***/ "./src/controls/special-page/content-visibility-post-page-inserter.js":
     3904/*!****************************************************************************!*\
     3905  !*** ./src/controls/special-page/content-visibility-post-page-inserter.js ***!
     3906  \****************************************************************************/
     3907/*! exports provided: default */
     3908/***/ (function(module, __webpack_exports__, __webpack_require__) {
     3909
     3910"use strict";
     3911__webpack_require__.r(__webpack_exports__);
     3912/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     3913/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     3914/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     3915/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     3916/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     3917/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__);
     3918/* harmony import */ var _helpers_get_posts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/get-posts */ "./src/helpers/get-posts.js");
     3919/* harmony import */ var _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/keep-popup-open */ "./src/helpers/keep-popup-open.js");
     3920/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     3921/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
     3922/* harmony import */ var _helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../helpers/special-page-insert-text */ "./src/helpers/special-page-insert-text.js");
     3923/* harmony import */ var _helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../helpers/special-pages-insert-button-class */ "./src/helpers/special-pages-insert-button-class.js");
     3924/* harmony import */ var _multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../multiselect/content-visibility-multiselect */ "./src/controls/multiselect/content-visibility-multiselect.js");
     3925
     3926
     3927
     3928
     3929
     3930
     3931
     3932
     3933
     3934var PostPageInserter = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
     3935  isVisible: false
     3936})(function (_ref) {
     3937  var isVisible = _ref.isVisible,
     3938      setState = _ref.setState,
     3939      props = _ref.props;
     3940
     3941  /**
     3942   * Our data, passed from PHP and manipulated to be useful here in JS.
     3943   */
     3944  var data = Object(_helpers_get_posts__WEBPACK_IMPORTED_MODULE_3__["default"])();
     3945  /**
     3946   * This controls the key used where the data is stored.
     3947   */
     3948
     3949  var type = 'posts';
     3950  /**
     3951   * Helps with the content of the inserter button.
     3952   */
     3953
     3954  var niceName = {
     3955    singular: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Post', 'content-visibility'),
     3956    plural: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Posts', 'content-visibility')
     3957  };
     3958  /**
     3959   * Toggle the visible state. Detemines whether the popup is open or not.
     3960   */
     3961
     3962  var toggleVisible = function toggleVisible() {
     3963    setState(function (state) {
     3964      return {
     3965        isVisible: !state.isVisible
     3966      };
     3967    });
     3968  };
     3969
     3970  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
     3971    className: "content-visibility-special-page-inserter"
     3972  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3973    icon: "admin-post",
     3974    iconSize: "12"
     3975  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3976    isSecondary: true,
     3977    isSmall: true,
     3978    isLink: true,
     3979    onClick: toggleVisible,
     3980    className: Object(_helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__["default"])(props, type)
     3981  }, Object(_helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__["default"])(props, type, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select specific posts', 'content-visibility'), niceName), isVisible && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Popover"], {
     3982    position: "middle left",
     3983    className: "content-visibility-special-page-help-instructions-popover",
     3984    onClick: _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__["default"]
     3985  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select Posts', 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3986    className: "content-visibility-help-text"
     3987  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select the posts upon which you would like this block to be ', 'content-visibility') + props.attributes.contentVisibility), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__["ContentVisibilityMultiSelect"], {
     3988    data: data,
     3989    labelledBy: "Select Page",
     3990    props: props,
     3991    type: type
     3992  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3993    className: "content-visibility-submit-special-pages-button-container"
     3994  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3995    isPrimary: true,
     3996    className: "content-visibility-submit-special-pages",
     3997    onClick: toggleVisible
     3998  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Set Selected', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3999    icon: "editor-help",
     4000    iconSize: "12"
     4001  }), " ", Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("strong", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Help', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])("Selecting one or more posts from this list will mean that this block will only be ".concat(props.attributes.contentVisibility, " on those posts. If you want this block to be ").concat(props.attributes.contentVisibility, " on ALL posts, please use the 'Special Pages' option and select 'Any Post'"), 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["IconButton"], {
     4002    className: "content-visibility-close-popover",
     4003    icon: "no",
     4004    label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Close', 'content-visibility'),
     4005    onClick: toggleVisible
     4006  }))));
     4007});
     4008/* harmony default export */ __webpack_exports__["default"] = (PostPageInserter);
     4009
     4010/***/ }),
     4011
    26704012/***/ "./src/controls/special-page/content-visibility-special-page-controls.js":
    26714013/*!*******************************************************************************!*\
     
    27294071    });
    27304072  });
    2731 } // Only load the Widgets-related controls on the widgets screen
    2732 
    2733 
    2734 if ('appearance_page_gutenberg-widgets' === ContentVisibility.screen) {
     4073} // Only load the Widgets-related controls on the widgets screen or we're local, due to Widgets Screen bug.
     4074
     4075
     4076if ('appearance_page_gutenberg-widgets' === ContentVisibility.screen || '1' === ContentVisibility.local) {
    27354077  // Add our component to the Slot provided by BlockVisibilityControls
    27364078  Object(_wordpress_plugins__WEBPACK_IMPORTED_MODULE_4__["registerPlugin"])('content-visibility-04-special-page-fill', {
     
    27384080  });
    27394081}
     4082
     4083/***/ }),
     4084
     4085/***/ "./src/controls/special-page/content-visibility-special-page-page-inserter.js":
     4086/*!************************************************************************************!*\
     4087  !*** ./src/controls/special-page/content-visibility-special-page-page-inserter.js ***!
     4088  \************************************************************************************/
     4089/*! exports provided: default */
     4090/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4091
     4092"use strict";
     4093__webpack_require__.r(__webpack_exports__);
     4094/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     4095/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     4096/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     4097/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     4098/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     4099/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__);
     4100/* harmony import */ var _helpers_get_special_pages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/get-special-pages */ "./src/helpers/get-special-pages.js");
     4101/* harmony import */ var _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/keep-popup-open */ "./src/helpers/keep-popup-open.js");
     4102/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4103/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
     4104/* harmony import */ var _helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../helpers/special-page-insert-text */ "./src/helpers/special-page-insert-text.js");
     4105/* harmony import */ var _helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../helpers/special-pages-insert-button-class */ "./src/helpers/special-pages-insert-button-class.js");
     4106/* harmony import */ var _multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../multiselect/content-visibility-multiselect */ "./src/controls/multiselect/content-visibility-multiselect.js");
     4107
     4108
     4109
     4110
     4111
     4112
     4113
     4114
     4115
     4116var SpecialPagePageInserter = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
     4117  isVisible: false
     4118})(function (_ref) {
     4119  var isVisible = _ref.isVisible,
     4120      setState = _ref.setState,
     4121      props = _ref.props;
     4122
     4123  /**
     4124   * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages
     4125   * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.
     4126   */
     4127  var specialPages = Object(_helpers_get_special_pages__WEBPACK_IMPORTED_MODULE_3__["default"])();
     4128  /**
     4129   * This controls the key used where the data is stored.
     4130   */
     4131
     4132  var type = 'specialPages';
     4133  /**
     4134   * Helps with the content of the inserter button.
     4135   */
     4136
     4137  var niceName = {
     4138    singular: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Special Page', 'content-visibility'),
     4139    plural: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Special Pages', 'content-visibility')
     4140  };
     4141  /**
     4142   * Toggle the visible state. Detemines whether the popup is open or not.
     4143   */
     4144
     4145  var toggleVisible = function toggleVisible() {
     4146    setState(function (state) {
     4147      return {
     4148        isVisible: !state.isVisible
     4149      };
     4150    });
     4151  };
     4152
     4153  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
     4154    className: "content-visibility-special-page-inserter"
     4155  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     4156    icon: "text-page",
     4157    iconSize: "12"
     4158  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     4159    isSecondary: true,
     4160    isSmall: true,
     4161    isLink: true,
     4162    onClick: toggleVisible,
     4163    className: Object(_helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__["default"])(props, type)
     4164  }, Object(_helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__["default"])(props, type, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select special pages', 'content-visibility'), niceName), isVisible && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Popover"], {
     4165    position: "middle left",
     4166    className: "content-visibility-special-page-help-instructions-popover",
     4167    onClick: _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__["default"]
     4168  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Insert Special Pages', 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     4169    className: "content-visibility-help-text"
     4170  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select the special pages upon which you would like this block to be ', 'content-visibility') + props.attributes.contentVisibility), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__["ContentVisibilityMultiSelect"], {
     4171    data: specialPages,
     4172    labelledBy: "Select Page Type",
     4173    props: props,
     4174    type: type
     4175  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     4176    className: "content-visibility-submit-special-pages-button-container"
     4177  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     4178    isPrimary: true,
     4179    className: "content-visibility-submit-special-pages",
     4180    onClick: toggleVisible
     4181  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Set Selected', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     4182    icon: "editor-help",
     4183    iconSize: "12"
     4184  }), " ", Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("strong", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('What are Special Pages?', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('By default, WordPress websites contain more than just the posts and pages you create here in the dashboard. Content Visibility allows you to display your blocks on any of the following types of pages that your theme can make available to your visitors. ', 'content-visibility-special-page')), specialPages.map(function (specialPage) {
     4185    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", null, specialPage.label), ": ", specialPage.notes);
     4186  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["IconButton"], {
     4187    className: "content-visibility-close-popover",
     4188    icon: "no",
     4189    label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Close', 'content-visibility'),
     4190    onClick: toggleVisible
     4191  }))));
     4192});
     4193/* harmony default export */ __webpack_exports__["default"] = (SpecialPagePageInserter);
    27404194
    27414195/***/ }),
     
    27594213/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    27604214/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
    2761 
    2762 
    2763 
    2764  // import { ContentVisibilityUserAuthenticationRadioControl } from './block-visibility-user-authentication-radio-control';
     4215/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/hooks */ "@wordpress/hooks");
     4216/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_hooks__WEBPACK_IMPORTED_MODULE_4__);
     4217/* harmony import */ var _content_visibility_special_page_page_inserter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./content-visibility-special-page-page-inserter */ "./src/controls/special-page/content-visibility-special-page-page-inserter.js");
     4218/* harmony import */ var _content_visibility_page_page_inserter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./content-visibility-page-page-inserter */ "./src/controls/special-page/content-visibility-page-page-inserter.js");
     4219/* harmony import */ var _content_visibility_post_page_inserter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./content-visibility-post-page-inserter */ "./src/controls/special-page/content-visibility-post-page-inserter.js");
     4220
     4221
     4222
     4223
     4224
     4225
     4226
    27654227
    27664228var ContentVisibilitySpecialPagePanelBodyControl = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
    2767   option: ''
     4229  option: []
    27684230})(function (_ref) {
    27694231  var option = _ref.option,
     
    27744236    initialOpen: false,
    27754237    className: "content-visibility-control-panel block-visibility-special-page-controls"
    2776   }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["PanelRow"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, "This does not function properly yet due to a core Gutenberg bug."), props.attributes.contentVisibility && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
    2777     class: "special-page-help-intro content-visibility-help-text"
    2778   }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Select which types of pages this block will be ' + props.attributes.contentVisibility + '. Special pages include a search results page, a date or category archive, or the 404 not found page amongst others.', 'content-visibility-special-page'))));
    2779 });
     4238  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["PanelRow"], {
     4239    className: "content-visibility-page-inserter-panel-row"
     4240  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_content_visibility_special_page_page_inserter__WEBPACK_IMPORTED_MODULE_5__["default"], {
     4241    props: props
     4242  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_content_visibility_page_page_inserter__WEBPACK_IMPORTED_MODULE_6__["default"], {
     4243    props: props
     4244  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_content_visibility_post_page_inserter__WEBPACK_IMPORTED_MODULE_7__["default"], {
     4245    props: props
     4246  })), props.attributes.contentVisibility && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     4247    className: "special-page-help-intro content-visibility-help-text"
     4248  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Select the types of content upon which this block will be ' + props.attributes.contentVisibility + '.', 'content-visibility')));
     4249}); // Register our visibility rule in the main rules object.
     4250
     4251Object(_wordpress_hooks__WEBPACK_IMPORTED_MODULE_4__["addFilter"])('contentVisibility.defaultContentVisibilityRules', 'content-visibility-special-page/block-visibility-rules', registerSpecialPageVisibilityRule);
     4252
     4253function registerSpecialPageVisibilityRule(defaultRules) {
     4254  defaultRules.specialPage = {
     4255    pages: [],
     4256    specialPages: [],
     4257    posts: []
     4258  };
     4259  return defaultRules;
     4260}
    27804261
    27814262/***/ }),
     
    29074388/***/ }),
    29084389
     4390/***/ "./src/helpers/get-pages.js":
     4391/*!**********************************!*\
     4392  !*** ./src/helpers/get-pages.js ***!
     4393  \**********************************/
     4394/*! exports provided: default */
     4395/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4396
     4397"use strict";
     4398__webpack_require__.r(__webpack_exports__);
     4399/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4400/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
     4401
     4402/**
     4403 * PHP sends through a list of all the pages on the site (in any status). We massage that data to be
     4404 * usable by our Dropdown.
     4405 *
     4406 */
     4407
     4408function getPages() {
     4409  var pages = [];
     4410
     4411  if (ContentVisibility.pages.length === 0) {
     4412    return [{
     4413      label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__["__"])('No pages found.', 'content-visibility'),
     4414      value: 0,
     4415      notes: ''
     4416    }];
     4417  }
     4418
     4419  for (var page in ContentVisibility.pages) {
     4420    pages.push({
     4421      label: ContentVisibility.pages[page].label,
     4422      value: ContentVisibility.pages[page].id,
     4423      notes: ContentVisibility.pages[page].notes
     4424    });
     4425  }
     4426
     4427  return pages;
     4428} // end getPages()
     4429
     4430
     4431/* harmony default export */ __webpack_exports__["default"] = (getPages);
     4432
     4433/***/ }),
     4434
     4435/***/ "./src/helpers/get-posts.js":
     4436/*!**********************************!*\
     4437  !*** ./src/helpers/get-posts.js ***!
     4438  \**********************************/
     4439/*! exports provided: default */
     4440/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4441
     4442"use strict";
     4443__webpack_require__.r(__webpack_exports__);
     4444/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4445/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
     4446
     4447/**
     4448 * PHP sends through a list of all the posts on the site (in any status). We massage that data to be
     4449 * usable by our Dropdown.
     4450 *
     4451 */
     4452
     4453function getPosts() {
     4454  var posts = [];
     4455
     4456  if (ContentVisibility.posts.length === 0) {
     4457    return [{
     4458      label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__["__"])('No posts found.', 'content-visibility'),
     4459      value: 0,
     4460      notes: ''
     4461    }];
     4462  }
     4463
     4464  for (var post in ContentVisibility.posts) {
     4465    posts.push({
     4466      label: ContentVisibility.posts[post].label,
     4467      value: ContentVisibility.posts[post].id,
     4468      notes: ContentVisibility.posts[post].notes
     4469    });
     4470  }
     4471
     4472  return posts;
     4473} // end getPosts()
     4474
     4475
     4476/* harmony default export */ __webpack_exports__["default"] = (getPosts);
     4477
     4478/***/ }),
     4479
     4480/***/ "./src/helpers/get-special-pages.js":
     4481/*!******************************************!*\
     4482  !*** ./src/helpers/get-special-pages.js ***!
     4483  \******************************************/
     4484/*! exports provided: default */
     4485/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4486
     4487"use strict";
     4488__webpack_require__.r(__webpack_exports__);
     4489/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     4490/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     4491/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     4492/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     4493
     4494
     4495/**
     4496 * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages
     4497 * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.
     4498 *
     4499 */
     4500
     4501function getSpecialPages() {
     4502  var specialPages = [];
     4503
     4504  for (var specialPage in ContentVisibility.specialPages) {
     4505    specialPages.push({
     4506      label: ContentVisibility.specialPages[specialPage].label,
     4507      value: ContentVisibility.specialPages[specialPage].keyValue,
     4508      notes: ContentVisibility.specialPages[specialPage].notes,
     4509      icon: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     4510        size: "12",
     4511        icon: ContentVisibility.specialPages[specialPage].icon
     4512      })
     4513    });
     4514  }
     4515
     4516  return specialPages;
     4517} // end getSpecialPages()
     4518
     4519
     4520/* harmony default export */ __webpack_exports__["default"] = (getSpecialPages);
     4521
     4522/***/ }),
     4523
     4524/***/ "./src/helpers/has-parent-with-class.js":
     4525/*!**********************************************!*\
     4526  !*** ./src/helpers/has-parent-with-class.js ***!
     4527  \**********************************************/
     4528/*! exports provided: default */
     4529/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4530
     4531"use strict";
     4532__webpack_require__.r(__webpack_exports__);
     4533/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js");
     4534/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);
     4535
     4536
     4537/**
     4538 * Is the passed element a child of an element that has a class of the passed parentClassName.
     4539 * From: https://codepen.io/ross-angus/pen/eYJRmZR
     4540 *
     4541 * @param {object} element The name of the block.
     4542 * @param {string} parentClassName the name of the class on the parent to check for.
     4543 */
     4544function hasParentWithClass(element, classname) {
     4545  // SVGs are weird, man.
     4546  if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(element.className) !== 'object' && element.className.split(' ').indexOf(classname) >= 0) {
     4547    return true;
     4548  } else if (element.tagName !== 'HTML') {
     4549    // If you've reached the body, you've gone too far
     4550    return element.parentNode && hasParentWithClass(element.parentNode, classname);
     4551  } else {
     4552    return false;
     4553  }
     4554} //end hasParentWithClass()
     4555
     4556
     4557/* harmony default export */ __webpack_exports__["default"] = (hasParentWithClass);
     4558
     4559/***/ }),
     4560
    29094561/***/ "./src/helpers/is-valid-blocktype.js":
    29104562/*!*******************************************!*\
     
    29284580
    29294581/* harmony default export */ __webpack_exports__["default"] = (isValidBlockType);
     4582
     4583/***/ }),
     4584
     4585/***/ "./src/helpers/keep-popup-open.js":
     4586/*!****************************************!*\
     4587  !*** ./src/helpers/keep-popup-open.js ***!
     4588  \****************************************/
     4589/*! exports provided: default */
     4590/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4591
     4592"use strict";
     4593__webpack_require__.r(__webpack_exports__);
     4594/* harmony import */ var _has_parent_with_class__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./has-parent-with-class */ "./src/helpers/has-parent-with-class.js");
     4595
     4596/**
     4597 * The Popup component closes if it loses focus by default. For us, we want to ensure it
     4598 * stays open until someone intentially closes it via either setting the selected items,
     4599 * pressing a close button, or clicking the button they initially used to open the popup.
     4600 *
     4601 * @param {event} event The click event.
     4602 * @return null
     4603 */
     4604
     4605var keepPopupOpen = function keepPopupOpen(event) {
     4606  if (false === event) {
     4607    return;
     4608  } // Determine if what has been clicked on is in the popover or not.
     4609
     4610
     4611  var eTarget = event.target;
     4612
     4613  if (Object(_has_parent_with_class__WEBPACK_IMPORTED_MODULE_0__["default"])(eTarget, 'components-popover__content')) {
     4614    event.stopPropagation();
     4615  }
     4616
     4617  return;
     4618};
     4619
     4620/* harmony default export */ __webpack_exports__["default"] = (keepPopupOpen);
     4621
     4622/***/ }),
     4623
     4624/***/ "./src/helpers/special-page-insert-text.js":
     4625/*!*************************************************!*\
     4626  !*** ./src/helpers/special-page-insert-text.js ***!
     4627  \*************************************************/
     4628/*! exports provided: default */
     4629/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4630
     4631"use strict";
     4632__webpack_require__.r(__webpack_exports__);
     4633/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4634/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
     4635
     4636/**
     4637 * Determine the text for the button which opens the popup for the special pages inserter. By default, if there are
     4638 * no special pages selected, it will be 'Select special pages'. However, if there are special pages set, it will
     4639 * say how many.
     4640 *
     4641 * @param object props the props for this current iteration of the inserter.
     4642 * @param string type the key in the object data store for specialPages
     4643 * @param string defaultVal the original, default, text for the button (which is shown we no special pages are selected)
     4644 * @param object niceName the text-friendly versions of the type of special page. i.e. "Special Pages" as opposed to 'special-page'.
     4645 *                        object contains a singular and plural property.
     4646 * @return string the text to be used for the button.
     4647 */
     4648
     4649var specialPagesInsertText = function specialPagesInsertText(props, type, defaultVal, niceName) {
     4650  // if nothing is set, return a prompt to select special pages.
     4651  if (props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0) {
     4652    return defaultVal;
     4653  }
     4654
     4655  var shownOrHidden = props.attributes.contentVisibility;
     4656  var specialPages = props.attributes.contentVisibilityRules.specialPage[type];
     4657  var specialPagesCount = specialPages.length;
     4658  var niceType = specialPagesCount === 1 ? niceName.singular : niceName.plural;
     4659  var insertText = shownOrHidden + Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__["__"])(' on ') + specialPagesCount + ' ' + niceType;
     4660  return insertText;
     4661};
     4662
     4663/* harmony default export */ __webpack_exports__["default"] = (specialPagesInsertText);
     4664
     4665/***/ }),
     4666
     4667/***/ "./src/helpers/special-pages-insert-button-class.js":
     4668/*!**********************************************************!*\
     4669  !*** ./src/helpers/special-pages-insert-button-class.js ***!
     4670  \**********************************************************/
     4671/*! exports provided: default */
     4672/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4673
     4674"use strict";
     4675__webpack_require__.r(__webpack_exports__);
     4676/**
     4677 * The class which is given to the button used to toggle the popover where people can select which content to select.
     4678 * We add a 'has-items' class if someone has chosen at least one item.
     4679 *
     4680 * @return string
     4681 */
     4682var specialPagesInsertButtonClass = function specialPagesInsertButtonClass(props, type) {
     4683  // If we don't have any items selected, just basic class.
     4684  if (props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0) {
     4685    return 'content-visibility-special-page-inserter-toggle';
     4686  } // We have some items selected, so we have a couple classes.
     4687
     4688
     4689  return 'content-visibility-special-page-inserter-toggle has-items';
     4690};
     4691
     4692/* harmony default export */ __webpack_exports__["default"] = (specialPagesInsertButtonClass);
    29304693
    29314694/***/ }),
     
    29564719
    29574720/***/ "@wordpress/blockEditor":
    2958 /*!**********************************************!*\
    2959   !*** external {"this":["wp","blockEditor"]} ***!
    2960   \**********************************************/
     4721/*!*************************************!*\
     4722  !*** external ["wp","blockEditor"] ***!
     4723  \*************************************/
    29614724/*! no static exports found */
    29624725/***/ (function(module, exports) {
    29634726
    2964 (function() { module.exports = this["wp"]["blockEditor"]; }());
     4727(function() { module.exports = window["wp"]["blockEditor"]; }());
    29654728
    29664729/***/ }),
    29674730
    29684731/***/ "@wordpress/components":
    2969 /*!*********************************************!*\
    2970   !*** external {"this":["wp","components"]} ***!
    2971   \*********************************************/
     4732/*!************************************!*\
     4733  !*** external ["wp","components"] ***!
     4734  \************************************/
    29724735/*! no static exports found */
    29734736/***/ (function(module, exports) {
    29744737
    2975 (function() { module.exports = this["wp"]["components"]; }());
     4738(function() { module.exports = window["wp"]["components"]; }());
    29764739
    29774740/***/ }),
    29784741
    29794742/***/ "@wordpress/compose":
    2980 /*!******************************************!*\
    2981   !*** external {"this":["wp","compose"]} ***!
    2982   \******************************************/
     4743/*!*********************************!*\
     4744  !*** external ["wp","compose"] ***!
     4745  \*********************************/
    29834746/*! no static exports found */
    29844747/***/ (function(module, exports) {
    29854748
    2986 (function() { module.exports = this["wp"]["compose"]; }());
     4749(function() { module.exports = window["wp"]["compose"]; }());
    29874750
    29884751/***/ }),
    29894752
    29904753/***/ "@wordpress/element":
    2991 /*!******************************************!*\
    2992   !*** external {"this":["wp","element"]} ***!
    2993   \******************************************/
     4754/*!*********************************!*\
     4755  !*** external ["wp","element"] ***!
     4756  \*********************************/
    29944757/*! no static exports found */
    29954758/***/ (function(module, exports) {
    29964759
    2997 (function() { module.exports = this["wp"]["element"]; }());
     4760(function() { module.exports = window["wp"]["element"]; }());
    29984761
    29994762/***/ }),
    30004763
    30014764/***/ "@wordpress/hooks":
    3002 /*!****************************************!*\
    3003   !*** external {"this":["wp","hooks"]} ***!
    3004   \****************************************/
     4765/*!*******************************!*\
     4766  !*** external ["wp","hooks"] ***!
     4767  \*******************************/
    30054768/*! no static exports found */
    30064769/***/ (function(module, exports) {
    30074770
    3008 (function() { module.exports = this["wp"]["hooks"]; }());
     4771(function() { module.exports = window["wp"]["hooks"]; }());
    30094772
    30104773/***/ }),
    30114774
    30124775/***/ "@wordpress/i18n":
    3013 /*!***************************************!*\
    3014   !*** external {"this":["wp","i18n"]} ***!
    3015   \***************************************/
     4776/*!******************************!*\
     4777  !*** external ["wp","i18n"] ***!
     4778  \******************************/
    30164779/*! no static exports found */
    30174780/***/ (function(module, exports) {
    30184781
    3019 (function() { module.exports = this["wp"]["i18n"]; }());
     4782(function() { module.exports = window["wp"]["i18n"]; }());
    30204783
    30214784/***/ }),
    30224785
    30234786/***/ "@wordpress/plugins":
    3024 /*!******************************************!*\
    3025   !*** external {"this":["wp","plugins"]} ***!
    3026   \******************************************/
     4787/*!*********************************!*\
     4788  !*** external ["wp","plugins"] ***!
     4789  \*********************************/
    30274790/*! no static exports found */
    30284791/***/ (function(module, exports) {
    30294792
    3030 (function() { module.exports = this["wp"]["plugins"]; }());
     4793(function() { module.exports = window["wp"]["plugins"]; }());
     4794
     4795/***/ }),
     4796
     4797/***/ "react":
     4798/*!************************!*\
     4799  !*** external "React" ***!
     4800  \************************/
     4801/*! no static exports found */
     4802/***/ (function(module, exports) {
     4803
     4804(function() { module.exports = window["React"]; }());
    30314805
    30324806/***/ })
  • content-visibility/tags/0.1.7/build/index.js.map

    r2450785 r2471073  
    1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/controls/content-visibility-controls.js","webpack:///./src/controls/content-visibility-displayed-control.js","webpack:///./src/controls/content-visibility-rules-enabled.js","webpack:///./src/controls/content-visibility-user-authentication.js","webpack:///./src/controls/shown-or-hidden/content-visibility-shown-hidden-control.js","webpack:///./src/controls/special-page/content-visibility-special-page-controls.js","webpack:///./src/controls/special-page/content-visibility-special-page-panel.js","webpack:///./src/controls/user-authentication/content-visibility-user-authentication-radio-control.js","webpack:///./src/controls/user-authentication/user-authentication-panel-body-control.js","webpack:///./src/editor.scss","webpack:///./src/helpers/is-valid-blocktype.js","webpack:///./src/index.js","webpack:///external {\"this\":[\"wp\",\"blockEditor\"]}","webpack:///external {\"this\":[\"wp\",\"components\"]}","webpack:///external {\"this\":[\"wp\",\"compose\"]}","webpack:///external {\"this\":[\"wp\",\"element\"]}","webpack:///external {\"this\":[\"wp\",\"hooks\"]}","webpack:///external {\"this\":[\"wp\",\"i18n\"]}","webpack:///external {\"this\":[\"wp\",\"plugins\"]}"],"names":["contentVisibilityControls","createHigherOrderComponent","BlockEdit","props","isValidBlockType","name","isSelected","showControls","attributes","contentVisibilityRules","contentVisibilityRulesEnabled","__","addFilter","addContentVisibilityRulesAttribute","settings","defaultRules","applyFilters","userAuthenticated","assign","type","default","addContentVisibilityRulesPropOnSave","extraProps","blockType","ContentVisibilityDisplayedControl","withState","option","setState","rulesEnabled","addContentVisibilityAttribute","contentVisibility","addBlockVisibilityPropOnSave","ContentVisibilityRulesEnabled","state","newBVRules","setAttributes","doAction","addContentVisibilityRulesEnabledAttribute","addContentVisibilityRulesEnabledPropOnSave","withCustomClassName","BlockListBlock","iconClassName","ContentVisibilityUserAuthenticationControl","hasOwnProperty","BlockVisibilityUserAuthenitcationFill","fillProps","registerPlugin","render","ContentVisibilityShownHiddenControl","label","value","ContentVisibilitySpecialPageControls","ContentVisibilitySpecialPageFill","ContentVisibility","screen","ContentVisibilitySpecialPagePanelBodyControl","ContentVisibilityUserAuthenticationRadioControl","ContentVisibilityUserAuthenticationPanelBodyControl","invalidBlockTypes","includes"],"mappings":";;;;;;;;;;;;;;;;QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,iC;;;;;;;;;;;ACfA;AACA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0B;;;;;;;;;;;AClBA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChDA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa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AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACjBA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,+DAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,yDAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;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","file":"index.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./src/index.js\",\"style-index\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var assignValue = require('./_assignValue'),\n    copyObject = require('./_copyObject'),\n    createAssigner = require('./_createAssigner'),\n    isArrayLike = require('./isArrayLike'),\n    isPrototype = require('./_isPrototype'),\n    keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nmodule.exports = assign;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { PanelBody, PanelRow, Slot } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Fragment } from '@wordpress/element';\nimport { addFilter, applyFilters } from '@wordpress/hooks';\nimport { InspectorControls } from '@wordpress/blockEditor';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityRulesEnabled } from './content-visibility-rules-enabled';\nimport { ContentVisibilityDisplayedControl } from './content-visibility-displayed-control';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const contentVisibilityControls = createHigherOrderComponent((BlockEdit) => {\n\n    return (props) => {\n\n        if (!isValidBlockType(props.name) || !props.isSelected) {\n            return <BlockEdit {...props} />;\n        }\n\n        // Add a class to the div contining the rules so we can show/hide them when they are enabled/disabled.\n        // Normally this would be props.attributes.contentVisibilityRules for anything registered in core, or in JS. However, as it's\n        // possible to register attributes in PHP _alone_ we need to look at props.block.attributes.contentVisibilityRules -- both\n        // get updated when a block is updated.\n        let showControls = (props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled) ? 'show-controls' : 'hide-controls';\n\n        return (\n            <Fragment>\n                <BlockEdit {...props} />\n                <InspectorControls>\n                    <PanelBody title={__('Visibility', 'content-visibility')} className=\"content-visibility-controls\" initialOpen={false}>\n\n                        <PanelRow className=\"content-visibility-rules-enabled\">\n                            <ContentVisibilityRulesEnabled props={props} />\n                        </PanelRow>\n\n                        <div className={showControls + \" content-visibility-controls-container\"}>\n                            <PanelRow className=\"content-visibility-displayed-control\">\n                                <ContentVisibilityDisplayedControl props={props} />\n                            </PanelRow>\n\n                            <Slot name=\"content-visibility-extra-controls\" fillProps={props} />\n                        </div>\n\n                    </PanelBody>\n                </InspectorControls>\n            </Fragment>\n        );\n\n    };\n}, 'contentVisibilityControls');\n\naddFilter('editor.BlockEdit', 'content-visibility/content-visibility-controls', contentVisibilityControls);\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesAttribute(settings) {\n\n    // If this is a valid block\n    if (isValidBlockType(settings.name)) {\n\n        // Run the rules through a filter so we're able to add rules externally.\n        let defaultRules = applyFilters('contentVisibility.defaultContentVisibilityRules', {\n            contentVisibilityRulesEnabled: false,\n            userAuthenticated: ''\n        });\n\n        // Use Lodash's assign to gracefully handle if attributes are undefined\n        settings.attributes = assign(settings.attributes, {\n            contentVisibilityRules: {\n                type: 'object',\n                default: defaultRules\n            },\n        });\n    }\n\n    return settings;\n\n}// end addContentVisibilityRulesAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesPropOnSave(extraProps, blockType, attributes) {\n\n    // If the current block is valid, add our prop.\n    if (isValidBlockType(blockType.name)) {\n        extraProps.contentVisibilityRules = attributes.contentVisibilityRules;\n    }\n\n    return extraProps;\n\n}// end addContentVisibilityRulesPropOnSave()\n\naddFilter('blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesAttribute', addContentVisibilityRulesAttribute);\naddFilter('blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesPropOnSave', addContentVisibilityRulesPropOnSave);","import { Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityShownHiddenControl } from './shown-or-hidden/content-visibility-shown-hidden-control';\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityDisplayedControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n\n    if ( ! rulesEnabled ) {\n        return (\n            <Disabled>\n                <ContentVisibilityShownHiddenControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityShownHiddenControl props={ props } />\n    );\n\n} );\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibility: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addBlockVisibilityPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibility = attributes.contentVisibility;\n\t}\n\n\treturn extraProps;\n\n}// end addBlockVisibilityPropOnSave()\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityAttribute', addContentVisibilityAttribute );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addBlockVisibilityPropOnSave', addBlockVisibilityPropOnSave );","import { ToggleControl } from '@wordpress/components';\nimport { withState, createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter, doAction } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityRulesEnabled = withState( {\n    rulesEnabled: false,\n} )( ( { rulesEnabled, setState, props } ) => (\n    <ToggleControl\n        label={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ? __( 'Rules Enabled', 'content-visibility' ) : __( 'Rules Disabled', 'content-visibility' ) }\n        checked={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled || rulesEnabled }\n        onChange={ ( rulesEnabled ) => setState( ( state ) => {\n\n            let newBVRules = { ...props.attributes.contentVisibilityRules };\n            newBVRules.contentVisibilityRulesEnabled = rulesEnabled;\n\n            props.setAttributes( {\n                contentVisibilityRules: newBVRules,\n            } );\n\n            // Fire an action so we can see what's happened in other controls. This can be useful,\n            // for example when setting rules for roles - pointless if a user isn't signed in.\n            doAction( 'contentVisibility.onChange.contentVisibilityRulesEnabled', 'content-visibility/onChange', rulesEnabled, props );\n\n            // Sets the state\n            return (\n                { rulesEnabled: ! state.rulesEnabled }\n            );\n        } ) }\n    />\n) );\n\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesEnabledAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibilityRulesEnabled: {\n\t\t\t\ttype: 'boolean',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityRulesEnabledAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesEnabledPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibilityRulesEnabled = attributes.contentVisibilityRulesEnabled;\n    }\n\n\treturn extraProps;\n\n}// end addContentVisibilityRulesEnabledPropOnSave()\n\n/**\n * Add a custom class name to each block that has content visibility rules enabled.\n *\n * @param {Object} BlockListBlock The current block\n *\n * @return {Object} The block with a custom class name added if the block has rules enabled. The unmodified block otherwise.\n */\nconst withCustomClassName = createHigherOrderComponent( ( BlockListBlock ) => {\n\n    return ( props ) => {\n\n        if ( ! props.attributes.contentVisibility || ! props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ) {\n            return <BlockListBlock {...props} />;\n        }\n\n        let iconClassName = 'content-visibility-rules-enabled-' + props.attributes.contentVisibility;\n\n        return <BlockListBlock {...props} className={ iconClassName } />\n\n    };\n}, 'withCustomClassName' );\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesEnabledAttribute', addContentVisibilityRulesEnabledAttribute, 999 );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesEnabledPropOnSave', addContentVisibilityRulesEnabledPropOnSave, 999 );\n\naddFilter( 'editor.BlockListBlock', 'content-visibility/add-class-name-for-blocks-with-rules', withCustomClassName, 999 );","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilityUserAuthenticationPanelBodyControl } from './user-authentication/user-authentication-panel-body-control';\n\n\nexport const ContentVisibilityUserAuthenticationControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled><ContentVisibilityUserAuthenticationPanelBodyControl props={ props } /></Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityUserAuthenticationPanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilityUserAuthenticationControl> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilityUserAuthenticationControl component.\n */\nfunction BlockVisibilityUserAuthenitcationFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilityUserAuthenticationControl props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Add our component to the Slot provided by BlockVisibilityControls\nregisterPlugin( 'content-visibility-01-user-authentication-fill', { render: BlockVisibilityUserAuthenitcationFill } );\n","import { RadioControl, PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nexport const ContentVisibilityShownHiddenControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Shown or Hidden', 'content-visibility-user-role' ) }\n            initialOpen={ true }\n            className=\"content-visibility-control-panel content-visibility-user-role-controls\"\n        >\n            <PanelRow>\n                <RadioControl\n                    label={ __( \"When the rules below are true, this block will be: \", 'content-visibility' ) }\n                    help=\"\"\n                    selected={ props.attributes.contentVisibility || option }\n                    options={ [\n                        { label: __( 'Shown', 'content-visibility' ), value: 'shown' },\n                        { label: __( 'Hidden', 'content-visibility' ), value: 'hidden' },\n                    ] }\n                    onChange={ ( option ) => {\n\n                        setState( { option } );\n\n                        props.setAttributes( {\n                            contentVisibility: option,\n                        } );\n\n                    } }\n                />\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilitySpecialPagePanelBodyControl } from './content-visibility-special-page-panel';\n\n\nexport const ContentVisibilitySpecialPageControls = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled>\n                <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilitySpecialPageControls> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilitySpecialPageControls component.\n */\nfunction ContentVisibilitySpecialPageFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilitySpecialPageControls props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Only load the Widgets-related controls on the widgets screen\nif ( 'appearance_page_gutenberg-widgets' === ContentVisibility.screen ) {\n    // Add our component to the Slot provided by BlockVisibilityControls\n    registerPlugin( 'content-visibility-04-special-page-fill', { render: ContentVisibilitySpecialPageFill } );\n}\n","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n// import { ContentVisibilityUserAuthenticationRadioControl } from './block-visibility-user-authentication-radio-control';\n\nexport const ContentVisibilitySpecialPagePanelBodyControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Special Page', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel block-visibility-special-page-controls\"\n        >\n            <PanelRow>\n                {/* <ContentVisibilityUserAuthenticationRadioControl props={ props } /> */}\n                <p>This does not function properly yet due to a core Gutenberg bug.</p>\n\n                { props.attributes.contentVisibility && (\n                    <p class=\"special-page-help-intro content-visibility-help-text\">\n                        { __( 'Select which types of pages this block will be ' + props.attributes.contentVisibility + '. Special pages include a search results page, a date or category archive, or the 404 not found page amongst others.', 'content-visibility-special-page' ) }\n                    </p>\n                ) }\n\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","import { RadioControl } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { doAction } from '@wordpress/hooks';\n\nexport const ContentVisibilityUserAuthenticationRadioControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n\n        <RadioControl\n            label=''\n            help=''\n            className=\"content-visibility-user-authenticated-control\"\n            selected={ props.attributes.contentVisibilityRules.userAuthenticated || option }\n            options={ [\n                { label: __( 'Signed Out', 'content-visibility' ), value: 'logged-out' },\n                { label: __( 'Signed In', 'content-visibility' ), value: 'logged-in' },\n            ] }\n            onChange={ ( option ) => {\n\n                // Set the state and props.\n                setState( { option } );\n\n                let newBVRules = { ...props.attributes.contentVisibilityRules };\n                newBVRules.userAuthenticated = option;\n\n                props.setAttributes( {\n                    contentVisibilityRules: newBVRules,\n                } );\n\n                // Fire an action so we can see what's happened in other controls. This can be useful,\n                // for example when setting rules for roles - pointless if a user isn't signed in.\n                doAction( 'contentVisibility.onChange.userAuthenticated', 'content-visibility/onChange', option, props );\n\n            } }\n        />\n\n    );\n\n} );","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { ContentVisibilityUserAuthenticationRadioControl } from './content-visibility-user-authentication-radio-control';\n\nexport const ContentVisibilityUserAuthenticationPanelBodyControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'User Authentication', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel content-visibility-user-authenticated-controls\"\n        >\n            <PanelRow>\n                <ContentVisibilityUserAuthenticationRadioControl props={ props } />\n\n                { props.attributes.contentVisibility && (\n                    <p className=\"user-auth-help-intro content-visibility-help-text\">\n                        { __( 'Select whether this block will be ' + props.attributes.contentVisibility + ' if a user is signed in to this site. If neither is selected, this block will be ' + props.attributes.contentVisibility + ' regardless of whether a user is signed in or not.', 'content-visibility-user-role' ) }\n                    </p>\n                ) }\n\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","// extracted by mini-css-extract-plugin","/**\n * Is the passed block name one which supports our custom field?\n *\n * @param {string} name The name of the block.\n */\nfunction isValidBlockType( name ) {\n\n    const invalidBlockTypes = [\n        'something/unsupported',\n    ];\n\n    return ! invalidBlockTypes.includes( name );\n\n}// end isValidBlockType()\n\nexport default isValidBlockType;","import './editor.scss';\nimport './style.scss';\n\nimport contentVisibilityControls from './controls/content-visibility-controls.js';\nimport ContentVisibilityUserAuthenticationControl from './controls/content-visibility-user-authentication';\nimport ContentVisibilitySpecialPageControls from './controls/special-page/content-visibility-special-page-controls';\n","(function() { module.exports = this[\"wp\"][\"blockEditor\"]; }());","(function() { module.exports = this[\"wp\"][\"components\"]; }());","(function() { module.exports = this[\"wp\"][\"compose\"]; }());","(function() { module.exports = this[\"wp\"][\"element\"]; }());","(function() { module.exports = this[\"wp\"][\"hooks\"]; }());","(function() { module.exports = this[\"wp\"][\"i18n\"]; }());","(function() { module.exports = this[\"wp\"][\"plugins\"]; }());"],"sourceRoot":""}
     1{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/goober/dist/goober.module.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/controls/content-visibility-controls.js","webpack:///./src/controls/content-visibility-displayed-control.js","webpack:///./src/controls/content-visibility-rules-enabled.js","webpack:///./src/controls/content-visibility-user-authentication.js","webpack:///./src/controls/multiselect/content-visibility-multiselect.js","webpack:///./src/controls/shown-or-hidden/content-visibility-shown-hidden-control.js","webpack:///./src/controls/special-page/content-visibility-page-page-inserter.js","webpack:///./src/controls/special-page/content-visibility-post-page-inserter.js","webpack:///./src/controls/special-page/content-visibility-special-page-controls.js","webpack:///./src/controls/special-page/content-visibility-special-page-page-inserter.js","webpack:///./src/controls/special-page/content-visibility-special-page-panel.js","webpack:///./src/controls/user-authentication/content-visibility-user-authentication-radio-control.js","webpack:///./src/controls/user-authentication/user-authentication-panel-body-control.js","webpack:///./src/editor.scss","webpack:///./src/helpers/get-pages.js","webpack:///./src/helpers/get-posts.js","webpack:///./src/helpers/get-special-pages.js","webpack:///./src/helpers/has-parent-with-class.js","webpack:///./src/helpers/is-valid-blocktype.js","webpack:///./src/helpers/keep-popup-open.js","webpack:///./src/helpers/special-page-insert-text.js","webpack:///./src/helpers/special-pages-insert-button-class.js","webpack:///./src/index.js","webpack:///external [\"wp\",\"blockEditor\"]","webpack:///external [\"wp\",\"components\"]","webpack:///external [\"wp\",\"compose\"]","webpack:///external [\"wp\",\"element\"]","webpack:///external [\"wp\",\"hooks\"]","webpack:///external [\"wp\",\"i18n\"]","webpack:///external [\"wp\",\"plugins\"]","webpack:///external \"React\""],"names":["contentVisibilityControls","createHigherOrderComponent","BlockEdit","props","isValidBlockType","name","isSelected","showControls","attributes","contentVisibilityRules","contentVisibilityRulesEnabled","__","addFilter","addContentVisibilityRulesAttribute","settings","defaultRules","applyFilters","userAuthenticated","assign","type","default","addContentVisibilityRulesPropOnSave","extraProps","blockType","ContentVisibilityDisplayedControl","withState","option","setState","rulesEnabled","addContentVisibilityAttribute","contentVisibility","addBlockVisibilityPropOnSave","ContentVisibilityRulesEnabled","state","newBVRules","setAttributes","doAction","addContentVisibilityRulesEnabledAttribute","addContentVisibilityRulesEnabledPropOnSave","withCustomClassName","BlockListBlock","iconClassName","ContentVisibilityUserAuthenticationControl","hasOwnProperty","BlockVisibilityUserAuthenitcationFill","fillProps","registerPlugin","render","ContentVisibilityMultiSelect","data","labelledBy","onChange","specialPage","checked","onClick","disabled","icon","label","ContentVisibilityShownHiddenControl","value","PagePageInserter","isVisible","getPages","niceName","singular","plural","toggleVisible","specialPagesInsertButtonClass","specialPagesInsertText","keepPopupOpen","PostPageInserter","getPosts","ContentVisibilitySpecialPageControls","ContentVisibilitySpecialPageFill","ContentVisibility","screen","local","SpecialPagePageInserter","specialPages","getSpecialPages","map","notes","ContentVisibilitySpecialPagePanelBodyControl","registerSpecialPageVisibilityRule","pages","posts","ContentVisibilityUserAuthenticationRadioControl","ContentVisibilityUserAuthenticationPanelBodyControl","length","page","push","id","post","keyValue","hasParentWithClass","element","classname","className","split","indexOf","tagName","parentNode","invalidBlockTypes","includes","event","eTarget","target","stopPropagation","defaultVal","undefined","shownOrHidden","specialPagesCount","niceType","insertText"],"mappings":";;;;;;;;;;;;;;;;QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,iC;;;;;;;;;;;ACfA;AACA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0B;;;;;;;;;;;AClBA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yB;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC,qEAAoB;;AAElD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO,WAAW;AAC7B,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvCA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA,eAAe,mBAAO,CAAC,uDAAa;AACpC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACpCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;ACVA;AACA;;AAEA;;;;;;;;;;;;;ACHA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,a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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,yDAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6B;AACoD;;AAEjF;AACA;AACA;AACA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,GAAG,mCAAmC;AACtC;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,iBAAiB,cAAc;AAC/B;AACA;;AAEA,iBAAiB,cAAc;AAC/B;AACA,GAAG;;;AAGH,kBAAkB,eAAe;AACjC,oBAAoB,eAAe;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;;AAEA;AACA;AACA;;AAEA,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA,GAAG,GAAG,4CAAK;AACX;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,mCAAmC,kDAAG;AACtC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS,4CAAK;AACd;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA,GAAG,GAAG,4CAAK;AACX;;AAEA;AACA;AACA;AACA,iCAAiC,kDAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oDAAM;AACtB,EAAE,uDAAS;AACX,kBAAkB;AAClB,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,gCAAgC,kDAAG;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA,SAAS,4CAAK;AACd;AACA,GAAG;AACH;AACA,WAAW,4CAAK;AAChB;AACA,KAAK,EAAE,4CAAK;AACZ;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,8BAA8B;;AAE/B,yCAAyC,kDAAG;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qCAAqC,kDAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,sDAAQ;AAC1B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA,wBAAwB,yDAAW;AACnC;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,qDAAO;AACxB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK,qCAAqC;AAC1C,GAAG;AACH;AACA;;AAEA,SAAS,4CAAK;AACd;AACA;AACA;AACA,GAAG,oBAAoB,4CAAK;AAC5B;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG,GAAG,4CAAK;AACX;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe,4CAAK,uEAAuE,4CAAK;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG,GAAG,4CAAK,2CAA2C;AACtD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA,GAAG;AACH;;AAEA,2BAA2B,kDAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kDAAG;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qCAAqC,kDAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mCAAmC,kDAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,uCAAuC,kDAAG;AAC1C;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,sDAAQ;AAC1B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA;AACA,gBAAgB,oDAAM;AACtB;;AAEA,EAAE,uDAAS;AACX;AACA,GAAG;AACH,EAAE,uDAAS;AACX;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA,GAAG,0BAA0B,4CAAK,mEAAmE,4CAAK;AAC1G;AACA;AACA;AACA;AACA,GAAG,uBAAuB,4CAAK,8BAA8B,4CAAK;AAClE;AACA,GAAG,gBAAgB,4CAAK;AACxB;AACA,GAAG,EAAE,4CAAK;AACV;AACA,GAAG,EAAE,4CAAK,iDAAiD;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB,4CAAK;AAC7B;AACA,GAAG,iEAAiE,4CAAK;AACzE;;AAEA,kCAAkC,kDAAG;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4CAAK;AACd;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEe,0EAAW,EAAC;AACkB;AAC7C;;;;;;;;;;;;AC76BA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEO,IAAMA,yBAAyB,GAAGC,qFAA0B,CAAC,UAACC,SAAD,EAAe;AAE/E,SAAO,UAACC,KAAD,EAAW;AAEd,QAAI,CAACC,2EAAgB,CAACD,KAAK,CAACE,IAAP,CAAjB,IAAiC,CAACF,KAAK,CAACG,UAA5C,EAAwD;AACpD,aAAO,yEAAC,SAAD,EAAeH,KAAf,CAAP;AACH,KAJa,CAMd;AACA;AACA;AACA;;;AACA,QAAII,YAAY,GAAIJ,KAAK,CAACK,UAAN,CAAiBC,sBAAjB,CAAwCC,6BAAzC,GAA0E,eAA1E,GAA4F,eAA/G;AAEA,WACI,yEAAC,2DAAD,QACI,yEAAC,SAAD,EAAeP,KAAf,CADJ,EAEI,yEAAC,wEAAD,QACI,yEAAC,+DAAD;AAAW,WAAK,EAAEQ,0DAAE,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","file":"index.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp_content_visibility\"] = window[\"webpackJsonp_content_visibility\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./src/index.js\",\"style-index\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    module.exports = _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    module.exports = _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nmodule.exports = _typeof;","let e={data:\"\"},t=t=>{try{let e=t?t.querySelector(\"#_goober\"):self._goober;return e||(e=(t||document.head).appendChild(document.createElement(\"style\")),e.innerHTML=\" \",e.id=\"_goober\"),e.firstChild}catch(e){}return t||e},r=e=>{let r=t(e),a=r.data;return r.data=\"\",a},a=/(?:([A-Z0-9-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(})/gi,l=/\\/\\*[\\s\\S]*?\\*\\/|\\s{2,}|\\n/gm,o=(e,t)=>{let r,a=\"\",l=\"\",n=\"\";for(let c in e){let s=e[c];\"object\"==typeof s?(r=t?t.replace(/([^,])+/g,e=>c.replace(/([^,])+/g,t=>/&/g.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):c,l+=\"@\"==c[0]?\"f\"==c[1]?o(s,c):c+\"{\"+o(s,\"k\"==c[1]?\"\":t)+\"}\":o(s,r)):\"@\"==c[0]&&\"i\"==c[1]?a=c+\" \"+s+\";\":n+=o.p?o.p(c.replace(/[A-Z]/g,\"-$&\").toLowerCase(),s):c.replace(/[A-Z]/g,\"-$&\").toLowerCase()+\":\"+s+\";\"}return n[0]?(r=t?t+\"{\"+n+\"}\":n,a+r+l):a+l},n={},c=e=>{let t=\"\";for(let r in e)t+=r+(\"object\"==typeof e[r]?c(e[r]):e[r]);return t},s=(e,t,r,s,p)=>{let i=\"object\"==typeof e?c(e):e,u=n[i]||(n[i]=\"go\"+i.split(\"\").reduce((e,t)=>101*e+t.charCodeAt(0)>>>0,11));if(!n[u]){let t=\"object\"==typeof e?e:(e=>{let t,r=[{}];for(;t=a.exec(e.replace(l,\"\"));)t[4]&&r.shift(),t[3]?r.unshift(r[0][t[3]]=r[0][t[3]]||{}):t[4]||(r[0][t[1]]=t[2]);return r[0]})(e);n[u]=o(p?{[\"@keyframes \"+u]:t}:t,r?\"\":\".\"+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(n[u],t,s),u},p=(e,t,r)=>e.reduce((e,a,l)=>{let n=t[l];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):e}return e+a+(null==n?\"\":n)},\"\");function i(e){let r=this||{},a=e.call?e(r.p):e;return s(a.unshift?a.raw?p(a,[].slice.call(arguments,1),r.p):a.reduce((e,t)=>t?Object.assign(e,t.call?t(r.p):t):e,{}):a,t(r.target),r.g,r.o,r.k)}let u,f,d=i.bind({g:1}),g=i.bind({k:1});function b(e,t,r){o.p=t,u=e,f=r}function h(e,t){let r=this||{};return function(){let a=arguments;function l(o,n){let c=Object.assign({},o),s=c.className||l.className;return r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/g.test(s),c.className=i.apply(r,a)+(s?\" \"+s:\"\"),t&&(c.ref=n),u(c.as||e,c)}return t?t(l):l}}export{i as css,r as extractCss,d as glob,g as keyframes,b as setup,h as styled};\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var assignValue = require('./_assignValue'),\n    copyObject = require('./_copyObject'),\n    createAssigner = require('./_createAssigner'),\n    isArrayLike = require('./isArrayLike'),\n    isPrototype = require('./_isPrototype'),\n    keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nmodule.exports = assign;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","import { css } from 'goober';\nimport React, { useRef, useEffect, useState, useCallback, useMemo } from 'react';\n\nvar debounce = function debounce(func, wait) {\n  var timeout;\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    clearTimeout(timeout);\n    timeout = setTimeout(function () {\n      func.apply(null, args);\n    }, wait);\n  };\n};\n\n/**\r\n * Filters React Select options and sorts by similarity to a search filter.\r\n * Handles partial matches, eg. searching for \"Waberg High\" will find \"Raoul\r\n * Wallenberg Traditional High School\". Case insensitive. Ignores\r\n * non-alphanumeric characters.\r\n *\r\n * @param  options  An unfiltered list of Options.\r\n * @param? filter  A string to compare against Option labels.\r\n * @param? substitutions  Strings with multiple spellings or variations that we\r\n *           expect to match, eg. accented characters or abbreviated words.\r\n *\r\n * @return A filtered and sorted array of Options.\r\n */\nfunction filterOptions(options, filter, substitutions) {\n  // If the filter is blank, return the full list of Options.\n  if (!filter) {\n    return options;\n  }\n\n  var cleanFilter = cleanUpText(filter, substitutions);\n  return options // Filter out undefined or null Options.\n  .filter(function (_ref) {\n    var label = _ref.label,\n        value = _ref.value;\n    return label != null && value != null;\n  }) // Create a {score, Option} pair for each Option based on its label's\n  // similarity to the filter text.\n  .map(function (option) {\n    return {\n      option: option,\n      score: typeaheadSimilarity(cleanUpText(option.label, substitutions), cleanFilter)\n    };\n  }) // Only include matches of the entire substring, with a slight\n  // affordance for transposition or extra characters.\n  .filter(function (pair) {\n    return pair.score >= cleanFilter.length - 2;\n  }) // Sort 'em by order of their score.\n  .sort(function (a, b) {\n    return b.score - a.score;\n  }) // …and grab the original Options back from their pairs.\n  .map(function (pair) {\n    return pair.option;\n  });\n}\n/**\r\n * Scores the similarity between two strings by returning the length of the\r\n * longest common subsequence. Intended for comparing strings of different\r\n * lengths; eg. when matching a typeahead search input with a school name.\r\n\n * Meant for use in an instant search box where results are being fetched\r\n * as a user is typing.\r\n *\r\n * @param  a  The longer string (though, we flip them if it's shorter).\r\n * @param  b  The shorter string, eg. a typeahead search input.\r\n *\r\n * @return The length of the longest common subsequence. Higher scores indicate\r\n *           closer matches.\r\n */\n\nfunction typeaheadSimilarity(a, b) {\n  var aLength = a.length;\n  var bLength = b.length;\n  var table = [];\n\n  if (!aLength || !bLength) {\n    return 0;\n  } // Ensure `a` isn't shorter than `b`.\n\n\n  if (aLength < bLength) {\n    var _ref2 = [b, a];\n    a = _ref2[0];\n    b = _ref2[1];\n  } // Early exit if `a` includes `b`; these will be scored higher than any\n  // other options with the same `b` (filter string), with a preference for\n  // shorter `a` strings (option labels).\n\n\n  if (a.indexOf(b) !== -1) {\n    return bLength + 1 / aLength;\n  } // Initialize the table axes:\n  //\n  //    0 0 0 0 ... bLength\n  //    0\n  //    0\n  //\n  //   ...\n  //\n  // aLength\n  //\n\n\n  for (var x = 0; x <= aLength; ++x) {\n    table[x] = [0];\n  }\n\n  for (var y = 0; y <= bLength; ++y) {\n    table[0][y] = 0;\n  } // Populate the rest of the table with a dynamic programming algorithm.\n\n\n  for (var _x = 1; _x <= aLength; ++_x) {\n    for (var _y = 1; _y <= bLength; ++_y) {\n      table[_x][_y] = a[_x - 1] === b[_y - 1] ? 1 + table[_x - 1][_y - 1] : Math.max(table[_x][_y - 1], table[_x - 1][_y]);\n    }\n  }\n\n  return table[aLength][bLength];\n}\n/**\r\n * Apply string substitutions, remove non-alphanumeric characters, and convert\r\n * all letters to uppercase.\r\n *\r\n * eg. 'Scoil Bhríde Primary School' may become 'SCOILBHRIDEPRIMARYSCHOOL'.\r\n *\r\n * @param  input  An unsanitized input string.\r\n * @param  substitutions  Strings with multiple spellings or variations that we\r\n *          expect to match, for example accented characters or abbreviated\r\n *          words.\r\n *\r\n * @return The sanitized text.\r\n */\n\nfunction cleanUpText(input, substitutions) {\n  if (!input) {\n    return \"\";\n  } // Uppercase and remove all non-alphanumeric, non-accented characters.\n  // Also remove underscores.\n\n\n  input = input.toUpperCase().replace(/((?=[^\\u00E0-\\u00FC])\\W)|_/g, \"\");\n\n  if (!substitutions) {\n    return input;\n  }\n\n  var safeSubstitutions = substitutions; // For Flow.\n  // Replace all strings in `safeSubstitutions` with their standardized\n  // counterparts.\n\n  return Object.keys(safeSubstitutions).reduce(function (output, substitution) {\n    var unsubbed = new RegExp(substitution, \"g\");\n    return output.replace(unsubbed, safeSubstitutions[substitution]);\n  }, input);\n}\n\nvar strings = {\n  selectSomeItems: \"Select...\",\n  allItemsAreSelected: \"All items are selected.\",\n  selectAll: \"Select All\",\n  search: \"Search\",\n  clearSearch: \"Clear Search\",\n  clearSelected: \"Clear Selected\"\n};\nfunction getString(key, overrideStrings) {\n  return (overrideStrings == null ? void 0 : overrideStrings[key]) || strings[key];\n}\n\nvar Cross = function Cross() {\n  return React.createElement(\"svg\", {\n    width: \"24\",\n    height: \"24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: \"2\",\n    className: \"dropdown-search-clear-icon gray\"\n  }, React.createElement(\"line\", {\n    x1: \"18\",\n    y1: \"6\",\n    x2: \"6\",\n    y2: \"18\"\n  }), React.createElement(\"line\", {\n    x1: \"6\",\n    y1: \"6\",\n    x2: \"18\",\n    y2: \"18\"\n  }));\n};\n\nvar DefaultRenderer = /*#__PURE__*/css({\n  \"& input,& span\": {\n    verticalAlign: \"middle\",\n    margin: 0\n  },\n  span: {\n    display: \"inline-block\",\n    paddingLeft: \"5px\"\n  },\n  \"&.disabled\": {\n    opacity: 0.5\n  }\n});\n\nvar DefaultItemRenderer = function DefaultItemRenderer(_ref) {\n  var checked = _ref.checked,\n      option = _ref.option,\n      onClick = _ref.onClick,\n      disabled = _ref.disabled;\n  return React.createElement(\"div\", {\n    className: DefaultRenderer + \" item-renderer \" + (disabled && \"disabled\")\n  }, React.createElement(\"input\", {\n    type: \"checkbox\",\n    onChange: onClick,\n    checked: checked,\n    tabIndex: -1,\n    disabled: disabled\n  }), React.createElement(\"span\", null, option.label));\n};\n\n/**\r\n * This component represents an individual item in the multi-select drop-down\r\n */\nvar ItemContainer = /*#__PURE__*/css({\n  boxSizing: \"border-box\",\n  cursor: \"pointer\",\n  display: \"block\",\n  padding: \"var(--rmsc-p)\",\n  outline: 0,\n  \"&:hover,&:focus\": {\n    background: \"var(--rmsc-hover)\"\n  },\n  \"&.selected\": {\n    background: \"var(--rmsc-selected)\"\n  }\n});\n\nvar SelectItem = function SelectItem(_ref) {\n  var _ref$itemRenderer = _ref.itemRenderer,\n      ItemRenderer = _ref$itemRenderer === void 0 ? DefaultItemRenderer : _ref$itemRenderer,\n      option = _ref.option,\n      checked = _ref.checked,\n      focused = _ref.focused,\n      tabIndex = _ref.tabIndex,\n      disabled = _ref.disabled,\n      onSelectionChanged = _ref.onSelectionChanged,\n      onClick = _ref.onClick;\n  var itemRef = useRef();\n  useEffect(function () {\n    updateFocus(); // eslint-disable-next-line\n  }, [focused]);\n\n  var toggleChecked = function toggleChecked() {\n    onSelectionChanged(!checked);\n  };\n\n  var handleClick = function handleClick(e) {\n    toggleChecked();\n    onClick(e);\n  };\n\n  var updateFocus = function updateFocus() {\n    if (focused && !disabled && itemRef) {\n      itemRef.current.focus();\n    }\n  };\n\n  var handleKeyDown = function handleKeyDown(e) {\n    switch (e.which) {\n      case 13: // Enter\n\n      case 32:\n        // Space\n        toggleChecked();\n        break;\n\n      default:\n        return;\n    }\n\n    e.preventDefault();\n  };\n\n  return React.createElement(\"label\", {\n    className: ItemContainer + \" select-item \" + (checked && \"selected\"),\n    role: \"option\",\n    \"aria-selected\": checked,\n    tabIndex: tabIndex,\n    ref: itemRef,\n    onKeyDown: handleKeyDown\n  }, React.createElement(ItemRenderer, {\n    option: option,\n    checked: checked,\n    onClick: handleClick,\n    disabled: disabled\n  }));\n};\n\n/**\r\n * This component represents an unadorned list of SelectItem (s).\r\n */\nvar SelectListUl = /*#__PURE__*/css({\n  margin: 0,\n  paddingLeft: 0,\n  li: {\n    listStyle: \"none\",\n    margin: 0\n  }\n});\nvar skipIndex = 2;\n\nvar SelectList = function SelectList(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      disabled = _ref.disabled,\n      ItemRenderer = _ref.ItemRenderer,\n      options = _ref.options,\n      focusIndex = _ref.focusIndex,\n      _onClick = _ref.onClick;\n\n  var handleSelectionChanged = function handleSelectionChanged(option, checked) {\n    if (disabled) {\n      return;\n    }\n\n    onChange(checked ? [].concat(value, [option]) : value.filter(function (o) {\n      return o.value !== option.value;\n    }));\n  };\n\n  return React.createElement(\"ul\", {\n    className: SelectListUl\n  }, options.map(function (o, i) {\n    var tabIndex = i + skipIndex;\n    return React.createElement(\"li\", {\n      key: o.hasOwnProperty(\"key\") ? o.key : i\n    }, React.createElement(SelectItem, {\n      focused: focusIndex === tabIndex,\n      tabIndex: tabIndex,\n      option: o,\n      onSelectionChanged: function onSelectionChanged(c) {\n        return handleSelectionChanged(o, c);\n      },\n      checked: value.find(function (s) {\n        return s.value === o.value;\n      }) ? true : false,\n      onClick: function onClick(e) {\n        return _onClick(e, tabIndex);\n      },\n      itemRenderer: ItemRenderer,\n      disabled: o.disabled || disabled\n    }));\n  }));\n};\n\n/**\r\n * This component represents the entire panel which gets dropped down when the\r\n * user selects the component.  It encapsulates the search filter, the\r\n * Select-all item, and the list of options.\r\n */\nvar FocusType;\n\n(function (FocusType) {\n  FocusType[FocusType[\"SEARCH\"] = -1] = \"SEARCH\";\n  FocusType[FocusType[\"NONE\"] = 1] = \"NONE\";\n})(FocusType || (FocusType = {}));\n\nvar SelectSearchContainer = /*#__PURE__*/css({\n  width: \"100%\",\n  position: \"relative\",\n  borderBottom: \"1px solid var(--rmsc-border)\",\n  input: {\n    height: \"var(--rmsc-h)\",\n    padding: \"0 var(--rmsc-p)\",\n    width: \"100%\",\n    outline: 0,\n    border: 0\n  }\n});\nvar SearchClearButton = /*#__PURE__*/css({\n  cursor: \"pointer\",\n  position: \"absolute\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  background: \"none\",\n  border: 0,\n  padding: \"0 calc(var(--rmsc-p)/2)\",\n  \"[hidden]\": {\n    display: \"none\"\n  }\n});\nvar SelectPanel = function SelectPanel(props) {\n  var onChange = props.onChange,\n      options = props.options,\n      value = props.value,\n      customFilterOptions = props.filterOptions,\n      selectAllLabel = props.selectAllLabel,\n      ItemRenderer = props.ItemRenderer,\n      disabled = props.disabled,\n      disableSearch = props.disableSearch,\n      focusSearchOnOpen = props.focusSearchOnOpen,\n      hasSelectAll = props.hasSelectAll,\n      overrideStrings = props.overrideStrings,\n      ClearIcon = props.ClearIcon,\n      debounceDuration = props.debounceDuration;\n\n  var _useState = useState(\"\"),\n      searchText = _useState[0],\n      setSearchText = _useState[1];\n\n  var _useState2 = useState(\"\"),\n      searchTextForFilter = _useState2[0],\n      setSearchTextForFilter = _useState2[1];\n\n  var _useState3 = useState(focusSearchOnOpen && !disableSearch ? FocusType.SEARCH : FocusType.NONE),\n      focusIndex = _useState3[0],\n      setFocusIndex = _useState3[1];\n\n  var debouncedSearch = useCallback(debounce(function (query) {\n    return setSearchTextForFilter(query);\n  }, debounceDuration), []);\n  var selectAllOption = {\n    label: selectAllLabel || getString(\"selectAll\", overrideStrings),\n    value: \"\"\n  };\n\n  var selectAllValues = function selectAllValues(checked) {\n    var filteredValues = filteredOptions().filter(function (o) {\n      return !o.disabled;\n    }).map(function (o) {\n      return o.value;\n    });\n\n    if (checked) {\n      var selectedValues = value.map(function (o) {\n        return o.value;\n      });\n      var finalSelectedValues = [].concat(selectedValues, filteredValues);\n      return options.filter(function (_ref) {\n        var value = _ref.value;\n        return finalSelectedValues.includes(value);\n      });\n    }\n\n    return value.filter(function (o) {\n      return !filteredValues.includes(o.value);\n    });\n  };\n\n  var selectAllChanged = function selectAllChanged(checked) {\n    var newOptions = selectAllValues(checked);\n    onChange(newOptions);\n  };\n\n  var handleSearchChange = function handleSearchChange(e) {\n    debouncedSearch(e.target.value);\n    setSearchText(e.target.value);\n    setFocusIndex(FocusType.SEARCH);\n  };\n\n  var handleClear = function handleClear() {\n    setSearchTextForFilter(\"\");\n    setSearchText(\"\");\n  };\n\n  var handleItemClicked = function handleItemClicked(index) {\n    return setFocusIndex(index);\n  };\n\n  var handleKeyDown = function handleKeyDown(e) {\n    switch (e.which) {\n      case 38:\n        // Up Arrow\n        if (e.altKey) {\n          return;\n        }\n\n        updateFocus(-1);\n        break;\n\n      case 40:\n        // Down Arrow\n        if (e.altKey) {\n          return;\n        }\n\n        updateFocus(1);\n        break;\n\n      default:\n        return;\n    }\n\n    e.stopPropagation();\n    e.preventDefault();\n  };\n\n  var handleSearchFocus = function handleSearchFocus() {\n    setFocusIndex(FocusType.SEARCH);\n  };\n\n  var filteredOptions = function filteredOptions() {\n    return customFilterOptions ? customFilterOptions(options, searchTextForFilter) : filterOptions(options, searchTextForFilter);\n  };\n\n  var updateFocus = function updateFocus(offset) {\n    var newFocus = focusIndex + offset;\n    newFocus = Math.max(1, newFocus);\n    newFocus = Math.min(newFocus, options.length + 1);\n    setFocusIndex(newFocus);\n  };\n\n  var _useMemo = useMemo(function () {\n    var filteredOptionsList = filteredOptions().filter(function (o) {\n      return !o.disabled;\n    });\n    return [filteredOptionsList.every(function (o) {\n      return value.findIndex(function (v) {\n        return v.value === o.value;\n      }) !== -1;\n    }), filteredOptionsList.length !== 0]; // eslint-disable-next-line\n  }, [searchText, value]),\n      isAllOptionSelected = _useMemo[0],\n      hasSelectableOptions = _useMemo[1];\n\n  return React.createElement(\"div\", {\n    className: \"select-panel\",\n    role: \"listbox\",\n    onKeyDown: handleKeyDown\n  }, !disableSearch && React.createElement(\"div\", {\n    className: SelectSearchContainer\n  }, React.createElement(\"input\", {\n    autoFocus: focusSearchOnOpen,\n    placeholder: getString(\"search\", overrideStrings),\n    type: \"text\",\n    \"aria-describedby\": getString(\"search\", overrideStrings),\n    onKeyDown: function onKeyDown(e) {\n      return e.stopPropagation();\n    },\n    onChange: handleSearchChange,\n    onFocus: handleSearchFocus,\n    value: searchText\n  }), React.createElement(\"button\", {\n    type: \"button\",\n    className: SearchClearButton + \" search-clear-button\",\n    hidden: !searchText,\n    onClick: handleClear,\n    \"aria-label\": getString(\"clearSearch\", overrideStrings)\n  }, ClearIcon || React.createElement(Cross, null))), hasSelectAll && hasSelectableOptions && React.createElement(SelectItem, {\n    focused: focusIndex === 1,\n    tabIndex: 1,\n    checked: isAllOptionSelected,\n    option: selectAllOption,\n    onSelectionChanged: selectAllChanged,\n    onClick: function onClick() {\n      return handleItemClicked(0);\n    },\n    itemRenderer: ItemRenderer,\n    disabled: disabled\n  }), React.createElement(SelectList, Object.assign({}, props, {\n    options: filteredOptions(),\n    focusIndex: focusIndex,\n    onClick: function onClick(_e, index) {\n      return handleItemClicked(index);\n    },\n    ItemRenderer: ItemRenderer,\n    disabled: disabled\n  })));\n};\n\nfunction Arrow(_ref) {\n  var expanded = _ref.expanded;\n  return React.createElement(\"svg\", {\n    width: \"24\",\n    height: \"24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: \"2\",\n    className: \"dropdown-heading-dropdown-arrow gray\"\n  }, React.createElement(\"path\", {\n    d: expanded ? \"M18 15 12 9 6 15\" : \"M6 9L12 15 18 9\"\n  }));\n}\n\nvar Spinner = /*#__PURE__*/css({\n  animation: \"rotate 2s linear infinite\",\n  \"& .path\": {\n    stroke: \"var(--rmsc-border)\",\n    strokeWidth: \"4px\",\n    strokeLinecap: \"round\",\n    animation: \"dash 1.5s ease-in-out infinite\"\n  },\n  \"@keyframes rotate\": {\n    \"100%\": {\n      transform: \"rotate(360deg)\"\n    }\n  },\n  \"@keyframes dash\": {\n    \"0%\": {\n      strokeDasharray: \"1,150\",\n      strokeDashoffset: 0\n    },\n    \"50%\": {\n      strokeDasharray: \"90,150\",\n      strokeDashoffset: \"-35\"\n    },\n    \"100%\": {\n      strokeDasharray: \"90,150\",\n      strokeDashoffset: \"-124\"\n    }\n  }\n});\n\nfunction Loading(_ref) {\n  var _ref$size = _ref.size,\n      size = _ref$size === void 0 ? 24 : _ref$size;\n  return React.createElement(\"span\", {\n    style: {\n      width: size,\n      marginRight: \"0.2rem\"\n    }\n  }, React.createElement(\"svg\", {\n    width: size,\n    height: size,\n    className: Spinner,\n    viewBox: \"0 0 50 50\",\n    style: {\n      display: \"inline\",\n      verticalAlign: \"middle\"\n    }\n  }, React.createElement(\"circle\", {\n    cx: \"25\",\n    cy: \"25\",\n    r: \"20\",\n    fill: \"none\",\n    className: \"path\"\n  })));\n}\n\n/**\r\n * A generic dropdown component.  It takes the children of the component\r\n * and hosts it in the component.  When the component is selected, it\r\n * drops-down the contentComponent and applies the contentProps.\r\n */\nvar PanelContainer = /*#__PURE__*/css({\n  position: \"absolute\",\n  zIndex: 1,\n  top: \"100%\",\n  width: \"100%\",\n  paddingTop: \"8px\",\n  \".panel-content\": {\n    maxHeight: \"300px\",\n    overflowY: \"auto\",\n    borderRadius: \"var(--rmsc-radius)\",\n    background: \"var(--rmsc-bg)\",\n    boxShadow: \"0 0 0 1px rgba(0, 0, 0, 0.1), 0 4px 11px rgba(0, 0, 0, 0.1)\"\n  }\n});\nvar DropdownContainer = /*#__PURE__*/css({\n  position: \"relative\",\n  outline: 0,\n  backgroundColor: \"var(--rmsc-bg)\",\n  border: \"1px solid var(--rmsc-border)\",\n  borderRadius: \"var(--rmsc-radius)\",\n  \"&:focus-within\": {\n    boxShadow: \"var(--rmsc-main) 0 0 0 1px\",\n    borderColor: \"var(--rmsc-main)\"\n  }\n});\nvar DropdownHeading = /*#__PURE__*/css({\n  position: \"relative\",\n  padding: \"0 var(--rmsc-p)\",\n  display: \"flex\",\n  alignItems: \"center\",\n  width: \"100%\",\n  height: \"var(--rmsc-h)\",\n  cursor: \"default\",\n  outline: 0,\n  \".dropdown-heading-value\": {\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    flex: 1\n  }\n});\nvar ClearSelectedButton = /*#__PURE__*/css({\n  cursor: \"pointer\",\n  background: \"none\",\n  border: 0,\n  padding: 0,\n  display: \"flex\"\n});\n\nvar Dropdown = function Dropdown(_ref) {\n  var children = _ref.children,\n      ContentComponent = _ref.contentComponent,\n      contentProps = _ref.contentProps,\n      isLoading = _ref.isLoading,\n      disabled = _ref.disabled,\n      shouldToggleOnHover = _ref.shouldToggleOnHover,\n      labelledBy = _ref.labelledBy,\n      onMenuToggle = _ref.onMenuToggle,\n      ArrowRenderer = _ref.ArrowRenderer,\n      ClearSelectedIcon = _ref.ClearSelectedIcon,\n      defaultIsOpen = _ref.defaultIsOpen,\n      isOpen = _ref.isOpen;\n\n  var _useState = useState(true),\n      isInternalExpand = _useState[0],\n      setIsInternalExpand = _useState[1];\n\n  var _useState2 = useState(defaultIsOpen),\n      expanded = _useState2[0],\n      setExpanded = _useState2[1];\n\n  var _useState3 = useState(false),\n      hasFocus = _useState3[0],\n      setHasFocus = _useState3[1];\n\n  var FinalArrow = ArrowRenderer || Arrow;\n  var wrapper = useRef();\n  /* eslint-disable react-hooks/exhaustive-deps */\n\n  useEffect(function () {\n    onMenuToggle && onMenuToggle(expanded);\n  }, [expanded]);\n  useEffect(function () {\n    if (defaultIsOpen === undefined && typeof isOpen === \"boolean\") {\n      setIsInternalExpand(false);\n      setExpanded(isOpen);\n    }\n  }, [isOpen]);\n\n  var handleKeyDown = function handleKeyDown(e) {\n    var _wrapper$current;\n\n    if (isInternalExpand) {\n      switch (e.which) {\n        case 27: // Escape\n\n        case 38:\n          // Up Arrow\n          setExpanded(false);\n          wrapper == null ? void 0 : (_wrapper$current = wrapper.current) == null ? void 0 : _wrapper$current.focus();\n          break;\n\n        case 32: // Space\n\n        case 13: // Enter Key\n\n        case 40:\n          // Down Arrow\n          setExpanded(true);\n          break;\n\n        default:\n          return;\n      }\n    }\n\n    e.preventDefault();\n  };\n\n  var handleHover = function handleHover(iexpanded) {\n    isInternalExpand && shouldToggleOnHover && setExpanded(iexpanded);\n  };\n\n  var handleFocus = function handleFocus() {\n    return !hasFocus && setHasFocus(true);\n  };\n\n  var handleBlur = function handleBlur(e) {\n    if (!e.currentTarget.contains(e.relatedTarget) && isInternalExpand) {\n      setHasFocus(false);\n      setExpanded(false);\n    }\n  };\n\n  var handleMouseEnter = function handleMouseEnter() {\n    return handleHover(true);\n  };\n\n  var handleMouseLeave = function handleMouseLeave() {\n    return handleHover(false);\n  };\n\n  var toggleExpanded = function toggleExpanded() {\n    isInternalExpand && setExpanded(isLoading || disabled ? false : !expanded);\n  };\n\n  var handleClearSelected = function handleClearSelected(e) {\n    e.stopPropagation();\n    contentProps[\"onChange\"]([]);\n    isInternalExpand && setExpanded(false);\n  };\n\n  return React.createElement(\"div\", {\n    tabIndex: 0,\n    className: DropdownContainer + \" dropdown-container\",\n    \"aria-labelledby\": labelledBy,\n    \"aria-expanded\": expanded,\n    \"aria-readonly\": true,\n    \"aria-disabled\": disabled,\n    ref: wrapper,\n    onKeyDown: handleKeyDown,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    onMouseEnter: handleMouseEnter,\n    onMouseLeave: handleMouseLeave\n  }, React.createElement(\"div\", {\n    className: DropdownHeading + \" dropdown-heading\",\n    onClick: toggleExpanded\n  }, React.createElement(\"div\", {\n    className: \"dropdown-heading-value\"\n  }, children), isLoading && React.createElement(Loading, null), contentProps[\"value\"].length > 0 && React.createElement(\"button\", {\n    type: \"button\",\n    className: ClearSelectedButton + \" clear-selected-button\",\n    onClick: handleClearSelected,\n    \"aria-label\": getString(\"clearSelected\", contentProps[\"overrideStrings\"])\n  }, ClearSelectedIcon || React.createElement(Cross, null)), React.createElement(FinalArrow, {\n    expanded: expanded\n  })), expanded && React.createElement(\"div\", {\n    className: PanelContainer + \" dropdown-content\"\n  }, React.createElement(\"div\", {\n    className: \"panel-content\"\n  }, React.createElement(ContentComponent, Object.assign({}, contentProps)))));\n};\n\nvar DropdownHeader = function DropdownHeader(_ref) {\n  var value = _ref.value,\n      options = _ref.options,\n      valueRenderer = _ref.valueRenderer,\n      overrideStrings = _ref.overrideStrings;\n  var noneSelected = value.length === 0;\n  var allSelected = value.length === options.length;\n  var customText = valueRenderer && valueRenderer(value, options);\n\n  var getSelectedText = function getSelectedText() {\n    return value.map(function (s) {\n      return s.label;\n    }).join(\", \");\n  };\n\n  return noneSelected ? React.createElement(\"span\", {\n    className: \"gray\"\n  }, customText || getString(\"selectSomeItems\", overrideStrings)) : React.createElement(\"span\", null, customText || (allSelected ? getString(\"allItemsAreSelected\", overrideStrings) : getSelectedText()));\n};\n\nvar MultiSelectBox = /*#__PURE__*/css({\n  \"--rmscMain\": \"#4285f4\",\n  \"--rmscHover\": \"#f1f3f5\",\n  \"--rmscSelected\": \"#e2e6ea\",\n  \"--rmscBorder\": \"#ccc\",\n  \"--rmscGray\": \"#aaa\",\n  \"--rmscBg\": \"#fff\",\n  \"--rmscP\": \"10px\",\n  \"--rmscRadius\": \"4px\",\n  \"--rmscH\": \"38px\",\n  \"*\": {\n    boxSizing: \"border-box\",\n    transition: \"all 0.2s ease\"\n  },\n  \".gray\": {\n    color: \"var(--rmsc-gray)\"\n  }\n});\n\nvar MultiSelect = function MultiSelect(_ref) {\n  var _ref$focusSearchOnOpe = _ref.focusSearchOnOpen,\n      focusSearchOnOpen = _ref$focusSearchOnOpe === void 0 ? true : _ref$focusSearchOnOpe,\n      _ref$hasSelectAll = _ref.hasSelectAll,\n      hasSelectAll = _ref$hasSelectAll === void 0 ? true : _ref$hasSelectAll,\n      shouldToggleOnHover = _ref.shouldToggleOnHover,\n      _ref$className = _ref.className,\n      className = _ref$className === void 0 ? \"multi-select\" : _ref$className,\n      options = _ref.options,\n      value = _ref.value,\n      valueRenderer = _ref.valueRenderer,\n      overrideStrings = _ref.overrideStrings,\n      onChange = _ref.onChange,\n      disabled = _ref.disabled,\n      ItemRenderer = _ref.ItemRenderer,\n      ArrowRenderer = _ref.ArrowRenderer,\n      selectAllLabel = _ref.selectAllLabel,\n      isLoading = _ref.isLoading,\n      disableSearch = _ref.disableSearch,\n      filterOptions = _ref.filterOptions,\n      labelledBy = _ref.labelledBy,\n      onMenuToggle = _ref.onMenuToggle,\n      ClearIcon = _ref.ClearIcon,\n      _ref$debounceDuration = _ref.debounceDuration,\n      debounceDuration = _ref$debounceDuration === void 0 ? 300 : _ref$debounceDuration,\n      ClearSelectedIcon = _ref.ClearSelectedIcon,\n      defaultIsOpen = _ref.defaultIsOpen,\n      isOpen = _ref.isOpen;\n  var nvalue = value || [];\n  return React.createElement(\"div\", {\n    className: MultiSelectBox + \" \" + className\n  }, React.createElement(Dropdown, {\n    isLoading: isLoading,\n    contentComponent: SelectPanel,\n    shouldToggleOnHover: shouldToggleOnHover,\n    contentProps: {\n      ItemRenderer: ItemRenderer,\n      options: options,\n      value: nvalue,\n      hasSelectAll: hasSelectAll,\n      selectAllLabel: selectAllLabel,\n      onChange: onChange,\n      disabled: disabled,\n      disableSearch: disableSearch,\n      focusSearchOnOpen: focusSearchOnOpen,\n      filterOptions: filterOptions,\n      overrideStrings: overrideStrings,\n      ClearIcon: ClearIcon,\n      debounceDuration: debounceDuration\n    },\n    disabled: disabled,\n    labelledBy: labelledBy,\n    onMenuToggle: onMenuToggle,\n    ArrowRenderer: ArrowRenderer,\n    ClearSelectedIcon: ClearSelectedIcon,\n    defaultIsOpen: defaultIsOpen,\n    isOpen: isOpen\n  }, React.createElement(DropdownHeader, {\n    value: nvalue,\n    options: options,\n    valueRenderer: valueRenderer,\n    overrideStrings: overrideStrings\n  })));\n};\n\nexport default MultiSelect;\nexport { Dropdown, SelectItem, SelectPanel };\n//# sourceMappingURL=react-multi-select-component.esm.js.map\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { PanelBody, PanelRow, Slot } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Fragment } from '@wordpress/element';\nimport { addFilter, applyFilters } from '@wordpress/hooks';\nimport { InspectorControls } from '@wordpress/blockEditor';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityRulesEnabled } from './content-visibility-rules-enabled';\nimport { ContentVisibilityDisplayedControl } from './content-visibility-displayed-control';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const contentVisibilityControls = createHigherOrderComponent((BlockEdit) => {\n\n    return (props) => {\n\n        if (!isValidBlockType(props.name) || !props.isSelected) {\n            return <BlockEdit {...props} />;\n        }\n\n        // Add a class to the div contining the rules so we can show/hide them when they are enabled/disabled.\n        // Normally this would be props.attributes.contentVisibilityRules for anything registered in core, or in JS. However, as it's\n        // possible to register attributes in PHP _alone_ we need to look at props.block.attributes.contentVisibilityRules -- both\n        // get updated when a block is updated.\n        let showControls = (props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled) ? 'show-controls' : 'hide-controls';\n\n        return (\n            <Fragment>\n                <BlockEdit {...props} />\n                <InspectorControls>\n                    <PanelBody title={__('Visibility', 'content-visibility')} className=\"content-visibility-controls\" initialOpen={false}>\n\n                        <PanelRow className=\"content-visibility-rules-enabled\">\n                            <ContentVisibilityRulesEnabled props={props} />\n                        </PanelRow>\n\n                        <div className={showControls + \" content-visibility-controls-container\"}>\n                            <PanelRow className=\"content-visibility-displayed-control\">\n                                <ContentVisibilityDisplayedControl props={props} />\n                            </PanelRow>\n\n                            <Slot name=\"content-visibility-extra-controls\" fillProps={props} />\n                        </div>\n\n                    </PanelBody>\n                </InspectorControls>\n            </Fragment>\n        );\n\n    };\n}, 'contentVisibilityControls');\n\naddFilter('editor.BlockEdit', 'content-visibility/content-visibility-controls', contentVisibilityControls);\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesAttribute(settings) {\n\n    // If this is a valid block\n    if (isValidBlockType(settings.name)) {\n\n        // Run the rules through a filter so we're able to add rules externally.\n        let defaultRules = applyFilters('contentVisibility.defaultContentVisibilityRules', {\n            contentVisibilityRulesEnabled: false,\n            userAuthenticated: ''\n        });\n\n        // Use Lodash's assign to gracefully handle if attributes are undefined\n        settings.attributes = assign(settings.attributes, {\n            contentVisibilityRules: {\n                type: 'object',\n                default: defaultRules\n            },\n        });\n    }\n\n    return settings;\n\n}// end addContentVisibilityRulesAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesPropOnSave(extraProps, blockType, attributes) {\n\n    // If the current block is valid, add our prop.\n    if (isValidBlockType(blockType.name)) {\n        extraProps.contentVisibilityRules = attributes.contentVisibilityRules;\n    }\n\n    return extraProps;\n\n}// end addContentVisibilityRulesPropOnSave()\n\naddFilter('blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesAttribute', addContentVisibilityRulesAttribute);\naddFilter('blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesPropOnSave', addContentVisibilityRulesPropOnSave);","import { Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityShownHiddenControl } from './shown-or-hidden/content-visibility-shown-hidden-control';\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityDisplayedControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n\n    if ( ! rulesEnabled ) {\n        return (\n            <Disabled>\n                <ContentVisibilityShownHiddenControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityShownHiddenControl props={ props } />\n    );\n\n} );\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibility: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addBlockVisibilityPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibility = attributes.contentVisibility;\n\t}\n\n\treturn extraProps;\n\n}// end addBlockVisibilityPropOnSave()\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityAttribute', addContentVisibilityAttribute );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addBlockVisibilityPropOnSave', addBlockVisibilityPropOnSave );","import { ToggleControl } from '@wordpress/components';\nimport { withState, createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter, doAction } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityRulesEnabled = withState( {\n    rulesEnabled: false,\n} )( ( { rulesEnabled, setState, props } ) => (\n    <ToggleControl\n        label={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ? __( 'Rules Enabled', 'content-visibility' ) : __( 'Rules Disabled', 'content-visibility' ) }\n        checked={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled || rulesEnabled }\n        onChange={ ( rulesEnabled ) => setState( ( state ) => {\n\n            let newBVRules = { ...props.attributes.contentVisibilityRules };\n            newBVRules.contentVisibilityRulesEnabled = rulesEnabled;\n\n            props.setAttributes( {\n                contentVisibilityRules: newBVRules,\n            } );\n\n            // Fire an action so we can see what's happened in other controls. This can be useful,\n            // for example when setting rules for roles - pointless if a user isn't signed in.\n            doAction( 'contentVisibility.onChange.contentVisibilityRulesEnabled', 'content-visibility/onChange', rulesEnabled, props );\n\n            // Sets the state\n            return (\n                { rulesEnabled: ! state.rulesEnabled }\n            );\n        } ) }\n    />\n) );\n\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesEnabledAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibilityRulesEnabled: {\n\t\t\t\ttype: 'boolean',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityRulesEnabledAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesEnabledPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibilityRulesEnabled = attributes.contentVisibilityRulesEnabled;\n    }\n\n\treturn extraProps;\n\n}// end addContentVisibilityRulesEnabledPropOnSave()\n\n/**\n * Add a custom class name to each block that has content visibility rules enabled.\n *\n * @param {Object} BlockListBlock The current block\n *\n * @return {Object} The block with a custom class name added if the block has rules enabled. The unmodified block otherwise.\n */\nconst withCustomClassName = createHigherOrderComponent( ( BlockListBlock ) => {\n\n    return ( props ) => {\n\n        if ( ! props.attributes.contentVisibility || ! props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ) {\n            return <BlockListBlock {...props} />;\n        }\n\n        let iconClassName = 'content-visibility-rules-enabled-' + props.attributes.contentVisibility;\n\n        return <BlockListBlock {...props} className={ iconClassName } />\n\n    };\n}, 'withCustomClassName' );\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesEnabledAttribute', addContentVisibilityRulesEnabledAttribute, 999 );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesEnabledPropOnSave', addContentVisibilityRulesEnabledPropOnSave, 999 );\n\naddFilter( 'editor.BlockListBlock', 'content-visibility/add-class-name-for-blocks-with-rules', withCustomClassName, 999 );","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilityUserAuthenticationPanelBodyControl } from './user-authentication/user-authentication-panel-body-control';\n\n\nexport const ContentVisibilityUserAuthenticationControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled><ContentVisibilityUserAuthenticationPanelBodyControl props={ props } /></Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityUserAuthenticationPanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilityUserAuthenticationControl> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilityUserAuthenticationControl component.\n */\nfunction BlockVisibilityUserAuthenitcationFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilityUserAuthenticationControl props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Add our component to the Slot provided by BlockVisibilityControls\nregisterPlugin( 'content-visibility-01-user-authentication-fill', { render: BlockVisibilityUserAuthenitcationFill } );\n","import MultiSelect from \"react-multi-select-component\";\nimport { withState } from '@wordpress/compose';\n\n/**\n * Reusable, accessible multi-select component which includes a fuzzy search, select all/none using the react-multi-select-component\n * by Harsh Zalavadiya : https://github.com/harshzalavadiya/react-multi-select-component#readme.\n *\n * I've expanded it slightly, by allowing the data passed in to accept an `icon` property which should be a WordPress Icon compnent.\n *\n * Requires passing in the onChange function to handle data saving. i.e. import this component and then use it like:\n *\n * ```\n * <ContentVisibilityMultiSelect data={ fruits } labelledBy=\"Select Page Type\" props={ props } onChange={ onChange } />\n * ```\n *\n * the `onChange` function can look like this:\n *\n * ```\n * const onChange = ( option ) => {\n *     // Set the state and props.\n *     setState( { option } );\n *     props.setAttributes( {\n *         contentVisibilityRules: {\n *             ...props.attributes.contentVisibilityRules,\n *             specialPage: {\n *                 ...props.attributes.contentVisibilityRules.specialPage,\n *                 pages: option\n *             }\n *         },\n *     } );\n *\n * }\n * ```\n *\n * `data` should be an array of objects which contains label (string), a value (string) and an optional icon (WordPress Icon compnent)\n */\n\nexport const ContentVisibilityMultiSelect = withState( {\n    option: [],\n} )( ( { option, setState, props, data, labelledBy, type } ) => {\n\n    /**\n     * onChange callback for the ContentVisibilityMultiSelect component. This handles setting the props and state for\n     * this instance of the component.\n     * \n     * @param {array} option current value of what is selected.\n     */\n    const onChange = ( option ) => {\n\n        // Set the state and props.\n        setState( { option } );\n\n        props.setAttributes( {\n            contentVisibilityRules: {\n                ...props.attributes.contentVisibilityRules,\n                specialPage: {\n                    ...props.attributes.contentVisibilityRules.specialPage,\n                    [type]: option\n                }\n            },\n        } );\n\n    };\n\n    return (\n        <div className=\"content-visibility-multi-select\">\n            <MultiSelect\n                options={ data }\n                value={ props.attributes.contentVisibilityRules.specialPage[type] || option }\n                onChange={ onChange }\n                labelledBy={ labelledBy }\n                ItemRenderer={ ( { checked, option, onClick, disabled, } ) => {\n                    return (\n                        <div className={`item-renderer content-visibility-multi-select-item ${disabled && \"disabled\"}`}>\n                            <input type=\"checkbox\" onChange={ onClick } checked={ checked } tabIndex={ -1 } disabled={ disabled } />\n                            <span>{option.icon || \"\"} {option.label}</span>\n                        </div>\n                    );\n                } }\n                // isOpen={ true }\n            />\n        </div>\n    );\n\n} );","import { RadioControl, PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nexport const ContentVisibilityShownHiddenControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Shown or Hidden', 'content-visibility-user-role' ) }\n            initialOpen={ true }\n            className=\"content-visibility-control-panel content-visibility-user-role-controls\"\n        >\n            <PanelRow>\n                <RadioControl\n                    label={ __( \"When the rules below are true, this block will be: \", 'content-visibility' ) }\n                    help=\"\"\n                    selected={ props.attributes.contentVisibility || option }\n                    options={ [\n                        { label: __( 'Shown', 'content-visibility' ), value: 'shown' },\n                        { label: __( 'Hidden', 'content-visibility' ), value: 'hidden' },\n                    ] }\n                    onChange={ ( option ) => {\n\n                        setState( { option } );\n\n                        props.setAttributes( {\n                            contentVisibility: option,\n                        } );\n\n                    } }\n                />\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","import { Button, Popover, Icon, HorizontalRule, IconButton } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport getPages from '../../helpers/get-pages';\nimport keepPopupOpen from '../../helpers/keep-popup-open';\nimport { __ } from '@wordpress/i18n';\n\nimport specialPagesInsertText from '../../helpers/special-page-insert-text';\nimport specialPagesInsertButtonClass from '../../helpers/special-pages-insert-button-class';\n\nimport { ContentVisibilityMultiSelect } from '../multiselect/content-visibility-multiselect';\n\nconst PagePageInserter = withState( {\n    isVisible: false,\n} )( ( { isVisible, setState, props } ) => {\n\n    /**\n     * Our data, passed from PHP and manipulated to be useful here in JS.\n     */\n    const data = getPages();\n\n    /**\n     * This controls the key used where the data is stored.\n     */\n    const type = 'pages';\n\n    /**\n     * Helps with the content of the inserter button.\n     */\n    const niceName = {\n        singular: __( 'Page', 'content-visibility' ),\n        plural: __( 'Pages', 'content-visibility' ),\n    }\n\n    /**\n     * Toggle the visible state. Detemines whether the popup is open or not.\n     */\n    const toggleVisible = () => {\n        setState( ( state ) => ( { isVisible: ! state.isVisible } ) );\n    };\n\n    return (\n        <div className=\"content-visibility-special-page-inserter\">\n            <Icon icon=\"networking\" iconSize=\"12\" />\n            <Button isSecondary isSmall isLink onClick={ toggleVisible } className={ specialPagesInsertButtonClass( props, type ) }>\n                { specialPagesInsertText( props, type, __( 'Select specific pages', 'content-visibility' ), niceName ) }\n                { isVisible && (\n                    <Popover position=\"middle left\" className=\"content-visibility-special-page-help-instructions-popover\" onClick={keepPopupOpen}>\n\n                        <h1>{ __( 'Select Pages', 'content-visibility' ) }</h1>\n\n                        <p className=\"content-visibility-help-text\">{ __( 'Select the pages upon which you would like this block to be ', 'content-visibility' ) + props.attributes.contentVisibility }</p>\n                        <ContentVisibilityMultiSelect data={ data } labelledBy=\"Select Page\" props={ props } type={ type } />\n                        <p className=\"content-visibility-submit-special-pages-button-container\">\n                            <Button isPrimary className=\"content-visibility-submit-special-pages\" onClick={toggleVisible}>{ __( 'Set Selected', 'content-visibility' ) }</Button>\n                        </p>\n\n                        <HorizontalRule />\n\n                        <p><Icon icon=\"editor-help\" iconSize=\"12\" /> <strong>{ __( 'Help', 'content-visibility' ) }</strong></p>\n                        <p>{ __( `Selecting one or more pages from this list will mean that this block will only be ${props.attributes.contentVisibility} on those pages. If you want this block to be ${props.attributes.contentVisibility} on ALL pages, please use the 'Special Pages' option and select 'Any Page'`, 'content-visibility' ) }</p>\n\n                        <IconButton className=\"content-visibility-close-popover\" icon=\"no\" label={ __( 'Close', 'content-visibility' ) } onClick={ toggleVisible } />\n                    </Popover>\n                ) }\n            </Button>\n        </div>\n    );\n} );\n\nexport default PagePageInserter;","import { Button, Popover, Icon, HorizontalRule, IconButton } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport getPosts from '../../helpers/get-posts';\nimport keepPopupOpen from '../../helpers/keep-popup-open';\nimport { __ } from '@wordpress/i18n';\n\nimport specialPagesInsertText from '../../helpers/special-page-insert-text';\nimport specialPagesInsertButtonClass from '../../helpers/special-pages-insert-button-class';\n\nimport { ContentVisibilityMultiSelect } from '../multiselect/content-visibility-multiselect';\n\nconst PostPageInserter = withState( {\n    isVisible: false,\n} )( ( { isVisible, setState, props } ) => {\n\n    /**\n     * Our data, passed from PHP and manipulated to be useful here in JS.\n     */\n    const data = getPosts();\n\n    /**\n     * This controls the key used where the data is stored.\n     */\n    const type = 'posts';\n\n    /**\n     * Helps with the content of the inserter button.\n     */\n    const niceName = {\n        singular: __( 'Post', 'content-visibility' ),\n        plural: __( 'Posts', 'content-visibility' ),\n    }\n\n    /**\n     * Toggle the visible state. Detemines whether the popup is open or not.\n     */\n    const toggleVisible = () => {\n        setState( ( state ) => ( { isVisible: ! state.isVisible } ) );\n    };\n\n    return (\n        <div className=\"content-visibility-special-page-inserter\">\n            <Icon icon=\"admin-post\" iconSize=\"12\" />\n            <Button isSecondary isSmall isLink onClick={ toggleVisible } className={ specialPagesInsertButtonClass( props, type ) }>\n                { specialPagesInsertText( props, type, __( 'Select specific posts', 'content-visibility' ), niceName ) }\n                { isVisible && (\n                    <Popover position=\"middle left\" className=\"content-visibility-special-page-help-instructions-popover\" onClick={keepPopupOpen}>\n\n                        <h1>{ __( 'Select Posts', 'content-visibility' ) }</h1>\n\n                        <p className=\"content-visibility-help-text\">{ __( 'Select the posts upon which you would like this block to be ', 'content-visibility' ) + props.attributes.contentVisibility }</p>\n                        <ContentVisibilityMultiSelect data={ data } labelledBy=\"Select Page\" props={ props } type={ type } />\n                        <p className=\"content-visibility-submit-special-pages-button-container\">\n                            <Button isPrimary className=\"content-visibility-submit-special-pages\" onClick={toggleVisible}>{ __( 'Set Selected', 'content-visibility' ) }</Button>\n                        </p>\n\n                        <HorizontalRule />\n\n                        <p><Icon icon=\"editor-help\" iconSize=\"12\" /> <strong>{ __( 'Help', 'content-visibility' ) }</strong></p>\n                        <p>{ __( `Selecting one or more posts from this list will mean that this block will only be ${props.attributes.contentVisibility} on those posts. If you want this block to be ${props.attributes.contentVisibility} on ALL posts, please use the 'Special Pages' option and select 'Any Post'`, 'content-visibility' ) }</p>\n\n                        <IconButton className=\"content-visibility-close-popover\" icon=\"no\" label={ __( 'Close', 'content-visibility' ) } onClick={ toggleVisible } />\n                    </Popover>\n                ) }\n            </Button>\n        </div>\n    );\n} );\n\nexport default PostPageInserter;","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilitySpecialPagePanelBodyControl } from './content-visibility-special-page-panel';\n\n\nexport const ContentVisibilitySpecialPageControls = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled>\n                <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilitySpecialPageControls> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilitySpecialPageControls component.\n */\nfunction ContentVisibilitySpecialPageFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilitySpecialPageControls props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Only load the Widgets-related controls on the widgets screen or we're local, due to Widgets Screen bug.\nif ( 'appearance_page_gutenberg-widgets' === ContentVisibility.screen || '1' === ContentVisibility.local ) {\n    // Add our component to the Slot provided by BlockVisibilityControls\n    registerPlugin( 'content-visibility-04-special-page-fill', { render: ContentVisibilitySpecialPageFill } );\n}\n","import { Button, Popover, Icon, HorizontalRule, IconButton } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport getSpecialPages from '../../helpers/get-special-pages';\nimport keepPopupOpen from '../../helpers/keep-popup-open';\nimport { __ } from '@wordpress/i18n';\n\nimport specialPagesInsertText from '../../helpers/special-page-insert-text';\nimport specialPagesInsertButtonClass from '../../helpers/special-pages-insert-button-class';\n\nimport { ContentVisibilityMultiSelect } from '../multiselect/content-visibility-multiselect';\n\nconst SpecialPagePageInserter = withState( {\n    isVisible: false,\n} )( ( { isVisible, setState, props } ) => {\n\n    /**\n     * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages\n     * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.\n     */\n    const specialPages = getSpecialPages();\n\n    /**\n     * This controls the key used where the data is stored.\n     */\n    const type = 'specialPages';\n\n    /**\n     * Helps with the content of the inserter button.\n     */\n    const niceName = {\n        singular: __( 'Special Page', 'content-visibility' ),\n        plural: __( 'Special Pages', 'content-visibility' ),\n    }\n\n    /**\n     * Toggle the visible state. Detemines whether the popup is open or not.\n     */\n    const toggleVisible = () => {\n        setState( ( state ) => ( { isVisible: ! state.isVisible } ) );\n    };\n\n    return (\n        <div className=\"content-visibility-special-page-inserter\">\n            <Icon icon=\"text-page\" iconSize=\"12\" />\n            <Button isSecondary isSmall isLink onClick={ toggleVisible } className={ specialPagesInsertButtonClass( props, type ) }>\n                { specialPagesInsertText( props, type, __( 'Select special pages', 'content-visibility' ), niceName ) }\n                { isVisible && (\n                    <Popover position=\"middle left\" className=\"content-visibility-special-page-help-instructions-popover\" onClick={keepPopupOpen}>\n\n                        <h1>{ __( 'Insert Special Pages', 'content-visibility' ) }</h1>\n\n                        <p className=\"content-visibility-help-text\">{ __( 'Select the special pages upon which you would like this block to be ', 'content-visibility' ) + props.attributes.contentVisibility }</p>\n                        <ContentVisibilityMultiSelect data={ specialPages } labelledBy=\"Select Page Type\" props={ props } type={ type } />\n                        <p className=\"content-visibility-submit-special-pages-button-container\">\n                            <Button isPrimary className=\"content-visibility-submit-special-pages\" onClick={toggleVisible}>{ __( 'Set Selected', 'content-visibility' ) }</Button>\n                        </p>\n\n                        <HorizontalRule />\n\n                        <p><Icon icon=\"editor-help\" iconSize=\"12\" /> <strong>{ __( 'What are Special Pages?', 'content-visibility' ) }</strong></p>\n                        <p>{ __( 'By default, WordPress websites contain more than just the posts and pages you create here in the dashboard. Content Visibility allows you to display your blocks on any of the following types of pages that your theme can make available to your visitors. ', 'content-visibility-special-page' ) }</p>\n\n                        { specialPages.map( specialPage => (\n                            <p><span>{ specialPage.label }</span>: { specialPage.notes }</p>\n                        ) ) }\n\n                        <IconButton className=\"content-visibility-close-popover\" icon=\"no\" label={ __( 'Close', 'content-visibility' ) } onClick={ toggleVisible } />\n                    </Popover>\n                ) }\n            </Button>\n        </div>\n    );\n} );\n\nexport default SpecialPagePageInserter;","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\n\nimport SpecialPagePageInserter from './content-visibility-special-page-page-inserter';\nimport PagePageInserter from './content-visibility-page-page-inserter';\nimport PostPageInserter from './content-visibility-post-page-inserter';\n\nexport const ContentVisibilitySpecialPagePanelBodyControl = withState( {\n    option: [],\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Special Page', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel block-visibility-special-page-controls\"\n        >\n\n            <PanelRow className=\"content-visibility-page-inserter-panel-row\">\n                <SpecialPagePageInserter props={ props } />\n                <PagePageInserter props={ props } />\n                <PostPageInserter props={ props } />\n            </PanelRow>\n\n            { props.attributes.contentVisibility && (\n                <p className=\"special-page-help-intro content-visibility-help-text\">\n                    { __( 'Select the types of content upon which this block will be ' + props.attributes.contentVisibility + '.', 'content-visibility' ) }\n                </p>\n            ) }\n\n        </PanelBody>\n    );\n\n} );\n\n// Register our visibility rule in the main rules object.\naddFilter( 'contentVisibility.defaultContentVisibilityRules', 'content-visibility-special-page/block-visibility-rules', registerSpecialPageVisibilityRule );\n\nfunction registerSpecialPageVisibilityRule( defaultRules ) {\n\n    defaultRules.specialPage = {\n        pages: [],\n        specialPages: [],\n        posts: []\n    };\n\n    return defaultRules;\n\n}","import { RadioControl } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { doAction } from '@wordpress/hooks';\n\nexport const ContentVisibilityUserAuthenticationRadioControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n\n        <RadioControl\n            label=''\n            help=''\n            className=\"content-visibility-user-authenticated-control\"\n            selected={ props.attributes.contentVisibilityRules.userAuthenticated || option }\n            options={ [\n                { label: __( 'Signed Out', 'content-visibility' ), value: 'logged-out' },\n                { label: __( 'Signed In', 'content-visibility' ), value: 'logged-in' },\n            ] }\n            onChange={ ( option ) => {\n\n                // Set the state and props.\n                setState( { option } );\n\n                let newBVRules = { ...props.attributes.contentVisibilityRules };\n                newBVRules.userAuthenticated = option;\n\n                props.setAttributes( {\n                    contentVisibilityRules: newBVRules,\n                } );\n\n                // Fire an action so we can see what's happened in other controls. This can be useful,\n                // for example when setting rules for roles - pointless if a user isn't signed in.\n                doAction( 'contentVisibility.onChange.userAuthenticated', 'content-visibility/onChange', option, props );\n\n            } }\n        />\n\n    );\n\n} );","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { ContentVisibilityUserAuthenticationRadioControl } from './content-visibility-user-authentication-radio-control';\n\nexport const ContentVisibilityUserAuthenticationPanelBodyControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'User Authentication', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel content-visibility-user-authenticated-controls\"\n        >\n            <PanelRow>\n                <ContentVisibilityUserAuthenticationRadioControl props={ props } />\n\n                { props.attributes.contentVisibility && (\n                    <p className=\"user-auth-help-intro content-visibility-help-text\">\n                        { __( 'Select whether this block will be ' + props.attributes.contentVisibility + ' if a user is signed in to this site. If neither is selected, this block will be ' + props.attributes.contentVisibility + ' regardless of whether a user is signed in or not.', 'content-visibility-user-role' ) }\n                    </p>\n                ) }\n\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","// extracted by mini-css-extract-plugin","import { __ } from '@wordpress/i18n';\n\n/**\n * PHP sends through a list of all the pages on the site (in any status). We massage that data to be\n * usable by our Dropdown.\n *\n */\nfunction getPages() {\n\n    const pages = [];\n\n    if ( ContentVisibility.pages.length === 0 ) {\n        return [ {\n            label: __( 'No pages found.', 'content-visibility' ),\n            value: 0,\n            notes: '',\n        } ]\n    }\n\n    for ( const page in ContentVisibility.pages ) {\n    \n        pages.push( { \n            label: ContentVisibility.pages[page].label,\n            value: ContentVisibility.pages[page].id,\n            notes: ContentVisibility.pages[page].notes\n        } );\n    \n    }\n\n    return pages;\n\n}// end getPages()\n\nexport default getPages;","import { __ } from '@wordpress/i18n';\n\n/**\n * PHP sends through a list of all the posts on the site (in any status). We massage that data to be\n * usable by our Dropdown.\n *\n */\nfunction getPosts() {\n\n    const posts = [];\n\n    if ( ContentVisibility.posts.length === 0 ) {\n        return [ {\n            label: __( 'No posts found.', 'content-visibility' ),\n            value: 0,\n            notes: '',\n        } ]\n    }\n\n    for ( const post in ContentVisibility.posts ) {\n    \n        posts.push( { \n            label: ContentVisibility.posts[post].label,\n            value: ContentVisibility.posts[post].id,\n            notes: ContentVisibility.posts[post].notes\n        } );\n    \n    }\n\n    return posts;\n\n}// end getPosts()\n\nexport default getPosts;","import { Icon } from '@wordpress/components';\n\n/**\n * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages\n * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.\n *\n */\nfunction getSpecialPages() {\n\n    const specialPages = [];\n\n    for ( const specialPage in ContentVisibility.specialPages ) {\n    \n        specialPages.push( { \n            label: ContentVisibility.specialPages[specialPage].label,\n            value: ContentVisibility.specialPages[specialPage].keyValue,\n            notes: ContentVisibility.specialPages[specialPage].notes,\n            icon: <Icon size=\"12\" icon={ ContentVisibility.specialPages[ specialPage ].icon } /> \n        } );\n    \n    }\n\n    return specialPages;\n\n}// end getSpecialPages()\n\nexport default getSpecialPages;","/**\n * Is the passed element a child of an element that has a class of the passed parentClassName.\n * From: https://codepen.io/ross-angus/pen/eYJRmZR\n *\n * @param {object} element The name of the block.\n * @param {string} parentClassName the name of the class on the parent to check for.\n */\nfunction hasParentWithClass( element, classname ) {\n\n    // SVGs are weird, man.\n    if ( typeof element.className !== 'object' && element.className.split(' ').indexOf(classname) >= 0 ) {\n        return true;\n    } else if ( element.tagName !== 'HTML' ) { // If you've reached the body, you've gone too far\n        return element.parentNode && hasParentWithClass( element.parentNode, classname );\n    } else {\n        return false;\n    }\n\n}//end hasParentWithClass()\n\nexport default hasParentWithClass;","/**\n * Is the passed block name one which supports our custom field?\n *\n * @param {string} name The name of the block.\n */\nfunction isValidBlockType( name ) {\n\n    const invalidBlockTypes = [\n        'something/unsupported',\n    ];\n\n    return ! invalidBlockTypes.includes( name );\n\n}// end isValidBlockType()\n\nexport default isValidBlockType;","import hasParentWithClass from './has-parent-with-class';\n\n/**\n * The Popup component closes if it loses focus by default. For us, we want to ensure it\n * stays open until someone intentially closes it via either setting the selected items,\n * pressing a close button, or clicking the button they initially used to open the popup.\n *\n * @param {event} event The click event.\n * @return null\n */\nconst keepPopupOpen = ( event ) => {\n\n    if ( false === event ) {\n        return;\n    }\n\n    // Determine if what has been clicked on is in the popover or not.\n    let eTarget = event.target;\n\n    if ( hasParentWithClass( eTarget, 'components-popover__content' ) ) {\n        event.stopPropagation();\n    }\n\n    return;\n};\n\nexport default keepPopupOpen;","import { __ } from '@wordpress/i18n';\n\n/**\n * Determine the text for the button which opens the popup for the special pages inserter. By default, if there are\n * no special pages selected, it will be 'Select special pages'. However, if there are special pages set, it will\n * say how many.\n *\n * @param object props the props for this current iteration of the inserter.\n * @param string type the key in the object data store for specialPages\n * @param string defaultVal the original, default, text for the button (which is shown we no special pages are selected)\n * @param object niceName the text-friendly versions of the type of special page. i.e. \"Special Pages\" as opposed to 'special-page'.\n *                        object contains a singular and plural property.\n * @return string the text to be used for the button.\n */\nconst specialPagesInsertText = ( props, type, defaultVal, niceName ) => {\n    \n    // if nothing is set, return a prompt to select special pages.\n    if ( props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0 ) {\n        return defaultVal;\n    }\n\n    let shownOrHidden     = props.attributes.contentVisibility;\n    let specialPages      = props.attributes.contentVisibilityRules.specialPage[type];    \n    let specialPagesCount = specialPages.length;\n\n    let niceType = ( specialPagesCount === 1 ) ? niceName.singular : niceName.plural;\n\n    let insertText = shownOrHidden + __( ' on ' ) + specialPagesCount  + ' ' + niceType;\n\n    return insertText;\n\n};\n\nexport default specialPagesInsertText;","/**\n * The class which is given to the button used to toggle the popover where people can select which content to select.\n * We add a 'has-items' class if someone has chosen at least one item.\n *\n * @return string\n */\nconst specialPagesInsertButtonClass = ( props, type ) => {\n\n    // If we don't have any items selected, just basic class.\n    if ( props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0 ) {\n        return 'content-visibility-special-page-inserter-toggle';\n    }\n\n    // We have some items selected, so we have a couple classes.\n    return 'content-visibility-special-page-inserter-toggle has-items';\n    \n};\n\nexport default specialPagesInsertButtonClass;","import './editor.scss';\nimport './style.scss';\n\nimport contentVisibilityControls from './controls/content-visibility-controls.js';\nimport ContentVisibilityUserAuthenticationControl from './controls/content-visibility-user-authentication';\nimport ContentVisibilitySpecialPageControls from './controls/special-page/content-visibility-special-page-controls';","(function() { module.exports = window[\"wp\"][\"blockEditor\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","(function() { module.exports = window[\"wp\"][\"compose\"]; }());","(function() { module.exports = window[\"wp\"][\"element\"]; }());","(function() { module.exports = window[\"wp\"][\"hooks\"]; }());","(function() { module.exports = window[\"wp\"][\"i18n\"]; }());","(function() { module.exports = window[\"wp\"][\"plugins\"]; }());","(function() { module.exports = window[\"React\"]; }());"],"sourceRoot":""}
  • content-visibility/tags/0.1.7/content-visibility.php

    r2450785 r2471073  
    1111 * Plugin Name: Content Visibility
    1212 * Plugin URI:  https://richardtape.com/content-visibility/
    13  * Description: Decide when, where, and to whom your blocks are visible.
    14  * Version:     0.1.6
     13 * Description: Content Visibility allows you to decide when, where, and to whom your blocks are visible.
     14 * Version:     0.1.7
    1515 * Author:      Rich Tape
    1616 * Author URI:  https://richardtape.com/
  • content-visibility/tags/0.1.7/includes/content-visibility.php

    r2443859 r2471073  
    3737    $bv_public->init();
    3838
     39    add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\\wp_enqueue_scripts__load_public_css' );
     40
    3941}//end plugins_loaded__bv_loader()
     42
     43/**
     44 * Load the public css file.
     45 *
     46 * @since 0.1.7
     47 * @return void
     48 */
     49function wp_enqueue_scripts__load_public_css() {
     50
     51    /**
     52     * Filter whether to load the public rules CSS file or not.
     53     *
     54     * At least as of right now, this file is literally for one line of CSS and theme authors may want to include it
     55     * in their own theme to prevent loading a whole file just for one little rule.
     56     *
     57     * @since 0.1.7
     58     *
     59     * @param bool  $load_public_css Should this file be loaded. Enqueued only if boolean true.
     60     */
     61    $load_public_css = (bool) apply_filters( 'content_visibility_load_public_css', true );
     62
     63    if ( true !== $load_public_css ) {
     64        return;
     65    }
     66
     67    wp_enqueue_style( 'content-visibility-public', plugins_url( 'includes/public/content-visibility-public.css', dirname( __FILE__ ) ) );
     68
     69}//end wp_enqueue_scripts__load_public_css()
     70
     71/**
     72 * An array of special pages; things like the 404, a search results page, a date archive etc. with their
     73 * associated callback function which determines if the current page is of this type.
     74 *
     75 * @since 0.1.6
     76 * @return array associative array containining a list of special pages. Keys are a slug for the special page. Values
     77 *               are an array containing a title, and a callback function to determine if the current page is this
     78 *               type of special page.
     79 */
     80function get_special_pages() {
     81
     82    /**
     83        * Do we do a generic 'single' or do we be more specific?
     84        *
     85        * See: https://developer.wordpress.org/themes/basics/conditional-tags/
     86    */
     87
     88    return array(
     89        '404'        => array(
     90            'label'    => __( '404 Error', 'content-visibility' ),
     91            'notes'    => __( 'The error page when someone goes to a URL that does not exist on your site.', 'content-visibility' ),
     92            'callback' => array( 'is_404' ),
     93            'icon'     => 'no',
     94            'keyValue' => '404',
     95        ),
     96        'search'     => array(
     97            'label'    => __( 'Search Results', 'content-visibility' ),
     98            'notes'    => __( 'The page shown when someone searches something on your site.', 'content-visibility' ),
     99            'callback' => array( 'is_search' ),
     100            'icon'     => 'search',
     101            'keyValue' => 'search',
     102        ),
     103        'date'       => array(
     104            'label'    => __( 'Date Archive', 'content-visibility' ),
     105            'notes'    => __( 'When someone looks at a time, day, week, month, or year listing of the posts on your site.', 'content-visibility' ),
     106            'callback' => array( 'is_date' ),
     107            'icon'     => 'calendar-alt',
     108            'keyValue' => 'date',
     109        ),
     110        'front-page' => array(
     111            'label'    => __( 'Front Page', 'content-visibility' ),
     112            'notes'    => __( 'When the front page of your site is being displayed, regardless of whether that is your blog (WordPress default) or a static page.', 'content-visibility' ),
     113            'callback' => array( 'is_front_page' ),
     114            'icon'     => 'slides',
     115            'keyValue' => 'front-page',
     116        ),
     117        'home'       => array(
     118            'label'    => __( 'Blog Home Page', 'content-visibility' ),
     119            'notes'    => __( 'When the blog home page is being displayed. By default this is the home page in WordPress, but if you have your home page set to be a static page (settings > reading) then this will only be when your blog page is being shown.', 'content-visibility' ),
     120            'callback' => array( 'is_home' ),
     121            'icon'     => 'admin-home',
     122            'keyValue' => 'home',
     123        ),
     124        'page'       => array(
     125            'label'    => __( 'Any Page', 'content-visibility' ),
     126            'notes'    => __( 'Any content that is a Page (not a post or custom post type)', 'content-visibility' ),
     127            'callback' => array( 'is_page' ),
     128            'icon'     => 'admin-page',
     129            'keyValue' => 'page',
     130        ),
     131        'post'       => array(
     132            'label'    => __( 'Any Post', 'content-visibility' ),
     133            'notes'    => __( 'Any content that is a Post', 'content-visibility' ),
     134            'callback' => array( 'is_singular', array( 'post' ) ),
     135            'icon'     => 'admin-post',
     136            'keyValue' => 'post',
     137        ),
     138        'category'   => array(
     139            'label'    => __( 'Category Archive', 'content-visibility' ),
     140            'notes'    => __( 'When someone looks at a list of posts that are in a certain category.', 'content-visibility' ),
     141            'callback' => array( 'is_category' ),
     142            'icon'     => 'category',
     143            'keyValue' => 'category',
     144        ),
     145        'tag'        => array(
     146            'label'    => __( 'Tag Archive', 'content-visibility' ),
     147            'notes'    => __( 'When someone looks at a list of posts that are have a tag.', 'content-visibility' ),
     148            'callback' => array( 'is_tag' ),
     149            'icon'     => 'tag',
     150            'keyValue' => 'tag',
     151        ),
     152    );
     153
     154}//end get_special_pages()
     155
     156/**
     157 * An array of pages with their associated callback function which determines if the current page is of this type.
     158 *
     159 * @since 0.1.7
     160 * @return array associative array containining a list of pages. Keys are the ID for the page. Values
     161 *               are an array containing a title, and a callback function to determine if the current page is this
     162 *               page.
     163 */
     164function get_pages() {
     165
     166    $pages_args = array(
     167        'post_status' => array( 'pending', 'draft', 'future', 'publish' ),
     168    );
     169
     170    $pages_args = apply_filters( 'content_visibility_get_pages_args', $pages_args );
     171
     172    $pages = \get_pages( $pages_args );
     173
     174    if ( false === $pages || empty( $pages ) ) {
     175        return array();
     176    }
     177
     178    $pages_data = array();
     179
     180    foreach ( $pages as $id => $page ) {
     181
     182        $page_id         = absint( $page->ID );
     183        $sanitized_title = sanitize_text_field( $page->post_title );
     184
     185        $title = ( empty( $sanitized_title ) ) ? __( '[This page has no title]', 'content-visibility' ) : $sanitized_title;
     186
     187        $pages_data[ $page_id ] = array(
     188            'label'    => $title,
     189            'id'       => $page_id,
     190            'callback' => array( 'is_page', array( $page_id ) ),
     191            'notes'    => '',
     192        );
     193    }
     194
     195    return $pages_data;
     196
     197}//end get_pages()
     198
     199/**
     200 * An array of posts with their associated callback function which determines if the current page is of this type.
     201 *
     202 * @since 0.1.7
     203 * @return array associative array containining a list of posts. Keys are the ID for the post. Values
     204 *               are an array containing a title, and a callback function to determine if the current page is this
     205 *               page.
     206 */
     207function get_posts() {
     208
     209    $posts_args = array(
     210        'post_status' => array( 'pending', 'draft', 'future', 'publish' ),
     211        'numberposts' => -1,
     212    );
     213
     214    $posts_args = apply_filters( 'content_visibility_get_posts_args', $posts_args );
     215
     216    $posts = \get_posts( $posts_args );
     217
     218    if ( false === $posts || empty( $posts ) ) {
     219        return array();
     220    }
     221
     222    $posts_data = array();
     223
     224    foreach ( $posts as $id => $post ) {
     225
     226        $post_id         = absint( $post->ID );
     227        $sanitized_title = sanitize_text_field( $post->post_title );
     228
     229        $title = ( empty( $sanitized_title ) ) ? __( '[This post has no title]', 'content-visibility' ) : $sanitized_title;
     230
     231        $posts_data[ $post_id ] = array(
     232            'label'    => $title,
     233            'id'       => $post_id,
     234            'callback' => array( 'is_post', array( $post_id ) ),
     235            'notes'    => '',
     236        );
     237    }
     238
     239    return $posts_data;
     240
     241}//end get_posts()
  • content-visibility/tags/0.1.7/includes/editor/class-editor.php

    r2443982 r2471073  
    128128        $content_visibility_args = array( 'screen' => esc_js( get_current_screen()->id ) );
    129129
     130        if ( defined( 'CV_LOCAL' ) && true === constant( 'CV_LOCAL' ) ) {
     131            $content_visibility_args['local'] = true;
     132        }
     133
     134        $content_visibility_args['specialPages'] = \RichardTape\ContentVisibility\get_special_pages();
     135
     136        $content_visibility_args['pages'] = \RichardTape\ContentVisibility\get_pages();
     137
     138        $content_visibility_args['posts'] = \RichardTape\ContentVisibility\get_posts();
     139
    130140        wp_localize_script( 'content-visibility', 'ContentVisibility', $content_visibility_args );
    131141
     
    165175
    166176        // Thing to note here: it is not trivial to fetch post types that are 100% going to be used by the
    167         // block editor. This array contains a list of post types that can use the block editor. But because
    168         // it's not 100% sure (we'd need to check for 'supports' => 'editor') we should still check that the
    169         // block editor is active on the edit screen.
     177        // block editor. This array contains a list of post types that COULD use the block editor. But because
     178        // it's not 100% sure (we'd need to check for 'supports' => 'editor' which is the non-trivial part) we should
     179        // still check that the block editor is active on the edit screen.
    170180        return $other_post_types;
    171181
  • content-visibility/tags/0.1.7/includes/public/class-public-rules.php

    r2443982 r2471073  
    5353        add_filter( 'content_visibility_rule_types_and_callbacks', array( $this, 'add_user_authenticated_callback' ), 5, 1 );
    5454
     55        // Register our special pages callback. This is for the widgets screen, but should also apply to full site editing.
     56        add_filter( 'content_visibility_rule_types_and_callbacks', array( $this, 'add_special_pages_callback' ), 5, 1 );
     57
    5558        /**
    5659         * Filter all of our registered rules and callbacks..
     
    8790
    8891    }//end add_user_authenticated_callback()
     92
     93
     94    /**
     95     * Callback which adds our special pages function to the list of rules.
     96     *
     97     * @param array $rule_types_and_callbacks Existing rules and callbacks.
     98     *
     99     * @return array modified rule types and callbacks with ours added.
     100     */
     101    public function add_special_pages_callback( $rule_types_and_callbacks ) {
     102
     103        require_once plugin_dir_path( __FILE__ ) . 'special-page/rule-logic-special-page.php';
     104
     105        $rule_types_and_callbacks['specialPage'] = 'RichardTape\ContentVisibility\rule_logic_special_page';
     106
     107        return $rule_types_and_callbacks;
     108
     109    }//end add_special_pages_callback()
    89110
    90111    /**
  • content-visibility/tags/0.1.7/readme.txt

    r2450785 r2471073  
    44Tags: block, content, visibility
    55Requires at least: 5.0
    6 Tested up to: 5.6
    7 Stable tag: 0.1.6
     6Tested up to: 5.6.1
     7Stable tag: 0.1.7
    88Requires PHP: 7.0
    99License: GPLv2 or later
     
    3232Do you use columns and put other blocks in them? Content Visibility allows you to control both the 'nested' blocks (such as a paragraph block in a column block) or the 'parent' block themselves (perhaps hide an entire column for users who aren't signed in?). Other examples of nested blocks are the Group Block or if you use an accordion or tabs block; all work!
    3333
     34## Widgets
     35
     36Since version 0.1.7 you are now able to control the visibility of your widgets. As long as you have version 9.9 or above of the [Gutenberg plugin](https://wordpress.org/plugins/gutenberg/) you are able to use content visibility on all of your widgets, just like you can with all of your blocks in the content editor. Limit display of your widgets on specific URLs on your site. Want to show a specific text block to only people who are signed in and ONLY on search results? You got it.
     37
    3438## Coming Soon
    3539
    3640 - [ ] A way to set replacement content when a block is hidden
    37  - [ ] Ensure this works with the new 'widgets' screen (controls appear but functionality is currently blocked by [this gutenberg bug](https://github.com/WordPress/gutenberg/issues/27173))
    3841 - [ ] REST API exploration. Should be fine for non-authenticated requests, but need to dive deeper for auth'd requests
    3942 - [ ] Non-trivial dates. Think things like "Every Wednesday between 3pm and 4pm" or "First two weeks in November"
    4043 - [ ] Geolocation: Show this block only to users whose connection is in France
    4144 - [ ] Specific Users: Only show a block when a specific user is signed in
     45 - [ ] Specific 3rd-party plugin integrations. Show a block when someone has purchased something from your WooCommerce store. Or when someone has submitted a specific Gravity Form.
    4246 - [ ] Do you have any feature requests? [Let me know!](https://github.com/richardtape/content-visibility/issues/new)
    4347
     
    5054= What's with the logo? =
    5155
    52 It's a chameleon. A cool little creature which can change the way it appears - to make itself more or less visible. Seemed appropriate!
     56It's a chameleon. A cool little creature which can change the way it appears - to make itself more or less visible. Seemed appropriate! Also, your suspicions are correct; a designer, I am not.
    5357
    5458= Got a question? =
     
    6064
    6165== Changelog ==
     66
     67= 0.1.7 =
     68* Added content visibility to the block-editor based widgets screen currently only available with the Gutenberg plugin. Enables you to select which posts, pages, or special types of content (such as the 404 error, a search results page, a date archive etc.) where each widget will be shown or hidden.
    6269
    6370= 0.1.6 =
  • content-visibility/trunk/build/index.asset.php

    r2450785 r2471073  
    1 <?php return array('dependencies' => array('wp-blockEditor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-plugins', 'wp-polyfill'), 'version' => '73805e04464a42880c999de34c92cf2b');
     1<?php return array('dependencies' => array('react', 'wp-blockEditor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-plugins', 'wp-polyfill'), 'version' => '0447464b24d62159bb7ca40696afd5f3');
  • content-visibility/trunk/build/index.css

    r2450785 r2471073  
    135135  width: 100%; }
    136136
     137/*
     138    Multi-select component
     139    ----------------------   
     140*/
     141.content-visibility-multi-select {
     142  width: 100%;
     143  margin: 1rem 0 0 0; }
     144
     145/*
     146    Remove horizontal scrolling, artifact of weird padding on main component.
     147*/
     148.content-visibility-multi-select .panel-content {
     149  overflow-x: hidden; }
     150
     151/*
     152    Ensure each of the items fill the dropdown and have space to make more readable.
     153*/
     154.content-visibility-multi-select-item {
     155  width: 100%; }
     156
     157.content-visibility-multi-select .select-panel label {
     158  max-width: none;
     159  margin-right: 0;
     160  padding: 0.7rem 0.7rem 0; }
     161
     162/*
     163    Don't need background colour change on hover, not WordPress-y.
     164*/
     165.content-visibility-multi-select .select-panel label:hover,
     166.content-visibility-multi-select .select-panel label:focus,
     167.content-visibility-multi-select .select-panel label.selected {
     168  background: transparent; }
     169
     170/*
     171    Give ourselves some breathing room with the main list items. Leaves the 'select all' standing alone at the top.
     172*/
     173.content-visibility-multi-select .select-panel ul {
     174  padding: 0.7rem 0; }
     175
     176.content-visibility-multi-select input[type="checkbox"] {
     177  margin-right: 0.5rem; }
     178
     179/*
     180    Make each item a bit more uniform, ensures horiz alignment with icons.
     181*/
     182.item-renderer.content-visibility-multi-select-item > span {
     183  height: 20px;
     184  display: inline-block; }
     185
     186/*
     187    Give the search input some breathing room.
     188*/
     189.content-visibility-multi-select .select-panel > div {
     190  margin-top: 0.25rem;
     191  padding: 0 0.25rem; }
     192
     193/*
     194    Make the icons a little less harsh
     195*/
     196.content-visibility-multi-select .content-visibility-multi-select-item .dashicon {
     197  opacity: 0.5; }
     198
     199/*
     200    Popover content toggle buttons. Make sure they can handle long values as someone may
     201    select multiple options. Give max-width to ensure the button's icon is inline.
     202    min-width ensures the initial button's value doesn't wrap (i.e. when it's short)
     203*/
     204.components-button.is-secondary.content-visibility-special-page-inserter-toggle {
     205  white-space: break-spaces;
     206  max-width: 85%;
     207  min-width: 190px;
     208  font-size: 12px;
     209  line-height: 1.6; }
     210
     211/*
     212    If someone has selected special pages, then we make it less like a link.
     213*/
     214.components-button.is-secondary.content-visibility-special-page-inserter-toggle.has-items {
     215  text-decoration: none;
     216  line-height: 1.6;
     217  text-transform: capitalize; }
     218
     219/*
     220    The 'Set Selected' button
     221*/
     222.components-button.content-visibility-submit-special-pages {
     223  margin-top: 1rem;
     224  margin-bottom: 1rem; }
     225
     226/*
     227    Special Page Help Toggle
     228*/
     229.content-visibility-help-text .content-visibility-special-page-help-instructions-toggle.is-small {
     230  font-size: 12px;
     231  margin-top: 1rem; }
     232
     233.content-visibility-special-page-help-instructions-popover .components-popover__content {
     234  padding: 1rem;
     235  width: 23rem;
     236  height: 30rem !important; }
     237
     238.content-visibility-control-panel .special-page-help-instructions-button {
     239  text-align: right;
     240  margin-top: 1rem;
     241  margin-bottom: 0; }
     242
     243.content-visibility-control-panel .special-page-help-instructions-button .content-visibility-special-page-help-instructions-toggle {
     244  margin-left: 0;
     245  margin-right: 0;
     246  padding-left: 3px; }
     247
     248.content-visibility-control-panel .special-page-help-instructions-button .dashicon {
     249  position: relative;
     250  top: 3px;
     251  color: #007cba; }
     252
     253.content-visibility-submit-special-pages-button-container {
     254  text-align: right;
     255  margin-top: 0; }
     256
     257/*
     258    Special Page Help Popover
     259*/
     260.content-visibility-special-page-help-instructions-popover span {
     261  color: black;
     262  font-weight: 600; }
     263
     264/* Special Page Close Button */
     265.content-visibility-close-popover {
     266  position: absolute;
     267  top: -2rem;
     268  right: -1rem; }
     269
     270/*
     271    Special Page Panel
     272*/
     273/* Make sure each inserter is its own row */
     274.components-panel__row.content-visibility-page-inserter-panel-row {
     275  flex-direction: column; }
     276
     277.content-visibility-special-page-inserter {
     278  margin-top: 1rem; }
     279
     280/* Align the icon for each inserter a little neater */
     281.content-visibility-special-page-inserter .dashicon {
     282  position: relative;
     283  top: 4px;
     284  opacity: 0.6; }
     285
    137286
    138287/*# sourceMappingURL=index.css.map*/
  • content-visibility/trunk/build/index.css.map

    r2450785 r2471073  
    1 {"version":3,"sources":["webpack:///editor.scss"],"names":[],"mappings":"AAAA;;;;;;;CAOC;AACD;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,eAAe;EACf,eAAe,EAAE;;AAEnB;EACE,UAAU;EACV,iBAAiB;EACjB,qBAAqB,EAAE;;AAEzB;;CAEC;AACD;EACE,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;EACE,WAAW;EACX,cAAc;EACd,WAAW;EACX,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,2BAA2B,EAAE;;AAE/B;EACE,gBAAgB,EAAE;;AAEpB;EACE,iBAAiB,EAAE;;AAErB;;CAEC;AACD;EACE,yBAAyB;EACzB,kBAAkB;EAClB,mBAAmB;EACnB,WAAW,EAAE;;AAEf;EACE,gCAAgC,EAAE;;AAEpC;;CAEC;AACD;EACE,YAAY,EAAE;;AAEhB;EACE,YAAY,EAAE;;AAEhB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;EACE,kBAAkB,EAAE;;AAEtB;EACE,gBAAgB,EAAE;;AAEpB;;;;CAIC;AACD;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,oWAAoW,EAAE;;AAExW;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,ofAAof,EAAE;;AAExf;;CAEC;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,WAAW;EACX,WAAW;EACX,WAAW,EAAE","file":"index.css","sourcesContent":["/*\n* Styles for the Content Visibility WordPress plugin by Rich Tape.\n*\n* This file provides the core styling for the main Content Visibility Plugin. We mostly\n* use native WordPress control components, and rely on their styling to make this plugin\n* feel native to WordPress. However, there are some tweaks needed as we're using components\n* in ways that WordPress doesn't use yet - and hence doesn't provide styling affordances for.\n*/\n/*\n    Ensure our slots for add-ons are block.\n*/\n.content-visibility-controls .content-visibility-extra-controls {\n  display: block; }\n\n/*\n    Give the Rules Enabled toggle a little more breathing room.\n*/\n.content-visibility-controls .content-visibility-rules-enabled .components-toggle-control {\n  margin: 1rem 0; }\n\n/*\n    Make the Show/Hidden radio buttons sit next to each other...\n*/\n.content-visibility-controls .components-base-control__label {\n  max-width: none;\n  margin-top: 1em; }\n\n.content-visibility-controls .components-radio-control__option {\n  width: 50%;\n  margin: 0.5em 0 0;\n  display: inline-block; }\n\n/*\n    ...But not for User Roles\n*/\n.content-visibility-controls .content-visibility-user-role-control .components-radio-control__option {\n  width: 100%; }\n\n/*\n    User Auth controls, with the help text, look weird due to flex.\n*/\n.content-visibility-control-panel.content-visibility-user-authenticated-controls .components-panel__row {\n  display: block; }\n\n.content-visibility-user-authenticated-control {\n  width: 100%;\n  display: block;\n  float: none;\n  clear: both; }\n\n/*\n    Make the shown/not shown control stand out a little\n*/\n.content-visibility-displayed-control .components-base-control.components-radio-control {\n  margin-bottom: 0 !important; }\n\n.content-visibility-displayed-control .components-base-control.components-radio-control .components-base-control__field {\n  margin-bottom: 0; }\n\n.content-visibility-displayed-control .components-base-control__field .components-radio-control__option:last-of-type {\n  text-align: right; }\n\n/*\n    Styling for the rule panels\n*/\n.content-visibility-controls.is-opened .content-visibility-control-panel {\n  border: 1px solid #e2e4e7;\n  margin-bottom: 1em;\n  background: #fcfcfc;\n  width: 100%; }\n\n.content-visibility-controls.is-opened .content-visibility-control-panel.is-opened .components-panel__body-toggle {\n  border-bottom: 1px solid #e2e4e7; }\n\n/*\n    When the rules are disabled (default) we lower opacity of controls\n*/\n.content-visibility-controls-container.hide-controls {\n  opacity: 0.2; }\n\n.components-disabled {\n  opacity: 0.5; }\n\n/*\n    Tidy up margins for user auth\n*/\n.content-visibility-user-authenticated-controls .components-panel__row .content-visibility-user-authenticated-control {\n  margin-bottom: 0; }\n\n/*\n    User roles have a massive margin, reduce that\n*/\n.content-visibility-user-role-controls .components-panel__row ul {\n  margin-bottom: 0; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control {\n  margin-bottom: 5px; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control:last-of-type {\n  margin-bottom: 0; }\n\n/*\n    When a block has rules enabled, we style it to show it has rules. Looks a bit weird that we have two\n    rules almost identical. But the BlockListBlock component only accepts one className so this is how it has to be.\n    Different icons used for 'shown' or 'hidden' rules.\n*/\n.wp-admin .wp-block.content-visibility-rules-enabled-shown:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle></svg>'); }\n\n.wp-admin .wp-block.content-visibility-rules-enabled-hidden:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye-off\"><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line></svg>'); }\n\n/*\n    Help text generic styling. This is to make it look like a WordPress hint.\n*/\n.content-visibility-controls-container .content-visibility-help-text {\n  margin: 1rem 0 0;\n  font-size: 12px;\n  font-style: normal;\n  color: #757575;\n  clear: both;\n  float: none;\n  width: 100%; }\n"],"sourceRoot":""}
     1{"version":3,"sources":["webpack:///editor.scss"],"names":[],"mappings":"AAAA;;;;;;;CAOC;AACD;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;;CAEC;AACD;EACE,eAAe;EACf,eAAe,EAAE;;AAEnB;EACE,UAAU;EACV,iBAAiB;EACjB,qBAAqB,EAAE;;AAEzB;;CAEC;AACD;EACE,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,cAAc,EAAE;;AAElB;EACE,WAAW;EACX,cAAc;EACd,WAAW;EACX,WAAW,EAAE;;AAEf;;CAEC;AACD;EACE,2BAA2B,EAAE;;AAE/B;EACE,gBAAgB,EAAE;;AAEpB;EACE,iBAAiB,EAAE;;AAErB;;CAEC;AACD;EACE,yBAAyB;EACzB,kBAAkB;EAClB,mBAAmB;EACnB,WAAW,EAAE;;AAEf;EACE,gCAAgC,EAAE;;AAEpC;;CAEC;AACD;EACE,YAAY,EAAE;;AAEhB;EACE,YAAY,EAAE;;AAEhB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;;CAEC;AACD;EACE,gBAAgB,EAAE;;AAEpB;EACE,kBAAkB,EAAE;;AAEtB;EACE,gBAAgB,EAAE;;AAEpB;;;;CAIC;AACD;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,oWAAoW,EAAE;;AAExW;EACE,cAAc;EACd,YAAY;EACZ,WAAW;EACX,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,ofAAof,EAAE;;AAExf;;CAEC;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,cAAc;EACd,WAAW;EACX,WAAW;EACX,WAAW,EAAE;;AAEf;;;CAGC;AACD;EACE,WAAW;EACX,kBAAkB,EAAE;;AAEtB;;CAEC;AACD;EACE,kBAAkB,EAAE;;AAEtB;;CAEC;AACD;EACE,WAAW,EAAE;;AAEf;EACE,eAAe;EACf,eAAe;EACf,wBAAwB,EAAE;;AAE5B;;CAEC;AACD;;;EAGE,uBAAuB,EAAE;;AAE3B;;CAEC;AACD;EACE,iBAAiB,EAAE;;AAErB;EACE,oBAAoB,EAAE;;AAExB;;CAEC;AACD;EACE,YAAY;EACZ,qBAAqB,EAAE;;AAEzB;;CAEC;AACD;EACE,mBAAmB;EACnB,kBAAkB,EAAE;;AAEtB;;CAEC;AACD;EACE,YAAY,EAAE;;AAEhB;;;;CAIC;AACD;EACE,yBAAyB;EACzB,cAAc;EACd,gBAAgB;EAChB,eAAe;EACf,gBAAgB,EAAE;;AAEpB;;CAEC;AACD;EACE,qBAAqB;EACrB,gBAAgB;EAChB,0BAA0B,EAAE;;AAE9B;;CAEC;AACD;EACE,gBAAgB;EAChB,mBAAmB,EAAE;;AAEvB;;CAEC;AACD;EACE,eAAe;EACf,gBAAgB,EAAE;;AAEpB;EACE,aAAa;EACb,YAAY;EACZ,wBAAwB,EAAE;;AAE5B;EACE,iBAAiB;EACjB,gBAAgB;EAChB,gBAAgB,EAAE;;AAEpB;EACE,cAAc;EACd,eAAe;EACf,iBAAiB,EAAE;;AAErB;EACE,kBAAkB;EAClB,QAAQ;EACR,cAAc,EAAE;;AAElB;EACE,iBAAiB;EACjB,aAAa,EAAE;;AAEjB;;CAEC;AACD;EACE,YAAY;EACZ,gBAAgB,EAAE;;AAEpB,8BAA8B;AAC9B;EACE,kBAAkB;EAClB,UAAU;EACV,YAAY,EAAE;;AAEhB;;CAEC;AACD,2CAA2C;AAC3C;EACE,sBAAsB,EAAE;;AAE1B;EACE,gBAAgB,EAAE;;AAEpB,qDAAqD;AACrD;EACE,kBAAkB;EAClB,QAAQ;EACR,YAAY,EAAE","file":"index.css","sourcesContent":["/*\n* Styles for the Content Visibility WordPress plugin by Rich Tape.\n*\n* This file provides the core styling for the main Content Visibility Plugin. We mostly\n* use native WordPress control components, and rely on their styling to make this plugin\n* feel native to WordPress. However, there are some tweaks needed as we're using components\n* in ways that WordPress doesn't use yet - and hence doesn't provide styling affordances for.\n*/\n/*\n    Ensure our slots for add-ons are block.\n*/\n.content-visibility-controls .content-visibility-extra-controls {\n  display: block; }\n\n/*\n    Give the Rules Enabled toggle a little more breathing room.\n*/\n.content-visibility-controls .content-visibility-rules-enabled .components-toggle-control {\n  margin: 1rem 0; }\n\n/*\n    Make the Show/Hidden radio buttons sit next to each other...\n*/\n.content-visibility-controls .components-base-control__label {\n  max-width: none;\n  margin-top: 1em; }\n\n.content-visibility-controls .components-radio-control__option {\n  width: 50%;\n  margin: 0.5em 0 0;\n  display: inline-block; }\n\n/*\n    ...But not for User Roles\n*/\n.content-visibility-controls .content-visibility-user-role-control .components-radio-control__option {\n  width: 100%; }\n\n/*\n    User Auth controls, with the help text, look weird due to flex.\n*/\n.content-visibility-control-panel.content-visibility-user-authenticated-controls .components-panel__row {\n  display: block; }\n\n.content-visibility-user-authenticated-control {\n  width: 100%;\n  display: block;\n  float: none;\n  clear: both; }\n\n/*\n    Make the shown/not shown control stand out a little\n*/\n.content-visibility-displayed-control .components-base-control.components-radio-control {\n  margin-bottom: 0 !important; }\n\n.content-visibility-displayed-control .components-base-control.components-radio-control .components-base-control__field {\n  margin-bottom: 0; }\n\n.content-visibility-displayed-control .components-base-control__field .components-radio-control__option:last-of-type {\n  text-align: right; }\n\n/*\n    Styling for the rule panels\n*/\n.content-visibility-controls.is-opened .content-visibility-control-panel {\n  border: 1px solid #e2e4e7;\n  margin-bottom: 1em;\n  background: #fcfcfc;\n  width: 100%; }\n\n.content-visibility-controls.is-opened .content-visibility-control-panel.is-opened .components-panel__body-toggle {\n  border-bottom: 1px solid #e2e4e7; }\n\n/*\n    When the rules are disabled (default) we lower opacity of controls\n*/\n.content-visibility-controls-container.hide-controls {\n  opacity: 0.2; }\n\n.components-disabled {\n  opacity: 0.5; }\n\n/*\n    Tidy up margins for user auth\n*/\n.content-visibility-user-authenticated-controls .components-panel__row .content-visibility-user-authenticated-control {\n  margin-bottom: 0; }\n\n/*\n    User roles have a massive margin, reduce that\n*/\n.content-visibility-user-role-controls .components-panel__row ul {\n  margin-bottom: 0; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control {\n  margin-bottom: 5px; }\n\n.content-visibility-user-role-controls .components-panel__row ul .components-base-control:last-of-type {\n  margin-bottom: 0; }\n\n/*\n    When a block has rules enabled, we style it to show it has rules. Looks a bit weird that we have two\n    rules almost identical. But the BlockListBlock component only accepts one className so this is how it has to be.\n    Different icons used for 'shown' or 'hidden' rules.\n*/\n.wp-admin .wp-block.content-visibility-rules-enabled-shown:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye\"><path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\"></path><circle cx=\"12\" cy=\"12\" r=\"3\"></circle></svg>'); }\n\n.wp-admin .wp-block.content-visibility-rules-enabled-hidden:after {\n  display: block;\n  height: 24px;\n  width: 24px;\n  margin-left: 105%;\n  margin-top: 1%;\n  opacity: 0.25;\n  content: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-eye-off\"><path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\"></path><line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\"></line></svg>'); }\n\n/*\n    Help text generic styling. This is to make it look like a WordPress hint.\n*/\n.content-visibility-controls-container .content-visibility-help-text {\n  margin: 1rem 0 0;\n  font-size: 12px;\n  font-style: normal;\n  color: #757575;\n  clear: both;\n  float: none;\n  width: 100%; }\n\n/*\n    Multi-select component\n    ----------------------    \n*/\n.content-visibility-multi-select {\n  width: 100%;\n  margin: 1rem 0 0 0; }\n\n/*\n    Remove horizontal scrolling, artifact of weird padding on main component.\n*/\n.content-visibility-multi-select .panel-content {\n  overflow-x: hidden; }\n\n/*\n    Ensure each of the items fill the dropdown and have space to make more readable.\n*/\n.content-visibility-multi-select-item {\n  width: 100%; }\n\n.content-visibility-multi-select .select-panel label {\n  max-width: none;\n  margin-right: 0;\n  padding: 0.7rem 0.7rem 0; }\n\n/*\n    Don't need background colour change on hover, not WordPress-y.\n*/\n.content-visibility-multi-select .select-panel label:hover,\n.content-visibility-multi-select .select-panel label:focus,\n.content-visibility-multi-select .select-panel label.selected {\n  background: transparent; }\n\n/*\n    Give ourselves some breathing room with the main list items. Leaves the 'select all' standing alone at the top.\n*/\n.content-visibility-multi-select .select-panel ul {\n  padding: 0.7rem 0; }\n\n.content-visibility-multi-select input[type=\"checkbox\"] {\n  margin-right: 0.5rem; }\n\n/*\n    Make each item a bit more uniform, ensures horiz alignment with icons.\n*/\n.item-renderer.content-visibility-multi-select-item > span {\n  height: 20px;\n  display: inline-block; }\n\n/*\n    Give the search input some breathing room.\n*/\n.content-visibility-multi-select .select-panel > div {\n  margin-top: 0.25rem;\n  padding: 0 0.25rem; }\n\n/*\n    Make the icons a little less harsh\n*/\n.content-visibility-multi-select .content-visibility-multi-select-item .dashicon {\n  opacity: 0.5; }\n\n/*\n    Popover content toggle buttons. Make sure they can handle long values as someone may\n    select multiple options. Give max-width to ensure the button's icon is inline.\n    min-width ensures the initial button's value doesn't wrap (i.e. when it's short)\n*/\n.components-button.is-secondary.content-visibility-special-page-inserter-toggle {\n  white-space: break-spaces;\n  max-width: 85%;\n  min-width: 190px;\n  font-size: 12px;\n  line-height: 1.6; }\n\n/*\n    If someone has selected special pages, then we make it less like a link.\n*/\n.components-button.is-secondary.content-visibility-special-page-inserter-toggle.has-items {\n  text-decoration: none;\n  line-height: 1.6;\n  text-transform: capitalize; }\n\n/*\n    The 'Set Selected' button\n*/\n.components-button.content-visibility-submit-special-pages {\n  margin-top: 1rem;\n  margin-bottom: 1rem; }\n\n/*\n    Special Page Help Toggle\n*/\n.content-visibility-help-text .content-visibility-special-page-help-instructions-toggle.is-small {\n  font-size: 12px;\n  margin-top: 1rem; }\n\n.content-visibility-special-page-help-instructions-popover .components-popover__content {\n  padding: 1rem;\n  width: 23rem;\n  height: 30rem !important; }\n\n.content-visibility-control-panel .special-page-help-instructions-button {\n  text-align: right;\n  margin-top: 1rem;\n  margin-bottom: 0; }\n\n.content-visibility-control-panel .special-page-help-instructions-button .content-visibility-special-page-help-instructions-toggle {\n  margin-left: 0;\n  margin-right: 0;\n  padding-left: 3px; }\n\n.content-visibility-control-panel .special-page-help-instructions-button .dashicon {\n  position: relative;\n  top: 3px;\n  color: #007cba; }\n\n.content-visibility-submit-special-pages-button-container {\n  text-align: right;\n  margin-top: 0; }\n\n/*\n    Special Page Help Popover\n*/\n.content-visibility-special-page-help-instructions-popover span {\n  color: black;\n  font-weight: 600; }\n\n/* Special Page Close Button */\n.content-visibility-close-popover {\n  position: absolute;\n  top: -2rem;\n  right: -1rem; }\n\n/*\n    Special Page Panel\n*/\n/* Make sure each inserter is its own row */\n.components-panel__row.content-visibility-page-inserter-panel-row {\n  flex-direction: column; }\n\n.content-visibility-special-page-inserter {\n  margin-top: 1rem; }\n\n/* Align the icon for each inserter a little neater */\n.content-visibility-special-page-inserter .dashicon {\n  position: relative;\n  top: 4px;\n  opacity: 0.6; }\n"],"sourceRoot":""}
  • content-visibility/trunk/build/index.js

    r2450785 r2471073  
    1 (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["style-index"],{
     1(window["webpackJsonp_content_visibility"] = window["webpackJsonp_content_visibility"] || []).push([["style-index"],{
    22
    33/***/ "./src/style.scss":
     
    155155/******/    __webpack_require__.p = "";
    156156/******/
    157 /******/    var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
     157/******/    var jsonpArray = window["webpackJsonp_content_visibility"] = window["webpackJsonp_content_visibility"] || [];
    158158/******/    var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
    159159/******/    jsonpArray.push = webpackJsonpCallback;
     
    223223
    224224module.exports = _extends;
     225
     226/***/ }),
     227
     228/***/ "./node_modules/@babel/runtime/helpers/typeof.js":
     229/*!*******************************************************!*\
     230  !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
     231  \*******************************************************/
     232/*! no static exports found */
     233/***/ (function(module, exports) {
     234
     235function _typeof(obj) {
     236  "@babel/helpers - typeof";
     237
     238  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
     239    module.exports = _typeof = function _typeof(obj) {
     240      return typeof obj;
     241    };
     242  } else {
     243    module.exports = _typeof = function _typeof(obj) {
     244      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
     245    };
     246  }
     247
     248  return _typeof(obj);
     249}
     250
     251module.exports = _typeof;
     252
     253/***/ }),
     254
     255/***/ "./node_modules/goober/dist/goober.module.js":
     256/*!***************************************************!*\
     257  !*** ./node_modules/goober/dist/goober.module.js ***!
     258  \***************************************************/
     259/*! exports provided: css, extractCss, glob, keyframes, setup, styled */
     260/***/ (function(module, __webpack_exports__, __webpack_require__) {
     261
     262"use strict";
     263__webpack_require__.r(__webpack_exports__);
     264/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return i; });
     265/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extractCss", function() { return r; });
     266/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "glob", function() { return d; });
     267/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyframes", function() { return g; });
     268/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setup", function() { return b; });
     269/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "styled", function() { return h; });
     270let e={data:""},t=t=>{try{let e=t?t.querySelector("#_goober"):self._goober;return e||(e=(t||document.head).appendChild(document.createElement("style")),e.innerHTML=" ",e.id="_goober"),e.firstChild}catch(e){}return t||e},r=e=>{let r=t(e),a=r.data;return r.data="",a},a=/(?:([A-Z0-9-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(})/gi,l=/\/\*[\s\S]*?\*\/|\s{2,}|\n/gm,o=(e,t)=>{let r,a="",l="",n="";for(let c in e){let s=e[c];"object"==typeof s?(r=t?t.replace(/([^,])+/g,e=>c.replace(/([^,])+/g,t=>/&/g.test(t)?t.replace(/&/g,e):e?e+" "+t:t)):c,l+="@"==c[0]?"f"==c[1]?o(s,c):c+"{"+o(s,"k"==c[1]?"":t)+"}":o(s,r)):"@"==c[0]&&"i"==c[1]?a=c+" "+s+";":n+=o.p?o.p(c.replace(/[A-Z]/g,"-$&").toLowerCase(),s):c.replace(/[A-Z]/g,"-$&").toLowerCase()+":"+s+";"}return n[0]?(r=t?t+"{"+n+"}":n,a+r+l):a+l},n={},c=e=>{let t="";for(let r in e)t+=r+("object"==typeof e[r]?c(e[r]):e[r]);return t},s=(e,t,r,s,p)=>{let i="object"==typeof e?c(e):e,u=n[i]||(n[i]="go"+i.split("").reduce((e,t)=>101*e+t.charCodeAt(0)>>>0,11));if(!n[u]){let t="object"==typeof e?e:(e=>{let t,r=[{}];for(;t=a.exec(e.replace(l,""));)t[4]&&r.shift(),t[3]?r.unshift(r[0][t[3]]=r[0][t[3]]||{}):t[4]||(r[0][t[1]]=t[2]);return r[0]})(e);n[u]=o(p?{["@keyframes "+u]:t}:t,r?"":"."+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(n[u],t,s),u},p=(e,t,r)=>e.reduce((e,a,l)=>{let n=t[l];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?"."+t:e&&"object"==typeof e?e.props?"":o(e,""):e}return e+a+(null==n?"":n)},"");function i(e){let r=this||{},a=e.call?e(r.p):e;return s(a.unshift?a.raw?p(a,[].slice.call(arguments,1),r.p):a.reduce((e,t)=>t?Object.assign(e,t.call?t(r.p):t):e,{}):a,t(r.target),r.g,r.o,r.k)}let u,f,d=i.bind({g:1}),g=i.bind({k:1});function b(e,t,r){o.p=t,u=e,f=r}function h(e,t){let r=this||{};return function(){let a=arguments;function l(o,n){let c=Object.assign({},o),s=c.className||l.className;return r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\d+/g.test(s),c.className=i.apply(r,a)+(s?" "+s:""),t&&(c.ref=n),u(c.as||e,c)}return t?t(l):l}}
     271
    225272
    226273/***/ }),
     
    21112158
    21122159module.exports = stubFalse;
     2160
     2161
     2162/***/ }),
     2163
     2164/***/ "./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js":
     2165/*!********************************************************************************************!*\
     2166  !*** ./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js ***!
     2167  \********************************************************************************************/
     2168/*! exports provided: default, Dropdown, SelectItem, SelectPanel */
     2169/***/ (function(module, __webpack_exports__, __webpack_require__) {
     2170
     2171"use strict";
     2172__webpack_require__.r(__webpack_exports__);
     2173/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return Dropdown; });
     2174/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectItem", function() { return SelectItem; });
     2175/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectPanel", function() { return SelectPanel; });
     2176/* harmony import */ var goober__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! goober */ "./node_modules/goober/dist/goober.module.js");
     2177/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
     2178/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
     2179
     2180
     2181
     2182var debounce = function debounce(func, wait) {
     2183  var timeout;
     2184  return function () {
     2185    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
     2186      args[_key] = arguments[_key];
     2187    }
     2188
     2189    clearTimeout(timeout);
     2190    timeout = setTimeout(function () {
     2191      func.apply(null, args);
     2192    }, wait);
     2193  };
     2194};
     2195
     2196/**
     2197 * Filters React Select options and sorts by similarity to a search filter.
     2198 * Handles partial matches, eg. searching for "Waberg High" will find "Raoul
     2199 * Wallenberg Traditional High School". Case insensitive. Ignores
     2200 * non-alphanumeric characters.
     2201 *
     2202 * @param  options  An unfiltered list of Options.
     2203 * @param? filter  A string to compare against Option labels.
     2204 * @param? substitutions  Strings with multiple spellings or variations that we
     2205 *           expect to match, eg. accented characters or abbreviated words.
     2206 *
     2207 * @return A filtered and sorted array of Options.
     2208 */
     2209function filterOptions(options, filter, substitutions) {
     2210  // If the filter is blank, return the full list of Options.
     2211  if (!filter) {
     2212    return options;
     2213  }
     2214
     2215  var cleanFilter = cleanUpText(filter, substitutions);
     2216  return options // Filter out undefined or null Options.
     2217  .filter(function (_ref) {
     2218    var label = _ref.label,
     2219        value = _ref.value;
     2220    return label != null && value != null;
     2221  }) // Create a {score, Option} pair for each Option based on its label's
     2222  // similarity to the filter text.
     2223  .map(function (option) {
     2224    return {
     2225      option: option,
     2226      score: typeaheadSimilarity(cleanUpText(option.label, substitutions), cleanFilter)
     2227    };
     2228  }) // Only include matches of the entire substring, with a slight
     2229  // affordance for transposition or extra characters.
     2230  .filter(function (pair) {
     2231    return pair.score >= cleanFilter.length - 2;
     2232  }) // Sort 'em by order of their score.
     2233  .sort(function (a, b) {
     2234    return b.score - a.score;
     2235  }) // …and grab the original Options back from their pairs.
     2236  .map(function (pair) {
     2237    return pair.option;
     2238  });
     2239}
     2240/**
     2241 * Scores the similarity between two strings by returning the length of the
     2242 * longest common subsequence. Intended for comparing strings of different
     2243 * lengths; eg. when matching a typeahead search input with a school name.
     2244
     2245 * Meant for use in an instant search box where results are being fetched
     2246 * as a user is typing.
     2247 *
     2248 * @param  a  The longer string (though, we flip them if it's shorter).
     2249 * @param  b  The shorter string, eg. a typeahead search input.
     2250 *
     2251 * @return The length of the longest common subsequence. Higher scores indicate
     2252 *           closer matches.
     2253 */
     2254
     2255function typeaheadSimilarity(a, b) {
     2256  var aLength = a.length;
     2257  var bLength = b.length;
     2258  var table = [];
     2259
     2260  if (!aLength || !bLength) {
     2261    return 0;
     2262  } // Ensure `a` isn't shorter than `b`.
     2263
     2264
     2265  if (aLength < bLength) {
     2266    var _ref2 = [b, a];
     2267    a = _ref2[0];
     2268    b = _ref2[1];
     2269  } // Early exit if `a` includes `b`; these will be scored higher than any
     2270  // other options with the same `b` (filter string), with a preference for
     2271  // shorter `a` strings (option labels).
     2272
     2273
     2274  if (a.indexOf(b) !== -1) {
     2275    return bLength + 1 / aLength;
     2276  } // Initialize the table axes:
     2277  //
     2278  //    0 0 0 0 ... bLength
     2279  //    0
     2280  //    0
     2281  //
     2282  //   ...
     2283  //
     2284  // aLength
     2285  //
     2286
     2287
     2288  for (var x = 0; x <= aLength; ++x) {
     2289    table[x] = [0];
     2290  }
     2291
     2292  for (var y = 0; y <= bLength; ++y) {
     2293    table[0][y] = 0;
     2294  } // Populate the rest of the table with a dynamic programming algorithm.
     2295
     2296
     2297  for (var _x = 1; _x <= aLength; ++_x) {
     2298    for (var _y = 1; _y <= bLength; ++_y) {
     2299      table[_x][_y] = a[_x - 1] === b[_y - 1] ? 1 + table[_x - 1][_y - 1] : Math.max(table[_x][_y - 1], table[_x - 1][_y]);
     2300    }
     2301  }
     2302
     2303  return table[aLength][bLength];
     2304}
     2305/**
     2306 * Apply string substitutions, remove non-alphanumeric characters, and convert
     2307 * all letters to uppercase.
     2308 *
     2309 * eg. 'Scoil Bhríde Primary School' may become 'SCOILBHRIDEPRIMARYSCHOOL'.
     2310 *
     2311 * @param  input  An unsanitized input string.
     2312 * @param  substitutions  Strings with multiple spellings or variations that we
     2313 *          expect to match, for example accented characters or abbreviated
     2314 *          words.
     2315 *
     2316 * @return The sanitized text.
     2317 */
     2318
     2319function cleanUpText(input, substitutions) {
     2320  if (!input) {
     2321    return "";
     2322  } // Uppercase and remove all non-alphanumeric, non-accented characters.
     2323  // Also remove underscores.
     2324
     2325
     2326  input = input.toUpperCase().replace(/((?=[^\u00E0-\u00FC])\W)|_/g, "");
     2327
     2328  if (!substitutions) {
     2329    return input;
     2330  }
     2331
     2332  var safeSubstitutions = substitutions; // For Flow.
     2333  // Replace all strings in `safeSubstitutions` with their standardized
     2334  // counterparts.
     2335
     2336  return Object.keys(safeSubstitutions).reduce(function (output, substitution) {
     2337    var unsubbed = new RegExp(substitution, "g");
     2338    return output.replace(unsubbed, safeSubstitutions[substitution]);
     2339  }, input);
     2340}
     2341
     2342var strings = {
     2343  selectSomeItems: "Select...",
     2344  allItemsAreSelected: "All items are selected.",
     2345  selectAll: "Select All",
     2346  search: "Search",
     2347  clearSearch: "Clear Search",
     2348  clearSelected: "Clear Selected"
     2349};
     2350function getString(key, overrideStrings) {
     2351  return (overrideStrings == null ? void 0 : overrideStrings[key]) || strings[key];
     2352}
     2353
     2354var Cross = function Cross() {
     2355  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("svg", {
     2356    width: "24",
     2357    height: "24",
     2358    fill: "none",
     2359    stroke: "currentColor",
     2360    strokeWidth: "2",
     2361    className: "dropdown-search-clear-icon gray"
     2362  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("line", {
     2363    x1: "18",
     2364    y1: "6",
     2365    x2: "6",
     2366    y2: "18"
     2367  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("line", {
     2368    x1: "6",
     2369    y1: "6",
     2370    x2: "18",
     2371    y2: "18"
     2372  }));
     2373};
     2374
     2375var DefaultRenderer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2376  "& input,& span": {
     2377    verticalAlign: "middle",
     2378    margin: 0
     2379  },
     2380  span: {
     2381    display: "inline-block",
     2382    paddingLeft: "5px"
     2383  },
     2384  "&.disabled": {
     2385    opacity: 0.5
     2386  }
     2387});
     2388
     2389var DefaultItemRenderer = function DefaultItemRenderer(_ref) {
     2390  var checked = _ref.checked,
     2391      option = _ref.option,
     2392      onClick = _ref.onClick,
     2393      disabled = _ref.disabled;
     2394  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2395    className: DefaultRenderer + " item-renderer " + (disabled && "disabled")
     2396  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("input", {
     2397    type: "checkbox",
     2398    onChange: onClick,
     2399    checked: checked,
     2400    tabIndex: -1,
     2401    disabled: disabled
     2402  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", null, option.label));
     2403};
     2404
     2405/**
     2406 * This component represents an individual item in the multi-select drop-down
     2407 */
     2408var ItemContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2409  boxSizing: "border-box",
     2410  cursor: "pointer",
     2411  display: "block",
     2412  padding: "var(--rmsc-p)",
     2413  outline: 0,
     2414  "&:hover,&:focus": {
     2415    background: "var(--rmsc-hover)"
     2416  },
     2417  "&.selected": {
     2418    background: "var(--rmsc-selected)"
     2419  }
     2420});
     2421
     2422var SelectItem = function SelectItem(_ref) {
     2423  var _ref$itemRenderer = _ref.itemRenderer,
     2424      ItemRenderer = _ref$itemRenderer === void 0 ? DefaultItemRenderer : _ref$itemRenderer,
     2425      option = _ref.option,
     2426      checked = _ref.checked,
     2427      focused = _ref.focused,
     2428      tabIndex = _ref.tabIndex,
     2429      disabled = _ref.disabled,
     2430      onSelectionChanged = _ref.onSelectionChanged,
     2431      onClick = _ref.onClick;
     2432  var itemRef = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])();
     2433  Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(function () {
     2434    updateFocus(); // eslint-disable-next-line
     2435  }, [focused]);
     2436
     2437  var toggleChecked = function toggleChecked() {
     2438    onSelectionChanged(!checked);
     2439  };
     2440
     2441  var handleClick = function handleClick(e) {
     2442    toggleChecked();
     2443    onClick(e);
     2444  };
     2445
     2446  var updateFocus = function updateFocus() {
     2447    if (focused && !disabled && itemRef) {
     2448      itemRef.current.focus();
     2449    }
     2450  };
     2451
     2452  var handleKeyDown = function handleKeyDown(e) {
     2453    switch (e.which) {
     2454      case 13: // Enter
     2455
     2456      case 32:
     2457        // Space
     2458        toggleChecked();
     2459        break;
     2460
     2461      default:
     2462        return;
     2463    }
     2464
     2465    e.preventDefault();
     2466  };
     2467
     2468  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("label", {
     2469    className: ItemContainer + " select-item " + (checked && "selected"),
     2470    role: "option",
     2471    "aria-selected": checked,
     2472    tabIndex: tabIndex,
     2473    ref: itemRef,
     2474    onKeyDown: handleKeyDown
     2475  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ItemRenderer, {
     2476    option: option,
     2477    checked: checked,
     2478    onClick: handleClick,
     2479    disabled: disabled
     2480  }));
     2481};
     2482
     2483/**
     2484 * This component represents an unadorned list of SelectItem (s).
     2485 */
     2486var SelectListUl = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2487  margin: 0,
     2488  paddingLeft: 0,
     2489  li: {
     2490    listStyle: "none",
     2491    margin: 0
     2492  }
     2493});
     2494var skipIndex = 2;
     2495
     2496var SelectList = function SelectList(_ref) {
     2497  var value = _ref.value,
     2498      onChange = _ref.onChange,
     2499      disabled = _ref.disabled,
     2500      ItemRenderer = _ref.ItemRenderer,
     2501      options = _ref.options,
     2502      focusIndex = _ref.focusIndex,
     2503      _onClick = _ref.onClick;
     2504
     2505  var handleSelectionChanged = function handleSelectionChanged(option, checked) {
     2506    if (disabled) {
     2507      return;
     2508    }
     2509
     2510    onChange(checked ? [].concat(value, [option]) : value.filter(function (o) {
     2511      return o.value !== option.value;
     2512    }));
     2513  };
     2514
     2515  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("ul", {
     2516    className: SelectListUl
     2517  }, options.map(function (o, i) {
     2518    var tabIndex = i + skipIndex;
     2519    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("li", {
     2520      key: o.hasOwnProperty("key") ? o.key : i
     2521    }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectItem, {
     2522      focused: focusIndex === tabIndex,
     2523      tabIndex: tabIndex,
     2524      option: o,
     2525      onSelectionChanged: function onSelectionChanged(c) {
     2526        return handleSelectionChanged(o, c);
     2527      },
     2528      checked: value.find(function (s) {
     2529        return s.value === o.value;
     2530      }) ? true : false,
     2531      onClick: function onClick(e) {
     2532        return _onClick(e, tabIndex);
     2533      },
     2534      itemRenderer: ItemRenderer,
     2535      disabled: o.disabled || disabled
     2536    }));
     2537  }));
     2538};
     2539
     2540/**
     2541 * This component represents the entire panel which gets dropped down when the
     2542 * user selects the component.  It encapsulates the search filter, the
     2543 * Select-all item, and the list of options.
     2544 */
     2545var FocusType;
     2546
     2547(function (FocusType) {
     2548  FocusType[FocusType["SEARCH"] = -1] = "SEARCH";
     2549  FocusType[FocusType["NONE"] = 1] = "NONE";
     2550})(FocusType || (FocusType = {}));
     2551
     2552var SelectSearchContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2553  width: "100%",
     2554  position: "relative",
     2555  borderBottom: "1px solid var(--rmsc-border)",
     2556  input: {
     2557    height: "var(--rmsc-h)",
     2558    padding: "0 var(--rmsc-p)",
     2559    width: "100%",
     2560    outline: 0,
     2561    border: 0
     2562  }
     2563});
     2564var SearchClearButton = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2565  cursor: "pointer",
     2566  position: "absolute",
     2567  top: 0,
     2568  right: 0,
     2569  bottom: 0,
     2570  background: "none",
     2571  border: 0,
     2572  padding: "0 calc(var(--rmsc-p)/2)",
     2573  "[hidden]": {
     2574    display: "none"
     2575  }
     2576});
     2577var SelectPanel = function SelectPanel(props) {
     2578  var onChange = props.onChange,
     2579      options = props.options,
     2580      value = props.value,
     2581      customFilterOptions = props.filterOptions,
     2582      selectAllLabel = props.selectAllLabel,
     2583      ItemRenderer = props.ItemRenderer,
     2584      disabled = props.disabled,
     2585      disableSearch = props.disableSearch,
     2586      focusSearchOnOpen = props.focusSearchOnOpen,
     2587      hasSelectAll = props.hasSelectAll,
     2588      overrideStrings = props.overrideStrings,
     2589      ClearIcon = props.ClearIcon,
     2590      debounceDuration = props.debounceDuration;
     2591
     2592  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(""),
     2593      searchText = _useState[0],
     2594      setSearchText = _useState[1];
     2595
     2596  var _useState2 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(""),
     2597      searchTextForFilter = _useState2[0],
     2598      setSearchTextForFilter = _useState2[1];
     2599
     2600  var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(focusSearchOnOpen && !disableSearch ? FocusType.SEARCH : FocusType.NONE),
     2601      focusIndex = _useState3[0],
     2602      setFocusIndex = _useState3[1];
     2603
     2604  var debouncedSearch = Object(react__WEBPACK_IMPORTED_MODULE_1__["useCallback"])(debounce(function (query) {
     2605    return setSearchTextForFilter(query);
     2606  }, debounceDuration), []);
     2607  var selectAllOption = {
     2608    label: selectAllLabel || getString("selectAll", overrideStrings),
     2609    value: ""
     2610  };
     2611
     2612  var selectAllValues = function selectAllValues(checked) {
     2613    var filteredValues = filteredOptions().filter(function (o) {
     2614      return !o.disabled;
     2615    }).map(function (o) {
     2616      return o.value;
     2617    });
     2618
     2619    if (checked) {
     2620      var selectedValues = value.map(function (o) {
     2621        return o.value;
     2622      });
     2623      var finalSelectedValues = [].concat(selectedValues, filteredValues);
     2624      return options.filter(function (_ref) {
     2625        var value = _ref.value;
     2626        return finalSelectedValues.includes(value);
     2627      });
     2628    }
     2629
     2630    return value.filter(function (o) {
     2631      return !filteredValues.includes(o.value);
     2632    });
     2633  };
     2634
     2635  var selectAllChanged = function selectAllChanged(checked) {
     2636    var newOptions = selectAllValues(checked);
     2637    onChange(newOptions);
     2638  };
     2639
     2640  var handleSearchChange = function handleSearchChange(e) {
     2641    debouncedSearch(e.target.value);
     2642    setSearchText(e.target.value);
     2643    setFocusIndex(FocusType.SEARCH);
     2644  };
     2645
     2646  var handleClear = function handleClear() {
     2647    setSearchTextForFilter("");
     2648    setSearchText("");
     2649  };
     2650
     2651  var handleItemClicked = function handleItemClicked(index) {
     2652    return setFocusIndex(index);
     2653  };
     2654
     2655  var handleKeyDown = function handleKeyDown(e) {
     2656    switch (e.which) {
     2657      case 38:
     2658        // Up Arrow
     2659        if (e.altKey) {
     2660          return;
     2661        }
     2662
     2663        updateFocus(-1);
     2664        break;
     2665
     2666      case 40:
     2667        // Down Arrow
     2668        if (e.altKey) {
     2669          return;
     2670        }
     2671
     2672        updateFocus(1);
     2673        break;
     2674
     2675      default:
     2676        return;
     2677    }
     2678
     2679    e.stopPropagation();
     2680    e.preventDefault();
     2681  };
     2682
     2683  var handleSearchFocus = function handleSearchFocus() {
     2684    setFocusIndex(FocusType.SEARCH);
     2685  };
     2686
     2687  var filteredOptions = function filteredOptions() {
     2688    return customFilterOptions ? customFilterOptions(options, searchTextForFilter) : filterOptions(options, searchTextForFilter);
     2689  };
     2690
     2691  var updateFocus = function updateFocus(offset) {
     2692    var newFocus = focusIndex + offset;
     2693    newFocus = Math.max(1, newFocus);
     2694    newFocus = Math.min(newFocus, options.length + 1);
     2695    setFocusIndex(newFocus);
     2696  };
     2697
     2698  var _useMemo = Object(react__WEBPACK_IMPORTED_MODULE_1__["useMemo"])(function () {
     2699    var filteredOptionsList = filteredOptions().filter(function (o) {
     2700      return !o.disabled;
     2701    });
     2702    return [filteredOptionsList.every(function (o) {
     2703      return value.findIndex(function (v) {
     2704        return v.value === o.value;
     2705      }) !== -1;
     2706    }), filteredOptionsList.length !== 0]; // eslint-disable-next-line
     2707  }, [searchText, value]),
     2708      isAllOptionSelected = _useMemo[0],
     2709      hasSelectableOptions = _useMemo[1];
     2710
     2711  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2712    className: "select-panel",
     2713    role: "listbox",
     2714    onKeyDown: handleKeyDown
     2715  }, !disableSearch && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2716    className: SelectSearchContainer
     2717  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("input", {
     2718    autoFocus: focusSearchOnOpen,
     2719    placeholder: getString("search", overrideStrings),
     2720    type: "text",
     2721    "aria-describedby": getString("search", overrideStrings),
     2722    onKeyDown: function onKeyDown(e) {
     2723      return e.stopPropagation();
     2724    },
     2725    onChange: handleSearchChange,
     2726    onFocus: handleSearchFocus,
     2727    value: searchText
     2728  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("button", {
     2729    type: "button",
     2730    className: SearchClearButton + " search-clear-button",
     2731    hidden: !searchText,
     2732    onClick: handleClear,
     2733    "aria-label": getString("clearSearch", overrideStrings)
     2734  }, ClearIcon || react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Cross, null))), hasSelectAll && hasSelectableOptions && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectItem, {
     2735    focused: focusIndex === 1,
     2736    tabIndex: 1,
     2737    checked: isAllOptionSelected,
     2738    option: selectAllOption,
     2739    onSelectionChanged: selectAllChanged,
     2740    onClick: function onClick() {
     2741      return handleItemClicked(0);
     2742    },
     2743    itemRenderer: ItemRenderer,
     2744    disabled: disabled
     2745  }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(SelectList, Object.assign({}, props, {
     2746    options: filteredOptions(),
     2747    focusIndex: focusIndex,
     2748    onClick: function onClick(_e, index) {
     2749      return handleItemClicked(index);
     2750    },
     2751    ItemRenderer: ItemRenderer,
     2752    disabled: disabled
     2753  })));
     2754};
     2755
     2756function Arrow(_ref) {
     2757  var expanded = _ref.expanded;
     2758  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("svg", {
     2759    width: "24",
     2760    height: "24",
     2761    fill: "none",
     2762    stroke: "currentColor",
     2763    strokeWidth: "2",
     2764    className: "dropdown-heading-dropdown-arrow gray"
     2765  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("path", {
     2766    d: expanded ? "M18 15 12 9 6 15" : "M6 9L12 15 18 9"
     2767  }));
     2768}
     2769
     2770var Spinner = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2771  animation: "rotate 2s linear infinite",
     2772  "& .path": {
     2773    stroke: "var(--rmsc-border)",
     2774    strokeWidth: "4px",
     2775    strokeLinecap: "round",
     2776    animation: "dash 1.5s ease-in-out infinite"
     2777  },
     2778  "@keyframes rotate": {
     2779    "100%": {
     2780      transform: "rotate(360deg)"
     2781    }
     2782  },
     2783  "@keyframes dash": {
     2784    "0%": {
     2785      strokeDasharray: "1,150",
     2786      strokeDashoffset: 0
     2787    },
     2788    "50%": {
     2789      strokeDasharray: "90,150",
     2790      strokeDashoffset: "-35"
     2791    },
     2792    "100%": {
     2793      strokeDasharray: "90,150",
     2794      strokeDashoffset: "-124"
     2795    }
     2796  }
     2797});
     2798
     2799function Loading(_ref) {
     2800  var _ref$size = _ref.size,
     2801      size = _ref$size === void 0 ? 24 : _ref$size;
     2802  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", {
     2803    style: {
     2804      width: size,
     2805      marginRight: "0.2rem"
     2806    }
     2807  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("svg", {
     2808    width: size,
     2809    height: size,
     2810    className: Spinner,
     2811    viewBox: "0 0 50 50",
     2812    style: {
     2813      display: "inline",
     2814      verticalAlign: "middle"
     2815    }
     2816  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("circle", {
     2817    cx: "25",
     2818    cy: "25",
     2819    r: "20",
     2820    fill: "none",
     2821    className: "path"
     2822  })));
     2823}
     2824
     2825/**
     2826 * A generic dropdown component.  It takes the children of the component
     2827 * and hosts it in the component.  When the component is selected, it
     2828 * drops-down the contentComponent and applies the contentProps.
     2829 */
     2830var PanelContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2831  position: "absolute",
     2832  zIndex: 1,
     2833  top: "100%",
     2834  width: "100%",
     2835  paddingTop: "8px",
     2836  ".panel-content": {
     2837    maxHeight: "300px",
     2838    overflowY: "auto",
     2839    borderRadius: "var(--rmsc-radius)",
     2840    background: "var(--rmsc-bg)",
     2841    boxShadow: "0 0 0 1px rgba(0, 0, 0, 0.1), 0 4px 11px rgba(0, 0, 0, 0.1)"
     2842  }
     2843});
     2844var DropdownContainer = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2845  position: "relative",
     2846  outline: 0,
     2847  backgroundColor: "var(--rmsc-bg)",
     2848  border: "1px solid var(--rmsc-border)",
     2849  borderRadius: "var(--rmsc-radius)",
     2850  "&:focus-within": {
     2851    boxShadow: "var(--rmsc-main) 0 0 0 1px",
     2852    borderColor: "var(--rmsc-main)"
     2853  }
     2854});
     2855var DropdownHeading = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2856  position: "relative",
     2857  padding: "0 var(--rmsc-p)",
     2858  display: "flex",
     2859  alignItems: "center",
     2860  width: "100%",
     2861  height: "var(--rmsc-h)",
     2862  cursor: "default",
     2863  outline: 0,
     2864  ".dropdown-heading-value": {
     2865    overflow: "hidden",
     2866    textOverflow: "ellipsis",
     2867    whiteSpace: "nowrap",
     2868    flex: 1
     2869  }
     2870});
     2871var ClearSelectedButton = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     2872  cursor: "pointer",
     2873  background: "none",
     2874  border: 0,
     2875  padding: 0,
     2876  display: "flex"
     2877});
     2878
     2879var Dropdown = function Dropdown(_ref) {
     2880  var children = _ref.children,
     2881      ContentComponent = _ref.contentComponent,
     2882      contentProps = _ref.contentProps,
     2883      isLoading = _ref.isLoading,
     2884      disabled = _ref.disabled,
     2885      shouldToggleOnHover = _ref.shouldToggleOnHover,
     2886      labelledBy = _ref.labelledBy,
     2887      onMenuToggle = _ref.onMenuToggle,
     2888      ArrowRenderer = _ref.ArrowRenderer,
     2889      ClearSelectedIcon = _ref.ClearSelectedIcon,
     2890      defaultIsOpen = _ref.defaultIsOpen,
     2891      isOpen = _ref.isOpen;
     2892
     2893  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(true),
     2894      isInternalExpand = _useState[0],
     2895      setIsInternalExpand = _useState[1];
     2896
     2897  var _useState2 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(defaultIsOpen),
     2898      expanded = _useState2[0],
     2899      setExpanded = _useState2[1];
     2900
     2901  var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__["useState"])(false),
     2902      hasFocus = _useState3[0],
     2903      setHasFocus = _useState3[1];
     2904
     2905  var FinalArrow = ArrowRenderer || Arrow;
     2906  var wrapper = Object(react__WEBPACK_IMPORTED_MODULE_1__["useRef"])();
     2907  /* eslint-disable react-hooks/exhaustive-deps */
     2908
     2909  Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(function () {
     2910    onMenuToggle && onMenuToggle(expanded);
     2911  }, [expanded]);
     2912  Object(react__WEBPACK_IMPORTED_MODULE_1__["useEffect"])(function () {
     2913    if (defaultIsOpen === undefined && typeof isOpen === "boolean") {
     2914      setIsInternalExpand(false);
     2915      setExpanded(isOpen);
     2916    }
     2917  }, [isOpen]);
     2918
     2919  var handleKeyDown = function handleKeyDown(e) {
     2920    var _wrapper$current;
     2921
     2922    if (isInternalExpand) {
     2923      switch (e.which) {
     2924        case 27: // Escape
     2925
     2926        case 38:
     2927          // Up Arrow
     2928          setExpanded(false);
     2929          wrapper == null ? void 0 : (_wrapper$current = wrapper.current) == null ? void 0 : _wrapper$current.focus();
     2930          break;
     2931
     2932        case 32: // Space
     2933
     2934        case 13: // Enter Key
     2935
     2936        case 40:
     2937          // Down Arrow
     2938          setExpanded(true);
     2939          break;
     2940
     2941        default:
     2942          return;
     2943      }
     2944    }
     2945
     2946    e.preventDefault();
     2947  };
     2948
     2949  var handleHover = function handleHover(iexpanded) {
     2950    isInternalExpand && shouldToggleOnHover && setExpanded(iexpanded);
     2951  };
     2952
     2953  var handleFocus = function handleFocus() {
     2954    return !hasFocus && setHasFocus(true);
     2955  };
     2956
     2957  var handleBlur = function handleBlur(e) {
     2958    if (!e.currentTarget.contains(e.relatedTarget) && isInternalExpand) {
     2959      setHasFocus(false);
     2960      setExpanded(false);
     2961    }
     2962  };
     2963
     2964  var handleMouseEnter = function handleMouseEnter() {
     2965    return handleHover(true);
     2966  };
     2967
     2968  var handleMouseLeave = function handleMouseLeave() {
     2969    return handleHover(false);
     2970  };
     2971
     2972  var toggleExpanded = function toggleExpanded() {
     2973    isInternalExpand && setExpanded(isLoading || disabled ? false : !expanded);
     2974  };
     2975
     2976  var handleClearSelected = function handleClearSelected(e) {
     2977    e.stopPropagation();
     2978    contentProps["onChange"]([]);
     2979    isInternalExpand && setExpanded(false);
     2980  };
     2981
     2982  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2983    tabIndex: 0,
     2984    className: DropdownContainer + " dropdown-container",
     2985    "aria-labelledby": labelledBy,
     2986    "aria-expanded": expanded,
     2987    "aria-readonly": true,
     2988    "aria-disabled": disabled,
     2989    ref: wrapper,
     2990    onKeyDown: handleKeyDown,
     2991    onFocus: handleFocus,
     2992    onBlur: handleBlur,
     2993    onMouseEnter: handleMouseEnter,
     2994    onMouseLeave: handleMouseLeave
     2995  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2996    className: DropdownHeading + " dropdown-heading",
     2997    onClick: toggleExpanded
     2998  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     2999    className: "dropdown-heading-value"
     3000  }, children), isLoading && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Loading, null), contentProps["value"].length > 0 && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("button", {
     3001    type: "button",
     3002    className: ClearSelectedButton + " clear-selected-button",
     3003    onClick: handleClearSelected,
     3004    "aria-label": getString("clearSelected", contentProps["overrideStrings"])
     3005  }, ClearSelectedIcon || react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Cross, null)), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(FinalArrow, {
     3006    expanded: expanded
     3007  })), expanded && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     3008    className: PanelContainer + " dropdown-content"
     3009  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     3010    className: "panel-content"
     3011  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(ContentComponent, Object.assign({}, contentProps)))));
     3012};
     3013
     3014var DropdownHeader = function DropdownHeader(_ref) {
     3015  var value = _ref.value,
     3016      options = _ref.options,
     3017      valueRenderer = _ref.valueRenderer,
     3018      overrideStrings = _ref.overrideStrings;
     3019  var noneSelected = value.length === 0;
     3020  var allSelected = value.length === options.length;
     3021  var customText = valueRenderer && valueRenderer(value, options);
     3022
     3023  var getSelectedText = function getSelectedText() {
     3024    return value.map(function (s) {
     3025      return s.label;
     3026    }).join(", ");
     3027  };
     3028
     3029  return noneSelected ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", {
     3030    className: "gray"
     3031  }, customText || getString("selectSomeItems", overrideStrings)) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("span", null, customText || (allSelected ? getString("allItemsAreSelected", overrideStrings) : getSelectedText()));
     3032};
     3033
     3034var MultiSelectBox = /*#__PURE__*/Object(goober__WEBPACK_IMPORTED_MODULE_0__["css"])({
     3035  "--rmscMain": "#4285f4",
     3036  "--rmscHover": "#f1f3f5",
     3037  "--rmscSelected": "#e2e6ea",
     3038  "--rmscBorder": "#ccc",
     3039  "--rmscGray": "#aaa",
     3040  "--rmscBg": "#fff",
     3041  "--rmscP": "10px",
     3042  "--rmscRadius": "4px",
     3043  "--rmscH": "38px",
     3044  "*": {
     3045    boxSizing: "border-box",
     3046    transition: "all 0.2s ease"
     3047  },
     3048  ".gray": {
     3049    color: "var(--rmsc-gray)"
     3050  }
     3051});
     3052
     3053var MultiSelect = function MultiSelect(_ref) {
     3054  var _ref$focusSearchOnOpe = _ref.focusSearchOnOpen,
     3055      focusSearchOnOpen = _ref$focusSearchOnOpe === void 0 ? true : _ref$focusSearchOnOpe,
     3056      _ref$hasSelectAll = _ref.hasSelectAll,
     3057      hasSelectAll = _ref$hasSelectAll === void 0 ? true : _ref$hasSelectAll,
     3058      shouldToggleOnHover = _ref.shouldToggleOnHover,
     3059      _ref$className = _ref.className,
     3060      className = _ref$className === void 0 ? "multi-select" : _ref$className,
     3061      options = _ref.options,
     3062      value = _ref.value,
     3063      valueRenderer = _ref.valueRenderer,
     3064      overrideStrings = _ref.overrideStrings,
     3065      onChange = _ref.onChange,
     3066      disabled = _ref.disabled,
     3067      ItemRenderer = _ref.ItemRenderer,
     3068      ArrowRenderer = _ref.ArrowRenderer,
     3069      selectAllLabel = _ref.selectAllLabel,
     3070      isLoading = _ref.isLoading,
     3071      disableSearch = _ref.disableSearch,
     3072      filterOptions = _ref.filterOptions,
     3073      labelledBy = _ref.labelledBy,
     3074      onMenuToggle = _ref.onMenuToggle,
     3075      ClearIcon = _ref.ClearIcon,
     3076      _ref$debounceDuration = _ref.debounceDuration,
     3077      debounceDuration = _ref$debounceDuration === void 0 ? 300 : _ref$debounceDuration,
     3078      ClearSelectedIcon = _ref.ClearSelectedIcon,
     3079      defaultIsOpen = _ref.defaultIsOpen,
     3080      isOpen = _ref.isOpen;
     3081  var nvalue = value || [];
     3082  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
     3083    className: MultiSelectBox + " " + className
     3084  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Dropdown, {
     3085    isLoading: isLoading,
     3086    contentComponent: SelectPanel,
     3087    shouldToggleOnHover: shouldToggleOnHover,
     3088    contentProps: {
     3089      ItemRenderer: ItemRenderer,
     3090      options: options,
     3091      value: nvalue,
     3092      hasSelectAll: hasSelectAll,
     3093      selectAllLabel: selectAllLabel,
     3094      onChange: onChange,
     3095      disabled: disabled,
     3096      disableSearch: disableSearch,
     3097      focusSearchOnOpen: focusSearchOnOpen,
     3098      filterOptions: filterOptions,
     3099      overrideStrings: overrideStrings,
     3100      ClearIcon: ClearIcon,
     3101      debounceDuration: debounceDuration
     3102    },
     3103    disabled: disabled,
     3104    labelledBy: labelledBy,
     3105    onMenuToggle: onMenuToggle,
     3106    ArrowRenderer: ArrowRenderer,
     3107    ClearSelectedIcon: ClearSelectedIcon,
     3108    defaultIsOpen: defaultIsOpen,
     3109    isOpen: isOpen
     3110  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(DropdownHeader, {
     3111    value: nvalue,
     3112    options: options,
     3113    valueRenderer: valueRenderer,
     3114    overrideStrings: overrideStrings
     3115  })));
     3116};
     3117
     3118/* harmony default export */ __webpack_exports__["default"] = (MultiSelect);
     3119
     3120//# sourceMappingURL=react-multi-select-component.esm.js.map
    21133121
    21143122
     
    26083616Object(_wordpress_plugins__WEBPACK_IMPORTED_MODULE_4__["registerPlugin"])('content-visibility-01-user-authentication-fill', {
    26093617  render: BlockVisibilityUserAuthenitcationFill
     3618});
     3619
     3620/***/ }),
     3621
     3622/***/ "./src/controls/multiselect/content-visibility-multiselect.js":
     3623/*!********************************************************************!*\
     3624  !*** ./src/controls/multiselect/content-visibility-multiselect.js ***!
     3625  \********************************************************************/
     3626/*! exports provided: ContentVisibilityMultiSelect */
     3627/***/ (function(module, __webpack_exports__, __webpack_require__) {
     3628
     3629"use strict";
     3630__webpack_require__.r(__webpack_exports__);
     3631/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ContentVisibilityMultiSelect", function() { return ContentVisibilityMultiSelect; });
     3632/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "./node_modules/@babel/runtime/helpers/defineProperty.js");
     3633/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
     3634/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     3635/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
     3636/* harmony import */ var react_multi_select_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-multi-select-component */ "./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js");
     3637/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     3638/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_3__);
     3639
     3640
     3641
     3642function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
     3643
     3644function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
     3645
     3646
     3647
     3648/**
     3649 * Reusable, accessible multi-select component which includes a fuzzy search, select all/none using the react-multi-select-component
     3650 * by Harsh Zalavadiya : https://github.com/harshzalavadiya/react-multi-select-component#readme.
     3651 *
     3652 * I've expanded it slightly, by allowing the data passed in to accept an `icon` property which should be a WordPress Icon compnent.
     3653 *
     3654 * Requires passing in the onChange function to handle data saving. i.e. import this component and then use it like:
     3655 *
     3656 * ```
     3657 * <ContentVisibilityMultiSelect data={ fruits } labelledBy="Select Page Type" props={ props } onChange={ onChange } />
     3658 * ```
     3659 *
     3660 * the `onChange` function can look like this:
     3661 *
     3662 * ```
     3663 * const onChange = ( option ) => {
     3664 *     // Set the state and props.
     3665 *     setState( { option } );
     3666 *     props.setAttributes( {
     3667 *         contentVisibilityRules: {
     3668 *             ...props.attributes.contentVisibilityRules,
     3669 *             specialPage: {
     3670 *                 ...props.attributes.contentVisibilityRules.specialPage,
     3671 *                 pages: option
     3672 *             }
     3673 *         },
     3674 *     } );
     3675 *
     3676 * }
     3677 * ```
     3678 *
     3679 * `data` should be an array of objects which contains label (string), a value (string) and an optional icon (WordPress Icon compnent)
     3680 */
     3681
     3682var ContentVisibilityMultiSelect = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_3__["withState"])({
     3683  option: []
     3684})(function (_ref) {
     3685  var option = _ref.option,
     3686      setState = _ref.setState,
     3687      props = _ref.props,
     3688      data = _ref.data,
     3689      labelledBy = _ref.labelledBy,
     3690      type = _ref.type;
     3691
     3692  /**
     3693   * onChange callback for the ContentVisibilityMultiSelect component. This handles setting the props and state for
     3694   * this instance of the component.
     3695   *
     3696   * @param {array} option current value of what is selected.
     3697   */
     3698  var onChange = function onChange(option) {
     3699    // Set the state and props.
     3700    setState({
     3701      option: option
     3702    });
     3703    props.setAttributes({
     3704      contentVisibilityRules: _objectSpread(_objectSpread({}, props.attributes.contentVisibilityRules), {}, {
     3705        specialPage: _objectSpread(_objectSpread({}, props.attributes.contentVisibilityRules.specialPage), {}, _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()({}, type, option))
     3706      })
     3707    });
     3708  };
     3709
     3710  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
     3711    className: "content-visibility-multi-select"
     3712  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])(react_multi_select_component__WEBPACK_IMPORTED_MODULE_2__["default"], {
     3713    options: data,
     3714    value: props.attributes.contentVisibilityRules.specialPage[type] || option,
     3715    onChange: onChange,
     3716    labelledBy: labelledBy,
     3717    ItemRenderer: function ItemRenderer(_ref2) {
     3718      var checked = _ref2.checked,
     3719          option = _ref2.option,
     3720          onClick = _ref2.onClick,
     3721          disabled = _ref2.disabled;
     3722      return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("div", {
     3723        className: "item-renderer content-visibility-multi-select-item ".concat(disabled && "disabled")
     3724      }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("input", {
     3725        type: "checkbox",
     3726        onChange: onClick,
     3727        checked: checked,
     3728        tabIndex: -1,
     3729        disabled: disabled
     3730      }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__["createElement"])("span", null, option.icon || "", " ", option.label));
     3731    } // isOpen={ true }
     3732
     3733  }));
    26103734});
    26113735
     
    26683792/***/ }),
    26693793
     3794/***/ "./src/controls/special-page/content-visibility-page-page-inserter.js":
     3795/*!****************************************************************************!*\
     3796  !*** ./src/controls/special-page/content-visibility-page-page-inserter.js ***!
     3797  \****************************************************************************/
     3798/*! exports provided: default */
     3799/***/ (function(module, __webpack_exports__, __webpack_require__) {
     3800
     3801"use strict";
     3802__webpack_require__.r(__webpack_exports__);
     3803/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     3804/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     3805/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     3806/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     3807/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     3808/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__);
     3809/* harmony import */ var _helpers_get_pages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/get-pages */ "./src/helpers/get-pages.js");
     3810/* harmony import */ var _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/keep-popup-open */ "./src/helpers/keep-popup-open.js");
     3811/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     3812/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
     3813/* harmony import */ var _helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../helpers/special-page-insert-text */ "./src/helpers/special-page-insert-text.js");
     3814/* harmony import */ var _helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../helpers/special-pages-insert-button-class */ "./src/helpers/special-pages-insert-button-class.js");
     3815/* harmony import */ var _multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../multiselect/content-visibility-multiselect */ "./src/controls/multiselect/content-visibility-multiselect.js");
     3816
     3817
     3818
     3819
     3820
     3821
     3822
     3823
     3824
     3825var PagePageInserter = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
     3826  isVisible: false
     3827})(function (_ref) {
     3828  var isVisible = _ref.isVisible,
     3829      setState = _ref.setState,
     3830      props = _ref.props;
     3831
     3832  /**
     3833   * Our data, passed from PHP and manipulated to be useful here in JS.
     3834   */
     3835  var data = Object(_helpers_get_pages__WEBPACK_IMPORTED_MODULE_3__["default"])();
     3836  /**
     3837   * This controls the key used where the data is stored.
     3838   */
     3839
     3840  var type = 'pages';
     3841  /**
     3842   * Helps with the content of the inserter button.
     3843   */
     3844
     3845  var niceName = {
     3846    singular: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Page', 'content-visibility'),
     3847    plural: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Pages', 'content-visibility')
     3848  };
     3849  /**
     3850   * Toggle the visible state. Detemines whether the popup is open or not.
     3851   */
     3852
     3853  var toggleVisible = function toggleVisible() {
     3854    setState(function (state) {
     3855      return {
     3856        isVisible: !state.isVisible
     3857      };
     3858    });
     3859  };
     3860
     3861  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
     3862    className: "content-visibility-special-page-inserter"
     3863  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3864    icon: "networking",
     3865    iconSize: "12"
     3866  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3867    isSecondary: true,
     3868    isSmall: true,
     3869    isLink: true,
     3870    onClick: toggleVisible,
     3871    className: Object(_helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__["default"])(props, type)
     3872  }, Object(_helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__["default"])(props, type, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select specific pages', 'content-visibility'), niceName), isVisible && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Popover"], {
     3873    position: "middle left",
     3874    className: "content-visibility-special-page-help-instructions-popover",
     3875    onClick: _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__["default"]
     3876  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select Pages', 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3877    className: "content-visibility-help-text"
     3878  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select the pages upon which you would like this block to be ', 'content-visibility') + props.attributes.contentVisibility), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__["ContentVisibilityMultiSelect"], {
     3879    data: data,
     3880    labelledBy: "Select Page",
     3881    props: props,
     3882    type: type
     3883  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3884    className: "content-visibility-submit-special-pages-button-container"
     3885  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3886    isPrimary: true,
     3887    className: "content-visibility-submit-special-pages",
     3888    onClick: toggleVisible
     3889  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Set Selected', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3890    icon: "editor-help",
     3891    iconSize: "12"
     3892  }), " ", Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("strong", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Help', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])("Selecting one or more pages from this list will mean that this block will only be ".concat(props.attributes.contentVisibility, " on those pages. If you want this block to be ").concat(props.attributes.contentVisibility, " on ALL pages, please use the 'Special Pages' option and select 'Any Page'"), 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["IconButton"], {
     3893    className: "content-visibility-close-popover",
     3894    icon: "no",
     3895    label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Close', 'content-visibility'),
     3896    onClick: toggleVisible
     3897  }))));
     3898});
     3899/* harmony default export */ __webpack_exports__["default"] = (PagePageInserter);
     3900
     3901/***/ }),
     3902
     3903/***/ "./src/controls/special-page/content-visibility-post-page-inserter.js":
     3904/*!****************************************************************************!*\
     3905  !*** ./src/controls/special-page/content-visibility-post-page-inserter.js ***!
     3906  \****************************************************************************/
     3907/*! exports provided: default */
     3908/***/ (function(module, __webpack_exports__, __webpack_require__) {
     3909
     3910"use strict";
     3911__webpack_require__.r(__webpack_exports__);
     3912/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     3913/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     3914/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     3915/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     3916/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     3917/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__);
     3918/* harmony import */ var _helpers_get_posts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/get-posts */ "./src/helpers/get-posts.js");
     3919/* harmony import */ var _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/keep-popup-open */ "./src/helpers/keep-popup-open.js");
     3920/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     3921/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
     3922/* harmony import */ var _helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../helpers/special-page-insert-text */ "./src/helpers/special-page-insert-text.js");
     3923/* harmony import */ var _helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../helpers/special-pages-insert-button-class */ "./src/helpers/special-pages-insert-button-class.js");
     3924/* harmony import */ var _multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../multiselect/content-visibility-multiselect */ "./src/controls/multiselect/content-visibility-multiselect.js");
     3925
     3926
     3927
     3928
     3929
     3930
     3931
     3932
     3933
     3934var PostPageInserter = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
     3935  isVisible: false
     3936})(function (_ref) {
     3937  var isVisible = _ref.isVisible,
     3938      setState = _ref.setState,
     3939      props = _ref.props;
     3940
     3941  /**
     3942   * Our data, passed from PHP and manipulated to be useful here in JS.
     3943   */
     3944  var data = Object(_helpers_get_posts__WEBPACK_IMPORTED_MODULE_3__["default"])();
     3945  /**
     3946   * This controls the key used where the data is stored.
     3947   */
     3948
     3949  var type = 'posts';
     3950  /**
     3951   * Helps with the content of the inserter button.
     3952   */
     3953
     3954  var niceName = {
     3955    singular: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Post', 'content-visibility'),
     3956    plural: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Posts', 'content-visibility')
     3957  };
     3958  /**
     3959   * Toggle the visible state. Detemines whether the popup is open or not.
     3960   */
     3961
     3962  var toggleVisible = function toggleVisible() {
     3963    setState(function (state) {
     3964      return {
     3965        isVisible: !state.isVisible
     3966      };
     3967    });
     3968  };
     3969
     3970  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
     3971    className: "content-visibility-special-page-inserter"
     3972  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3973    icon: "admin-post",
     3974    iconSize: "12"
     3975  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3976    isSecondary: true,
     3977    isSmall: true,
     3978    isLink: true,
     3979    onClick: toggleVisible,
     3980    className: Object(_helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__["default"])(props, type)
     3981  }, Object(_helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__["default"])(props, type, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select specific posts', 'content-visibility'), niceName), isVisible && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Popover"], {
     3982    position: "middle left",
     3983    className: "content-visibility-special-page-help-instructions-popover",
     3984    onClick: _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__["default"]
     3985  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select Posts', 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3986    className: "content-visibility-help-text"
     3987  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select the posts upon which you would like this block to be ', 'content-visibility') + props.attributes.contentVisibility), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__["ContentVisibilityMultiSelect"], {
     3988    data: data,
     3989    labelledBy: "Select Page",
     3990    props: props,
     3991    type: type
     3992  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     3993    className: "content-visibility-submit-special-pages-button-container"
     3994  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     3995    isPrimary: true,
     3996    className: "content-visibility-submit-special-pages",
     3997    onClick: toggleVisible
     3998  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Set Selected', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     3999    icon: "editor-help",
     4000    iconSize: "12"
     4001  }), " ", Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("strong", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Help', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])("Selecting one or more posts from this list will mean that this block will only be ".concat(props.attributes.contentVisibility, " on those posts. If you want this block to be ").concat(props.attributes.contentVisibility, " on ALL posts, please use the 'Special Pages' option and select 'Any Post'"), 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["IconButton"], {
     4002    className: "content-visibility-close-popover",
     4003    icon: "no",
     4004    label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Close', 'content-visibility'),
     4005    onClick: toggleVisible
     4006  }))));
     4007});
     4008/* harmony default export */ __webpack_exports__["default"] = (PostPageInserter);
     4009
     4010/***/ }),
     4011
    26704012/***/ "./src/controls/special-page/content-visibility-special-page-controls.js":
    26714013/*!*******************************************************************************!*\
     
    27294071    });
    27304072  });
    2731 } // Only load the Widgets-related controls on the widgets screen
    2732 
    2733 
    2734 if ('appearance_page_gutenberg-widgets' === ContentVisibility.screen) {
     4073} // Only load the Widgets-related controls on the widgets screen or we're local, due to Widgets Screen bug.
     4074
     4075
     4076if ('appearance_page_gutenberg-widgets' === ContentVisibility.screen || '1' === ContentVisibility.local) {
    27354077  // Add our component to the Slot provided by BlockVisibilityControls
    27364078  Object(_wordpress_plugins__WEBPACK_IMPORTED_MODULE_4__["registerPlugin"])('content-visibility-04-special-page-fill', {
     
    27384080  });
    27394081}
     4082
     4083/***/ }),
     4084
     4085/***/ "./src/controls/special-page/content-visibility-special-page-page-inserter.js":
     4086/*!************************************************************************************!*\
     4087  !*** ./src/controls/special-page/content-visibility-special-page-page-inserter.js ***!
     4088  \************************************************************************************/
     4089/*! exports provided: default */
     4090/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4091
     4092"use strict";
     4093__webpack_require__.r(__webpack_exports__);
     4094/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     4095/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     4096/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     4097/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     4098/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/compose */ "@wordpress/compose");
     4099/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__);
     4100/* harmony import */ var _helpers_get_special_pages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../helpers/get-special-pages */ "./src/helpers/get-special-pages.js");
     4101/* harmony import */ var _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../helpers/keep-popup-open */ "./src/helpers/keep-popup-open.js");
     4102/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4103/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
     4104/* harmony import */ var _helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../helpers/special-page-insert-text */ "./src/helpers/special-page-insert-text.js");
     4105/* harmony import */ var _helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../helpers/special-pages-insert-button-class */ "./src/helpers/special-pages-insert-button-class.js");
     4106/* harmony import */ var _multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../multiselect/content-visibility-multiselect */ "./src/controls/multiselect/content-visibility-multiselect.js");
     4107
     4108
     4109
     4110
     4111
     4112
     4113
     4114
     4115
     4116var SpecialPagePageInserter = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
     4117  isVisible: false
     4118})(function (_ref) {
     4119  var isVisible = _ref.isVisible,
     4120      setState = _ref.setState,
     4121      props = _ref.props;
     4122
     4123  /**
     4124   * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages
     4125   * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.
     4126   */
     4127  var specialPages = Object(_helpers_get_special_pages__WEBPACK_IMPORTED_MODULE_3__["default"])();
     4128  /**
     4129   * This controls the key used where the data is stored.
     4130   */
     4131
     4132  var type = 'specialPages';
     4133  /**
     4134   * Helps with the content of the inserter button.
     4135   */
     4136
     4137  var niceName = {
     4138    singular: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Special Page', 'content-visibility'),
     4139    plural: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Special Pages', 'content-visibility')
     4140  };
     4141  /**
     4142   * Toggle the visible state. Detemines whether the popup is open or not.
     4143   */
     4144
     4145  var toggleVisible = function toggleVisible() {
     4146    setState(function (state) {
     4147      return {
     4148        isVisible: !state.isVisible
     4149      };
     4150    });
     4151  };
     4152
     4153  return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", {
     4154    className: "content-visibility-special-page-inserter"
     4155  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     4156    icon: "text-page",
     4157    iconSize: "12"
     4158  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     4159    isSecondary: true,
     4160    isSmall: true,
     4161    isLink: true,
     4162    onClick: toggleVisible,
     4163    className: Object(_helpers_special_pages_insert_button_class__WEBPACK_IMPORTED_MODULE_7__["default"])(props, type)
     4164  }, Object(_helpers_special_page_insert_text__WEBPACK_IMPORTED_MODULE_6__["default"])(props, type, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select special pages', 'content-visibility'), niceName), isVisible && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Popover"], {
     4165    position: "middle left",
     4166    className: "content-visibility-special-page-help-instructions-popover",
     4167    onClick: _helpers_keep_popup_open__WEBPACK_IMPORTED_MODULE_4__["default"]
     4168  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("h1", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Insert Special Pages', 'content-visibility')), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     4169    className: "content-visibility-help-text"
     4170  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Select the special pages upon which you would like this block to be ', 'content-visibility') + props.attributes.contentVisibility), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_multiselect_content_visibility_multiselect__WEBPACK_IMPORTED_MODULE_8__["ContentVisibilityMultiSelect"], {
     4171    data: specialPages,
     4172    labelledBy: "Select Page Type",
     4173    props: props,
     4174    type: type
     4175  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     4176    className: "content-visibility-submit-special-pages-button-container"
     4177  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Button"], {
     4178    isPrimary: true,
     4179    className: "content-visibility-submit-special-pages",
     4180    onClick: toggleVisible
     4181  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Set Selected', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["HorizontalRule"], null), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     4182    icon: "editor-help",
     4183    iconSize: "12"
     4184  }), " ", Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("strong", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('What are Special Pages?', 'content-visibility'))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('By default, WordPress websites contain more than just the posts and pages you create here in the dashboard. Content Visibility allows you to display your blocks on any of the following types of pages that your theme can make available to your visitors. ', 'content-visibility-special-page')), specialPages.map(function (specialPage) {
     4185    return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", null, specialPage.label), ": ", specialPage.notes);
     4186  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["IconButton"], {
     4187    className: "content-visibility-close-popover",
     4188    icon: "no",
     4189    label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__["__"])('Close', 'content-visibility'),
     4190    onClick: toggleVisible
     4191  }))));
     4192});
     4193/* harmony default export */ __webpack_exports__["default"] = (SpecialPagePageInserter);
    27404194
    27414195/***/ }),
     
    27594213/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
    27604214/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
    2761 
    2762 
    2763 
    2764  // import { ContentVisibilityUserAuthenticationRadioControl } from './block-visibility-user-authentication-radio-control';
     4215/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/hooks */ "@wordpress/hooks");
     4216/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_hooks__WEBPACK_IMPORTED_MODULE_4__);
     4217/* harmony import */ var _content_visibility_special_page_page_inserter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./content-visibility-special-page-page-inserter */ "./src/controls/special-page/content-visibility-special-page-page-inserter.js");
     4218/* harmony import */ var _content_visibility_page_page_inserter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./content-visibility-page-page-inserter */ "./src/controls/special-page/content-visibility-page-page-inserter.js");
     4219/* harmony import */ var _content_visibility_post_page_inserter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./content-visibility-post-page-inserter */ "./src/controls/special-page/content-visibility-post-page-inserter.js");
     4220
     4221
     4222
     4223
     4224
     4225
     4226
    27654227
    27664228var ContentVisibilitySpecialPagePanelBodyControl = Object(_wordpress_compose__WEBPACK_IMPORTED_MODULE_2__["withState"])({
    2767   option: ''
     4229  option: []
    27684230})(function (_ref) {
    27694231  var option = _ref.option,
     
    27744236    initialOpen: false,
    27754237    className: "content-visibility-control-panel block-visibility-special-page-controls"
    2776   }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["PanelRow"], null, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, "This does not function properly yet due to a core Gutenberg bug."), props.attributes.contentVisibility && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
    2777     class: "special-page-help-intro content-visibility-help-text"
    2778   }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Select which types of pages this block will be ' + props.attributes.contentVisibility + '. Special pages include a search results page, a date or category archive, or the 404 not found page amongst others.', 'content-visibility-special-page'))));
    2779 });
     4238  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["PanelRow"], {
     4239    className: "content-visibility-page-inserter-panel-row"
     4240  }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_content_visibility_special_page_page_inserter__WEBPACK_IMPORTED_MODULE_5__["default"], {
     4241    props: props
     4242  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_content_visibility_page_page_inserter__WEBPACK_IMPORTED_MODULE_6__["default"], {
     4243    props: props
     4244  }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_content_visibility_post_page_inserter__WEBPACK_IMPORTED_MODULE_7__["default"], {
     4245    props: props
     4246  })), props.attributes.contentVisibility && Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", {
     4247    className: "special-page-help-intro content-visibility-help-text"
     4248  }, Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__["__"])('Select the types of content upon which this block will be ' + props.attributes.contentVisibility + '.', 'content-visibility')));
     4249}); // Register our visibility rule in the main rules object.
     4250
     4251Object(_wordpress_hooks__WEBPACK_IMPORTED_MODULE_4__["addFilter"])('contentVisibility.defaultContentVisibilityRules', 'content-visibility-special-page/block-visibility-rules', registerSpecialPageVisibilityRule);
     4252
     4253function registerSpecialPageVisibilityRule(defaultRules) {
     4254  defaultRules.specialPage = {
     4255    pages: [],
     4256    specialPages: [],
     4257    posts: []
     4258  };
     4259  return defaultRules;
     4260}
    27804261
    27814262/***/ }),
     
    29074388/***/ }),
    29084389
     4390/***/ "./src/helpers/get-pages.js":
     4391/*!**********************************!*\
     4392  !*** ./src/helpers/get-pages.js ***!
     4393  \**********************************/
     4394/*! exports provided: default */
     4395/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4396
     4397"use strict";
     4398__webpack_require__.r(__webpack_exports__);
     4399/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4400/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
     4401
     4402/**
     4403 * PHP sends through a list of all the pages on the site (in any status). We massage that data to be
     4404 * usable by our Dropdown.
     4405 *
     4406 */
     4407
     4408function getPages() {
     4409  var pages = [];
     4410
     4411  if (ContentVisibility.pages.length === 0) {
     4412    return [{
     4413      label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__["__"])('No pages found.', 'content-visibility'),
     4414      value: 0,
     4415      notes: ''
     4416    }];
     4417  }
     4418
     4419  for (var page in ContentVisibility.pages) {
     4420    pages.push({
     4421      label: ContentVisibility.pages[page].label,
     4422      value: ContentVisibility.pages[page].id,
     4423      notes: ContentVisibility.pages[page].notes
     4424    });
     4425  }
     4426
     4427  return pages;
     4428} // end getPages()
     4429
     4430
     4431/* harmony default export */ __webpack_exports__["default"] = (getPages);
     4432
     4433/***/ }),
     4434
     4435/***/ "./src/helpers/get-posts.js":
     4436/*!**********************************!*\
     4437  !*** ./src/helpers/get-posts.js ***!
     4438  \**********************************/
     4439/*! exports provided: default */
     4440/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4441
     4442"use strict";
     4443__webpack_require__.r(__webpack_exports__);
     4444/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4445/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
     4446
     4447/**
     4448 * PHP sends through a list of all the posts on the site (in any status). We massage that data to be
     4449 * usable by our Dropdown.
     4450 *
     4451 */
     4452
     4453function getPosts() {
     4454  var posts = [];
     4455
     4456  if (ContentVisibility.posts.length === 0) {
     4457    return [{
     4458      label: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__["__"])('No posts found.', 'content-visibility'),
     4459      value: 0,
     4460      notes: ''
     4461    }];
     4462  }
     4463
     4464  for (var post in ContentVisibility.posts) {
     4465    posts.push({
     4466      label: ContentVisibility.posts[post].label,
     4467      value: ContentVisibility.posts[post].id,
     4468      notes: ContentVisibility.posts[post].notes
     4469    });
     4470  }
     4471
     4472  return posts;
     4473} // end getPosts()
     4474
     4475
     4476/* harmony default export */ __webpack_exports__["default"] = (getPosts);
     4477
     4478/***/ }),
     4479
     4480/***/ "./src/helpers/get-special-pages.js":
     4481/*!******************************************!*\
     4482  !*** ./src/helpers/get-special-pages.js ***!
     4483  \******************************************/
     4484/*! exports provided: default */
     4485/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4486
     4487"use strict";
     4488__webpack_require__.r(__webpack_exports__);
     4489/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     4490/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     4491/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/components */ "@wordpress/components");
     4492/* harmony import */ var _wordpress_components__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__);
     4493
     4494
     4495/**
     4496 * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages
     4497 * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.
     4498 *
     4499 */
     4500
     4501function getSpecialPages() {
     4502  var specialPages = [];
     4503
     4504  for (var specialPage in ContentVisibility.specialPages) {
     4505    specialPages.push({
     4506      label: ContentVisibility.specialPages[specialPage].label,
     4507      value: ContentVisibility.specialPages[specialPage].keyValue,
     4508      notes: ContentVisibility.specialPages[specialPage].notes,
     4509      icon: Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_components__WEBPACK_IMPORTED_MODULE_1__["Icon"], {
     4510        size: "12",
     4511        icon: ContentVisibility.specialPages[specialPage].icon
     4512      })
     4513    });
     4514  }
     4515
     4516  return specialPages;
     4517} // end getSpecialPages()
     4518
     4519
     4520/* harmony default export */ __webpack_exports__["default"] = (getSpecialPages);
     4521
     4522/***/ }),
     4523
     4524/***/ "./src/helpers/has-parent-with-class.js":
     4525/*!**********************************************!*\
     4526  !*** ./src/helpers/has-parent-with-class.js ***!
     4527  \**********************************************/
     4528/*! exports provided: default */
     4529/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4530
     4531"use strict";
     4532__webpack_require__.r(__webpack_exports__);
     4533/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js");
     4534/* harmony import */ var _babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);
     4535
     4536
     4537/**
     4538 * Is the passed element a child of an element that has a class of the passed parentClassName.
     4539 * From: https://codepen.io/ross-angus/pen/eYJRmZR
     4540 *
     4541 * @param {object} element The name of the block.
     4542 * @param {string} parentClassName the name of the class on the parent to check for.
     4543 */
     4544function hasParentWithClass(element, classname) {
     4545  // SVGs are weird, man.
     4546  if (_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default()(element.className) !== 'object' && element.className.split(' ').indexOf(classname) >= 0) {
     4547    return true;
     4548  } else if (element.tagName !== 'HTML') {
     4549    // If you've reached the body, you've gone too far
     4550    return element.parentNode && hasParentWithClass(element.parentNode, classname);
     4551  } else {
     4552    return false;
     4553  }
     4554} //end hasParentWithClass()
     4555
     4556
     4557/* harmony default export */ __webpack_exports__["default"] = (hasParentWithClass);
     4558
     4559/***/ }),
     4560
    29094561/***/ "./src/helpers/is-valid-blocktype.js":
    29104562/*!*******************************************!*\
     
    29284580
    29294581/* harmony default export */ __webpack_exports__["default"] = (isValidBlockType);
     4582
     4583/***/ }),
     4584
     4585/***/ "./src/helpers/keep-popup-open.js":
     4586/*!****************************************!*\
     4587  !*** ./src/helpers/keep-popup-open.js ***!
     4588  \****************************************/
     4589/*! exports provided: default */
     4590/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4591
     4592"use strict";
     4593__webpack_require__.r(__webpack_exports__);
     4594/* harmony import */ var _has_parent_with_class__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./has-parent-with-class */ "./src/helpers/has-parent-with-class.js");
     4595
     4596/**
     4597 * The Popup component closes if it loses focus by default. For us, we want to ensure it
     4598 * stays open until someone intentially closes it via either setting the selected items,
     4599 * pressing a close button, or clicking the button they initially used to open the popup.
     4600 *
     4601 * @param {event} event The click event.
     4602 * @return null
     4603 */
     4604
     4605var keepPopupOpen = function keepPopupOpen(event) {
     4606  if (false === event) {
     4607    return;
     4608  } // Determine if what has been clicked on is in the popover or not.
     4609
     4610
     4611  var eTarget = event.target;
     4612
     4613  if (Object(_has_parent_with_class__WEBPACK_IMPORTED_MODULE_0__["default"])(eTarget, 'components-popover__content')) {
     4614    event.stopPropagation();
     4615  }
     4616
     4617  return;
     4618};
     4619
     4620/* harmony default export */ __webpack_exports__["default"] = (keepPopupOpen);
     4621
     4622/***/ }),
     4623
     4624/***/ "./src/helpers/special-page-insert-text.js":
     4625/*!*************************************************!*\
     4626  !*** ./src/helpers/special-page-insert-text.js ***!
     4627  \*************************************************/
     4628/*! exports provided: default */
     4629/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4630
     4631"use strict";
     4632__webpack_require__.r(__webpack_exports__);
     4633/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     4634/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__);
     4635
     4636/**
     4637 * Determine the text for the button which opens the popup for the special pages inserter. By default, if there are
     4638 * no special pages selected, it will be 'Select special pages'. However, if there are special pages set, it will
     4639 * say how many.
     4640 *
     4641 * @param object props the props for this current iteration of the inserter.
     4642 * @param string type the key in the object data store for specialPages
     4643 * @param string defaultVal the original, default, text for the button (which is shown we no special pages are selected)
     4644 * @param object niceName the text-friendly versions of the type of special page. i.e. "Special Pages" as opposed to 'special-page'.
     4645 *                        object contains a singular and plural property.
     4646 * @return string the text to be used for the button.
     4647 */
     4648
     4649var specialPagesInsertText = function specialPagesInsertText(props, type, defaultVal, niceName) {
     4650  // if nothing is set, return a prompt to select special pages.
     4651  if (props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0) {
     4652    return defaultVal;
     4653  }
     4654
     4655  var shownOrHidden = props.attributes.contentVisibility;
     4656  var specialPages = props.attributes.contentVisibilityRules.specialPage[type];
     4657  var specialPagesCount = specialPages.length;
     4658  var niceType = specialPagesCount === 1 ? niceName.singular : niceName.plural;
     4659  var insertText = shownOrHidden + Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_0__["__"])(' on ') + specialPagesCount + ' ' + niceType;
     4660  return insertText;
     4661};
     4662
     4663/* harmony default export */ __webpack_exports__["default"] = (specialPagesInsertText);
     4664
     4665/***/ }),
     4666
     4667/***/ "./src/helpers/special-pages-insert-button-class.js":
     4668/*!**********************************************************!*\
     4669  !*** ./src/helpers/special-pages-insert-button-class.js ***!
     4670  \**********************************************************/
     4671/*! exports provided: default */
     4672/***/ (function(module, __webpack_exports__, __webpack_require__) {
     4673
     4674"use strict";
     4675__webpack_require__.r(__webpack_exports__);
     4676/**
     4677 * The class which is given to the button used to toggle the popover where people can select which content to select.
     4678 * We add a 'has-items' class if someone has chosen at least one item.
     4679 *
     4680 * @return string
     4681 */
     4682var specialPagesInsertButtonClass = function specialPagesInsertButtonClass(props, type) {
     4683  // If we don't have any items selected, just basic class.
     4684  if (props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0) {
     4685    return 'content-visibility-special-page-inserter-toggle';
     4686  } // We have some items selected, so we have a couple classes.
     4687
     4688
     4689  return 'content-visibility-special-page-inserter-toggle has-items';
     4690};
     4691
     4692/* harmony default export */ __webpack_exports__["default"] = (specialPagesInsertButtonClass);
    29304693
    29314694/***/ }),
     
    29564719
    29574720/***/ "@wordpress/blockEditor":
    2958 /*!**********************************************!*\
    2959   !*** external {"this":["wp","blockEditor"]} ***!
    2960   \**********************************************/
     4721/*!*************************************!*\
     4722  !*** external ["wp","blockEditor"] ***!
     4723  \*************************************/
    29614724/*! no static exports found */
    29624725/***/ (function(module, exports) {
    29634726
    2964 (function() { module.exports = this["wp"]["blockEditor"]; }());
     4727(function() { module.exports = window["wp"]["blockEditor"]; }());
    29654728
    29664729/***/ }),
    29674730
    29684731/***/ "@wordpress/components":
    2969 /*!*********************************************!*\
    2970   !*** external {"this":["wp","components"]} ***!
    2971   \*********************************************/
     4732/*!************************************!*\
     4733  !*** external ["wp","components"] ***!
     4734  \************************************/
    29724735/*! no static exports found */
    29734736/***/ (function(module, exports) {
    29744737
    2975 (function() { module.exports = this["wp"]["components"]; }());
     4738(function() { module.exports = window["wp"]["components"]; }());
    29764739
    29774740/***/ }),
    29784741
    29794742/***/ "@wordpress/compose":
    2980 /*!******************************************!*\
    2981   !*** external {"this":["wp","compose"]} ***!
    2982   \******************************************/
     4743/*!*********************************!*\
     4744  !*** external ["wp","compose"] ***!
     4745  \*********************************/
    29834746/*! no static exports found */
    29844747/***/ (function(module, exports) {
    29854748
    2986 (function() { module.exports = this["wp"]["compose"]; }());
     4749(function() { module.exports = window["wp"]["compose"]; }());
    29874750
    29884751/***/ }),
    29894752
    29904753/***/ "@wordpress/element":
    2991 /*!******************************************!*\
    2992   !*** external {"this":["wp","element"]} ***!
    2993   \******************************************/
     4754/*!*********************************!*\
     4755  !*** external ["wp","element"] ***!
     4756  \*********************************/
    29944757/*! no static exports found */
    29954758/***/ (function(module, exports) {
    29964759
    2997 (function() { module.exports = this["wp"]["element"]; }());
     4760(function() { module.exports = window["wp"]["element"]; }());
    29984761
    29994762/***/ }),
    30004763
    30014764/***/ "@wordpress/hooks":
    3002 /*!****************************************!*\
    3003   !*** external {"this":["wp","hooks"]} ***!
    3004   \****************************************/
     4765/*!*******************************!*\
     4766  !*** external ["wp","hooks"] ***!
     4767  \*******************************/
    30054768/*! no static exports found */
    30064769/***/ (function(module, exports) {
    30074770
    3008 (function() { module.exports = this["wp"]["hooks"]; }());
     4771(function() { module.exports = window["wp"]["hooks"]; }());
    30094772
    30104773/***/ }),
    30114774
    30124775/***/ "@wordpress/i18n":
    3013 /*!***************************************!*\
    3014   !*** external {"this":["wp","i18n"]} ***!
    3015   \***************************************/
     4776/*!******************************!*\
     4777  !*** external ["wp","i18n"] ***!
     4778  \******************************/
    30164779/*! no static exports found */
    30174780/***/ (function(module, exports) {
    30184781
    3019 (function() { module.exports = this["wp"]["i18n"]; }());
     4782(function() { module.exports = window["wp"]["i18n"]; }());
    30204783
    30214784/***/ }),
    30224785
    30234786/***/ "@wordpress/plugins":
    3024 /*!******************************************!*\
    3025   !*** external {"this":["wp","plugins"]} ***!
    3026   \******************************************/
     4787/*!*********************************!*\
     4788  !*** external ["wp","plugins"] ***!
     4789  \*********************************/
    30274790/*! no static exports found */
    30284791/***/ (function(module, exports) {
    30294792
    3030 (function() { module.exports = this["wp"]["plugins"]; }());
     4793(function() { module.exports = window["wp"]["plugins"]; }());
     4794
     4795/***/ }),
     4796
     4797/***/ "react":
     4798/*!************************!*\
     4799  !*** external "React" ***!
     4800  \************************/
     4801/*! no static exports found */
     4802/***/ (function(module, exports) {
     4803
     4804(function() { module.exports = window["React"]; }());
    30314805
    30324806/***/ })
  • content-visibility/trunk/build/index.js.map

    r2450785 r2471073  
    1 {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/controls/content-visibility-controls.js","webpack:///./src/controls/content-visibility-displayed-control.js","webpack:///./src/controls/content-visibility-rules-enabled.js","webpack:///./src/controls/content-visibility-user-authentication.js","webpack:///./src/controls/shown-or-hidden/content-visibility-shown-hidden-control.js","webpack:///./src/controls/special-page/content-visibility-special-page-controls.js","webpack:///./src/controls/special-page/content-visibility-special-page-panel.js","webpack:///./src/controls/user-authentication/content-visibility-user-authentication-radio-control.js","webpack:///./src/controls/user-authentication/user-authentication-panel-body-control.js","webpack:///./src/editor.scss","webpack:///./src/helpers/is-valid-blocktype.js","webpack:///./src/index.js","webpack:///external {\"this\":[\"wp\",\"blockEditor\"]}","webpack:///external {\"this\":[\"wp\",\"components\"]}","webpack:///external {\"this\":[\"wp\",\"compose\"]}","webpack:///external {\"this\":[\"wp\",\"element\"]}","webpack:///external {\"this\":[\"wp\",\"hooks\"]}","webpack:///external {\"this\":[\"wp\",\"i18n\"]}","webpack:///external {\"this\":[\"wp\",\"plugins\"]}"],"names":["contentVisibilityControls","createHigherOrderComponent","BlockEdit","props","isValidBlockType","name","isSelected","showControls","attributes","contentVisibilityRules","contentVisibilityRulesEnabled","__","addFilter","addContentVisibilityRulesAttribute","settings","defaultRules","applyFilters","userAuthenticated","assign","type","default","addContentVisibilityRulesPropOnSave","extraProps","blockType","ContentVisibilityDisplayedControl","withState","option","setState","rulesEnabled","addContentVisibilityAttribute","contentVisibility","addBlockVisibilityPropOnSave","ContentVisibilityRulesEnabled","state","newBVRules","setAttributes","doAction","addContentVisibilityRulesEnabledAttribute","addContentVisibilityRulesEnabledPropOnSave","withCustomClassName","BlockListBlock","iconClassName","ContentVisibilityUserAuthenticationControl","hasOwnProperty","BlockVisibilityUserAuthenitcationFill","fillProps","registerPlugin","render","ContentVisibilityShownHiddenControl","label","value","ContentVisibilitySpecialPageControls","ContentVisibilitySpecialPageFill","ContentVisibility","screen","ContentVisibilitySpecialPagePanelBodyControl","ContentVisibilityUserAuthenticationRadioControl","ContentVisibilityUserAuthenticationPanelBodyControl","invalidBlockTypes","includes"],"mappings":";;;;;;;;;;;;;;;;QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,iC;;;;;;;;;;;ACfA;AACA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0B;;;;;;;;;;;AClBA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChDA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;;;;;;;;;;;;ACxBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa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AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACjBA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;;ACLA,+DAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACdA,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;;;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,yDAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;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","file":"index.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./src/index.js\",\"style-index\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var assignValue = require('./_assignValue'),\n    copyObject = require('./_copyObject'),\n    createAssigner = require('./_createAssigner'),\n    isArrayLike = require('./isArrayLike'),\n    isPrototype = require('./_isPrototype'),\n    keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nmodule.exports = assign;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { PanelBody, PanelRow, Slot } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Fragment } from '@wordpress/element';\nimport { addFilter, applyFilters } from '@wordpress/hooks';\nimport { InspectorControls } from '@wordpress/blockEditor';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityRulesEnabled } from './content-visibility-rules-enabled';\nimport { ContentVisibilityDisplayedControl } from './content-visibility-displayed-control';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const contentVisibilityControls = createHigherOrderComponent((BlockEdit) => {\n\n    return (props) => {\n\n        if (!isValidBlockType(props.name) || !props.isSelected) {\n            return <BlockEdit {...props} />;\n        }\n\n        // Add a class to the div contining the rules so we can show/hide them when they are enabled/disabled.\n        // Normally this would be props.attributes.contentVisibilityRules for anything registered in core, or in JS. However, as it's\n        // possible to register attributes in PHP _alone_ we need to look at props.block.attributes.contentVisibilityRules -- both\n        // get updated when a block is updated.\n        let showControls = (props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled) ? 'show-controls' : 'hide-controls';\n\n        return (\n            <Fragment>\n                <BlockEdit {...props} />\n                <InspectorControls>\n                    <PanelBody title={__('Visibility', 'content-visibility')} className=\"content-visibility-controls\" initialOpen={false}>\n\n                        <PanelRow className=\"content-visibility-rules-enabled\">\n                            <ContentVisibilityRulesEnabled props={props} />\n                        </PanelRow>\n\n                        <div className={showControls + \" content-visibility-controls-container\"}>\n                            <PanelRow className=\"content-visibility-displayed-control\">\n                                <ContentVisibilityDisplayedControl props={props} />\n                            </PanelRow>\n\n                            <Slot name=\"content-visibility-extra-controls\" fillProps={props} />\n                        </div>\n\n                    </PanelBody>\n                </InspectorControls>\n            </Fragment>\n        );\n\n    };\n}, 'contentVisibilityControls');\n\naddFilter('editor.BlockEdit', 'content-visibility/content-visibility-controls', contentVisibilityControls);\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesAttribute(settings) {\n\n    // If this is a valid block\n    if (isValidBlockType(settings.name)) {\n\n        // Run the rules through a filter so we're able to add rules externally.\n        let defaultRules = applyFilters('contentVisibility.defaultContentVisibilityRules', {\n            contentVisibilityRulesEnabled: false,\n            userAuthenticated: ''\n        });\n\n        // Use Lodash's assign to gracefully handle if attributes are undefined\n        settings.attributes = assign(settings.attributes, {\n            contentVisibilityRules: {\n                type: 'object',\n                default: defaultRules\n            },\n        });\n    }\n\n    return settings;\n\n}// end addContentVisibilityRulesAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesPropOnSave(extraProps, blockType, attributes) {\n\n    // If the current block is valid, add our prop.\n    if (isValidBlockType(blockType.name)) {\n        extraProps.contentVisibilityRules = attributes.contentVisibilityRules;\n    }\n\n    return extraProps;\n\n}// end addContentVisibilityRulesPropOnSave()\n\naddFilter('blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesAttribute', addContentVisibilityRulesAttribute);\naddFilter('blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesPropOnSave', addContentVisibilityRulesPropOnSave);","import { Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityShownHiddenControl } from './shown-or-hidden/content-visibility-shown-hidden-control';\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityDisplayedControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n\n    if ( ! rulesEnabled ) {\n        return (\n            <Disabled>\n                <ContentVisibilityShownHiddenControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityShownHiddenControl props={ props } />\n    );\n\n} );\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibility: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addBlockVisibilityPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibility = attributes.contentVisibility;\n\t}\n\n\treturn extraProps;\n\n}// end addBlockVisibilityPropOnSave()\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityAttribute', addContentVisibilityAttribute );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addBlockVisibilityPropOnSave', addBlockVisibilityPropOnSave );","import { ToggleControl } from '@wordpress/components';\nimport { withState, createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter, doAction } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityRulesEnabled = withState( {\n    rulesEnabled: false,\n} )( ( { rulesEnabled, setState, props } ) => (\n    <ToggleControl\n        label={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ? __( 'Rules Enabled', 'content-visibility' ) : __( 'Rules Disabled', 'content-visibility' ) }\n        checked={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled || rulesEnabled }\n        onChange={ ( rulesEnabled ) => setState( ( state ) => {\n\n            let newBVRules = { ...props.attributes.contentVisibilityRules };\n            newBVRules.contentVisibilityRulesEnabled = rulesEnabled;\n\n            props.setAttributes( {\n                contentVisibilityRules: newBVRules,\n            } );\n\n            // Fire an action so we can see what's happened in other controls. This can be useful,\n            // for example when setting rules for roles - pointless if a user isn't signed in.\n            doAction( 'contentVisibility.onChange.contentVisibilityRulesEnabled', 'content-visibility/onChange', rulesEnabled, props );\n\n            // Sets the state\n            return (\n                { rulesEnabled: ! state.rulesEnabled }\n            );\n        } ) }\n    />\n) );\n\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesEnabledAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibilityRulesEnabled: {\n\t\t\t\ttype: 'boolean',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityRulesEnabledAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesEnabledPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibilityRulesEnabled = attributes.contentVisibilityRulesEnabled;\n    }\n\n\treturn extraProps;\n\n}// end addContentVisibilityRulesEnabledPropOnSave()\n\n/**\n * Add a custom class name to each block that has content visibility rules enabled.\n *\n * @param {Object} BlockListBlock The current block\n *\n * @return {Object} The block with a custom class name added if the block has rules enabled. The unmodified block otherwise.\n */\nconst withCustomClassName = createHigherOrderComponent( ( BlockListBlock ) => {\n\n    return ( props ) => {\n\n        if ( ! props.attributes.contentVisibility || ! props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ) {\n            return <BlockListBlock {...props} />;\n        }\n\n        let iconClassName = 'content-visibility-rules-enabled-' + props.attributes.contentVisibility;\n\n        return <BlockListBlock {...props} className={ iconClassName } />\n\n    };\n}, 'withCustomClassName' );\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesEnabledAttribute', addContentVisibilityRulesEnabledAttribute, 999 );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesEnabledPropOnSave', addContentVisibilityRulesEnabledPropOnSave, 999 );\n\naddFilter( 'editor.BlockListBlock', 'content-visibility/add-class-name-for-blocks-with-rules', withCustomClassName, 999 );","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilityUserAuthenticationPanelBodyControl } from './user-authentication/user-authentication-panel-body-control';\n\n\nexport const ContentVisibilityUserAuthenticationControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled><ContentVisibilityUserAuthenticationPanelBodyControl props={ props } /></Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityUserAuthenticationPanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilityUserAuthenticationControl> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilityUserAuthenticationControl component.\n */\nfunction BlockVisibilityUserAuthenitcationFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilityUserAuthenticationControl props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Add our component to the Slot provided by BlockVisibilityControls\nregisterPlugin( 'content-visibility-01-user-authentication-fill', { render: BlockVisibilityUserAuthenitcationFill } );\n","import { RadioControl, PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nexport const ContentVisibilityShownHiddenControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Shown or Hidden', 'content-visibility-user-role' ) }\n            initialOpen={ true }\n            className=\"content-visibility-control-panel content-visibility-user-role-controls\"\n        >\n            <PanelRow>\n                <RadioControl\n                    label={ __( \"When the rules below are true, this block will be: \", 'content-visibility' ) }\n                    help=\"\"\n                    selected={ props.attributes.contentVisibility || option }\n                    options={ [\n                        { label: __( 'Shown', 'content-visibility' ), value: 'shown' },\n                        { label: __( 'Hidden', 'content-visibility' ), value: 'hidden' },\n                    ] }\n                    onChange={ ( option ) => {\n\n                        setState( { option } );\n\n                        props.setAttributes( {\n                            contentVisibility: option,\n                        } );\n\n                    } }\n                />\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilitySpecialPagePanelBodyControl } from './content-visibility-special-page-panel';\n\n\nexport const ContentVisibilitySpecialPageControls = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled>\n                <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilitySpecialPageControls> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilitySpecialPageControls component.\n */\nfunction ContentVisibilitySpecialPageFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilitySpecialPageControls props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Only load the Widgets-related controls on the widgets screen\nif ( 'appearance_page_gutenberg-widgets' === ContentVisibility.screen ) {\n    // Add our component to the Slot provided by BlockVisibilityControls\n    registerPlugin( 'content-visibility-04-special-page-fill', { render: ContentVisibilitySpecialPageFill } );\n}\n","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n// import { ContentVisibilityUserAuthenticationRadioControl } from './block-visibility-user-authentication-radio-control';\n\nexport const ContentVisibilitySpecialPagePanelBodyControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Special Page', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel block-visibility-special-page-controls\"\n        >\n            <PanelRow>\n                {/* <ContentVisibilityUserAuthenticationRadioControl props={ props } /> */}\n                <p>This does not function properly yet due to a core Gutenberg bug.</p>\n\n                { props.attributes.contentVisibility && (\n                    <p class=\"special-page-help-intro content-visibility-help-text\">\n                        { __( 'Select which types of pages this block will be ' + props.attributes.contentVisibility + '. Special pages include a search results page, a date or category archive, or the 404 not found page amongst others.', 'content-visibility-special-page' ) }\n                    </p>\n                ) }\n\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","import { RadioControl } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { doAction } from '@wordpress/hooks';\n\nexport const ContentVisibilityUserAuthenticationRadioControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n\n        <RadioControl\n            label=''\n            help=''\n            className=\"content-visibility-user-authenticated-control\"\n            selected={ props.attributes.contentVisibilityRules.userAuthenticated || option }\n            options={ [\n                { label: __( 'Signed Out', 'content-visibility' ), value: 'logged-out' },\n                { label: __( 'Signed In', 'content-visibility' ), value: 'logged-in' },\n            ] }\n            onChange={ ( option ) => {\n\n                // Set the state and props.\n                setState( { option } );\n\n                let newBVRules = { ...props.attributes.contentVisibilityRules };\n                newBVRules.userAuthenticated = option;\n\n                props.setAttributes( {\n                    contentVisibilityRules: newBVRules,\n                } );\n\n                // Fire an action so we can see what's happened in other controls. This can be useful,\n                // for example when setting rules for roles - pointless if a user isn't signed in.\n                doAction( 'contentVisibility.onChange.userAuthenticated', 'content-visibility/onChange', option, props );\n\n            } }\n        />\n\n    );\n\n} );","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { ContentVisibilityUserAuthenticationRadioControl } from './content-visibility-user-authentication-radio-control';\n\nexport const ContentVisibilityUserAuthenticationPanelBodyControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'User Authentication', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel content-visibility-user-authenticated-controls\"\n        >\n            <PanelRow>\n                <ContentVisibilityUserAuthenticationRadioControl props={ props } />\n\n                { props.attributes.contentVisibility && (\n                    <p className=\"user-auth-help-intro content-visibility-help-text\">\n                        { __( 'Select whether this block will be ' + props.attributes.contentVisibility + ' if a user is signed in to this site. If neither is selected, this block will be ' + props.attributes.contentVisibility + ' regardless of whether a user is signed in or not.', 'content-visibility-user-role' ) }\n                    </p>\n                ) }\n\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","// extracted by mini-css-extract-plugin","/**\n * Is the passed block name one which supports our custom field?\n *\n * @param {string} name The name of the block.\n */\nfunction isValidBlockType( name ) {\n\n    const invalidBlockTypes = [\n        'something/unsupported',\n    ];\n\n    return ! invalidBlockTypes.includes( name );\n\n}// end isValidBlockType()\n\nexport default isValidBlockType;","import './editor.scss';\nimport './style.scss';\n\nimport contentVisibilityControls from './controls/content-visibility-controls.js';\nimport ContentVisibilityUserAuthenticationControl from './controls/content-visibility-user-authentication';\nimport ContentVisibilitySpecialPageControls from './controls/special-page/content-visibility-special-page-controls';\n","(function() { module.exports = this[\"wp\"][\"blockEditor\"]; }());","(function() { module.exports = this[\"wp\"][\"components\"]; }());","(function() { module.exports = this[\"wp\"][\"compose\"]; }());","(function() { module.exports = this[\"wp\"][\"element\"]; }());","(function() { module.exports = this[\"wp\"][\"hooks\"]; }());","(function() { module.exports = this[\"wp\"][\"i18n\"]; }());","(function() { module.exports = this[\"wp\"][\"plugins\"]; }());"],"sourceRoot":""}
     1{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/goober/dist/goober.module.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_apply.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_baseSetToString.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_defineProperty.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_overRest.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_setToString.js","webpack:///./node_modules/lodash/_shortOut.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/lodash/constant.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/react-multi-select-component/dist/react-multi-select-component.esm.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/controls/content-visibility-controls.js","webpack:///./src/controls/content-visibility-displayed-control.js","webpack:///./src/controls/content-visibility-rules-enabled.js","webpack:///./src/controls/content-visibility-user-authentication.js","webpack:///./src/controls/multiselect/content-visibility-multiselect.js","webpack:///./src/controls/shown-or-hidden/content-visibility-shown-hidden-control.js","webpack:///./src/controls/special-page/content-visibility-page-page-inserter.js","webpack:///./src/controls/special-page/content-visibility-post-page-inserter.js","webpack:///./src/controls/special-page/content-visibility-special-page-controls.js","webpack:///./src/controls/special-page/content-visibility-special-page-page-inserter.js","webpack:///./src/controls/special-page/content-visibility-special-page-panel.js","webpack:///./src/controls/user-authentication/content-visibility-user-authentication-radio-control.js","webpack:///./src/controls/user-authentication/user-authentication-panel-body-control.js","webpack:///./src/editor.scss","webpack:///./src/helpers/get-pages.js","webpack:///./src/helpers/get-posts.js","webpack:///./src/helpers/get-special-pages.js","webpack:///./src/helpers/has-parent-with-class.js","webpack:///./src/helpers/is-valid-blocktype.js","webpack:///./src/helpers/keep-popup-open.js","webpack:///./src/helpers/special-page-insert-text.js","webpack:///./src/helpers/special-pages-insert-button-class.js","webpack:///./src/index.js","webpack:///external [\"wp\",\"blockEditor\"]","webpack:///external [\"wp\",\"components\"]","webpack:///external [\"wp\",\"compose\"]","webpack:///external [\"wp\",\"element\"]","webpack:///external [\"wp\",\"hooks\"]","webpack:///external [\"wp\",\"i18n\"]","webpack:///external [\"wp\",\"plugins\"]","webpack:///external \"React\""],"names":["contentVisibilityControls","createHigherOrderComponent","BlockEdit","props","isValidBlockType","name","isSelected","showControls","attributes","contentVisibilityRules","contentVisibilityRulesEnabled","__","addFilter","addContentVisibilityRulesAttribute","settings","defaultRules","applyFilters","userAuthenticated","assign","type","default","addContentVisibilityRulesPropOnSave","extraProps","blockType","ContentVisibilityDisplayedControl","withState","option","setState","rulesEnabled","addContentVisibilityAttribute","contentVisibility","addBlockVisibilityPropOnSave","ContentVisibilityRulesEnabled","state","newBVRules","setAttributes","doAction","addContentVisibilityRulesEnabledAttribute","addContentVisibilityRulesEnabledPropOnSave","withCustomClassName","BlockListBlock","iconClassName","ContentVisibilityUserAuthenticationControl","hasOwnProperty","BlockVisibilityUserAuthenitcationFill","fillProps","registerPlugin","render","ContentVisibilityMultiSelect","data","labelledBy","onChange","specialPage","checked","onClick","disabled","icon","label","ContentVisibilityShownHiddenControl","value","PagePageInserter","isVisible","getPages","niceName","singular","plural","toggleVisible","specialPagesInsertButtonClass","specialPagesInsertText","keepPopupOpen","PostPageInserter","getPosts","ContentVisibilitySpecialPageControls","ContentVisibilitySpecialPageFill","ContentVisibility","screen","local","SpecialPagePageInserter","specialPages","getSpecialPages","map","notes","ContentVisibilitySpecialPagePanelBodyControl","registerSpecialPageVisibilityRule","pages","posts","ContentVisibilityUserAuthenticationRadioControl","ContentVisibilityUserAuthenticationPanelBodyControl","length","page","push","id","post","keyValue","hasParentWithClass","element","classname","className","split","indexOf","tagName","parentNode","invalidBlockTypes","includes","event","eTarget","target","stopPropagation","defaultVal","undefined","shownOrHidden","specialPagesCount","niceType","insertText"],"mappings":";;;;;;;;;;;;;;;;QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,iC;;;;;;;;;;;ACfA;AACA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0B;;;;;;;;;;;AClBA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yB;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACbA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC,qEAAoB;;AAElD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO,WAAW;AAC7B,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvCA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA,eAAe,mBAAO,CAAC,uDAAa;AACpC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;ACpCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;;ACVA;AACA;;AAEA;;;;;;;;;;;;;ACHA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,a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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,yDAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACrCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1BA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6B;AACoD;;AAEjF;AACA;AACA;AACA,uEAAuE,aAAa;AACpF;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,GAAG,mCAAmC;AACtC;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,iBAAiB,cAAc;AAC/B;AACA;;AAEA,iBAAiB,cAAc;AAC/B;AACA,GAAG;;;AAGH,kBAAkB,eAAe;AACjC,oBAAoB,eAAe;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;;AAEA;AACA;AACA;;AAEA,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA,GAAG,GAAG,4CAAK;AACX;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,mCAAmC,kDAAG;AACtC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS,4CAAK;AACd;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA,GAAG,GAAG,4CAAK;AACX;;AAEA;AACA;AACA;AACA,iCAAiC,kDAAG;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oDAAM;AACtB,EAAE,uDAAS;AACX,kBAAkB;AAClB,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,gCAAgC,kDAAG;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA,SAAS,4CAAK;AACd;AACA,GAAG;AACH;AACA,WAAW,4CAAK;AAChB;AACA,KAAK,EAAE,4CAAK;AACZ;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,8BAA8B;;AAE/B,yCAAyC,kDAAG;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qCAAqC,kDAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,sDAAQ;AAC1B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA,wBAAwB,yDAAW;AACnC;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,qDAAO;AACxB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK,qCAAqC;AAC1C,GAAG;AACH;AACA;;AAEA,SAAS,4CAAK;AACd;AACA;AACA;AACA,GAAG,oBAAoB,4CAAK;AAC5B;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG,GAAG,4CAAK;AACX;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe,4CAAK,uEAAuE,4CAAK;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG,GAAG,4CAAK,2CAA2C;AACtD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA,GAAG;AACH;;AAEA,2BAA2B,kDAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kDAAG;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,qCAAqC,kDAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mCAAmC,kDAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,uCAAuC,kDAAG;AAC1C;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,sDAAQ;AAC1B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA,mBAAmB,sDAAQ;AAC3B;AACA;;AAEA;AACA,gBAAgB,oDAAM;AACtB;;AAEA,EAAE,uDAAS;AACX;AACA,GAAG;AACH,EAAE,uDAAS;AACX;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,4CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA,GAAG,0BAA0B,4CAAK,mEAAmE,4CAAK;AAC1G;AACA;AACA;AACA;AACA,GAAG,uBAAuB,4CAAK,8BAA8B,4CAAK;AAClE;AACA,GAAG,gBAAgB,4CAAK;AACxB;AACA,GAAG,EAAE,4CAAK;AACV;AACA,GAAG,EAAE,4CAAK,iDAAiD;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA,wBAAwB,4CAAK;AAC7B;AACA,GAAG,iEAAiE,4CAAK;AACzE;;AAEA,kCAAkC,kDAAG;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4CAAK;AACd;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE,4CAAK;AACV;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEe,0EAAW,EAAC;AACkB;AAC7C;;;;;;;;;;;;AC76BA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AAEO,IAAMA,yBAAyB,GAAGC,qFAA0B,CAAC,UAACC,SAAD,EAAe;AAE/E,SAAO,UAACC,KAAD,EAAW;AAEd,QAAI,CAACC,2EAAgB,CAACD,KAAK,CAACE,IAAP,CAAjB,IAAiC,CAACF,KAAK,CAACG,UAA5C,EAAwD;AACpD,aAAO,yEAAC,SAAD,EAAeH,KAAf,CAAP;AACH,KAJa,CAMd;AACA;AACA;AACA;;;AACA,QAAII,YAAY,GAAIJ,KAAK,CAACK,UAAN,CAAiBC,sBAAjB,CAAwCC,6BAAzC,GAA0E,eAA1E,GAA4F,eAA/G;AAEA,WACI,yEAAC,2DAAD,QACI,yEAAC,SAAD,EAAeP,KAAf,CADJ,EAEI,yEAAC,wEAAD,QACI,yEAAC,+DAAD;AAAW,WAAK,EAAEQ,0DAAE,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","file":"index.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"index\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp_content_visibility\"] = window[\"webpackJsonp_content_visibility\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./src/index.js\",\"style-index\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    module.exports = _typeof = function _typeof(obj) {\n      return typeof obj;\n    };\n  } else {\n    module.exports = _typeof = function _typeof(obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nmodule.exports = _typeof;","let e={data:\"\"},t=t=>{try{let e=t?t.querySelector(\"#_goober\"):self._goober;return e||(e=(t||document.head).appendChild(document.createElement(\"style\")),e.innerHTML=\" \",e.id=\"_goober\"),e.firstChild}catch(e){}return t||e},r=e=>{let r=t(e),a=r.data;return r.data=\"\",a},a=/(?:([A-Z0-9-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(})/gi,l=/\\/\\*[\\s\\S]*?\\*\\/|\\s{2,}|\\n/gm,o=(e,t)=>{let r,a=\"\",l=\"\",n=\"\";for(let c in e){let s=e[c];\"object\"==typeof s?(r=t?t.replace(/([^,])+/g,e=>c.replace(/([^,])+/g,t=>/&/g.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):c,l+=\"@\"==c[0]?\"f\"==c[1]?o(s,c):c+\"{\"+o(s,\"k\"==c[1]?\"\":t)+\"}\":o(s,r)):\"@\"==c[0]&&\"i\"==c[1]?a=c+\" \"+s+\";\":n+=o.p?o.p(c.replace(/[A-Z]/g,\"-$&\").toLowerCase(),s):c.replace(/[A-Z]/g,\"-$&\").toLowerCase()+\":\"+s+\";\"}return n[0]?(r=t?t+\"{\"+n+\"}\":n,a+r+l):a+l},n={},c=e=>{let t=\"\";for(let r in e)t+=r+(\"object\"==typeof e[r]?c(e[r]):e[r]);return t},s=(e,t,r,s,p)=>{let i=\"object\"==typeof e?c(e):e,u=n[i]||(n[i]=\"go\"+i.split(\"\").reduce((e,t)=>101*e+t.charCodeAt(0)>>>0,11));if(!n[u]){let t=\"object\"==typeof e?e:(e=>{let t,r=[{}];for(;t=a.exec(e.replace(l,\"\"));)t[4]&&r.shift(),t[3]?r.unshift(r[0][t[3]]=r[0][t[3]]||{}):t[4]||(r[0][t[1]]=t[2]);return r[0]})(e);n[u]=o(p?{[\"@keyframes \"+u]:t}:t,r?\"\":\".\"+u)}return((e,t,r)=>{-1==t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(n[u],t,s),u},p=(e,t,r)=>e.reduce((e,a,l)=>{let n=t[l];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):e}return e+a+(null==n?\"\":n)},\"\");function i(e){let r=this||{},a=e.call?e(r.p):e;return s(a.unshift?a.raw?p(a,[].slice.call(arguments,1),r.p):a.reduce((e,t)=>t?Object.assign(e,t.call?t(r.p):t):e,{}):a,t(r.target),r.g,r.o,r.k)}let u,f,d=i.bind({g:1}),g=i.bind({k:1});function b(e,t,r){o.p=t,u=e,f=r}function h(e,t){let r=this||{};return function(){let a=arguments;function l(o,n){let c=Object.assign({},o),s=c.className||l.className;return r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/g.test(s),c.className=i.apply(r,a)+(s?\" \"+s:\"\"),t&&(c.ref=n),u(c.as||e,c)}return t?t(l):l}}export{i as css,r as extractCss,d as glob,g as keyframes,b as setup,h as styled};\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseTimes = require('./_baseTimes'),\n    isArguments = require('./isArguments'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isIndex = require('./_isIndex'),\n    isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseAssignValue = require('./_baseAssignValue'),\n    eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\nmodule.exports = baseAssignValue;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n    isLength = require('./isLength'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n    nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseKeys;\n","var identity = require('./identity'),\n    overRest = require('./_overRest'),\n    setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n    defineProperty = require('./_defineProperty'),\n    identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\nmodule.exports = baseUnary;\n","var assignValue = require('./_assignValue'),\n    baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\nmodule.exports = copyObject;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n    isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\nmodule.exports = createAssigner;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n    isArrayLike = require('./isArrayLike'),\n    isIndex = require('./_isIndex'),\n    isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\nmodule.exports = isIterateeCall;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseSetToString = require('./_baseSetToString'),\n    shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\nmodule.exports = shortOut;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","var assignValue = require('./_assignValue'),\n    copyObject = require('./_copyObject'),\n    createAssigner = require('./_createAssigner'),\n    isArrayLike = require('./isArrayLike'),\n    isPrototype = require('./_isPrototype'),\n    keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\nmodule.exports = assign;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n    isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n    isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n    stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n    baseKeys = require('./_baseKeys'),\n    isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = stubFalse;\n","import { css } from 'goober';\nimport React, { useRef, useEffect, useState, useCallback, useMemo } from 'react';\n\nvar debounce = function debounce(func, wait) {\n  var timeout;\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    clearTimeout(timeout);\n    timeout = setTimeout(function () {\n      func.apply(null, args);\n    }, wait);\n  };\n};\n\n/**\r\n * Filters React Select options and sorts by similarity to a search filter.\r\n * Handles partial matches, eg. searching for \"Waberg High\" will find \"Raoul\r\n * Wallenberg Traditional High School\". Case insensitive. Ignores\r\n * non-alphanumeric characters.\r\n *\r\n * @param  options  An unfiltered list of Options.\r\n * @param? filter  A string to compare against Option labels.\r\n * @param? substitutions  Strings with multiple spellings or variations that we\r\n *           expect to match, eg. accented characters or abbreviated words.\r\n *\r\n * @return A filtered and sorted array of Options.\r\n */\nfunction filterOptions(options, filter, substitutions) {\n  // If the filter is blank, return the full list of Options.\n  if (!filter) {\n    return options;\n  }\n\n  var cleanFilter = cleanUpText(filter, substitutions);\n  return options // Filter out undefined or null Options.\n  .filter(function (_ref) {\n    var label = _ref.label,\n        value = _ref.value;\n    return label != null && value != null;\n  }) // Create a {score, Option} pair for each Option based on its label's\n  // similarity to the filter text.\n  .map(function (option) {\n    return {\n      option: option,\n      score: typeaheadSimilarity(cleanUpText(option.label, substitutions), cleanFilter)\n    };\n  }) // Only include matches of the entire substring, with a slight\n  // affordance for transposition or extra characters.\n  .filter(function (pair) {\n    return pair.score >= cleanFilter.length - 2;\n  }) // Sort 'em by order of their score.\n  .sort(function (a, b) {\n    return b.score - a.score;\n  }) // …and grab the original Options back from their pairs.\n  .map(function (pair) {\n    return pair.option;\n  });\n}\n/**\r\n * Scores the similarity between two strings by returning the length of the\r\n * longest common subsequence. Intended for comparing strings of different\r\n * lengths; eg. when matching a typeahead search input with a school name.\r\n\n * Meant for use in an instant search box where results are being fetched\r\n * as a user is typing.\r\n *\r\n * @param  a  The longer string (though, we flip them if it's shorter).\r\n * @param  b  The shorter string, eg. a typeahead search input.\r\n *\r\n * @return The length of the longest common subsequence. Higher scores indicate\r\n *           closer matches.\r\n */\n\nfunction typeaheadSimilarity(a, b) {\n  var aLength = a.length;\n  var bLength = b.length;\n  var table = [];\n\n  if (!aLength || !bLength) {\n    return 0;\n  } // Ensure `a` isn't shorter than `b`.\n\n\n  if (aLength < bLength) {\n    var _ref2 = [b, a];\n    a = _ref2[0];\n    b = _ref2[1];\n  } // Early exit if `a` includes `b`; these will be scored higher than any\n  // other options with the same `b` (filter string), with a preference for\n  // shorter `a` strings (option labels).\n\n\n  if (a.indexOf(b) !== -1) {\n    return bLength + 1 / aLength;\n  } // Initialize the table axes:\n  //\n  //    0 0 0 0 ... bLength\n  //    0\n  //    0\n  //\n  //   ...\n  //\n  // aLength\n  //\n\n\n  for (var x = 0; x <= aLength; ++x) {\n    table[x] = [0];\n  }\n\n  for (var y = 0; y <= bLength; ++y) {\n    table[0][y] = 0;\n  } // Populate the rest of the table with a dynamic programming algorithm.\n\n\n  for (var _x = 1; _x <= aLength; ++_x) {\n    for (var _y = 1; _y <= bLength; ++_y) {\n      table[_x][_y] = a[_x - 1] === b[_y - 1] ? 1 + table[_x - 1][_y - 1] : Math.max(table[_x][_y - 1], table[_x - 1][_y]);\n    }\n  }\n\n  return table[aLength][bLength];\n}\n/**\r\n * Apply string substitutions, remove non-alphanumeric characters, and convert\r\n * all letters to uppercase.\r\n *\r\n * eg. 'Scoil Bhríde Primary School' may become 'SCOILBHRIDEPRIMARYSCHOOL'.\r\n *\r\n * @param  input  An unsanitized input string.\r\n * @param  substitutions  Strings with multiple spellings or variations that we\r\n *          expect to match, for example accented characters or abbreviated\r\n *          words.\r\n *\r\n * @return The sanitized text.\r\n */\n\nfunction cleanUpText(input, substitutions) {\n  if (!input) {\n    return \"\";\n  } // Uppercase and remove all non-alphanumeric, non-accented characters.\n  // Also remove underscores.\n\n\n  input = input.toUpperCase().replace(/((?=[^\\u00E0-\\u00FC])\\W)|_/g, \"\");\n\n  if (!substitutions) {\n    return input;\n  }\n\n  var safeSubstitutions = substitutions; // For Flow.\n  // Replace all strings in `safeSubstitutions` with their standardized\n  // counterparts.\n\n  return Object.keys(safeSubstitutions).reduce(function (output, substitution) {\n    var unsubbed = new RegExp(substitution, \"g\");\n    return output.replace(unsubbed, safeSubstitutions[substitution]);\n  }, input);\n}\n\nvar strings = {\n  selectSomeItems: \"Select...\",\n  allItemsAreSelected: \"All items are selected.\",\n  selectAll: \"Select All\",\n  search: \"Search\",\n  clearSearch: \"Clear Search\",\n  clearSelected: \"Clear Selected\"\n};\nfunction getString(key, overrideStrings) {\n  return (overrideStrings == null ? void 0 : overrideStrings[key]) || strings[key];\n}\n\nvar Cross = function Cross() {\n  return React.createElement(\"svg\", {\n    width: \"24\",\n    height: \"24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: \"2\",\n    className: \"dropdown-search-clear-icon gray\"\n  }, React.createElement(\"line\", {\n    x1: \"18\",\n    y1: \"6\",\n    x2: \"6\",\n    y2: \"18\"\n  }), React.createElement(\"line\", {\n    x1: \"6\",\n    y1: \"6\",\n    x2: \"18\",\n    y2: \"18\"\n  }));\n};\n\nvar DefaultRenderer = /*#__PURE__*/css({\n  \"& input,& span\": {\n    verticalAlign: \"middle\",\n    margin: 0\n  },\n  span: {\n    display: \"inline-block\",\n    paddingLeft: \"5px\"\n  },\n  \"&.disabled\": {\n    opacity: 0.5\n  }\n});\n\nvar DefaultItemRenderer = function DefaultItemRenderer(_ref) {\n  var checked = _ref.checked,\n      option = _ref.option,\n      onClick = _ref.onClick,\n      disabled = _ref.disabled;\n  return React.createElement(\"div\", {\n    className: DefaultRenderer + \" item-renderer \" + (disabled && \"disabled\")\n  }, React.createElement(\"input\", {\n    type: \"checkbox\",\n    onChange: onClick,\n    checked: checked,\n    tabIndex: -1,\n    disabled: disabled\n  }), React.createElement(\"span\", null, option.label));\n};\n\n/**\r\n * This component represents an individual item in the multi-select drop-down\r\n */\nvar ItemContainer = /*#__PURE__*/css({\n  boxSizing: \"border-box\",\n  cursor: \"pointer\",\n  display: \"block\",\n  padding: \"var(--rmsc-p)\",\n  outline: 0,\n  \"&:hover,&:focus\": {\n    background: \"var(--rmsc-hover)\"\n  },\n  \"&.selected\": {\n    background: \"var(--rmsc-selected)\"\n  }\n});\n\nvar SelectItem = function SelectItem(_ref) {\n  var _ref$itemRenderer = _ref.itemRenderer,\n      ItemRenderer = _ref$itemRenderer === void 0 ? DefaultItemRenderer : _ref$itemRenderer,\n      option = _ref.option,\n      checked = _ref.checked,\n      focused = _ref.focused,\n      tabIndex = _ref.tabIndex,\n      disabled = _ref.disabled,\n      onSelectionChanged = _ref.onSelectionChanged,\n      onClick = _ref.onClick;\n  var itemRef = useRef();\n  useEffect(function () {\n    updateFocus(); // eslint-disable-next-line\n  }, [focused]);\n\n  var toggleChecked = function toggleChecked() {\n    onSelectionChanged(!checked);\n  };\n\n  var handleClick = function handleClick(e) {\n    toggleChecked();\n    onClick(e);\n  };\n\n  var updateFocus = function updateFocus() {\n    if (focused && !disabled && itemRef) {\n      itemRef.current.focus();\n    }\n  };\n\n  var handleKeyDown = function handleKeyDown(e) {\n    switch (e.which) {\n      case 13: // Enter\n\n      case 32:\n        // Space\n        toggleChecked();\n        break;\n\n      default:\n        return;\n    }\n\n    e.preventDefault();\n  };\n\n  return React.createElement(\"label\", {\n    className: ItemContainer + \" select-item \" + (checked && \"selected\"),\n    role: \"option\",\n    \"aria-selected\": checked,\n    tabIndex: tabIndex,\n    ref: itemRef,\n    onKeyDown: handleKeyDown\n  }, React.createElement(ItemRenderer, {\n    option: option,\n    checked: checked,\n    onClick: handleClick,\n    disabled: disabled\n  }));\n};\n\n/**\r\n * This component represents an unadorned list of SelectItem (s).\r\n */\nvar SelectListUl = /*#__PURE__*/css({\n  margin: 0,\n  paddingLeft: 0,\n  li: {\n    listStyle: \"none\",\n    margin: 0\n  }\n});\nvar skipIndex = 2;\n\nvar SelectList = function SelectList(_ref) {\n  var value = _ref.value,\n      onChange = _ref.onChange,\n      disabled = _ref.disabled,\n      ItemRenderer = _ref.ItemRenderer,\n      options = _ref.options,\n      focusIndex = _ref.focusIndex,\n      _onClick = _ref.onClick;\n\n  var handleSelectionChanged = function handleSelectionChanged(option, checked) {\n    if (disabled) {\n      return;\n    }\n\n    onChange(checked ? [].concat(value, [option]) : value.filter(function (o) {\n      return o.value !== option.value;\n    }));\n  };\n\n  return React.createElement(\"ul\", {\n    className: SelectListUl\n  }, options.map(function (o, i) {\n    var tabIndex = i + skipIndex;\n    return React.createElement(\"li\", {\n      key: o.hasOwnProperty(\"key\") ? o.key : i\n    }, React.createElement(SelectItem, {\n      focused: focusIndex === tabIndex,\n      tabIndex: tabIndex,\n      option: o,\n      onSelectionChanged: function onSelectionChanged(c) {\n        return handleSelectionChanged(o, c);\n      },\n      checked: value.find(function (s) {\n        return s.value === o.value;\n      }) ? true : false,\n      onClick: function onClick(e) {\n        return _onClick(e, tabIndex);\n      },\n      itemRenderer: ItemRenderer,\n      disabled: o.disabled || disabled\n    }));\n  }));\n};\n\n/**\r\n * This component represents the entire panel which gets dropped down when the\r\n * user selects the component.  It encapsulates the search filter, the\r\n * Select-all item, and the list of options.\r\n */\nvar FocusType;\n\n(function (FocusType) {\n  FocusType[FocusType[\"SEARCH\"] = -1] = \"SEARCH\";\n  FocusType[FocusType[\"NONE\"] = 1] = \"NONE\";\n})(FocusType || (FocusType = {}));\n\nvar SelectSearchContainer = /*#__PURE__*/css({\n  width: \"100%\",\n  position: \"relative\",\n  borderBottom: \"1px solid var(--rmsc-border)\",\n  input: {\n    height: \"var(--rmsc-h)\",\n    padding: \"0 var(--rmsc-p)\",\n    width: \"100%\",\n    outline: 0,\n    border: 0\n  }\n});\nvar SearchClearButton = /*#__PURE__*/css({\n  cursor: \"pointer\",\n  position: \"absolute\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  background: \"none\",\n  border: 0,\n  padding: \"0 calc(var(--rmsc-p)/2)\",\n  \"[hidden]\": {\n    display: \"none\"\n  }\n});\nvar SelectPanel = function SelectPanel(props) {\n  var onChange = props.onChange,\n      options = props.options,\n      value = props.value,\n      customFilterOptions = props.filterOptions,\n      selectAllLabel = props.selectAllLabel,\n      ItemRenderer = props.ItemRenderer,\n      disabled = props.disabled,\n      disableSearch = props.disableSearch,\n      focusSearchOnOpen = props.focusSearchOnOpen,\n      hasSelectAll = props.hasSelectAll,\n      overrideStrings = props.overrideStrings,\n      ClearIcon = props.ClearIcon,\n      debounceDuration = props.debounceDuration;\n\n  var _useState = useState(\"\"),\n      searchText = _useState[0],\n      setSearchText = _useState[1];\n\n  var _useState2 = useState(\"\"),\n      searchTextForFilter = _useState2[0],\n      setSearchTextForFilter = _useState2[1];\n\n  var _useState3 = useState(focusSearchOnOpen && !disableSearch ? FocusType.SEARCH : FocusType.NONE),\n      focusIndex = _useState3[0],\n      setFocusIndex = _useState3[1];\n\n  var debouncedSearch = useCallback(debounce(function (query) {\n    return setSearchTextForFilter(query);\n  }, debounceDuration), []);\n  var selectAllOption = {\n    label: selectAllLabel || getString(\"selectAll\", overrideStrings),\n    value: \"\"\n  };\n\n  var selectAllValues = function selectAllValues(checked) {\n    var filteredValues = filteredOptions().filter(function (o) {\n      return !o.disabled;\n    }).map(function (o) {\n      return o.value;\n    });\n\n    if (checked) {\n      var selectedValues = value.map(function (o) {\n        return o.value;\n      });\n      var finalSelectedValues = [].concat(selectedValues, filteredValues);\n      return options.filter(function (_ref) {\n        var value = _ref.value;\n        return finalSelectedValues.includes(value);\n      });\n    }\n\n    return value.filter(function (o) {\n      return !filteredValues.includes(o.value);\n    });\n  };\n\n  var selectAllChanged = function selectAllChanged(checked) {\n    var newOptions = selectAllValues(checked);\n    onChange(newOptions);\n  };\n\n  var handleSearchChange = function handleSearchChange(e) {\n    debouncedSearch(e.target.value);\n    setSearchText(e.target.value);\n    setFocusIndex(FocusType.SEARCH);\n  };\n\n  var handleClear = function handleClear() {\n    setSearchTextForFilter(\"\");\n    setSearchText(\"\");\n  };\n\n  var handleItemClicked = function handleItemClicked(index) {\n    return setFocusIndex(index);\n  };\n\n  var handleKeyDown = function handleKeyDown(e) {\n    switch (e.which) {\n      case 38:\n        // Up Arrow\n        if (e.altKey) {\n          return;\n        }\n\n        updateFocus(-1);\n        break;\n\n      case 40:\n        // Down Arrow\n        if (e.altKey) {\n          return;\n        }\n\n        updateFocus(1);\n        break;\n\n      default:\n        return;\n    }\n\n    e.stopPropagation();\n    e.preventDefault();\n  };\n\n  var handleSearchFocus = function handleSearchFocus() {\n    setFocusIndex(FocusType.SEARCH);\n  };\n\n  var filteredOptions = function filteredOptions() {\n    return customFilterOptions ? customFilterOptions(options, searchTextForFilter) : filterOptions(options, searchTextForFilter);\n  };\n\n  var updateFocus = function updateFocus(offset) {\n    var newFocus = focusIndex + offset;\n    newFocus = Math.max(1, newFocus);\n    newFocus = Math.min(newFocus, options.length + 1);\n    setFocusIndex(newFocus);\n  };\n\n  var _useMemo = useMemo(function () {\n    var filteredOptionsList = filteredOptions().filter(function (o) {\n      return !o.disabled;\n    });\n    return [filteredOptionsList.every(function (o) {\n      return value.findIndex(function (v) {\n        return v.value === o.value;\n      }) !== -1;\n    }), filteredOptionsList.length !== 0]; // eslint-disable-next-line\n  }, [searchText, value]),\n      isAllOptionSelected = _useMemo[0],\n      hasSelectableOptions = _useMemo[1];\n\n  return React.createElement(\"div\", {\n    className: \"select-panel\",\n    role: \"listbox\",\n    onKeyDown: handleKeyDown\n  }, !disableSearch && React.createElement(\"div\", {\n    className: SelectSearchContainer\n  }, React.createElement(\"input\", {\n    autoFocus: focusSearchOnOpen,\n    placeholder: getString(\"search\", overrideStrings),\n    type: \"text\",\n    \"aria-describedby\": getString(\"search\", overrideStrings),\n    onKeyDown: function onKeyDown(e) {\n      return e.stopPropagation();\n    },\n    onChange: handleSearchChange,\n    onFocus: handleSearchFocus,\n    value: searchText\n  }), React.createElement(\"button\", {\n    type: \"button\",\n    className: SearchClearButton + \" search-clear-button\",\n    hidden: !searchText,\n    onClick: handleClear,\n    \"aria-label\": getString(\"clearSearch\", overrideStrings)\n  }, ClearIcon || React.createElement(Cross, null))), hasSelectAll && hasSelectableOptions && React.createElement(SelectItem, {\n    focused: focusIndex === 1,\n    tabIndex: 1,\n    checked: isAllOptionSelected,\n    option: selectAllOption,\n    onSelectionChanged: selectAllChanged,\n    onClick: function onClick() {\n      return handleItemClicked(0);\n    },\n    itemRenderer: ItemRenderer,\n    disabled: disabled\n  }), React.createElement(SelectList, Object.assign({}, props, {\n    options: filteredOptions(),\n    focusIndex: focusIndex,\n    onClick: function onClick(_e, index) {\n      return handleItemClicked(index);\n    },\n    ItemRenderer: ItemRenderer,\n    disabled: disabled\n  })));\n};\n\nfunction Arrow(_ref) {\n  var expanded = _ref.expanded;\n  return React.createElement(\"svg\", {\n    width: \"24\",\n    height: \"24\",\n    fill: \"none\",\n    stroke: \"currentColor\",\n    strokeWidth: \"2\",\n    className: \"dropdown-heading-dropdown-arrow gray\"\n  }, React.createElement(\"path\", {\n    d: expanded ? \"M18 15 12 9 6 15\" : \"M6 9L12 15 18 9\"\n  }));\n}\n\nvar Spinner = /*#__PURE__*/css({\n  animation: \"rotate 2s linear infinite\",\n  \"& .path\": {\n    stroke: \"var(--rmsc-border)\",\n    strokeWidth: \"4px\",\n    strokeLinecap: \"round\",\n    animation: \"dash 1.5s ease-in-out infinite\"\n  },\n  \"@keyframes rotate\": {\n    \"100%\": {\n      transform: \"rotate(360deg)\"\n    }\n  },\n  \"@keyframes dash\": {\n    \"0%\": {\n      strokeDasharray: \"1,150\",\n      strokeDashoffset: 0\n    },\n    \"50%\": {\n      strokeDasharray: \"90,150\",\n      strokeDashoffset: \"-35\"\n    },\n    \"100%\": {\n      strokeDasharray: \"90,150\",\n      strokeDashoffset: \"-124\"\n    }\n  }\n});\n\nfunction Loading(_ref) {\n  var _ref$size = _ref.size,\n      size = _ref$size === void 0 ? 24 : _ref$size;\n  return React.createElement(\"span\", {\n    style: {\n      width: size,\n      marginRight: \"0.2rem\"\n    }\n  }, React.createElement(\"svg\", {\n    width: size,\n    height: size,\n    className: Spinner,\n    viewBox: \"0 0 50 50\",\n    style: {\n      display: \"inline\",\n      verticalAlign: \"middle\"\n    }\n  }, React.createElement(\"circle\", {\n    cx: \"25\",\n    cy: \"25\",\n    r: \"20\",\n    fill: \"none\",\n    className: \"path\"\n  })));\n}\n\n/**\r\n * A generic dropdown component.  It takes the children of the component\r\n * and hosts it in the component.  When the component is selected, it\r\n * drops-down the contentComponent and applies the contentProps.\r\n */\nvar PanelContainer = /*#__PURE__*/css({\n  position: \"absolute\",\n  zIndex: 1,\n  top: \"100%\",\n  width: \"100%\",\n  paddingTop: \"8px\",\n  \".panel-content\": {\n    maxHeight: \"300px\",\n    overflowY: \"auto\",\n    borderRadius: \"var(--rmsc-radius)\",\n    background: \"var(--rmsc-bg)\",\n    boxShadow: \"0 0 0 1px rgba(0, 0, 0, 0.1), 0 4px 11px rgba(0, 0, 0, 0.1)\"\n  }\n});\nvar DropdownContainer = /*#__PURE__*/css({\n  position: \"relative\",\n  outline: 0,\n  backgroundColor: \"var(--rmsc-bg)\",\n  border: \"1px solid var(--rmsc-border)\",\n  borderRadius: \"var(--rmsc-radius)\",\n  \"&:focus-within\": {\n    boxShadow: \"var(--rmsc-main) 0 0 0 1px\",\n    borderColor: \"var(--rmsc-main)\"\n  }\n});\nvar DropdownHeading = /*#__PURE__*/css({\n  position: \"relative\",\n  padding: \"0 var(--rmsc-p)\",\n  display: \"flex\",\n  alignItems: \"center\",\n  width: \"100%\",\n  height: \"var(--rmsc-h)\",\n  cursor: \"default\",\n  outline: 0,\n  \".dropdown-heading-value\": {\n    overflow: \"hidden\",\n    textOverflow: \"ellipsis\",\n    whiteSpace: \"nowrap\",\n    flex: 1\n  }\n});\nvar ClearSelectedButton = /*#__PURE__*/css({\n  cursor: \"pointer\",\n  background: \"none\",\n  border: 0,\n  padding: 0,\n  display: \"flex\"\n});\n\nvar Dropdown = function Dropdown(_ref) {\n  var children = _ref.children,\n      ContentComponent = _ref.contentComponent,\n      contentProps = _ref.contentProps,\n      isLoading = _ref.isLoading,\n      disabled = _ref.disabled,\n      shouldToggleOnHover = _ref.shouldToggleOnHover,\n      labelledBy = _ref.labelledBy,\n      onMenuToggle = _ref.onMenuToggle,\n      ArrowRenderer = _ref.ArrowRenderer,\n      ClearSelectedIcon = _ref.ClearSelectedIcon,\n      defaultIsOpen = _ref.defaultIsOpen,\n      isOpen = _ref.isOpen;\n\n  var _useState = useState(true),\n      isInternalExpand = _useState[0],\n      setIsInternalExpand = _useState[1];\n\n  var _useState2 = useState(defaultIsOpen),\n      expanded = _useState2[0],\n      setExpanded = _useState2[1];\n\n  var _useState3 = useState(false),\n      hasFocus = _useState3[0],\n      setHasFocus = _useState3[1];\n\n  var FinalArrow = ArrowRenderer || Arrow;\n  var wrapper = useRef();\n  /* eslint-disable react-hooks/exhaustive-deps */\n\n  useEffect(function () {\n    onMenuToggle && onMenuToggle(expanded);\n  }, [expanded]);\n  useEffect(function () {\n    if (defaultIsOpen === undefined && typeof isOpen === \"boolean\") {\n      setIsInternalExpand(false);\n      setExpanded(isOpen);\n    }\n  }, [isOpen]);\n\n  var handleKeyDown = function handleKeyDown(e) {\n    var _wrapper$current;\n\n    if (isInternalExpand) {\n      switch (e.which) {\n        case 27: // Escape\n\n        case 38:\n          // Up Arrow\n          setExpanded(false);\n          wrapper == null ? void 0 : (_wrapper$current = wrapper.current) == null ? void 0 : _wrapper$current.focus();\n          break;\n\n        case 32: // Space\n\n        case 13: // Enter Key\n\n        case 40:\n          // Down Arrow\n          setExpanded(true);\n          break;\n\n        default:\n          return;\n      }\n    }\n\n    e.preventDefault();\n  };\n\n  var handleHover = function handleHover(iexpanded) {\n    isInternalExpand && shouldToggleOnHover && setExpanded(iexpanded);\n  };\n\n  var handleFocus = function handleFocus() {\n    return !hasFocus && setHasFocus(true);\n  };\n\n  var handleBlur = function handleBlur(e) {\n    if (!e.currentTarget.contains(e.relatedTarget) && isInternalExpand) {\n      setHasFocus(false);\n      setExpanded(false);\n    }\n  };\n\n  var handleMouseEnter = function handleMouseEnter() {\n    return handleHover(true);\n  };\n\n  var handleMouseLeave = function handleMouseLeave() {\n    return handleHover(false);\n  };\n\n  var toggleExpanded = function toggleExpanded() {\n    isInternalExpand && setExpanded(isLoading || disabled ? false : !expanded);\n  };\n\n  var handleClearSelected = function handleClearSelected(e) {\n    e.stopPropagation();\n    contentProps[\"onChange\"]([]);\n    isInternalExpand && setExpanded(false);\n  };\n\n  return React.createElement(\"div\", {\n    tabIndex: 0,\n    className: DropdownContainer + \" dropdown-container\",\n    \"aria-labelledby\": labelledBy,\n    \"aria-expanded\": expanded,\n    \"aria-readonly\": true,\n    \"aria-disabled\": disabled,\n    ref: wrapper,\n    onKeyDown: handleKeyDown,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    onMouseEnter: handleMouseEnter,\n    onMouseLeave: handleMouseLeave\n  }, React.createElement(\"div\", {\n    className: DropdownHeading + \" dropdown-heading\",\n    onClick: toggleExpanded\n  }, React.createElement(\"div\", {\n    className: \"dropdown-heading-value\"\n  }, children), isLoading && React.createElement(Loading, null), contentProps[\"value\"].length > 0 && React.createElement(\"button\", {\n    type: \"button\",\n    className: ClearSelectedButton + \" clear-selected-button\",\n    onClick: handleClearSelected,\n    \"aria-label\": getString(\"clearSelected\", contentProps[\"overrideStrings\"])\n  }, ClearSelectedIcon || React.createElement(Cross, null)), React.createElement(FinalArrow, {\n    expanded: expanded\n  })), expanded && React.createElement(\"div\", {\n    className: PanelContainer + \" dropdown-content\"\n  }, React.createElement(\"div\", {\n    className: \"panel-content\"\n  }, React.createElement(ContentComponent, Object.assign({}, contentProps)))));\n};\n\nvar DropdownHeader = function DropdownHeader(_ref) {\n  var value = _ref.value,\n      options = _ref.options,\n      valueRenderer = _ref.valueRenderer,\n      overrideStrings = _ref.overrideStrings;\n  var noneSelected = value.length === 0;\n  var allSelected = value.length === options.length;\n  var customText = valueRenderer && valueRenderer(value, options);\n\n  var getSelectedText = function getSelectedText() {\n    return value.map(function (s) {\n      return s.label;\n    }).join(\", \");\n  };\n\n  return noneSelected ? React.createElement(\"span\", {\n    className: \"gray\"\n  }, customText || getString(\"selectSomeItems\", overrideStrings)) : React.createElement(\"span\", null, customText || (allSelected ? getString(\"allItemsAreSelected\", overrideStrings) : getSelectedText()));\n};\n\nvar MultiSelectBox = /*#__PURE__*/css({\n  \"--rmscMain\": \"#4285f4\",\n  \"--rmscHover\": \"#f1f3f5\",\n  \"--rmscSelected\": \"#e2e6ea\",\n  \"--rmscBorder\": \"#ccc\",\n  \"--rmscGray\": \"#aaa\",\n  \"--rmscBg\": \"#fff\",\n  \"--rmscP\": \"10px\",\n  \"--rmscRadius\": \"4px\",\n  \"--rmscH\": \"38px\",\n  \"*\": {\n    boxSizing: \"border-box\",\n    transition: \"all 0.2s ease\"\n  },\n  \".gray\": {\n    color: \"var(--rmsc-gray)\"\n  }\n});\n\nvar MultiSelect = function MultiSelect(_ref) {\n  var _ref$focusSearchOnOpe = _ref.focusSearchOnOpen,\n      focusSearchOnOpen = _ref$focusSearchOnOpe === void 0 ? true : _ref$focusSearchOnOpe,\n      _ref$hasSelectAll = _ref.hasSelectAll,\n      hasSelectAll = _ref$hasSelectAll === void 0 ? true : _ref$hasSelectAll,\n      shouldToggleOnHover = _ref.shouldToggleOnHover,\n      _ref$className = _ref.className,\n      className = _ref$className === void 0 ? \"multi-select\" : _ref$className,\n      options = _ref.options,\n      value = _ref.value,\n      valueRenderer = _ref.valueRenderer,\n      overrideStrings = _ref.overrideStrings,\n      onChange = _ref.onChange,\n      disabled = _ref.disabled,\n      ItemRenderer = _ref.ItemRenderer,\n      ArrowRenderer = _ref.ArrowRenderer,\n      selectAllLabel = _ref.selectAllLabel,\n      isLoading = _ref.isLoading,\n      disableSearch = _ref.disableSearch,\n      filterOptions = _ref.filterOptions,\n      labelledBy = _ref.labelledBy,\n      onMenuToggle = _ref.onMenuToggle,\n      ClearIcon = _ref.ClearIcon,\n      _ref$debounceDuration = _ref.debounceDuration,\n      debounceDuration = _ref$debounceDuration === void 0 ? 300 : _ref$debounceDuration,\n      ClearSelectedIcon = _ref.ClearSelectedIcon,\n      defaultIsOpen = _ref.defaultIsOpen,\n      isOpen = _ref.isOpen;\n  var nvalue = value || [];\n  return React.createElement(\"div\", {\n    className: MultiSelectBox + \" \" + className\n  }, React.createElement(Dropdown, {\n    isLoading: isLoading,\n    contentComponent: SelectPanel,\n    shouldToggleOnHover: shouldToggleOnHover,\n    contentProps: {\n      ItemRenderer: ItemRenderer,\n      options: options,\n      value: nvalue,\n      hasSelectAll: hasSelectAll,\n      selectAllLabel: selectAllLabel,\n      onChange: onChange,\n      disabled: disabled,\n      disableSearch: disableSearch,\n      focusSearchOnOpen: focusSearchOnOpen,\n      filterOptions: filterOptions,\n      overrideStrings: overrideStrings,\n      ClearIcon: ClearIcon,\n      debounceDuration: debounceDuration\n    },\n    disabled: disabled,\n    labelledBy: labelledBy,\n    onMenuToggle: onMenuToggle,\n    ArrowRenderer: ArrowRenderer,\n    ClearSelectedIcon: ClearSelectedIcon,\n    defaultIsOpen: defaultIsOpen,\n    isOpen: isOpen\n  }, React.createElement(DropdownHeader, {\n    value: nvalue,\n    options: options,\n    valueRenderer: valueRenderer,\n    overrideStrings: overrideStrings\n  })));\n};\n\nexport default MultiSelect;\nexport { Dropdown, SelectItem, SelectPanel };\n//# sourceMappingURL=react-multi-select-component.esm.js.map\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { PanelBody, PanelRow, Slot } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Fragment } from '@wordpress/element';\nimport { addFilter, applyFilters } from '@wordpress/hooks';\nimport { InspectorControls } from '@wordpress/blockEditor';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityRulesEnabled } from './content-visibility-rules-enabled';\nimport { ContentVisibilityDisplayedControl } from './content-visibility-displayed-control';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const contentVisibilityControls = createHigherOrderComponent((BlockEdit) => {\n\n    return (props) => {\n\n        if (!isValidBlockType(props.name) || !props.isSelected) {\n            return <BlockEdit {...props} />;\n        }\n\n        // Add a class to the div contining the rules so we can show/hide them when they are enabled/disabled.\n        // Normally this would be props.attributes.contentVisibilityRules for anything registered in core, or in JS. However, as it's\n        // possible to register attributes in PHP _alone_ we need to look at props.block.attributes.contentVisibilityRules -- both\n        // get updated when a block is updated.\n        let showControls = (props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled) ? 'show-controls' : 'hide-controls';\n\n        return (\n            <Fragment>\n                <BlockEdit {...props} />\n                <InspectorControls>\n                    <PanelBody title={__('Visibility', 'content-visibility')} className=\"content-visibility-controls\" initialOpen={false}>\n\n                        <PanelRow className=\"content-visibility-rules-enabled\">\n                            <ContentVisibilityRulesEnabled props={props} />\n                        </PanelRow>\n\n                        <div className={showControls + \" content-visibility-controls-container\"}>\n                            <PanelRow className=\"content-visibility-displayed-control\">\n                                <ContentVisibilityDisplayedControl props={props} />\n                            </PanelRow>\n\n                            <Slot name=\"content-visibility-extra-controls\" fillProps={props} />\n                        </div>\n\n                    </PanelBody>\n                </InspectorControls>\n            </Fragment>\n        );\n\n    };\n}, 'contentVisibilityControls');\n\naddFilter('editor.BlockEdit', 'content-visibility/content-visibility-controls', contentVisibilityControls);\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesAttribute(settings) {\n\n    // If this is a valid block\n    if (isValidBlockType(settings.name)) {\n\n        // Run the rules through a filter so we're able to add rules externally.\n        let defaultRules = applyFilters('contentVisibility.defaultContentVisibilityRules', {\n            contentVisibilityRulesEnabled: false,\n            userAuthenticated: ''\n        });\n\n        // Use Lodash's assign to gracefully handle if attributes are undefined\n        settings.attributes = assign(settings.attributes, {\n            contentVisibilityRules: {\n                type: 'object',\n                default: defaultRules\n            },\n        });\n    }\n\n    return settings;\n\n}// end addContentVisibilityRulesAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesPropOnSave(extraProps, blockType, attributes) {\n\n    // If the current block is valid, add our prop.\n    if (isValidBlockType(blockType.name)) {\n        extraProps.contentVisibilityRules = attributes.contentVisibilityRules;\n    }\n\n    return extraProps;\n\n}// end addContentVisibilityRulesPropOnSave()\n\naddFilter('blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesAttribute', addContentVisibilityRulesAttribute);\naddFilter('blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesPropOnSave', addContentVisibilityRulesPropOnSave);","import { Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\n\nimport assign from 'lodash/assign';\n\nimport { ContentVisibilityShownHiddenControl } from './shown-or-hidden/content-visibility-shown-hidden-control';\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityDisplayedControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n\n    if ( ! rulesEnabled ) {\n        return (\n            <Disabled>\n                <ContentVisibilityShownHiddenControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityShownHiddenControl props={ props } />\n    );\n\n} );\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibility: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addBlockVisibilityPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibility = attributes.contentVisibility;\n\t}\n\n\treturn extraProps;\n\n}// end addBlockVisibilityPropOnSave()\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityAttribute', addContentVisibilityAttribute );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addBlockVisibilityPropOnSave', addBlockVisibilityPropOnSave );","import { ToggleControl } from '@wordpress/components';\nimport { withState, createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter, doAction } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\n\nimport assign from 'lodash/assign';\n\nimport isValidBlockType from '../helpers/is-valid-blocktype';\n\nexport const ContentVisibilityRulesEnabled = withState( {\n    rulesEnabled: false,\n} )( ( { rulesEnabled, setState, props } ) => (\n    <ToggleControl\n        label={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ? __( 'Rules Enabled', 'content-visibility' ) : __( 'Rules Disabled', 'content-visibility' ) }\n        checked={ props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled || rulesEnabled }\n        onChange={ ( rulesEnabled ) => setState( ( state ) => {\n\n            let newBVRules = { ...props.attributes.contentVisibilityRules };\n            newBVRules.contentVisibilityRulesEnabled = rulesEnabled;\n\n            props.setAttributes( {\n                contentVisibilityRules: newBVRules,\n            } );\n\n            // Fire an action so we can see what's happened in other controls. This can be useful,\n            // for example when setting rules for roles - pointless if a user isn't signed in.\n            doAction( 'contentVisibility.onChange.contentVisibilityRulesEnabled', 'content-visibility/onChange', rulesEnabled, props );\n\n            // Sets the state\n            return (\n                { rulesEnabled: ! state.rulesEnabled }\n            );\n        } ) }\n    />\n) );\n\n\n/**\n * Filters registered block settings, extending attributes with our custom data.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addContentVisibilityRulesEnabledAttribute( settings ) {\n\n\t// If this is a valid block\n\tif ( isValidBlockType( settings.name ) ) {\n\n\t\t// Use Lodash's assign to gracefully handle if attributes are undefined\n\t\tsettings.attributes = assign( settings.attributes, {\n\t\t\tcontentVisibilityRulesEnabled: {\n\t\t\t\ttype: 'boolean',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n\n}// end addContentVisibilityRulesEnabledAttribute()\n\n/**\n * Override props assigned to save component to inject our custom data.\n * This is only done if the component is a valid block type.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType  Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addContentVisibilityRulesEnabledPropOnSave( extraProps, blockType, attributes ) {\n\n\t// If the current block is valid, add our prop.\n\tif ( isValidBlockType( blockType.name ) ) {\n\t\textraProps.contentVisibilityRulesEnabled = attributes.contentVisibilityRulesEnabled;\n    }\n\n\treturn extraProps;\n\n}// end addContentVisibilityRulesEnabledPropOnSave()\n\n/**\n * Add a custom class name to each block that has content visibility rules enabled.\n *\n * @param {Object} BlockListBlock The current block\n *\n * @return {Object} The block with a custom class name added if the block has rules enabled. The unmodified block otherwise.\n */\nconst withCustomClassName = createHigherOrderComponent( ( BlockListBlock ) => {\n\n    return ( props ) => {\n\n        if ( ! props.attributes.contentVisibility || ! props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled ) {\n            return <BlockListBlock {...props} />;\n        }\n\n        let iconClassName = 'content-visibility-rules-enabled-' + props.attributes.contentVisibility;\n\n        return <BlockListBlock {...props} className={ iconClassName } />\n\n    };\n}, 'withCustomClassName' );\n\naddFilter( 'blocks.registerBlockType', 'content-visibility/addContentVisibilityRulesEnabledAttribute', addContentVisibilityRulesEnabledAttribute, 999 );\naddFilter( 'blocks.getSaveContent.extraProps', 'content-visibility/addContentVisibilityRulesEnabledPropOnSave', addContentVisibilityRulesEnabledPropOnSave, 999 );\n\naddFilter( 'editor.BlockListBlock', 'content-visibility/add-class-name-for-blocks-with-rules', withCustomClassName, 999 );","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilityUserAuthenticationPanelBodyControl } from './user-authentication/user-authentication-panel-body-control';\n\n\nexport const ContentVisibilityUserAuthenticationControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled><ContentVisibilityUserAuthenticationPanelBodyControl props={ props } /></Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilityUserAuthenticationPanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilityUserAuthenticationControl> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilityUserAuthenticationControl component.\n */\nfunction BlockVisibilityUserAuthenitcationFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilityUserAuthenticationControl props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Add our component to the Slot provided by BlockVisibilityControls\nregisterPlugin( 'content-visibility-01-user-authentication-fill', { render: BlockVisibilityUserAuthenitcationFill } );\n","import MultiSelect from \"react-multi-select-component\";\nimport { withState } from '@wordpress/compose';\n\n/**\n * Reusable, accessible multi-select component which includes a fuzzy search, select all/none using the react-multi-select-component\n * by Harsh Zalavadiya : https://github.com/harshzalavadiya/react-multi-select-component#readme.\n *\n * I've expanded it slightly, by allowing the data passed in to accept an `icon` property which should be a WordPress Icon compnent.\n *\n * Requires passing in the onChange function to handle data saving. i.e. import this component and then use it like:\n *\n * ```\n * <ContentVisibilityMultiSelect data={ fruits } labelledBy=\"Select Page Type\" props={ props } onChange={ onChange } />\n * ```\n *\n * the `onChange` function can look like this:\n *\n * ```\n * const onChange = ( option ) => {\n *     // Set the state and props.\n *     setState( { option } );\n *     props.setAttributes( {\n *         contentVisibilityRules: {\n *             ...props.attributes.contentVisibilityRules,\n *             specialPage: {\n *                 ...props.attributes.contentVisibilityRules.specialPage,\n *                 pages: option\n *             }\n *         },\n *     } );\n *\n * }\n * ```\n *\n * `data` should be an array of objects which contains label (string), a value (string) and an optional icon (WordPress Icon compnent)\n */\n\nexport const ContentVisibilityMultiSelect = withState( {\n    option: [],\n} )( ( { option, setState, props, data, labelledBy, type } ) => {\n\n    /**\n     * onChange callback for the ContentVisibilityMultiSelect component. This handles setting the props and state for\n     * this instance of the component.\n     * \n     * @param {array} option current value of what is selected.\n     */\n    const onChange = ( option ) => {\n\n        // Set the state and props.\n        setState( { option } );\n\n        props.setAttributes( {\n            contentVisibilityRules: {\n                ...props.attributes.contentVisibilityRules,\n                specialPage: {\n                    ...props.attributes.contentVisibilityRules.specialPage,\n                    [type]: option\n                }\n            },\n        } );\n\n    };\n\n    return (\n        <div className=\"content-visibility-multi-select\">\n            <MultiSelect\n                options={ data }\n                value={ props.attributes.contentVisibilityRules.specialPage[type] || option }\n                onChange={ onChange }\n                labelledBy={ labelledBy }\n                ItemRenderer={ ( { checked, option, onClick, disabled, } ) => {\n                    return (\n                        <div className={`item-renderer content-visibility-multi-select-item ${disabled && \"disabled\"}`}>\n                            <input type=\"checkbox\" onChange={ onClick } checked={ checked } tabIndex={ -1 } disabled={ disabled } />\n                            <span>{option.icon || \"\"} {option.label}</span>\n                        </div>\n                    );\n                } }\n                // isOpen={ true }\n            />\n        </div>\n    );\n\n} );","import { RadioControl, PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nexport const ContentVisibilityShownHiddenControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Shown or Hidden', 'content-visibility-user-role' ) }\n            initialOpen={ true }\n            className=\"content-visibility-control-panel content-visibility-user-role-controls\"\n        >\n            <PanelRow>\n                <RadioControl\n                    label={ __( \"When the rules below are true, this block will be: \", 'content-visibility' ) }\n                    help=\"\"\n                    selected={ props.attributes.contentVisibility || option }\n                    options={ [\n                        { label: __( 'Shown', 'content-visibility' ), value: 'shown' },\n                        { label: __( 'Hidden', 'content-visibility' ), value: 'hidden' },\n                    ] }\n                    onChange={ ( option ) => {\n\n                        setState( { option } );\n\n                        props.setAttributes( {\n                            contentVisibility: option,\n                        } );\n\n                    } }\n                />\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","import { Button, Popover, Icon, HorizontalRule, IconButton } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport getPages from '../../helpers/get-pages';\nimport keepPopupOpen from '../../helpers/keep-popup-open';\nimport { __ } from '@wordpress/i18n';\n\nimport specialPagesInsertText from '../../helpers/special-page-insert-text';\nimport specialPagesInsertButtonClass from '../../helpers/special-pages-insert-button-class';\n\nimport { ContentVisibilityMultiSelect } from '../multiselect/content-visibility-multiselect';\n\nconst PagePageInserter = withState( {\n    isVisible: false,\n} )( ( { isVisible, setState, props } ) => {\n\n    /**\n     * Our data, passed from PHP and manipulated to be useful here in JS.\n     */\n    const data = getPages();\n\n    /**\n     * This controls the key used where the data is stored.\n     */\n    const type = 'pages';\n\n    /**\n     * Helps with the content of the inserter button.\n     */\n    const niceName = {\n        singular: __( 'Page', 'content-visibility' ),\n        plural: __( 'Pages', 'content-visibility' ),\n    }\n\n    /**\n     * Toggle the visible state. Detemines whether the popup is open or not.\n     */\n    const toggleVisible = () => {\n        setState( ( state ) => ( { isVisible: ! state.isVisible } ) );\n    };\n\n    return (\n        <div className=\"content-visibility-special-page-inserter\">\n            <Icon icon=\"networking\" iconSize=\"12\" />\n            <Button isSecondary isSmall isLink onClick={ toggleVisible } className={ specialPagesInsertButtonClass( props, type ) }>\n                { specialPagesInsertText( props, type, __( 'Select specific pages', 'content-visibility' ), niceName ) }\n                { isVisible && (\n                    <Popover position=\"middle left\" className=\"content-visibility-special-page-help-instructions-popover\" onClick={keepPopupOpen}>\n\n                        <h1>{ __( 'Select Pages', 'content-visibility' ) }</h1>\n\n                        <p className=\"content-visibility-help-text\">{ __( 'Select the pages upon which you would like this block to be ', 'content-visibility' ) + props.attributes.contentVisibility }</p>\n                        <ContentVisibilityMultiSelect data={ data } labelledBy=\"Select Page\" props={ props } type={ type } />\n                        <p className=\"content-visibility-submit-special-pages-button-container\">\n                            <Button isPrimary className=\"content-visibility-submit-special-pages\" onClick={toggleVisible}>{ __( 'Set Selected', 'content-visibility' ) }</Button>\n                        </p>\n\n                        <HorizontalRule />\n\n                        <p><Icon icon=\"editor-help\" iconSize=\"12\" /> <strong>{ __( 'Help', 'content-visibility' ) }</strong></p>\n                        <p>{ __( `Selecting one or more pages from this list will mean that this block will only be ${props.attributes.contentVisibility} on those pages. If you want this block to be ${props.attributes.contentVisibility} on ALL pages, please use the 'Special Pages' option and select 'Any Page'`, 'content-visibility' ) }</p>\n\n                        <IconButton className=\"content-visibility-close-popover\" icon=\"no\" label={ __( 'Close', 'content-visibility' ) } onClick={ toggleVisible } />\n                    </Popover>\n                ) }\n            </Button>\n        </div>\n    );\n} );\n\nexport default PagePageInserter;","import { Button, Popover, Icon, HorizontalRule, IconButton } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport getPosts from '../../helpers/get-posts';\nimport keepPopupOpen from '../../helpers/keep-popup-open';\nimport { __ } from '@wordpress/i18n';\n\nimport specialPagesInsertText from '../../helpers/special-page-insert-text';\nimport specialPagesInsertButtonClass from '../../helpers/special-pages-insert-button-class';\n\nimport { ContentVisibilityMultiSelect } from '../multiselect/content-visibility-multiselect';\n\nconst PostPageInserter = withState( {\n    isVisible: false,\n} )( ( { isVisible, setState, props } ) => {\n\n    /**\n     * Our data, passed from PHP and manipulated to be useful here in JS.\n     */\n    const data = getPosts();\n\n    /**\n     * This controls the key used where the data is stored.\n     */\n    const type = 'posts';\n\n    /**\n     * Helps with the content of the inserter button.\n     */\n    const niceName = {\n        singular: __( 'Post', 'content-visibility' ),\n        plural: __( 'Posts', 'content-visibility' ),\n    }\n\n    /**\n     * Toggle the visible state. Detemines whether the popup is open or not.\n     */\n    const toggleVisible = () => {\n        setState( ( state ) => ( { isVisible: ! state.isVisible } ) );\n    };\n\n    return (\n        <div className=\"content-visibility-special-page-inserter\">\n            <Icon icon=\"admin-post\" iconSize=\"12\" />\n            <Button isSecondary isSmall isLink onClick={ toggleVisible } className={ specialPagesInsertButtonClass( props, type ) }>\n                { specialPagesInsertText( props, type, __( 'Select specific posts', 'content-visibility' ), niceName ) }\n                { isVisible && (\n                    <Popover position=\"middle left\" className=\"content-visibility-special-page-help-instructions-popover\" onClick={keepPopupOpen}>\n\n                        <h1>{ __( 'Select Posts', 'content-visibility' ) }</h1>\n\n                        <p className=\"content-visibility-help-text\">{ __( 'Select the posts upon which you would like this block to be ', 'content-visibility' ) + props.attributes.contentVisibility }</p>\n                        <ContentVisibilityMultiSelect data={ data } labelledBy=\"Select Page\" props={ props } type={ type } />\n                        <p className=\"content-visibility-submit-special-pages-button-container\">\n                            <Button isPrimary className=\"content-visibility-submit-special-pages\" onClick={toggleVisible}>{ __( 'Set Selected', 'content-visibility' ) }</Button>\n                        </p>\n\n                        <HorizontalRule />\n\n                        <p><Icon icon=\"editor-help\" iconSize=\"12\" /> <strong>{ __( 'Help', 'content-visibility' ) }</strong></p>\n                        <p>{ __( `Selecting one or more posts from this list will mean that this block will only be ${props.attributes.contentVisibility} on those posts. If you want this block to be ${props.attributes.contentVisibility} on ALL posts, please use the 'Special Pages' option and select 'Any Post'`, 'content-visibility' ) }</p>\n\n                        <IconButton className=\"content-visibility-close-popover\" icon=\"no\" label={ __( 'Close', 'content-visibility' ) } onClick={ toggleVisible } />\n                    </Popover>\n                ) }\n            </Button>\n        </div>\n    );\n} );\n\nexport default PostPageInserter;","import { Fill, Disabled } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { registerPlugin } from '@wordpress/plugins';\nimport { ContentVisibilitySpecialPagePanelBodyControl } from './content-visibility-special-page-panel';\n\n\nexport const ContentVisibilitySpecialPageControls = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    let rulesEnabled    = props.attributes.contentVisibilityRules.contentVisibilityRulesEnabled;\n    let contentVisibility = props.attributes.hasOwnProperty( 'contentVisibility' );\n\n    if ( ! rulesEnabled || ! contentVisibility ) {\n        return (\n            <Disabled>\n                <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n            </Disabled>\n        );\n    }\n\n    return (\n        <ContentVisibilitySpecialPagePanelBodyControl props={ props } />\n    );\n\n} );\n\n/**\n * Render the <ContentVisibilitySpecialPageControls> component by adding\n * it to the block-visibility-extra-controls Fill.\n *\n * @return {Object} A Fill component wrapping the ContentVisibilitySpecialPageControls component.\n */\nfunction ContentVisibilitySpecialPageFill() {\n    return (\n        <Fill name=\"content-visibility-extra-controls\">\n            {\n                ( fillProps ) => {\n                    return (\n                        <ContentVisibilitySpecialPageControls props={ fillProps } />\n                    )\n                }\n            }\n        </Fill>\n    );\n\n}\n\n// Only load the Widgets-related controls on the widgets screen or we're local, due to Widgets Screen bug.\nif ( 'appearance_page_gutenberg-widgets' === ContentVisibility.screen || '1' === ContentVisibility.local ) {\n    // Add our component to the Slot provided by BlockVisibilityControls\n    registerPlugin( 'content-visibility-04-special-page-fill', { render: ContentVisibilitySpecialPageFill } );\n}\n","import { Button, Popover, Icon, HorizontalRule, IconButton } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport getSpecialPages from '../../helpers/get-special-pages';\nimport keepPopupOpen from '../../helpers/keep-popup-open';\nimport { __ } from '@wordpress/i18n';\n\nimport specialPagesInsertText from '../../helpers/special-page-insert-text';\nimport specialPagesInsertButtonClass from '../../helpers/special-pages-insert-button-class';\n\nimport { ContentVisibilityMultiSelect } from '../multiselect/content-visibility-multiselect';\n\nconst SpecialPagePageInserter = withState( {\n    isVisible: false,\n} )( ( { isVisible, setState, props } ) => {\n\n    /**\n     * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages\n     * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.\n     */\n    const specialPages = getSpecialPages();\n\n    /**\n     * This controls the key used where the data is stored.\n     */\n    const type = 'specialPages';\n\n    /**\n     * Helps with the content of the inserter button.\n     */\n    const niceName = {\n        singular: __( 'Special Page', 'content-visibility' ),\n        plural: __( 'Special Pages', 'content-visibility' ),\n    }\n\n    /**\n     * Toggle the visible state. Detemines whether the popup is open or not.\n     */\n    const toggleVisible = () => {\n        setState( ( state ) => ( { isVisible: ! state.isVisible } ) );\n    };\n\n    return (\n        <div className=\"content-visibility-special-page-inserter\">\n            <Icon icon=\"text-page\" iconSize=\"12\" />\n            <Button isSecondary isSmall isLink onClick={ toggleVisible } className={ specialPagesInsertButtonClass( props, type ) }>\n                { specialPagesInsertText( props, type, __( 'Select special pages', 'content-visibility' ), niceName ) }\n                { isVisible && (\n                    <Popover position=\"middle left\" className=\"content-visibility-special-page-help-instructions-popover\" onClick={keepPopupOpen}>\n\n                        <h1>{ __( 'Insert Special Pages', 'content-visibility' ) }</h1>\n\n                        <p className=\"content-visibility-help-text\">{ __( 'Select the special pages upon which you would like this block to be ', 'content-visibility' ) + props.attributes.contentVisibility }</p>\n                        <ContentVisibilityMultiSelect data={ specialPages } labelledBy=\"Select Page Type\" props={ props } type={ type } />\n                        <p className=\"content-visibility-submit-special-pages-button-container\">\n                            <Button isPrimary className=\"content-visibility-submit-special-pages\" onClick={toggleVisible}>{ __( 'Set Selected', 'content-visibility' ) }</Button>\n                        </p>\n\n                        <HorizontalRule />\n\n                        <p><Icon icon=\"editor-help\" iconSize=\"12\" /> <strong>{ __( 'What are Special Pages?', 'content-visibility' ) }</strong></p>\n                        <p>{ __( 'By default, WordPress websites contain more than just the posts and pages you create here in the dashboard. Content Visibility allows you to display your blocks on any of the following types of pages that your theme can make available to your visitors. ', 'content-visibility-special-page' ) }</p>\n\n                        { specialPages.map( specialPage => (\n                            <p><span>{ specialPage.label }</span>: { specialPage.notes }</p>\n                        ) ) }\n\n                        <IconButton className=\"content-visibility-close-popover\" icon=\"no\" label={ __( 'Close', 'content-visibility' ) } onClick={ toggleVisible } />\n                    </Popover>\n                ) }\n            </Button>\n        </div>\n    );\n} );\n\nexport default SpecialPagePageInserter;","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\n\nimport SpecialPagePageInserter from './content-visibility-special-page-page-inserter';\nimport PagePageInserter from './content-visibility-page-page-inserter';\nimport PostPageInserter from './content-visibility-post-page-inserter';\n\nexport const ContentVisibilitySpecialPagePanelBodyControl = withState( {\n    option: [],\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'Special Page', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel block-visibility-special-page-controls\"\n        >\n\n            <PanelRow className=\"content-visibility-page-inserter-panel-row\">\n                <SpecialPagePageInserter props={ props } />\n                <PagePageInserter props={ props } />\n                <PostPageInserter props={ props } />\n            </PanelRow>\n\n            { props.attributes.contentVisibility && (\n                <p className=\"special-page-help-intro content-visibility-help-text\">\n                    { __( 'Select the types of content upon which this block will be ' + props.attributes.contentVisibility + '.', 'content-visibility' ) }\n                </p>\n            ) }\n\n        </PanelBody>\n    );\n\n} );\n\n// Register our visibility rule in the main rules object.\naddFilter( 'contentVisibility.defaultContentVisibilityRules', 'content-visibility-special-page/block-visibility-rules', registerSpecialPageVisibilityRule );\n\nfunction registerSpecialPageVisibilityRule( defaultRules ) {\n\n    defaultRules.specialPage = {\n        pages: [],\n        specialPages: [],\n        posts: []\n    };\n\n    return defaultRules;\n\n}","import { RadioControl } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { doAction } from '@wordpress/hooks';\n\nexport const ContentVisibilityUserAuthenticationRadioControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n\n        <RadioControl\n            label=''\n            help=''\n            className=\"content-visibility-user-authenticated-control\"\n            selected={ props.attributes.contentVisibilityRules.userAuthenticated || option }\n            options={ [\n                { label: __( 'Signed Out', 'content-visibility' ), value: 'logged-out' },\n                { label: __( 'Signed In', 'content-visibility' ), value: 'logged-in' },\n            ] }\n            onChange={ ( option ) => {\n\n                // Set the state and props.\n                setState( { option } );\n\n                let newBVRules = { ...props.attributes.contentVisibilityRules };\n                newBVRules.userAuthenticated = option;\n\n                props.setAttributes( {\n                    contentVisibilityRules: newBVRules,\n                } );\n\n                // Fire an action so we can see what's happened in other controls. This can be useful,\n                // for example when setting rules for roles - pointless if a user isn't signed in.\n                doAction( 'contentVisibility.onChange.userAuthenticated', 'content-visibility/onChange', option, props );\n\n            } }\n        />\n\n    );\n\n} );","import { PanelBody, PanelRow } from '@wordpress/components';\nimport { withState } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\nimport { ContentVisibilityUserAuthenticationRadioControl } from './content-visibility-user-authentication-radio-control';\n\nexport const ContentVisibilityUserAuthenticationPanelBodyControl = withState( {\n    option: '',\n} )( ( { option, setState, props } ) => {\n\n    return (\n        <PanelBody\n            title={ __( 'User Authentication', 'content-visibility' ) }\n            initialOpen={ false }\n            className=\"content-visibility-control-panel content-visibility-user-authenticated-controls\"\n        >\n            <PanelRow>\n                <ContentVisibilityUserAuthenticationRadioControl props={ props } />\n\n                { props.attributes.contentVisibility && (\n                    <p className=\"user-auth-help-intro content-visibility-help-text\">\n                        { __( 'Select whether this block will be ' + props.attributes.contentVisibility + ' if a user is signed in to this site. If neither is selected, this block will be ' + props.attributes.contentVisibility + ' regardless of whether a user is signed in or not.', 'content-visibility-user-role' ) }\n                    </p>\n                ) }\n\n            </PanelRow>\n        </PanelBody>\n    );\n\n} );","// extracted by mini-css-extract-plugin","import { __ } from '@wordpress/i18n';\n\n/**\n * PHP sends through a list of all the pages on the site (in any status). We massage that data to be\n * usable by our Dropdown.\n *\n */\nfunction getPages() {\n\n    const pages = [];\n\n    if ( ContentVisibility.pages.length === 0 ) {\n        return [ {\n            label: __( 'No pages found.', 'content-visibility' ),\n            value: 0,\n            notes: '',\n        } ]\n    }\n\n    for ( const page in ContentVisibility.pages ) {\n    \n        pages.push( { \n            label: ContentVisibility.pages[page].label,\n            value: ContentVisibility.pages[page].id,\n            notes: ContentVisibility.pages[page].notes\n        } );\n    \n    }\n\n    return pages;\n\n}// end getPages()\n\nexport default getPages;","import { __ } from '@wordpress/i18n';\n\n/**\n * PHP sends through a list of all the posts on the site (in any status). We massage that data to be\n * usable by our Dropdown.\n *\n */\nfunction getPosts() {\n\n    const posts = [];\n\n    if ( ContentVisibility.posts.length === 0 ) {\n        return [ {\n            label: __( 'No posts found.', 'content-visibility' ),\n            value: 0,\n            notes: '',\n        } ]\n    }\n\n    for ( const post in ContentVisibility.posts ) {\n    \n        posts.push( { \n            label: ContentVisibility.posts[post].label,\n            value: ContentVisibility.posts[post].id,\n            notes: ContentVisibility.posts[post].notes\n        } );\n    \n    }\n\n    return posts;\n\n}// end getPosts()\n\nexport default getPosts;","import { Icon } from '@wordpress/components';\n\n/**\n * A list of special pages, their associated title and icon are passed in from PHP as ContentVisibility.specialPages\n * We manipulate this associative PHP array (which in turn becomes a JS object) into something usable for our dropdown.\n *\n */\nfunction getSpecialPages() {\n\n    const specialPages = [];\n\n    for ( const specialPage in ContentVisibility.specialPages ) {\n    \n        specialPages.push( { \n            label: ContentVisibility.specialPages[specialPage].label,\n            value: ContentVisibility.specialPages[specialPage].keyValue,\n            notes: ContentVisibility.specialPages[specialPage].notes,\n            icon: <Icon size=\"12\" icon={ ContentVisibility.specialPages[ specialPage ].icon } /> \n        } );\n    \n    }\n\n    return specialPages;\n\n}// end getSpecialPages()\n\nexport default getSpecialPages;","/**\n * Is the passed element a child of an element that has a class of the passed parentClassName.\n * From: https://codepen.io/ross-angus/pen/eYJRmZR\n *\n * @param {object} element The name of the block.\n * @param {string} parentClassName the name of the class on the parent to check for.\n */\nfunction hasParentWithClass( element, classname ) {\n\n    // SVGs are weird, man.\n    if ( typeof element.className !== 'object' && element.className.split(' ').indexOf(classname) >= 0 ) {\n        return true;\n    } else if ( element.tagName !== 'HTML' ) { // If you've reached the body, you've gone too far\n        return element.parentNode && hasParentWithClass( element.parentNode, classname );\n    } else {\n        return false;\n    }\n\n}//end hasParentWithClass()\n\nexport default hasParentWithClass;","/**\n * Is the passed block name one which supports our custom field?\n *\n * @param {string} name The name of the block.\n */\nfunction isValidBlockType( name ) {\n\n    const invalidBlockTypes = [\n        'something/unsupported',\n    ];\n\n    return ! invalidBlockTypes.includes( name );\n\n}// end isValidBlockType()\n\nexport default isValidBlockType;","import hasParentWithClass from './has-parent-with-class';\n\n/**\n * The Popup component closes if it loses focus by default. For us, we want to ensure it\n * stays open until someone intentially closes it via either setting the selected items,\n * pressing a close button, or clicking the button they initially used to open the popup.\n *\n * @param {event} event The click event.\n * @return null\n */\nconst keepPopupOpen = ( event ) => {\n\n    if ( false === event ) {\n        return;\n    }\n\n    // Determine if what has been clicked on is in the popover or not.\n    let eTarget = event.target;\n\n    if ( hasParentWithClass( eTarget, 'components-popover__content' ) ) {\n        event.stopPropagation();\n    }\n\n    return;\n};\n\nexport default keepPopupOpen;","import { __ } from '@wordpress/i18n';\n\n/**\n * Determine the text for the button which opens the popup for the special pages inserter. By default, if there are\n * no special pages selected, it will be 'Select special pages'. However, if there are special pages set, it will\n * say how many.\n *\n * @param object props the props for this current iteration of the inserter.\n * @param string type the key in the object data store for specialPages\n * @param string defaultVal the original, default, text for the button (which is shown we no special pages are selected)\n * @param object niceName the text-friendly versions of the type of special page. i.e. \"Special Pages\" as opposed to 'special-page'.\n *                        object contains a singular and plural property.\n * @return string the text to be used for the button.\n */\nconst specialPagesInsertText = ( props, type, defaultVal, niceName ) => {\n    \n    // if nothing is set, return a prompt to select special pages.\n    if ( props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0 ) {\n        return defaultVal;\n    }\n\n    let shownOrHidden     = props.attributes.contentVisibility;\n    let specialPages      = props.attributes.contentVisibilityRules.specialPage[type];    \n    let specialPagesCount = specialPages.length;\n\n    let niceType = ( specialPagesCount === 1 ) ? niceName.singular : niceName.plural;\n\n    let insertText = shownOrHidden + __( ' on ' ) + specialPagesCount  + ' ' + niceType;\n\n    return insertText;\n\n};\n\nexport default specialPagesInsertText;","/**\n * The class which is given to the button used to toggle the popover where people can select which content to select.\n * We add a 'has-items' class if someone has chosen at least one item.\n *\n * @return string\n */\nconst specialPagesInsertButtonClass = ( props, type ) => {\n\n    // If we don't have any items selected, just basic class.\n    if ( props.attributes.contentVisibilityRules.specialPage[type] === undefined || props.attributes.contentVisibilityRules.specialPage[type].length === 0 ) {\n        return 'content-visibility-special-page-inserter-toggle';\n    }\n\n    // We have some items selected, so we have a couple classes.\n    return 'content-visibility-special-page-inserter-toggle has-items';\n    \n};\n\nexport default specialPagesInsertButtonClass;","import './editor.scss';\nimport './style.scss';\n\nimport contentVisibilityControls from './controls/content-visibility-controls.js';\nimport ContentVisibilityUserAuthenticationControl from './controls/content-visibility-user-authentication';\nimport ContentVisibilitySpecialPageControls from './controls/special-page/content-visibility-special-page-controls';","(function() { module.exports = window[\"wp\"][\"blockEditor\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","(function() { module.exports = window[\"wp\"][\"compose\"]; }());","(function() { module.exports = window[\"wp\"][\"element\"]; }());","(function() { module.exports = window[\"wp\"][\"hooks\"]; }());","(function() { module.exports = window[\"wp\"][\"i18n\"]; }());","(function() { module.exports = window[\"wp\"][\"plugins\"]; }());","(function() { module.exports = window[\"React\"]; }());"],"sourceRoot":""}
  • content-visibility/trunk/content-visibility.php

    r2450785 r2471073  
    1111 * Plugin Name: Content Visibility
    1212 * Plugin URI:  https://richardtape.com/content-visibility/
    13  * Description: Decide when, where, and to whom your blocks are visible.
    14  * Version:     0.1.6
     13 * Description: Content Visibility allows you to decide when, where, and to whom your blocks are visible.
     14 * Version:     0.1.7
    1515 * Author:      Rich Tape
    1616 * Author URI:  https://richardtape.com/
  • content-visibility/trunk/includes/content-visibility.php

    r2443859 r2471073  
    3737    $bv_public->init();
    3838
     39    add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\\wp_enqueue_scripts__load_public_css' );
     40
    3941}//end plugins_loaded__bv_loader()
     42
     43/**
     44 * Load the public css file.
     45 *
     46 * @since 0.1.7
     47 * @return void
     48 */
     49function wp_enqueue_scripts__load_public_css() {
     50
     51    /**
     52     * Filter whether to load the public rules CSS file or not.
     53     *
     54     * At least as of right now, this file is literally for one line of CSS and theme authors may want to include it
     55     * in their own theme to prevent loading a whole file just for one little rule.
     56     *
     57     * @since 0.1.7
     58     *
     59     * @param bool  $load_public_css Should this file be loaded. Enqueued only if boolean true.
     60     */
     61    $load_public_css = (bool) apply_filters( 'content_visibility_load_public_css', true );
     62
     63    if ( true !== $load_public_css ) {
     64        return;
     65    }
     66
     67    wp_enqueue_style( 'content-visibility-public', plugins_url( 'includes/public/content-visibility-public.css', dirname( __FILE__ ) ) );
     68
     69}//end wp_enqueue_scripts__load_public_css()
     70
     71/**
     72 * An array of special pages; things like the 404, a search results page, a date archive etc. with their
     73 * associated callback function which determines if the current page is of this type.
     74 *
     75 * @since 0.1.6
     76 * @return array associative array containining a list of special pages. Keys are a slug for the special page. Values
     77 *               are an array containing a title, and a callback function to determine if the current page is this
     78 *               type of special page.
     79 */
     80function get_special_pages() {
     81
     82    /**
     83        * Do we do a generic 'single' or do we be more specific?
     84        *
     85        * See: https://developer.wordpress.org/themes/basics/conditional-tags/
     86    */
     87
     88    return array(
     89        '404'        => array(
     90            'label'    => __( '404 Error', 'content-visibility' ),
     91            'notes'    => __( 'The error page when someone goes to a URL that does not exist on your site.', 'content-visibility' ),
     92            'callback' => array( 'is_404' ),
     93            'icon'     => 'no',
     94            'keyValue' => '404',
     95        ),
     96        'search'     => array(
     97            'label'    => __( 'Search Results', 'content-visibility' ),
     98            'notes'    => __( 'The page shown when someone searches something on your site.', 'content-visibility' ),
     99            'callback' => array( 'is_search' ),
     100            'icon'     => 'search',
     101            'keyValue' => 'search',
     102        ),
     103        'date'       => array(
     104            'label'    => __( 'Date Archive', 'content-visibility' ),
     105            'notes'    => __( 'When someone looks at a time, day, week, month, or year listing of the posts on your site.', 'content-visibility' ),
     106            'callback' => array( 'is_date' ),
     107            'icon'     => 'calendar-alt',
     108            'keyValue' => 'date',
     109        ),
     110        'front-page' => array(
     111            'label'    => __( 'Front Page', 'content-visibility' ),
     112            'notes'    => __( 'When the front page of your site is being displayed, regardless of whether that is your blog (WordPress default) or a static page.', 'content-visibility' ),
     113            'callback' => array( 'is_front_page' ),
     114            'icon'     => 'slides',
     115            'keyValue' => 'front-page',
     116        ),
     117        'home'       => array(
     118            'label'    => __( 'Blog Home Page', 'content-visibility' ),
     119            'notes'    => __( 'When the blog home page is being displayed. By default this is the home page in WordPress, but if you have your home page set to be a static page (settings > reading) then this will only be when your blog page is being shown.', 'content-visibility' ),
     120            'callback' => array( 'is_home' ),
     121            'icon'     => 'admin-home',
     122            'keyValue' => 'home',
     123        ),
     124        'page'       => array(
     125            'label'    => __( 'Any Page', 'content-visibility' ),
     126            'notes'    => __( 'Any content that is a Page (not a post or custom post type)', 'content-visibility' ),
     127            'callback' => array( 'is_page' ),
     128            'icon'     => 'admin-page',
     129            'keyValue' => 'page',
     130        ),
     131        'post'       => array(
     132            'label'    => __( 'Any Post', 'content-visibility' ),
     133            'notes'    => __( 'Any content that is a Post', 'content-visibility' ),
     134            'callback' => array( 'is_singular', array( 'post' ) ),
     135            'icon'     => 'admin-post',
     136            'keyValue' => 'post',
     137        ),
     138        'category'   => array(
     139            'label'    => __( 'Category Archive', 'content-visibility' ),
     140            'notes'    => __( 'When someone looks at a list of posts that are in a certain category.', 'content-visibility' ),
     141            'callback' => array( 'is_category' ),
     142            'icon'     => 'category',
     143            'keyValue' => 'category',
     144        ),
     145        'tag'        => array(
     146            'label'    => __( 'Tag Archive', 'content-visibility' ),
     147            'notes'    => __( 'When someone looks at a list of posts that are have a tag.', 'content-visibility' ),
     148            'callback' => array( 'is_tag' ),
     149            'icon'     => 'tag',
     150            'keyValue' => 'tag',
     151        ),
     152    );
     153
     154}//end get_special_pages()
     155
     156/**
     157 * An array of pages with their associated callback function which determines if the current page is of this type.
     158 *
     159 * @since 0.1.7
     160 * @return array associative array containining a list of pages. Keys are the ID for the page. Values
     161 *               are an array containing a title, and a callback function to determine if the current page is this
     162 *               page.
     163 */
     164function get_pages() {
     165
     166    $pages_args = array(
     167        'post_status' => array( 'pending', 'draft', 'future', 'publish' ),
     168    );
     169
     170    $pages_args = apply_filters( 'content_visibility_get_pages_args', $pages_args );
     171
     172    $pages = \get_pages( $pages_args );
     173
     174    if ( false === $pages || empty( $pages ) ) {
     175        return array();
     176    }
     177
     178    $pages_data = array();
     179
     180    foreach ( $pages as $id => $page ) {
     181
     182        $page_id         = absint( $page->ID );
     183        $sanitized_title = sanitize_text_field( $page->post_title );
     184
     185        $title = ( empty( $sanitized_title ) ) ? __( '[This page has no title]', 'content-visibility' ) : $sanitized_title;
     186
     187        $pages_data[ $page_id ] = array(
     188            'label'    => $title,
     189            'id'       => $page_id,
     190            'callback' => array( 'is_page', array( $page_id ) ),
     191            'notes'    => '',
     192        );
     193    }
     194
     195    return $pages_data;
     196
     197}//end get_pages()
     198
     199/**
     200 * An array of posts with their associated callback function which determines if the current page is of this type.
     201 *
     202 * @since 0.1.7
     203 * @return array associative array containining a list of posts. Keys are the ID for the post. Values
     204 *               are an array containing a title, and a callback function to determine if the current page is this
     205 *               page.
     206 */
     207function get_posts() {
     208
     209    $posts_args = array(
     210        'post_status' => array( 'pending', 'draft', 'future', 'publish' ),
     211        'numberposts' => -1,
     212    );
     213
     214    $posts_args = apply_filters( 'content_visibility_get_posts_args', $posts_args );
     215
     216    $posts = \get_posts( $posts_args );
     217
     218    if ( false === $posts || empty( $posts ) ) {
     219        return array();
     220    }
     221
     222    $posts_data = array();
     223
     224    foreach ( $posts as $id => $post ) {
     225
     226        $post_id         = absint( $post->ID );
     227        $sanitized_title = sanitize_text_field( $post->post_title );
     228
     229        $title = ( empty( $sanitized_title ) ) ? __( '[This post has no title]', 'content-visibility' ) : $sanitized_title;
     230
     231        $posts_data[ $post_id ] = array(
     232            'label'    => $title,
     233            'id'       => $post_id,
     234            'callback' => array( 'is_post', array( $post_id ) ),
     235            'notes'    => '',
     236        );
     237    }
     238
     239    return $posts_data;
     240
     241}//end get_posts()
  • content-visibility/trunk/includes/editor/class-editor.php

    r2443982 r2471073  
    128128        $content_visibility_args = array( 'screen' => esc_js( get_current_screen()->id ) );
    129129
     130        if ( defined( 'CV_LOCAL' ) && true === constant( 'CV_LOCAL' ) ) {
     131            $content_visibility_args['local'] = true;
     132        }
     133
     134        $content_visibility_args['specialPages'] = \RichardTape\ContentVisibility\get_special_pages();
     135
     136        $content_visibility_args['pages'] = \RichardTape\ContentVisibility\get_pages();
     137
     138        $content_visibility_args['posts'] = \RichardTape\ContentVisibility\get_posts();
     139
    130140        wp_localize_script( 'content-visibility', 'ContentVisibility', $content_visibility_args );
    131141
     
    165175
    166176        // Thing to note here: it is not trivial to fetch post types that are 100% going to be used by the
    167         // block editor. This array contains a list of post types that can use the block editor. But because
    168         // it's not 100% sure (we'd need to check for 'supports' => 'editor') we should still check that the
    169         // block editor is active on the edit screen.
     177        // block editor. This array contains a list of post types that COULD use the block editor. But because
     178        // it's not 100% sure (we'd need to check for 'supports' => 'editor' which is the non-trivial part) we should
     179        // still check that the block editor is active on the edit screen.
    170180        return $other_post_types;
    171181
  • content-visibility/trunk/includes/public/class-public-rules.php

    r2443982 r2471073  
    5353        add_filter( 'content_visibility_rule_types_and_callbacks', array( $this, 'add_user_authenticated_callback' ), 5, 1 );
    5454
     55        // Register our special pages callback. This is for the widgets screen, but should also apply to full site editing.
     56        add_filter( 'content_visibility_rule_types_and_callbacks', array( $this, 'add_special_pages_callback' ), 5, 1 );
     57
    5558        /**
    5659         * Filter all of our registered rules and callbacks..
     
    8790
    8891    }//end add_user_authenticated_callback()
     92
     93
     94    /**
     95     * Callback which adds our special pages function to the list of rules.
     96     *
     97     * @param array $rule_types_and_callbacks Existing rules and callbacks.
     98     *
     99     * @return array modified rule types and callbacks with ours added.
     100     */
     101    public function add_special_pages_callback( $rule_types_and_callbacks ) {
     102
     103        require_once plugin_dir_path( __FILE__ ) . 'special-page/rule-logic-special-page.php';
     104
     105        $rule_types_and_callbacks['specialPage'] = 'RichardTape\ContentVisibility\rule_logic_special_page';
     106
     107        return $rule_types_and_callbacks;
     108
     109    }//end add_special_pages_callback()
    89110
    90111    /**
  • content-visibility/trunk/readme.txt

    r2450785 r2471073  
    44Tags: block, content, visibility
    55Requires at least: 5.0
    6 Tested up to: 5.6
    7 Stable tag: 0.1.6
     6Tested up to: 5.6.1
     7Stable tag: 0.1.7
    88Requires PHP: 7.0
    99License: GPLv2 or later
     
    3232Do you use columns and put other blocks in them? Content Visibility allows you to control both the 'nested' blocks (such as a paragraph block in a column block) or the 'parent' block themselves (perhaps hide an entire column for users who aren't signed in?). Other examples of nested blocks are the Group Block or if you use an accordion or tabs block; all work!
    3333
     34## Widgets
     35
     36Since version 0.1.7 you are now able to control the visibility of your widgets. As long as you have version 9.9 or above of the [Gutenberg plugin](https://wordpress.org/plugins/gutenberg/) you are able to use content visibility on all of your widgets, just like you can with all of your blocks in the content editor. Limit display of your widgets on specific URLs on your site. Want to show a specific text block to only people who are signed in and ONLY on search results? You got it.
     37
    3438## Coming Soon
    3539
    3640 - [ ] A way to set replacement content when a block is hidden
    37  - [ ] Ensure this works with the new 'widgets' screen (controls appear but functionality is currently blocked by [this gutenberg bug](https://github.com/WordPress/gutenberg/issues/27173))
    3841 - [ ] REST API exploration. Should be fine for non-authenticated requests, but need to dive deeper for auth'd requests
    3942 - [ ] Non-trivial dates. Think things like "Every Wednesday between 3pm and 4pm" or "First two weeks in November"
    4043 - [ ] Geolocation: Show this block only to users whose connection is in France
    4144 - [ ] Specific Users: Only show a block when a specific user is signed in
     45 - [ ] Specific 3rd-party plugin integrations. Show a block when someone has purchased something from your WooCommerce store. Or when someone has submitted a specific Gravity Form.
    4246 - [ ] Do you have any feature requests? [Let me know!](https://github.com/richardtape/content-visibility/issues/new)
    4347
     
    5054= What's with the logo? =
    5155
    52 It's a chameleon. A cool little creature which can change the way it appears - to make itself more or less visible. Seemed appropriate!
     56It's a chameleon. A cool little creature which can change the way it appears - to make itself more or less visible. Seemed appropriate! Also, your suspicions are correct; a designer, I am not.
    5357
    5458= Got a question? =
     
    6064
    6165== Changelog ==
     66
     67= 0.1.7 =
     68* Added content visibility to the block-editor based widgets screen currently only available with the Gutenberg plugin. Enables you to select which posts, pages, or special types of content (such as the 404 error, a search results page, a date archive etc.) where each widget will be shown or hidden.
    6269
    6370= 0.1.6 =
Note: See TracChangeset for help on using the changeset viewer.