From d8f809da23806839368ba3470bfbad38b927f4b4 Mon Sep 17 00:00:00 2001 From: Mike Wilkerson Date: Tue, 11 Dec 2018 13:53:50 -0800 Subject: [PATCH] Release 4.0.0-rc2 --- DEVELOPMENT.md | 15 +++++++++++---- admin/build/asset-manifest.json | 4 ++-- ...n.7648dcc4.chunk.js => main.06a5ea7b.chunk.js} | 4 ++-- admin/build/static/js/main.06a5ea7b.chunk.js.map | 1 + admin/build/static/js/main.7648dcc4.chunk.js.map | 1 - admin/package.json | 2 +- font-awesome.php | 2 +- includes/class-fontawesome.php | 2 +- readme.txt | 6 +++++- 9 files changed, 24 insertions(+), 13 deletions(-) rename admin/build/static/js/{main.7648dcc4.chunk.js => main.06a5ea7b.chunk.js} (64%) create mode 100644 admin/build/static/js/main.06a5ea7b.chunk.js.map delete mode 100644 admin/build/static/js/main.7648dcc4.chunk.js.map diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index a6f098114..bdfc56edc 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -220,9 +220,12 @@ $ svn stat If there are files with `!` status, that indicates they no longer exist and you should do `svn delete` on each of them. +If there are files with `?` status, that indicates they are being added and you should do `svn add` on each of them. + Pay attention to files under either `wp-svn/assets` or `wp-svn/trunk`. -Do an `svn add` on any _new_ files. +For example, every time the admin client is rebuilt and the bundle content changes, the hashes on the bundle file names +change. So you'll end up removing the old ones and adding the new ones. If there's an editor dotfile or other directory that should be ignored by `svn`, you can do something like this: @@ -277,7 +280,11 @@ From the `wp-svn` dir: $ svn ci -m 'Release 42.1.2' ``` -15. `git add` and `git commit` all that would have been changed so far: +15. Now update the Stable Tag in the `readme.txt` in the git repo + +Set it to `42.1.2` the new release tag. + +16. `git add` and `git commit` all that would have been changed so far: - `docs/` - `admin/build` @@ -286,12 +293,12 @@ $ svn ci -m 'Release 42.1.2' - `admin/package.json` - `readme.txt` -16. `git push` to GitHub remote +17. `git push` to GitHub remote Single release commits can be pushed directly to `master`. If there are several commits, push to a topic branch and squash/merge them into `master` as a single commit. -17. Create a GitHub release that tags that new release commit +18. Create a GitHub release that tags that new release commit ## Run a Local Docs Server diff --git a/admin/build/asset-manifest.json b/admin/build/asset-manifest.json index 290ce91e1..4d11a4100 100644 --- a/admin/build/asset-manifest.json +++ b/admin/build/asset-manifest.json @@ -1,7 +1,7 @@ { "main.css": "/static/css/main.91ed8516.chunk.css", - "main.js": "/static/js/main.7648dcc4.chunk.js", - "main.js.map": "/static/js/main.7648dcc4.chunk.js.map", + "main.js": "/static/js/main.06a5ea7b.chunk.js", + "main.js.map": "/static/js/main.06a5ea7b.chunk.js.map", "static/js/1.548e2ad2.chunk.js": "/static/js/1.548e2ad2.chunk.js", "static/js/1.548e2ad2.chunk.js.map": "/static/js/1.548e2ad2.chunk.js.map", "runtime~main.js": "/static/js/runtime~main.229c360f.js", diff --git a/admin/build/static/js/main.7648dcc4.chunk.js b/admin/build/static/js/main.06a5ea7b.chunk.js similarity index 64% rename from admin/build/static/js/main.7648dcc4.chunk.js rename to admin/build/static/js/main.06a5ea7b.chunk.js index a95b45e18..5f9d52ef2 100644 --- a/admin/build/static/js/main.7648dcc4.chunk.js +++ b/admin/build/static/js/main.06a5ea7b.chunk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{12:function(e,t,a){e.exports={"submit-status":"OptionsSetter_submit-status__2A56R",explanation:"OptionsSetter_explanation__XoKaX",success:"OptionsSetter_success__uJCv9",icon:"OptionsSetter_icon__l-DXD","release-provider-error":"OptionsSetter_release-provider-error__2Wbm4","label-hint":"OptionsSetter_label-hint__kpp6r"}},15:function(e,t,a){e.exports={label:"LoadSpecView_label__34LBg","load-spec":"LoadSpecView_load-spec__3SZje"}},16:function(e,t,a){e.exports={"client-requirements":"ClientRequirementsView_client-requirements__1v61H",conflicted:"ClientRequirementsView_conflicted__5hmJU"}},17:function(e,t,a){e.exports={"v3-deprecation-warning":"V3DeprecationWarning_v3-deprecation-warning__3EzKh","snooze-button":"V3DeprecationWarning_snooze-button__2jHLk",label:"V3DeprecationWarning_label__2oz_x"}},2:function(e,t,a){e.exports={explanation:"App_explanation__2O1a5","table-header":"App_table-header__3XfOL"}},20:function(e,t,a){e.exports={status:"FontAwesomeAdminView_status__1TvaT",icon:"FontAwesomeAdminView_icon__AUm7s",good:"FontAwesomeAdminView_good__3B1qV",conflict:"FontAwesomeAdminView_conflict__2JlC8",warning:"FontAwesomeAdminView_warning__mMIh9"}},21:function(e,t,a){e.exports={"plugin-version-warnings":"PluginVersionWarningsView_plugin-version-warnings__RYKwJ"}},24:function(e,t,a){e.exports={"unregistered-clients":"UnregisteredClientsView_unregistered-clients__4czYv"}},33:function(e,t,a){e.exports=a(68)},68:function(e,t,a){"use strict";a.r(t);var n=a(0),s=a.n(n),i=a(32),o=a.n(i),l=a(7),r=a(8),c=a(10),u=a(9),m=a(11),d=a(1),h=a(19),p=a.n(h),b=a(6),g=a(5),v=function(){return s.a.createElement("div",{className:"loading-view"},s.a.createElement(b.a,{icon:g.g,size:"4x",spin:!0}))},f=a(4),E=a.n(f),y=a(20),w=a.n(y),S=a(15),k=a.n(S),O=function(e){var t=e.usePro,a=e.spec,n=a.method,i=a.v4shim,o=a.pseudoElements,l=a.version,r=t?"Pro":"Free";return s.a.createElement("div",{className:k.a["load-spec"]},s.a.createElement("h2",null,"Current Load Specification"),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("tbody",null,s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Product"),s.a.createElement("td",{className:k.a.value},"Font Awesome"," ",s.a.createElement("span",{className:E()("license",r)},r))),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Version"),s.a.createElement("td",{className:k.a.value},l)),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Method"),s.a.createElement("td",{className:k.a.value},n)),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Version 4 compatibility"),s.a.createElement("td",{className:k.a.value},i?"true":"false")),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Pseudo-elements support"),s.a.createElement("td",{className:k.a.value},o?"true":"false")))))},N=a(13),j=a(12),_=a.n(j),C=a(2),x=a.n(C),P=a(18),A="",L=["webfont","svg",A],F=["require","forbid",A],V=function(e){function t(e){var a;return Object(l.a)(this,t),(a=Object(c.a)(this,Object(u.a)(t).call(this,e))).state={method:A,v4shim:A,pseudoElements:A,version:A,usePro:!1,removeUnregisteredClients:!1,versionOptions:null,lastProps:null},a.handleMethodSelect=a.handleMethodSelect.bind(Object(d.a)(Object(d.a)(a))),a.handleProCheck=a.handleProCheck.bind(Object(d.a)(Object(d.a)(a))),a.handleV4Select=a.handleV4Select.bind(Object(d.a)(Object(d.a)(a))),a.handlePseudoElementsSelect=a.handlePseudoElementsSelect.bind(Object(d.a)(Object(d.a)(a))),a.handleVersionSelect=a.handleVersionSelect.bind(Object(d.a)(Object(d.a)(a))),a.handleRemoveUnregisteredCheck=a.handleRemoveUnregisteredCheck.bind(Object(d.a)(Object(d.a)(a))),a.handleSubmitClick=a.handleSubmitClick.bind(Object(d.a)(Object(d.a)(a))),a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"handleMethodSelect",value:function(e){this.setState({method:"-"===e.target.value?A:e.target.value})}},{key:"handleVersionSelect",value:function(e){this.setState({version:"-"===e.target.value?A:e.target.value})}},{key:"handlePseudoElementsSelect",value:function(e){this.setState({pseudoElements:"-"===e.target.value?A:e.target.value})}},{key:"handleProCheck",value:function(){this.setState({usePro:!this.state.usePro})}},{key:"handleRemoveUnregisteredCheck",value:function(){this.setState({removeUnregisteredClients:!this.state.removeUnregisteredClients})}},{key:"handleV4Select",value:function(e){this.setState({v4shim:"-"===e.target.value?A:e.target.value})}},{key:"handleSubmitClick",value:function(e){e.preventDefault();var t=this.props;(0,t.putData)({options:{adminClientLoadSpec:{name:t.adminClientInternal,method:this.state.method===A?void 0:this.state.method,v4shim:this.state.v4shim===A?void 0:this.state.v4shim,pseudoElements:this.state.pseudoElements===A?void 0:this.state.pseudoElements,version:this.state.version===A?void 0:this.state.version},usePro:this.state.usePro,removeUnregisteredClients:this.state.removeUnregisteredClients}})}},{key:"render",value:function(){var e=this;if(this.state.error)throw this.state.error;var t=this.props,a=t.hasSubmitted,n=t.isSubmitting,i=t.submitSuccess,o=t.submitMessage;return s.a.createElement("div",{className:"options-setter"},s.a.createElement("h2",null,"Options"),s.a.createElement("p",{className:x.a.explanation},"You can tune these options according to your preferences, as long as your preferences don't conflict with the specifications required by other plugins and themes that you've installed."),s.a.createElement("p",{className:x.a.explanation},"If conflicts are detected, they'll be shown below, and you might be able to resolve them just by choosing different options here."),s.a.createElement("table",{className:"form-table"},s.a.createElement("tbody",null,s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"method"},"Method")),s.a.createElement("td",null,s.a.createElement("select",{name:"method",onChange:this.handleMethodSelect,value:this.state.method},L.map(function(e,t){return s.a.createElement("option",{key:t,value:e},e||"-")})))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"use-pro"},"Use Pro")),s.a.createElement("td",null,s.a.createElement("input",{name:"use-pro",checked:this.state.usePro,value:this.state.usePro,type:"checkbox",onChange:this.handleProCheck}),s.a.createElement("span",{className:_.a["label-hint"]},"Requires a subscription.",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/pro"},s.a.createElement(b.a,{icon:g.e})," Learn more"),s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/account/domains"},s.a.createElement(b.a,{icon:g.e})," Manage my allowed domains")))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"v4shim"},"Version 4 Compatibility")),s.a.createElement("td",null,s.a.createElement("select",{name:"v4shim",onChange:this.handleV4Select,value:this.state.v4shim},F.map(function(e,t){return s.a.createElement("option",{key:t,value:e},e||"-")})))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"pseudo-elements"},"Pseudo-elements Support")),s.a.createElement("td",null,s.a.createElement("select",{name:"pseudo-elements",onChange:this.handlePseudoElementsSelect,value:this.state.pseudoElements},F.map(function(e,t){return s.a.createElement("option",{key:t,value:e},e||"-")})))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"version"},"Version")),s.a.createElement("td",null,s.a.createElement("select",{name:"version",onChange:this.handleVersionSelect,value:this.state.version},Object.keys(this.state.versionOptions).map(function(t,a){return s.a.createElement("option",{key:a,value:t},t===A?"-":e.state.versionOptions[t])})),200!==this.props.releaseProviderStatus.code&&s.a.createElement("div",{className:_.a["release-provider-error"]},this.props.releaseProviderStatus.message))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"remove-unregistered"},"Remove unregistered clients")),s.a.createElement("td",null,s.a.createElement("input",{name:"remove-unregistered",checked:this.state.removeUnregisteredClients,value:this.state.removeUnregisteredClients,type:"checkbox",onChange:this.handleRemoveUnregisteredCheck}))))),s.a.createElement("p",{className:"submit"},s.a.createElement("input",{type:"submit",name:"submit",id:"submit",className:"button button-primary",value:"Save Changes",onClick:this.handleSubmitClick}),a&&(i?s.a.createElement("span",{className:E()(_.a["submit-status"],_.a.success)},s.a.createElement(b.a,{className:_.a.icon,icon:g.a}),s.a.createElement("span",{className:_.a.explanation},o)):s.a.createElement("span",{className:E()(_.a["submit-status"],_.a.fail)},s.a.createElement(b.a,{className:_.a.icon,icon:g.f}),s.a.createElement("span",{className:_.a.explanation},o))),n&&s.a.createElement("span",{className:E()(_.a["submit-status"],_.a.submitting)},s.a.createElement(b.a,{className:_.a.icon,icon:g.g,spin:!0}))))}}],[{key:"getDerivedStateFromProps",value:function(e,a){return e.isSubmitting||Object(P.isEqual)(a.lastProps,e)?null:{lastProps:e,pseudoElements:e.currentOptions.adminClientLoadSpec.pseudoElements||A,version:e.currentOptions.adminClientLoadSpec.version||A,v4shim:e.currentOptions.adminClientLoadSpec.v4shim||A,method:e.currentOptions.adminClientLoadSpec.method||A,usePro:!!e.currentOptions.usePro,removeUnregisteredClients:!!e.currentOptions.removeUnregisteredClients,versionOptions:t.buildVersionOptions(e)}}},{key:"buildVersionOptions",value:function(e){var t=e.releases,a=t.available,n=t.latest_version,s=t.previous_version;return a.reduce(function(e,t){return e[t]=n===t?"".concat(t," (latest)"):s===t?"".concat(t," (previous minor release)"):t,e},Object(N.a)({},A,"-"))}}]),t}(s.a.Component),R=a(16),q=a.n(R),D=function(e){function t(){return Object(l.a)(this,t),Object(c.a)(this,Object(u.a)(t).apply(this,arguments))}return Object(m.a)(t,e),Object(r.a)(t,[{key:"hasAdditionalClients",value:function(){var e=this;return!!Object(P.find)(this.props.clientRequirements,function(t){return t.name!==e.props.adminClientInternal})}},{key:"render",value:function(){var e=this,t=this.props,a=t.conflict,n=t.hasLockedLoadSpec,i=!!a;return s.a.createElement("div",{className:q.a["client-requirements"]},i?s.a.createElement("h2",null,"Conflicting Requirements"):s.a.createElement("h2",null,"Client Requirements"),this.hasAdditionalClients()?s.a.createElement("div",null,i?s.a.createElement("div",null,s.a.createElement("p",{className:x.a.explanation},"We found conflicting requirements between two or more plugins or themes, shown below."),n?s.a.createElement("p",{className:x.a.explanation},"We'll continue to load the last good load specification you've locked in, so things will keep working the way they've been working. However, until you resolve the conflict, whatever clients have introduced these new conflicting requirements may not work as expected."):s.a.createElement("p",{className:x.a.explanation},"Since you haven't yet locked in a working configuration, we can't load Font Awesome at all. So, until you resolve these conflicts, Font Awesome won't work!")):s.a.createElement("p",{className:x.a.explanation},"Here are some other clients of the Font Awesome plugin, such as plugins or themes, along with their Font Awesome requirements shown side-by-side with your preferences. If you're trying to resolve a conflict, you might find the culprit at a glance here."),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("thead",null,s.a.createElement("tr",{className:x.a["table-header"]},s.a.createElement("th",null,"Name"),s.a.createElement("th",{className:E()(Object(N.a)({},q.a.conflicted,"method"===a))},"Method"),s.a.createElement("th",{className:E()(Object(N.a)({},q.a.conflicted,"version"===a))},"Version"),s.a.createElement("th",{className:E()(Object(N.a)({},q.a.conflicted,"v4shim"===a))},"V4 Compat"),s.a.createElement("th",{className:E()(Object(N.a)({},q.a.conflicted,"pseudoElements"===a))},"Pseudo-elements"))),s.a.createElement("tbody",null,this.props.clientRequirements.map(function(t,n){return s.a.createElement("tr",{key:n},s.a.createElement("td",null,t.name===e.props.adminClientInternal?e.props.adminClientExternal:t.name),s.a.createElement("td",{className:E()(Object(N.a)({},q.a.conflicted,"method"===a))},t.method?t.method:"-"),s.a.createElement("td",{className:E()(Object(N.a)({},q.a.conflicted,"version"===a))},t.version?t.version:"-"),s.a.createElement("td",{className:E()(Object(N.a)({},q.a.conflicted,"v4shim"===a))},t.v4shim?t.v4shim:"-"),s.a.createElement("td",{className:E()(Object(N.a)({},q.a.conflicted,"pseudoElements"===a))},t.pseudoElements?t.pseudoElements:"-"))})))):s.a.createElement("p",{className:x.a.explanation},"We don't detect any other active clients (like themes or plugins) that have registered requirements for Font Awesome."))}}]),t}(s.a.Component),W=a(24),I=a.n(W),M=function(e){var t=e.clients.length>0;return s.a.createElement("div",{className:E()(I.a["unregistered-clients"],Object(N.a)({},I.a["none-detected"],!t))},s.a.createElement("h2",null,"Unregistered Clients"),t?s.a.createElement("div",null,s.a.createElement("p",{className:x.a.explanation},"These are plugins or themes we've detected that appear to be trying to load their own versions of Font Awesome. Loading more than one version of Font Awesome will almost certainly result in problems, eventually. So, even if all registered clients are satisfied with your configuration, they can be broken by an unexpected version of Font Awesome loaded by one of these unregistered clients."),s.a.createElement("p",{className:x.a.explanation},"We recommend enabling the ",s.a.createElement("code",null,"Remove unregistered clients")," option to avoid such conflicts. When enabled, our plugin will attempt to stop these other clients from loading their own versions of Font Awesome. Most likely, they will continue to operate normally, as long as they are compatible with the version configured here."),s.a.createElement("p",{className:x.a.explanation},"If you enable ",s.a.createElement("code",null,"Remove unregistered clients")," and the results produced by those unregistered clients aren't what you expect (for example, their icons are missing), then you could try to select different options here, trying to find a configuration that ",s.a.createElement("em",null,"is")," compatible with them. Since they are ",s.a.createElement("em",null,"unregistered")," clients, we don't know what their requirements are, so you kinda just have to guess. You'll know you've found a workable configuration when all of the registered clients are satisfied (no conflicts shown here), and the unregistered clients produce expected results (their icons look right to you)."),s.a.createElement("p",{className:x.a.explanation},"A couple other options for resolving problems with unregistered clients:"),s.a.createElement("ol",{className:x.a.explanation},s.a.createElement("li",null,"Deactivate or replace it, if possible."),s.a.createElement("li",null,"Contact the developer for the unregistered client and ask them to consider updating their code to register with this Font Awesome Official plugin. Let them know they can reach us at ",s.a.createElement("code",null,"hello@fontawesome.com"),".")),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("tbody",null,s.a.createElement("tr",{className:x.a["table-header"]},s.a.createElement("th",null,"Name"),s.a.createElement("th",null,"Type"),s.a.createElement("th",null,"Loading")),e.clients.map(function(e,t){return s.a.createElement("tr",{key:t},s.a.createElement("td",null,e.handle),s.a.createElement("td",null,e.type),s.a.createElement("td",null,e.src))})))):s.a.createElement("p",{className:x.a.explanation},"We detected no unregistered clients."))},U=a(21),G=a.n(U),z=function(e){return s.a.createElement("div",{className:G.a["plugin-version-warnings"]},s.a.createElement("h2",null,"Plugin Version Warnings"),s.a.createElement("p",{className:x.a.explanation},"This plugin is designed to be loaded in a variety of ways by third-party plugins and themes, all in the hope that it makes your life easier by managing the complexity of their various requirements. But sometimes, they have a conflict over not just the version of Font Awesome to load, but on the version of this plugin that they require in order to get the job done. Behind the scenes, only one copy of the plugin is actually loaded. Any subsequent plugins are forced to use that version that's already loaded. Those subsequently loaded plugins might have a problem using the loaded version and this is where they'll warn you about that so you can see the problem clearly and (hopefully) quickly work out a solution."),s.a.createElement("p",{className:x.a.explanation},"Unfortunately, we've got one of those situations here. The likely solution is to upgrade one of these to its latest version. Or, if you've installed a plugin that includes the Font Awesome plugin and you've also installed the Font Awesome plugin directly yourself, you might be able to resolve this conflict by deactivating the version of the Font Awesome plugin you installed yourself."),s.a.createElement("p",{className:x.a.explanation},"If you have reason to keep your own installation of the plugin in addition to another plugin and think you could resolve this problem by downgrading your own installation of the plugin, you find older releases of the plugin on ",s.a.createElement("a",{href:"https://fontawesome.com"},"our website"),"."),s.a.createElement("p",{className:x.a.explanation},"In most cases, if you've installed a plugin that embeds this plugin, you do not need to also have your own copy of this plugin installed, and it may be simpler to just deactivate and uninstall it, unless it's the only copy of the plugin."),s.a.createElement("p",{className:x.a.explanation},s.a.createElement("b",null,"Loaded Plugin Version: ")," ",e.pluginVersion),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("thead",null,s.a.createElement("tr",{className:x.a["table-header"]},s.a.createElement("th",null,"Name"),s.a.createElement("th",null,"Version Requirement"))),s.a.createElement("tbody",null,Object.keys(e.warnings).map(function(t,a){return s.a.createElement("tr",{key:a},s.a.createElement("td",{className:G.a.name},e.warnings[t].name),s.a.createElement("td",{className:G.a.name},e.warnings[t].constraint))}))))},B=a(17),T=a.n(B),X=function(e){function t(e){var a;return Object(l.a)(this,t),(a=Object(c.a)(this,Object(u.a)(t).call(this,e))).state={data:null,error:null,isLoading:!0,isSubmitting:!1,hasSubmitted:!1,submitSuccess:!1,submitMessage:null},a.getData=a.getData.bind(Object(d.a)(Object(d.a)(a))),a.putData=a.putData.bind(Object(d.a)(Object(d.a)(a))),a.handlePutResponse=a.handlePutResponse.bind(Object(d.a)(Object(d.a)(a))),a.handlePutError=a.handlePutError.bind(Object(d.a)(Object(d.a)(a))),a.handleGetResponse=a.handleGetResponse.bind(Object(d.a)(Object(d.a)(a))),a.handleGetError=a.handleGetError.bind(Object(d.a)(Object(d.a)(a))),a.handleSnooze=a.handleSnooze.bind(Object(d.a)(Object(d.a)(a))),a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"handleSnooze",value:function(){this.putData({snooze:!0})}},{key:"handleGetResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isLoading:!1}):this.setState({error:new Error("failed to get data"),isLoading:!1})}},{key:"handlePutResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!0,submitMessage:"Changes saved"}):this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:"Failed to save changes"})}},{key:"handlePutError",value:function(e){var t=e.response.data,a=t.code,n=t.message,s="";switch(a){case"cant_update":s=n;break;case"rest_no_route":case"rest_cookie_invalid_nonce":s="Sorry, we couldn't reach the server";break;default:s="Update failed"}this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:s})}},{key:"handleGetError",value:function(e){this.setState({error:e})}},{key:"getData",value:function(){p.a.get("".concat(this.props.wpApiSettings.api_url,"/v3deprecation"),{headers:{"X-WP-Nonce":this.props.wpApiSettings.api_nonce}}).then(this.handleGetResponse).catch(this.handleGetError)}},{key:"putData",value:function(e){this.setState({isSubmitting:!0,hasSubmitted:!1}),p.a.put("".concat(this.props.wpApiSettings.api_url,"/v3deprecation"),e,{headers:{"X-WP-Nonce":this.props.wpApiSettings.api_nonce}}).then(this.handlePutResponse).catch(this.handlePutError)}},{key:"componentDidMount",value:function(){this.setState({isLoading:!0}),this.getData()}},{key:"render",value:function(){if(this.state.error)throw this.state.error;if(!this.state.isLoading&&!this.state.data)throw new Error("missing data");if(this.state.isLoading)return null;if(this.state.data){var e=this.state.data.v3DeprecationWarning,t=e.atts,a=e.v5name,n=e.v5prefix;return e.snooze?null:s.a.createElement("div",{className:T.a["v3-deprecation-warning"]},s.a.createElement("p",{className:x.a.explanation},s.a.createElement(b.a,{icon:g.d,size:"2x"})),s.a.createElement("p",{className:x.a.explanation},"Looks like you're using an ",s.a.createElement("code",null,"[icon]")," shortcode with an old Font Awesome 3 icon name:",s.a.createElement("code",null,t.name)),s.a.createElement("p",{className:x.a.explanation},"We discontinued support for ",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/v3.2.1/icons/"},"Font Awesome 3")," quite some time ago, though we only recently inherited this WordPress plugin, which previously only supported up to Font Awesome 3."),s.a.createElement("p",{className:x.a.explanation},"Won't you jump into Font Awesome 5 with us? It's way better, and we're gonna make it really easy to upgrade. We've added some temporary magic to this plugin to translate your version 3 icon names into their version 5 equivalents."),s.a.createElement("p",{className:x.a.explanation},s.a.createElement("i",{className:"fas fa-magic fa-2x"})," ",s.a.createElement("em",null,"Bippity Boppity Boo!")),s.a.createElement("p",{className:x.a.explanation},"We just turned your",s.a.createElement("br",null),s.a.createElement("code",null,'[icon name="',t.name,'"]'),s.a.createElement("br",null),s.a.createElement("i",{className:"".concat(n," fa-").concat(a," fa-2x")})," into",s.a.createElement("br",null),s.a.createElement("code",null,'[icon name="',a,'" prefix="',n,'"]'),"."),s.a.createElement("p",{className:x.a.explanation},"Actually, we just converted it on the fly so it would look right in your web pages, without changing your saved web site content. So to make that change permanent (and get rid of this warning), you'll need to go change any version 3 icon names in ",s.a.createElement("code",null,"[icon]")," shortcodes in your pages, posts, widgets, templates, or wherever they're coming from."),s.a.createElement("p",{className:x.a.explanation},"What's that ",s.a.createElement("code",null,"prefix"),", you ask?"),s.a.createElement("p",{className:x.a.explanation},"Well...in Font Awesome 5, most icons come in three different styles. You use a style ",s.a.createElement("em",null,"prefix")," to indicate which style you want. The default style prefix is ",s.a.createElement("code",null,"fas")," for the Solid style. So when you're upgrading your shortcodes from v3 to v5 names, if you just want the Solid style icon, you can leave off that ",s.a.createElement("code",null,"prefix"),". Most v3 icons map to Solid style icons in v5. But some of the version 3 icon names map to the ",s.a.createElement("code",null,"fab")," style for Brands, or the ",s.a.createElement("code",null,"far")," style for Regular."),s.a.createElement("p",{className:x.a.explanation},"Icons for companies like ",s.a.createElement("i",{className:"fab fa-apple fa-2x"})," Apple, or products like ",s.a.createElement("i",{className:"fab fa-chrome fa-2x"}),"Chrome will be in the Brands style with the ",s.a.createElement("code",null,"fab")," prefix."),s.a.createElement("p",{className:x.a.explanation},"When you subscribe to ",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/pro"},"Font Awesome Pro"),", you get a kajillion icons in All the Styles, including ",s.a.createElement("code",null,"fal"),", the Light style."),s.a.createElement("p",{className:x.a.explanation},"Head over to our ",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/icons?d=gallery"},"Icon Gallery")," to check out the vast array."),s.a.createElement("p",{className:x.a.explanation},"Guess what! In Font Awesome 3.2.1, you had 361 icons to choose from. Now, with Font Awesome 5 Free (as of v5.5.0) you've got ",s.a.createElement("b",null,"1,409"),", and with Pro you get...wait for it...",s.a.createElement("b",null,"4,566"),". (Rounds up to a kajillion.)"),s.a.createElement("p",{className:x.a.explanation},"So have a blast upgrading. We're gonna remove this v3-to-v5 magic soon, though, so don't wait forever."),s.a.createElement("p",{className:x.a.explanation},"Clear this warning by updating those icons, or you could hit snooze to get this warning of your way for a while."),s.a.createElement("div",null,s.a.createElement("button",{disabled:this.state.isSubmitting,onClick:this.handleSnooze,className:E()(T.a["snooze-button"],"button","button-primary")},this.state.isSubmitting?s.a.createElement(b.a,{icon:g.g,spin:!0,className:T.a.submitting}):this.state.hasSubmitted?this.state.submitSuccess?s.a.createElement(b.a,{icon:g.a,className:T.a.success}):s.a.createElement(b.a,{icon:g.f,className:T.a.fail}):s.a.createElement(b.a,{icon:g.b,className:T.a.snooze}),s.a.createElement("span",{className:T.a.label},"Snooze"))))}}}]),t}(s.a.Component),J=function(e){function t(){return Object(l.a)(this,t),Object(c.a)(this,Object(u.a)(t).apply(this,arguments))}return Object(m.a)(t,e),Object(r.a)(t,[{key:"getStatus",value:function(e,t){return e?t?{statusLabel:"warning",statusIcon:g.d}:{statusLabel:"conflict",statusIcon:g.c}:{statusLabel:"good",statusIcon:g.h}}},{key:"render",value:function(){var e=this.props,t=e.data,a=e.putData,n=!!t.conflicts,i=this.getStatus(n,!!t.options.lockedLoadSpec),o=i.statusLabel,l=i.statusIcon;return s.a.createElement("div",{className:w.a["font-awesome-admin-view"]},s.a.createElement("h1",null,"Font Awesome"),s.a.createElement("div",null,s.a.createElement("p",{className:E()(w.a.status,w.a[o])},s.a.createElement("span",{className:w.a["status-label"]},"Status: "),s.a.createElement(b.a,{className:w.a.icon,icon:l})),s.a.createElement(X,{wpApiSettings:this.props.wpApiSettings}),t.options.lockedLoadSpec&&s.a.createElement(O,{spec:t.options.lockedLoadSpec,usePro:t.options.usePro}),n&&s.a.createElement(D,{clientRequirements:t.conflicts.conflictingClientRequirements,conflict:t.conflicts.requirement,hasLockedLoadSpec:!!t.options.lockedLoadSpec,adminClientInternal:t.adminClientInternal,adminClientExternal:t.adminClientExternal}),s.a.createElement(V,{releases:t.releases,currentOptions:t.options,putData:a,isSubmitting:this.props.isSubmitting,hasSubmitted:this.props.hasSubmitted,submitSuccess:this.props.submitSuccess,submitMessage:this.props.submitMessage,error:this.props.error,adminClientInternal:t.adminClientInternal,releaseProviderStatus:t.releaseProviderStatus}),!n&&s.a.createElement(D,{clientRequirements:Object(P.values)(t.clientRequirements),adminClientInternal:t.adminClientInternal,adminClientExternal:t.adminClientExternal}),s.a.createElement(M,{clients:t.unregisteredClients}),t.pluginVersionWarnings&&s.a.createElement(z,{warnings:Object(P.values)(t.pluginVersionWarnings),pluginVersion:t.pluginVersion})))}}]),t}(s.a.Component),H=function(e){function t(e){var a;Object(l.a)(this,t),a=Object(c.a)(this,Object(u.a)(t).call(this,e));var n=window.wpFontAwesomeOfficial;if(!n)throw Error("Well, this is embarrassing. The plugin doesn't seem to be installed correctly.");return a.state={data:null,error:null,isLoading:!0,isSubmitting:!1,hasSubmitted:!1,submitSuccess:!1,submitMessage:null,wpApiSettings:n},a.getData=a.getData.bind(Object(d.a)(Object(d.a)(a))),a.putData=a.putData.bind(Object(d.a)(Object(d.a)(a))),a.handlePutResponse=a.handlePutResponse.bind(Object(d.a)(Object(d.a)(a))),a.handlePutError=a.handlePutError.bind(Object(d.a)(Object(d.a)(a))),a.handleGetResponse=a.handleGetResponse.bind(Object(d.a)(Object(d.a)(a))),a.handleGetError=a.handleGetError.bind(Object(d.a)(Object(d.a)(a))),a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"handleGetResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isLoading:!1}):this.setState({error:new Error("failed to get data"),isLoading:!1})}},{key:"handlePutResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!0,submitMessage:"Changes saved"}):this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:"Failed to save changes"})}},{key:"handlePutError",value:function(e){var t=e.response.data,a=t.code,n=t.message,s="";switch(a){case"cant_update":s=n;break;case"rest_no_route":case"rest_cookie_invalid_nonce":s="Sorry, we couldn't reach the server";break;default:s="Update failed"}this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:s})}},{key:"handleGetError",value:function(e){this.setState({error:e})}},{key:"getData",value:function(){p.a.get("".concat(this.state.wpApiSettings.api_url,"/config"),{headers:{"X-WP-Nonce":this.state.wpApiSettings.api_nonce}}).then(this.handleGetResponse).catch(this.handleGetError)}},{key:"putData",value:function(e){this.setState({isSubmitting:!0,hasSubmitted:!1}),p.a.put("".concat(this.state.wpApiSettings.api_url,"/config"),e,{headers:{"X-WP-Nonce":this.state.wpApiSettings.api_nonce}}).then(this.handlePutResponse).catch(this.handlePutError)}},{key:"componentDidMount",value:function(){this.setState({isLoading:!0}),this.getData()}},{key:"render",value:function(){if(this.state.error)throw this.state.error;if(!this.state.isLoading&&!this.state.data)throw new Error("missing data");return s.a.createElement("div",{className:"wrap"},this.state.isLoading?s.a.createElement(v,null):s.a.createElement(J,{data:this.state.data,putData:this.putData,isSubmitting:this.state.isSubmitting,hasSubmitted:this.state.hasSubmitted,submitSuccess:this.state.submitSuccess,submitMessage:this.state.submitMessage,wpApiSettings:this.state.wpApiSettings,error:this.state.error}))}}]),t}(n.Component),Y=function(e){function t(){return Object(l.a)(this,t),Object(c.a)(this,Object(u.a)(t).apply(this,arguments))}return Object(m.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props.message;return s.a.createElement("div",{className:"error-fallback"},"Sorry, we've experienced some error.",e&&s.a.createElement("div",{className:"additional-message"},e))}}]),t}(s.a.Component),K=function(e){function t(e){var a;return Object(l.a)(this,t),(a=Object(c.a)(this,Object(u.a)(t).call(this,e))).state={error:null,errorInfo:null},a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"componentDidCatch",value:function(e,t){this.setState({error:e,errorInfo:t})}},{key:"render",value:function(){return this.state.error?s.a.createElement(Y,null):this.props.children}}]),t}(s.a.Component);o.a.render(s.a.createElement(K,null,s.a.createElement(H,null)),document.getElementById("font-awesome-admin"))}},[[33,2,1]]]); -//# sourceMappingURL=main.7648dcc4.chunk.js.map \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{12:function(e,t,a){e.exports={"submit-status":"OptionsSetter_submit-status__2A56R",explanation:"OptionsSetter_explanation__XoKaX",success:"OptionsSetter_success__uJCv9",icon:"OptionsSetter_icon__l-DXD","release-provider-error":"OptionsSetter_release-provider-error__2Wbm4","label-hint":"OptionsSetter_label-hint__kpp6r"}},15:function(e,t,a){e.exports={label:"LoadSpecView_label__34LBg","load-spec":"LoadSpecView_load-spec__3SZje"}},16:function(e,t,a){e.exports={"client-requirements":"ClientRequirementsView_client-requirements__1v61H",conflicted:"ClientRequirementsView_conflicted__5hmJU"}},17:function(e,t,a){e.exports={"v3-deprecation-warning":"V3DeprecationWarning_v3-deprecation-warning__3EzKh","snooze-button":"V3DeprecationWarning_snooze-button__2jHLk",label:"V3DeprecationWarning_label__2oz_x"}},2:function(e,t,a){e.exports={explanation:"App_explanation__2O1a5","table-header":"App_table-header__3XfOL"}},20:function(e,t,a){e.exports={status:"FontAwesomeAdminView_status__1TvaT",icon:"FontAwesomeAdminView_icon__AUm7s",good:"FontAwesomeAdminView_good__3B1qV",conflict:"FontAwesomeAdminView_conflict__2JlC8",warning:"FontAwesomeAdminView_warning__mMIh9"}},21:function(e,t,a){e.exports={"plugin-version-warnings":"PluginVersionWarningsView_plugin-version-warnings__RYKwJ"}},24:function(e,t,a){e.exports={"unregistered-clients":"UnregisteredClientsView_unregistered-clients__4czYv"}},33:function(e,t,a){e.exports=a(68)},68:function(e,t,a){"use strict";a.r(t);var n=a(0),s=a.n(n),i=a(32),o=a.n(i),l=a(7),r=a(8),c=a(10),u=a(9),m=a(11),d=a(1),h=a(19),p=a.n(h),b=a(6),g=a(5),v=function(){return s.a.createElement("div",{className:"loading-view"},s.a.createElement(b.a,{icon:g.g,size:"4x",spin:!0}))},f=a(4),E=a.n(f),y=a(20),w=a.n(y),S=a(15),k=a.n(S),O=function(e){var t=e.usePro,a=e.spec,n=a.method,i=a.v4shim,o=a.pseudoElements,l=a.version,r=t?"Pro":"Free";return s.a.createElement("div",{className:k.a["load-spec"]},s.a.createElement("h2",null,"Current Load Specification"),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("tbody",null,s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Product"),s.a.createElement("td",{className:k.a.value},"Font Awesome"," ",s.a.createElement("span",{className:E()("license",r)},r))),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Version"),s.a.createElement("td",{className:k.a.value},l)),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Method"),s.a.createElement("td",{className:k.a.value},n)),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Version 4 compatibility"),s.a.createElement("td",{className:k.a.value},i?"true":"false")),s.a.createElement("tr",null,s.a.createElement("td",{className:k.a.label},"Pseudo-elements support"),s.a.createElement("td",{className:k.a.value},o?"true":"false")))))},N=a(13),j=a(12),_=a.n(j),C=a(2),x=a.n(C),P=a(18),A="",L=["webfont","svg",A],F=["require","forbid",A],V=function(e){function t(e){var a;return Object(l.a)(this,t),(a=Object(c.a)(this,Object(u.a)(t).call(this,e))).state={method:A,v4shim:A,pseudoElements:A,version:A,usePro:!1,removeUnregisteredClients:!1,versionOptions:null,lastProps:null},a.handleMethodSelect=a.handleMethodSelect.bind(Object(d.a)(Object(d.a)(a))),a.handleProCheck=a.handleProCheck.bind(Object(d.a)(Object(d.a)(a))),a.handleV4Select=a.handleV4Select.bind(Object(d.a)(Object(d.a)(a))),a.handlePseudoElementsSelect=a.handlePseudoElementsSelect.bind(Object(d.a)(Object(d.a)(a))),a.handleVersionSelect=a.handleVersionSelect.bind(Object(d.a)(Object(d.a)(a))),a.handleRemoveUnregisteredCheck=a.handleRemoveUnregisteredCheck.bind(Object(d.a)(Object(d.a)(a))),a.handleSubmitClick=a.handleSubmitClick.bind(Object(d.a)(Object(d.a)(a))),a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"handleMethodSelect",value:function(e){this.setState({method:"-"===e.target.value?A:e.target.value})}},{key:"handleVersionSelect",value:function(e){this.setState({version:"-"===e.target.value?A:e.target.value})}},{key:"handlePseudoElementsSelect",value:function(e){this.setState({pseudoElements:"-"===e.target.value?A:e.target.value})}},{key:"handleProCheck",value:function(){this.setState({usePro:!this.state.usePro})}},{key:"handleRemoveUnregisteredCheck",value:function(){this.setState({removeUnregisteredClients:!this.state.removeUnregisteredClients})}},{key:"handleV4Select",value:function(e){this.setState({v4shim:"-"===e.target.value?A:e.target.value})}},{key:"handleSubmitClick",value:function(e){e.preventDefault();var t=this.props;(0,t.putData)({options:{adminClientLoadSpec:{name:t.adminClientInternal,method:this.state.method===A?void 0:this.state.method,v4shim:this.state.v4shim===A?void 0:this.state.v4shim,pseudoElements:this.state.pseudoElements===A?void 0:this.state.pseudoElements,version:this.state.version===A?void 0:this.state.version},usePro:this.state.usePro,removeUnregisteredClients:this.state.removeUnregisteredClients}})}},{key:"render",value:function(){var e=this;if(this.state.error)throw this.state.error;var t=this.props,a=t.hasSubmitted,n=t.isSubmitting,i=t.submitSuccess,o=t.submitMessage;return s.a.createElement("div",{className:"options-setter"},s.a.createElement("h2",null,"Options"),s.a.createElement("p",{className:x.a.explanation},"You can tune these options according to your preferences, as long as your preferences don't conflict with the specifications required by other plugins and themes that you've installed."),s.a.createElement("p",{className:x.a.explanation},"If conflicts are detected, they'll be shown below, and you might be able to resolve them just by choosing different options here."),s.a.createElement("table",{className:"form-table"},s.a.createElement("tbody",null,s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"method"},"Method")),s.a.createElement("td",null,s.a.createElement("select",{name:"method",onChange:this.handleMethodSelect,value:this.state.method},L.map(function(e,t){return s.a.createElement("option",{key:t,value:e},e||"-")})))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"use-pro"},"Use Pro")),s.a.createElement("td",null,s.a.createElement("input",{name:"use-pro",checked:this.state.usePro,value:this.state.usePro,type:"checkbox",onChange:this.handleProCheck}),s.a.createElement("span",{className:_.a["label-hint"]},"Requires a subscription.",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/pro"},s.a.createElement(b.a,{icon:g.e})," Learn more"),s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/account/domains"},s.a.createElement(b.a,{icon:g.e})," Manage my allowed domains")))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"v4shim"},"Version 4 Compatibility")),s.a.createElement("td",null,s.a.createElement("select",{name:"v4shim",onChange:this.handleV4Select,value:this.state.v4shim},F.map(function(e,t){return s.a.createElement("option",{key:t,value:e},e||"-")})))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"pseudo-elements"},"Pseudo-elements Support")),s.a.createElement("td",null,s.a.createElement("select",{name:"pseudo-elements",onChange:this.handlePseudoElementsSelect,value:this.state.pseudoElements},F.map(function(e,t){return s.a.createElement("option",{key:t,value:e},e||"-")})))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"version"},"Version")),s.a.createElement("td",null,s.a.createElement("select",{name:"version",onChange:this.handleVersionSelect,value:this.state.version},Object.keys(this.state.versionOptions).map(function(t,a){return s.a.createElement("option",{key:a,value:t},t===A?"-":e.state.versionOptions[t])})),200!==this.props.releaseProviderStatus.code&&s.a.createElement("div",{className:_.a["release-provider-error"]},this.props.releaseProviderStatus.message))),s.a.createElement("tr",null,s.a.createElement("th",{scope:"row"},s.a.createElement("label",{htmlFor:"remove-unregistered"},"Remove unregistered clients")),s.a.createElement("td",null,s.a.createElement("input",{name:"remove-unregistered",checked:this.state.removeUnregisteredClients,value:this.state.removeUnregisteredClients,type:"checkbox",onChange:this.handleRemoveUnregisteredCheck}))))),s.a.createElement("p",{className:"submit"},s.a.createElement("input",{type:"submit",name:"submit",id:"submit",className:"button button-primary",value:"Save Changes",onClick:this.handleSubmitClick}),a&&(i?s.a.createElement("span",{className:E()(_.a["submit-status"],_.a.success)},s.a.createElement(b.a,{className:_.a.icon,icon:g.a}),s.a.createElement("span",{className:_.a.explanation},o)):s.a.createElement("span",{className:E()(_.a["submit-status"],_.a.fail)},s.a.createElement(b.a,{className:_.a.icon,icon:g.f}),s.a.createElement("span",{className:_.a.explanation},o))),n&&s.a.createElement("span",{className:E()(_.a["submit-status"],_.a.submitting)},s.a.createElement(b.a,{className:_.a.icon,icon:g.g,spin:!0}))))}}],[{key:"getDerivedStateFromProps",value:function(e,a){return e.isSubmitting||Object(P.isEqual)(a.lastProps,e)?null:{lastProps:e,pseudoElements:e.currentOptions.adminClientLoadSpec.pseudoElements||A,version:e.currentOptions.adminClientLoadSpec.version||A,v4shim:e.currentOptions.adminClientLoadSpec.v4shim||A,method:e.currentOptions.adminClientLoadSpec.method||A,usePro:!!e.currentOptions.usePro,removeUnregisteredClients:!!e.currentOptions.removeUnregisteredClients,versionOptions:t.buildVersionOptions(e)}}},{key:"buildVersionOptions",value:function(e){var t=e.releases,a=t.available,n=t.latest_version,s=t.previous_version;return a.reduce(function(e,t){return e[t]=n===t?"".concat(t," (latest)"):s===t?"".concat(t," (previous minor release)"):t,e},Object(N.a)({},A,"-"))}}]),t}(s.a.Component),R=a(16),D=a.n(R),q=function(e){function t(){return Object(l.a)(this,t),Object(c.a)(this,Object(u.a)(t).apply(this,arguments))}return Object(m.a)(t,e),Object(r.a)(t,[{key:"hasAdditionalClients",value:function(){var e=this;return!!Object(P.find)(this.props.clientRequirements,function(t){return t.name!==e.props.adminClientInternal})}},{key:"render",value:function(){var e=this,t=this.props,a=t.conflict,n=t.hasLockedLoadSpec,i=!!a;return s.a.createElement("div",{className:D.a["client-requirements"]},i?s.a.createElement("h2",null,"Conflicting Requirements"):s.a.createElement("h2",null,"Client Requirements"),this.hasAdditionalClients()?s.a.createElement("div",null,i?s.a.createElement("div",null,s.a.createElement("p",{className:x.a.explanation},"We found conflicting requirements between two or more plugins or themes, shown below."),n?s.a.createElement("p",{className:x.a.explanation},"We'll continue to load the last good load specification you've locked in, so things will keep working the way they've been working. However, until you resolve the conflict, whatever clients have introduced these new conflicting requirements may not work as expected."):s.a.createElement("p",{className:x.a.explanation},"Since you haven't yet locked in a working configuration, we can't load Font Awesome at all. So, until you resolve these conflicts, Font Awesome won't work!")):s.a.createElement("p",{className:x.a.explanation},"Here are some other clients of the Font Awesome plugin, such as plugins or themes, along with their Font Awesome requirements shown side-by-side with your preferences. If you're trying to resolve a conflict, you might find the culprit at a glance here."),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("thead",null,s.a.createElement("tr",{className:x.a["table-header"]},s.a.createElement("th",null,"Name"),s.a.createElement("th",{className:E()(Object(N.a)({},D.a.conflicted,"method"===a))},"Method"),s.a.createElement("th",{className:E()(Object(N.a)({},D.a.conflicted,"version"===a))},"Version"),s.a.createElement("th",{className:E()(Object(N.a)({},D.a.conflicted,"v4shim"===a))},"V4 Compat"),s.a.createElement("th",{className:E()(Object(N.a)({},D.a.conflicted,"pseudoElements"===a))},"Pseudo-elements"))),s.a.createElement("tbody",null,this.props.clientRequirements.map(function(t,n){return s.a.createElement("tr",{key:n},s.a.createElement("td",null,t.name===e.props.adminClientInternal?e.props.adminClientExternal:t.name),s.a.createElement("td",{className:E()(Object(N.a)({},D.a.conflicted,"method"===a))},t.method?t.method:"-"),s.a.createElement("td",{className:E()(Object(N.a)({},D.a.conflicted,"version"===a))},t.version?t.version:"-"),s.a.createElement("td",{className:E()(Object(N.a)({},D.a.conflicted,"v4shim"===a))},t.v4shim?t.v4shim:"-"),s.a.createElement("td",{className:E()(Object(N.a)({},D.a.conflicted,"pseudoElements"===a))},t.pseudoElements?t.pseudoElements:"-"))})))):s.a.createElement("p",{className:x.a.explanation},"We don't detect any other active clients (like themes or plugins) that have registered requirements for Font Awesome."))}}]),t}(s.a.Component),W=a(24),I=a.n(W),M=function(e){var t=e.clients.length>0;return s.a.createElement("div",{className:E()(I.a["unregistered-clients"],Object(N.a)({},I.a["none-detected"],!t))},s.a.createElement("h2",null,"Unregistered Clients"),t?s.a.createElement("div",null,s.a.createElement("p",{className:x.a.explanation},"These are plugins or themes we've detected that appear to be trying to load their own versions of Font Awesome. Loading more than one version of Font Awesome will almost certainly result in problems, eventually. So, even if all registered clients are satisfied with your configuration, they can be broken by an unexpected version of Font Awesome loaded by one of these unregistered clients."),s.a.createElement("p",{className:x.a.explanation},"We recommend enabling the ",s.a.createElement("code",null,"Remove unregistered clients")," option to avoid such conflicts. When enabled, our plugin will attempt to stop these other clients from loading their own versions of Font Awesome. Most likely, they will continue to operate normally, as long as they are compatible with the version configured here."),s.a.createElement("p",{className:x.a.explanation},"If you enable ",s.a.createElement("code",null,"Remove unregistered clients")," and the results produced by those unregistered clients aren't what you expect (for example, their icons are missing), then you could try to select different options here, trying to find a configuration that ",s.a.createElement("em",null,"is")," compatible with them. Since they are ",s.a.createElement("em",null,"unregistered")," clients, we don't know what their requirements are, so you kinda just have to guess. You'll know you've found a workable configuration when all of the registered clients are satisfied (no conflicts shown here), and the unregistered clients produce expected results (their icons look right to you)."),s.a.createElement("p",{className:x.a.explanation},"A couple other options for resolving problems with unregistered clients:"),s.a.createElement("ol",{className:x.a.explanation},s.a.createElement("li",null,"Deactivate or replace it, if possible."),s.a.createElement("li",null,"Contact the developer for the unregistered client and ask them to consider updating their code to register with this Font Awesome Official plugin. Let them know they can reach us at ",s.a.createElement("code",null,"hello@fontawesome.com"),".")),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("tbody",null,s.a.createElement("tr",{className:x.a["table-header"]},s.a.createElement("th",null,"Name"),s.a.createElement("th",null,"Type"),s.a.createElement("th",null,"Loading")),e.clients.map(function(e,t){return s.a.createElement("tr",{key:t},s.a.createElement("td",null,e.handle),s.a.createElement("td",null,e.type),s.a.createElement("td",null,e.src))})))):s.a.createElement("p",{className:x.a.explanation},"We detected no unregistered clients."))},U=a(21),G=a.n(U),z=function(e){return s.a.createElement("div",{className:G.a["plugin-version-warnings"]},s.a.createElement("h2",null,"Plugin Version Warnings"),s.a.createElement("p",{className:x.a.explanation},"This plugin is designed to be loaded in a variety of ways by third-party plugins and themes, all in the hope that it makes your life easier by managing the complexity of their various requirements. But sometimes, they have a conflict over not just the version of Font Awesome to load, but on the version of this plugin that they require in order to get the job done. Behind the scenes, only one copy of the plugin is actually loaded. Any subsequent plugins are forced to use that version that's already loaded. Those subsequently loaded plugins might have a problem using the loaded version and this is where they'll warn you about that so you can see the problem clearly and (hopefully) quickly work out a solution."),s.a.createElement("p",{className:x.a.explanation},"Unfortunately, we've got one of those situations here. The likely solution is to upgrade one of these to its latest version. Or, if you've installed a plugin that includes the Font Awesome plugin and you've also installed the Font Awesome plugin directly yourself, you might be able to resolve this conflict by deactivating the version of the Font Awesome plugin you installed yourself."),s.a.createElement("p",{className:x.a.explanation},"If you have reason to keep your own installation of the plugin in addition to another plugin and think you could resolve this problem by downgrading your own installation of the plugin, you find older releases of the plugin on ",s.a.createElement("a",{href:"https://fontawesome.com"},"our website"),"."),s.a.createElement("p",{className:x.a.explanation},"In most cases, if you've installed a plugin that embeds this plugin, you do not need to also have your own copy of this plugin installed, and it may be simpler to just deactivate and uninstall it, unless it's the only copy of the plugin."),s.a.createElement("p",{className:x.a.explanation},s.a.createElement("b",null,"Loaded Plugin Version: ")," ",e.pluginVersion),s.a.createElement("table",{className:E()("widefat","striped")},s.a.createElement("thead",null,s.a.createElement("tr",{className:x.a["table-header"]},s.a.createElement("th",null,"Name"),s.a.createElement("th",null,"Version Requirement"))),s.a.createElement("tbody",null,Object.keys(e.warnings).map(function(t,a){return s.a.createElement("tr",{key:a},s.a.createElement("td",{className:G.a.name},e.warnings[t].name),s.a.createElement("td",{className:G.a.name},e.warnings[t].constraint))}))))},B=a(17),T=a.n(B),X=function(e){function t(e){var a;return Object(l.a)(this,t),(a=Object(c.a)(this,Object(u.a)(t).call(this,e))).state={data:null,error:null,isLoading:!0,isSubmitting:!1,hasSubmitted:!1,submitSuccess:!1,submitMessage:null},a.getData=a.getData.bind(Object(d.a)(Object(d.a)(a))),a.putData=a.putData.bind(Object(d.a)(Object(d.a)(a))),a.handlePutResponse=a.handlePutResponse.bind(Object(d.a)(Object(d.a)(a))),a.handlePutError=a.handlePutError.bind(Object(d.a)(Object(d.a)(a))),a.handleGetResponse=a.handleGetResponse.bind(Object(d.a)(Object(d.a)(a))),a.handleGetError=a.handleGetError.bind(Object(d.a)(Object(d.a)(a))),a.handleSnooze=a.handleSnooze.bind(Object(d.a)(Object(d.a)(a))),a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"handleSnooze",value:function(){this.putData({snooze:!0})}},{key:"handleGetResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isLoading:!1}):this.setState({error:new Error("failed to get data"),isLoading:!1})}},{key:"handlePutResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!0,submitMessage:"Changes saved"}):this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:"Failed to save changes"})}},{key:"handlePutError",value:function(e){var t=e.response.data,a=t.code,n=t.message,s="";switch(a){case"cant_update":s=n;break;case"rest_no_route":case"rest_cookie_invalid_nonce":s="Sorry, we couldn't reach the server";break;default:s="Update failed"}this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:s})}},{key:"handleGetError",value:function(e){this.setState({error:e})}},{key:"getData",value:function(){p.a.get("".concat(this.props.wpApiSettings.api_url,"/v3deprecation"),{headers:{"X-WP-Nonce":this.props.wpApiSettings.api_nonce}}).then(this.handleGetResponse).catch(this.handleGetError)}},{key:"putData",value:function(e){this.setState({isSubmitting:!0,hasSubmitted:!1}),p.a.put("".concat(this.props.wpApiSettings.api_url,"/v3deprecation"),e,{headers:{"X-WP-Nonce":this.props.wpApiSettings.api_nonce}}).then(this.handlePutResponse).catch(this.handlePutError)}},{key:"componentDidMount",value:function(){this.setState({isLoading:!0}),this.getData()}},{key:"render",value:function(){if(this.state.error)throw this.state.error;if(!this.state.isLoading&&!this.state.data)throw new Error("missing data");if(this.state.isLoading)return null;if(this.state.data){if(!1===this.state.data.v3DeprecationWarning)return null;var e=this.state.data.v3DeprecationWarning,t=e.atts,a=e.v5name,n=e.v5prefix;return e.snooze?null:s.a.createElement("div",{className:T.a["v3-deprecation-warning"]},s.a.createElement("p",{className:x.a.explanation},s.a.createElement(b.a,{icon:g.d,size:"2x"})),s.a.createElement("p",{className:x.a.explanation},"Looks like you're using an ",s.a.createElement("code",null,"[icon]")," shortcode with an old Font Awesome 3 icon name:",s.a.createElement("code",null,t.name)),s.a.createElement("p",{className:x.a.explanation},"We discontinued support for ",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/v3.2.1/icons/"},"Font Awesome 3")," quite some time ago, though we only recently inherited this WordPress plugin, which previously only supported up to Font Awesome 3."),s.a.createElement("p",{className:x.a.explanation},"Won't you jump into Font Awesome 5 with us? It's way better, and we're gonna make it really easy to upgrade. We've added some temporary magic to this plugin to translate your version 3 icon names into their version 5 equivalents."),s.a.createElement("p",{className:x.a.explanation},s.a.createElement("i",{className:"fas fa-magic fa-2x"})," ",s.a.createElement("em",null,"Bippity Boppity Boo!")),s.a.createElement("p",{className:x.a.explanation},"We just turned your",s.a.createElement("br",null),s.a.createElement("code",null,'[icon name="',t.name,'"]'),s.a.createElement("br",null),s.a.createElement("i",{className:"".concat(n," fa-").concat(a," fa-2x")})," into",s.a.createElement("br",null),s.a.createElement("code",null,'[icon name="',a,'" prefix="',n,'"]'),"."),s.a.createElement("p",{className:x.a.explanation},"Actually, we just converted it on the fly so it would look right in your web pages, without changing your saved web site content. So to make that change permanent (and get rid of this warning), you'll need to go change any version 3 icon names in ",s.a.createElement("code",null,"[icon]")," shortcodes in your pages, posts, widgets, templates, or wherever they're coming from."),s.a.createElement("p",{className:x.a.explanation},"What's that ",s.a.createElement("code",null,"prefix"),", you ask?"),s.a.createElement("p",{className:x.a.explanation},"Well...in Font Awesome 5, most icons come in three different styles. You use a style ",s.a.createElement("em",null,"prefix")," to indicate which style you want. The default style prefix is ",s.a.createElement("code",null,"fas")," for the Solid style. So when you're upgrading your shortcodes from v3 to v5 names, if you just want the Solid style icon, you can leave off that ",s.a.createElement("code",null,"prefix"),". Most v3 icons map to Solid style icons in v5. But some of the version 3 icon names map to the ",s.a.createElement("code",null,"fab")," style for Brands, or the ",s.a.createElement("code",null,"far")," style for Regular."),s.a.createElement("p",{className:x.a.explanation},"Icons for companies like ",s.a.createElement("i",{className:"fab fa-apple fa-2x"})," Apple, or products like ",s.a.createElement("i",{className:"fab fa-chrome fa-2x"}),"Chrome will be in the Brands style with the ",s.a.createElement("code",null,"fab")," prefix."),s.a.createElement("p",{className:x.a.explanation},"When you subscribe to ",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/pro"},"Font Awesome Pro"),", you get a kajillion icons in All the Styles, including ",s.a.createElement("code",null,"fal"),", the Light style."),s.a.createElement("p",{className:x.a.explanation},"Head over to our ",s.a.createElement("a",{rel:"noopener noreferrer",target:"_blank",href:"https://fontawesome.com/icons?d=gallery"},"Icon Gallery")," to check out the vast array."),s.a.createElement("p",{className:x.a.explanation},"Guess what! In Font Awesome 3.2.1, you had 361 icons to choose from. Now, with Font Awesome 5 Free (as of v5.5.0) you've got ",s.a.createElement("b",null,"1,409"),", and with Pro you get...wait for it...",s.a.createElement("b",null,"4,566"),". (Rounds up to a kajillion.)"),s.a.createElement("p",{className:x.a.explanation},"So have a blast upgrading. We're gonna remove this v3-to-v5 magic soon, though, so don't wait forever."),s.a.createElement("p",{className:x.a.explanation},"Clear this warning by updating those icons, or you could hit snooze to get this warning of your way for a while."),s.a.createElement("div",null,s.a.createElement("button",{disabled:this.state.isSubmitting,onClick:this.handleSnooze,className:E()(T.a["snooze-button"],"button","button-primary")},this.state.isSubmitting?s.a.createElement(b.a,{icon:g.g,spin:!0,className:T.a.submitting}):this.state.hasSubmitted?this.state.submitSuccess?s.a.createElement(b.a,{icon:g.a,className:T.a.success}):s.a.createElement(b.a,{icon:g.f,className:T.a.fail}):s.a.createElement(b.a,{icon:g.b,className:T.a.snooze}),s.a.createElement("span",{className:T.a.label},"Snooze"))))}}}]),t}(s.a.Component),J=function(e){function t(){return Object(l.a)(this,t),Object(c.a)(this,Object(u.a)(t).apply(this,arguments))}return Object(m.a)(t,e),Object(r.a)(t,[{key:"getStatus",value:function(e,t){return e?t?{statusLabel:"warning",statusIcon:g.d}:{statusLabel:"conflict",statusIcon:g.c}:{statusLabel:"good",statusIcon:g.h}}},{key:"render",value:function(){var e=this.props,t=e.data,a=e.putData,n=!!t.conflicts,i=this.getStatus(n,!!t.options.lockedLoadSpec),o=i.statusLabel,l=i.statusIcon;return s.a.createElement("div",{className:w.a["font-awesome-admin-view"]},s.a.createElement("h1",null,"Font Awesome"),s.a.createElement("div",null,s.a.createElement("p",{className:E()(w.a.status,w.a[o])},s.a.createElement("span",{className:w.a["status-label"]},"Status: "),s.a.createElement(b.a,{className:w.a.icon,icon:l})),s.a.createElement(X,{wpApiSettings:this.props.wpApiSettings}),t.options.lockedLoadSpec&&s.a.createElement(O,{spec:t.options.lockedLoadSpec,usePro:t.options.usePro}),n&&s.a.createElement(q,{clientRequirements:t.conflicts.conflictingClientRequirements,conflict:t.conflicts.requirement,hasLockedLoadSpec:!!t.options.lockedLoadSpec,adminClientInternal:t.adminClientInternal,adminClientExternal:t.adminClientExternal}),s.a.createElement(V,{releases:t.releases,currentOptions:t.options,putData:a,isSubmitting:this.props.isSubmitting,hasSubmitted:this.props.hasSubmitted,submitSuccess:this.props.submitSuccess,submitMessage:this.props.submitMessage,error:this.props.error,adminClientInternal:t.adminClientInternal,releaseProviderStatus:t.releaseProviderStatus}),!n&&s.a.createElement(q,{clientRequirements:Object(P.values)(t.clientRequirements),adminClientInternal:t.adminClientInternal,adminClientExternal:t.adminClientExternal}),s.a.createElement(M,{clients:t.unregisteredClients}),t.pluginVersionWarnings&&s.a.createElement(z,{warnings:Object(P.values)(t.pluginVersionWarnings),pluginVersion:t.pluginVersion})))}}]),t}(s.a.Component),H=function(e){function t(e){var a;Object(l.a)(this,t),a=Object(c.a)(this,Object(u.a)(t).call(this,e));var n=window.wpFontAwesomeOfficial;if(!n)throw Error("Well, this is embarrassing. The plugin doesn't seem to be installed correctly.");return a.state={data:null,error:null,isLoading:!0,isSubmitting:!1,hasSubmitted:!1,submitSuccess:!1,submitMessage:null,wpApiSettings:n},a.getData=a.getData.bind(Object(d.a)(Object(d.a)(a))),a.putData=a.putData.bind(Object(d.a)(Object(d.a)(a))),a.handlePutResponse=a.handlePutResponse.bind(Object(d.a)(Object(d.a)(a))),a.handlePutError=a.handlePutError.bind(Object(d.a)(Object(d.a)(a))),a.handleGetResponse=a.handleGetResponse.bind(Object(d.a)(Object(d.a)(a))),a.handleGetError=a.handleGetError.bind(Object(d.a)(Object(d.a)(a))),a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"handleGetResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isLoading:!1}):this.setState({error:new Error("failed to get data"),isLoading:!1})}},{key:"handlePutResponse",value:function(e){var t=e.status,a=e.data;200===t?this.setState({data:a,isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!0,submitMessage:"Changes saved"}):this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:"Failed to save changes"})}},{key:"handlePutError",value:function(e){var t=e.response.data,a=t.code,n=t.message,s="";switch(a){case"cant_update":s=n;break;case"rest_no_route":case"rest_cookie_invalid_nonce":s="Sorry, we couldn't reach the server";break;default:s="Update failed"}this.setState({isSubmitting:!1,hasSubmitted:!0,error:null,submitSuccess:!1,submitMessage:s})}},{key:"handleGetError",value:function(e){this.setState({error:e})}},{key:"getData",value:function(){p.a.get("".concat(this.state.wpApiSettings.api_url,"/config"),{headers:{"X-WP-Nonce":this.state.wpApiSettings.api_nonce}}).then(this.handleGetResponse).catch(this.handleGetError)}},{key:"putData",value:function(e){this.setState({isSubmitting:!0,hasSubmitted:!1}),p.a.put("".concat(this.state.wpApiSettings.api_url,"/config"),e,{headers:{"X-WP-Nonce":this.state.wpApiSettings.api_nonce}}).then(this.handlePutResponse).catch(this.handlePutError)}},{key:"componentDidMount",value:function(){this.setState({isLoading:!0}),this.getData()}},{key:"render",value:function(){if(this.state.error)throw this.state.error;if(!this.state.isLoading&&!this.state.data)throw new Error("missing data");return s.a.createElement("div",{className:"wrap"},this.state.isLoading?s.a.createElement(v,null):s.a.createElement(J,{data:this.state.data,putData:this.putData,isSubmitting:this.state.isSubmitting,hasSubmitted:this.state.hasSubmitted,submitSuccess:this.state.submitSuccess,submitMessage:this.state.submitMessage,wpApiSettings:this.state.wpApiSettings,error:this.state.error}))}}]),t}(n.Component),Y=function(e){function t(){return Object(l.a)(this,t),Object(c.a)(this,Object(u.a)(t).apply(this,arguments))}return Object(m.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props.message;return s.a.createElement("div",{className:"error-fallback"},"Sorry, we've experienced some error.",e&&s.a.createElement("div",{className:"additional-message"},e))}}]),t}(s.a.Component),K=function(e){function t(e){var a;return Object(l.a)(this,t),(a=Object(c.a)(this,Object(u.a)(t).call(this,e))).state={error:null,errorInfo:null},a}return Object(m.a)(t,e),Object(r.a)(t,[{key:"componentDidCatch",value:function(e,t){this.setState({error:e,errorInfo:t})}},{key:"render",value:function(){return this.state.error?s.a.createElement(Y,null):this.props.children}}]),t}(s.a.Component);o.a.render(s.a.createElement(K,null,s.a.createElement(H,null)),document.getElementById("font-awesome-admin"))}},[[33,2,1]]]); +//# sourceMappingURL=main.06a5ea7b.chunk.js.map \ No newline at end of file diff --git a/admin/build/static/js/main.06a5ea7b.chunk.js.map b/admin/build/static/js/main.06a5ea7b.chunk.js.map new file mode 100644 index 000000000..3bf1be3be --- /dev/null +++ b/admin/build/static/js/main.06a5ea7b.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["OptionsSetter.module.css","LoadSpecView.module.css","ClientRequirementsView.module.css","V3DeprecationWarning.module.css","App.module.css","FontAwesomeAdminView.module.css","PluginVersionWarningsView.module.css","UnregisteredClientsView.module.css","LoadingView.js","LoadSpecView.js","OptionsSetter.js","ClientRequirementsView.js","UnregisteredClientsView.js","PluginVersionWarningsView.js","V3DeprecationWarning.js","FontAwesomeAdminView.js","App.js","ErrorFallbackView.js","ErrorBoundary.js","index.js"],"names":["module","exports","submit-status","explanation","success","icon","release-provider-error","label-hint","label","load-spec","client-requirements","conflicted","v3-deprecation-warning","snooze-button","table-header","status","good","conflict","warning","plugin-version-warnings","unregistered-clients","LoadingView","react_default","a","createElement","className","index_es","faSpinner","size","spin","LoadSpecView","props","usePro","_props$spec","spec","method","v4shim","pseudoElements","version","licenseType","styles","classnames","UNSPECIFIED","METHOD_OPTIONS","REQUIRE_FORBID_OPTIONS","OptionsSetter","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","state","removeUnregisteredClients","versionOptions","lastProps","handleMethodSelect","bind","assertThisInitialized","handleProCheck","handleV4Select","handlePseudoElementsSelect","handleVersionSelect","handleRemoveUnregisteredCheck","handleSubmitClick","e","setState","target","value","preventDefault","_this$props","putData","options","adminClientLoadSpec","name","adminClientInternal","undefined","_this2","error","_this$props2","hasSubmitted","isSubmitting","submitSuccess","submitMessage","sharedStyles","scope","htmlFor","onChange","map","index","key","checked","type","rel","href","faExternalLinkAlt","option","keys","releaseProviderStatus","code","message","id","onClick","faCheck","faSkull","nextProps","prevState","isEqual","currentOptions","buildVersionOptions","_props$releases","releases","available","latest_version","previous_version","reduce","acc","concat","defineProperty","React","Component","ClientRequirementsView","find","clientRequirements","client","hasLockedLoadSpec","hasConflict","hasAdditionalClients","adminClientExternal","UnregisteredClientsView","detectedUnregisteredClients","clients","length","handle","src","PluginVersionWarningsView","pluginVersion","warnings","warningKey","constraint","V3DeprecationWarning","data","isLoading","getData","handlePutResponse","handlePutError","handleGetResponse","handleGetError","handleSnooze","snooze","response","Error","_error$response$data","axios","get","wpApiSettings","api_url","headers","X-WP-Nonce","api_nonce","then","catch","newData","put","v3DeprecationWarning","_this$state$data$v3De","atts","v5name","v5prefix","faExclamationTriangle","disabled","faClock","FontAwesomeAdminView","haslockedLoadSpec","statusLabel","statusIcon","faExclamationCircle","faThumbsUp","conflicts","_this$getStatus","getStatus","lockedLoadSpec","src_V3DeprecationWarning","src_LoadSpecView","src_ClientRequirementsView","conflictingClientRequirements","requirement","src_OptionsSetter","values","src_UnregisteredClientsView","unregisteredClients","pluginVersionWarnings","src_PluginVersionWarningsView","App","window","src_FontAwesomeAdminView","ErrorFallbackView","ErrorBoundary","errorInfo","src_ErrorFallbackView","children","ReactDOM","render","src_ErrorBoundary","src_App","document","getElementById"],"mappings":"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","file":"static/js/main.06a5ea7b.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"submit-status\":\"OptionsSetter_submit-status__2A56R\",\"explanation\":\"OptionsSetter_explanation__XoKaX\",\"success\":\"OptionsSetter_success__uJCv9\",\"icon\":\"OptionsSetter_icon__l-DXD\",\"release-provider-error\":\"OptionsSetter_release-provider-error__2Wbm4\",\"label-hint\":\"OptionsSetter_label-hint__kpp6r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"LoadSpecView_label__34LBg\",\"load-spec\":\"LoadSpecView_load-spec__3SZje\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"client-requirements\":\"ClientRequirementsView_client-requirements__1v61H\",\"conflicted\":\"ClientRequirementsView_conflicted__5hmJU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"v3-deprecation-warning\":\"V3DeprecationWarning_v3-deprecation-warning__3EzKh\",\"snooze-button\":\"V3DeprecationWarning_snooze-button__2jHLk\",\"label\":\"V3DeprecationWarning_label__2oz_x\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"explanation\":\"App_explanation__2O1a5\",\"table-header\":\"App_table-header__3XfOL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"status\":\"FontAwesomeAdminView_status__1TvaT\",\"icon\":\"FontAwesomeAdminView_icon__AUm7s\",\"good\":\"FontAwesomeAdminView_good__3B1qV\",\"conflict\":\"FontAwesomeAdminView_conflict__2JlC8\",\"warning\":\"FontAwesomeAdminView_warning__mMIh9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"plugin-version-warnings\":\"PluginVersionWarningsView_plugin-version-warnings__RYKwJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"unregistered-clients\":\"UnregisteredClientsView_unregistered-clients__4czYv\"};","import React from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons'\n\nexport default () =>\n
\n \n
","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport styles from './LoadSpecView.module.css'\n\nconst PRODUCT_BASE_NAME = 'Font Awesome'\n\nconst LoadSpecView = props => {\n const { usePro, spec: {\n method,\n v4shim,\n pseudoElements,\n version,\n }} = props\n\n const licenseType = usePro ? 'Pro' : 'Free'\n\n return
\n

Current Load Specification

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Product{PRODUCT_BASE_NAME} { licenseType }
Version{version}
Method{method}
Version 4 compatibility{v4shim ? 'true' : 'false'}
Pseudo-elements support{pseudoElements ? 'true' : 'false'}
\n
\n}\n\nexport default LoadSpecView\n\nLoadSpecView.propTypes = {\n spec: PropTypes.object.isRequired,\n usePro: PropTypes.bool\n}\n\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSpinner, faCheck, faSkull, faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons'\nimport styles from './OptionsSetter.module.css'\nimport sharedStyles from './App.module.css'\nimport classnames from 'classnames'\nimport { isEqual } from 'lodash'\n\nconst UNSPECIFIED = ''\nconst METHOD_OPTIONS = ['webfont', 'svg', UNSPECIFIED]\nconst REQUIRE_FORBID_OPTIONS = ['require', 'forbid', UNSPECIFIED]\n\nclass OptionsSetter extends React.Component {\n constructor(props){\n super(props)\n\n this.state = {\n method: UNSPECIFIED,\n v4shim: UNSPECIFIED,\n pseudoElements: UNSPECIFIED,\n version: UNSPECIFIED,\n usePro: false,\n removeUnregisteredClients: false,\n versionOptions: null,\n lastProps: null\n }\n\n this.handleMethodSelect = this.handleMethodSelect.bind(this)\n this.handleProCheck = this.handleProCheck.bind(this)\n this.handleV4Select = this.handleV4Select.bind(this)\n this.handlePseudoElementsSelect = this.handlePseudoElementsSelect.bind(this)\n this.handleVersionSelect = this.handleVersionSelect.bind(this)\n this.handleRemoveUnregisteredCheck = this.handleRemoveUnregisteredCheck.bind(this)\n this.handleSubmitClick = this.handleSubmitClick.bind(this)\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if( nextProps.isSubmitting || isEqual(prevState.lastProps, nextProps) ) {\n return null\n }\n\n const newState = {\n lastProps: nextProps,\n pseudoElements: nextProps.currentOptions.adminClientLoadSpec.pseudoElements || UNSPECIFIED,\n version: nextProps.currentOptions.adminClientLoadSpec.version || UNSPECIFIED,\n v4shim: nextProps.currentOptions.adminClientLoadSpec.v4shim || UNSPECIFIED,\n method: nextProps.currentOptions.adminClientLoadSpec.method || UNSPECIFIED,\n usePro: !!nextProps.currentOptions.usePro,\n removeUnregisteredClients: !!nextProps.currentOptions.removeUnregisteredClients,\n versionOptions: OptionsSetter.buildVersionOptions(nextProps)\n }\n\n return newState\n }\n\n static buildVersionOptions(props) {\n const { releases: { available, latest_version, previous_version } } = props\n\n return available.reduce((acc, version) => {\n if( latest_version === version ) {\n acc[version] = `${ version } (latest)`\n } else if ( previous_version === version ) {\n acc[version] = `${ version } (previous minor release)`\n } else {\n acc[version] = version\n }\n return acc\n }, { [UNSPECIFIED]: '-' })\n }\n\n handleMethodSelect(e){\n this.setState({ method: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handleVersionSelect(e){\n this.setState({ version: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handlePseudoElementsSelect(e){\n this.setState({ pseudoElements: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handleProCheck(){\n this.setState({ usePro: !this.state.usePro })\n }\n\n handleRemoveUnregisteredCheck(){\n this.setState({ removeUnregisteredClients: !this.state.removeUnregisteredClients })\n }\n\n handleV4Select(e){\n this.setState({ v4shim: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handleSubmitClick(e) {\n e.preventDefault()\n\n const { putData, adminClientInternal } = this.props\n\n putData({\n options: {\n adminClientLoadSpec: {\n name: adminClientInternal,\n method: this.state.method === UNSPECIFIED ? undefined : this.state.method,\n v4shim: this.state.v4shim === UNSPECIFIED ? undefined : this.state.v4shim,\n pseudoElements: this.state.pseudoElements === UNSPECIFIED ? undefined : this.state.pseudoElements,\n version: this.state.version === UNSPECIFIED ? undefined : this.state.version,\n },\n usePro: this.state.usePro,\n removeUnregisteredClients: this.state.removeUnregisteredClients\n }\n })\n }\n\n render() {\n if(this.state.error) throw this.state.error\n\n const { hasSubmitted, isSubmitting, submitSuccess, submitMessage } = this.props\n\n return
\n

Options

\n

\n You can tune these options according to your preferences, as long as your preferences\n don't conflict with the specifications required by other plugins and themes that you've installed.\n

\n

\n If conflicts are detected, they'll be shown below, and\n you might be able to resolve them just by choosing different options here.\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n \n \n \n Requires a subscription.\n Learn more\n Manage my allowed domains\n \n
\n \n \n \n
\n \n \n \n
\n \n \n \n {\n this.props.releaseProviderStatus.code !== 200 &&\n
\n { this.props.releaseProviderStatus.message }\n
\n }\n
\n \n \n \n
\n

\n \n { hasSubmitted &&\n ( submitSuccess\n ? \n \n \n { submitMessage }\n \n \n : \n \n \n { submitMessage }\n \n \n )\n }\n {isSubmitting &&\n \n \n \n }\n

\n
\n\n }\n}\n\nexport default OptionsSetter\n\nOptionsSetter.propTypes = {\n putData: PropTypes.func.isRequired,\n currentOptions: PropTypes.object.isRequired,\n releases: PropTypes.object.isRequired,\n adminClientInternal: PropTypes.string.isRequired,\n releaseProviderStatus: PropTypes.object.isRequired,\n}\n","import React from 'react'\nimport styles from './ClientRequirementsView.module.css'\nimport sharedStyles from './App.module.css'\nimport { find } from 'lodash'\nimport classnames from 'classnames'\nimport PropTypes from 'prop-types'\n\n// TODO: refactor this with the one in OptionsSetter\nconst UNSPECIFIED_INDICATOR = '-'\n\nclass ClientRequirementsView extends React.Component {\n\n hasAdditionalClients() {\n return !!find(this.props.clientRequirements, client => client.name !== this.props.adminClientInternal )\n }\n\n render() {\n const { conflict, hasLockedLoadSpec } = this.props\n\n const hasConflict = !!conflict\n\n return
\n {\n hasConflict\n ?

Conflicting Requirements

\n :

Client Requirements

\n }\n {\n this.hasAdditionalClients()\n ?\n
\n { hasConflict\n ?
\n

\n We found conflicting requirements between two or more plugins or themes, shown below.\n

\n { hasLockedLoadSpec\n ?

\n We'll continue to load the last good load specification you've locked in, so things will\n keep working the way they've been working. However, until you resolve the conflict, whatever\n clients have introduced these new conflicting requirements may not work as expected.\n

\n :

\n Since you haven't yet locked in a working configuration, we can't load Font Awesome at all.\n So, until you resolve these conflicts, Font Awesome won't work!\n

\n }\n
\n :

\n Here are some other clients of the Font Awesome plugin, such as plugins or themes,\n along with their Font Awesome requirements shown side-by-side with your preferences.\n If you're trying to resolve a conflict, you might find the culprit at a glance here.\n

\n }\n \n \n \n \n \n \n \n \n \n \n \n {\n this.props.clientRequirements.map((client, index) => {\n return \n \n \n \n \n \n \n })\n }\n \n
NameMethodVersionV4 CompatPseudo-elements
{ client.name === this.props.adminClientInternal ? this.props.adminClientExternal : client.name }{ client.method ? client.method : UNSPECIFIED_INDICATOR }{ client.version ? client.version : UNSPECIFIED_INDICATOR }{ client.v4shim ? client.v4shim : UNSPECIFIED_INDICATOR }{ client.pseudoElements ? client.pseudoElements : UNSPECIFIED_INDICATOR }
\n
\n :\n

\n We don't detect any other active clients (like themes or plugins) that have registered\n requirements for Font Awesome.\n

\n }\n
\n }\n}\n\nexport default ClientRequirementsView\n\nClientRequirementsView.propTypes = {\n clientRequirements: PropTypes.array.isRequired,\n hasLockedLoadSpec: PropTypes.bool,\n conflict: PropTypes.string,\n adminClientInternal: PropTypes.string.isRequired,\n adminClientExternal: PropTypes.string.isRequired\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styles from './UnregisteredClientsView.module.css'\nimport sharedStyles from './App.module.css'\nimport classnames from 'classnames'\n\nconst UnregisteredClientsView = props => {\n\n const detectedUnregisteredClients = props.clients.length > 0\n\n return
\n

Unregistered Clients

\n {detectedUnregisteredClients\n ?
\n

\n These are plugins or themes we've detected that appear to be trying to load\n their own versions of Font Awesome. Loading more than one version of Font Awesome\n will almost certainly result in problems, eventually. So, even if all registered\n clients are satisfied with your configuration, they can be broken by an\n unexpected version of Font Awesome loaded by one of these unregistered clients.\n

\n

\n We recommend enabling the Remove unregistered clients option to avoid\n such conflicts. When enabled, our plugin will attempt to stop these other clients from loading\n their own versions of Font Awesome. Most likely, they will continue to operate normally,\n as long as they are compatible with the version configured here.\n

\n

\n If you enable Remove unregistered clients and the results\n produced by those unregistered clients aren't what you expect (for example, their icons are missing),\n then you could try to select different options here, trying to find a configuration\n that is compatible with them. Since they are unregistered clients, we don't know\n what their requirements are, so you kinda just have to guess. You'll know you've found a workable\n configuration when all of the registered clients are satisfied (no conflicts shown here),\n and the unregistered clients produce expected results (their icons look right to you).\n

\n

\n A couple other options for resolving problems with unregistered clients:\n

\n
    \n
  1. \n Deactivate or replace it, if possible.\n
  2. \n
  3. \n Contact the developer for the unregistered client and ask them to consider updating their\n code to register with this Font Awesome Official plugin. Let them know they can reach us\n at hello@fontawesome.com.\n
  4. \n
\n \n \n \n \n \n \n \n {\n props.clients.map((client, index) => (\n \n \n \n \n \n ))\n }\n \n
NameTypeLoading
\n {client.handle}\n \n {client.type}\n \n {client.src}\n
\n
\n :

We detected no unregistered clients.

\n }\n
\n}\n\nUnregisteredClientsView.propTypes = {\n clients: PropTypes.array.isRequired\n}\n\nexport default UnregisteredClientsView\n\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styles from './PluginVersionWarningsView.module.css'\nimport sharedStyles from './App.module.css'\nimport classnames from 'classnames'\n\nconst PluginVersionWarningsView = props => (\n
\n

Plugin Version Warnings

\n

\n This plugin is designed to be loaded in a variety of ways by third-party plugins and themes, all in the hope\n that it makes your life easier by managing the complexity of their various requirements. But sometimes, they\n have a conflict over not just the version of Font Awesome to load, but on the version of this plugin that they\n require in order to get the job done. Behind the scenes, only one copy of the plugin is actually loaded. Any\n subsequent plugins are forced to use that version that's already loaded. Those subsequently loaded plugins\n might have a problem using the loaded version and this is where they'll warn you about that so you can\n see the problem clearly and (hopefully) quickly work out a solution.\n

\n

\n Unfortunately, we've got one of those situations here. The likely solution is to upgrade one of these to\n its latest version. Or, if you've installed a plugin that includes the Font Awesome plugin and you've also\n installed the Font Awesome plugin directly yourself, you might be able to resolve this conflict by deactivating\n the version of the Font Awesome plugin you installed yourself.\n

\n

\n If you have reason to keep your own installation of the plugin in addition to another plugin and think you could\n resolve this problem by downgrading your own installation of the plugin, you find older releases of the plugin\n on our website.\n

\n

\n In most cases, if you've installed a plugin that embeds this plugin, you do not need to also have your own\n copy of this plugin installed, and it may be simpler to just deactivate and uninstall it, unless it's the\n only copy of the plugin.\n

\n

\n Loaded Plugin Version: { props.pluginVersion }\n

\n \n \n \n \n \n \n \n \n {\n Object.keys(props.warnings).map( (warningKey, index) => (\n \n \n \n \n ))\n }\n \n
NameVersion Requirement
{ props.warnings[warningKey].name }{ props.warnings[warningKey].constraint }
\n
\n)\n\nexport default PluginVersionWarningsView\n\nPluginVersionWarningsView.propTypes = {\n warnings: PropTypes.array.isRequired,\n pluginVersion: PropTypes.string.isRequired\n}\n","import React from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faExclamationTriangle, faClock, faSpinner, faCheck, faSkull } from '@fortawesome/free-solid-svg-icons'\nimport PropTypes from 'prop-types'\nimport styles from './V3DeprecationWarning.module.css'\nimport sharedStyles from './App.module.css'\nimport axios from 'axios'\nimport classnames from 'classnames'\n\nclass V3DeprecationWarning extends React.Component {\n\n constructor(props){\n super(props)\n\n this.state = {\n data: null,\n error: null,\n isLoading: true,\n isSubmitting: false,\n hasSubmitted: false,\n submitSuccess: false,\n submitMessage: null,\n }\n\n this.getData = this.getData.bind(this)\n this.putData = this.putData.bind(this)\n this.handlePutResponse = this.handlePutResponse.bind(this)\n this.handlePutError = this.handlePutError.bind(this)\n this.handleGetResponse = this.handleGetResponse.bind(this)\n this.handleGetError = this.handleGetError.bind(this)\n this.handleSnooze = this.handleSnooze.bind(this)\n }\n\n handleSnooze() {\n const newData = {\n snooze: true\n }\n this.putData( newData )\n }\n\n handleGetResponse(response) {\n const { status, data } = response\n if(200 === status) {\n this.setState({ data, isLoading: false })\n } else {\n this.setState({ error: new Error(\"failed to get data\"), isLoading: false })\n }\n }\n\n handlePutResponse(response) {\n const { status, data } = response\n if (200 === status) {\n this.setState({\n data,\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: true,\n submitMessage: \"Changes saved\"\n })\n } else {\n this.setState({\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: false,\n submitMessage: \"Failed to save changes\"\n })\n }\n }\n\n handlePutError(error) {\n const { response: { data: { code, message }}} = error\n let submitMessage = \"\"\n\n switch(code) {\n case 'cant_update':\n submitMessage = message\n break\n case 'rest_no_route':\n case 'rest_cookie_invalid_nonce':\n submitMessage = \"Sorry, we couldn't reach the server\"\n break\n default:\n submitMessage = \"Update failed\"\n }\n this.setState({ isSubmitting: false, hasSubmitted: true, error: null, submitSuccess: false, submitMessage })\n }\n\n handleGetError(error) {\n this.setState({ error })\n }\n\n getData() {\n axios.get(\n `${this.props.wpApiSettings.api_url}/v3deprecation`,\n {\n headers: {\n 'X-WP-Nonce': this.props.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handleGetResponse )\n .catch( this.handleGetError )\n }\n\n putData(newData){\n this.setState({ isSubmitting: true, hasSubmitted: false })\n\n axios.put(\n `${this.props.wpApiSettings.api_url}/v3deprecation`,\n newData,\n {\n headers: {\n 'X-WP-Nonce': this.props.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handlePutResponse )\n .catch( this.handlePutError )\n }\n\n componentDidMount() {\n this.setState({ isLoading: true })\n this.getData()\n }\n\n render() {\n if(this.state.error) throw this.state.error\n if( !this.state.isLoading && !this.state.data ) throw new Error('missing data')\n\n if(this.state.isLoading) {\n return null\n } else if( this.state.data ) {\n if ( false === this.state.data.v3DeprecationWarning ) {\n return null\n }\n\n const { v3DeprecationWarning: { atts, v5name, v5prefix, snooze } } = this.state.data\n\n if( snooze ) return null\n\n return
\n

\n \n

\n\n

\n Looks like you're using an [icon] shortcode with an old Font Awesome 3 icon name:\n { atts.name }\n

\n

\n We discontinued support for Font Awesome 3 quite some time ago,\n though we only recently inherited this WordPress plugin,\n which previously only supported up to Font Awesome 3.\n

\n

\n Won't you jump into Font Awesome 5 with us? It's way better, and we're gonna make\n it really easy to upgrade. We've added some temporary magic to this plugin to translate your version 3 icon\n names into their version 5 equivalents.\n

\n

\n Bippity Boppity Boo!\n

\n

\n We just turned your
\n [icon name=\"{ atts.name }\"]
\n into
\n [icon name=\"{ v5name }\" prefix=\"{ v5prefix }\"].\n

\n

\n Actually, we just converted it on the fly so it would look right in your web pages,\n without changing your saved web site content. So\n to make that change permanent (and get rid of this warning), you'll need to go change any version 3 icon\n names in [icon] shortcodes in your pages, posts, widgets, templates, or wherever they're coming from.\n

\n

\n What's that prefix, you ask?\n

\n

\n Well...in Font Awesome 5, most icons come in three different styles. You use a style prefix to indicate\n which style you want. The default style prefix is fas for the Solid style.\n So when you're upgrading your shortcodes from v3 to v5 names, if you just want the Solid style icon,\n you can leave off that prefix. Most v3 icons map to Solid style icons in v5. But some of\n the version 3 icon names map to the fab style for Brands, or the far style for Regular.\n

\n

\n Icons for companies like Apple, or products like \n Chrome will be in the Brands style with the fab prefix.\n

\n

\n When you subscribe to Font Awesome Pro,\n you get a kajillion icons in All the Styles, including fal,\n the Light style.\n

\n

\n Head over to our Icon Gallery to\n check out the vast array.\n

\n

\n Guess what! In Font Awesome 3.2.1, you had\n 361 icons to choose from. Now, with Font Awesome 5 Free (as of v5.5.0) you've got 1,409,\n and with Pro you get...wait for it...4,566. (Rounds up to a kajillion.)\n

\n

\n So have a blast upgrading. We're gonna remove this v3-to-v5 magic soon, though,\n so don't wait forever.\n

\n

\n Clear this warning by updating those icons, or you could hit snooze to get this warning of your way for a while.\n

\n
\n \n
\n\n
\n }\n }\n}\n\nexport default V3DeprecationWarning\n\nV3DeprecationWarning.propTypes = {\n wpApiSettings: PropTypes.object.isRequired,\n}\n\n\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport styles from './FontAwesomeAdminView.module.css'\nimport LoadSpecView from './LoadSpecView'\nimport OptionsSetter from './OptionsSetter'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faThumbsUp, faExclamationCircle, faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'\nimport ClientRequirementsView from './ClientRequirementsView'\nimport UnregisteredClientsView from './UnregisteredClientsView'\nimport PluginVersionWarningsView from './PluginVersionWarningsView'\nimport V3DeprecationWarning from './V3DeprecationWarning'\nimport { values } from 'lodash'\n\nclass FontAwesomeAdminView extends React.Component {\n\n getStatus(hasConflict, haslockedLoadSpec) {\n if( hasConflict ) {\n if ( haslockedLoadSpec ) {\n return {\n statusLabel: 'warning',\n statusIcon: faExclamationTriangle\n }\n } else {\n return {\n statusLabel: 'conflict',\n statusIcon: faExclamationCircle\n }\n }\n } else {\n return {\n statusLabel: 'good',\n statusIcon: faThumbsUp\n }\n }\n }\n\n render(){\n const { data, putData } = this.props\n\n const hasConflict = !!data.conflicts\n\n const { statusLabel, statusIcon } = this.getStatus( hasConflict, !!data.options.lockedLoadSpec )\n\n return
\n

Font Awesome

\n
\n

\n Status: \n \n

\n \n { data.options.lockedLoadSpec &&\n \n }\n { hasConflict &&\n \n }\n \n { !hasConflict &&\n \n }\n \n {\n data.pluginVersionWarnings &&\n \n }\n
\n
\n }\n}\n\nexport default FontAwesomeAdminView\n\nFontAwesomeAdminView.propTypes = {\n data: PropTypes.object,\n putData: PropTypes.func.isRequired,\n wpApiSettings: PropTypes.object.isRequired\n // TODO: add the other props if we decide to keep them\n}\n","import React, { Component } from 'react'\nimport axios from 'axios'\nimport LoadingView from './LoadingView'\nimport FontAwesomeAdminView from './FontAwesomeAdminView'\n\nclass App extends Component {\n\n constructor(props) {\n super(props)\n\n const wpApiSettings = window['wpFontAwesomeOfficial']\n\n if(! wpApiSettings) {\n throw Error(\"Well, this is embarrassing. The plugin doesn't seem to be installed correctly.\")\n }\n\n this.state = {\n data: null,\n error: null,\n isLoading: true,\n isSubmitting: false,\n hasSubmitted: false,\n submitSuccess: false,\n submitMessage: null,\n wpApiSettings\n }\n\n this.getData = this.getData.bind(this)\n this.putData = this.putData.bind(this)\n this.handlePutResponse = this.handlePutResponse.bind(this)\n this.handlePutError = this.handlePutError.bind(this)\n this.handleGetResponse = this.handleGetResponse.bind(this)\n this.handleGetError = this.handleGetError.bind(this)\n }\n\n handleGetResponse(response) {\n const { status, data } = response\n if(200 === status) {\n this.setState({ data, isLoading: false })\n } else {\n this.setState({ error: new Error(\"failed to get data\"), isLoading: false })\n }\n }\n\n handlePutResponse(response) {\n const { status, data } = response\n if (200 === status) {\n this.setState({\n data,\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: true,\n submitMessage: \"Changes saved\"\n })\n } else {\n this.setState({\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: false,\n submitMessage: \"Failed to save changes\"\n })\n }\n }\n\n handlePutError(error) {\n const { response: { data: { code, message }}} = error\n let submitMessage = \"\"\n\n switch(code) {\n case 'cant_update':\n submitMessage = message\n break\n case 'rest_no_route':\n case 'rest_cookie_invalid_nonce':\n submitMessage = \"Sorry, we couldn't reach the server\"\n break\n default:\n submitMessage = \"Update failed\"\n }\n this.setState({ isSubmitting: false, hasSubmitted: true, error: null, submitSuccess: false, submitMessage })\n }\n\n handleGetError(error) {\n this.setState({ error })\n }\n\n getData() {\n axios.get(\n `${this.state.wpApiSettings.api_url}/config`,\n {\n headers: {\n 'X-WP-Nonce': this.state.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handleGetResponse )\n .catch( this.handleGetError )\n }\n\n putData(newData){\n this.setState({ isSubmitting: true, hasSubmitted: false })\n\n axios.put(\n `${this.state.wpApiSettings.api_url}/config`,\n newData,\n {\n headers: {\n 'X-WP-Nonce': this.state.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handlePutResponse )\n .catch( this.handlePutError )\n }\n\n componentDidMount() {\n this.setState({ isLoading: true })\n this.getData()\n }\n\n render() {\n if(this.state.error) throw this.state.error\n if( !this.state.isLoading && !this.state.data ) throw new Error('missing data')\n\n return (\n
\n {\n this.state.isLoading\n ? \n : \n }\n
\n )\n }\n}\n\nexport default App\n","import React from 'react'\n\nclass ErrorFallbackView extends React.Component {\n\n render() {\n const { message } = this.props\n\n return
\n Sorry, we've experienced some error.\n {\n message &&\n
\n { message }\n
\n }\n
\n }\n}\n\nexport default ErrorFallbackView\n","import React from 'react'\nimport ErrorFallbackView from './ErrorFallbackView'\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n error: null,\n errorInfo: null\n }\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({error, errorInfo})\n }\n\n render() {\n if (this.state.error) {\n //render fallback UI\n return \n } else {\n //when there's not an error, render children untouched\n return this.props.children\n }\n }\n}\n\nexport default ErrorBoundary\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport ErrorBoundary from './ErrorBoundary'\n\nReactDOM.render(, document.getElementById('font-awesome-admin'));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/build/static/js/main.7648dcc4.chunk.js.map b/admin/build/static/js/main.7648dcc4.chunk.js.map deleted file mode 100644 index 800903d13..000000000 --- a/admin/build/static/js/main.7648dcc4.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["OptionsSetter.module.css","LoadSpecView.module.css","ClientRequirementsView.module.css","V3DeprecationWarning.module.css","App.module.css","FontAwesomeAdminView.module.css","PluginVersionWarningsView.module.css","UnregisteredClientsView.module.css","LoadingView.js","LoadSpecView.js","OptionsSetter.js","ClientRequirementsView.js","UnregisteredClientsView.js","PluginVersionWarningsView.js","V3DeprecationWarning.js","FontAwesomeAdminView.js","App.js","ErrorFallbackView.js","ErrorBoundary.js","index.js"],"names":["module","exports","submit-status","explanation","success","icon","release-provider-error","label-hint","label","load-spec","client-requirements","conflicted","v3-deprecation-warning","snooze-button","table-header","status","good","conflict","warning","plugin-version-warnings","unregistered-clients","LoadingView","react_default","a","createElement","className","index_es","faSpinner","size","spin","LoadSpecView","props","usePro","_props$spec","spec","method","v4shim","pseudoElements","version","licenseType","styles","classnames","UNSPECIFIED","METHOD_OPTIONS","REQUIRE_FORBID_OPTIONS","OptionsSetter","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","state","removeUnregisteredClients","versionOptions","lastProps","handleMethodSelect","bind","assertThisInitialized","handleProCheck","handleV4Select","handlePseudoElementsSelect","handleVersionSelect","handleRemoveUnregisteredCheck","handleSubmitClick","e","setState","target","value","preventDefault","_this$props","putData","options","adminClientLoadSpec","name","adminClientInternal","undefined","_this2","error","_this$props2","hasSubmitted","isSubmitting","submitSuccess","submitMessage","sharedStyles","scope","htmlFor","onChange","map","index","key","checked","type","rel","href","faExternalLinkAlt","option","keys","releaseProviderStatus","code","message","id","onClick","faCheck","faSkull","nextProps","prevState","isEqual","currentOptions","buildVersionOptions","_props$releases","releases","available","latest_version","previous_version","reduce","acc","concat","defineProperty","React","Component","ClientRequirementsView","find","clientRequirements","client","hasLockedLoadSpec","hasConflict","hasAdditionalClients","adminClientExternal","UnregisteredClientsView","detectedUnregisteredClients","clients","length","handle","src","PluginVersionWarningsView","pluginVersion","warnings","warningKey","constraint","V3DeprecationWarning","data","isLoading","getData","handlePutResponse","handlePutError","handleGetResponse","handleGetError","handleSnooze","snooze","response","Error","_error$response$data","axios","get","wpApiSettings","api_url","headers","X-WP-Nonce","api_nonce","then","catch","newData","put","_this$state$data$v3De","v3DeprecationWarning","atts","v5name","v5prefix","faExclamationTriangle","disabled","faClock","FontAwesomeAdminView","haslockedLoadSpec","statusLabel","statusIcon","faExclamationCircle","faThumbsUp","conflicts","_this$getStatus","getStatus","lockedLoadSpec","src_V3DeprecationWarning","src_LoadSpecView","src_ClientRequirementsView","conflictingClientRequirements","requirement","src_OptionsSetter","values","src_UnregisteredClientsView","unregisteredClients","pluginVersionWarnings","src_PluginVersionWarningsView","App","window","src_FontAwesomeAdminView","ErrorFallbackView","ErrorBoundary","errorInfo","src_ErrorFallbackView","children","ReactDOM","render","src_ErrorBoundary","src_App","document","getElementById"],"mappings":"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","file":"static/js/main.7648dcc4.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"submit-status\":\"OptionsSetter_submit-status__2A56R\",\"explanation\":\"OptionsSetter_explanation__XoKaX\",\"success\":\"OptionsSetter_success__uJCv9\",\"icon\":\"OptionsSetter_icon__l-DXD\",\"release-provider-error\":\"OptionsSetter_release-provider-error__2Wbm4\",\"label-hint\":\"OptionsSetter_label-hint__kpp6r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"LoadSpecView_label__34LBg\",\"load-spec\":\"LoadSpecView_load-spec__3SZje\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"client-requirements\":\"ClientRequirementsView_client-requirements__1v61H\",\"conflicted\":\"ClientRequirementsView_conflicted__5hmJU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"v3-deprecation-warning\":\"V3DeprecationWarning_v3-deprecation-warning__3EzKh\",\"snooze-button\":\"V3DeprecationWarning_snooze-button__2jHLk\",\"label\":\"V3DeprecationWarning_label__2oz_x\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"explanation\":\"App_explanation__2O1a5\",\"table-header\":\"App_table-header__3XfOL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"status\":\"FontAwesomeAdminView_status__1TvaT\",\"icon\":\"FontAwesomeAdminView_icon__AUm7s\",\"good\":\"FontAwesomeAdminView_good__3B1qV\",\"conflict\":\"FontAwesomeAdminView_conflict__2JlC8\",\"warning\":\"FontAwesomeAdminView_warning__mMIh9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"plugin-version-warnings\":\"PluginVersionWarningsView_plugin-version-warnings__RYKwJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"unregistered-clients\":\"UnregisteredClientsView_unregistered-clients__4czYv\"};","import React from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons'\n\nexport default () =>\n
\n \n
","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport styles from './LoadSpecView.module.css'\n\nconst PRODUCT_BASE_NAME = 'Font Awesome'\n\nconst LoadSpecView = props => {\n const { usePro, spec: {\n method,\n v4shim,\n pseudoElements,\n version,\n }} = props\n\n const licenseType = usePro ? 'Pro' : 'Free'\n\n return
\n

Current Load Specification

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Product{PRODUCT_BASE_NAME} { licenseType }
Version{version}
Method{method}
Version 4 compatibility{v4shim ? 'true' : 'false'}
Pseudo-elements support{pseudoElements ? 'true' : 'false'}
\n
\n}\n\nexport default LoadSpecView\n\nLoadSpecView.propTypes = {\n spec: PropTypes.object.isRequired,\n usePro: PropTypes.bool\n}\n\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSpinner, faCheck, faSkull, faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons'\nimport styles from './OptionsSetter.module.css'\nimport sharedStyles from './App.module.css'\nimport classnames from 'classnames'\nimport { isEqual } from 'lodash'\n\nconst UNSPECIFIED = ''\nconst METHOD_OPTIONS = ['webfont', 'svg', UNSPECIFIED]\nconst REQUIRE_FORBID_OPTIONS = ['require', 'forbid', UNSPECIFIED]\n\nclass OptionsSetter extends React.Component {\n constructor(props){\n super(props)\n\n this.state = {\n method: UNSPECIFIED,\n v4shim: UNSPECIFIED,\n pseudoElements: UNSPECIFIED,\n version: UNSPECIFIED,\n usePro: false,\n removeUnregisteredClients: false,\n versionOptions: null,\n lastProps: null\n }\n\n this.handleMethodSelect = this.handleMethodSelect.bind(this)\n this.handleProCheck = this.handleProCheck.bind(this)\n this.handleV4Select = this.handleV4Select.bind(this)\n this.handlePseudoElementsSelect = this.handlePseudoElementsSelect.bind(this)\n this.handleVersionSelect = this.handleVersionSelect.bind(this)\n this.handleRemoveUnregisteredCheck = this.handleRemoveUnregisteredCheck.bind(this)\n this.handleSubmitClick = this.handleSubmitClick.bind(this)\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if( nextProps.isSubmitting || isEqual(prevState.lastProps, nextProps) ) {\n return null\n }\n\n const newState = {\n lastProps: nextProps,\n pseudoElements: nextProps.currentOptions.adminClientLoadSpec.pseudoElements || UNSPECIFIED,\n version: nextProps.currentOptions.adminClientLoadSpec.version || UNSPECIFIED,\n v4shim: nextProps.currentOptions.adminClientLoadSpec.v4shim || UNSPECIFIED,\n method: nextProps.currentOptions.adminClientLoadSpec.method || UNSPECIFIED,\n usePro: !!nextProps.currentOptions.usePro,\n removeUnregisteredClients: !!nextProps.currentOptions.removeUnregisteredClients,\n versionOptions: OptionsSetter.buildVersionOptions(nextProps)\n }\n\n return newState\n }\n\n static buildVersionOptions(props) {\n const { releases: { available, latest_version, previous_version } } = props\n\n return available.reduce((acc, version) => {\n if( latest_version === version ) {\n acc[version] = `${ version } (latest)`\n } else if ( previous_version === version ) {\n acc[version] = `${ version } (previous minor release)`\n } else {\n acc[version] = version\n }\n return acc\n }, { [UNSPECIFIED]: '-' })\n }\n\n handleMethodSelect(e){\n this.setState({ method: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handleVersionSelect(e){\n this.setState({ version: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handlePseudoElementsSelect(e){\n this.setState({ pseudoElements: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handleProCheck(){\n this.setState({ usePro: !this.state.usePro })\n }\n\n handleRemoveUnregisteredCheck(){\n this.setState({ removeUnregisteredClients: !this.state.removeUnregisteredClients })\n }\n\n handleV4Select(e){\n this.setState({ v4shim: e.target.value === '-' ? UNSPECIFIED : e.target.value })\n }\n\n handleSubmitClick(e) {\n e.preventDefault()\n\n const { putData, adminClientInternal } = this.props\n\n putData({\n options: {\n adminClientLoadSpec: {\n name: adminClientInternal,\n method: this.state.method === UNSPECIFIED ? undefined : this.state.method,\n v4shim: this.state.v4shim === UNSPECIFIED ? undefined : this.state.v4shim,\n pseudoElements: this.state.pseudoElements === UNSPECIFIED ? undefined : this.state.pseudoElements,\n version: this.state.version === UNSPECIFIED ? undefined : this.state.version,\n },\n usePro: this.state.usePro,\n removeUnregisteredClients: this.state.removeUnregisteredClients\n }\n })\n }\n\n render() {\n if(this.state.error) throw this.state.error\n\n const { hasSubmitted, isSubmitting, submitSuccess, submitMessage } = this.props\n\n return
\n

Options

\n

\n You can tune these options according to your preferences, as long as your preferences\n don't conflict with the specifications required by other plugins and themes that you've installed.\n

\n

\n If conflicts are detected, they'll be shown below, and\n you might be able to resolve them just by choosing different options here.\n

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n \n \n \n Requires a subscription.\n Learn more\n Manage my allowed domains\n \n
\n \n \n \n
\n \n \n \n
\n \n \n \n {\n this.props.releaseProviderStatus.code !== 200 &&\n
\n { this.props.releaseProviderStatus.message }\n
\n }\n
\n \n \n \n
\n

\n \n { hasSubmitted &&\n ( submitSuccess\n ? \n \n \n { submitMessage }\n \n \n : \n \n \n { submitMessage }\n \n \n )\n }\n {isSubmitting &&\n \n \n \n }\n

\n
\n\n }\n}\n\nexport default OptionsSetter\n\nOptionsSetter.propTypes = {\n putData: PropTypes.func.isRequired,\n currentOptions: PropTypes.object.isRequired,\n releases: PropTypes.object.isRequired,\n adminClientInternal: PropTypes.string.isRequired,\n releaseProviderStatus: PropTypes.object.isRequired,\n}\n","import React from 'react'\nimport styles from './ClientRequirementsView.module.css'\nimport sharedStyles from './App.module.css'\nimport { find } from 'lodash'\nimport classnames from 'classnames'\nimport PropTypes from 'prop-types'\n\n// TODO: refactor this with the one in OptionsSetter\nconst UNSPECIFIED_INDICATOR = '-'\n\nclass ClientRequirementsView extends React.Component {\n\n hasAdditionalClients() {\n return !!find(this.props.clientRequirements, client => client.name !== this.props.adminClientInternal )\n }\n\n render() {\n const { conflict, hasLockedLoadSpec } = this.props\n\n const hasConflict = !!conflict\n\n return
\n {\n hasConflict\n ?

Conflicting Requirements

\n :

Client Requirements

\n }\n {\n this.hasAdditionalClients()\n ?\n
\n { hasConflict\n ?
\n

\n We found conflicting requirements between two or more plugins or themes, shown below.\n

\n { hasLockedLoadSpec\n ?

\n We'll continue to load the last good load specification you've locked in, so things will\n keep working the way they've been working. However, until you resolve the conflict, whatever\n clients have introduced these new conflicting requirements may not work as expected.\n

\n :

\n Since you haven't yet locked in a working configuration, we can't load Font Awesome at all.\n So, until you resolve these conflicts, Font Awesome won't work!\n

\n }\n
\n :

\n Here are some other clients of the Font Awesome plugin, such as plugins or themes,\n along with their Font Awesome requirements shown side-by-side with your preferences.\n If you're trying to resolve a conflict, you might find the culprit at a glance here.\n

\n }\n \n \n \n \n \n \n \n \n \n \n \n {\n this.props.clientRequirements.map((client, index) => {\n return \n \n \n \n \n \n \n })\n }\n \n
NameMethodVersionV4 CompatPseudo-elements
{ client.name === this.props.adminClientInternal ? this.props.adminClientExternal : client.name }{ client.method ? client.method : UNSPECIFIED_INDICATOR }{ client.version ? client.version : UNSPECIFIED_INDICATOR }{ client.v4shim ? client.v4shim : UNSPECIFIED_INDICATOR }{ client.pseudoElements ? client.pseudoElements : UNSPECIFIED_INDICATOR }
\n
\n :\n

\n We don't detect any other active clients (like themes or plugins) that have registered\n requirements for Font Awesome.\n

\n }\n
\n }\n}\n\nexport default ClientRequirementsView\n\nClientRequirementsView.propTypes = {\n clientRequirements: PropTypes.array.isRequired,\n hasLockedLoadSpec: PropTypes.bool,\n conflict: PropTypes.string,\n adminClientInternal: PropTypes.string.isRequired,\n adminClientExternal: PropTypes.string.isRequired\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styles from './UnregisteredClientsView.module.css'\nimport sharedStyles from './App.module.css'\nimport classnames from 'classnames'\n\nconst UnregisteredClientsView = props => {\n\n const detectedUnregisteredClients = props.clients.length > 0\n\n return
\n

Unregistered Clients

\n {detectedUnregisteredClients\n ?
\n

\n These are plugins or themes we've detected that appear to be trying to load\n their own versions of Font Awesome. Loading more than one version of Font Awesome\n will almost certainly result in problems, eventually. So, even if all registered\n clients are satisfied with your configuration, they can be broken by an\n unexpected version of Font Awesome loaded by one of these unregistered clients.\n

\n

\n We recommend enabling the Remove unregistered clients option to avoid\n such conflicts. When enabled, our plugin will attempt to stop these other clients from loading\n their own versions of Font Awesome. Most likely, they will continue to operate normally,\n as long as they are compatible with the version configured here.\n

\n

\n If you enable Remove unregistered clients and the results\n produced by those unregistered clients aren't what you expect (for example, their icons are missing),\n then you could try to select different options here, trying to find a configuration\n that is compatible with them. Since they are unregistered clients, we don't know\n what their requirements are, so you kinda just have to guess. You'll know you've found a workable\n configuration when all of the registered clients are satisfied (no conflicts shown here),\n and the unregistered clients produce expected results (their icons look right to you).\n

\n

\n A couple other options for resolving problems with unregistered clients:\n

\n
    \n
  1. \n Deactivate or replace it, if possible.\n
  2. \n
  3. \n Contact the developer for the unregistered client and ask them to consider updating their\n code to register with this Font Awesome Official plugin. Let them know they can reach us\n at hello@fontawesome.com.\n
  4. \n
\n \n \n \n \n \n \n \n {\n props.clients.map((client, index) => (\n \n \n \n \n \n ))\n }\n \n
NameTypeLoading
\n {client.handle}\n \n {client.type}\n \n {client.src}\n
\n
\n :

We detected no unregistered clients.

\n }\n
\n}\n\nUnregisteredClientsView.propTypes = {\n clients: PropTypes.array.isRequired\n}\n\nexport default UnregisteredClientsView\n\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport styles from './PluginVersionWarningsView.module.css'\nimport sharedStyles from './App.module.css'\nimport classnames from 'classnames'\n\nconst PluginVersionWarningsView = props => (\n
\n

Plugin Version Warnings

\n

\n This plugin is designed to be loaded in a variety of ways by third-party plugins and themes, all in the hope\n that it makes your life easier by managing the complexity of their various requirements. But sometimes, they\n have a conflict over not just the version of Font Awesome to load, but on the version of this plugin that they\n require in order to get the job done. Behind the scenes, only one copy of the plugin is actually loaded. Any\n subsequent plugins are forced to use that version that's already loaded. Those subsequently loaded plugins\n might have a problem using the loaded version and this is where they'll warn you about that so you can\n see the problem clearly and (hopefully) quickly work out a solution.\n

\n

\n Unfortunately, we've got one of those situations here. The likely solution is to upgrade one of these to\n its latest version. Or, if you've installed a plugin that includes the Font Awesome plugin and you've also\n installed the Font Awesome plugin directly yourself, you might be able to resolve this conflict by deactivating\n the version of the Font Awesome plugin you installed yourself.\n

\n

\n If you have reason to keep your own installation of the plugin in addition to another plugin and think you could\n resolve this problem by downgrading your own installation of the plugin, you find older releases of the plugin\n on our website.\n

\n

\n In most cases, if you've installed a plugin that embeds this plugin, you do not need to also have your own\n copy of this plugin installed, and it may be simpler to just deactivate and uninstall it, unless it's the\n only copy of the plugin.\n

\n

\n Loaded Plugin Version: { props.pluginVersion }\n

\n \n \n \n \n \n \n \n \n {\n Object.keys(props.warnings).map( (warningKey, index) => (\n \n \n \n \n ))\n }\n \n
NameVersion Requirement
{ props.warnings[warningKey].name }{ props.warnings[warningKey].constraint }
\n
\n)\n\nexport default PluginVersionWarningsView\n\nPluginVersionWarningsView.propTypes = {\n warnings: PropTypes.array.isRequired,\n pluginVersion: PropTypes.string.isRequired\n}\n","import React from 'react'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faExclamationTriangle, faClock, faSpinner, faCheck, faSkull } from '@fortawesome/free-solid-svg-icons'\nimport PropTypes from 'prop-types'\nimport styles from './V3DeprecationWarning.module.css'\nimport sharedStyles from './App.module.css'\nimport axios from 'axios'\nimport classnames from 'classnames'\n\nclass V3DeprecationWarning extends React.Component {\n\n constructor(props){\n super(props)\n\n this.state = {\n data: null,\n error: null,\n isLoading: true,\n isSubmitting: false,\n hasSubmitted: false,\n submitSuccess: false,\n submitMessage: null,\n }\n\n this.getData = this.getData.bind(this)\n this.putData = this.putData.bind(this)\n this.handlePutResponse = this.handlePutResponse.bind(this)\n this.handlePutError = this.handlePutError.bind(this)\n this.handleGetResponse = this.handleGetResponse.bind(this)\n this.handleGetError = this.handleGetError.bind(this)\n this.handleSnooze = this.handleSnooze.bind(this)\n }\n\n handleSnooze() {\n const newData = {\n snooze: true\n }\n this.putData( newData )\n }\n\n handleGetResponse(response) {\n const { status, data } = response\n if(200 === status) {\n this.setState({ data, isLoading: false })\n } else {\n this.setState({ error: new Error(\"failed to get data\"), isLoading: false })\n }\n }\n\n handlePutResponse(response) {\n const { status, data } = response\n if (200 === status) {\n this.setState({\n data,\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: true,\n submitMessage: \"Changes saved\"\n })\n } else {\n this.setState({\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: false,\n submitMessage: \"Failed to save changes\"\n })\n }\n }\n\n handlePutError(error) {\n const { response: { data: { code, message }}} = error\n let submitMessage = \"\"\n\n switch(code) {\n case 'cant_update':\n submitMessage = message\n break\n case 'rest_no_route':\n case 'rest_cookie_invalid_nonce':\n submitMessage = \"Sorry, we couldn't reach the server\"\n break\n default:\n submitMessage = \"Update failed\"\n }\n this.setState({ isSubmitting: false, hasSubmitted: true, error: null, submitSuccess: false, submitMessage })\n }\n\n handleGetError(error) {\n this.setState({ error })\n }\n\n getData() {\n axios.get(\n `${this.props.wpApiSettings.api_url}/v3deprecation`,\n {\n headers: {\n 'X-WP-Nonce': this.props.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handleGetResponse )\n .catch( this.handleGetError )\n }\n\n putData(newData){\n this.setState({ isSubmitting: true, hasSubmitted: false })\n\n axios.put(\n `${this.props.wpApiSettings.api_url}/v3deprecation`,\n newData,\n {\n headers: {\n 'X-WP-Nonce': this.props.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handlePutResponse )\n .catch( this.handlePutError )\n }\n\n componentDidMount() {\n this.setState({ isLoading: true })\n this.getData()\n }\n\n render() {\n if(this.state.error) throw this.state.error\n if( !this.state.isLoading && !this.state.data ) throw new Error('missing data')\n\n if(this.state.isLoading) {\n return null\n } else if( this.state.data ) {\n const { v3DeprecationWarning: { atts, v5name, v5prefix, snooze } } = this.state.data\n\n if( snooze ) return null\n\n return
\n

\n \n

\n\n

\n Looks like you're using an [icon] shortcode with an old Font Awesome 3 icon name:\n { atts.name }\n

\n

\n We discontinued support for Font Awesome 3 quite some time ago,\n though we only recently inherited this WordPress plugin,\n which previously only supported up to Font Awesome 3.\n

\n

\n Won't you jump into Font Awesome 5 with us? It's way better, and we're gonna make\n it really easy to upgrade. We've added some temporary magic to this plugin to translate your version 3 icon\n names into their version 5 equivalents.\n

\n

\n Bippity Boppity Boo!\n

\n

\n We just turned your
\n [icon name=\"{ atts.name }\"]
\n into
\n [icon name=\"{ v5name }\" prefix=\"{ v5prefix }\"].\n

\n

\n Actually, we just converted it on the fly so it would look right in your web pages,\n without changing your saved web site content. So\n to make that change permanent (and get rid of this warning), you'll need to go change any version 3 icon\n names in [icon] shortcodes in your pages, posts, widgets, templates, or wherever they're coming from.\n

\n

\n What's that prefix, you ask?\n

\n

\n Well...in Font Awesome 5, most icons come in three different styles. You use a style prefix to indicate\n which style you want. The default style prefix is fas for the Solid style.\n So when you're upgrading your shortcodes from v3 to v5 names, if you just want the Solid style icon,\n you can leave off that prefix. Most v3 icons map to Solid style icons in v5. But some of\n the version 3 icon names map to the fab style for Brands, or the far style for Regular.\n

\n

\n Icons for companies like Apple, or products like \n Chrome will be in the Brands style with the fab prefix.\n

\n

\n When you subscribe to Font Awesome Pro,\n you get a kajillion icons in All the Styles, including fal,\n the Light style.\n

\n

\n Head over to our Icon Gallery to\n check out the vast array.\n

\n

\n Guess what! In Font Awesome 3.2.1, you had\n 361 icons to choose from. Now, with Font Awesome 5 Free (as of v5.5.0) you've got 1,409,\n and with Pro you get...wait for it...4,566. (Rounds up to a kajillion.)\n

\n

\n So have a blast upgrading. We're gonna remove this v3-to-v5 magic soon, though,\n so don't wait forever.\n

\n

\n Clear this warning by updating those icons, or you could hit snooze to get this warning of your way for a while.\n

\n
\n \n
\n\n
\n }\n }\n}\n\nexport default V3DeprecationWarning\n\nV3DeprecationWarning.propTypes = {\n wpApiSettings: PropTypes.object.isRequired,\n}\n\n\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport styles from './FontAwesomeAdminView.module.css'\nimport LoadSpecView from './LoadSpecView'\nimport OptionsSetter from './OptionsSetter'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faThumbsUp, faExclamationCircle, faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'\nimport ClientRequirementsView from './ClientRequirementsView'\nimport UnregisteredClientsView from './UnregisteredClientsView'\nimport PluginVersionWarningsView from './PluginVersionWarningsView'\nimport V3DeprecationWarning from './V3DeprecationWarning'\nimport { values } from 'lodash'\n\nclass FontAwesomeAdminView extends React.Component {\n\n getStatus(hasConflict, haslockedLoadSpec) {\n if( hasConflict ) {\n if ( haslockedLoadSpec ) {\n return {\n statusLabel: 'warning',\n statusIcon: faExclamationTriangle\n }\n } else {\n return {\n statusLabel: 'conflict',\n statusIcon: faExclamationCircle\n }\n }\n } else {\n return {\n statusLabel: 'good',\n statusIcon: faThumbsUp\n }\n }\n }\n\n render(){\n const { data, putData } = this.props\n\n const hasConflict = !!data.conflicts\n\n const { statusLabel, statusIcon } = this.getStatus( hasConflict, !!data.options.lockedLoadSpec )\n\n return
\n

Font Awesome

\n
\n

\n Status: \n \n

\n \n { data.options.lockedLoadSpec &&\n \n }\n { hasConflict &&\n \n }\n \n { !hasConflict &&\n \n }\n \n {\n data.pluginVersionWarnings &&\n \n }\n
\n
\n }\n}\n\nexport default FontAwesomeAdminView\n\nFontAwesomeAdminView.propTypes = {\n data: PropTypes.object,\n putData: PropTypes.func.isRequired,\n wpApiSettings: PropTypes.object.isRequired\n // TODO: add the other props if we decide to keep them\n}\n","import React, { Component } from 'react'\nimport axios from 'axios'\nimport LoadingView from './LoadingView'\nimport FontAwesomeAdminView from './FontAwesomeAdminView'\n\nclass App extends Component {\n\n constructor(props) {\n super(props)\n\n const wpApiSettings = window['wpFontAwesomeOfficial']\n\n if(! wpApiSettings) {\n throw Error(\"Well, this is embarrassing. The plugin doesn't seem to be installed correctly.\")\n }\n\n this.state = {\n data: null,\n error: null,\n isLoading: true,\n isSubmitting: false,\n hasSubmitted: false,\n submitSuccess: false,\n submitMessage: null,\n wpApiSettings\n }\n\n this.getData = this.getData.bind(this)\n this.putData = this.putData.bind(this)\n this.handlePutResponse = this.handlePutResponse.bind(this)\n this.handlePutError = this.handlePutError.bind(this)\n this.handleGetResponse = this.handleGetResponse.bind(this)\n this.handleGetError = this.handleGetError.bind(this)\n }\n\n handleGetResponse(response) {\n const { status, data } = response\n if(200 === status) {\n this.setState({ data, isLoading: false })\n } else {\n this.setState({ error: new Error(\"failed to get data\"), isLoading: false })\n }\n }\n\n handlePutResponse(response) {\n const { status, data } = response\n if (200 === status) {\n this.setState({\n data,\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: true,\n submitMessage: \"Changes saved\"\n })\n } else {\n this.setState({\n isSubmitting: false,\n hasSubmitted: true,\n error: null,\n submitSuccess: false,\n submitMessage: \"Failed to save changes\"\n })\n }\n }\n\n handlePutError(error) {\n const { response: { data: { code, message }}} = error\n let submitMessage = \"\"\n\n switch(code) {\n case 'cant_update':\n submitMessage = message\n break\n case 'rest_no_route':\n case 'rest_cookie_invalid_nonce':\n submitMessage = \"Sorry, we couldn't reach the server\"\n break\n default:\n submitMessage = \"Update failed\"\n }\n this.setState({ isSubmitting: false, hasSubmitted: true, error: null, submitSuccess: false, submitMessage })\n }\n\n handleGetError(error) {\n this.setState({ error })\n }\n\n getData() {\n axios.get(\n `${this.state.wpApiSettings.api_url}/config`,\n {\n headers: {\n 'X-WP-Nonce': this.state.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handleGetResponse )\n .catch( this.handleGetError )\n }\n\n putData(newData){\n this.setState({ isSubmitting: true, hasSubmitted: false })\n\n axios.put(\n `${this.state.wpApiSettings.api_url}/config`,\n newData,\n {\n headers: {\n 'X-WP-Nonce': this.state.wpApiSettings.api_nonce\n }\n }\n )\n .then( this.handlePutResponse )\n .catch( this.handlePutError )\n }\n\n componentDidMount() {\n this.setState({ isLoading: true })\n this.getData()\n }\n\n render() {\n if(this.state.error) throw this.state.error\n if( !this.state.isLoading && !this.state.data ) throw new Error('missing data')\n\n return (\n
\n {\n this.state.isLoading\n ? \n : \n }\n
\n )\n }\n}\n\nexport default App\n","import React from 'react'\n\nclass ErrorFallbackView extends React.Component {\n\n render() {\n const { message } = this.props\n\n return
\n Sorry, we've experienced some error.\n {\n message &&\n
\n { message }\n
\n }\n
\n }\n}\n\nexport default ErrorFallbackView\n","import React from 'react'\nimport ErrorFallbackView from './ErrorFallbackView'\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n error: null,\n errorInfo: null\n }\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({error, errorInfo})\n }\n\n render() {\n if (this.state.error) {\n //render fallback UI\n return \n } else {\n //when there's not an error, render children untouched\n return this.props.children\n }\n }\n}\n\nexport default ErrorBoundary\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport App from './App'\nimport ErrorBoundary from './ErrorBoundary'\n\nReactDOM.render(, document.getElementById('font-awesome-admin'));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/admin/package.json b/admin/package.json index 9ef53e83d..300c1243f 100644 --- a/admin/package.json +++ b/admin/package.json @@ -1,6 +1,6 @@ { "name": "font-awesome-admin", - "version": "4.0.0-rc1", + "version": "4.0.0-rc2", "private": true, "dependencies": { "@babel/core": "7.1.0", diff --git a/font-awesome.php b/font-awesome.php index 6e96c732d..b499af085 100644 --- a/font-awesome.php +++ b/font-awesome.php @@ -3,7 +3,7 @@ * Plugin Name: Font Awesome * Plugin URI: https://fontawesome.com/how-to-use/on-the-web/using-with/wordpress * Description: Adds Font Awesome 5 icons to your WordPress site. Supports Font Awesome Pro. Resolves conflicts across many plugins or themes that use Font Awesome. - * Version: 4.0.0-rc1 + * Version: 4.0.0-rc2 * Author: Font Awesome * Author URI: https://fontawesome.com/ * License: GPLv2 (or later) diff --git a/includes/class-fontawesome.php b/includes/class-fontawesome.php index a0790bdb2..75a14ee3e 100644 --- a/includes/class-fontawesome.php +++ b/includes/class-fontawesome.php @@ -100,7 +100,7 @@ class FontAwesome { /** * The version of this WordPress plugin. */ - const PLUGIN_VERSION = '4.0.0-rc1'; + const PLUGIN_VERSION = '4.0.0-rc2'; /** * The version of this plugin's REST API. * diff --git a/readme.txt b/readme.txt index 2f1c927e5..ea4abd511 100644 --- a/readme.txt +++ b/readme.txt @@ -1,6 +1,6 @@ === Font Awesome === Contributors: fontawesome, mlwilkerson, robmadole, rachelbaker -Stable tag: 4.0.0-rc1 +Stable tag: 4.0.0-rc2 Tags: font, awesome, fontawesome, font-awesome, icon, svg, webfont Requires at least: 4.7 Tested up to: 5.0 @@ -184,6 +184,10 @@ Find the Font Awesome admin settings page either under the "Settings" menu on th == Changelog == += 4.0.0-rc2 = + +* Fix handling of v3 deprecation warnings in admin settings page + = 4.0.0-rc1 = * Add admin settings page